程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> 相同平台下DB2數據庫使用重定向恢復示例

相同平台下DB2數據庫使用重定向恢復示例

編輯:DB2教程

本文討論的內容限於同一平台下的 DB2 數據庫遷移。關於不同平台下的 DB2 數據庫遷移參見《不同平台之間的 DB2 數據庫遷移一例》。

數據庫恢復操作使用數據庫備份映象來重新創建數據庫。如果要將數據庫從一台機器克隆到另一台,最簡單的方法就是從備份映象恢復數據庫。除非源系統上的數據庫引用的文件系統和物理設備與目標系統的設置方法完全相同,否則在目標系統上還原數據庫就需要執行重定向恢復操作。

重定向恢復操作包括兩步數據庫恢復過程,並且中間有一個表空間容器定義步驟:

1. 帶 REDIRECT 選項發出 RESTORE DATABASE 命令。

2. 使用 SET TABLESPACE CONTAINERS 命令來定義被恢復的數據庫的表空間容器(DB2 需要知道您想要讓表空間駐留在目標系統上的什麼位置)。

3. 再次發出 RESTORE DATABASE 命令,這次指定 CONTINUE 選項。

重要!整個重定向恢復操作必須在同一個會話中調用;否則,將返回 SQL0900N,恢復操作會失敗,記住這一點很重要。確保不會發生這種情況的一個方法是創建並運行包含重定向恢復過程中全部三部分的腳本。

下面是一次相同平台的 DB2 數據庫使用重定向恢復的示例,腳本如下:

第一步,在源系統中離線完全備份數據庫

--源系統 ZYSJK

--源數據庫 YNDC

C:Documents and SettingsAdministrator>cd /d D:backupautobakdb2

D:backupautobakdb2>db2 backup db YNDC

這個映象的時間戳記是 20070315165040 ,該映象在 D:backupautobakYNDC.0DB2NODE0000CATN000020070315 中。

DB2 在發出 BACKUP DATABASE 命令的目錄中創建這個子目錄樹。子目錄名稱表示以下含義:

在這個子目錄樹中,將會有一個表示實際備份映象的文件(165040.0)。文件名表示獲取備份的時間。

第二步,在目標系統中創建相似的目錄,並將備份文件拷貝至 165040.0 的文件至該目錄下

C:Documents and SettingsAdministrator>cd

C:>mkdir D:backupautobakYNDC.0DB2NODE0000CATN000020070315

注意!這是關鍵步驟:如果沒有正確創建這個路徑,後續的數據庫恢復操作就會失敗。

第三步,查看源系統的數據庫表空間情況

C:Documents and SettingsAdministrator>db2 list tablespaces

當前數據庫的表空間

表空間標識 = 0

名稱 = SYSCATSPACE

類型 = 系統管理空間

內容 = 任何數據

狀態 = 0x0000

詳細解釋:

正常

表空間標識 = 1

名稱 = TEMPSPACE1

類型 = 系統管理空間

內容 = 系統臨時數據

狀態 = 0x0000

詳細解釋:

正常

表空間標識 = 2

名稱 = USERSPACE1

類型 = 系統管理空間

內容 = 任何數據

狀態 = 0x0000

詳細解釋:

正常

表空間標識 = 3

名稱 = YNDC

類型 = 數據庫管理空間

內容 = 任何數據

狀態 = 0x0000

詳細解釋:

正常

表空間標識 = 4

名稱 = SYSTOOLSPACE

類型 = 系統管理空間

內容 = 任何數據

狀態 = 0x0000

詳細解釋:

正常

表空間標識 = 5

名稱 = USERTEMPSP

類型 = 數據庫管理空間

內容 = 用戶臨時數據

狀態 = 0x0000

詳細解釋:

正常

表空間標識 = 6

名稱 = TEMPSPACE8K

類型 = 數據庫管理空間

內容 = 系統臨時數據

狀態 = 0x0000

詳細解釋:

正常


 

其中,標識為 0,1,2 的表空間是系統缺省的默認表空間,無需進行重定向操作,這裡可以不必“理會”它。

標識為 3,5,6 的表空間需要進行重定向操作,腳本如下(以下語句必須寫在一個腳本中執行):

第四步,在目標系統中創建數據庫 YNDC ,然後通過表空間重定向還原數據庫

db2 create db YNDC;

執行下面的腳本,腳本清單:

restore db YNDC from d taken at 20070315165040 to d redirect;USING ( 'D:DB2ContainerTestDBSysData' )

set tablespace containers for 4 using (PATH 'G:DB2Containner_2YNDCsys' );

set tablespace containers for 3 using (FILE "G:DB2Containner_2YNDCYNDC" 5242880);

set tablespace containers for 5 using (FILE "G:DB2Containner_2YNDCUSERTEMPSP" 51200);

set tablespace containers for 6 using (FILE "G:DB2Containner_2YNDCTEMPSPACE8K" 51200);

restore db YNDC continue;

第五步,驗證目標系統中還原的數據庫的表空間

db2 list db directory

db2 connect to YNDC

db2 list tablespace containers for 3

db2 list tablespace containers for 5

db2 list tablespace containers for 6

db2 connect reset

db2 terminate

Edit by pjj in 2007-03-16 9:09 關於數據庫重定向恢復數據庫還有一點補充:如果源數據庫的緩沖池較大,還原後目標數據庫啟動不了的情況下,在還原成功之後請修改緩沖池的大小。另外,在指定表空間容器的時候,需要注意目標表空間和源表空間的管理類型必須一致,系統管理表空間對應系統管理表空間,數據庫管理表空間對應數據庫管理表空間。就本例來說,標識為 3,5,6的表空間為數據庫管理表空間,其它的為系統管理表空間。具體的設置語句也有不同,詳細內容請參考上面的語句。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved