日期:2014-05-16  浏览次数:20431 次

RAC 环境下参数文件(spfile)管理

    RAC环境下,初始化参数文件与但实例下参数文件有些异同,主要表现在初始化参数可以为多个实例公用,也可以单独设置各个实例的初始化参数。对于那些非共用的初始化参数则必须要单独设置,而共用的则可以单独设置,但一般不建议这么用。本文描述RAC 环境下参数文件(spfile)的相关管理工作。

        有关RAC环境下的重要参数描述,请参考:RAC 环境下重要参数

1、参数文件的位置

  SQL> show parameter instance_name
  
  NAME                                 TYPE        VALUE
  ------------------------------------ ----------- ------------------------------
  instance_name                        string      ora10g1
  SQL> show parameter spfile;
  
  NAME                                 TYPE        VALUE
  ------------------------------------ ----------- ------------------------------
  spfile                               string      +DG1/ora10g/spfileora10g.ora
  
  SQL> show parameter instance_name
  
  NAME                                 TYPE        VALUE
  ------------------------------------ ----------- ------------------------------
  instance_name                        string      ora10g2
  SQL> show parameter spfile 
  
  NAME                                 TYPE        VALUE
  ------------------------------------ ----------- ------------------------------
  spfile                               string      +DG1/ora10g/spfileora10g.ora
  
  SQL> show parameter cluster
  
  NAME                                 TYPE        VALUE
  ------------------------------------ ----------- ------------------------------
  cluster_database                     boolean     TRUE
  cluster_database_instances           integer     2
  
  
  oracle@bo2dbp:~> cd /u01/oracle/admin/ora10g
  oracle@bo2dbp:/u01/oracle/admin/ora10g> ls
  adump  bdump  cdump  dpdump  hdump  pfile  udump
  oracle@bo2dbp:/u01/oracle/admin/ora10g> cd pfile
  oracle@bo2dbp:/u01/oracle/admin/ora10g/pfile> ls -hltr
  total 4.0K
  -rw-r----- 1 oracle oinstall 2.7K 2012-09-27 12:12 init.ora.8272012121245
  oracle@bo2dbp:/u01/oracle/admin/ora10g/pfile> cd $ORACLE_HOME/dbs
  oracle@bo2dbp:/u01/oracle/db/dbs> ls *.ora
  init+ASM1.ora  initdw.ora  initGOBO1A_tmp.ora  initGOBO4A.ora  init.ora  initora10g1.ora
  oracle@bo2dbp:/u01/oracle/db/dbs> more initora10g1.ora
  SPFILE='+DG1/ora10g/spfileora10g.ora'
  oracle@bo2dbs:/u01/oracle/db/dbs> more initora10g2.ora
  SPFILE='+DG1/ora10g/spfileora10g.ora'
  
  #由上面的查询可知RAC环境下的参数文件通常都存放在RAW或者ASM中,缺省路径为$ORACLE_HOME/dbs/init{ORACLE_SID}.ora
  #各个实例只是存放pfile文件,pfile文件的内容是指向spfile文件的位置,即告诉,兄弟,你去xx去找那个spfile吧,哈哈,,,
  #注,Oracle数据库启动时会先找spfile${ORACLE_SID.ora},如果对应的spfile不存在则找spfile.ora
  #如果spfile.ora找不到,则找相应的pfile(init{ORACLE_SID}.ora)
  #那,要是都找不到呢,那就是用缺省的init.ora尝试启动实例

2、参数文件的备份
  参数文件备份的方式有很多种,一般情况下当启用了RMAN自动备份控制文件时,会自动备份参数文件。
  其次是手工备份参数文件,这种方式通常是将spfile内容转换为pfile,说简单点,转为文本文件保存,文件名任意。
  建议在修改参数文件之前先手工备份参数文件,使用命令: create pfile=['<dir>'] from spfile;
  注,单实例情形下,如果使用spfile文件启动实例,可以通过上面的方式直接备份,RAC环境下这么干,那就把pfile文件给覆盖了
  因此,RAC环境下建议为pfile文件指定不同的文件名。如当前为initora10g1.ora,则可以指定为initora10g1.ora.bak
  SQL> create pfile='/u01/oracle/db/dbs/initora10g1.ora.bak' from spfile;

  File created.

  SQL> ho ls /u01/oracle/db/dbs/*ora10g*
  /u01/oracle/db/dbs/hc_ora10g1.dat   /u01/oracle/db/dbs/initora10g1.ora.bak
  /u01/oracle/db/dbs/initora10g1.ora  /u01/oracle/db/dbs/orapwora10g1
  
  SQL> ho more /u01/oracle/db/dbs/initora10g1.ora.bak
  ora10g2.__db_cache_size=142606336
  ora10g1.__db_cache_size=163577856
  ora10g1.__java_pool_size=4194304
  ora10g2.__java_pool_size=4194304
  ora10g1.__large_pool_size=4194304
  ora10g2.__large_pool_size=4194304
  ora10g2.__shared_pool_size=180355072
  ora10g1.__shared_pool_size=159383552
  ora10g1.__streams_pool_size=0
  ora10g2.__streams_pool_size=0
  *.audit_file_dest='/u01/oracle/admin/ora10g/adump'
  *.background_dump_dest='/u01/oracle/admin/ora10g/bdump'
  *.cluster_database_instances=2
  *.cluster_database=true
  *.compatible='10.2.