ORACLE RAC資料庫中的初始化引數的設定

junsansi發表於2009-10-13

  從原理上來說,RAC資料庫中初始化引數的修改,與單例項資料庫初始化引數的修改是一樣的,不過,實際操作中這兩者也會存在差異:對於那些各節點需要獨立設定的引數,在修改時必須指定例項名。也就是說,在修改RAC資料庫的初始化引數時,如果指定了例項名,那麼僅修改指定的例項的對應初始化引數,否則的話,該RAC環境下所有節點均會被修改(預設值是*,即修改所有例項)。

  由於ORACLE資料庫支援的初始化引數非常多(當然啦通常並不是每一項都需要修改),其中對於某些初始化引數,各節點必須擁有相同的值,而還有些初始化引數,不同節點可以擁有(甚至必須擁有)不同的值。下面按類別進行介紹。

1、必須擁有相同設定的初始化引數

  下列引數在資料庫建立時,一旦確定,所有節點就必須擁有相同的引數值,包括:

  • ACTIVE_INSTANCE_COUNT
  • ARCHIVE_LAG_TARGET
  • CLUSTER_DATABASE
  • CLUSTER_DATABASE_INSTANCES
  • COMPATIBLE
  • CONTROL_FILES
  • DB_BLOCK_SIZE
  • DB_DOMAIN
  • DB_FILES
  • DB_NAME
  • DB_RECOVERY_FILE_DEST
  • DB_RECOVERY_FILE_DEST_SIZE
  • DB_UNIQUE_NAME
  • INSTANCE_TYPE (RDBMS or ASM)
  • PARALLEL_MAX_SERVERS
  • REMOTE_LOGIN_PASSWORD_FILE
  • UNDO_MANAGEMENT

  上述引數所代表的意義就不說了,知道的俺不想說,不知道的俺說不上來。

2、必須擁有獨立設定的初始化引數

  • INSTANCE_NUMBER :該引數是RAC環境中的專用引數之一, RAC 使用 該 引數來區分不同的例項 。
  • THREAD :該引數也是RAC環境下適用的專用引數括弧之一,用來指定當前例項的REDOLOG執行緒號;
  • UNDO_TABLESPACE :如果使用AUM--Automatic Undo Management(現在還有誰在用手動管理回滾段嗎),那麼UNDO_TABLESPACE引數就是用來指定自動管理的UNDO表空間。對於RAC環境資料庫,需要注意的時,每個例項使用不同的UNDO表空間,因此UNDO_TABLESPACE初始化引數,對於各個例項也會擁有各種獨立的引數值。

3、可以擁有不同設定的初始化引數

  ORACLE 建議設定下列 初始化 引數中的引數值為相同值,不過如果條件需 要 ,也可以為其指定不同的引數值:

  • ARCHIVE_LAG_TARGET

  • 關於這個引數可以多說兩句,ORACLE中基於重做日誌實現的特性(比如Dataguard以及Streams),通常需要考慮到重做日誌在切換時由於實際原因,歸檔重做日誌檔案到目標端可能會耗費一些時間。本引數就是用來設定,是否允許延遲歸檔到目標端伺服器的時間。該值是一個時間型別,單位為秒,如果指定的話,值的範圍在60-7200之間。對於RAC環境,由於每個節點分別生成不同的重做日誌,因此也可以根據需要隨意與歸檔相關的引數,除本引數外,還有LOG_ARCHIVE_FORMAT、LOG_ARCHIVE_DEST_n等。
  • LICENSE_MAX_USERS
  • SPFILE
  • UNDO_RETENTION

4、如何修改RAC初始化引數

  對於標準需求,在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 direc

  ORACLE 的提示也很明確了, 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

  竣工。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-616379/,如需轉載,請註明出處,否則將追究法律責任。

相關文章