做RAC + Data Guard实验的时候报了个错。
SQL> startup
ORACLE instance started.
Total System Global Area180355072 bytes
Fixed Size1218388 bytes
Variable Size83888300 bytes
Database Buffers92274688 bytes
Redo Buffers2973696 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
NAMETYPEVALUE
------------------------------------ ----------- ------------------------------
db_file_name_convertstring
log_checkpoints_to_alertbooleanFALSE
log_file_name_convertstring
正常启动的实例,参数如下:
SQL> show parameter
NAMETYPEVALUE
------------------------------------ ----------- ------------------------------
log_file_name_convertstring/u01/app/oracle/oradata/orcl/d
db_file_name_convertstring/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是没有必要的。可能是之前实例没有成功停掉。如果有人遇到这个问题,顺便测试一下。
------------------------------------------------------------------------------