最近在使用DB2時遇到一個問題:如何把服務器上備份下來的數據庫在本地復原上呢?
在網上找啊找啊找啊好像沒有真正的恢復,通過自己的研究終於整明白了,和大家分享一下,希望對初學者有所幫助。
由於是通過別的機器備份出來的文件進行復原一個新數據庫所以不能通過控制中心復原。
首先將備份的數據庫文件放在E:\DB2BAK裡
然後打開命令行窗口執行
白金山:db2代碼
db2 restore database 原數據庫名稱 from E:\DB2BAK taken at 20090909090909(時間戳) into 新數據庫名稱 redirect without rolling forward
會出現如下錯誤信息
白金山:db2代碼
SQL1277N 復原已檢測到一個或多個表空間容器是不可訪問的,或者已將它們的狀態設置為
“必須定義存儲器”。
DB20000I RESTORE DATABASE 命令成功完成。
這說明在新機器中原來的表空間不存在
回到服務器上通過如下命令查看原來的表空間
白金山:db2代碼
db2 connect to 數據庫名稱
db2 list tablespaces
這裡會看到
白金山:db2代碼
當前數據庫的表空間
表空間標識 = 0
名稱 = SYSCATSPACE
類型 = 系統管理空間
內容 = 任何數據
狀態 = 0x0000
詳細解釋:
正常
表空間標識 = 1
名稱 = TEMPSPACE1
類型 = 系統管理空間
內容 = 系統臨時數據
狀態 = 0x0000
詳細解釋:
正常
等字樣把它記下來
回到自己的機器在D:\DB2DATA以上面表空間名稱為文件名創建文件夾
回到自己的機器命令行執行如下命令
白金山:db2代碼
db2 set tablespace containers for 0 using (path "D:\DB2DATA\SYSCATSPACE")
DB20000I SET TABLESPACE CONTAINERS 命令成功完成。
db2 set tablespace containers for 1 using (path "D:\DB2DATA\TEMPSPACE1")
D:\DB2DATA是新數據的位置記住這裡除了文件夾以外什麼都不能有哦。
OK執行下面最後一步
白金山:db2代碼
RESTORE DATABASE 原數據庫名稱 CONTINUE
至此新的數據庫就出來了