DB2 V9聯機備份還原(二)

rheet1978發表於2008-07-01
建立示例資料庫DB2TEST1

為了模擬環境,首先我們在WINDOWS XP環境下安裝DB2 ESE V9.1,安裝完成後,開啟DB2CLP視窗,發出CREATE DATABASE語句,建立示例資料庫DB2TEST1,具體如清單1所示:

 

- - 清單1 .建立示例資料庫DB2TEST1

 

C:\> DB2 CREATE DATABASE DB2TEST1

DB20000I  CREATE DATABASE命令成功完成。

 

 

命令執行成功,這樣我們就建立了一個示例資料庫DB2TEST1,資料庫地域是中國(CN),資料庫內碼表是1386,資料庫程式碼集是GBK。由於資料庫預設情況是採用迴圈日誌方式,在迴圈日誌方式下,不能進行聯機備份,所以我們需要把日誌方式改成歸檔模式。在DB2CLP視窗中,連線示例資料庫DB2TEST1,執行UPDATE DB CFG命令把LOGARCHMETH1引數改成“DISC:C:\DB2\”,具體如清單2所示。

 

- - 清單2 .修改示例資料庫DB2TEST1的配置引數

 

C:\> db2 connect to db2test1

 

   資料庫連線資訊

 

 資料庫伺服器         = DB2 / NT 9.1.0

 SQL 授權標識         = RHETTE

 本地資料庫別名       = DB2TEST1

 

C:\> DB2 UPDATE DATABASE CONFIGURATION USING LOGARCHMETH1        DISK:C:\DB2\  IMMEDIATE

 

DB20000I  UPDATE DATABASE CONFIGURATION命令成功完成。

SQL1363W  為立即修改而提交的一個或多個引數未動態更改。對於這些配置引數,

必須在所有應用程式都與此資料庫斷開連線之後,更改才會生效。

 

 

命令執行成功,這樣我們就把示例資料庫DB2TEST1的日誌模式改成了歸檔,並且歸檔方法使用手工歸檔的方法。如果是客戶的生產環境使用了磁帶機,當磁帶管理軟體是使用TSM的時候,由於TSM和DB2 V9進行了更深的結合,使用TSM進行日誌的歸檔要比使用第三方廠商的產品效率要更高,管理更容易。如果歸檔日誌是使用TSM放入到磁帶機的話,可以直接修改LOGARCHMETH1引數,把其值修改成TSM,另外,在資料庫配置引數中,提供了4個配置引數用來定義TSM的管理類等,分別是TSM管理類(TSM_MGMTCLASS)、TSM節點名(TSM_NODENAME)、TSM所有者(TSM_OWNER)和TSM密碼(TSM_PASSWORD)。

TSM管理類(TSM_MGMTCLASS)配置引數是用來確定TSM伺服器應如何管理正在備份的物件的備份版本。預設預設情況是沒有DB2指定的管理類。當執行任何TSM備份時,在使用資料庫配置引數指定的管理類之前,TSM 首先嚐試將備份物件繫結到TSM客戶機選項檔案中的INCLUDE-EXCLUDE列表中指定的管理類。如果找不到匹配項,則將使用TSM伺服器上指定的預設TSM管理類。然後,TSM將備份物件重新繫結到資料庫配置引數指定的管理類。因此,預設管理類以及資料庫配置引數指定的管理類必須包含備份副本組,否則備份操作將失敗。

如果歸檔日誌是使用TSM放入到磁帶機的話,我們可以在DB2CLP視窗中,發出UPDATE DB CFG命令把配置引數LOGARCHMETH1引數改成TSM,具體如下:

 

C:\> DB2 UPDATE DATABASE CONFIGURATION USING LOGARCHMETH1 TSM  IMMEDIATE

DB20000I  UPDATE DATABASE CONFIGURATION命令成功完成。

 

 

假如客戶的生產環境使用了磁帶機,但磁帶管理軟體使用了第三方的儲存管理軟體,比如EMC LEGATO,如果想用LEGATO進行日誌備份,可以這麼修改資料庫引數:

 

 

$ db2 update db cfg using logarchmeth1 vendor:/usr/lib/libnsrdb2.o

$ db2 update db cfg using logarchopt1 @DB2.cfg

      

 

在本文中,我們將使用手工歸檔的方式,所以我們執行了如清單2所示的命令,把LOGARCHMETH1改成了LOGRETAIN。

 

建議大家使用LOGARCHMETH1,此引數指定已歸檔日誌的主要目標的介質型別,不要繼續使用LOGRETAIN或USEREXIT引數。LOGARCHMETH1引數預設值為OFF,取值範圍可以是LOGRETAIN、USEREXIT、DISK、TSM或VENDOR。各自的含義如下:

l         OFF

指定不使用日誌歸檔方法。如果LOGARCHMETH1和LOGARCHMETH2都設定為 OFF,那麼認為資料庫正在使用迴圈日誌記錄,且不可前滾恢復。這是預設值。

l         LOGRETAIN

此值僅可用於LOGARCHMETH1,且等價於將 LOGRETAIN 配置引數設定為 RECOVERY。如果指定此值,將自動更新 LOGRETAIN 配置引數。

l         USEREXIT

此值僅對LOGARCHMETH1有效,且等價於將 USEREXIT配置引數設定為 ON。如果指定此值,將自動更新 USEREXIT配置引數。

l         DISK

此值後必須緊跟冒號(:),然後是現有標準路徑名,日誌檔案將在其中歸檔。例如,如果將LOGARCHMETH1設定為 DISK:/U/dbuser/archived_LOGS,那麼將歸檔日誌檔案放入名為 /U/dbuser/ archived_LOGS的目錄。

注: 如果正在歸檔至磁帶,可以使用 DB2tapemgr實用程式來儲存和檢索日誌檔案。

l         TSM

如果指定不帶任何附加配置引數,此值指示應該使用預設管理類,將日誌檔案歸檔在本地 TSM 伺服器上。如果此值後緊跟冒號(:)和 TSM 管理類,那麼使用指定的管理類來歸檔日誌檔案。

l         VENDOR

指定將使用供應商庫來歸檔日誌檔案。此值後必須緊跟冒號(:)和庫的名稱。庫中提供的 API 必須使用備份並復原供應商產品的 API。 注: 如果將LOGARCHMETH1或LOGARCHMETH2設定為 OFF 以外的值,那麼必須配置資料庫以進行前滾恢復。

 

如果更新 USEREXIT 或 LOGRETAIN 配置引數,將自動更新LOGARCHMETH1,反之亦然。然而,如果您要使用USEREXIT或LOGRETAIN, 必須將LOGARCHMETH2設定為 OFF。

 

清單2中的命令執行成功後,由於LOGARCHMETH1配置引數更改成功後,需要等資料庫上所有的連線都斷開後才會生效,所以我們在DB2CLP視窗中,發出FORCE APPLICATIONS ALL命令斷開所有的連線,具體如清單3所示:

 

- - 清單3 .斷開所有應用程式連線

 

C:\> DB2 FORCE APPLICATIONS ALL

DB20000I  FORCE APPLICATION命令成功完成。

DB21024I  該命令為非同步的,可能不會立即生效。

 

 

命令成功後,用LIST APPLICATIONS看所有應用程式是否都斷開了,如果沒有斷開,再重複執行FORCE APPLICATIONS ALL,保證所有連線都斷開後,把資料庫做一次全備。在我們首次把資料庫的日誌模式由迴圈模式改成歸檔模式後,資料庫會處於BACKUP PENDING狀態,強制我們進行一次全量備份,在全量備份完成之前,不能訪問資料庫或表空間。

 

下面我們在DB2CLP視窗中,發出BACKUP  DB命令,全量備份示例資料庫DB2TEST1,具體如清單4所示:

 

- - 清單4 .對示例資料庫做一次全備

 

C:\> DB2 BACKUP DB DB2TEST1

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

 

 

完全備份成功後,這樣我們就建立了一個測試庫DB2TEST1,其使用歸檔日誌,不允許增量備份。在DB2CLP視窗中,連線上示例資料庫DB2TEST1,發出GET DB CFG命令檢視其配置引數,可以看到LOGARCHMETH1配置引數已經被修改成功。具體如清單5所示:

 

- - 清單5.檢視示例資料庫配置引數

 

C:\> db2 connect to db2test1

 

   資料庫連線資訊

 

 資料庫伺服器         = DB2 / NT 9.1.0

 SQL 授權標識         = RHETTE

 本地資料庫別名       = DB2TEST1

 

       資料庫  的資料庫配置

 

 資料庫配置發行版級別                                    = 0x0b00

 資料庫發行版級別                                        = 0x0b00

 

 資料庫地域                                              = CN

 資料庫內碼表                                            = 1386

 資料庫程式碼集                                            = GBK

 資料庫國家/地區程式碼                                    = 86

 資料庫整理順序                                          = UNIQUE

 備用整理順序                              ( ALT_COLLATE ) =

 資料庫頁大小                                            = 4096

 . . . . . . . . . . . . . . .

 日誌檔案大小(4KB)                         ( LOGFILSIZ ) = 1024

 主日誌檔案的數目                           ( LOGPRIMARY ) = 13

 輔助日誌檔案的數目                          ( LOGSECOND ) = 4

 已更改的至日誌檔案的路徑                   ( NEWLOGPATH ) =

 日誌檔案路徑                     = C:\DB2\NODE0000\SQL00002\SQLOGDIR\

 溢位日誌路徑                          ( OVERFLOWLOGPATH ) =

 映象日誌路徑                            ( MIRRORLOGPATH ) =

 首個活動日誌檔案                                        = S0000001.LOG

 磁碟上已滿的塊日誌                    ( BLK_LOG_DSK_FUL ) = NO

 事務使用的最大主日誌空間的百分比        ( MAX_LOG )= 0

 1 個活動 UOW 的活動日誌檔案的數目   ( NUM_LOG_SPAN ) = 0

 

 組落實計數                            ( MINCOMMIT ) = 1

 軟檢查點前回收的日誌檔案的百分比      ( SOFTMAX ) = 520

 啟用的恢復的日誌保留                  ( LOGRETAIN ) = OFF

 啟用的日誌記錄的使用者出口              ( USEREXIT ) = OFF

 

 HADR 資料庫角色                                          = STANDARD

 HADR 本地主機名                      ( HADR_LOCAL_HOST ) =

 HADR 本地服務名稱                    ( HADR_LOCAL_SVC ) =

 HADR 遠端主機名                      ( HADR_REMOTE_HOST ) =

 HADR 遠端服務名稱                    ( HADR_REMOTE_SVC ) =

 遠端伺服器的 HADR 例項名             ( HADR_REMOTE_INST ) =

 HADR 超時值                          ( HADR_TIMEOUT ) = 120

 HADR 日誌寫同步方式                ( HADR_SYNCMODE ) = NEARSYNC

 

 第一個日誌歸檔方法                    ( LOGARCHMETH1 ) = DISK:C:\DB2\

 logarchmeth1 的選項                        ( LOGARCHOPT1 ) =

 第二個日誌歸檔方法                        ( LOGARCHMETH2 ) = OFF

 logarchmeth2 的選項                        ( LOGARCHOPT2 ) =

 故障轉移日誌歸檔路徑                     ( FAILARCHPATH ) =

 錯誤時重試日誌歸檔次數                   ( NUMARCHRETRY ) = 5

 日誌歸檔重試延遲(秒)                 ( ARCHRETRYDELAY ) = 20

 供應商選項                                  ( VENDOROPT ) =

 

 . . . . . . . . . . .

 

       下面我們來建立一個示例表TEST1,表很簡單,只有3個列,分別是編號(ID)、姓名(NAME)和備註(NOTE)。在DB2CLP視窗中,連線上示例資料庫DB2TEST1,發出CREATE TABLE命令,建立示例表TEST1,建立成功後,插入兩條記錄,具體如清單6所示:

 

- - 清單6 .建立示例表TEST1

 

C:\> db2 connect to db2test1

 

   資料庫連線資訊

 

 資料庫伺服器         = DB2 / NT 9.1.0

 SQL 授權標識         = RHETTE

 本地資料庫別名       = DB2TEST1

 

C:\> DB2 CREATE TABLE TEST1( ID INT , NAME VARCHAR ( 10 ) , NOTE VARCHAR ( 50 ) )

DB20000I  SQL命令成功完成。

 

C:\> DB2 INSERT INTO TEST1 VALUES ( 1 , ' RHETTE ' , ' the first rows ' )

DB20000I  SQL命令成功完成。

 

C:\> DB2 INSERT INTO TEST1 VALUES ( 2 , ' DANIEL ' , ' the second rows ' )

DB20000I  SQL命令成功完成。

 

      

       命令執行成功,這樣我們就建立了示例表TEST1,表中有兩條記錄,下面我們來演示如何對示例資料庫進行聯機全量備份以及利用這個聯機全量備份進行還原操作。

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

相關文章