| 導購 | 订阅 | 在线投稿
分享
 
 
 

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

來源:互聯網  2008-06-06 05:59:52  評論

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

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

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

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

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

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

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

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

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

--源系統 ZYSJK

--源數據庫 YNDC

C:\Documents and Settings\Administrator>cd /d D:\backup\autobak\db2

D:\backup\autobak\db2>db2 backup db YNDC

這個映象的時間戳記是 20070315165040 ,該映象在 D:\backup\autobak\YNDC.0\DB2\NODE0000\CATN0000\20070315 中。

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

\\\\

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

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

C:\Documents and Settings\Administrator>cd\

C:\>mkdir D:\backup\autobak\YNDC.0\DB2\NODE0000\CATN0000\20070315

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

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

C:\Documents and Settings\Administrator>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:\DB2\Container\TestDB\SysData\' )

set tablespace containers for 4 using (PATH 'G:\DB2Containner_2\YNDC\sys' );

set tablespace containers for 3 using (FILE "G:\DB2Containner_2\YNDC\YNDC" 5242880);

set tablespace containers for 5 using (FILE "G:\DB2Containner_2\YNDC\USERTEMPSP" 51200);

set tablespace containers for 6 using (FILE "G:\DB2Containner_2\YNDC\TEMPSPACE8K" 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的表空間爲數據庫管理表空間,其它的爲系統管理表空間。具體的設置語句也有不同,詳細內容請參考上面的語句。

本文討論的內容限于同一平台下的 DB2 數據庫遷移。關于不同平台下的 DB2 數據庫遷移參見《不同平台之間的 DB2 數據庫遷移一例》。 數據庫恢複操作使用數據庫備份映象來重新創建數據庫。如果要將數據庫從一台機器克隆到另一台,最簡單的方法就是從備份映象恢複數據庫。除非源系統上的數據庫引用的文件系統和物理設備與目標系統的設置方法完全相同,否則在目標系統上還原數據庫就需要執行重定向恢複操作。 重定向恢複操作包括兩步數據庫恢複過程,並且中間有一個表空間容器定義步驟: 1. 帶 REDIRECT 選項發出 RESTORE DATABASE 命令。 2. 使用 SET TABLESPACE CONTAINERS 命令來定義被恢複的數據庫的表空間容器(DB2 需要知道您想要讓表空間駐留在目標系統上的什麽位置)。 3. 再次發出 RESTORE DATABASE 命令,這次指定 CONTINUE 選項。 重要!整個重定向恢複操作必須在同一個會話中調用;否則,將返回 SQL0900N,恢複操作會失敗,記住這一點很重要。確保不會發生這種情況的一個方法是創建並運行包含重定向恢複過程中全部三部分的腳本。 下面是一次相同平台的 DB2 數據庫使用重定向恢複的示例,腳本如下: 第一步,在源系統中離線完全備份數據庫 --源系統 ZYSJK --源數據庫 YNDC C:\Documents and Settings\Administrator>cd /d D:\backup\autobak\db2 D:\backup\autobak\db2>db2 backup db YNDC 這個映象的時間戳記是 20070315165040 ,該映象在 D:\backup\autobak\YNDC.0\DB2\NODE0000\CATN0000\20070315 中。 DB2 在發出 BACKUP DATABASE 命令的目錄中創建這個子目錄樹。子目錄名稱表示以下含義: \\\\ 在這個子目錄樹中,將會有一個表示實際備份映象的文件(165040.0)。文件名表示獲取備份的時間。 第二步,在目標系統中創建相似的目錄,並將備份文件拷貝至 165040.0 的文件至該目錄下 C:\Documents and Settings\Administrator>cd\ C:\>mkdir D:\backup\autobak\YNDC.0\DB2\NODE0000\CATN0000\20070315 注意!這是關鍵步驟:如果沒有正確創建這個路徑,後續的數據庫恢複操作就會失敗。 第三步,查看源系統的數據庫表空間情況 C:\Documents and Settings\Administrator>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:\DB2\Container\TestDB\SysData\' ) set tablespace containers for 4 using (PATH 'G:\DB2Containner_2\YNDC\sys' ); set tablespace containers for 3 using (FILE "G:\DB2Containner_2\YNDC\YNDC" 5242880); set tablespace containers for 5 using (FILE "G:\DB2Containner_2\YNDC\USERTEMPSP" 51200); set tablespace containers for 6 using (FILE "G:\DB2Containner_2\YNDC\TEMPSPACE8K" 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的表空間爲數據庫管理表空間,其它的爲系統管理表空間。具體的設置語句也有不同,詳細內容請參考上面的語句。
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有