db2資料庫還原
① db2 資料庫 從一個主機到另一個主句 如何恢復
db2 備份怎麼恢復到另一台伺服器方法:
1)、首先打開一下支持在線備份的資料庫配置參數:
db2 update db cfg for sample using userexit on 啟用用戶出口
db2 update db cfg for sample using logretain on 啟用歸檔日誌
db2 update db cfg for sample using trackmod on 啟用增量備份功能
(需要各個Node都分別做設置)
開啟這些參數後,資料庫處於backup pending狀態,要求做資料庫的離線全備份。做一下離線全備份,參考上面的命令。
2)、在線備份命令如下:
db2 backup db sample online use tsm
備份成功,返回一個時間戳。
3)、同樣可以用db2atl 和db2 list history察看備份紀錄。
4)、備註:
同樣,對每個節點都做這個操作。
3、 在線增量備份
1)、在開啟了必須的三個參數的情況下,做增量備份:
db2 backup db sample online incremental use tsm
備份成功,返回一個時間戳。
2)、同樣可以用db2atl 和db2 list history察看備份紀錄。
3)、還有一種delta的備份:
db2 backup db sample online incremental delta use tsm
這兩種備份的區別,類似Oracle Exports的Incremental和Cumulative方式,db2的incremental對應oracle的cumulative方式,而db2的delta方式則對應oracle的incremental方式。
4)、備註:
同樣,對每個節點都做這個操作。
② db2資料庫的備份與恢復需要注意事項
登錄
db2 在線備份和離線備份 的注意事項 原創
2008-07-04 17:44:00
WorldWelcome
碼齡16年
關注
db2在線備份和離線備份的區別
1)一般默認建立一個db2資料庫是不支持在線備份的(在DB2控制中心裡的)
如果要讓一個DB2資料庫支持在線備份的話,update db cfg for sampledb using logretain=on serexit=on,trackmode=on
2)如果一個db2資料庫同時支持在線備份和離線備份的話,那麼在備份的時候要小心,如果是要做在線備份,那麼必須把日誌要單獨拷貝出來。否則無法回滾,也就無法使用。
3) 離線備份後恢復的時候,加上參數without rollforward...
4) 在線備份後,必須rollforward to ....
5) force application stop 命令 其實跟離線備份/在線備份都沒有什麼關系。
③ 如何將在Linux下導出的db2資料庫還原到windows下
只能用
db2look
+db2move
進行遷移。
1.提取DDL
用如下命令
db2look
-d
yn
-e
-l
-o
db2look_yn.ddl
//提取出
yn(雲南)
這個資料庫
所有用戶對象,包括表空間等。
2.用db2move
導出數據
如下
如你在
db2inist1
用戶目錄下
建立一個
data
目錄
然後執行
db2move
yn
export
在data
目錄下
會有好多
後綴名為ixf
和msg
的文件,其中ixf為數據表文件,msg後綴的為消息文件,其中最重要的
是db2move.lst
存放導出表和消息文件的對應關系。
3.去windows
下建立一個資料庫
db2
「
create
db
yn
pagesize
8
k」
//這里的pagesize需要和
ddl的統一
然後修改
yn.ddl
文件下
把
Linux下面
的路徑
替換為Windows
的路徑然後執行db2
-tvf
yn.ddl
4.導入資料庫
db2move
yn
load
其中會生成
一個load.out的文件
記錄錯誤信息或者
導入失敗的表
,如載入了多少行,拒絕多少行
等。
5.查看load.out
找到那些導入不成功的進行
處理,然後倒入。然後進行完整性約束
這些檢查。如有問題
Q
我吧。
④ Window下備份的DB2資料庫,在Linux下怎麼恢復
將windows下的資料庫備份文件直接復制到LINUX下,在LINUX下創建一個同名空庫,然後執行restore db命令,應該成功的。
另外一種方法是可以用db2look取得windows資料庫的DDL語句,到LINUX系統下執行一遍。數據依靠windows下執行EXPORT命令導出,LINUX下IMPORT。
⑤ 如何在Linux下實現DB2資料庫備份和恢復
Linux環境下DB2資料庫的備份和恢復的實際應用代碼如下:
DB2資料庫備份腳本:
. /home/db2admin/sqllib/db2profile
db2 backup db datedb online to /dbbackup/date include logs
cd /dbbackup/datetoday=`date +」%Y%m%d」`
file1=」*$today*」
ftpfile=`ls $file1`
echo $ftpfile
lftp -c 「open ftp地址;user用戶名密碼@\$0;put $ftpfile」
find /dbbackup/date -ctime +15 -exec rm {} \;
恢復命令:
通過root命令登錄到伺服器上後切換到資料庫用戶名下用su – db2admin命令。
進入到備份文件存放目錄
執行如下命令
[db2admin@localhost db2back]$ db2 restore db datedb from /hom
⑥ db2有表空間的LRG跟FLG文件,能恢復出來嗎
在弄明白什麼是重定向恢復之前,需要知道資料庫的文件構成,如果您對這一塊比較熟悉,可以直接跳到第一條分割線:
首先,一個DB2資料庫的文件是由兩分部構成的:表空間容器和資料庫文件,容器就是真正存放用戶數據的地方,是創建表空間時定義的;資料庫文件則包括了緩沖池信息文件、資料庫配置文件、歷史文件、日誌控制文件等。
問題是,如何定義表空間容器以及資料庫文件所在的路徑呢?答:是create database以及create tablespace的時候的參數決定的:
1. 如果CREATE DATABASE的時候指定了 AUTOMATIC STORAGE NO:
沒有指定ON path,那麼資料庫文件會被創建在資料庫管理器配置文件dftdbpath指定的目錄里;
若指定了ON path,那麼資料庫文件會被創建在ON指定的path里。
2. 如果CREATE DATABASE的時候指定了 AUTOMATIC STORAGE YES或者根本沒有指定AUTOMATIC STORAGE:
2.1 沒有指定ON path, 那麼資料庫文件和IBMSTOGROUP都會被創建/指定在dftdbpath指定的目錄里
2.2 若指定了ON path, 這個path可以指定多個路徑。 IBMSTOGROUP就使用這些路徑,表空間容器路徑解決了,資料庫文件在哪裡呢?這取決於DBPATH ON 參數:
沒有指定DBPATH ON,資料庫文件會被放在ON path指定的第一個路徑里。
若指定了DBPATH ON, 資料庫文件會放在這個路徑下。
下面正式進入重定向復原,首先是什麼情況下需要重定向恢復?
在下列任何情況下,請使用重定向復原操作:
--如果要將備份映像復原到不同於源機器的目標機器
--如果要將表空間容器復原到另一個物理位置
--如果復原操作由於一個或多個容器不可訪問而失敗
--如果要重新定義已定義的存儲器組的路徑
這兒我舉一個例子,盡可能地將上面幾種情況都包括了,假設我們有如下創建資料庫以及表空間的命令:
dbm cfg: Default database path (DFTDBPATH) = /home/db2users/e105q6a
$ db2 "create db test"
$ db2 "connect to test"
$ db2 "create STOGROUP MQSGROUP ON '/home/db2users/e105q6a/conpath1', '/home/db2users/e105q6a/conpath2'"
$ db2 "create user temporary tablespace usrtmp1 managed by automatic storage"
$ db2 "create regular tablespace rglrtbs1 managed by automatic storage USING STOGROUP MQSGROUP"
$ db2 "create tablespace tbs1 managed by system using ('/home/db2users/e105q6a/path1')"
$ db2 "create tablespace tbs2 managed by database using (file 'con2' 4000)"
那麼資料庫文件、storage group以及各個表空間的容器路徑如下:
資料庫文件/資料庫目錄:
/home/db2users/e105q6a
Storage Group:
$ db2 "SELECT VARCHAR(STORAGE_GROUP_NAME, 15) AS STOGROUP, STORAGE_GROUP_ID, VARCHAR(DB_STORAGE_PATH, 40) AS STORAGE_PATH FROM TABLE(ADMIN_GET_STORAGE_PATHS('',-1)) AS T"
STOGROUP STORAGE_GROUP_ID STORAGE_PATH
---------------- ---------------- ----------------------------------------
IBMSTOGROUP 0 /home/db2users/e105q6a
MQSGROUP 1 /home/db2users/e105q6a/conpath1
MQSGROUP 1 /home/db2users/e105q6a/conpath2
3 record(s) selected.
表空間容器(我精簡了輸出):
$ db2pd -db test -tab
Database Member 0 -- Database TEST -- Active -- Up 0 days 00:16:02 -- Date 2017-02-25-10.28.54.331489
Tablespace Configuration:
Id AS AR Type Content SGID Name Type Container
0 Yes Yes DMS Regular 0 SYSCATSPACE File /home/db2users/e105q6a/e105q6a/NODE0000/TEST/T0000000/C0000000.CAT
1 Yes No SMS SysTmp 0 TEMPSPACE1 Path /home/db2users/e105q6a/e105q6a/NODE0000/TEST/T0000001/C0000000.TMP
2 Yes Yes DMS Large 0 USERSPACE1 File /home/db2users/e105q6a/e105q6a/NODE0000/TEST/T0000002/C0000000.LRG
3 Yes Yes DMS Large 0 SYSTOOLSPACE File /home/db2users/e105q6a/e105q6a/NODE0000/TEST/T0000003/C0000000.LRG
4 Yes No SMS UsrTmp 0 USRTMP1 Path /home/db2users/e105q6a/e105q6a/NODE0000/TEST/T0000004/C0000000.UTM
5 Yes Yes DMS Regular 1 RGLRTBS1 File /home/db2users/e105q6a/conpath1/e105q6a/NODE0000/TEST/T0000005/C0000000.USR
5 Yes Yes DMS Regular 1 RGLRTBS1 File /home/db2users/e105q6a/conpath2/e105q6a/NODE0000/TEST/T0000005/C0000001.USR
6 No No SMS Regular - TBS1 Path /home/db2users/e105q6a/path1
7 No No DMS Large - TBS2 File /home/db2users/e105q6a/e105q6a/NODE0000/SQL00001/con2
----
以上面的資料庫為例,假設想要通過重定向恢復達到以下目的:
1.)把資料庫文件路徑換為/home/db2users/e105q6a/targetdbdir
2.) 把IBMSTOGROUP的路徑換為/home/db2users/e105q6a/targetstgrpsystem
3.)把MQSGROUP的路徑換為/home/db2users/e105q6a/targetstgrpuser1, /home/db2users/e105q6a/targetstgrpuser2 和/home/db2users/e105q6a/targetstgrpuser3
4.)把表空間tbs1路徑換為:/home/db2users/e105q6a/targetpath1
5.)把表空間tbs2路徑換為:/home/db2users/e105q6a/targetcon2, 並將大小改為5000
要先通過"db2 drop db test"刪掉資料庫(模擬恢復到另一個機器上),之後針對上面這幾個需求,相應的操作如下:
1.)$ db2 "restore db test to '/home/db2users/e105q6a/targetdbdir' redirect without prompting"
2.)$ db2 "SET STOGROUP PATHS FOR IBMSTOGROUP ON '/home/db2users/e105q6a/targetstgrpsystem'"
3.)$ db2 "SET STOGROUP PATHS FOR MQSGROUP ON '/home/db2users/e105q6a/targetstgrpuser1', '/home/db2users/e105q6a/targetstgrpuser2', '/home/db2users/e105q6a/targetstgrpuser3' "
4.)$ db2 "set tablespace containers for 6 using (path '/home/db2users/e105q6a/targetpath1')"
5.)$ db2 "set tablespace containers for 7 using (file '/home/db2users/e105q6a/targetcon2' 5000)"
最後發出db2 restore db test continue的命令,完成重定向恢復。
⑦ DB2資料庫和表恢復
1. 如何恢復誤刪的表
使用recover dropped table功能即可
要求是: 誤刪的表建立且數據注入之後,有該資料庫的備份
通過db2 list history dropped table all for dbname找到誤刪表的Backup ID以及該表的DDL語句
恢復誤刪表所在表空間 db2 restore db dbname tablespace(tbspname) taken at xxxx
在前滾中指定誤刪表 backup id,輸出表數據
db2 rollforward db dbname to end of logs tablespace(誤刪表所在表空間名字) recover dropped table backup id to /home/db2inst
在/home/db2inst目錄下的node0000目錄下有一個data文件,是誤刪表的數據
通過DDL重建表,並使用LOAD將DATA文件導入表中即可.
沒有做過備份的話,如果你拷貝的文件夾完整的話(既有元數據,又有資料庫數據),可以uncatalog db dbname,然後將拷貝的文件夾拷貝回來,並catalog db dbname就可以了.
⑧ db2 v9備份 恢復到v11
一、備份(backup)資料庫:1、離線全備份:
1)、首先確保沒有用戶使用DB2:
db2 list applications for db sample
2)、停掉資料庫並重新啟動,以便斷掉所有連接:
db2stop force
db2start
3)、執行備份命令:(使用TSM作為備份的介質)
db2 backup db sample use tsm
備份成功,將會返回一個時間戳。
4)、檢查備份成功:
db2 list history backup all for sample 可以看到多了這個備份的紀錄。
db2atl query 命令也可以看到返回值。
5)、備註:
首先對主節點(catalog表空間在的節點)執行備份命令,再對另外的節點也做這個操作。
2、 在線備份:
1)、首先打開一下支持在線備份的資料庫配置參數:
db2 update db cfg for sample using userexit on 啟用用戶出口
db2 update db cfg for sample using logretain on 啟用歸檔日誌
db2 update db cfg for sample using trackmod on 啟用增量備份功能
(需要各個Node都分別做設置)
開啟這些參數後,資料庫處於backup pending狀態,要求做資料庫的離線全備份。做一下離線全備份,參考上面的命令。
2)、在線備份命令如下:
db2 backup db sample online use tsm
備份成功,返回一個時間戳。
3)、同樣可以用db2atl 和db2 list history察看備份紀錄。
4)、備註:
同樣,對每個節點都做這個操作。
3、 在線增量備份
1)、在開啟了必須的三個參數的情況下,做增量備份:
db2 backup db sample online incremental use tsm
備份成功,返回一個時間戳。
2)、同樣可以用db2atl 和db2 list history察看備份紀錄。
3)、還有一種delta的備份:
db2 backup db sample online incremental delta use tsm
這兩種備份的區別,類似Oracle Exports的Incremental和Cumulative方式,db2的incremental對應oracle的cumulative方式,而db2的delta方式則對應oracle的incremental方式。
4)、備註:
同樣,對每個節點都做這個操作。
二、恢復(RESTORE)資料庫:
1、新建資料庫:
在一般管理工具, 創建資料庫(別名要和原來的資料庫別名一致)。
2、恢復資料庫:
1):斷開連接:將網路斷開,切斷所有的客戶連接,如果不行,先重啟。(如果有客戶端連接到DB2伺服器,恢復不行的,包括控制中心)
2):恢復離線備份。
3、恢復在線備份:
1)、恢復。恢復命令為:db2 restore database DBName from C:Temp taken at 20090622164642
2)、前滾。前滾命令為:db2 rollforward db DBName to end of logs(或者:控制中心->所有資料庫->dbname ->右鍵->前滾)
3)、停止前滾。停止前滾命令為:db2 rollforward db DBName stop(或者:控制中心->所有資料庫->dbname ->右鍵->停止前滾)
⑨ db2資料庫誤刪除的數據怎麼恢復
首先資料庫要可以前滾恢復(資料庫配置參數logretain或userexit打開)。
db2 connect to
dbname
db2 update db cfg using logretain on
db2 backup db dbname
(當打開歸檔日誌後,該資料庫會處於rollforward pending狀態,所以要做一次全備份)
⑩ DB2資料庫恢復!
看一下表空間是不是掛起了,按照如下步驟:
1、db2 list tablespaces show detail,可能的輸出如下:
表空間標識 = 1
名稱 = TEMPSPACE1
類型 = 系統管理空間
內容 = 系統臨時數據
狀態 = 0x0000
詳細解釋:
裝入暫掛
總頁數 = 1652
可用頁數 = 1652
已用頁數 = 1652
空閑頁數 = 不適用
高水位標記(頁) = 不適用
頁大小(位元組) = 4096
盤區大小(頁) = 32
預讀取大小(頁) = 32
容器數 = 1
狀態更改表空間標識 = 2
狀態更改對象標識 = 59
這樣的話,表明id為59的表使表空間掛起了
2、下面的語句查看引起掛起的表名
select tabname,tableid from syscat.tables where tableid=59
3、你這種情況有可能是備份文件裡面指定的表空間容器沒有創建,所以導致表空間無法恢復,可以用如下命令查看出有問題的表空間的容器,手動創建好,再執行恢復
db2 list tablespace containers for 1 show detail,其中for後面的1表示的是表空間標識,可能輸出為:
表空間 1 的表空間容器
容器標識 = 0
名稱 = C:\DB2\NODE0000\SQL00001\SQLT0001.0
類型 = 路徑
總計頁數 = 1
可用頁數 = 1
可存取 = 是
則按照這個容器的信息手動創建容器後執行恢復試一下