[DB2]使用recover命令找回刪除的表
recover命令,是v8.2版本開始新增的一條命令,它綜合了restore和rollforward命令。但是,它只能針對資料庫級別進行的,而在oracle中,recover則可以針對表空間進行操作。
1、首先,連上資料,確認有一張表newtable後,檢視下時間戳
db2 => connect to sample
Database Connection Information
Database server = DB2/LINUX 9.7.1
SQL authorization ID = DB2INST1
Local database alias = SAMPLE
db2 => select * from newtable
AA
-----------
123
222
333
444
555
5 record(s) selected.
db2 => select current timestamp from sysibm.sysdummy1
1
--------------------------
2010-08-04-20.25.31.490261
1 record(s) selected.
2、執行刪除表的操作:
db2 => drop table newtable
DB20000I The SQL command completed successfully.
3、使用recover命令來恢復到指定的時間點,執行前需要先commit:
db2 => recover database sample to 2010-08-04-20.25.31.490261 using local time
SQL1350N The application is not in the correct state to process this request.
Reason code="1".
db2 => commit
DB20000I The SQL command completed successfully.
db2 => recover database sample to 2010-08-04-20.25.31.490261 using local time
Rollforward Status
Input database alias = sample
Number of nodes have returned status = 1
Node number = 0
Rollforward status = not pending
Next log file to be read =
Log files processed = S0000001.LOG - S0000003.LOG
Last committed transaction = 2010-08-04-20.05.33.000000 Local
DB20000I The RECOVER DATABASE command completed successfully.
小結:可以看到使用recover命令恢復時,該命令會自動得去尋找
4、最後,查詢一下表中的資料,發現已經將刪除的表找回來了:
db2 => connect to sample
Database Connection Information
Database server = DB2/LINUX 9.7.1
SQL authorization ID = DB2INST1
Local database alias = SAMPLE
db2 => select * from newtable
AA
-----------
123
222
333
444
555
5 record(s) selected.
附:
使用相同的時間,用restore和rollforward命令,還原出來的效果卻不理想:
1、執行commit,緊接著執行restore恢復表空間(之前對錶空間有備份,表中有資料存在):
db2 => commit
DB20000I The SQL command completed successfully.
db2 => restore database sample tablespace from /home/db2inst1/bak_sample taken at 20100804201914
DB20000I The RESTORE DATABASE command completed successfully.
2、將表空間前滾到指定的時間點時,出現錯誤提示。根據提示,修改命令:
db2 => rollforward db sample to 2010-08-04-20.25.31.490261 using local time and stop TABLESPACE (USERSPACE1)
SQL1275N The stoptime passed to roll-forward must be greater than or equal to
"2010-08-04-20.25.58.000000 Local", because database "SAMPLE" on node(s) "0"
contains information later than the specified time.
db2 => rollforward db sample to 2010-08-04-20.25.58.000000 using local time and stop TABLESPACE ( USERSPACE1 )
Rollforward Status
Input database alias = sample
Number of nodes have returned status = 1
Node number = 0
Rollforward status = not pending
Next log file to be read =
Log files processed = -
Last committed transaction = 2010-08-04-19.39.27.000000 Local
DB20000I The ROLLFORWARD command completed successfully.
3、連線上資料庫,卻發現被刪除的表,依舊沒有恢復回來:
db2 => connect to sample
Database Connection Information
Database server = DB2/LINUX 9.7.1
SQL authorization ID = DB2INST1
Local database alias = SAMPLE
db2 => select * from newtable
SQL0204N "DB2INST1.NEWTABLE" is an undefined name. SQLSTATE=42704
總結:recover命令,能夠將資料庫恢復到指定的時間點,是一個非常方便的工具。但是該命令,不支援表空間級的不完全恢復,實在令人覺得有些遺憾。
注:在oracle中rman中的revocer命令,支援表空間級的不完全恢復(TSPITR)。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25723371/viewspace-1254633/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle快速找回被刪除的表Oracle
- DB2 批量刪除表DB2
- DB2 恢復誤刪除的表DB2
- 利用rman的TSPITR技術找回刪除的表!
- Eclipse 刪除找回Eclipse
- DB2 刪除DB2
- 找回Oracle中Delete刪除的記錄Oracledelete
- DB2刪除schemaDB2
- 利用Logmnr找回誤刪除的資料
- db2刪除已經儲存的表儲存過程DB2儲存過程
- linux的刪除檔案命令和強制刪除命令Linux
- oracle級聯刪除使用者,刪除表空間Oracle
- linux刪除使用者命令Linux
- DB2刪除模式下物件DB2模式物件
- db2刪除重複的記錄DB2
- 使用 userdel 命令刪除 Linux 中的使用者Linux
- 10g裡的閃回表命令-- 表的刪除和恢復
- 【piner】利用Logmnr找回誤刪除資料
- 利用Logmnr找回誤刪除資料(zt)
- prune 命令用來刪除不再使用的 docker 物件。Docker物件
- tmp目錄刪除和tmpwatch命令的使用
- DB2 刪除重複記錄DB2
- db2 表被誤刪(drop)DB2
- SQL刪除資料庫裡所有表的外來鍵,同時刪除所有使用者表SQL資料庫
- 電腦怎麼找回徹底刪除的檔案?年度方法
- 【Oracle】刪除所有表Oracle
- oracle批次刪除表Oracle
- oracle批量刪除表Oracle
- mySql刪除多個表 刪除多個欄位的SQLMySql
- 華為暢享9怎麼找回刪除的相片?華為暢享9恢復已刪除照片的方法教程
- 使用CMD命令複製和刪除資料夾的方法
- elasticsearch日誌刪除命令Elasticsearch
- Oracle建立刪除使用者、角色、表空間、匯入匯出...命令總結Oracle
- db2中刪除重複記錄的問題DB2
- Linux基礎命令---刪除使用者userdelLinux
- DB2緩衝池建立修改和刪除DB2
- 怎麼找回回收站裡已經刪除的檔案
- git刪除本地分支命令 git怎麼刪除本地分支Git