DB2 實(shí)用程序介紹之?dāng)?shù)據(jù)移動(dòng)實(shí)用程序
db2move
db2move 是用于在 DB2 數(shù)據(jù)庫(kù)之間移動(dòng)大量表的一個(gè)數(shù)據(jù)移動(dòng)工具。這個(gè)命令中支持的動(dòng)作有 EXPORT、IMPORT、LOAD 和 COPY。EXPORT、IMPORT 和 LOAD 這幾個(gè)動(dòng)作的行為與前一屏中描述的完全相同。您可能不熟悉的惟一一個(gè)動(dòng)作就是 COPY。它將一個(gè)或多個(gè)模式中的表復(fù)制到一個(gè)目標(biāo)數(shù)據(jù)庫(kù)中。db2move 的語(yǔ)法很簡(jiǎn)單:
db2move database_nameactionoptions
db2move 將一組用戶表從系統(tǒng)編目表中提取出來(lái),并將每個(gè)表以 PC/IXF 格式導(dǎo)出。然后,PC/IXF 文件可以被導(dǎo)入或裝載到另一個(gè) DB2 數(shù)據(jù)庫(kù)中。
下面是一些例子。這個(gè)命令用指定的用戶 ID 和密碼以 REPLACE 模式導(dǎo)入 sample 數(shù)據(jù)庫(kù)中的所有表:
db2move sample IMPORT -io REPLACE -u userid -p password
下面的命令以 REPLACE 模式裝載 db2admin 和 db2user 這兩個(gè)模式下的所有表:
db2move sample LOAD -sn db2admin,db2user -lo REPLACE
請(qǐng)參考 Command Reference,以獲得所有選項(xiàng)的完整列表和相關(guān)描述。不過(guò),COPY 動(dòng)作值得一談。在 COPY 動(dòng)作中,可以用 -sn 選項(xiàng)指定一個(gè)或多個(gè)模式。只有具有 -sn 選項(xiàng)中指定的模式名的表才被復(fù)制(通過(guò)導(dǎo)出)。如果指定多個(gè)模式名,則使用逗號(hào)將它們隔開(kāi),這里不允許使用空格。請(qǐng)參考下面的例子。
db2move sample COPY -sn db2inst1,prodschema -co TARGET_DB acctdb USER peterUSING petepasswd DDL_AND_LOAD
上面的 db2move 命令復(fù)制 db2inst1 和 prodschema 模式下受支持的對(duì)象。后面跟著的 -co 選項(xiàng)使這個(gè)命令更加有趣。TARGET_DB 選項(xiàng)指定這些模式將被復(fù)制到的目標(biāo)數(shù)據(jù)庫(kù)。當(dāng)指定了 COPY 動(dòng)作時(shí),這個(gè)選項(xiàng)是強(qiáng)制性的。此外,目標(biāo)數(shù)據(jù)庫(kù)必須不同于源數(shù)據(jù)庫(kù)。當(dāng)連接到目標(biāo)數(shù)據(jù)庫(kù)時(shí),可以通過(guò) USER 和 USING 選項(xiàng)提供用戶名和密碼。
默認(rèn)情況下,db2move 命令將根據(jù)源模式創(chuàng)建受支持的對(duì)象,并填充目標(biāo)數(shù)據(jù)庫(kù)中的表。這是 DDL_AND_LOAD 模式的行為。有兩種可用的模式:DDL_ONLY 和 LOAD_ONLY。顧名思義,DDL_ONLY 只根據(jù)源模式創(chuàng)建所有受支持的對(duì)象,而 LOAD_ONLY 則將所有指定的表從源數(shù)據(jù)庫(kù)裝載到目標(biāo)數(shù)據(jù)庫(kù)。注意,當(dāng)使用這個(gè)選項(xiàng)時(shí),那些表必須已經(jīng)存在于目標(biāo)數(shù)據(jù)庫(kù)中。
在將對(duì)象復(fù)制到目標(biāo)數(shù)據(jù)庫(kù)時(shí),可能需要重新命名模式。可以使用 SCHEMA_MAP 選項(xiàng)來(lái)實(shí)現(xiàn)這個(gè)目的。您只需提供一個(gè)或多個(gè)模式映射對(duì),就像下面這樣:
SCHEMA_MAP ((source_schema1,target_schema1),(source_schema2,target_schema2))
在使用 SCHEMA_MAP 選項(xiàng)時(shí)要特別小心。只有對(duì)象本身的模式被重命名,而對(duì)象主體中的對(duì)象仍保持不變。例如:
CREATE VIEW FOO.v1 AS 'SELECT c1 FROM FOO.T1'
將模式從 FOO 重命名為 BAR 將導(dǎo)致:
CREATE VIEW BAR.v1 AS 'SELECT c1 FROM FOO.T1'
如果 FOO.T1 沒(méi)有定義,那么目標(biāo)數(shù)據(jù)庫(kù)中就不能成功地創(chuàng)建 BAR.v1。
這樣的映射思想同樣適用于表空間。例如,假設(shè)您想將復(fù)制的表存儲(chǔ)在與源數(shù)據(jù)庫(kù)不同的一個(gè)表空間中。那么需要擴(kuò)展 db2move 命令,以便指定表空間名稱映射。考慮下面的選項(xiàng):
TABLESPACE_MAP ((TS1,TS2),(TS2,TS3),SYS_ANY)
上面的表空間名稱映射表明,源 TS1 被映射到目標(biāo) TS2,源 TS2 被映射到目標(biāo) TS3。SYS_ANY 表明剩下的表空間將使用數(shù)據(jù)庫(kù)管理器根據(jù)表空間選擇算法選擇的表空間。讓我們來(lái)看一個(gè)綜合性的例子。
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
這個(gè)命令將 db2inst1 和 prodschema 中受支持的對(duì)象從 SAMPLE 數(shù)據(jù)庫(kù)復(fù)制到 ACCTDB 數(shù)據(jù)庫(kù)。授權(quán) id peter 和相關(guān)的密碼用于連接到 ACCTDB。目標(biāo)表已經(jīng)存在于 ACCTDB 中,這些表將被重新填充。db2inst1 和 prodschema 模式下的所有對(duì)象現(xiàn)在分別在 db2inst2 和 devschema 模式下。最后不使用 SAMPLE 數(shù)據(jù)庫(kù)中定義的表空間名稱,而是使用 ACCTDB 中默認(rèn)的表空間。
NONRECOVERABLE 選項(xiàng)允許用戶在復(fù)制完成之后立即使用裝載的目標(biāo)表空間。這里不要求備份表空間,但是強(qiáng)烈建議在早期方便的時(shí)候作一個(gè)備份。
db2look
db2look 是可以從命令行提示符下和 Control Center 中調(diào)用的一個(gè)方便的工具。這個(gè)工具可以:
從數(shù)據(jù)庫(kù)對(duì)象中提取數(shù)據(jù)庫(kù)定義語(yǔ)言(DDL)語(yǔ)句。 生成 UPDATE 語(yǔ)句,用于更新數(shù)據(jù)庫(kù)管理器和數(shù)據(jù)庫(kù)配置參數(shù)。 生成 db2set 命令,用于設(shè)置 DB2 概要注冊(cè)表。 提取和生成數(shù)據(jù)庫(kù)統(tǒng)計(jì)報(bào)告。 生成 UPDATE 語(yǔ)句,用于復(fù)制關(guān)于數(shù)據(jù)庫(kù)對(duì)象的統(tǒng)計(jì)信息。LOAD 之類的實(shí)用程序要求目標(biāo)表已經(jīng)存在。您可以使用 db2look 提取表的 DDL,在目標(biāo)數(shù)據(jù)庫(kù)上運(yùn)行它,然后調(diào)用裝載操作。db2look 非常容易使用,下面的例子展示了這一點(diǎn)。這個(gè)命令生成 peter 在數(shù)據(jù)庫(kù) department 中創(chuàng)建的所有對(duì)象的 DDL,輸出被存儲(chǔ)在 alltables.sql 中。
db2look -d department -u peter -e -o alltables.sql
下面的命令生成:
數(shù)據(jù)庫(kù) department 中所有對(duì)象的 DDL(由 -d、-a 和 -e 選項(xiàng)指定)。 UPDATE 語(yǔ)句,用于復(fù)制數(shù)據(jù)庫(kù)中所有表和索引的統(tǒng)計(jì)信息(由選項(xiàng) -m 指定)。 GRANT 授權(quán)語(yǔ)句(由選項(xiàng) -x 指定)。 用于數(shù)據(jù)庫(kù)管理器和數(shù)據(jù)庫(kù)配置參數(shù)的 UPDATE 語(yǔ)句和用于概要注冊(cè)表的 db2set 命令(由選項(xiàng) -f 指定)。db2look -d department -a -e -m -x -f -o db2look.sql
db2look 還可以生成用于注冊(cè) XML 模式的命令。下面的例子生成模式名為 db2inst1 的對(duì)象所需的 REGISTER XMLSCHEMA 和 COMPLETE XMLSCHEMA 命令(由選項(xiàng) -xs 指定)。/home/db2inst1 中將創(chuàng)建輸出 db2look.sql,這個(gè)目錄由 -xdir 選項(xiàng)指定。
db2look -d department -z db2inst1 -xs -xdir /home/db2inst1 -o db2look.sql
db2batch
基準(zhǔn)測(cè)試是從各種不同方面(例如數(shù)據(jù)庫(kù)響應(yīng)時(shí)間、cpu 和內(nèi)存使用情況)對(duì)應(yīng)用程序進(jìn)行評(píng)測(cè)的一個(gè)過(guò)程。基準(zhǔn)測(cè)試基于一個(gè)可重復(fù)的環(huán)境,以便能夠在相同的條件下運(yùn)行相同的測(cè)試。之后,對(duì)測(cè)試收集到的結(jié)果可以進(jìn)行評(píng)估和比較。
db2batch 是一種基準(zhǔn)測(cè)試工具,它以一組 SQL 和/或 XQuery 語(yǔ)句作為輸入,動(dòng)態(tài)地準(zhǔn)備語(yǔ)句和描述語(yǔ)句,并返回一個(gè)結(jié)果集。取決于 db2batch 命令中所使用的選項(xiàng),結(jié)果集可以返回這些語(yǔ)句的執(zhí)行時(shí)間、關(guān)于內(nèi)存使用情況(例如緩沖池)的數(shù)據(jù)庫(kù)管理器快照和緩存信息。
可以在一個(gè) flat 文件或標(biāo)準(zhǔn)輸入中指定要運(yùn)行基準(zhǔn)測(cè)試的語(yǔ)句。在輸入文件中可以設(shè)置很多控制選項(xiàng)。指定這些選項(xiàng)的語(yǔ)法是:--#SET control_option value 。下面是包含控制選項(xiàng)的一個(gè)輸入文件的例子。要獲得控制選項(xiàng)的完整列表,請(qǐng)參考 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
選項(xiàng) PERF_DETAIL 3 意味著將返回關(guān)于花費(fèi)的時(shí)間和數(shù)據(jù)庫(kù)管理器、數(shù)據(jù)庫(kù)及應(yīng)用程序的快照這些性能方面的細(xì)節(jié)。 選項(xiàng) ROWS_OUT 5 意味著無(wú)論查詢返回的實(shí)際行數(shù)是多少,只從結(jié)果集中取 5 行。 COMMENT Query1 將語(yǔ)句命名為 Query1。下面的命令在 SAMPLE 數(shù)據(jù)庫(kù)上調(diào)用基準(zhǔn)測(cè)試工具,輸入文件為 db2batch.sql。
db2batch -d sample -f db2batch.sql
這個(gè)命令將返回查詢的結(jié)果集(限 5 行)和查詢所花費(fèi)的時(shí)間及 CPU 時(shí)間。另外還返回?cái)?shù)據(jù)庫(kù)管理器、數(shù)據(jù)庫(kù)和應(yīng)用程序快照。由于輸出很大,因此這里只顯示 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 命令支持很多選項(xiàng)。這里只列出其中一些選項(xiàng),讓您對(duì)這個(gè)工具的威力有所了解。
-m parameter_file 用參數(shù)值指定用于綁定到 SQL 語(yǔ)句參數(shù)占位符的一個(gè)輸入文件。 -r result_file 指定存放命令結(jié)果的輸出文件。 -i short|long|complete 指定從哪個(gè)方面測(cè)量所花費(fèi)的時(shí)間。short 測(cè)量運(yùn)行每條語(yǔ)句所花費(fèi)的時(shí)間。long 測(cè)量運(yùn)行每條語(yǔ)句所花費(fèi)的時(shí)間,包括語(yǔ)句之間的開(kāi)銷。complete 測(cè)量運(yùn)行每條語(yǔ)句所花費(fèi)的時(shí)間,分別報(bào)告準(zhǔn)備、執(zhí)行和取數(shù)據(jù)的時(shí)間。 -iso 指定語(yǔ)句使用的隔離級(jí)別。默認(rèn)情況下,db2batch 使用 Repeatable Read 隔離級(jí)別。
