[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
- linux的刪除檔案命令和強制刪除命令Linux
- 使用 userdel 命令刪除 Linux 中的使用者Linux
- oracle級聯刪除使用者,刪除表空間Oracle
- prune 命令用來刪除不再使用的 docker 物件。Docker物件
- 修改刪除表
- Linux基礎命令---刪除使用者userdelLinux
- linux刪除資料夾命令是什麼 linux刪除一個目錄的命令Linux
- Linux刪除檔案命令Linux
- elasticsearch日誌刪除命令Elasticsearch
- Linux中刪除資料夾使用什麼命令?Linux
- 電腦怎麼找回徹底刪除的檔案?年度方法
- mySql刪除多個表 刪除多個欄位的SQLMySql
- git刪除本地分支命令 git怎麼刪除本地分支Git
- cad刪除快捷鍵命令 cad刪除有幾種方式
- Linux下刪除資料夾的命令Linux
- 常用的DB2命令DB2
- 伺服器如何使用linux命令刪除資料夾伺服器Linux
- docker 刪除依賴的父映象的命令Docker
- Linux 刪除資料夾命令Linux
- linux 下vim中關於刪除某段,某行,或全部刪除的命令Linux
- MySQL刪除資料表MySql
- Tablespace表空間刪除
- win10怎麼找回shift delete刪除的檔案_win10按shiftdelete刪除的檔案如何恢復Win10delete
- 華為暢享9怎麼找回刪除的相片?華為暢享9恢復已刪除照片的方法教程
- mysql/mariadb學習記錄——建立刪除資料庫、表的基本命令MySql資料庫
- Mac 備忘錄( Notes)裡筆記被永久刪除後的找回方法Mac筆記
- iptables刪除命令中的相關問題
- 一行刪除所有docker container的命令DockerAI
- Oracle 刪除使用者、表空間、資料檔案、使用者下的所有表Oracle
- JZ18刪除表的節點
- MySQL如何優雅的刪除大表MySql
- 使用C# 建立、填寫、刪除PDF表單域C#
- docker刪除所有容器和映象命令Docker
- Linux基礎命令—新增/刪除組Linux
- npm 安裝、刪除依賴命令NPM
- 電話號碼刪除了怎麼恢復?通訊錄刪除的號碼怎麼找回
- python 刪除大表資料Python
- [MYSQL][1]建立,修改,刪除表MySql