Oracle RAC参数文件管理
一: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.ora,在由该文件所指向的ASM中的spfile。
在11gRAC中修改参数文件位置时,不仅需要修改本地操作系统initsid.ora的spfile记录文件,也需要修改OCR中的数据库资源信息。
流程如下:
一:临时位置生成pfile
注意:RAC环境下严禁使用create pfile from spfile;会覆盖默认位置下pfile内容。
也不可以使用create spfile from pfile,那么会覆盖掉spfile,需要指定具体的位置。
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.//修改OCR中记录的spfile位置
srvctl modify database -database test12c -spfile '+DATA/pri/PARAMETERFILE/spfile'
2.//在相同位置创建spfile
create spfile='+DATA/pri/PARAMETERFILE/spfile' from pfile='/oracle/dg/initorcl.ora';
三:参数文件中参数修改方式如下:
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则当前指定的实例生效,如果指定 *,则所有实例都会被修改