一、问题解决
1、? 查看正常RAC中有关,parameter记录
节点spfile 位置
SQL> show parameter pfile
NAME? ? ? ? ? ? ? ? ? TYPE? ? ? ? VALUE
------------------------------------ ----------- ------------------------------
spfile? ? ? ? ? ? ? ? ? string? ? +BACKUP_DISK/racdb/spfileracdb
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .ora
服务器上pfile内容
[ora@rac1-21 dbs]$ cat initracdb1.ora
SPFILE='+BACKUP_DISK/racdb/spfileracdb.ora'
2、? 使用create pfile from spfile;
SQL> create pfile from spfile;
File created.
此时服务器上pfile内容
**.undo_management='AUTO'? 为共享的参数
racdb2.thread=2
racdb1.thread=1
为节点单独使用的
重启之后,oracle使用了节点本地的pfile,不能使用共享存储上spfile了,这样很不方便以后的管理。
SQL> show parameter pfile
NAME? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TYPE? ? ? ? VALUE
------------------------------------ ----------- ------------------------------
spfile? ? ? ? ? ? ? ? ? string
oracle使用节点本地的参数文件,而不使用共享存储的参数文件,这样的问题怎么解决呢?
3、? 解决方法:
修改oracle中pfile指向位置为共享存储的参数文件即可。(指针)
[ora@rac1-21 dbs]$ cat initracdb1.ora
sPFILE='+BACKUP_DISK/racdb/spfileracdb.ora'
?
重启数据库
SQL> show parameter pfile
NAME? ? ? ? ? ? ? ? ? ? TYPE? ? ? ? VALUE
------------------------------------ ----------- ------------------------------
spfile? ? ? ? ? ? ? ? ? string? ? ? +BACKUP_DISK/racdb/spfileracdb
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .ora
OK!问题解决了。
二、思考与总结
思考:RAC启动参数文件位置的奥秘?
RAC中,启动参数文件是不是ORACLE先去找本地的参数文件,然后本地指向共享存储中的文件,这样的方式,参数文件才得以在共享磁盘上多个节点进行共享呢?
为了证明我的想法,觉得把pfile修改名。看看oracle能否找到共享存储中的参数文件呢?
[ora@rac1-21 dbs]$ mv initracdb1.ora initracdb1.ora_bk
SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/oracle/product/10.2.0/db_1/dbs/initracdb1.ora'
恢复pfile的名称
?[ora@rac1-21 dbs]$ mv initracdb1.ora_bk initracdb1.ora
SQL> startup
ORACLE instance started.
Total System Global Area? 222298112 bytes
Fixed Size? ? ? ? ? ? ? ? ? 1218628 bytes
Variable Size? ? ? ? ? ? ? 96470972 bytes
Database Buffers? ? ? ? ? 121634816 bytes
Redo Buffers? ? ? ? ? ? ? ? 2973696 bytes
Database mounted.
Database opened.
显然,数据库开启使用节点本地的pfile,只要本地的参数文件或指向参数文件正确。数据库就可以启动
总结:RAC数据库启动也是先使用默认的位置SPFILE,PFILE等文件。如果有指向,oracle就会使用指向共享存储的位置parameter文件。