2013年(350)
分类: Oracle
2013-04-27 09:57:14
由于ORACLE数据库支持的初始化参数非常多(当然啦通常并不是每一项都需要修改),其中对于某些初始化参数,各节点必须拥有相同的值,而还有些初始化参数,不同节点可以拥有(甚至必须拥有)不同的值。下面按类别进行介绍。
下列参数在数据库创建时,一旦确定,所有节点就必须拥有相同的参数值,包括:
上述参数所代表的意义就不说了,知道的俺不想说,不知道的俺说不上来。
ORACLE 建议设置下列 初始化 参数中的参数值为相同值,不过如果条件需 要 ,也可以为其指定不同的参数值:
对于标准需求,在RAC环境和单实例环境并没有什么不同,例如,修改初始化参数log_archive_dest2的参数值,操作如下:
首先分别检查两个节点中,当前参数设置:
JSSDBN1> show parameter log_archive_dest_2;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_2 string
JSSDBN2> show parameter log_archive_dest_2;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_2 string仍然是通过alter system语句执行修改,操作如下:
JSSDBN1> alter system set log_archive_dest_2='location=/data/oradata/jssdb';
System altered.提示成功,分别查看两节点的参数值:
JSSDBN1> show parameter log_archive_dest_2;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_2 string location=/data/oradata/jssdb
JSSDBN2> show parameter log_archive_dest_2;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_2 string location=/data/oradata/jssdb看起来没有什么不同对吧。这里需要注意一点,如果更新的参数与路径有关系,那么必须确认该路径在每个节点中均确实存在,不然就有可能导致更新报错,或者是以后实际操作用到该参数时出错。这里仍以log_archive_dest_2参数为例,假如在节点1上执行更新归档路径如下(节点2中并不存在/data/oradata/jssdb1目录):
JSSDBN1> alter system set log_archive_dest_2='location=/data/oradata/jssdb1/archive';
alter system set log_archive_dest_2='location=/data/oradata/jssdb1/archive'
*
ERROR at line 1:
ORA-32008: error while processing parameter update at instance jssdbn2
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-16032: parameter LOG_ARCHIVE_DEST_2 destination string cannot be translated
ORA-07286: sksagdi: cannot obtain device information.
Linux-x86_64 Error: 2: No such file or direcORACLE 的提示也很明确了, ORA-32008 说节点2更新处理更新时出错,因为 ORA-02097 指定的参数值无效,根本原来就在于 Linux-x86_64 Error: 2: No such file or direc tory 。
那么你可能就会有问题了:我的实际环境中,两节点的路径确实不同(不像本例中仅只是缺少目录,正如前面讲的,有些参数各节点必须拥有不同值),那又该如何处理呢?太简单了,分别设置不同节点的参数值就是了。
对于RAC环境中的初始化参数修改,我们可以通过执行alter system语句时,附加sid参数,来指定要更新的实例,这样就可以为不同实例指定不同的参数值了(只要更新的参数确实支持设置不同的值)。
首先修改节点1中的log_archive_dest_2参数,操作如下:
JSSDBN1> alter system set log_archive_dest_2='location=/data/oradata/jssdbn1' sid='jssdbn1';
System altered.
JSSDBN1> show parameter log_archive_dest_2;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_2 string location=/data/oradata/jssdbn1节点1的参数已经修改,下面查看一下节点2:
JSSDBN2> show parameter log_archive_dest_2;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_2 string location=/data/oradata/jssdb仍为旧值,接下来再用相同的方式修改节点2的设置即可:
JSSDBN2> alter system set log_archive_dest_2='location=/data/oradata/jssdbn2' sid='jssdbn2';
System altered.
JSSDBN2> show parameter log_archive_dest_2;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_2 string location=/data/oradata/jssdbn2竣工。