程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> DB2 V9.1新功能:通過一個例子講解如何利用自動生成的腳本做數據庫重定向恢復

DB2 V9.1新功能:通過一個例子講解如何利用自動生成的腳本做數據庫重定向恢復

編輯:DB2教程
   DB2在做恢復數據庫操作時,默認情況下,會使用原來數據庫使用的表空間容器,如果需要指定到其他的容器,那麼就需要做重定向恢復,雖然執行重定向恢復的命令後,可以獲取表空間的容器情況,指定新的容器。該操作仍然比較復雜。 

   DB2從版本9.1開始,提供一個新的功能,可以從備份介質中產生一個重定向恢復的腳本,你可以通過修改這個腳本中需要重定向的容器,然後運行這個腳本就可以完成整個重定向恢復了。 

   下面我們通過重定向恢復sample數據庫的一個例子,來詳細講解一下該功能。 

   1、創建一個例子數據庫的備份。 

   D:\Temp>db2 backup db sample to . 

   備份成功。此備份映像的時間戳記是:20060626161457 

   2、使用RESTRORE ... REDIRECT GENERATE SCRIPT <SCRIPTNAME>產生重定向恢復數據庫的腳本。 

   D:\Temp>db2 restore db sample from . redirect generate script redirect.db2 
DB20000I RESTORE DATABASE命令成功完成。 

   3、此時我們查看生成的redirect.db2腳本,可以看到: 

   該腳本分為四個部分,第一部分: 
   -- ***************************************************************** 
   -- ** 自動創建了重定向復原腳本 
   -- ********************************************************************
UPDATE COMMAND OPTIONS USING S ON Z ON SAMPLE_NODE0000.out V ON;SET CLIENT ATTACH_DBPARTITIONNUM 0;SET CLIENT CONNECT_DBPARTITIONNUM 0; 
   第一條語句更新了命令行選項,具體解釋如下: 
   * S ON 指定錯誤出現時停止執行命令 
   * Z ON SAMPLE_NODE0000.out 指定命令的輸出保存在SAMPLE_NODE0000.out 
   * V ON 指定當前命令打印到屏幕上 

   第二條和第三條語句指定該命令在數據庫分區0上執行,在分區數據庫環境下指定數據庫分區非常重要。 

   該腳本的第二部分是重定向恢復數據庫的命令: 
   -- **************************************************************** 
   -- ** 自動創建了重定向復原腳本 
   -- ****************************************************************
RESTORE DATABASE SAMPLE-- USER <用戶名>-- USING '<密碼>'FROM 'D:\Temp'TAKEN AT 20060626161457-- ON 'C:'-- DBPATH ON '<目標目錄>'INTO SAMPLE-- NEWLOGPATH 'C:\DB2\NODE0000\SQL00002\SQLOGDIR\'-- WITH <緩沖區數目> BUFFERS-- BUFFER <緩沖區大小>-- REPLACE HISTORY FILE-- REPLACE EXISTINGREDIRECT-- PARALLELISM <n>WITHOUT ROLLING FORWARD-- WITHOUT PROMPTING;
   第三部分為表空間定義: 
   -- ****************************************************************** 
   -- ** 表空間定義 
   -- ********************************************************************* 
   -- ********************************************************************* 
   -- ** 表空間名 = SYSCATSPACE 
   -- ** 表空間標識 = 0 
   -- ** 表空間類型 = 數據庫管理空間 
   -- ** 表空間內容類型 = 所有持久數據。常規表空間。 
   -- ** 表空間頁大小(以字節計) = 4096 
   -- ** 表空間擴展數據塊大小(以頁計) = 4 
   -- ** 使用自動存儲器 = 是 
   -- ** 啟用自動調整大小 = 是 
   -- ** 頁總數 = 16384 
   -- ** 可用頁數 = 16380 
   -- ** 高水位標記(頁) = 8252 
   -- ******************************************************************** 

   ...... 

   -- ******************************************************************** 
   -- ** 表空間名 = TESTDMS 
   -- ** 表空間標識 = 4 
   -- ** 表空間類型 = 數據庫管理空間 
   -- ** 表空間內容類型 = 所有持久數據。大型表空間。 
   -- ** 表空間頁大小(以字節計) = 4096 
   -- ** 表空間擴展數據塊大小(以頁計) = 32 
   -- ** 使用自動存儲器 = 否 
   -- ** 啟用自動調整大小 = 否 
   -- ** 頁總數 = 5120 
   -- ** 可用頁數 = 5088 
   -- ** 高水位標記(頁) = 96 
   -- ****************************************************************
SET TABLESPACE CONTAINERS FOR 4-- IGNORE ROLLFORWARD CONTAINER OperaTIONSUSING (FILE 'd:\temp\test.dat' 5120);

   該部分會首先包含表空間的信息,顯示表空間的基本情況。 

   如果這個表空間需要進行重定向操作的話,那麼在說明性信息的後面會跟有SET TABLESPACE CONTAINERS語句。你可以根據需要修改表空間容器的重定向信息。如果這個表空間是系統管理的表空間或者使用自動存儲器和啟用自動調整大小的表空間的話,那麼不需要對這個表空間進行重定向操作。 

   該腳本的第四部分是繼續進行重定向恢復的語句: 
   -- ***************************************************************** 
   -- ** 啟動已重定向的復原 
   -- ******************************************************************** 
   RESTORE DATABASE SAMPLE CONTINUE; 
   -- ******************************************************************** 
   -- ** 文件末尾 
   -- ******************************************************************** 

   4、我們修改上面的文件,將數據庫恢復到D盤上,並改名為TEST。將表空間4的容器設置到"E:\temp\test.dat",然後運行這個腳本,順利完成數據庫的重定向恢復: D:\Temp>db2 -tvf redirect.db2

UPDATE COMMAND OPTIONS USING S ON Z ON SAMPLE_NODE0000.out V ONDB20000I UPDATE COMMAND OPTIONS命令成功完成。SET CLIENT ATTACH_DBPARTITIONNUM 0DB20000I SET CLIENT命令成功完成。SET CLIENT CONNECT_DBPARTITIONNUM 0DB20000I SET CLIENT命令成功完成。RESTORE DATABASE SAMPLE FROM 'D:\Temp' TAKEN AT 20060626163444 ON 'D:' INTO TESTREDIRECT WITHOUT ROLLING FORWARDSQL1277W 正在執行重定向復原操作。現在,可以查看表空間配置,並且不使用自動存儲器的表空間可以重新配置它們的容器。DB20000I RESTORE DATABASE命令成功完成。SET TABLESPACE CONTAINERS FOR 4 USING ( FILE 'E:\temp\test.dat'5120 )DB20000I SET TABLESPACE CONTAINERS命令成功完成。RESTORE DATABASE SAMPLE CONTINUEDB20000I RESTORE DATABASE命令成功完成。

   參考資料: 
   1、DB2版本9信息中心: 
   http://publib.boulder.ibm.com/infoc...w/v9//index.JSP(SUN企業級應用的首選) 

Google: http://www.cncms.com.cn/db2/q372737.Html
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved