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

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

4. 在上圖中點擊按鈕 Run, 你將會在 Data Studio 的 SQL Results 視圖中看到在執行導出的語句時有以下 Warning 產生:
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 錯誤

此時用戶應該注意: 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 下的所有表
以下文章點擊率最高
Loading…