重庆思庄oracle技术分享-ORA-01105 & ORA-01677 模拟1

1、说明
在日常rac搭建dg或者rac修改转换路径,有时候可能会对参数进行修改,修改之后又没有同时停止和启动两个节点实例,造成后续维护人员在关闭重启某个节点时遇到ORA-01105、ORA-01677错误;

2、分析错误
1)scope=spfile;为静态参数,执行后两台rac的环境均未生效
2)假设重启了节点2,先srvctl stop instance -d xx -n xx,然后再srvctl start instance -d xx -n xx错误就出现了;
3)通过现象可用知道,节点1还没有重启过,也就是说该参数还是没生效的,现在节点2重新启动读取spfile就会使该参数生效,此时两边参数不一致oracle就会抛出ORA-01105、ORA-01677错误;

3、模拟错误
节点1 oracle rdbms下修改
sqlplus / as sysdba
alter system set db_file_name_convert='+data/healdg/datafile/','+data/heal/datafile/' scope=spfile;
alter system set log_file_name_convert='+data/healdg/tempfile/','+data/heal/tempfile/' scope=spfile;

节点1 模拟关闭和启动
startup force
--
ORA-01105: mount is incompatible with mounts by other instances
ORA-01677: standby file name conversion parameters differ from other instance

节点1创建pfile
SQL> create pfile='/tmp/1.txt' from spfile;

节点1删除该参数,重新拉起数据库
vi /tmp/1.txt
删除*.db_file_name_convert='+data/healdg/datafile/','+data/heal/datafile/'

SQL> shutdown abort
ORACLE instance shut down.
SQL> startup mount pfile='/tmp/1.txt'; 《《两个节点参数一致
SQL> show parameter spfile; --没有使用spfile

节点1查看spfile位置
[oracle@rac1 ~]$ srvctl config database -d orcl
Spfile: +DATA/orcl/spfileorcl.ora

--节点1备份现有spfile
ASMCMD [+DATA/ORCL] > cp spfileorcl.ora /tmp/spfileorcl.ora
copying +DATA/ORCL/spfileorcl.ora -> /tmp/spfileorcl.ora

--节点1创建新spfile(没有修改的db_file_name_convert)
SQL> create spfile='+DATA/orcl/spfileorcl.ora' from pfile='/tmp/1.txt';

File created.


--备份修改后的spfile
ASMCMD [+DATA/ORCL] > cp spfileorcl.ora /tmp/spfileorcl_new.ora


--对比
[root@rac1 tmp]# strings spfileorcl.ora |grep db_file_name
*.db_file_name_convert='+data/healdg/datafile/','+data/heal/datafile/'
[root@rac1 tmp]# strings spfileorcl_new.ora |grep db_file_name


--还原之前的修改,最后可以找停机时间,同时重启两节点
alter system set db_file_name_convert='+data/healdg/datafile/','+data/heal/datafile/' scope=spfile;




--经过测试,发现按照节点的方式修改参数,也会报这个问题;
alter system set db_file_name_convert='+data/healdg/datafile/','+data/heal/datafile/' scope=spfile sid='orcl1';
alter system set db_file_name_convert='+data/healdg/datafile/','+data/heal/datafile/' scope=spfile sid='orcl2';

SQL> startup force
ORACLE instance started.

Total System Global Area 2415918568 bytes
Fixed Size                    9137640 bytes
Variable Size                 1426063360 bytes
Database Buffers          973078528 bytes
Redo Buffers                    7639040 bytes
ORA-01105: mount is incompatible with mounts by other instances
ORA-01677: standby file name conversion parameters differ from other instance


总结:1)在不能启动的节点创建pfile,然后删除节点2未生效的参数,nomount读取pfile启动测试;
      2)查看现有spfile位置,然后备份到文件系统
           3)不能启动的节点创建spfile从pfile
           4)关闭不能启动的节点,然后通过spfile启动即可;
总体思路:想办法把spfile中的参数删除了,然后用相同的spfile启动就行了;因为spfile只是nomount时候使用,其它时候都是空闲的;

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值