Oracle閃回刪除恢復誤刪資料
單位把程式做成了exe的安裝包。
安裝包在初始化資料庫的時候,會先drop所有的表,然後建表,最後插入資料。
在開發用的資料庫,一個同事加了一天班,給所有的表和欄位都加了註釋,估計是用於PD反向工程。
但是不湊巧,第二天另外一個同事執行安裝包直接把他的表覆蓋了...
大致過程如下,
同事A:
第二天,同事B:
現在需要恢復同事A的註釋。
當時解決的過程如下
1.檢視回收站,發現表還在。
2.使用閃回刪除,恢復表。
在恢復的時候,將表加上字首。
(之所以沒有刪除當前的表,再將回收站的表恢復,是因為怕新刪除的表,直接將舊錶擠出回收站)
3.刪除當前存在的表
4.將恢復的表重新命名
執行alter table命令之後,檢視註釋,已經恢復。
後來發現還有一種更簡單的方法。
表被Drop之後,放入回收站,他的table_name被改名,
而註釋的table_name會和回收站的table_name保持一致。
所以不用恢復回收站中的表,直接用回收站連線user_col_comments,生成註釋資訊即可。
安裝包在初始化資料庫的時候,會先drop所有的表,然後建表,最後插入資料。
在開發用的資料庫,一個同事加了一天班,給所有的表和欄位都加了註釋,估計是用於PD反向工程。
但是不湊巧,第二天另外一個同事執行安裝包直接把他的表覆蓋了...
大致過程如下,
同事A:
-
create table a(a int);
-
create table b(b int);
-
create table c(c int);
-
create table d(d int);
-
create table e(e int);
-
comment on column a.a is 'Test a';
-
comment on column b.b is 'Test b';
-
comment on column c.c is 'Test c';
-
comment on column d.d is 'Test d';
- comment on column e.e is 'Test e';
第二天,同事B:
-
drop table a;
-
drop table b;
-
drop table c;
-
drop table d;
-
drop table e;
-
create table a(a int);
-
create table b(b int);
-
create table c(c int);
-
create table d(d int);
- create table e(e int);
當時解決的過程如下
1.檢視回收站,發現表還在。
-
SQL> select object_name,original_name,createtime from recyclebin;
-
-
OBJECT_NAME ORIGINAL_NAME CREATETIME
-
------------------------------ -------------------------------- -------------------
-
BIN$NmbxAasiR2CPSv0of/GyzA==$0 A 2013-11-19:21:19:28
-
BIN$cyT3N5nJQMO85ho0DkpV9g==$0 B 2013-11-19:21:19:29
-
BIN$fdrhQ5VtS0q7pZ5kT9tceA==$0 C 2013-11-19:21:19:29
-
BIN$o8t+PJl3SpmRTh2gD1mUBQ==$0 D 2013-11-19:21:19:29
- BIN$RhLkOWtCTo+ls8QSwMxD9g==$0 E 2013-11-19:21:19:29
在恢復的時候,將表加上字首。
(之所以沒有刪除當前的表,再將回收站的表恢復,是因為怕新刪除的表,直接將舊錶擠出回收站)
-
SQL> select 'flashback table "'||object_name||'" to before drop rename to bak_'||original_name||';' from recyclebin;
-
-
'FLASHBACKTABLE"'||OBJECT_NAME||'"TOBEFOREDROPRENAMETOBAK_'||ORIGINAL_NAME||';'
-
---------------------------------------------------------------------------------------------------------------
-
flashback table "BIN$NmbxAasiR2CPSv0of/GyzA==$0" to before drop rename to bak_A;
-
flashback table "BIN$cyT3N5nJQMO85ho0DkpV9g==$0" to before drop rename to bak_B;
-
flashback table "BIN$fdrhQ5VtS0q7pZ5kT9tceA==$0" to before drop rename to bak_C;
-
flashback table "BIN$o8t+PJl3SpmRTh2gD1mUBQ==$0" to before drop rename to bak_D;
- flashback table "BIN$RhLkOWtCTo+ls8QSwMxD9g==$0" to before drop rename to bak_E;
-
SQL> select 'drop table '||substr(table_name,5)||' purge;' from user_tables where table_name like 'BAK%';
-
-
'DROPTABLE'||SUBSTR(TABLE_NAME,5)||'PURGE;'
-
----------------------------------------------------------------------
-
drop table A purge;
-
drop table B purge;
-
drop table C purge;
-
drop table D purge;
- drop table E purge;
-
SQL> select 'alter table '|| table_name||' rename to '||substr(table_name,5)||';' from user_tables where table_name like 'BAK%';
-
-
'ALTERTABLE'||TABLE_NAME||'RENAMETO'||SUBSTR(TABLE_NAME,5)||';'
-
----------------------------------------------------------------------------------------------------------
-
alter table BAK_A rename to A;
-
alter table BAK_B rename to B;
-
alter table BAK_C rename to C;
-
alter table BAK_D rename to D;
- alter table BAK_E rename to E;
-
SQL> select * from user_col_comments;
-
-
TABLE_NAME COLUMN_NAME COMMENTS
-
------------------------------ ------------------------------ ----------
-
A A Test a
-
B B Test b
-
C C Test c
-
D D Test d
- E E Test e
表被Drop之後,放入回收站,他的table_name被改名,
而註釋的table_name會和回收站的table_name保持一致。
-
SQL> select * from user_col_comments;
-
-
TABLE_NAME COLUMN_NAME COMMENTS
-
------------------------------ ------------------------------ ----------
-
BIN$sKho5ULVTNOOG2eLJIufhA==$0 A Test a
-
BIN$zxSn8/FpSZyllfe4evv3EQ==$0 B Test b
-
BIN$Fc/XryYETrqEMfv0aMxY1g==$0 C Test c
-
BIN$fVzUmlAeR72hOkHWH85z3g==$0 D Test d
-
BIN$r5cZoCgSSxO4DLf8xrem/A==$0 E Test e
-
-
SQL> select object_name,original_name,createtime from recyclebin;
-
-
OBJECT_NAME ORIGINAL_NAME CREATETIME
-
------------------------------ -------------------------------- -------------------
-
BIN$sKho5ULVTNOOG2eLJIufhA==$0 A 2013-11-19:21:19:28
-
BIN$zxSn8/FpSZyllfe4evv3EQ==$0 B 2013-11-19:21:19:29
-
BIN$Fc/XryYETrqEMfv0aMxY1g==$0 C 2013-11-19:21:19:29
-
BIN$fVzUmlAeR72hOkHWH85z3g==$0 D 2013-11-19:21:19:29
- BIN$r5cZoCgSSxO4DLf8xrem/A==$0 E 2013-11-19:21:19:29
-
SQL> select 'comment on column '||recyclebin.original_name||'.'||user_col_comments.column_name||' is '''||user_col_comments.comments||''';' create_comments
-
2 from recyclebin
-
3 inner join user_col_comments
-
4 on user_col_comments.table_name=recyclebin.object_name
-
5 where recyclebin.type='TABLE';
-
-
CREATE_COMMENTS
-
------------------------------------------------------------------------------------------------------------------------------------------------------------
-
comment on column A.A is 'Test a';
-
comment on column B.B is 'Test b';
-
comment on column C.C is 'Test c';
-
comment on column D.D is 'Test d';
- comment on column E.E is 'Test e';
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-777031/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle閃回查詢恢復delete刪除資料Oracledelete
- 使用閃回查詢恢復誤刪除的資料
- 閃回查詢恢復誤刪資料
- oracle恢復誤刪除資料Oracle
- oralce恢復誤刪除的表中的資料(閃回、閃回查詢)
- 【北亞資料恢復】誤刪除oracle表和誤刪除oracle表資料的資料恢復方法資料恢復Oracle
- 【備份恢復】 閃回技術之閃回刪除
- Oracle恢復誤刪資料Oracle
- 閃回查詢找到誤刪除資料
- Oracle閃回刪除Oracle
- Oracle恢復誤刪除的資料檔案Oracle
- 恢復Oracle資料庫誤刪除資料的語句Oracle資料庫
- Flashback Query恢復誤刪除資料(轉)
- 誤刪除資料了怎麼辦?小編交易誤刪除資料的恢復方法
- lsof恢復oracle誤刪除檔案Oracle
- Oracle資料恢復 - Linux / Unix 誤刪除的檔案恢復(轉)Oracle資料恢復Linux
- Oracle閃回誤刪的表Oracle
- linux下恢復誤刪除oracle的資料檔案LinuxOracle
- MySQL資料庫表誤刪除恢復(一)MySql資料庫
- truncate table 誤刪除資料後的恢復
- 循序漸進oracle第8章:Oracle的閃回特性之恢復truncate刪除表的資料Oracle
- 【oracle資料庫資料恢復】誤操作導致的資料庫誤刪除的資料恢復案例Oracle資料庫資料恢復
- Oracle-誤刪資料恢復(短期內)Oracle資料恢復
- mysql誤刪資料恢復MySql資料恢復
- 誤刪除儲存SqlServer資料庫資料恢復SQLServer資料庫資料恢復
- 2 Day DBA-管理方案物件-執行備份和恢復-使用Oracle閃回刪除功能恢復被刪除的表物件Oracle
- 閃回刪除、閃回查詢
- 循序漸進oracle第8章:Oracle的閃回特性之恢復刪除表Oracle
- Oracle 11g 閃回刪除Oracle
- Oracle 閃回刪除表原理分析Oracle
- MySQL使用binlog2sql閃回誤刪除資料MySql
- linux中誤刪除oracle資料檔案的恢復操作LinuxOracle
- FlashBack總結之閃回資料庫與閃回刪除資料庫
- Sybase ASE資料庫恢復,Sybase資料恢復,資料誤刪除恢復工具READSYBDEVICE資料庫資料恢復dev
- 誤刪除ESXi虛擬機器資料恢復虛擬機資料恢復
- 【資料庫資料恢復】LINUX環境下ORACLE資料庫誤刪除的資料恢復資料庫資料恢復LinuxOracle
- 循序漸進oracle第8章:Oracle的閃回特性之恢復已經提交刪除的表資料Oracle
- 循序漸進oracle第8章:Oracle的閃回特性之恢復刪除表的資料四種方法Oracle