DB2_備份恢復(離線&在線)

一、離線備份

su – db2inst1
#斷開所有連接,關閉數據庫
#db2 force applications all               
db2 db2stop force
#啓動數據庫
db2 db2start
#顯示所有數據庫及其路徑列表
db2 list database directory
#顯示所有活動的數據庫
db2 list active databases
#釋放一個數據庫
db2 deactivate database db_test
#數據庫的備份和恢復,注意:不能跨平臺恢復
#離線備份 
db2 backup database db_test to "/data/DB2/db2idb/dbback"
#恢復到相同數據庫
--db2 restore database db_dev from "/data/DB2/db2idb/dbback"
#恢復到不同數據庫
db2 restore database db_test from "/data/DB2/db2idb/dbback" into db_dev

二、在線備份

注意:設置或者備份用的目錄必須是db2用戶有權限的目錄
su - db2inst1
#顯示配置信息
db2 get db cfg for db_db
#啓用日誌歸檔模式
db2 update db cfg for db_db using LOGRETAIN ON
#設置日誌歸檔目錄
db2 update db cfg for db_db using LOGARCHMETH1 DISK:/data/db2data/logs/db_db
#做一次離線備份,否則數據庫會登錄不了[如果提示有連接無法備份,請參考db2離線備份]
db2 backup db db_db to "/data/db2data/backup/db_db"
#在線備份--備份日誌(首個活動日誌到當前日誌會一同備份到備份文件裏)
db2 backup db db_db online to "/data/db2data/backup/db_db" include logs
#從包含日誌的備份集恢復[恢復同一個數據庫 into db_db 可省略]
#要導入的數據庫的歸檔目錄不要和備份恢復的日誌目錄相同
#db2 force applications all
db2 RESTORE db db_db FROM /data/db2data/backup/db_test/ taken at 20130618142149 into db_test LOGTARGET /data/db2data/logs/db_test
#前滾
#由於從備份成功到數據庫崩潰的時間間隔會產生其他的歸檔日誌,可以將這些日誌拷貝到/data/db2data/logs/中,
#或者直接從歸檔日誌目錄進行前滾,同"從不包含日誌的備份集恢復"中的"前滾"
db2 "rollforward db db_test to end of logs and stop overflow log path(/data/db2data/logs/db_test)"

三、不同機器恢復


#指定redirect
db2 RESTORE db dbdb FROM /data/db2data/backup/ taken at 20130618180228 into db_db LOGTARGET /data/db2data/backup/log redirect

#db2 list tablespace containers for 0 查看空間
#db2 list tablespaces show detail 查看所有空間
#設置新的表空間,空間位置和參數可通過上兩個指令查看
db2 "set tablespace containers for 0 using (file '/home/db2inst1/db2inst1/NODE0000/DB_DB/T0000000/C0000000.CAT' 6144)"
db2 "set tablespace containers for 1 using (Path '/home/db2inst1/db2inst1/NODE0000/DB_DB/T0000001/C0000000.TMP')"
db2 "set tablespace containers for 2 using (File '/home/db2inst1/db2inst1/NODE0000/DB_DB/T0000002/C0000000.LRG' 14336)"
db2 "set tablespace containers for 3 using (file '/home/db2inst1/db2inst1/NODE0000/DB_DB/T0000003/C0000000.LRG' 1024)"
db2 "set tablespace containers for 4 using (Path '/home/db2inst1/db2inst1/NODE0000/DB_DB/T0000004/C0000000.UTM')"
#應用設置
db2 RESTORE DATABASE dbdb CONTINUE
--db2 rollforward db db_db query status 查看狀態
db2 "rollforward db db_db to end of logs and stop overflow log path(/data/db2data/backup/log)"

#不是同一個版本的數據庫會報如下錯誤,本人未進行進一步測試
$ db2 connect to db_db
SQL0901N  The SQL statement failed because of a non-severe system error. 
Subsequent SQL statements can be processed.  (Reason "Scan interface error".)  
SQLSTATE=58004
DB2 SQL0901N錯誤解決
問題描述:還原數據庫後連接數據庫報錯,提示信息如下。
SQL0901N  由於不嚴重的系統錯誤,SQL 語句失敗。可以處理後續 SQL語句。(原因"Scan interface error")。 SQLSTATE=58004
問題解決:查看備份機器和還原機器的DB2版本,查看版本(包括補丁號)是否一致(查看版本號命令DB2LEVEL),如果不一致,則在還原機器上打補丁(網上下載或在備份機器上copy一份),以確保與備份機器一致。


四、表結構導入導出


#表結構導出
db2look -d db_test -e -z AM -l -o exdb.sql
#導入表結構操作:
db2 -tvf exdb.sql


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章