IBM 的 DB2 V9 引入了自動維護功能,即自動數據庫備份、自動統計信息更新以及在必要時重組表和索引。DB2 V9 推出了自動備份功能,自動數據庫備份功能為用戶提供了一個解決方案,從而幫助用戶確保定期正確地對他們的數據庫進行備份,而不必擔心何時進行備份,也不需要具有有關備份命令的任何知識。另外,DB2 V9 的自動維護功能還包括數據訪問優化(運行統計)、數據碎片整理(表或索引重組)和統計信息概要分析等功能,基於這些新的特性,將大大簡化我們在實際維護數據庫過程中的工作量。由於自動維護是 DB2 V9 的新特性,很多客戶不知道該如何使用,本文將重點介紹 DB2 V9 關於自動維護方面的新特性,並結合實際的例子幫助大家理解和提高。
啟用自動備份功能
由於大量發生硬件或軟件故障,數據庫可能會變得不可用。自動數據庫備份功能減輕了 DBA 的數據庫備份管理任務,它始終會確保在需要時對數據庫執行最新的完全備份,需要注意的是,自動備份是完全備份,不是增量備份或差異備份。
我們接下來對第 1 部分清單 1 中創建的示例數據庫 DB2TEST1 啟用自動備份功能,在 DB2CLP 窗口環境中 ,連接上示例數據庫 DB2TEST1,通過發出 UPDATE DB CFG 命令修改自動數據庫備份 (AUTO_DB_BACKUP) 參數,將其值置為 ON,具體如清單 1 所示:
清單 1. 修改示例數據庫 DB2TEST1 參數
C:> db2 connect to db2test1
數據庫連接信息
數據庫服務器 = DB2 / NT 9.1.0
SQL 授權標識 = RHETTE
本地數據庫別名 = DB2TEST1
C:> db2 update db cfg using AUTO_DB_BACKUP on
DB20000I UPDATE DATABASE CONFIGURATION命令成功完成。
命令執行成功後,我們再次查看示例數據庫的配置參數,發現自動數據庫備份( AUTO_DB_BACKUP )已經被修改成 ON 了,至此,我們打開了自動數據庫備份功能(另一個重要開關 AUTO_MAINT 在創建數據庫的時候已經默認打開了) 。注意,我們此時使用的是循環日志,LOGARCHMETH1 參數處於 OFF 狀態,查看示例數據庫參數的詳細情況具體如清單 2 所示:
清單 2. 查看示例數據庫 DB2TEST1 參數
C:> db2 get db cfg for db2test1
數據庫 db2test1 的數據庫配置
數據庫配置發行版級別 = 0x0b00
數據庫發行版級別 = 0x0b00
數據庫地域 = CN
數據庫代碼頁 = 1386
數據庫代碼集 = GBK
數據庫國家/地區代碼 = 86
數據庫整理順序 = UNIQUE
備用整理順序 ( ALT_COLLATE ) =
數據庫頁大小 = 4096
. . . . . . . . . . . . . . . . . . . .
第一個日志歸檔方法 ( LOGARCHMETH1 ) = OFF
logarchmeth1 的選項 ( LOGARCHOPT1 ) =
第二個日志歸檔方法 ( LOGARCHMETH2 ) = OFF
logarchmeth2 的選項 ( LOGARCHOPT2 ) =
故障轉移日志歸檔路徑 ( FAILARCHPATH ) =
錯誤時重試日志歸檔次數 ( NUMARCHRETRY ) = 5
日志歸檔重試延遲(秒)( ARCHRETRYDELAY ) = 20
供應商選項 ( VENDOROPT ) =
. . . . . . . . . . . . . . . . . . . .
自動維護 ( AUTO_MAINT ) = ON
自動數據庫備份 ( AUTO_DB_BACKUP ) = ON
自動表維護 ( AUTO_TBL_MAINT ) = ON
自動 runstats ( AUTO_RUNSTATS ) = ON
自動統計信息概要分析 ( AUTO_STATS_PROF ) = OFF
自動概要文件更新 ( AUTO_PROF_UPD ) = OFF
自動重組 ( AUTO_REORG ) = OFF
也可以使用圖形化界面啟用自動備份數據庫功能,在控制中心在示例數據庫DB2TEST1上右鍵單擊,選擇自動維護窗口, 打開,在第五個頁面“選擇要配置的維護活動”頁面中對“備份數據庫(BACKUP)”這條記錄中的“自動化”列打上勾即可,具體界面如圖6所示:
圖 1. 配置自動維護窗口選擇配置的維護活動頁面
雙擊“備份數據庫(BACKUP)”記錄,或者選中這條記錄並單擊頁面下面的“配置設置”按鈕,就會打開“配置設置-備份數據庫(BACKUP)”窗口,在其第一個標簽頁“備份條件”中,可以指定用於確定此數據庫上合適需要進行備份的條件,需要注意的是,如果數據庫從未備份過,則一旦有機會就將執行備份。可選的條件有:
優化數據庫可恢復性(更頻繁地備份):兩次備份之間的最大時間間隔 1 天
平衡數據庫可恢復性和性能:兩次備份之間的最大時間間隔1周
優化數據庫性能(不太頻繁地備份):兩次備份之間的最大時間間隔 1 個月
定制:時間需要自己選
具體界面如圖 2 所示:
圖 2. 配置設置-備份數據庫(BACKUP)窗口
在“配置設置-備份數據庫(BACKUP)”窗口,在其第二個標簽頁“備份位置”中,可以指定要存儲備份映像的介質類型及其關聯選擇,注意,如果選擇了備份至磁盤,則自動備份功能部件將定期從“配置自動維護”向導中指定的目錄中刪除備份映像。只能保證在任何給定時間都可以提供最新的備份映像。建議將此目錄專用於自動備份功能部件,而不用來存儲其他備份映像。具體界面如圖8所示:
圖 3. 配置設置-備份數據庫(BACKUP)窗口
在“配置設置-備份數據庫(BACKUP)”窗口,在其第三個標簽頁“備份方式”中,可以指定是想執行聯機備份還是脫機備份,具體頁面如圖9所示:
圖 4. 配置設置-備份數據庫(BACKUP)窗口
循環日志方式下的配置自動維護窗口的其他頁面和第一部分“創建數據庫期間缺省啟用自動收集統計信息功能”中所述差不多,不再累述。
下面我們來看一下示例數據庫采用歸檔日志方式下配置自動備份的條件和循環日志方式下有什麼不同的情況(我們接著上面所述進行,即自動數據庫備份(AUTO_DB_BACKUP)參數已經被設置成ON),在DB2CLP窗口環境中,把LOGARCHMETH1參數設置成LOGRETAIN,具體如清單5所示。
清單 3. 更改數據庫參數
C:> db2 connect to db2test1
數據庫連接信息
數據庫服務器 = DB2 / NT 9.1.0
SQL 授權標識 = RHETTE
本地數據庫別名 = DB2TEST1
C:> db2 UPDATE DATABASE CONFIGURATION USING LOGARCHMETH1 LOGRETAIN IMMEDIATE
DB20000I UPDATE DATABASE CONFIGURATION命令成功完成。
SQL1363W 為立即修改而提交的一個或多個參數未動態更改。對於這些配置參數,
必須在所有應用程序都與此數據庫斷開連接之後,更改才會生效。
建議大家使用LOGARCHMETH1,此參數指定已歸檔日志的主要目標的介質類型,不要繼續使用 LOGRETAIN 或 USEREXIT 參數。LOGARCHMETH1 參數缺省值為 OFF,取值范圍可以是 LOGRETAIN、 USEREXIT、 DISK、TSM 或 VENDOR,各自的含義如下:
OFF
指定不使用日志歸檔方法。如果 LOGARCHMETH1 和 LOGARCHMETH2 都設置為 OFF,那麼認為數據庫正在使用循環日志記錄,且不可前滾恢復。這是缺省值。
LOGRETAIN
此值僅可用於 LOGARCHMETH1,且等價於將 LOGRETAIN 配置參數設置為 RECOVERY。 如果指定此值,將自動更新 LOGRETAIN 配置參數。
USEREXIT
此值僅對 LOGARCHMETH1 有效,且等價於將 USEREXIT 配置參數設置為 ON。如果指定此值,將自動更新 USEREXIT 配置參數。
DISK
此值後必須緊跟冒號(:),然後是現有標准路徑名,日志文件將在其中歸檔。例如,如果將 LOGARCHMETH1 設置為 DISK:/U/DBUSER/ARCHIVED_LOGS,那麼將歸檔日志文件放入名為 /U/DBUSER/ARCHIVED_LOGS的目錄。
注: 如果正在歸檔至磁帶,可以使用 DB2TAPEMGR 實用程序來存儲和檢索日志文件。
TSM
如果指定不帶任何附加配置參數,此值指示應該使用缺省管理類,將日志文件歸檔在本地 TSM 服務器上。如果此值後緊跟冒號(:)和 TSM 管理類,那麼使用指定的管理類來歸檔日志文件。
VENDOR
指定將使用供應商庫來歸檔日志文件。此值後必須緊跟冒號(:)和庫的名稱。庫中提供的 API 必須使用備份並復原供應商產品的 API。
注: 如果將 LOGARCHMETH1 或LOGARCHMETH2設置為 OFF 以外的值,那麼必須配置數據庫以進行前滾恢復。
如果更新 USEREXIT 或 LOGRETAIN 配置參數,將自動更新 LOGARCHMETH1,反之亦然。然而,如果您要使用 USEREXIT 或 LOGRETAIN, 必須將LOGARCHMETH2設置為 OFF。
更改成功後,此時你執行如下清單 4 所示命令:
清單 4. 斷開示例數據庫 DB2TEST1 所有應用程序連接
C:> db2 force applications all
DB20000I FORCE APPLICATION命令成功完成。
DB21024I 該命令為異步的,可能不會立即生效。
命令成功後,用LIST APPLICATIONS看所有應用程序是否都斷開了,如果沒有斷開,再重復執行FORCE APPLICATIONS ALL,保證斷開後,把數據庫做一次全備,具體如清單7所示。
清單 5. 備份數據庫
C:> db2 backup db db2test1
備份成功。此備份映像的時間戳記是:20070923163536
命令執行成功後,在DB2CLP窗口中連接上數據庫,發出GET DB CFG命令,我們再次查看示例數據庫的配置參數,發現第一個日志歸檔方法(LOGARCHMETH1)已經被修改成LOGRETAIN了,至此,我們啟用了歸檔日志方式 。查看示例數據庫參數的詳細情況具體如清單8所示:
清單 6. 查看示例數據庫 DB2TEST1 參數
C:> db2 connect to db2test1
數據庫連接信息
數據庫服務器 = DB2 / NT 9.1.0
SQL 授權標識 = RHETTE
本地數據庫別名 = DB2TEST1
C:> db2 get db cfg for db2test1
數據庫 db2test1 的數據庫配置
數據庫配置發行版級別 = 0x0b00
數據庫發行版級別 = 0x0b00
數據庫地域 = CN
數據庫代碼頁 = 1386
數據庫代碼集 = GBK
數據庫國家/地區代碼 = 86
數據庫整理順序 = UNIQUE
備用整理順序 ( ALT_COLLATE ) =
數據庫頁大小 = 4096
. . . . . . . . . . . . . . . . . . . .
日志文件大小(4KB) ( LOGFILSIZ ) = 1024
主日志文件的數目 ( LOGPRIMARY ) = 13
輔助日志文件的數目 ( LOGSECOND ) = 4
已更改的至日志文件的路徑 ( NEWLOGPATH ) =
日志文件路徑 = C:DB2NODE0000SQL00004SQLOGDIR
溢出日志路徑 ( OVERFLOWLOGPATH ) =
鏡像日志路徑 ( IRRORLOGPATH ) =
首個活動日志文件 = S0000000.LOG
磁盤上已滿的塊日志 ( LK_LOG_DSK_FUL ) = NO
事務使用的最大主日志空間的百分比 ( AX_LOG ) = 0
1 個活動 UOW 的活動日志文件的數目 ( UM_LOG_SPAN ) = 0
組落實計數 ( INCOMMIT ) = 1
軟檢查點前回收的日志文件的百分比 ( OFTMAX ) = 520
啟用的恢復的日志保留 ( LOGRETAIN ) = RECOVERY
啟用的日志記錄的用戶出口 ( SEREXIT ) = OFF
. . . . . . . . . . . . . . . . . . . .
第一個日志歸檔方法 ( LGARCHMETH1 ) = LOGRETAIN
logarchmeth1 的選項 ( LOGARCHOPT1 ) =
第二個日志歸檔方法 ( LOGARCHMETH2 ) = OFF
logarchmeth2 的選項 ( LOGARCHOPT2 ) =
故障轉移日志歸檔路徑 ( FAILARCHPATH ) =
錯誤時重試日志歸檔次數 ( NUMARCHRETRY ) = 5
日志歸檔重試延遲(秒) ( ARCHRETRYDELAY ) = 20
供應商選項 ( VENDOROPT ) =
. . . . . . . . . . . . . . . . . . . .
自動維護 ( AUTO_MAINT ) = ON
自動數據庫備份 ( AUTO_DB_BACKUP ) = ON
自動表維護 ( AUTO_TBL_MAINT ) = ON
自動 runstats ( AUTO_RUNSTATS ) = ON
自動統計信息概要分析 ( AUTO_STATS_PROF ) = OFF
自動概要文件更新 ( AUTO_PROF_UPD ) = OFF
自動重組 ( AUTO_REORG ) = OFF
此時我們在控制中心在示例數據庫DB2TEST1上右鍵單擊,選擇自動維護窗口, 打開,在第五個頁面“選擇要配置的維護活動”頁面中對“備份數據庫(BACKUP)”這條記錄中的“自動化”列打上勾即可,注意,另一個列“已使用的維護窗口”默認值此時已經是“聯機”,和我們使用循環日志的時候不一樣,循環日志方式下此列的默認值是“脫機”,具體界面如圖10所示:
圖 5. 配置自動維護窗口選擇配置的維護活動頁面
接下來雙擊“備份數據庫(BACKUP)”記錄,或者選中這條記錄並單擊頁面下面的“配置設置”按鈕,就會打開“配置設置-備份數據庫(BACKUP)”窗口,在其第一個標簽頁“備份條件”中,可以指定用於確定此數據庫上合適需要進行備份的條件,需要注意的是,如果數據庫從未備份過,則一旦有機會就將執行備份。其實,你已經發現了,歸檔日志方式下的自動維護窗口備份條件,多了兩次備份之間已經使用的最大日志空間選項。可選的條件有:
優化數據庫可恢復性(更頻繁地備份):兩次備份之間的最大時間間隔1天,備份之間使用的最大日志空間10MB
平衡數據庫可恢復性和性能:兩次備份之間的最大時間間隔1周,備份之間使用的最大日志空間25MB
優化數據庫性能(不太頻繁地備份):兩次備份之間的最大時間間隔1個月,備份之間使用的最大日志空間50MB
定制:兩次備份之間的最大時間間隔和備份之間使用的最大日志空間自己定制
具體界面如圖11所示:
圖 6. 配置設置-備份數據庫(BACKUP)窗口
歸檔日志方式下的配置自動維護窗口的其他頁面和上面所述的循環日志方式下差不多,不再累述。