今天負責把多個系統的db2資料庫遷移到另外一台機器上。同時要修改websphere的資料來源,讓它指向新的資料庫。以前沒做過,對於資料庫操作,我向來是要用的時候再去翻資料的。開始考慮使用備份、還原的方式,但版本不一樣,原來是7現在是8,作業系統也不一樣,原來是aix,現在是windows,這樣備份還原是行不通的,於是採用db2move。
看看db2move的命令說明,大致就明白怎麼做了,於是我就開始實戰了。我採用最簡單的方式,原機器上使用db2move &dbname export生成檔案,在目標機上ftp拿到生成的檔案,然後使用db2move &dbname import。目標機上只要建立乙個新庫,無需使用ddl生成表。資訊顯示所有表都ok,很快就搞定乙個資料庫,connect上去檢視,表自動生成,資料也完全一致。然後在websphere所在機器上重新catalog新的資料庫,語法也是現查的,現記錄如下:catalog tcpip node &nodename remote &ip server &port, terminate, catalog db &remotedbname as &dbaliesname at node &nodename,terminate。加&表示根據實際設定的值。db2 connect試試,新的連線正常。進入administartor console修改資料來源配置,然後儲存。重啟server,測試完全正常。乙個資料庫搞定。
下面乙個是我幫別人遷移的資料庫,我對其表結構,表空間等都不知道。不管三七二十一,我先照著剛才辦法做。export一切正常,import前面的表都正常,快結束發現報錯了,報建立表失敗。到相應表的msg檔案發現錯誤描述如下:
sql3319n 建立表時發生sql 錯誤"-286"。
sql0286n 找不到頁大小至少為"8192"、許可使用授權標識"db2admin"
的預設表空間。sqlstate=42727
原來需要8k頁大小的表空間。這簡單,使用控制中心新建乙個8k的表空間。然後需要讓出錯的表使用這個表空間,也就是說要要使用ddl語句先建立這個表了。連上原來的資料庫,生成這個表的ddl語句,修改tablespace名,改為新建的表空間,然後到新的資料庫上執行。我不想重新再import所有表了,怎麼做到呢,先看看生成的那些檔案,有個db2move.lst,然後是每個表的ixf和msg檔案,lst檔案居然可以用文字開啟,發現裡面一行就是乙個表,估計這就是需要匯入表的列表了。刪除那些已經正常匯入的表資訊,只留沒匯入的表,然後重新執行db2move &dbname import,這下一切正常了。然後就是剩下的同樣工作了。
值得注意的是,db2move只匯入表的資訊,其它如view,trigger等均需通過ddl語句或控制中心新增。忙了一天,是為此記。
Db2資料遷移
db2資料遷移的方法大致有以下幾種 通過db2資料庫的備份和復原進行資料遷移 注意點 進行復原的時候要通過手動選擇備份,復原檔案時間設定要和備份的檔案上的時間戳一致 不能進行跨平台的遷移,如 從linux平台資料庫備份的檔案,不能復原到windows平台資料庫中 通過export to和import...
db2資料遷移del,ixf
db2資料遷移del,ixf 在用db2 import from test.del of del insert into table匯入資料的時候,報錯說有幾條資料匯入失敗,但是匯出的資料條數和匯入的資料條數都與資料庫中的資料條數是相等的,很奇怪,後來發現del檔案是按行來儲存資料的,因為在資料庫的...
DB2管理非預設 db2 例項
檢視db2所有例項 c documents and settings administrator db2ilist db2c documents and settings administrator db2 get instance 當前資料庫管理器例項是 db2 建立新例項 c documents...