程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> 在嵌入式數據庫環境中自動化 DB2 9.7 數據庫維護

在嵌入式數據庫環境中自動化 DB2 9.7 數據庫維護

編輯:DB2教程

開始之前

在開始之前,先來看看本文所涵蓋的內容、前提條件和系統要求。

有關本教程

本文的目的是向您展示如何啟用 IBM DB2 9.7 for Linux, UNIX, and Windows 的一些自動特性以及如何自動化一些日常的數據庫維護任務。當在一個虛擬環境內嵌入一個 DB2 數據庫服務器實例時,這些特性和技巧尤其有用。

本教程涵蓋了如下主題:

啟用自動維護

自動數據庫備份和還原

自動統計信息收集

自動重組

啟用對數據庫服務器的靜默更新

啟用自調優內存管理器

啟用自動存儲管理

前提條件

本教程面向的是 IBM DB2 數據庫管理員、應用程序架構師以及開發人員。您應該對使用 UNIX 或 Linux 命令行 shell 安裝和配置 DB2 比較熟悉。

系統要求

要運行本教程中的這些例子,需要一個安裝了 DB2 9.7 的 Linux 或 UNIX 系統。而且還必須對操作系統具有根訪問權限,對 DB2 具有實例所有者的訪問權限。

解壓縮這個工具箱

本教程包括了一個由腳本和策略文件組成的工具箱,可用來啟用和配置本教程中所描述的特性。這些腳本和策略文件均打包在一個名為 embed-bundle.zip 的文件中,這個文件可以從本教程的 下載 部分獲得。

將 embed-bundle.zip 文件復制到運行著 DB2 的目標計算機,以 DB2 實例所有者(比如,db2inst1)的身份登錄到此計算機,並使用清單 1 所示的命令解壓縮此工具箱。

清單 1. 解壓縮 embed-bundle.zip 工具箱的命令

mv embed-bundle.zip /home/db2inst1 
unzip /home/db2inst1/embed-bundle.zip 
chmod +x /home/db2inst1/embed-bundle/*.sh 

注意:這個工具箱是為運行在 Linux 或 UNIX 上的 DB2 9.7 特別開發的。不過,如果您想要將它用於 Windows 上的 DB2 9.7,也是可以的,做稍許修改即可。

此工具箱內有一個文件,名為 create_mydb.db2,它是一個示例 DB2 腳本。這個腳本會創建一個數據庫並修改此數據庫的配置以啟用本教程中討論的自動特性。

自動維護

DB2 數據庫管理器為執行數據庫備份、保持統計信息最新以及在需要的時候重組表和索引提供了自動維護功能。在數據庫上執行維護操作對於確保它們針對性能和可恢復性進行優化非常重要。

決定維護操作是否運行以及何時運行會很耗時。但是,自動維護可以幫助您減輕這方面的負擔。通過使用自動維護數據庫配置參數可簡單而靈活地管理自動維護特性的啟用。使用 Configure Automatic Maintenance 向導,可以指定維護目標。數據庫管理器之後就可以使用這些目標來決定需要執行哪些維護操作,並且在下一個可用的維護窗口期間(時間段由您定義)只運行所需要的那些操作。

自動數據庫備份

DB2 數據庫管理器為執行日常的備份操作提供了自動維護功能,否則,需要耗費數據庫管理員的大量時間和精力。數據庫管理器讓您可以定義一個在線/離線維護進度和備份條件。DB2 之後就可以在需要的時候自動執行備份。這些備份在系統失敗或硬件更新後可用於恢復數據庫。備份對於復制測試或開發環境也非常有用。自動數據庫備份有助於確保數據庫被定期地進行適當的備份。

為數據庫啟用自動備份

本部分介紹了如何為數據庫配置自動備份。在新數據庫上自動備份是默認禁用的。為了啟用數據庫上的自動備份,還需要啟用自動維護。使用清單 2 內所示的命令來更新數據庫配置以啟用自動維護和自動備份。

清單 2. 啟用自動維護和自動備份所需命令

UPDATE DB CFG FOR <dbname> USING AUTO_TBL_MAINT ON; 
UPDATE DB CFG FOR <dbname> USING AUTO_DB_BACKUP ON; 

配置維護窗口策略

對於每個自動維護任務以及每個維護窗口的配置可包含在一個簡單的 XML 文檔內,稱為一個自動維護策略。在 embed-bundle.zip 工具箱內,這個文件的名稱為 DB2MaintenanceWindowPolicy.XML(如清單 3 所示),它定義了一個周一至周五的在線維護窗口和周六及周日晚間的離線維護窗口。

清單 3. DB2MaintenanceWindowPolicy.XML 文件內容

<?XML version="1.0" encoding="UTF-8"?> 
<DB2MaintenanceWindows   xmlns="http://www.ibm.com/XMLns/prod/db2/autonomic/config" > 
 <!-- Online Maintenance Window --> 
 <OnlineWindow Occurrence="During" startTime="00:00:00"      
duration="24" > 
  <DaysOfWeek>Mon Tue Wed Thu Fri</DaysOfWeek> 
  <DaysOfMonth>All</DaysOfMonth> 
  <MonthsOfYear>All</MonthsOfYear> 
 </OnlineWindow> 
 <!-- Offline Maintenance Window --> 
 <OfflineWindow Occurrence="During" startTime="18:00:00" 
duration="12" > 
  <DaysOfWeek>Sat Sun</DaysOfWeek> 
  <DaysOfMonth>All</DaysOfMonth> 
  <MonthsOfYear>All</MonthsOfYear> 
 </OfflineWindow> 
</DB2MaintenanceWindows> 

使用 sysproc.automaint_set_policyfile 存儲過程可以更新這些策略。清單 4 顯示了借助此存儲過程用在 DB2MaintenanceWindowPolicy.XML 文件內指定的參數更新維護窗口策略的一個例子。工具箱的 backupsetup.sh 腳本中使用了相同的命令。若按如下的指導使用這個工具箱腳本,則無需手動運行此命令。

清單 4. 用來設置維護窗口策略的命令

db2 "call sysproc.automaint_set_policyfile 
 ('MAINTENANCE_WINDOW', ‘DB2MaintenanceWindowPolicy.XML')" 

配置自動備份策略

自動備份策略也可包含在一個 XML 文檔內,用來控制執行的是哪種備份(在線或離線)、備份的位置以及備份的條件(自動備份何時 應該考慮采取一次備份)。在此工具箱內,名為 DB2AutoBackupPolicy.XML 的文件(如清單 5 所示)包含了一個自動備份策略。

清單 5. DB2AutoBackupPolicy.XML 文件內容

<?XML version="1.0" encoding="UTF-8"?> 
<DB2AutoBackupPolicy 
 xmlns="http://www.ibm.com/XMLns/prod/db2/autonomic/config" > 
 <BackupOptions mode="Online" > 
 <BackupTarget> 
  <DiskBackupTarget> 
  <PathName>/home/db2inst1/dbname/backupimages/</PathName> 
  </DiskBackupTarget> 
 </BackupTarget> 
 </BackupOptions> 
 <BackupCriteria 
  numberOfFullBackups="1" 
  timeSinceLastBackup="168" 
  logSpaceConsumedSinceLastBackup="1000" /> 
</DB2AutoBackupPolicy> 

清單 6 顯示了一個借助 sysproc.automaint_set_policyfile 存儲過程用在 DB2AutoBackupPolicy.XML 文件內指定的參數設置自動備份策略的例子。 工具箱的 backupsetup.sh 腳本中使用了相同的命令。若按如下的指導使用這個工具箱腳本,則無需手動運行此命令。

清單 6. 用來設置自動備份策略的命令

db2 "call sysproc.automaint_set_policyfile 
 ('AUTO_BACKUP', 'DB2AutoBackupPolicy.XML')" 

設置指導

使用 embed-bundle.zip 工具箱文件按如下步驟設置自動備份:

確保 DB2 在運行。

以 DB2 實例所有者的身份(比如,db2inst1)登錄到目標計算機。

運行 /home/db2inst1/embed-bundle 目錄下的 backupsetup.sh 腳本,如清單 7 所示。

清單 7. 如何使用 backupsetup.sh 腳本

Syntax: 
backupsetup.sh <dbname> 
 
Example: 
./backupsetup.sh mydb 

數據庫還原

DB2 提供了 restore 實用工具,用來在出現問題後重新構建一個數據庫或表空間。可以用不同的映像替換一個數據庫或將備份數據庫還原到新數據庫。RESTORE DATABASE 命令可以將數據庫數據或表空間重建至備份數據庫建成時的狀態。清單 8 顯示了如何使用此命令來還原至最新的備份,清單 9 顯示了如何還原至在某個特定時刻所做的一個備份映像。

清單 8. 從最新的備份還原

Syntax: 
db2 restore db <dbname> from <bakup-image-location> replace existing 
 
Example: 
db2 restore db mydb from /data/mydb/backupimages replace existing 

清單 9. 從在某個給定的時間戳所做的某個備份映像還原

Syntax: 
db2 restore db <dbname> from <bakup-image-location> 
TAKEN AT <time-stamp> replace existing 
 
Example: 
db2 restore db secure from /data/mydb/backupimages/ 
TAKEN AT 20091228092339 replace existing 

自動統計信息收集

具有准確而完整的數據庫統計信息對於高效的數據訪問和最佳的工作負載性能非常關鍵。 DB2 通過其自動表維護功能提供了一種自動統計信息收集的特性,可用來更新和維護相關的數據庫統計信息。

為數據庫啟用自動統計信息收集

為了啟用自動統計信息收集,必須通過將 auto_maint 及 auto_tbl_maint 數據庫配置參數設置為 ON 來配置數據庫的自動維護。之後,可以設置用來定義何時以及想要如何收集這些統計信息的選項,如下所示:

為了啟用 後台統計信息收集,將 auto_runstats 數據庫配置參數設置為 ON。

為了啟用 實時統計信息收集,將 auto_stmt_stats 和 auto_runstats 這兩個數據庫配置參數設置為 ON。

為了啟用 自動統計信息概要文件生成,將 auto_stats_prof 和 auto_prof_upd 這兩個數據庫配置參數設置為 ON。如果 auto_runstats 數據庫配置參數也被設為 ON,那麼統計信息將會由所生成的概要文件自動收集。

清單 10 顯示了為了啟用自動統計信息收集功能設置數據庫配置參數的示例命令。

清單 10. 更新數據庫配置參數來啟用自動統計信息收集所需命令

UPDATE DB CFG FOR <DBNAME> USING AUTO_RUNSTATS ON; 
UPDATE DB CFG FOR <DBNAME> USING AUTO_STATS_PROF ON; 
UPDATE DB CFG FOR <DBNAME> USING AUTO_PROF_UPD ON; 

配置自動 RUNSTATS 策略

可以使用一個 XML 文檔來指定哪個表應該包括以及哪個表不應該包括在自動統計信息收集中。在這個工具箱內,名為 DB2AutoRunstatsPolicy.xml 的文件內包含了一個用來定義過濾條件的樣例文件。正如圖 11 中所示,AutoRunstatsPolicy.XML 內的過濾條件指定了統計信息應該為所有表收集,包括系統表。

清單 11. DB2AutoRunstatsPolicy.XML 文件內的過濾條件

<RunstatsTableScope> 
 <FilterCondition/> 
</RunstatsTableScope> 

清單 12 顯示了借助 sysproc.automaint_set_policyfile 存儲過程用 DB2AutoRunstatsPolicy.XML 文件內指定的參數設置自動 RUNSTATS 策略的一個例子。 工具箱內的 runstatssetup.sh 腳本中使用了相同的命令。若按如下的指導使用這個工具箱腳本,則無需手動運行此命令。

清單 12. 用來設置自動 RUNSTATS 策略的命令

db2 "call sysproc.automaint_set_policyfile('AUTO_RUNSTATS', 'DB2AutoRunstatsPolicy.XML')" 

設置指導

使用 embed-bundle.zip 工具箱文件按如下步驟設置自動 RUNSTATS:

確保 DB2 在運行。

以 DB2 實例所有者身份(比如,db2inst1)登錄到目標計算機。

運行 /home/db2inst1/embed-bundle 目錄下的 runstatssetup.sh 腳本,如清單 13 所示。

清單 13. 如何使用 runstatssetup.sh 腳本

Syntax: 
runstatssetup.sh <dbname> 
 
Example: 
./runstatssetup.sh mydb 

自動的表及索引重組

組織良好的表和索引數據對於高效的數據訪問和最佳的工作負載性能非常關鍵。在進行了很多插入、更新和刪除操作後, 邏輯上連續的表數據可能會處於非連續的數據頁,這會導致數據庫管理器必須要執行額外的讀操作才能訪問數據。當訪問從中刪除了大量數據行的表中的數據時,額外的讀操作也是必須的。可以啟用 DB2 服務器來重組系統目錄表以及用戶表。

由 runstats 實用工具收集的統計信息顯示了數據在表內的分布。對這些數據進行分析可以得知何種重組在何時是必須的。

通過使用 reorgchk 實用工具中的公式,該自動重組過程決定需要對表或索引進行重組。 它會定期地評估已對其統計信息進行了更新的表和索引以查看是否需要重組,並且在需要的時候,安排這些操作。

啟用數據庫的自動重組

為了啟用數據庫的自動重組,將配置參數 auto_maint、 auto_tbl_maint 和 auto_reorg 設為 ON。 清單 14 顯示了用來設置這些數據庫參數以便啟用自動數據庫重組的樣例命令。

清單 14. 啟用自動數據庫重組所需命令

UPDATE DB CFG FOR <DBNAME> USING AUTO_MAINT ON; 
UPDATE DB CFG FOR <DBNAME> USING AUTO_TBL_MAINT ON; 
UPDATE DB CFG FOR <DBNAME> USING AUTO_REORG ON; 

配置自動重組策略

可以使用一個 XML 文檔來指定數據庫的重組策略。在這個工具箱內,名為 DB2AutoReorgPolicy.XML 的文件包含一個樣例策略,可以根據如下條件自動地重組數據庫中的表和索引內的數據:

索引重組在線完成。

系統臨時表空間被用於重組。

系統表不包括在自動重組內。

清單 15 顯示了借助 sysproc.automaint_set_policyfile 存儲過程用在 DB2AutoReorgPolicy.XML 文件內指定的參數為數據庫指定重組策略的一個例子。 包含在這個工具箱內的 reorgsetup.sh 腳本中使用了相同的命令。若按如下的指導使用這個工具箱腳本,則無需手動運行此命令。

清單 15. 設置自動重組所需命令

db2 "call sysproc.automaint_set_policyfile('AUTO_REORG', 'DB2AutoReorgPolicy.XML')" 

設置指導

使用 embed-bundle.zip 工具箱文件按如下步驟設置自動重組:

確保 DB2 在運行。

以 DB2 實例所有者身份(比如,db2inst1)登錄到目標計算機。

運行/home/db2inst1/embed-bundle 目錄下的 reorgsetup.sh 腳本,如清單 16 所示。

清單 16. 如何使用 reorgsetup.sh 腳本

Syntax: 
reorgsetup.sh <dbname> 
 
Example: 
./ reorgsetup.sh mydb 

對 DB2 數據庫服務器進行靜默更新

IBM 會定期地以稱為修復包的可安裝映像的形式發布對 DB2 的更新。

每個修復包映像包含一個命令行實用工具,稱為 installFixPack,可用來靜默更新安裝於某個指定位置處的 DB2 產品。若此實用工具用在任何 UNIX 或 Linux 平台上,那麼安裝路徑上的每個實例都將會被更新成與修復包映像相同的水平。

在安裝 DB2 修復包之前,安裝路徑上的每個實例的數據庫管理器(DBM)都必須停止並且所有 DB2 庫都必須已上載完畢。如果這些先決條件得到滿足,installFixPack 就會安裝這個修復包並且更新安裝路徑上的每個實例和 DB2 管理服務器(DAS)。無需額外的手動更新。

embed-bundle.zip 工具箱包含一個包裝器腳本,稱為 silent_fixpackinstall.sh,可用來停止所有的 DB2 服務,使用 installFixPack 實用工具安裝修復包及靜默更新這個數據庫服務器實例。

下載 DB2 修復包

下載 DB2 修復包的步驟如下:

首先,決定需要安裝哪個修復包。一般而言,IBM 建議安裝最新的的修復包以避免遇到由 IBM 已修正過的軟件缺陷引發的問題。所有的 DB2 修復包是累積的,這意味著應用最新的修復包會自動應用某個 DB2 服務器發布版的之前的那些修復包所帶來的所有修復。

在 DB2 Fix Packs by version for DB2 for Linux, UNIX and Windows 支持頁面上定位想要下載的這個修復包。確保為 DB2 和操作系統的當前版本選擇適當的修復包。

下載這個修復包映像並將其復制到目標計算機。

在目標計算機上解壓縮這個修復包映像。清單 17 顯示了解壓縮該映像的示例命令。

清單 17. 解壓縮該映像的示例命令

gunzip imagefile.tar.gz 
tar -xvf imagefile.tar 

靜默地應用此 DB2 修復包

按照如下步驟靜默地應用此 DB2 修復包:

確保這個修復包已被復制到目標服務器。

以 DB2 實例所有者身份(比如,db2inst1)登錄到目標計算機。

運行 /home/db2inst1/embed-bundle 目錄下的 silent_fixpackinstall.sh 腳本,如清單 18 所示:

清單 18. 如何使用 silent_fixpackinstall.sh 腳本

Syntax: 
silent_fixpackinstall.sh --imagepath=<fixpack_imagepath> --path=<db2dir> 
 
--imagepath=<fixpack_imagepath> 
SpecifIEs the full path to the fix pack image. 
This is the location where the fix pack image is uncompressed. 
This is also the parent directory of the fix pack’s "server" directory. 
 
--path=<db2dir> 
SpecifIEs the path where the DB2 product is installed. 
This is same as the value specifIEd for the DB2DIR environment variable. 
 
Example: 
silent_fixpackinstall.sh --imagepath=/opt/software --path=/opt/ibm/db2/V9.7 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved