##db2move
db2move 是一個數據移動工具,可以用來在 DB2 數據庫之間移動大量的表。該命令中支持的操作有 EXPORT、IMPORT 和 LOAD。
db2move 的語法可以象下面那樣簡單:
db2move database_name action options
該工具先從系統目錄表中抽取用戶表列表,接著以 PC/IXF 格式導出每個表。然後,可以將這些 PC/IXF 文件導入或裝入到另一個
DB2 數據庫。
以下是一些示例。下面這條命令用指定的用戶標識和密碼以 REPLACE 方式導入 sample 數據庫中的所有表:
db2move sample import -io replace -u userid -p password
而下面這條命令則以 REPLACE 方式裝入 db2admin 和 db2user 模式下的所有表:
db2move sample load -sn db2admin, db2user -lo REPLACE
##db2look 是一個方便的工具,可以從命令提示符或控制中心對其進行調用。該工具可以:
從數據庫對象抽取數據庫定義語言(DDL)語句
生成 UPDATE 語句來更新數據庫管理器和數據庫配置參數
生成 db2set 命令來設置 DB2 概要文件注冊表
抽取和生成數據庫統計報告
生成 UPDATE 語句來復制有關數據庫對象的統計信息
類似 LOAD 的實用程序都要求存在目標表。您可以使用 db2look 來抽取表的 DDL,對目標數據庫運行該 DLL,然後調用裝入操作。如同下面
的示例所演示的那樣,db2look 使用起來非常方便。下面這條命令為(來自數據庫 department 的)peter 所創建的所有對象生成 DDL 語句,
同時將輸出存儲在 alltables.sql 中。
db2look -d department -u peter -e -o alltables.sql
接下來這條命令生成:
數據庫 department 中所有對象的 DLL(由選項 -d、-a 和 -e 指定)。
復制數據庫中所有表和索引的統計信息的 UPDATE 語句(由選項 -m 指定)。
GRANT 授權語句(由選項 -x 指定)。
用於數據庫管理器和數據庫配置參數的 UPDATE 語句,以及用於概要文件注冊表的 db2set 命令(由選項 -f 指定)。
db2look -d department -a -e -m -x -f -o db2look.sql
##RUNSTATS 實用程序
DB2 利用一個完善的、基於成本的優化器來確定如何訪問數據。其決策在很大程度上受到了一些統計信息的影響,這些統計信息是關於數據庫
表和索引的大小的。因此,要時刻使數據庫統計信息保持最新狀態,以便能夠選擇有效的數據存取方案,這一點十分重要。RUNSTATS 實用程
序用於更新表的物理特征及其相關索引的統計信息。這些特征包括記錄數(基數)、頁數和平均記錄長度等。
讓我們用一些示例來演示此實用程序的用法。下面的命令收集表 db2user.employee 的統計信息。在計算統計信息期間允許閱讀器和記錄器訪
問該表:
RUNSTATS ON TABLE db2user.employee ALLOW WRITE ACCESS
以下命令用分布式統計收集表 db2user.employee 以及列 empid 和 empname 的統計信息。在此命令運行期間,該表只能用於只讀請求。
RUNSTATS ON TABLE db2user.employee WITH DISTRIBUTION ON COLUMNS ( empid, empname )
ALLOW READ ACCESS
以下命令收集表 db2user.employee 的統計信息及其全部索引的詳細統計信息:
RUNSTATS ON TABLE db2user.employee AND DETAILED INDEXES ALL
##REORG 和 REORGCHK 實用程序
從數據庫增刪的數據在物理上可能並不是按順序放置的。在這種情況下,DB2 必須執行額外的讀操作來訪問數據。通常,這意味著需要更多的
磁盤 I/O 操作,而我們都知道進行這類操作的代價是昂貴的。在這種情況下,您應該考慮根據索引對表進行物理上的重組,以便相關數據相
互之間靠得更近一些,從而盡可能地減少 I/O 操作。
REORG 是一個為表和/或索引重組數據的實用程序。雖然在物理上對數據進行了重新安排,但 DB2 卻提供了聯機或脫機執行該操作的選項。
在缺省情況下,脫機 REORG 允許其他用戶讀取該表。您可以通過指定 ALLOW NO ACCESS 選項來限制表訪問。聯機 REORG(也稱為現場 REORG)
不支持對表的讀訪問或寫訪問。由於重新安排了數據頁,因此並發應用程序可能必須等待 REORG 完成當前頁。您可以使用適當的選項來輕松
地停止、暫停或重新開始重組過程:
下面的示例都是非常容易看懂的:
REORG TABLE db2user.employee INDEX db2user.idxemp INPLACE ALLOW WRITE ACCESS
REORG TABLE db2user.employee INDEX db2user.idxemp INPLACE PAUSE
REORGCHK 是另一個數據維護實用程序,它有一個選項可以用來檢索當前的數據庫統計信息或更新數據庫統計信息。它還會生成帶有 REORG
指示符的統計信息報告。REORGCHK 根據統計規則在需要 REORG 的地方用星號(*)標記表或索引。
讓我們考慮一些示例。下面這條命令生成當前(關於運行時授權標識擁有的全部表的)統計信息的報告:
REORGCHK CURRENT STATISTICS ON TABLE USER
下面的命令更新統計信息,然後生成在模式 smith 下創建的全部表的報告:
REORGCHK UPDATE STATISTICS ON SCHEMA smith
##REBIND 實用程序和 FLUSH PACKAGE CACHE 命令
在執行數據庫應用程序或任何 SQL 語句之前,必須先由 DB2 對它們進行預編譯,並生成一個包。包是一種數據庫對象,其中含有應用程序
源文件中所使用的已編譯 SQL 語句。DB2 使用該包來訪問 SQL 語句中引用的數據。DB2 優化器如何為這些包選擇數據存取方案呢?它依靠
包創建時的數據庫統計信息。
對於靜態 SQL 語句,包在編譯時創建,並且被綁定到數據庫上。如果對統計信息進行了更新,以反映物理數據庫特征,那麼也應該更新現有
的包。REBIND 實用程序允許您重新創建包,以便可以利用當前的數據庫統計信息。命令十分簡單:
REBIND PACKAGE package_name
不過,如果您要更改應用程序源代碼,那麼就得顯式地刪除現有的相關包,然後重新創建包。REBIND 實用程序不用於這一目的。這裡,
我們之所以就此對您加以提醒,是因為 DBA 經常誤解了 REBIND 的用法。
對於動態 SQL 語句,它們是在運行時預編譯的,而且被存儲在包高速緩存中。如果更新了統計信息,那麼您可能會刷新高速緩存,以便
重新編譯動態 SQL 語句,從而獲取更新的統計信息。命令類似下面的樣子:
FLUSH PACKAGE CACHE DYNAMIC
##數據庫維護過程
RUNSTATS -- REORGCHK--YES--REORG
| |
| |
NO |----- RUNSTATS
|----|---------|
REBIND FLUSH PACKAGE CACHE
| |
APPLICATION EXECUTION
##DB2性能顧問程序
1,圖形化工具CONFIGURATION ADVISOR
2,CLP AUTOCONFIGURE USING mem_percent 60 workload_type complex num_stmts 20 APPLY DB AND DBM
##DB2 設計顧問程序
設計顧問程序可以幫您找到 SQL 語句的最佳索引。它使用 DB2 優化器、數據庫統計信息和解釋(Explain)
機制來為特定查詢或一組 SQL 語句(也稱為工作負載)生成推薦索引。您可以從命令行用 db2advis 加上必要的輸入啟動該顧問程序。
下面的示例使用輸入文件
input.sql 對 sample 數據庫執行設計顧問程序,該輸入文件含有一組 SQL 語句。然後將輸出存儲在 output.out 中。
db2advis -d sample -i input.sql -o output.out
圖形化工具:desigen Advisor
### 備份與恢復
##數據庫恢復概念
系統故障,事務故障,介質故障,災難。
#恢復策略
問題:可以再次從另一個來源裝入數據嗎?能夠承受丟失多少數據?
能化多少時間來恢復數據庫?哪些存儲資源可用於存儲備份和日志?
#恢復類型
崩潰恢復(系統崩潰,DB2重新啟動執行回滾),版本恢復(使用從BACKUP命令
獲取的備份中恢復先前的數據庫版本),前滾恢復(通過使用完全數據庫備份,結合
日志文件來擴展版本恢復,要求使用歸檔日志記錄)
db2采用先寫日志後寫磁盤數據庫的方式。
#主日志文件和輔助日志文件
主日志文件是在首次數據庫連接時或數據庫激活時直接分配的。輔助日志文件需要時每次動態地分配一個。
有幾個與日志記錄相關的數據庫配置參數。其中一些參數是:
LOGPRIMARY:該參數確定要分配的主日志文件數。
LOGSECOND:該參數確定可分配的輔助日志文件的最大數目。(最大254)
LOGFILSIZ:該參數用於指定日志文件的大小(用 4 KB 頁為單位)。
讓我們考慮一個示例。假設數據庫配置文件中有下列值:
Log file size (4 KB) &nb