快速修复方法:远程登录到数据库服务器,使用RMAN连接,执行startup mount,然后alter database open resetlogs; 注意SPFILE不能直接修改string参数,必须通过pfile转换后编辑再转回spfile。实测有效,先备份当前spfile,然后创建pfile from spfile,编辑pfile中的string参数,shutdown immediate,create spfile from pfile,重启实例。网友分享:远程用sqlplus / as sysdba,检查alert log确认错误原因,通常是archive log模式下日志序列不匹配,直接resetlogs解决。
第一篇网友分享
遇到ORA-16179: incremental changes to "string" not allowed with SPFILE,原因是SPFILE禁止在线修改某些参数如db_recovery_file_dest。远程处理:1. sqlplus /nolog connect / as sysdba; 2. create pfile='/tmp/init.ora' from spfile; 3. vi /tmp/init.ora 修改string参数;4. shutdown immediate; 5. startup pfile='/tmp/init.ora'; 6. create spfile from pfile; 7. shutdown immediate; 8. startup。实测在11g和12c上有效,远程用expect脚本自动化。
第二篇网友实测
SPFILE禁止修改"dg_broker_start"这种参数时报ORA-16179,远程技巧:用dataguard broker配置前,先确保primary和standby spfile一致。步骤:asmcmd找spfile路径,cp到本地编辑,rman target / < 报错ORA-16179,SPFILE can't change string online。远程修复:登录standby,alter system set dg_broker_start=true scope=spfile; 但失败,转用pfile。完整命令:sqlplus / as sysdba; create pfile from spfile; 编辑后create spfile=/opt/oracle/product/19c/dbs/spfileRAC.ora from pfile; srvctl stop database -d RAC; srvctl start database -d RAC。网友实测在RAC环境下有效,避免了重启primary。 远程处理ORA-16179:用dbms_system.set_bool_param接口绕过,但不推荐。安全方法:export ORACLE_SID=prod; sqlplus / as sysdba; shutdown abort; startup nomount pfile='/tmp/pfile.ora'; alter system set string=value scope=spfile; shutdown immediate; startup。实测在云服务器上,结合nohub后台运行脚本,省时省力。 常见场景:Data Guard switchover后standby变primary,SPFILE参数冲突。修复:RMAN> connect target /; startup mount force; alter database open resetlogs; 然后检查v$spparameter确认修改。网友推荐远程用dgmgrl show configuration验证broker状态,实测有效率95%。 禁止修改"log_archive_dest_1"参数,ORA-16179。远程ssh root@dbhost,su - oracle,sqlplus sys/pwd@remote as sysdba,动态参数用scope=memory先试,失败则pfile法。分享自Oracle论坛,附脚本:#!/bin/bash sqlplus / as sysdba < FAQ第三篇经验贴
第四篇技巧分享
第五篇聚合内容
第六篇网友推荐
Q: ORA-16179是什么原因?
A: SPFILE禁止在线修改特定参数,如恢复相关string。
Q: 远程怎么备份SPFILE?
A: asmcmd cp +DATA/PROD/SPFILEPROD.ORA /tmp/。
Q: RAC环境怎么处理?
A: srvctl modify database -d dbname -spfile newpath,重启节点。
Q: 修复后怎么验证?
A: show parameter string; 检查alert.log无报错。
Q: 能在线修改吗?
A: 部分动态参数能,静态必须重启用scope=spfile。