做RAC + Data Guard 实验的时候报了个错。
SQL> startup
ORACLE instance started.
Total System Global Area 180355072 bytes
Fixed Size 1218388 bytes
Variable Size 83888300 bytes
Database Buffers 92274688 bytes
Redo Buffers 2973696 bytes
ORA-01105: mount is incompatible with mounts by other instances
ORA-01677: standby file name convert parameters differ from other instance
ORA-01677: |
standby file name convert parameters differ from other instance |
Cause: |
The DB_FILE_STANDBY_NAME_CONVERT or LOG_FILE_STANDBY_NAME_CONVERT initialization parameters are not the same as in other instances that already have the database mounted. |
Action: |
Change initialization parameters DB_FILE_STANDBY_NAME_CONVERT and LOG_FILE_STANDBY_NAME_CONVERT to match other instances. |
节点之间DB_FILE_STANDBY_NAME_CONVERT 和 LOG_FILE_STANDBY_NAME_CONVERT 参数不一致。 用show parameter 查看了一下, 确实不一致。
不能启动的实例,参数如下:
SQL> show parameter
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string
log_checkpoints_to_alert boolean FALSE
log_file_name_convert string
正常启动的实例,参数如下:
SQL> show parameter
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_file_name_convert string /u01/app/oracle/oradata/orcl/d
db_file_name_convert string /u01/app/oracle/oradata/orcl/d
atafile, +DATA/orcl/datafile,
/u01/app/oracle/oradata/orcl/t
empfile, +DATA/orcl/tempfile
之前修改pfile 之后,直接用create spfile from pfile=’/u01/tmp.ora’ 这种方式在rac1节点上创建spfile的。 当时的操作是先把2个实例都停掉后在执行这个命令的。 但是还是出现了这个问题。 有点奇怪。
因为实例停之后,修改参数,spfile是放在共享设备上的,所以下次实例在启动时会读取共同的是spfile文件。 参数不应该出现这个问题。
后来尝试了一下在rac2节点上用同样的方法创建了一下spfile。 之后2个节点都成功启动。 做这步操作有点仓促,在这之前应该确认停实例之后创建spfile 对所有节点是否都有效的。 没有验证这一步操作。
现在2个节点都成功启动了,修改的参数也生效了。 所以就不能确定问题是什么原因导致的。 不过我还是认为在2个节点都创建spfile 是没有必要的。 可能是之前实例没有成功停掉。 如果有人遇到这个问题,顺便测试一下。
------------------------------------------------------------------------------