RAC-参数文件的维护

题记:在RAC环境下,由于多节点不同实例在启动时都需要依赖参数文件,所以其管理更加复杂。本节就RAC下参数文件管理进行阐述。

RAC下共享spfile

RAC环境下数据库在启动时,首先尝试寻找Cluster里面Database资源的Spfile配置选项。如果找不到对应的文件,那么继续按照单实例的寻找顺序在默认位置查找。

建议在RAC环境下使用共享的SPFILE,并在默认位置保留一个PFILE,里面通过SPFILE参数指向共享的SPFILE。默认在RAC安装配置完成,就自动生成了一个PFILE文件。


下面是RAC环境中一个参数文件的设置范例。

[oracle@raclinux1 ~]$ cd $ORACLE_HOME/dbs

[oracle@raclinux1 dbs]$ more initRACDB1.ora

SPFILE='+MY_DG2/RACDB/spfileRACDB.ora'


在此环境中,需要谨慎使用createspfile from pfile的命令,很多朋友因为草率地执行这样的操作而导致数据库故障。在ASM或RAC环境中,通常的init<sid>.ora文件中只有如上示例的一行,如果此时执行createspfile from pfile命令,则新创建的SPFILE文件将也只有这样一行信息,数据库将无法启动。

使用ASM存储参数文件

在ASM环境中,参数文件可以存储在ASM磁盘组上,而在Oracle RAC环境中,默认使用存储在ASM上的参数文件,在维护RAC环境的参数文件时要格外谨慎。


以下是一个测试过程,用于指导大家如何将参数文件转移到ASM存储并使之生效。

首先检查参数文件的位置,并通过SPFILE创建一个PFILE文件,进而在ASM磁盘上创建SPFILE文件。

SQL> connect / as sysdba

SQL> show parameter spfile

NAME    TYPE      VALUE

------ ------- ------------------------------

spfile string   /oracle/product/11.2.0/db_1/dbs/spfileracdb11.ora

SQL> create pfile from spfile

File created. 

SQL> create spfile='+RACDB_DATA' from pfile='/oracle/product/11.2.0/db_1/dbs/initracdb11.ora';

File created.


检查ASM上的参数文件。

[grid@rac1 ~]$ asmcmd

ASMCMD> ls RACDB_DATA/racdb1/spfile* 

spfileracdb1.ora

同步RAC两个节点上的参数文件,更改其内容,设置SPFILE参数指向ASM中的参数文件。

[oracle@rac1 dbs]$ echo "SPFILE='+RACDB_DATA/racdb1/spfileracdb1.ora'" >  /oracle/product/11.2.0/db_1/dbs/initracdb11.ora


[oracle@rac1 dbs]$ ssh rac2 "echo \"SPFILE='+RACDB_DATA/racdb1/spfileracdb1.ora'\" >  /oracle/product/11.2.0/db_1/dbs/initracdb12.ora"

通过srvctl修改OCR中关于参数文件的配置。

[oracle@rac1 dbs]$ srvctl modify database -d racdb1 -p+RACDB_DATA/racdb1/spfileracdb1.ora


现在通过CRS启动数据库,将不再需要dbs目录下的参数文件,可以将其移除。

[oracle@rac1 dbs]$ mv /oracle/product/11.2.0/db_1/dbs/spfileracdb11.ora /oracle/product/ 11.2.0/db_1/dbs/spfileracdb11.ora_bak

 

[oracle@rac1 dbs]$ ssh rac2 "mv /oracle/product/11.2.0/db_1/dbs/spfileracdb12.ora /oracle/product/11.2.0/db_1/dbs/spfileracdb12.ora_bak"

 

在下次重新启动数据库时,新的配置将会生效。

[oracle@rac1 dbs]$ srvctl stop database -d racdb1

[oracle@rac1 dbs]$ srvctl start database -d racdb1

 

[oracle@rac1 dbs]$ srvctl status database -d racdb1

Instance racdb11 is running on node rac1

Instance racdb12 is running on node rac2

检查数据库,新的参数文件已经被使用和生效。

SQL> SHOW parameter spfile

NAME TYPE VALUE

------ ----------- ------------------------------

spfile string +RACDB_DATA/racdb1/spfileracdb1.ora


谨慎修改RAC参数

在RAC环境中,即使按照正常的方式修改参数,也有可能因为遭遇Bug而导致事故,所以在进行重要的环境变更前,一定要进行测试,并详细检查与变更有关的文件,确保变更不会引起错误。


在Oracle 10.1的版本中,会遇到这样的问题,在RAC环境下修改UNDO_RETENTION参数,使用如下命令:

alter system set undo_retention=18000 sid='*';

这条命令直接导致了RAC的其他节点挂起,Oracle记录了一个相关Bug,Bug号为:4220405(这个Bug在Oracle 10gR2中修正),其Workaround就是分别修改不同实例。

alter system set undo_retention=18000 sid='RAC1';

alter system set undo_retention=18000 sid='RAC2';

alter system set undo_retention=18000 sid='RAC3';


这个案例告诉我们,Bug无处不在,数据库调整应当极其谨慎,最好在测试环境中测试过再应用到生产环境。

再次重申,在RAC环境中,每一个维护操作都要相当谨慎!


RAC环境下初始化参数的查询方法

下面介绍RAC环境下初始化参数的查询方法。

一个简单的例子:



不同的查询方法得到的结果。



似乎除了看不到全局设置外,GV$PARAMETER参数和V$SPPARAMETER没有什么不同,其实不然,如果alter system set的时候只修改了spfile或者memory参数,结果就会不同。



从上面的对比可以看出,通过GV$视图访问的结果和SPFILE中包含的信息完全不同。除了上面介绍的几种视图之外,CREATE PFILE也是一个不错的选择。Oracle把SPFILE也纳入到RMAN的备份恢复策略当中,如果你配置了控制文件自动备份(AUTOBACKUP),那么Oracle会在数据库发生重大变化(如增减表空间)时自动进行控制文件及SPFILE文件的备份。


猜你喜欢

转载自blog.csdn.net/qq_34556414/article/details/81012282