使用 db2adutl 命令以及 logarchopt1 和 vendoropt 資料庫配置引數來進行跨節點恢復

lenx2000發表於2011-03-14

使用 db2adutl 命令以及 logarchopt1 和 vendoropt 資料庫配置引數來進行跨節點恢復

下列示例說明如何使用 db2adutl 命令以及 logarchopt1 和 vendoropt 資料庫配置引數來執行跨節點恢復。

在下列示例中,計算機 1 名為 bar,它正在執行 AIX®。此機器的所有者是 roecken。bar 上的資料庫名為 zample。計算機 2 名為 dps。此機器也在執行 AIX 並由 regress9 所擁有。

PASSWORDACCESS = generate
計算機 1
  1. 設定資料庫以便將日誌歸檔至 TSM。更新 zample 資料庫的資料庫配置引數 logarchmeth1
          bar:/home/roecken> db2 update db cfg for zample using LOGARCHMETH1 tsm

    將返回以下資訊:

       成功完成 DB20000I UPDATE DATABASE CONFIGURATION 命令。
    注:
    在更新資料庫配置之前,可能需要對資料庫進行離線備份。
  2. 強制應用程式斷開連線:
          db2 force applications all
  3. 驗證是否已強制所有應用程式斷開連線:
        db2 list applications
    您應該接收到一條訊息,說明未返回任何資料。
    注:
    在分割槽資料庫環境中,必須對所有資料庫分割槽都執行此步驟。
  4. 備份資料庫:
          db2 backup db zample use tsm

    將返回類似以下的資訊:

       備份成功。此備份映像的時間戳記是:20040216151025

    注:
    在分割槽資料庫環境中,必須對所有資料庫分割槽都執行此步驟。必須先備份目錄分割槽,然後可以同時備份所有其他資料庫分割槽。
  5. 連線至 zample 資料庫,然後在該資料庫中建立一個表。
  6. 將資料裝入新表中。在此示例中,表名為 a,從定界 ASCII 檔案中裝入的資料為 mr。指定了 COPY YES 選項來生成裝入的資料的副本,並且 USE TSM 選項指定資料的副本儲存在 Tivoli® Storage Manager 上。
    注:
    僅當資料庫啟用了前滾恢復功能時才能指定 COPY YES 選項;即,必須將 logarchmeth1 資料庫配置引數設定為 USEREXIT 或 LOGRETAIN。
       bar:/home/roecken> db2 load from mr of del modified by noheader replace
       into a copy yes use tsm

    實用程式返回了一系列訊息來指示它的進度:

          SQL3109N  實用程式正開始從“/home/roecken/mr”檔案中裝入資料。
    
       SQL3500W  實用程式在“02/16/2004 15:12:13.392633”時進入“裝入”階段。
       SQL3519W  開始裝入一致點。輸入記錄數 =“0”。
    
       SQL3520W  裝入一致點成功。
    
       SQL3110N  實用程式已完成處理。從輸入檔案讀取了“1”行。
    
    
       SQL3519W  開始裝入一致點。輸入記錄數 =“1”。
    
       SQL3520W  裝入一致點成功。
    
       SQL3515W  實用程式在“02/16/2004 15:12:13.445718”時已完成“裝入”階段。
       讀取的行數        = 1
       跳過的行數        = 0
       裝入的行數        = 1
       拒絕的行數        = 0
       刪除的行數        = 0
       落實的行數        = 1

    現在,在 TSM 上應該具有一個備份映像、一個裝入副本映像和一個日誌檔案。可以按如下所示對 zample 資料庫執行查詢:

          bar:/home/roecken/sqllib/adsm> db2adutl query db zample

    將返回以下資訊:

          正在檢索 FULL DATABASE BACKUP 資訊。
         1 時間:20040216151025  最早的日誌:S0000000.LOG  資料庫分割槽號:0    會話數:1
       正在檢索 INCREMENTAL DATABASE BACKUP 資訊。
         找不到 ZAMPLE 的 INCREMENTAL DATABASE BACKUP 映像
    
    
       正在檢索 DELTA DATABASE BACKUP 資訊。
         找不到 ZAMPLE 的 DELTA DATABASE BACKUP 映像
    
    
       正在檢索 TABLESPACE BACKUP 資訊。
         找不到 ZAMPLE 的 TABLESPACE BACKUP 映像
    
    
       正在檢索 INCREMENTAL TABLESPACE BACKUP 資訊。
         找不到 ZAMPLE 的 INCREMENTAL TABLESPACE BACKUP 映像
    
    
       正在檢索 DELTA TABLESPACE BACKUP 資訊。
         找不到 ZAMPLE 的 DELTA TABLESPACE BACKUP 映像
    
    
       正在檢索 LOAD COPY 資訊。
           1 時間: 20040216151213
    
    
       正在檢索 LOG ARCHIVE 資訊。
          日誌檔案:S0000000.LOG,鏈號:0,資料庫分割槽號:0 生成時間:2004-02-16-15.10.38
  7. 要啟用跨節點恢復,必須為另一個節點和帳戶提供對 bar 計算機上的物件的訪問權。 在此示例中,對 dps 節點和 regress9 使用者提供了訪問權。
          bar:/home/roecken/sqllib/adsm> db2adutl grant user regress9 
          on nodename dps for db zample

    將返回以下資訊:

       成功新增了 regress9 訪問 dps 節點上的 ZAMPLE 的許可權。

    要查詢 db2adutl grant 操作的結果,發出以下命令:

          bar:/home/roecken/sqllib/adsm> db2adutl queryaccess

    將返回以下資訊:

       節點                 使用者名稱             資料庫名稱   型別
       --------------------------------------------------------------
       DPS                  regress9             ZAMPLE          A
       --------------------------------------------------------------
        訪問型別:  B - 備份映像   L - 日誌   A - 同時使用這兩種訪問型別
PASSWORDACCESS = 生成環境
計算機 2

尚未設定第 2 臺計算機 dps。在 dps 上對 zample 資料庫的 db2adutl 查詢返回了下列結果:

      dps:/home/regress9/sqllib/adsm> db2adutl query db zample       
   --- 資料庫目錄是空的 ---
   警告:在 ADSM 伺服器上 DB2 沒有建立檔案空間
   警告:在 ADSM 中找不到任何別名的 DB2 備份映像。


   dps:/home/regress9/sqllib/adsm> db2adutl query db zample nodename 
       bar owner roecken
   --- 資料庫目錄是空的 ---

   對 ZAMPLE 資料庫的查詢


   正在檢索 FULL DATABASE BACKUP 資訊。
     1 時間:20040216151025  最早的日誌:S0000000.LOG  資料庫分割槽號:0    會話數:1
   正在檢索 INCREMENTAL DATABASE BACKUP 資訊。
     找不到 ZAMPLE 的 INCREMENTAL DATABASE BACKUP 映像


   正在檢索 DELTA DATABASE BACKUP 資訊。
     找不到 ZAMPLE 的 DELTA DATABASE BACKUP 映像


   正在檢索 TABLESPACE BACKUP 資訊。
     找不到 ZAMPLE 的 TABLESPACE BACKUP 映像


   正在檢索 INCREMENTAL TABLESPACE BACKUP 資訊。
     找不到 ZAMPLE 的 INCREMENTAL TABLESPACE BACKUP 映像


   正在檢索 DELTA TABLESPACE BACKUP 資訊。
     找不到 ZAMPLE 的 DELTA TABLESPACE BACKUP 映像


   正在檢索 LOAD COPY 資訊。
       1 時間: 20040216151213


   正在檢索 LOG ARCHIVE 資訊。
      日誌檔案:S0000000.LOG,鏈號:0,資料庫分割槽號:0 生成時間:2004-02-16-15.10.38

在 dps 計算機上尚不存在 zample 資料庫。

  1. 將 zample 資料庫復原至 dps 計算機:
    dps:/home/regress9> db2 restore db zample use tsm options
       "'-fromnode=bar -fromowner=roecken'" without prompting
    

    將返回以下資訊:

       DB20000I  RESTORE DATABASE 命令成功完成。
    注:
    如果 dps 上已經存在 zample 資料庫, 則將省略 OPTIONS 引數,並且將使用資料庫配置引數 vendoropt。 此配置引數會覆蓋備份或復原操作的 OPTIONS 引數。

    對 zample 資料庫的前滾操作將失敗, 原因是 rollforward 實用程式找不到日誌檔案。前滾操作如下所示:

       dps:/home/regress9> db2 rollforward db zample to end of logs and stop

    將返回以下錯誤:

       SQL4970N  資料庫“ZAMPLE”上的前滾恢復不能達到指定的停止點(日誌結束或時間點),原因是在節點“0”上丟失了日誌檔案。
  2. 要強制 rollforward 實用程式查詢另一臺機器上的日誌檔案, 必須配置正確的 logarchopt 值, 在此情況下,為 logarchopt1 資料庫配置引數:
          dps:/home/regress9> db2 update db cfg for zample using logarchopt1
       "'-fromnode=bar -fromowner=roecken'"
  3. 要使 rollforward 實用程式能夠使用裝入副本映像,還必須設定 vendoropt 資料庫配置引數:
          dps:/home/regress9> db2 update db cfg for zample using VENDOROPT
       "'-fromnode=bar -fromowner=roecken'"
  4. 現在,可以對 zample 資料庫進行前滾了:
       dps:/home/regress9> db2 rollforward db zample to end of logs and stop

    將返回以下資訊:

                                        前滾狀態
    
       輸入資料庫別名                   = zample
       返回了狀態的節點數               = 1
    
       節點號                           = 0
       前滾狀態                         = 未暫掛
       要讀取的下一個日誌檔案           =
       已處理的日誌檔案                 = S0000000.LOG - S0000000.LOG
       上次落實的事務                   = 2004-02-16-20.10.38.000000 UTC
    
      DB20000I  ROLLFORWARD 命令成功完成。  
PASSWORDACCESS = 提示環境

在“提示”環境中,需要額外的資訊,尤其是建立了物件的機器的 TSM 節點名和密碼。

對於 db2adutl,更新 dsm.sys 檔案(在基於 Windows 的平臺上稱為 dsm.opt 檔案)並將 NODENAME bar(因為 bar 是源計算機的名稱)新增至伺服器子句:

   dps:/home/regress9/sqllib/adsm> db2adutl query db zample nodename bar 
   owner roecken password *******

將返回以下資訊:

      對 ZAMPLE 資料庫的查詢


   正在檢索 FULL DATABASE BACKUP 資訊。
     1 時間:20040216151025  最早的日誌:S0000000.LOG  資料庫分割槽號:0    會話數:1
   正在檢索 INCREMENTAL DATABASE BACKUP 資訊。
     找不到 ZAMPLE 的 INCREMENTAL DATABASE BACKUP 映像


   正在檢索 DELTA DATABASE BACKUP 資訊。
     找不到 ZAMPLE 的 DELTA DATABASE BACKUP 映像


   正在檢索 TABLESPACE BACKUP 資訊。
     找不到 ZAMPLE 的 TABLESPACE BACKUP 映像


   正在檢索 INCREMENTAL TABLESPACE BACKUP 資訊。
     找不到 ZAMPLE 的 INCREMENTAL TABLESPACE BACKUP 映像


   正在檢索 DELTA TABLESPACE BACKUP 資訊。
     找不到 ZAMPLE 的 DELTA TABLESPACE BACKUP 映像


   正在檢索 LOAD COPY 資訊。
       1 時間: 20040216151213


   正在檢索 LOG ARCHIVE 資訊。
      日誌檔案:S0000000.LOG,鏈號:0,資料庫分割槽號:0 生成時間:2004-02-16-15.10.38
  1. 如果該資料庫不存在,則建立空的 zample 資料庫。如果 zample 資料庫已存在,則可以跳過此步驟和用來更新資料庫配置的下面兩個步驟。
       dps:/home/regress9> db2 create db zample
  2. 更新 zample 資料庫的資料庫配置引數 tsm_nodename
       dps:/home/regress9> db2 update db cfg for zample using tsm_nodename bar
  3. 更新 zample 資料庫的資料庫配置引數 tsm_password
       dps:/home/regress9> db2 update db cfg for zample using tsm_password ********
  4. 復原 zample 資料庫:
       dps:/home/regress9> db2 restore db zample use tsm options
       "'-fromnode=bar -fromowner=roecken'" without prompting
    

    成功完成復原操作,但是發出了一條警告:

       SQL2540W  復原成功,但是在以“無中斷”方式進行處理時,在“資料庫復原”期間遇到了警告“2523”。

    此時,rollforward 實用程式又找不到正確的日誌檔案:

       dps:/home/regress9> db2 rollforward db zample to end of logs and stop

    將返回以下錯誤訊息:

       SQL1268N  由於檢索節點“0”上的資料庫“ZAMPLE”的日誌檔案“S0000000.LOG”時發生錯誤“-2112880618”,前滾恢復已停止。
  5. 因為資料庫復原操作替換了資料庫配置檔案, 所以必須將 TSM 資料庫配置值設定為正確的值。首先,必須復位 tsm_nodename 配置引數:
       dps:/home/regress9> db2 update db cfg for zample using tsm_nodename bar
  6. 必須復位 tsm_password 資料庫配置引數:
       dps:/home/regress9> db2 update db cfg for zample using tsm_password *******
  7. 必須復位 logarchopt1 資料庫配置引數,以便 rollforward 實用程式可以找到正確的日誌檔案:
       dps:/home/regress9> db2 update db cfg for zample using logarchopt1
       "'-fromnode=bar -fromowner=roecken'"
  8. 還必須復位 vendoropt 資料庫配置引數,以便還可以使用裝入恢復檔案:
       dps:/home/regress9> db2 update db cfg for zample using VENDOROPT
       "'-fromnode=bar -fromowner=roecken'"
  9. 當設定資料庫配置引數時,可以對資料庫進行前滾:
       dps:/home/regress9> db2 rollforward db zample to end of logs and stop

    對 zample 資料庫執行 ROLLFORWARD QUERY STATUS 命令將顯示以下結果:

                                        前滾狀態
    
       輸入資料庫別名                   = zample
       返回了狀態的節點數               = 1
    
       節點號                           = 0
       前滾狀態                         = 未暫掛
       要讀取的下一個日誌檔案           =
       已處理的日誌檔案                 = S0000000.LOG - S0000000.LOG
       上次落實的事務                   = 2004-02-16-20.10.38.000000 UTC
    
      DB20000I  ROLLFORWARD 命令成功完成。

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

相關文章