Oracle RAC参数文件管理

来源:这里教程网 时间:2026-03-03 17:56:10 作者:

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则当前指定的实例生效,如果指定 *,则所有实例都会被修改

相关推荐