11gRAC(11gR2):
众所周知,在集群环境下,参数文件是共享的,在11g中每一个节点的$ORACLE_HOME/dbs目录下都存在一个initsid.ora文件,该文件用于指向共享存储中参数文件spfile的位置。
内容如下:
[oracle@rac1 dbs]$ more initracdb1.ora SPFILE='+DATA/racdb/spfileracdb.ora' [oracle@rac2 dbs]$ more initracdb2.ora SPFILE='+DATA/racdb/spfileracdb.ora
11gR2实例启动过程是先找init <sid> .ora,在由该文件所指向的ASM中的spfile。
在11gRAC中修改参数文件位置时,不仅需要修改本地操作系统initsid.ora的spfile记录文件,也需要修改OCR中的数据库资源信息。
流程如下:
一:临时位置生成pfile 注意:RAC环境下严禁使用create pfile from spfile;会覆盖默认位置下pfile内容。 SQL> create pfile='/tmp/pfilexxx.ora' from spfile; 二:新位置重新生成spfile 注意:pfile和spfile都需要指定目录, SQL> create spfile='+DATA/racdb/spfile/spfileracdb.ora' from pfile='/tmp/pfilexxx.ora'; 三: 修改pfile中spfile位置 [oracle@rac1 dbs]$ vim initracdb1.ora ###SPFILE='+DATA/racdb/spfileracdb.ora' SPFILE='+DATA/racdb/spfile/spfileracdb.ora' 四:修改OCR中spfile位置 [oracle@rac01 dbs]$ srvctl modify database -d cjcdb -p '+DATA/racdb/spfile/spfileracdb.ora' 五:重启数据库生效 逐个节点重启或同时重启都可以,根据是否可以停机来定 [oracle@rac01 dbs]$ srvctl stop database -d racdb [oracle@rac01 dbs]$ srvctl start database -d racdb 六:检查是否使用正确的参数文件 SQL> show parameter spfile NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string +DATA/racdb/spfileracdb.ora
12cRAC(包含12c以后的所有版本):
每个节点的$ORACLE_HOME/dbs目录下已经不存在initsid.ora文件。
那么各个节点是如何找到共享盘中的spfile参数文件呢,或者说哪里记录了参数文件spfile位置信息。
从12c开始,spfile信息只记录在OCR的数据库资源信息中,当数据库启动时,直接读取OCR中记录的spfile参数文件
查看参数文件记录位置:
[grid@rac1 dbs]$ srvctl config database -d DN_NAME Database unique name: test12c Database name: test12c Oracle home: /oracle/app/product/12201/db_1 Oracle user: oracle Spfile: +DATA/TEST12C/PARAMETERFILE/spfile.272.1044685717 Password file: +DATA/TEST12C/PASSWORD/pwdtest12c.256.1044684147 Domain: Start options: open Stop options: immediate Database role: PRIMARY Management policy: AUTOMATIC Server pools: Disk Groups: DATA Mount point paths: Services: Type: RAC Start concurrency: Stop concurrency: OSDBA group: dba OSOPER group: oper Database instances: test12c1,test12c2 Configured nodes: rac12c1,rac12c2 CSS critical: no CPU count: 0 Memory target: 0 Maximum memory: 0 Default network number for database services: Database is administrator managed
修改读取的参数文件位置流程:
1.srvctl modify database -database test12c -spfile '+DATA/pri/PARAMETERFILE/spfile' //修改OCR中记录的spfile位置 2.create spfile='+DATA/pri/PARAMETERFILE/spfile' from pfile='/oracle/dg/initorcl.ora'; //在相同位置创建spfile
参数文件中参数修改方式如下:
alter system|session set parametername = values scope = memory | spfile |both sid = 'sid' | '*' scope memory : 只对当前有效,下次启动则失效 spfile : 只对spfile 修改,必须经过下一次启动才生效,当前的实例没有修改 both :内存与参数文件都将修改,当不指定scope时,缺省为both. system | session system : system级别有效,影响整个系统及所有使用者 session : 仅当前session有效,一旦退出之后将实效 sid='*' 这个在RAC环境下使用的较为频繁,指定sid_name则当前指定的实例生效,如果指定 *,则所有实例都会被修改
