使用 IBM Data Studio 管理數據庫最佳實踐

使用 IBM Data Studio 管理數據庫最佳實踐

簡介

從 DB2 V10.1 開始, DB2 控制中心將不再成爲隨着 DB2 一起發佈的數據庫工具,取而代之的是 IBM Data Studio3.1.1。Data Studio 是一個基於 Eclipse 的綜合工具平臺,它主要提供數據庫的管理,數據庫應用程序的開發功能,同時它也集成了 IBM Optim 家族中另一款產品 OQWT 的 SQL 調優的基本功能,而且這些功能都是免費的 , 另外 IBM Data Studio3.1.1 的工具包中還包一個叫 Web Console 的工具,它允許你從瀏覽器監測數據庫的性能和狀態。DB2 控制中心所能完成的所有的數據庫的管理功能,Data Studio 都可以實現,並且在 Data Studio3.1.1 中對這些功能還做了很多的改進,同時也增加了一些 DB2 控制中心不具備的數據庫管理功能,對此,您可以在 DB2 的信息中心瞭解更爲詳細的信息。 作爲一款即將成爲主流的數據庫工具,爲了讓 DB2 控制中心的老用戶和希望使用 Data Studio 的新用戶更快的掌握 Data Studio 的數據庫管理功能,筆者對用戶在使用 Data Studio 進行數據庫管理操作容易產生迷惑和出錯的地方做了歸納,並通過幾個典型的實例來和大家分享這些操作。本文主要演示實例操作,若您想對 Data Studio 的數據庫對象的編輯功能有全面的瞭解,請參閱文章 IBM Data Studio 3.1 的數據庫對象編輯利器 Unified Object Management Editor

實例一 :對一個表的數據進行導出操作

本實例講解用 Data Studio 對遠程數據庫中的表數據進行導出操作。

操作步驟

1. 創建數據庫連接

啓動 Data Studio,打開 Admininstrator Explorer 視圖,點擊 New->New Connection to a Database, 在彈出的新建連接嚮導中,在 Connection name 文本框指定數據庫連接的顯示名稱,本例採用默認名稱 UOMDB。輸入數據庫的連接信息,確保你輸入的用戶有足夠的數據庫操作權限,本例使用 DB2 實例用戶連接數據庫,然後點擊 Finish 按鈕。請參考圖 1:

圖 1. 新建數據庫連接嚮導
新建數據庫連接

2. 在 Administrator Explorer 視圖下,找到剛纔新創建的連接,展開數據庫 UOMDB 下的節點。點擊文件夾 Tables, 你會看到 UOMDB 下所有的表在 Data Studio 的數據庫對象列表編輯視圖中打開。右鍵點擊一個包含數據的表,選擇 Unload -> With Export Utility,本例使用的測試表 DB2INST3.MYTB02,請參考圖 2:

圖 2. 在表的列表編輯視圖中選擇 Export 工具
在表的列表編輯視圖中選擇 Export 工具

此時,導出表數據的任務嚮導會被打開,請參考圖 3:

圖 3. 表數據的導出嚮導
表數據的導出嚮導

3. 在導出任務嚮導中的 Target 頁面,點擊 Path 文本框右側的 Browse 按鈕。此時如果數據庫服務器所在的機器上沒有啓動 SSH 服務, 那麼您將會看到如下的對話框彈出表明您數據庫服務器上沒有啓動 SSH 服務,您將無法選擇導出路徑。請參考圖 4:

圖 4. 數據庫服務器上 SSH 沒有啓動的提示框
數據庫服務器上 SSH 沒有啓動的提示框

請首先確保您的數據庫服務器啓動了 SSH 服務,再次重做以上步驟,那麼您將會看到如下的對話框彈出讓您選擇表數據要導出的路徑。

圖 5. 在數據庫服務器上選擇導出表數據的路徑
在數據庫服務器上選擇導出表數據的路徑

選擇連接數據庫的實例用戶 db2inst3 的用戶目錄下的 exportdata 目錄,點擊 OK. 再在導出嚮導的 File Name 文本框中輸入導出的文件名爲 mytb02_exportdata,保持其它設置爲缺省值。點擊導出表數據嚮導中的鏈接 Preview Command, 您將看到爲導出操作產生的 DDL,請參考圖 6:

圖 6. 預覽生成的表數據導出 DDL
預覽生成的表數據導出 DDL

4. 在上圖中點擊按鈕 Run, 你將會在 Data Studio 的 SQL Results 視圖中看到在執行導出的語句時有以下 Warning 產生:

1
2
3
4
5
SQL3104N The Export utility is beginning to export data to file
"/home/db2inst3/exportdata/mytb02_exportdata".
SQL3001C An I/O error (reason = "sqlofopn -2079391743") occurred
while opening the output file.
 SQL3105N The Export utility has finished exporting "0" rows.

從結果看出,產生輸入輸出錯誤,沒有一行數據導出,請參考圖 7:

圖 7. 導出時的 I/O 錯誤
導出時的 I/O 錯誤

此時用戶應該注意: Data Studio 是採用 ADMIN_CMD 的用戶功能函數 UDF 來執行導出操作,而這個 UDF 是用 DB2 的防護用戶 (Fenced User) 在 DB2 的地址空間外執行。所以我們應該確保指定一個 DB2 防護用戶有寫權限的導出路徑。本例中 DB2 的防護用戶 db2fenc3 對實例用戶 db2inst3 的用戶目錄 /home/db2inst3 沒有寫權限,所以導出失敗。

5. 在服務器所在的機器上創建一個 DB2 防護用戶有權讀寫的目錄 /userdata,然後在 DataStudio 的表數據導出嚮導上選擇此目錄爲表數據導出目錄, 再執行此導出操作,DDL 就可以成功執行,請參考圖 8:

圖 8. 導出數據成功
導出數據成功

實例一操作總結:

1. 當 Data Studio 客戶端和數據庫服務器需要通信時,確保數據庫端啓用了 SSH 服務,Data Studio 客戶端採用 SSH 和數據服務器端通信。

2. DataStudio 採用 ADMIN_CMD 的功能函數導出表數據,此功能函數使用防護用戶執行,我們需要確保 DB2 防護用戶對指定的導出路徑有寫權限。本人建議最好實例用戶和防護用戶都對數據導出目錄有寫權限。

實例二:在不同的 schema 下遷移數據庫對象

本實例將實現將一個 DB2V9.7 數據庫某個 Schema 下的數據庫對象和相關聯的對象全部遷移到另一個 DB2V9.7 數據庫下的某個 Schema 下。

環境介紹:

1. 源數據庫 SAMPLE 位於 Linux 機器 A, 包含一個名爲 SOURCESCHEMA 的 schema, SOURRCESCHEMA 下有一些表,其中有些表包含索引,並且用到了各自指定的表空間,不同的表空間又指定了不同的緩衝池。
2. 目標數據庫 TEST 位於 Linux 機器 B,包含一個名爲 TARGETSCHEMA 的 schema, TARGETSCHEMA 下沒有任何表。

操作目的:

把數據庫 SAMPLE 的 SOURCESCHEMA 下的表和相關聯的數據庫對象遷移到數據庫 TEST 的 TARGETSCHEMA 下。

操作步驟:

1. 爲數據庫 SAMPLE 和 TEST 創建兩個數據庫連接。
數據庫 SAMPLE 下的 SOURCESCHEMA 下包含的表如下圖。在這裏告訴大家一個小技巧,在 Schema 的列表編輯視圖中雙擊一個 Schema 可以顯示這個 Schema 下的所有表,請參考圖 9:

圖 9. 源 Schema 下的所有表
源 Schema 下的所有表

2. 在 Administrator Explorer 視圖,展開數據庫 TEST 的節點,點擊文件夾 Schemas 打開 Schema 的列表編輯器視圖,選擇 TARGETSCHEMA,然後從 Data Studio 主菜單中選擇 Migrate – >Compare and Migrate Objects,請參考圖 10:

圖 10. 在目標數據庫連接中選擇要同步的 Schema
在目標數據庫連接中選擇要同步的 Schema

3. 在接下來彈出的遷移向導中,會讓您選擇從那裏獲得要遷移的數據庫對象,這裏選擇 Database connection,表示從當前工作區中已經創建的連接中選擇。然後從列表中選擇數據庫 SAMPLE。請參考圖 11:

圖 11. 在遷移向導中選擇源數據庫
在遷移向導中選擇源數據庫

4. 在上圖中點擊按鈕 Next。在接下來的選擇源數據庫對象類型的嚮導中,選擇 Schemas,然後在對象列表中勾選 SOURCESCHEMA,點擊 Add 按鈕。請參考圖 12:

圖 12. 在遷移向導中選擇源數據庫對象
在遷移向導中選擇源數據庫對象

5. 在上圖中點擊 Next 按鈕,會進入到遷移對象映射向導,在 Database Object 下拉列表中選擇 Schema,在 In Mask 的下拉列表中選擇源模式 SOURCESCHEMA,在 Out Mask 的下拉列表中選擇目標模式 TARGETSCHEMA,點擊按鈕 Add Mask。請參考圖 13:

圖 13. 在遷移向導中定義模式的映射關係
在遷移向導中定義模式的映射關係

6. 在上圖中點擊按鈕 Next,會進入源數據庫對象和目標數據庫的比較嚮導,在此嚮導中會列出源 Schema 和目標 Schema 下的數據庫對象以及其它相關聯的數據庫對象。 在列表中展開節點 Schema,您會看到它們底下各自所包含的表對象。請參考圖 14:

圖 14. 源數據庫和目標數據庫同步前的比較嚮導
源數據庫和目標數據庫同步前的比較嚮導

7. 在比較嚮導中選擇 Schema 行,點擊比較嚮導中的 Copy from Left to Right 按鈕,您會看到 Schema 下的所有表和其它想關聯的對象 (Buffer Pools 和 Table Spaces) 都從源數據庫拷貝到目標數據庫,請參考圖 15:

圖 15. 源數據庫和目標數據庫同步後的比較嚮導
源數據庫和目標數據庫同步後的比較嚮導

8. 點擊 比較嚮導中的 Finish 按鈕,將會返回到目標數據庫連接的 Schema 的編輯視圖,並且 Data Studio 將爲此次遷移生成一個 Change Plan,點擊視圖右上方綠色的 Review and deloy changes 按鈕。您將會看到預覽部署的對話框彈出,並顯示遷移的 DDL,請參考下圖 16:

圖 16. 產生遷移操作 DDL 的部署預覽視圖
產生遷移操作 DDL 的部署預覽視圖

從生成的 DDL 中可看出 Schema 下的表和相關的 TableSpaces 及 BufferPools 都將會在目標數據庫上創建,同時 DDL 中也包含了一些 Grant 語句和表的 Reorg 語句,但是由於一般都會由具有權限的實例用戶執行這些操作,又由於目前只是遷移表結構,不需要對錶進行 Reorg 操作,所以我們可以在執行 DDL 之前去掉這些 Grant 和 Reorg 語句。

9. 點擊 Edit 按鈕編輯產生的 DDL,會打開 SQL 編輯器,在 SQL 編輯器中刪除產生的 Grant 語句和 Reorg 語句,用戶也可以點擊預覽部署對話框右上方的 Advanced Options 按鈕來定製是否產生 Reorg 語句。然後點擊 SQL 編輯器右上方綠色的 Run Sql 按鈕,我們可以在 Status 視圖中看到遷移操作的 DDL 被成功的執行。請參考圖 17:

圖 17. 在 SQL 編輯器中運行編輯生成的 DDL
在 SQL 編輯器中運行編輯生成的 DDL

10. 此時,我們需要做一下清理工作,由於剛纔我們並沒有執行爲遷移操作產生的 Chang Plan,它處於 Pending 的狀態,我們是轉到了 SQL 編輯器中成功執行了遷移操作。我們最好取消掉這個還未執行的 Change Plan。返回到目標數據庫連接的 Schema 的列表編輯器視圖,點擊視圖右上角紅色的 X 按鈕(Close Change Plan),在彈出的確認關閉對話框中選擇 Discard 就可以了,當然如果我們在 DDL 的部署預覽視圖中直接點擊 Run 按鈕而不進入 SQL Editor 來執行 DDL,那麼這個 Change plan 就會處於 Deployed 狀態而不是 Pending 的狀態了。

實例 2 操作總結:

1. 在用遷移向導在不同的 Schema 之間遷移數據庫對象時,一定要在嚮導中做 Schema 映射,相同的 Schema 之間不需要映射操作。
2. 在用遷移向導做數據對象的遷移和實際數據的遷移時,我們很有可能需要修改生成的 DDL, 尤其是當兩個數據庫不在同一個物理機器上時,因爲 Data Studio 是管理操作數據庫,它不會去管理數據庫所在的服務器。比如,當兩臺機器的環境不同,在源數據庫服務器上的要遷移的表空間用到了容器 /home/db2inst1/tabspace.dat, 在遷移時 Data Studio 產生同樣的表空間創建語句,而很有可能目標數據庫的連接用戶並沒有權限去在目標服務器上創建或訪問這個容器指定的目錄,對此 Data Studio 是無法判斷的。

實例三: 在多分區數據庫上的分區組上創建表空間。

本實例講解使用 Data Studio 在一個 DB2 多分區數據庫的分區組 (partition group) 上創建表空間,並將指定表空間在不同分區上的容器。

環境介紹:

筆者事先搭建了一個有 4 個分區的 DB2 數據庫,分區 0 和 1 位於機器 A, 分區 2 和 3 位於機器 B。數據庫服務器都爲 Linux 機器,數據庫的名稱爲 UOMDB。

操作步驟:

1. 在 Data Studio 中爲數據庫 UOMDB 創建一個數據庫連接,在 Administrator Explorer 視圖,展開數據庫 UOMDB 節點,右鍵點擊文件夾 Partition Groups,選擇 Create Partition Group,如下圖 18:

圖 18. 從 Administrator Explorer 視圖中創建分區組
從 Administrator Explorer 視圖中創建分區組

2. 分區組的列表編輯器視圖和屬性視圖會被打開,在打開的屬性視圖中,選擇 General 頁面,給新的分區組命名爲 PG1,點擊 Partitions 文本框右邊的 Edit 按鈕,然後在彈出的嚮導中添加分區 0 和 1 和 2。請參考下圖 19:

圖 19. 編輯分區組
編輯分區組

3. 點擊分區組列表編輯器右上方綠色的 Review and Deploy Changes 按鈕,在接下來彈出的部署預覽對話框中會顯示創建分區組的 DDL,點擊部署預覽對話框上的 Run 按鈕。分區組 PG1 被成功創建,請參考下圖 20:

圖 20. 成功創建分區組
成功創建分區組

4. 在 Administrator Explorer 視圖,展開數據庫連接下的 UOMDB 節點,右鍵點擊文件夾 Table Spaces,選擇 Create Regular Table Space,表空間的列表編輯器視圖和屬性視圖會被打開。在表空間的屬性視圖中,選擇 General 頁面,指定表空間的名字爲 TBSPACE1,並指定 Management 的值爲 Database Managed,請參考下圖 21:

圖 21. 編輯新建表空間的 General 信息
編輯新建表空間的 General 信息

5. 在表空間屬性視圖中選擇 Storage Options 頁面,在 Group 下拉列表中選擇分區組 PG1,如下圖 22:

圖 22. 指定表空間所在的分區組
指定表空間所在的分區組

6. 在表空間的屬性視圖中選擇 Containers 頁面,點擊加號按鈕添加三個表空間容器,並指定容器的大小,本例中每個容器設爲 1000 頁。 這三個表空間容器將會被分配到分區組的三個分區上。請參考下圖 23:

圖 23. 指定表空間的容器
指定表空間的容器

7. 在表空間的屬性視圖中選擇 Partitioning 頁面,您會看到一個包含兩個列的表,第一列爲 Container,第二列爲 Partitions,其中 Container 列已經自動被填寫了圖 23 中的容器信息。 我們需要在 Partitions 列爲每一個容器填寫它所在的分區。我們依次爲這三個容器指定分區爲 0、1、2,請參考下圖 24:

圖 24. 指定表空間容器所在的分區
指定表空間容器所在的分區

8. 表空間的編輯完成,點擊表空間的列表編輯器視圖右上角綠色的 Review and Deploy Changes 按鈕,在接下來彈出的部署預覽對話框中會顯示創建表空間的 DDL 如下:

清單 1. 在分區組上創建表空間
1
2
3
4
5
6
CREATE REGULAR TABLESPACE TBSPACE1 IN DATABASE PARTITION GROUP PG1
PAGESIZE 4096 MANAGED BY DATABASE USING ( FILE '/home/dpfins97/tscon0' 1000 )
ON DBPARTITIONNUM ( 0 ) USING ( FILE '/home/dpfins97/tscon1' 1000 )
ON DBPARTITIONNUM ( 1 ) USING ( FILE '/home/dpfins97/tscon2' 1000 )
ON DBPARTITIONNUM ( 2 ) BUFFERPOOL IBMDEFAULTBP OVERHEAD 7.5
TRANSFERRATE 0.06 DROPPED TABLE RECOVERY ON;

點擊部署預覽對話框上的 Run 按鈕,表空間被成功創建。

實例 3 操作總結:

1. 如果用戶沒有爲每個表空間容器指定分區組中的分區,也就是沒執行本例第 7 步,就點擊了 Review and Deploy Changes 按鈕,那麼一個警告對話框會彈出顯示類似如下的信息:

Table Space container /home/dpfins97/tscon0 is not assigned to a database partition. Click the Partitioning tab to assign the container to a database partition.

最終執行也不能成功。

2. 在多分區 DB2 數據庫的分區組上創建表空間時,用過 DB2 控制中心的用戶可能都知道,DB2 控制中心在多個分區上創建表空間指定容器時, 也就是類似本實例的第六步,在控制中心中的嚮導中不能爲每個分區指定自己的容器,而是用表達式如”/home/dpfins97/mycon $N”作爲容器名稱,然後控制中心會自動依次爲每個分區指定容器指派容器命名爲 mycon0,mycon1,mycon2。這樣做不夠靈活,用戶不能爲每個分區指定自己想要的表空間容器目錄和表空間容器名稱,Data Studio 在這方面做了改進。

實例四:Data Studio 的 Eclipse 參數頁配置。

本實例講解 Data Studio 對 Eclipse 的參數配置頁的擴展。

Data Studio 基於 Eclipse,它對 Eclipse 的參數配置頁做了某些擴展,比如,當用戶在第一次啓動 Data Studio 進行數據庫管理操作時,假設用戶想創建一個緩衝池,右鍵點擊 Administrator Explorer 視圖中的數據庫節點下的 Buffer Pools 文件夾,選擇 Create Buffer Pool,一個提示對話框會彈出提示用戶“您正在對數據庫對象進行更改操作,已經爲您的操作在 Change plans 文件夾裏創建了一個缺省的 Change Plan”,同時對話框上會有個 Checkbox 讓用戶選擇是否以後還顯示這個提示框。請參考下圖 25:

圖 25. 編輯數據庫對象時的提示對話框
編輯數據庫對象時的提示對話框

其實無論用戶是否想在以後的操作中看到此提示框,都可以在 Data Studio 的 Eclipse 參數頁裏進行配置。點擊主菜單中的 Window->Preferences,會彈出參數配置頁,在參數配置頁裏選擇 Data Management->Object List Options,您將看到一個 Checkbox 讓您選擇是否在編輯數據庫對象時彈出“Change Plan 已經創建”的對話框。請參考下圖 26:

圖 26. 在參數頁中選擇是否在編輯數據庫對象時彈出提示對話框
在參數頁中選擇是否在編輯數據庫對象時彈出提示對話框

在使用 Data Studio 時,只要您看到彈出的提示框中包含有類似”Don ’ t show me again”的選擇框,那麼是否顯示這個提示都可以在參數頁進行配置。 再比如,很多時候在您的操作會產生衝突時,Data Studio 默認都會彈出一個衝突驗證提示框,請參考下圖 27 中創建 Schema 時指定的名稱和已經存在的 Schema 同名時的場景:

圖 27. 操作中產生命名衝突的驗證提示框
操作中產生命名衝突的驗證提示框

Data Studio 在參數頁中擴展了一個名爲 Model Validation 的選項頁面,用戶可以在其中設置 Include Live warning 選項來選擇是否顯示此類的提示框。請參考下圖 28:

圖 28. 在參數頁中設置是否顯示驗證對話框
在參數頁中設置是否顯示驗證對話框

當然,如果您選擇不顯示驗證對話框,Data Studio 就會高亮度顯示出現衝突的區域來對您進行提示,並把信息打印在 Console 視圖裏。 以上參數頁中的配置並不影響實際的操作,下面舉一個 典型的創建表外鍵的場景來向您展示參數頁中的配置可以影響到實際操作的例子。

環境準備:

在 Data Studio 的 Administrator Explorer 視圖中選擇您的數據庫,然後點擊視圖右上角的下拉箭頭,選擇 New Sql Script 打開 SQL 編輯器,在編輯器裏運行下面的語句創建兩個表。

清單 2. 創建主鍵和外鍵表
1
2
3
4
create table pktable
(id integer not null, name varchar(20), age integer, primary key(id));
create table fktable
(managerid integer, dept varchar(20));

其中 pktable 作爲子表,fktable 作爲父表。以下操作想爲表 fktable 的列 managerid 創建一個外鍵,讓它引用表 pktable 的主鍵列 id。此時大家可以看到,子表中所有的列都可以爲空,而且沒有主鍵。

操作步驟:

1. 在 Administrator Explorer 視圖中右鍵點擊您數據庫下的 Constraints 文件夾,選擇 Create Foreign Key,在彈出的對話框列表中選擇表 fktable 作爲子表。如下圖 29:

圖 29. 選擇子表(外鍵表)
選擇子表

在上圖中點擊 OK 按鈕,會出現嚮導讓您選擇父表,從列表中選擇 pktable 如下圖 30:

圖 30. 選擇父表(主鍵表)
選擇父表

2. 在上圖中點擊 OK 按鈕,會顯示外鍵的屬性視圖,在外鍵屬性視圖中選擇 Details 頁面,此時會看到在子表的外鍵列的列表中和父表的主鍵列的列表中,Data studio 已經自動地分別的添加了名爲 ID 的列,此時大家可能會想:子表中並不包含 ID 列啊?下文中會給出解釋。但是我們想讓子表的 managerid 作爲外鍵列,點擊子表的 Key Columns 右邊的按鈕,在彈出的列表裏取消 ID 列的選擇,僅選擇 managerid,請參考下圖 31:

圖 31. 在外鍵屬性視圖中選擇外鍵列
在外鍵屬性視圖中選擇外鍵列

3. 在上圖中點擊 OK 按鈕,再點擊外鍵列表編輯器視圖右上方綠色的 Review and Deploy Changes 按鈕,在彈出的預覽部署對話框中出現錯誤提示說 :“ID 列設爲非空,請爲 ID 列指定值”,請參考下圖 32:

圖 32. 在運行創建外鍵的操作時出現驗證錯誤
在運行創建外鍵的操作時出現驗證錯誤

但是 DB2 本身是允許外鍵列爲空,而且也允許外鍵列和主鍵列不同名。產生這個結果的原因是 Data Studio 爲了模型驗證,當子表裏不包含和父表裏的主鍵列同樣的列時,Data Studio 缺省會自動爲子表加上和父表的主鍵同樣的列作爲外鍵,並會驗證外鍵是否非空。當然是否在創建外鍵時把父表的主鍵列遷移到子表是可以在參數頁裏設置的,點擊 Data Studio 主菜單中的 Window->Preferences 打開參數頁,選擇 Data Management->Key Migration->On Add,取消 Migrate Key automatically 選擇,如下圖 33:

圖 33. 在參數頁取消創建外鍵時自動遷移外鍵列的選項
在參數頁取消創建外鍵時自動遷移外鍵列的選項

4. 點擊參數頁上的 OK 按鈕保存設置,取消以上步驟 1-3 的操作,重新執行步驟 1,然後在外鍵的屬性視圖中,在 General 頁面選擇選項 Non-Identifying,如下圖 34:

圖 34. 在外鍵屬性視圖中選擇不驗證外鍵
在外鍵屬性視圖中選擇不驗證外鍵

接下來再選擇 Details 頁面,此時用戶就會發現這次和圖 31 中顯示的結果不同,子表的外鍵列表和父表的主鍵列表都是空的,這次點擊子表的添加外鍵的按鈕時,在彈出的列選擇框裏就不會在看到 ID 列了,選擇 managerid 作爲外鍵,請參考下圖 35:

圖 35. 在參數頁取消外鍵列自動遷移選項後的外鍵屬性視圖
在參數頁取消外鍵列自動遷移選項後的外鍵屬性視圖

然後在父表的 Unique Constraint or index 下拉框中手動選擇主鍵。

5. 點擊 Review and Deploy Changes 按鈕,在彈出的預覽部署對話框中不會在有錯誤出現,並且產生如下的 DDL:

清單 3. 創建可以爲空並和主鍵不同名的外鍵
1
2
3
4
5
ALTER TABLE ADMINISTRATOR.FKTABLE ADD CONSTRAINT FKTABLE_PKTABLE_FK
FOREIGN KEY ( MANAGERID ) REFERENCES ADMINISTRATOR.PKTABLE ( ID )
ON DELETE CASCADE ON UPDATE NO ACTION;
CALL SYSPROC.ADMIN_CMD( 'REORG TABLE ADMINISTRATOR.FKTABLE' );
CALL SYSPROC.ADMIN_CMD( 'RUNSTATS ON TABLE ADMINISTRATOR.FKTABLE' );

點擊預覽部署對話框上的 Run 按鈕,我們指定的外鍵成功創建。
在此,也想向大家解釋一下參數頁中的 Migrate Key automatically 選項和外鍵屬性視圖中 Gnenral 頁面的 Identifying 選項, 當在參數頁中的選項 Migrate Key automatically 處於勾選狀態時,如果子表中不包含父表的主鍵列,那麼 Data Studio 會在創建外鍵的時候自動爲子表添加和父表的主鍵列同樣的列,反之,不添加。

對於選項 Identifying,如果在創建外鍵時選擇此選項,那麼 Data Studio 會驗證子表是否設置了和父表相同的主鍵作爲外鍵列,如果沒有,就會看到圖 32 中顯示的錯誤,如果此時在圖 32 中點擊 Next 按鈕,在接下來產生的 DDL 中就會爲子表添加和父表同樣的主鍵。如果選擇 Non-Identifying,則不驗證外鍵列,也不會強制爲子表設置主鍵,當然也就不會驗證子表的主鍵列是否爲空,那麼我們也就不會在看到圖 32 中的驗證錯誤。在本例中,我們並不想做這樣的驗證,所以在參數頁中對參數進行了修改。

實例 4 操作總結

大家都知道,當用工具進行數據庫的管理和開發及調優操作時,提供一些和用戶交互的對話框是必需的,同時也要考慮用戶在操作中的一些自己的設置偏好。爲了便於用戶自己對這些設置進行定製,Data Studio 對 Eclipse 的參數頁做了很多擴展,您能在參數頁的 Data Management 選項下發現 Data Studio 管理數據庫操作的絕大部分擴展項,其中當然也包含 DB2V10 中新的數據庫對象的一些管理定製,比如 Temporal Tables,感興趣的讀者請自己體驗一下吧! 至此,本文的講解全部結束。

結束語

本文用幾個典型的實例向您詳細講解了在使用 Data Studio 管理數據庫操作中需要注意的地方,同時也儘可能地在講解的過程中向您展示更多的 Data Studio 使用技巧。相信讀者在看完本文後,對 Data Studio 會有更深的認識。無論如何,本文只是拋磚引玉,用戶只有在自己的親身體驗中,才能感覺到 Data Studio 強大的數據庫操作功能。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章