DB2 實用程序介紹之數據移動實用程序
db2move
db2move 是用于在 DB2 數據庫之間移動大量表的一個數據移動工具。這個命令中支持的動作有 EXPORT、IMPORT、LOAD 和 COPY。EXPORT、IMPORT 和 LOAD 這幾個動作的行為與前一屏中描述的完全相同。您可能不熟悉的惟一一個動作就是 COPY。它將一個或多個模式中的表復制到一個目標數據庫中。db2move 的語法很簡單:
db2move database_nameactionoptions
db2move 將一組用戶表從系統編目表中提取出來,并將每個表以 PC/IXF 格式導出。然后,PC/IXF 文件可以被導入或裝載到另一個 DB2 數據庫中。
下面是一些例子。這個命令用指定的用戶 ID 和密碼以 REPLACE 模式導入 sample 數據庫中的所有表:
db2move sample IMPORT -io REPLACE -u userid -p password
下面的命令以 REPLACE 模式裝載 db2admin 和 db2user 這兩個模式下的所有表:
db2move sample LOAD -sn db2admin,db2user -lo REPLACE
請參考 Command Reference,以獲得所有選項的完整列表和相關描述。不過,COPY 動作值得一談。在 COPY 動作中,可以用 -sn 選項指定一個或多個模式。只有具有 -sn 選項中指定的模式名的表才被復制(通過導出)。如果指定多個模式名,則使用逗號將它們隔開,這里不允許使用空格。請參考下面的例子。
db2move sample COPY -sn db2inst1,prodschema -co TARGET_DB acctdb USER peterUSING petepasswd DDL_AND_LOAD
上面的 db2move 命令復制 db2inst1 和 prodschema 模式下受支持的對象。后面跟著的 -co 選項使這個命令更加有趣。TARGET_DB 選項指定這些模式將被復制到的目標數據庫。當指定了 COPY 動作時,這個選項是強制性的。此外,目標數據庫必須不同于源數據庫。當連接到目標數據庫時,可以通過 USER 和 USING 選項提供用戶名和密碼。
默認情況下,db2move 命令將根據源模式創建受支持的對象,并填充目標數據庫中的表。這是 DDL_AND_LOAD 模式的行為。有兩種可用的模式:DDL_ONLY 和 LOAD_ONLY。顧名思義,DDL_ONLY 只根據源模式創建所有受支持的對象,而 LOAD_ONLY 則將所有指定的表從源數據庫裝載到目標數據庫。注意,當使用這個選項時,那些表必須已經存在于目標數據庫中。
在將對象復制到目標數據庫時,可能需要重新命名模式。可以使用 SCHEMA_MAP 選項來實現這個目的。您只需提供一個或多個模式映射對,就像下面這樣:
SCHEMA_MAP ((source_schema1,target_schema1),(source_schema2,target_schema2))
在使用 SCHEMA_MAP 選項時要特別小心。只有對象本身的模式被重命名,而對象主體中的對象仍保持不變。例如:
CREATE VIEW FOO.v1 AS 'SELECT c1 FROM FOO.T1'
將模式從 FOO 重命名為 BAR 將導致:
CREATE VIEW BAR.v1 AS 'SELECT c1 FROM FOO.T1'
如果 FOO.T1 沒有定義,那么目標數據庫中就不能成功地創建 BAR.v1。
這樣的映射思想同樣適用于表空間。例如,假設您想將復制的表存儲在與源數據庫不同的一個表空間中。那么需要擴展 db2move 命令,以便指定表空間名稱映射。考慮下面的選項:
TABLESPACE_MAP ((TS1,TS2),(TS2,TS3),SYS_ANY)
上面的表空間名稱映射表明,源 TS1 被映射到目標 TS2,源 TS2 被映射到目標 TS3。SYS_ANY 表明剩下的表空間將使用數據庫管理器根據表空間選擇算法選擇的表空間。讓我們來看一個綜合性的例子。
db2move sample COPY -sn db2inst1,prodschema-co TARGET_DB acctdb USER peter USING petepasswd LOAD_ONLYSCHEMA_MAP ((db2inst1,db2inst2),(prodschema,devschema))TABLESPACE_MAP SYS_ANYNONRECOVERABLE
這個命令將 db2inst1 和 prodschema 中受支持的對象從 SAMPLE 數據庫復制到 ACCTDB 數據庫。授權 id peter 和相關的密碼用于連接到 ACCTDB。目標表已經存在于 ACCTDB 中,這些表將被重新填充。db2inst1 和 prodschema 模式下的所有對象現在分別在 db2inst2 和 devschema 模式下。最后不使用 SAMPLE 數據庫中定義的表空間名稱,而是使用 ACCTDB 中默認的表空間。
NONRECOVERABLE 選項允許用戶在復制完成之后立即使用裝載的目標表空間。這里不要求備份表空間,但是強烈建議在早期方便的時候作一個備份。
db2look
db2look 是可以從命令行提示符下和 Control Center 中調用的一個方便的工具。這個工具可以:
從數據庫對象中提取數據庫定義語言(DDL)語句。 生成 UPDATE 語句,用于更新數據庫管理器和數據庫配置參數。 生成 db2set 命令,用于設置 DB2 概要注冊表。 提取和生成數據庫統計報告。 生成 UPDATE 語句,用于復制關于數據庫對象的統計信息。LOAD 之類的實用程序要求目標表已經存在。您可以使用 db2look 提取表的 DDL,在目標數據庫上運行它,然后調用裝載操作。db2look 非常容易使用,下面的例子展示了這一點。這個命令生成 peter 在數據庫 department 中創建的所有對象的 DDL,輸出被存儲在 alltables.sql 中。
db2look -d department -u peter -e -o alltables.sql
下面的命令生成:
數據庫 department 中所有對象的 DDL(由 -d、-a 和 -e 選項指定)。 UPDATE 語句,用于復制數據庫中所有表和索引的統計信息(由選項 -m 指定)。 GRANT 授權語句(由選項 -x 指定)。 用于數據庫管理器和數據庫配置參數的 UPDATE 語句和用于概要注冊表的 db2set 命令(由選項 -f 指定)。db2look -d department -a -e -m -x -f -o db2look.sql
db2look 還可以生成用于注冊 XML 模式的命令。下面的例子生成模式名為 db2inst1 的對象所需的 REGISTER XMLSCHEMA 和 COMPLETE XMLSCHEMA 命令(由選項 -xs 指定)。/home/db2inst1 中將創建輸出 db2look.sql,這個目錄由 -xdir 選項指定。
db2look -d department -z db2inst1 -xs -xdir /home/db2inst1 -o db2look.sql
db2batch
基準測試是從各種不同方面(例如數據庫響應時間、cpu 和內存使用情況)對應用程序進行評測的一個過程。基準測試基于一個可重復的環境,以便能夠在相同的條件下運行相同的測試。之后,對測試收集到的結果可以進行評估和比較。
db2batch 是一種基準測試工具,它以一組 SQL 和/或 XQuery 語句作為輸入,動態地準備語句和描述語句,并返回一個結果集。取決于 db2batch 命令中所使用的選項,結果集可以返回這些語句的執行時間、關于內存使用情況(例如緩沖池)的數據庫管理器快照和緩存信息。
可以在一個 flat 文件或標準輸入中指定要運行基準測試的語句。在輸入文件中可以設置很多控制選項。指定這些選項的語法是:--#SET control_option value 。下面是包含控制選項的一個輸入文件的例子。要獲得控制選項的完整列表,請參考 Information Center。
-- db2batch.sql-- --------------#SET PERF_DETAIL 3--#SET ROWS_OUT 5
-- This query lists employees, the name of their department-- and the number of activities to which they are assigned for-- employees who are assigned to more than one activity less than-- full-time.--#COMMENT Query 1select lastname, firstnme, deptname, count(*) as num_actfrom employee, department, emp_actwhere employee.workdept = department.deptno and employee.empno = emp_act.empno and emp_act.emptime < 1group by lastname, firstnme, deptnamehaving count(*) > 2;--#SET PERF_DETAIL 1--#SET ROWS_OUT 5
--#COMMENT Query 2select lastname, firstnme, deptname, count(*) as num_actfrom employee, department, emp_actwhere employee.workdept = department.deptno and employee.empno = emp_act.empno and emp_act.emptime < 1group by lastname, firstnme, deptnamehaving count(*) <= 2
選項 PERF_DETAIL 3 意味著將返回關于花費的時間和數據庫管理器、數據庫及應用程序的快照這些性能方面的細節。 選項 ROWS_OUT 5 意味著無論查詢返回的實際行數是多少,只從結果集中取 5 行。 COMMENT Query1 將語句命名為 Query1。下面的命令在 SAMPLE 數據庫上調用基準測試工具,輸入文件為 db2batch.sql。
db2batch -d sample -f db2batch.sql
這個命令將返回查詢的結果集(限 5 行)和查詢所花費的時間及 CPU 時間。另外還返回數據庫管理器、數據庫和應用程序快照。由于輸出很大,因此這里只顯示 db2batch 命令的概要。
* Summary Table:
Type;;;Number;;;Repetitions Total Time (s) Min Time (s)...--------- ----------- ----------- -------------- -------------- Statement11;;;;0.052655;;;;0.052655 ...Statement21;;;;0.004518;;;;0.004518 ...
...Max Time (s)Arithmetic Mean Geometric Mean Row(s) Fetched Row(s) Output -------------- --------------- -------------- -------------- ------------- ...;;;0.052655;;;;;0.052655;;;;0.052655;;;5;;5 ...;;;0.004518;;;;;0.004518;;;;0.004518;;;8;;5
* Total Entries:;;;2;;;;* Total Time: 0.057173 seconds* Minimum Time:;;;;0.004518 seconds* Maximum Time:;;;;0.052655 seconds* Arithmetic Mean Time:;;;;0.028587 seconds* Geometric Mean Time:;;;;;0.015424 seconds;
db2batch 命令支持很多選項。這里只列出其中一些選項,讓您對這個工具的威力有所了解。
-m parameter_file 用參數值指定用于綁定到 SQL 語句參數占位符的一個輸入文件。 -r result_file 指定存放命令結果的輸出文件。 -i short|long|complete 指定從哪個方面測量所花費的時間。short 測量運行每條語句所花費的時間。long 測量運行每條語句所花費的時間,包括語句之間的開銷。complete 測量運行每條語句所花費的時間,分別報告準備、執行和取數據的時間。 -iso 指定語句使用的隔離級別。默認情況下,db2batch 使用 Repeatable Read 隔離級別。
