天天看點

RAC 修改 spfile 參數

我們知道資料庫的參數檔案有spfile 和pfile。 RAC 的參數檔案比較特殊。 因為預設情況下,RAC的spfile 是放在共享裝置上(RAW裝置或者ASM磁盤組)。而在各節點的pfile檔案裡隻記錄了這個spfile的位置。  是以在用spfile 生成pfile 或者修改相關參數值時都需要特别注意。

如果我們直接使用: create pfile from spfile 指令穿件pfile,那麼生成的pfile 檔案将覆寫原有$ORACLE_HOME/dbs 目錄下的pfile 檔案。 而在之前的pfile檔案裡面值保留了一條指向spfile存放位置的記錄。 這樣修改之後,就會造成資料庫啟動時會因為找不到spfile檔案而讀取本地的pfile檔案,而不是共享裝置上的spfile檔案。這樣對參數管理上就會帶來麻煩,也帶來其他的隐患。

是以對于RAC,要慎用 create pfile from spfile 來建立pfile 檔案, 在建立的時候,盡量指定pfile的生成位置。

先來看一下$ORACLE_HOME/dbs 下的pfile檔案内容:

[oracle@rac1 bin]$ cd $ORACLE_HOME/dbs

[oracle@rac1 dbs]$ ls

ab_+ASM1.dat  hc_orcl1.dat   initdw.ora  initorcl1.ora  orapworcl   orapworcl2

hc_+ASM1.dat  init+ASM1.ora  init.ora    orapw+ASM1     orapworcl1  snapcf_orcl1.f

[oracle@rac1 dbs]$ more initorcl1.ora

SPFILE='+DATA/orcl/spfileorcl.ora'     -- 本地的pfile 隻有一條記錄

[oracle@rac1 dbs]$

我們現在看一下spfile 檔案的内容:

[oracle@rac1 bin]$ export ORACLE_SID=orcl1

[oracle@rac1 bin]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on Thu Sep 23 12:04:24 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

SQL> conn / as sysdba;

Connected.

SQL> show parameter spfile

NAME                  TYPE        VALUE

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

spfile                   string      +DATA/orcl/spfileorcl.ora  -- 這裡記錄spfile 位置

SQL> show parameter  -- 檢視所有參數

NAME                                 TYPE        VALUE

O7_DICTIONARY_ACCESSIBILITY          boolean     FALSE

active_instance_count                integer

aq_tm_processes                      integer     0

archive_lag_target                   integer     0

asm_diskgroups                       string

asm_diskstring                       string

asm_power_limit                      integer     1

audit_file_dest                        string    /u01/app/oracle/admin/orcl/adump                            

audit_sys_operations                 boolean     FALSE

audit_syslog_level                   string

所有參數比較多,我們把它轉成pfile後在檢視:

SQL> create pfile='/u01/dave.ora' from spfile;

File created.

打開dave.ora 檔案:

[oracle@rac1 u01]$ more dave.ora

orcl2.__db_cache_size=88080384

orcl1.__db_cache_size=96468992

orcl2.__java_pool_size=4194304

orcl1.__java_pool_size=4194304

orcl2.__large_pool_size=4194304

orcl1.__large_pool_size=4194304

orcl2.__shared_pool_size=79691776

orcl1.__shared_pool_size=71303168

orcl2.__streams_pool_size=0

orcl1.__streams_pool_size=0

*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'

*.background_dump_dest='/u01/app/oracle/admin/orcl/bdump'

*.cluster_database_instances=2

*.cluster_database=TRUE

*.compatible='10.2.0.1.0'

*.control_files='+DATA/orcl/controlfile/current.280.730181163','+FLASH_RECOVERY_AREA/orcl/controlfile/current.260.730181165'

*.core_dump_dest='/u01/app/oracle/admin/orcl/cdump'

*.db_block_size=8192

*.db_create_file_dest='+DATA'

*.db_domain=''

*.db_file_multiblock_read_count=16

*.db_name='orcl'

*.db_recovery_file_dest='+FLASH_RECOVERY_AREA'

*.db_recovery_file_dest_size=3670016000

*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'

orcl2.instance_number=2

orcl1.instance_number=1

*.job_queue_processes=10

orcl2.log_archive_dest_1='LOCATION=/u02/rac2_arch'

orcl1.log_archive_dest_1='LOCATION=/u02/rac1_arch'

orcl2.log_archive_dest_2='SERVICE=orcl1'

orcl1.log_archive_dest_2='service=orcl2'

*.log_archive_dest_state_2='ENABLE'

*.open_cursors=300

*.pga_aggregate_target=59768832

*.processes=150

*.remote_listener='LISTENERS_ORCL'

*.remote_login_passwordfile='exclusive'

*.sga_target=179306496

orcl1.standby_archive_dest='/u02/rac2_arch'

orcl2.standby_archive_dest='/u02/rac1_arch'

orcl2.thread=2

orcl1.thread=1

*.undo_management='AUTO'

orcl2.undo_tablespace='UNDOTBS2'

orcl1.undo_tablespace='UNDOTBS1'

*.user_dump_dest='/u01/app/oracle/admin/orcl/udump'

從上面的結果,我們發現參數的最前面都有一個辨別符:orcl1, orcl2 和 *。 這些符号是用來區分參數的。

如:

*.undo_management='AUTO'         -- 所有節點通用的參數

orcl2.undo_tablespace='UNDOTBS2'  -- 代表orcl2的參數

orcl1.undo_tablespace='UNDOTBS1'  -- 代表orcl1 的參數

因為spfile區分執行個體,是以我們在修改的時候要特别注意指定執行個體,如果不指定,就會修改所有節點的參數。

alter system set sga_target=1024M scope=spfile sid='orcl1';

alter system set sga_target=1024M scope=spfile sid='*';

注意:參數修改完成後,需要重新開機才能生效。

RAC 與單執行個體不同的一些參數:

(1)cluster_database

一般情況下,該參數在rac各執行個體下應該設定為true。在一些特别情況下,比如upgrade等,需要将該參數設定成false。

(2)db_name/ db_unique_name/ instance_name

各節點db_name 需要一緻,db_unique_name 也需要一緻(這與standby是不同的)。而instance_name配置成各個節點的執行個體名稱。

(3)instance_number

該參數表示節點上執行個體的執行個體号。

(4) thread

該參數用來标示執行個體使用的redo線程。線程号與節點号/執行個體号沒有直接關聯。

(5) local_listener

該參數用來手工注冊監聽。為解決ORA-12514錯誤,可以設定該參數。

(6) remote_listener

該參數用來進行伺服器端負載均衡配置。在配置RAC 負載均衡的服務端均衡時需要設定該參數。具體可以參考Blog:

       Oracle RAC LoadBalance

<a href="http://blog.csdn.net/tianlesoftware/archive/2010/03/05/5347775.aspx">http://blog.csdn.net/tianlesoftware/archive/2010/03/05/5347775.aspx</a>

(7) cluster_interconnects

該參數用來指定叢集中IPC通信的網絡。如果叢集中有多種網絡用于高速互聯,需要配置該參數。對于多個IP位址,用冒号将其隔開。對于叢集中目前使用的互聯位址,可以查詢視圖gv$cluster_interconnects或着oradebug ipc來檢視。

(8) max_commit_propagation_delay

該參數用于配置SCN的産生機制。在rac下,SCN的同步有2種模式:

(1) Lamport Scheme.該模式下,由GES 管理SCN 的傳播同步,max_commit_propagation_delay 表示SCN 同步所允許的最大時間。在該模式下,全局SCN并非完全同步,這在高并發的OLTP系統中,可能會對應用造成一定的影響。

(2) Broadcast on Commit scheme. 該模式下,一旦任何一個執行個體上事務釋出commit,都立即同步SCN到全局。

在10g R1下,該參數預設數值為700,即采用Lamport Scheme模式。而在10g R2下,該參數預設數值為0,采用Broadcast on Commit scheme模式 (設定小于700的某一值,都将采用該模式) 。采用何種方式,可以從alert.log中獲知。該參數值需要每個節點保持一緻。

 轉:http://blog.csdn.net/tianlesoftware/article/details/5902591

文章可以轉載,必須以連結形式标明出處。

本文轉自 張沖andy 部落格園部落格,原文連結:http://www.cnblogs.com/andy6/p/5766672.html   ,如需轉載請自行聯系原作者