當前位置:開發者網絡 >> 技術教程 >> 數據庫專欄 >> DB2 >> 內容
精彩推薦
分類最新教程
分類熱點教程
    
我用DB2這些年(四)
作者:未知
日期:2005-04-29
人氣:
投稿:(轉貼)
來源:未知
字體:
收藏:加入瀏覽器收藏
以下正文:

續:恢復數據庫

最近不斷地有人問我怎麼在命令行下面恢復數據庫,我給每個人都進行了比較詳細的說明;後來感覺這樣的事情還是寫出來比較好一些,於是就有了想寫關於這個東西的念頭。我想還是從講故事開始把。。。。。。

那是一個冬天,很冷很冷的那種。當時做一個項目,採用IBM RS6000小型機作為數據庫的服務器,當時是第一次接觸這種機器,感覺什麼東西都很新鮮。在擺弄了幾天之後我真正認識到學會使用CPL環境管理數據庫是多麼的關鍵,因為我把系統玩得不正常了,DB2cc在那上面啟動不起來了(後來經過查驗是AIX系統環境變量的問題)。當時我一下子就蒙到那裡了,因為我剛做了備份後Drop了數據庫準備重新恢復到另外一個地方的;後面開發還要用呢。這時候出問題可真是要命啊~~這個時候最需要的就是冷靜,我回想起當時備份使用的命令行環境,肯定可以用它來恢復數據庫的,但是怎麼去重定向那些表空間呢?問題就在這裡,原來都是用圖形界面來完成的根本就沒有考慮用命令行來做,弄得現在這麼狼狽地。哎!早知如此,何必當初阿!

想想還是從信息中心找下把,不過運氣還不錯讓我給找到了。在Command Reference的Restore DataBase章節中有個例子是關於重定向表空間的,於是我照著做了,具體過程如下:

第一步:建立一個新的數據庫,在這裡需要注意它的字符集,例如:

db2 create db test on /home/db2inst1 using codeset GBK territory zh_CN;

codeset GBK territory zh_CN就是指定中文字符集的命令字

第二步:將需要恢復的數據庫恢復到這個新建的數據庫中,在這個命令運行的時候會有一個提示信息,大概得意思就是說你要恢復的數據庫正試圖覆蓋一個數據庫,原來數據庫的數據將會被覆蓋,你可以不管它,選擇Yes就行,因為那個數據庫就是你剛才新建的。

db2 restore db test1 from /home/db2inst1/dbback taken at 20040330073123 into test REDIRECT WITHOUT ROLLING FORWARD;

在這個命令中需要指定待恢復數據庫的時間戳,REDIRECT WITHOUT ROLLING FORWARD的意思是不要前滾。

第三步:重新定向表空間,我在這裡使用的是文件型的表空間容器。

在這裡需要注意的是你必須事先知道表空間容器的類型和大小。通過LIST TABLESPACES命令可以查看到數據庫表空間的數量、類型和ID。然後通過命令LIST TABLESPACE CONTAINERS For tablespaceID(在前面命令中顯示的tablespaceID的值) show detail查看表空間容器的大小類型和位置,如下所示:

Tablespace Containers for Tablespace 0



 Container ID                         = 0

Name                                 = /home/smith/smith/NODE0000/

                                        SQL00001/SQLT0000.0

Type                                 = Path

Total pages                          = 895

Useable pages                        = 895

Accessible                           = Yes

接下來決定需要重定向表空間容器的類型位置和大小。重定向的表空間容器的size是不能小於當前值。

db2 =〉set tablespace containers for 4 using (file '/home/db2inst1/ long' 51200);

db2 =〉set tablespace containers for 3 using (file '/home/db2inst1/temp' 51200);

db2 =〉set tablespace containers for 2 using (file '/home/db2inst1/user' 102400);

第四步:正式恢復數據庫,打完收工。

db2 => restore db test1 continue;
相關文章: