DB2 Backup and Restore

一:在源數據庫上的操作:(本例爲solaris9)
#su – db2inst1
$pwd
/ export/home2/db2inst1
$mkdir cws3
$db2pd –db cws3 (查看cws3數據庫的配置信息,例如表空間的位置,日值的位置等等)
$ db2 get dbm cfg (查看原來cws3數據庫的建庫信息,如庫的編碼,區域等)
說明:數據庫restore時對於不存在的數據庫會新建一個,但是其codeset和地區,以及codepage都是使用默認的,當備份的數據庫與你默認 的配置不同時,就會發生錯誤。因此可以先在目標數據庫上新建一個與源數據庫相同的數據庫,使其codeset和地區,codepage都跟你備分的一樣, 再執行restore就ok了。
$db2 db2stop(或者db2 db2stop force)
$db2 db2start
說明:在用backup db備份db2數據庫時,外部不能有連接,因此要stop db2,然後在start db2。

$db2 backup db cws3 to /export/home2/db2inst1/cws3
(指定備份的介質,只要是一個可寫的目錄即可,backup命令會自動把備份出來的文件放到/export/home2/db2inst1/cws3下面).
備份完成後,系統會自動生成一個備份的時間戳,例如:
Backup successful. The timestamp for this backup image is : 20060608160538
同時會在指定的介質(或者是目錄)下生成一個類似如下的文件:
CWS3.0.db2inst1.NODE0000.CATN0000.20060608160538.001
這樣db2的基本備份就完成了。
然後可以把備份出來的數據文件拷貝的目標數據庫的任意目錄(這個目錄很重要,以後要用到,本例是備份到目標數據庫/db2data/db2inst1/cws3下),接下來就可以在目標數據庫上進行操作。

//直接恢復到另一個數據庫:
$db2 restore db cws3 from /export/home2/db2inst1/cws3 into <target_database>

二:在目標數據庫上操作(本例爲AIX5.1)
1:建立目標數據庫:
由於兩個數據庫在編碼以及庫配置方面的不同,因此建議在目標數據庫上先建立一個和源數據庫配置相同的數據庫。
#su – db2inst1
$pwd
/db2data/db2inst1
$mkdir cws3
本例假設備份的數據庫文件拷貝到了/db2data/db2inst1/cws3下。
$ CREATE DATABASE cws3 ON /db2data/db2inst1 USING CODESET GBK TERRITORY CN COLLATE USING SYSTEM
這樣就在/db2data/db2inst1目錄下產生一個以登陸實例爲名稱的目錄,本例爲
/db2data/db2inst1/db2inst1
由於兩臺數據庫備份的目錄以及在目標數據庫上恢復的目錄可能不同,並且backup db命令備份的數據文件默認記錄所有與備份環境相關的信息,例如備份路徑等,因此要利用db2的重定向方式恢復數據。
2:重定向恢復數據庫:
接下來根據上面在源數據庫上查到的源數據庫配置信息,主要是數據庫幾個缺省表空間,例如系統表空間,用戶表空間,臨時表空間等等,根據這些信息,進行數據庫的重定向恢復。
$            db2 restore db from  /export/home2/db2inst1/cws3  to  /db2data/db2inst1/cws3  into cws3  redirect
$               db2 "set tablespace containers for 0 using (path '/db2data/db2inst1/db2inst1/NODE0000/SQL00001/SQLT0000.0')"
$                db2 "set tablespace containers for 1 using (path '/db2data/db2inst1/db2inst1/NODE0000/SQL00001/SQLT0001.0')"
$                db2 "set tablespace containers for 2 using (path '/db2data/db2inst1/db2inst1/NODE0000/SQL00001/SQLT0002.0')"
$                db2 "set tablespace containers for 3 using (path '/db2data/db2inst1/db2inst1/usercontainer3')"
$                db2 "set tablespace containers for 4 using (path '/db2data/db2inst1/db2inst1/usercontainer4')"
注意, 在給恢復數據庫上的tablespace設置redirect container時候,設置必須和原來的tablespace type一致,如原來是SMS,則使用PATH container,原來是DMS,則使用FILE/DEVICE container。如果是DMS,上面使用格式變爲:
db2 "set tablespace containers for 5 using (file '/db2data/db2inst1/db2inst1/data1' 2000000)"

然後進行:
$db2 restore db cws3 continue

至此db2重定向恢復完成。


發佈了36 篇原創文章 · 獲贊 6 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章