利用rman的TSPITR技術找回刪除的表!
1.首先建立一個輔助例項
2。備份目標資料庫,
backup as compressed backupset database include current controlfile plus all archivedlog format=......;
SQL> select * from t;
ID NAME BRITH
---------- -------------------- --------------
1 a 14-12月-06
SQL> set time on
12:29:30 SQL> SELECT TABLE_NAME FROM USER_TABLES;
TABLE_NAME
------------------------------
T
TT
12:41:48 SQL> create table ttt(id int) tablespace test;
表已建立。
12:42:07 SQL> insert into ttt values(1);
已建立 1 行。
12:42:12 SQL> commit;
提交完成。
12:42:14 SQL> drop table t;
表已刪除。
C:>RMAN TARGET AUXILIARY CATALOG
恢復管理器: Release 10.2.0.1.0 - Production on 星期五 12月 15 15:02:21 2006
Copyright (c) 1982, 2005, Oracle. All rights reserved.
連線到目標資料庫: TEST (DBID=1906627575)
連線到恢復目錄資料庫
已連線到輔助資料庫: TEST (未裝載)
RMAN> RUN{
2> allocate auxiliary channel c1 type disk;
3> recover tablespace 'TEST' until time "to_date('12/15/2006 12:42:14' , 'mm/dd/
yyyy hh24:mi:ss')" AUXILIARY DESTINATION 'E:oracleproduct10.2.0oradataauxi'
;
4> release channel c1;
5> }
分配的通道: c1
通道 c1: sid=156 devtype=DISK
啟動 recover 於 15-12月-06
記憶體指令碼的內容:
{
# set the until clause
set until time "to_date('12/15/2006 12:42:14' , 'mm/dd/yyyy hh24:mi:ss')";
# restore the controlfile
restore clone controlfile;
# mount the controlfile
sql clone 'alter database mount clone database';
# archive current online log for tspitr to a resent until time
sql 'alter system archive log current';
# avoid unnecessary autobackups for structural changes during TSPITR
sql 'begin dbms_backup_restore.AutoBackupFlag(FALSE); end;';
# resync catalog after controlfile restore
resync catalog;
}
正在執行記憶體指令碼
正在執行命令: SET until clause
啟動 restore 於 15-12月-06
通道 c1: 正在開始恢復資料檔案備份集
通道 c1: 正在復原控制檔案
通道 c1: 正在讀取備份段 E:RMANATEST_09I50SMU_1_1.BAK
通道 c1: 已恢復備份段 1
段控制程式碼 = E:RMANATEST_09I50SMU_1_1.BAK 標記 = TAG20061215T124006
通道 c1: 恢復完成, 用時: 00:00:03
輸出檔名=E:ORACLEPRODUCT10.2.0ORADATAAUXICONTROL01.CTL
輸出檔名=E:ORACLEPRODUCT10.2.0ORADATAAUXICONTROL02.CTL
完成 restore 於 15-12月-06
sql 語句: alter database mount clone database
sql 語句: alter system archive log current
sql 語句: begin dbms_backup_restore.AutoBackupFlag(FALSE); end;
正在啟動全部恢復目錄的 resync
完成全部 resync
記憶體指令碼的內容:
{
# generated tablespace point-in-time recovery script
# set the until clause
set until time "to_date('12/15/2006 12:42:14' , 'mm/dd/yyyy hh24:mi:ss')";
plsql <<declare
sqlstatement varchar2(512);
offline_not_needed exception;
pragma exception_init(offline_not_needed, -01539);
begin
sqlstatement := 'alter tablespace '|| 'TEST' ||' offline for recover';
krmicd.writeMsg(6162, sqlstatement);
krmicd.execSql(sqlstatement);
exception
when offline_not_needed then
null;
end; >>>;
# set a destination filename for restore
set newname for datafile 1 to
"E:ORACLEPRODUCT10.2.0ORADATAAUXISYSTEM01.DBF";
# set a destination filename for restore
set newname for datafile 2 to
"E:ORACLEPRODUCT10.2.0ORADATAAUXIUNDOTBS01.DBF";
# set a destination tempfile
set newname for tempfile 1 to
"E:ORACLEPRODUCT10.2.0ORADATAAUXITEMP01.DBF";
# set a destination tempfile
set newname for tempfile 2 to
"E:ORACLEPRODUCT10.2.0ORADATAAUXITMP.DBF";
# set a destination filename for restore
set newname for datafile 4 to
"E:ORACLEPRODUCT10.2.0ORADATATESTTEST.DBF";
# rename all tempfiles
switch clone tempfile all;
# restore the tablespaces in the recovery set plus the auxilliary tablespaces
restore clone datafile 1, 2, 4;
switch clone datafile all;
#online the datafiles restored or flipped
sql clone "alter database datafile 1 online";
#online the datafiles restored or flipped
sql clone "alter database datafile 2 online";
#online the datafiles restored or flipped
sql clone "alter database datafile 4 online";
# make the controlfile point at the restored datafiles, then recover them
recover clone database tablespace "TEST", "SYSTEM", "UNDOTBS1" delete archivelo
g;
alter clone database open resetlogs;
# PLUG HERE the creation of a temporary tablespace if export fails due to lack
# of temporary space.
# For example in Unix these two lines would do that:
#sql clone "create tablespace aux_tspitr_tmp
# datafile ''/tmp/aux_tspitr_tmp.dbf'' size 500K";
}
正在執行記憶體指令碼
正在執行命令: SET until clause
sql 語句: alter tablespace TEST offline for recover
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
啟動 restore 於 15-12月-06
通道 c1: 正在開始恢復資料檔案備份集
通道 c1: 正在指定從備份集恢復的資料檔案
正將資料檔案00001恢復到E:ORACLEPRODUCT10.2.0ORADATAAUXISYSTEM01.DBF
正將資料檔案00002恢復到E:ORACLEPRODUCT10.2.0ORADATAAUXIUNDOTBS01.DBF
正將資料檔案00004恢復到E:ORACLEPRODUCT10.2.0ORADATATESTTEST.DBF
通道 c1: 正在讀取備份段 E:RMANATEST_08I50SL7_1_1.BAK
通道 c1: 已恢復備份段 1
段控制程式碼 = E:RMANATEST_08I50SL7_1_1.BAK 標記 = TAG20061215T124006
通道 c1: 恢復完成, 用時: 00:01:09
完成 restore 於 15-12月-06
資料檔案 4 已轉換成資料檔案副本
輸入資料檔案副本 recid=9 stamp=609260651 檔名=E:ORACLEPRODUCT10.2.0ORADATA
TESTTEST.DBF
sql 語句: alter database datafile 1 online
sql 語句: alter database datafile 2 online
sql 語句: alter database datafile 4 online
啟動 recover 於 15-12月-06
正在開始介質的恢復
存檔日誌執行緒 1 序列 116 已作為檔案 E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREA
TESTARCHIVELOG2006_12_15O1_MF_1_116_2R49V29R_.ARC 存在於磁碟上
存檔日誌執行緒 1 序列 117 已作為檔案 E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREA
TESTARCHIVELOG2006_12_15O1_MF_1_117_2R4L4S2X_.ARC 存在於磁碟上
存檔日誌檔名 =E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREATESTARCHIVELOG200
6_12_15O1_MF_1_116_2R49V29R_.ARC 執行緒 =1 序列 =116
存檔日誌檔名 =E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREATESTARCHIVELOG200
6_12_15O1_MF_1_117_2R4L4S2X_.ARC 執行緒 =1 序列 =117
介質恢復完成, 用時: 00:00:02
完成 recover 於 15-12月-06
資料庫已開啟
記憶體指令碼的內容:
{
# export the tablespaces in the recovery set
host 'exp userid =" as sysdba" point_in_time_recover=y tablespa
ces=
TEST file=
tspitr_a.dmp';
# shutdown clone before import
shutdown clone immediate
# import the tablespaces in the recovery set
host 'imp userid =" as sysdba" point_in_time_recover=y file=
tspitr_a.dmp';
# online/offline the tablespace imported
sql "alter tablespace TEST online";
sql "alter tablespace TEST offline";
# enable autobackups in case user does open resetlogs from RMAN after TSPITR
sql 'begin dbms_backup_restore.AutoBackupFlag(TRUE); end;';
# resync catalog after tspitr finished
resync catalog;
}
正在執行記憶體指令碼
Export: Release 10.2.0.1.0 - Production on 星期五 12月 15 15:04:34 2006
Copyright (c) 1982, 2005, Oracle. All rights reserved.
連線到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已匯出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
伺服器使用 ZHS16CGB231280 字符集 (可能的字符集轉換)
注: 將不匯出表資料 (行)
即將匯出表空間時間點恢復物件...
對於表空間 TEST...
. 正在匯出簇定義
. 正在匯出表定義
. . 正在匯出表 TT
EXP-00091: 正在匯出有問題的統計資訊。
EXP-00008: 遇到 ORACLE 錯誤 6552
ORA-06552: PL/SQL: Compilation unit analysis terminated
ORA-06553: PLS-553: 無法識別字符集名稱
. . 正在匯出表 T
EXP-00091: 正在匯出有問題的統計資訊。
EXP-00008: 遇到 ORACLE 錯誤 6552
ORA-06552: PL/SQL: Compilation unit analysis terminated
ORA-06553: PLS-553: 無法識別字符集名稱
. . 正在匯出表 TTT
. 正在匯出引用完整性約束條件
. 正在匯出觸發器
. 終止時間點恢復
匯出成功終止, 但出現警告。
主機命令完成
資料庫已關閉
資料庫已解除安裝
Oracle 例項已關閉
Import: Release 10.2.0.1.0 - Production on 星期五 12月 15 15:05:01 2006
Copyright (c) 1982, 2005, Oracle. All rights reserved.
連線到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
經由常規路徑由 EXPORT:V10.02.01 建立的匯出檔案
即將匯入表空間時間點恢復物件...
已經完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的匯入
匯入伺服器使用 ZHS16CGB231280 字符集 (可能的字符集轉換)
. 正在將 SYS 的物件匯入到 SYS
. 正在將 XYS 的物件匯入到 XYS
. . 正在匯入表 "TT"
. . 正在匯入表 "T"
. . 正在匯入表 "TTT"
. 正在將 SYS 的物件匯入到 SYS
成功終止匯入, 沒有出現警告。
主機命令完成
sql 語句: alter tablespace TEST online
sql 語句: alter tablespace TEST offline
sql 語句: begin dbms_backup_restore.AutoBackupFlag(TRUE); end;
正在啟動全部恢復目錄的 resync
完成全部 resync
已刪除輔助例項檔案 E:ORACLEPRODUCT10.2.0ORADATAAUXICONTROL01.CTL
已刪除輔助例項檔案 E:ORACLEPRODUCT10.2.0ORADATAAUXICONTROL02.CTL
已刪除輔助例項檔案 E:ORACLEPRODUCT10.2.0ORADATAAUXISYSTEM01.DBF
已刪除輔助例項檔案 E:ORACLEPRODUCT10.2.0ORADATAAUXIUNDOTBS01.DBF
已刪除輔助例項檔案 E:ORACLEPRODUCT10.2.0ORADATAAUXITEMP01.DBF
已刪除輔助例項檔案 E:ORACLEPRODUCT10.2.0ORADATAAUXITMP.DBF
完成 recover 於 15-12月-06
--====================================
14:48:22 SQL> select tablespace_name , status from dba_tablespaces;
TABLESPACE_NAME STATUS
------------------------------ ------------------
SYSTEM ONLINE
UNDOTBS1 ONLINE
SYSAUX ONLINE
TEMP ONLINE
TEST OFFLINE
TMP ONLINE
TEST1 ONLINE
已選擇7行。
15:06:14 SQL> alter tablespace test online;
表空間已更改。
15:06:28 SQL> show user
USER 為 "XYS"
15:06:32 SQL> select * from t;
ID NAME BRITH
---------- -------------------- -------------------
1 a 2006/12/14 08:44:24
我們看到被刪除的表T又找回來了!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/19602/viewspace-61710/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle快速找回被刪除的表Oracle
- 利用RMAN做TSPITR
- 利用Logmnr找回誤刪除的資料
- 對刪除分割槽的分割槽表執行TSPITR
- [DB2]使用recover命令找回刪除的表DB2
- 【piner】利用Logmnr找回誤刪除資料
- 利用Logmnr找回誤刪除資料(zt)
- 利用rman刪除硬碟上丟失的archivelog硬碟Hive
- ORACLE 11g TSPITR恢復被刪除的表空間Oracle
- 利用rman全備恢復刪除的資料庫資料庫
- Eclipse 刪除找回Eclipse
- 【RMAN】表空間基於時間點的RMAN恢復-TSPITR
- 找回Oracle中Delete刪除的記錄Oracledelete
- 閃回刪除技術:
- Oracle表空間時間點恢復技術TSPITROracle
- 利用延時備庫找回被誤刪的資料
- rman 刪除日誌的幾有用的命令
- oracle rman 刪除過期的歸檔Oracle
- rman刪除指定時間的歸檔
- Oracle RMAN實現“一鍵式”表空間TSPITROracle
- 【TSPITR】RMAN表空間基於時間點的自動恢復
- RMAN全自動TSPITR
- 利用PHP指令碼刪除MySQL上所有的表PHP指令碼MySql
- 【Oracle】 rman 刪除歸檔日誌的命令Oracle
- TSPITR方式資料庫找回誤操作丟失的資料資料庫
- 電腦怎麼找回徹底刪除的檔案?年度方法
- RMAN: Tablespace Point In Time Recovery (TSPITR)
- 華為暢享9怎麼找回刪除的相片?華為暢享9恢復已刪除照片的方法教程
- rman刪除舊的歸檔日誌問題
- Rman Crosscheck刪除失效歸檔ROS
- mySql刪除多個表 刪除多個欄位的SQLMySql
- RMAN正確地刪除Archivelog以及設定有備庫的歸檔刪除策略Hive
- 怎麼找回回收站裡已經刪除的檔案
- 如何找回誤刪的檔案?
- rman 刪除指定時間點的歸檔日誌
- win10怎麼找回shift delete刪除的檔案_win10按shiftdelete刪除的檔案如何恢復Win10delete
- Laravel 中利用『模型事件』來實現刪除資料時的連帶刪除Laravel模型事件
- 利用rsync刪除rm -rf 不能一次性刪除的大量檔案