DB2 恢複已刪除的表測試

來源:互聯網
上載者:User

原文引自:http://topic.csdn.net/u/20100522/16/97201BFE-E1AE-4540-ACD5-ADD6F475E713.html

SQL code

-- DB2 恢複已刪除的表測試:(測試平台:RHEL 5.4 DB2 V9.7.0)

 

-- 哈哈,小弟菜鳥一個! 剛看牛大師的書,做了一下例子,混個臉熟,順便來賣弄一下自己,滿足一下自己的虛榮心!

 

-- 下面我們舉一個dropped table recovery的例子。

-- *(1) 執行完全Database Backup,需要注意備份鏡像的時間戳記。

(Instance:DB2INST1, Database: TEST1):backup db test1 to /home/db2inst1/db2_backup

 

Backup successful. The timestamp for this backup image is : 20100522140304

 

 (Instance:DB2INST1, Database: TEST1):

 

-- *(2) 串連到資料庫並建立表,執行組建記錄檔記錄的操作,插入幾條記錄:

CONNECT TO test1

  CREATE TABLE tab1(no INTEGER) IN tbsp1

  INSERT INTO tab1 VALUES(1), (2), (3), (4), (5)

 

-- *(3) 類比意外丟棄表的情境:

DROP TABLE tab1

  COMMIT

  SELECT * FROM tab1

-- 將返回以下錯誤訊息:

Error: SQL0204N "Administrator.TAB1" is an undefined name

 

-- *(4) 恢複資料庫。

-- 要恢複已被丟棄的表,先恢複Database Backup,然後執行向前恢複(rollforward)操作:

RESTORE DATABASE test1 FROM /home/db2inst1/db2_backup TAKEN AT 20100522140304 INTO test1

-- 將返回以下訊息:

......

 

-- *(5) 檢索已丟棄的對象ID。

-- 使用以下命令檢索意外丟棄的表的對象ID:

LIST HISTORY DROPPED TABLE ALL FOR DATABASE test1

-- 可以將返回的資訊(例如表7-3中顯示的樣本)複製到某個檔案中以供未來引用。

(Instance:DB2INST1, Database: TEST1):list history dropped table all for database test1

 

                    List History File for test1

 

Number of matching file entries = 1

 

 

 Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log  Backup ID

 -- --- ------------------ ---- --- ------------ ------------ --------------

  D  T  20100522141107                                        000000000000684300080004

 ----------------------------------------------------------------------------

  "DB2INST1"."TAB1" resides in 1 tablespace(s):

 

  00001 TBSP1                                                                

 ----------------------------------------------------------------------------

    Comment: DROP TABLE                                                      

 Start Time: 20100522141107

   End Time: 20100522141107

     Status: A

 ----------------------------------------------------------------------------

  EID: 33

 

 DDL: CREATE TABLE "DB2INST1"."TAB1" ( "NO" INTEGER )  IN "TBSP1" ;     

 ----------------------------------------------------------------------------

 (Instance:DB2INST1, Database: TEST1):

 

 

-- 表7-3中的Backup ID欄顯示被丟棄的表的ID為000000000000684300080004。這一資訊對於恢複表非常重要。

 

-- *(6) 向前恢複資料庫。

-- 現在已經獲得了被丟棄的表的ID,下一步需要使用該表的備份ID恢複資料庫,這樣才能夠匯入表的資料。在向前恢複資料庫之前,

-- 需要確保有一個目錄可以供儲存匯入資料,比如說/home/db2inst1/test1/exporttab1。使用以下命令向前恢複資料庫:

mkdir -p /home/db2inst1/test1/exporttab1

 

-- ROLLFORWARD DATABASE test1 TO END OF LOGS AND STOP RECOVER DROPPED TABLE 000000000000684300080004 TO /home/db2inst1/test1/exporttab1

 

 (Instance:DB2INST1, Database: TEST1):rollforward database test1 to end of logs and stop \

 (Instance:DB2INST1, Database: TEST1):recover dropped table 000000000000684300080004 \

 (Instance:DB2INST1, Database: TEST1):to /home/db2inst1/test1/exporttab1

 

                                 Rollforward Status

 

 Input database alias                   = test1

 Number of nodes have returned status   = 1

 

 Node number                            = 0

 Rollforward status                     = not pending

 Next log file to be read               =

 Log files processed                    = S0000007.LOG - S0000007.LOG

 Last committed transaction             = 2010-05-22-06.11.07.000000 UTC

 

DB20000I  The ROLLFORWARD command completed successfully.

 

 

 

-- END OF LOGS選項的作用是讓DB2在執行備份操作後應用所有可用記錄檔。

 

-- *(7) 檢查匯入的資料檔案。

-- 完成資料庫向前恢複之後,需要檢查在ROLLFORWARD命令中指定的路徑。應該能夠找到一個.TXT檔案,

-- 開啟該檔案並驗證其中包含的資料與意外丟棄表之前的資料是否相同。

 

-- *(8) 串連到資料庫並重新建立被丟棄的表。

-- 驗證匯出檔案之後,我們需要重新建立被丟棄的表並重新填入資料。被丟棄的表的定義包含在步驟(5)的LIST HISTORY命令的輸出中。

-- 串連到資料庫並執行CREATE TABLE語句:

CONNECT TO test1

  CREATE TABLE "DB2INST1"."TAB1" ( "NO" INTEGER )  IN "TBSP1" ;

 

-- *(9) 匯入資料

-- 重新建立表之後,可以使用以下命令將資料庫重新匯入到表中:

IMPORT FROM /home/db2inst1/test1/exporttab1/NODE0000/data OF DEL INSERT INTO "DB2INST1"."TAB1"

 

-- IMPORT工具將匯出檔案中的所有資料導回到表中,並在成功後發送報告(未顯示)。

 

-- *(10) 驗證恢複後的資料

-- 確保IMPORT過程中沒有錯誤或警示,並且所有資料都已導回表中:

SELECT * FROM tab1

 

-- 如果一切運行正常,則意外丟棄點之前的所有資料應該都在表中。

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.