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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RAC 环境下参数文件(spfile)管理相关的知识,希望对你有一定的参考价值。

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

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

[python] view plain copy
 
 print?
  1. 1、参数文件的位置  
  2.   
  3.   SQL> show parameter instance_name  
  4.     
  5.   NAME                                 TYPE        VALUE  
  6.   ------------------------------------ ----------- ------------------------------  
  7.   instance_name                        string      ora10g1  
  8.   SQL> show parameter spfile;  
  9.     
  10.   NAME                                 TYPE        VALUE  
  11.   ------------------------------------ ----------- ------------------------------  
  12.   spfile                               string      +DG1/ora10g/spfileora10g.ora  
  13.     
  14.   SQL> show parameter instance_name  
  15.     
  16.   NAME                                 TYPE        VALUE  
  17.   ------------------------------------ ----------- ------------------------------  
  18.   instance_name                        string      ora10g2  
  19.   SQL> show parameter spfile   
  20.     
  21.   NAME                                 TYPE        VALUE  
  22.   ------------------------------------ ----------- ------------------------------  
  23.   spfile                               string      +DG1/ora10g/spfileora10g.ora  
  24.     
  25.   SQL> show parameter cluster  
  26.     
  27.   NAME                                 TYPE        VALUE  
  28.   ------------------------------------ ----------- ------------------------------  
  29.   cluster_database                     boolean     TRUE  
  30.   cluster_database_instances           integer     2  
  31.     
  32.     
  33.   [email protected]:~> cd /u01/oracle/admin/ora10g  
  34.   [email protected]:/u01/oracle/admin/ora10g> ls  
  35.   adump  bdump  cdump  dpdump  hdump  pfile  udump  
  36.   [email protected]:/u01/oracle/admin/ora10g> cd pfile  
  37.   [email protected]:/u01/oracle/admin/ora10g/pfile> ls -hltr  
  38.   total 4.0K  
  39.   -rw-r----- 1 oracle oinstall 2.7K 2012-09-27 12:12 init.ora.8272012121245  
  40.   [email protected]:/u01/oracle/admin/ora10g/pfile> cd $ORACLE_HOME/dbs  
  41.   [email protected]:/u01/oracle/db/dbs> ls *.ora  
  42.   init+ASM1.ora  initdw.ora  initGOBO1A_tmp.ora  initGOBO4A.ora  init.ora  initora10g1.ora  
  43.   [email protected]:/u01/oracle/db/dbs> more initora10g1.ora  
  44.   SPFILE=‘+DG1/ora10g/spfileora10g.ora‘  
  45.   [email protected]:/u01/oracle/db/dbs> more initora10g2.ora  
  46.   SPFILE=‘+DG1/ora10g/spfileora10g.ora‘  
  47.     
  48.   #由上面的查询可知RAC环境下的参数文件通常都存放在RAW或者ASM中,缺省路径为$ORACLE_HOME/dbs/init{ORACLE_SID}.ora  
  49.   #各个实例只是存放pfile文件,pfile文件的内容是指向spfile文件的位置,即告诉,兄弟,你去xx去找那个spfile吧,哈哈,,,  
  50.   #注,Oracle数据库启动时会先找spfile${ORACLE_SID.ora},如果对应的spfile不存在则找spfile.ora  
  51.   #如果spfile.ora找不到,则找相应的pfile(init{ORACLE_SID}.ora)  
  52.   #那,要是都找不到呢,那就是用缺省的init.ora尝试启动实例  
  53.   
  54. 2、参数文件的备份  
  55.   参数文件备份的方式有很多种,一般情况下当启用了RMAN自动备份控制文件时,会自动备份参数文件。  
  56.   其次是手工备份参数文件,这种方式通常是将spfile内容转换为pfile,说简单点,转为文本文件保存,文件名任意。  
  57.   建议在修改参数文件之前先手工备份参数文件,使用命令: create pfile=[‘<dir>‘] from spfile;  
  58.   注,单实例情形下,如果使用spfile文件启动实例,可以通过上面的方式直接备份,RAC环境下这么干,那就把pfile文件给覆盖了  
  59.   因此,RAC环境下建议为pfile文件指定不同的文件名。如当前为initora10g1.ora,则可以指定为initora10g1.ora.bak  
  60.   SQL> create pfile=‘/u01/oracle/db/dbs/initora10g1.ora.bak‘ from spfile;  
  61.   
  62.   File created.  
  63.   
  64.   SQL> ho ls /u01/oracle/db/dbs/*ora10g*  
  65.   /u01/oracle/db/dbs/hc_ora10g1.dat   /u01/oracle/db/dbs/initora10g1.ora.bak  
  66.   /u01/oracle/db/dbs/initora10g1.ora  /u01/oracle/db/dbs/orapwora10g1  
  67.     
  68.   SQL> ho more /u01/oracle/db/dbs/initora10g1.ora.bak  
  69.   ora10g2.__db_cache_size=142606336  
  70.   ora10g1.__db_cache_size=163577856  
  71.   ora10g1.__java_pool_size=4194304  
  72.   ora10g2.__java_pool_size=4194304  
  73.   ora10g1.__large_pool_size=4194304  
  74.   ora10g2.__large_pool_size=4194304  
  75.   ora10g2.__shared_pool_size=180355072  
  76.   ora10g1.__shared_pool_size=159383552  
  77.   ora10g1.__streams_pool_size=0  
  78.   ora10g2.__streams_pool_size=0  
  79.   *.audit_file_dest=‘/u01/oracle/admin/ora10g/adump‘  
  80.   *.background_dump_dest=‘/u01/oracle/admin/ora10g/bdump‘  
  81.   *.cluster_database_instances=2  
  82.   *.cluster_database=true  
  83.   *.compatible=‘10.2.0.3.0‘  
  84.   *.control_files=‘+DG2/ora10g/controlfile/current.286.795096347‘,  
  85.     ‘+REV/ora10g/controlfile/current.295.795096347‘  
  86.   *.core_dump_dest=‘/u01/oracle/admin/ora10g/cdump‘  
  87.   *.db_block_size=8192  
  88.   *.db_create_file_dest=‘+DG2‘  
  89.   *.db_domain=‘‘  
  90.   *.db_file_multiblock_read_count=16  
  91.   *.db_name=‘ora10g‘  
  92.   *.db_recovery_file_dest=‘+REV‘  
  93.   *.db_recovery_file_dest_size=2147483648  
  94.   *.dispatchers=‘(PROTOCOL=TCP) (SERVICE=ora10gXDB)‘  
  95.   ora10g2.instance_number=2  
  96.   ora10g1.instance_number=1  
  97.   *.job_queue_processes=10  
  98.   ora10g1.local_listener=‘local_lsnr_ora10g1‘  
  99.   ora10g2.local_listener=‘local_lsnr_ora10g2‘  
  100.   *.open_cursors=300  
  101.   *.pga_aggregate_target=112197632  
  102.   *.processes=150  
  103.   *.remote_listener=‘REMOTE_LSNR_ORA10G‘  
  104.   *.remote_login_passwordfile=‘exclusive‘  
  105.   *.sga_target=337641472  
  106.   ora10g2.thread=2  
  107.   ora10g1.thread=1  
  108.   *.undo_management=‘AUTO‘  
  109.   ora10g2.undo_tablespace=‘UNDOTBS2‘  
  110.   ora10g1.undo_tablespace=‘UNDOTBS1‘  
  111.   *.user_dump_dest=‘/u01/oracle/admin/ora10g/udump‘  
  112.     
  113.   对于上面的参数文件里列出的信息,如果参数前面带有星号,则表明当前的参数为共用参数,前面有实例名的则为实例参数  
  114.     
  115. 3、参数文件的修改  
  116.   参数文件中参数修改方式如下:  
  117.   alter system|session set parametername = values scope = memory | spfile |both sid = ‘sid‘ | ‘*’;  
  118.   
  119.     scope   
  120.        memory : 只对当前有效,下次启动则失效  
  121.        spfile : 只对spfile 修改,必须经过下一次启动才生效,当前的实例没有修改  
  122.        both :内存与参数文件都将修改,当不指定scope时,缺省为both.  
  123.   system | session  
  124.        system : system级别有效,影响整个系统及所有使用者  
  125.     session : 仅当前session有效,一旦退出之后将实效  
  126.   ‘sid‘ | ‘*’    
  127.     这个在RAC环境下使用的较为频繁,指定sid_name则当前指定的实例生效,如果指定 ‘*‘,则所有实例生效  
  128.     注,缺省情况下为sid=‘*‘,因此修改是不要忘了,如果没有指定sid,则RAC上的所有实例都会被修改  
  129.   
  130.   下面是修改示例      
  131.   SQL> show parameter instance_name  
  132.     
  133.   NAME                                 TYPE        VALUE  
  134.   ------------------------------------ ----------- -------------------  
  135.   instance_name                        string      ora10g1  
  136.     
  137.   SQL> show parameter pga  
  138.     
  139.   NAME                                 TYPE        VALUE  
  140.   ------------------------------------ ----------- -------------------  
  141.   pga_aggregate_target                 big integer 107M  
  142.     
  143.   SQL> alter system set pga_aggregate_target=100m scope=both sid=‘ora10g1‘;  -->将ora10g1的pga改为100m  
  144.     
  145.   System altered.  
  146.     
  147.   SQL> alter system set pga_aggregate_target=90m sid=‘ora10g2‘;   -->将ora10g2的pga改为90m  
  148.     
  149.   System altered.  
  150.     
  151.   SQL> show parameter pga      -->当前的pga已经被改为100m  
  152.     
  153.   NAME                                 TYPE        VALUE  
  154.   ------------------------------------ ----------- ------------------------------  
  155.   pga_aggregate_target                 big integer 100M  
  156.     
  157.   SQL> conn system/[email protected]  -->连接到实例 ora10g2  
  158.   Connected.  
  159.   SQL> show parameter instance_name  
  160.     
  161.   NAME                                 TYPE        VALUE  
  162.   ------------------------------------ ----------- ------------------------------  
  163.   instance_name                        string      ora10g2  
  164.   SQL> show parameter pga     -->此时pga的值显示为90m  
  165.     
  166.   NAME                                 TYPE        VALUE  
  167.   ------------------------------------ ----------- ------------------------------  
  168.   pga_aggregate_target                 big integer 90M  
  169.     
  170.   SQL> create pfile=‘/u01/oracle/db/dbs/initora10g1.ora.emp‘ from spfile;  
  171.   create pfile=‘/u01/oracle/db/dbs/initora10g1.ora.emp‘ from spfile  
  172.   *  
  173.   ERROR at line 1:  
  174.   ORA-01031: insufficient privileges    -->缺乏权限,因为当前连接的是instance ora10g2  
  175.     
  176.   SQL> conn system/[email protected]  
  177.   Connected.  
  178.     
  179.   SQL> create pfile=‘/u01/oracle/db/dbs/initora10g1.ora.tmp‘ from spfile;                        
  180.     
  181.   File created.  
  182.     
  183.   SQL> ho cat /u01/oracle/db/dbs/initora10g1.ora.tmp |grep pga    
  184.   *.pga_aggregate_target=112197632         #新的pfile文件中同时存在pga的值  
  185.   ora10g1.pga_aggregate_target=104857600   #有两个指定了实例名,此时谁生效呢?我们前面已经查询出了结果  
  186.   ora10g2.pga_aggregate_target=94371840    #同一参数,有实例名的值将优先有带*的参数值  
  187.     
  188.   SQL> alter system reset pga_aggregate_target sid=‘ora10g1‘;-->使用reset方式重置pga,或恢复缺省值  
  189.                                                  -->如果需要保留两个新改的参数,建议reset之前的共用参数以避免混淆   
  190.   System altered.                                -->在reset原来的参数时,不指定sid或sid=‘*‘     
  191.   SQL> show parameter pga  
  192.     
  193.   NAME                                 TYPE        VALUE  
  194.   ------------------------------------ ----------- ------------------------------  
  195.   pga_aggregate_target                 big integer 100M  
  196.     
  197.   SQL> conn system/[email protected]  
  198.   Connected.  
  199.   SQL> alter system reset pga_aggregate_target sid=‘ora10g2‘;  
  200.     
  201.   System altered.  
  202.     
  203.   #Author : Robinson  
  204.   #Blog   : http://blog.csdn.net/robinson_0612  
  205.     
  206.   SQL> show parameter pga  
  207.     
  208.   NAME                                 TYPE        VALUE  
  209.   ------------------------------------ ----------- ------------------------------  
  210.   pga_aggregate_target                 big integer 90M  
  211.   
  212.   [email protected]:~> srvctl stop instance -d ora10g -i ora10g1  
  213.   [email protected]:~> srvctl start instance -d ora10g -i ora10g1    
  214.   SQL> show parameter instance_name  
  215.     
  216.   NAME                                 TYPE        VALUE  
  217.   ------------------------------------ ----------- -------------------  
  218.   instance_name                        string      ora10g1  
  219.     
  220.   SQL> show parameter pga  
  221.     
  222.   NAME                                 TYPE        VALUE  
  223.   ------------------------------------ ----------- -------------------  
  224.   pga_aggregate_target                 big integer 107M  
  225.   
  226. 4、spfile文件位置的修改   
  227.   SQL> show parameter spfile;  
  228.     
  229.   NAME                                 TYPE        VALUE  
  230.   ------------------------------------ ----------- ------------------------------  
  231.   spfile                               string      +DG1/ora10g/spfileora10g.ora  
  232.      
  233.   SQL> create spfile=‘+REV/ORA10G/spfileora10g.ora‘  
  234.     2  from pfile=‘/u01/oracle/db/dbs/initora10g1.ora.bak‘;  
  235.     
  236.   File created.  
  237.     
  238.   SQL> ho echo "spfile=‘+REV/ORA10G/spfileora10g.ora‘" >/u01/oracle/db/dbs/initora10g1.ora  
  239.     
  240.   SQL> ho more /u01/oracle/db/dbs/initora10g1.ora  
  241.   spfile=‘+REV/ORA10G/spfileora10g.ora‘  
  242.     
  243.   SQL> startup force;  
  244.   SQL> show parameter spfile;  
  245.     
  246.   NAME                                 TYPE        VALUE  
  247.   ------------------------------------ ----------- ------------------------------  
  248.   spfile                               string      +REV/ora10g/spfileora10g.ora  
  249.   SQL> shutdown immediate;  
  250.   SQL> exit  
  251.   [email protected]:~> ssh bo2dbs  
  252.   Last login: Fri Sep 28 15:42:59 2012 from 192.168.1.108  
  253.   [email protected]:~> echo "spfile=‘+REV/ORA10G/spfileora10g.ora‘" >/u01/oracle/db/dbs/initora10g2.ora  
  254.   [email protected]:~> srvctl stop database -d ora10g  
  255.   [email protected]:~> srvctl start database -d ora10g  
  256.   [email protected]:~> export ORACLE_SID=ora10g2  
  257.   [email protected]:~> sqlplus / as sysdba  
  258.   SQL> show parameter pfile;   -->查看时还是使用之前的spfile文件  
  259.     
  260.   NAME                                 TYPE        VALUE  
  261.   ------------------------------------ ----------- ------------------------------  
  262.   spfile                               string      +DG1/ora10g/spfileora10g.ora  
  263.     
  264.   [email protected]:~> srvctl config database -d ora10g -a  
  265.   bo2dbp ora10g1 /u01/oracle/db  
  266.   bo2dbs ora10g2 /u01/oracle/db  
  267.   DB_NAME: ora10g  
  268.   ORACLE_HOME: /u01/oracle/db  
  269.   SPFILE: +DG1/ora10g/spfileora10g.ora  
  270.   DOMAIN: null  
  271.   DB_ROLE: null  
  272.   START_OPTIONS: null  
  273.   POLICY:  AUTOMATIC  
  274.   ENABLE FLAG: DB ENABLED  
  275.   #下面将参数文件路径更新到ocr,此时数据库并未shutdown,生产环境建议先停止数据库然后再修改  
  276.   [email protected]:~> srvctl modify database -d ora10g -p ‘+REV/ORA10G/spfileora10g.ora‘   
  277.   [email protected]:~> srvctl stop database -d ora10g  
  278.   [email protected]:~> srvctl config database -d ora10g -a  
  279.   bo2dbp ora10g1 /u01/oracle/db  
  280.   bo2dbs ora10g2 /u01/oracle/db  
  281.   DB_NAME: ora10g  
  282.   ORACLE_HOME: /u01/oracle/db  
  283.   SPFILE: +REV/ORA10G/spfileora10g.ora  
  284.   DOMAIN: null  
  285.   DB_ROLE: null  
  286.   START_OPTIONS: null  
  287.   POLICY:  AUTOMATIC  
  288.   ENABLE FLAG: DB ENABLED  
  289.   [email protected]:~> srvctl start database -d ora10g  
  290.   [email protected]:~> sqlplus / as sysdba  
  291.   SQL> show parameter spfile;  
  292.     
  293.   NAME                                 TYPE        VALUE  
  294.   ------------------------------------ ----------- ------------------------------  
  295.   spfile                               string      +REV/ora10g/spfileora10g.ora  
  296.   
  297.   #使用srvctl start启动时,不会依赖类似于单实例环境或rac环境下的sqlplus启动数据库时按顺序寻找spfile文件,  
  298.   #而是直接根据ocr中spfile文件位置启动数据库。  
  299. 转:http://blog.csdn.net/leshami/article/details/8278931

以上是关于RAC 环境下参数文件(spfile)管理的主要内容,如果未能解决你的问题,请参考以下文章

ORACLE RAC如何把spfile参数文件放共享存储上

ORACLE RAC如何把spfile参数文件放共享存储上

RAC 环境下的重要参数

修改二进制参数文件(SPFILE)的方法之一

PFile and SPFile文件的管理和使用

oracle实验四—初始化参数文件与控制文件管理