Oracle快速找回被刪除的表
很多情況下為了能快速找回被刪除的表,可以利用回收站找到並重建被刪除的表。
(一)
回收站裡是否可以找到被刪除的表,和undo的保留策略、空間大小有很大關係,超時或者空間不足都會導致無法閃回表,只能從備份中恢復。
# 檢視當前undo 保留策略
SQL> show parameter undo_
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 3600
undo_tablespace string UNDOTBS1
(二)
# 測試表
SQL> select table_name from dba_tables where owner=`WORKING`;
TABLE_NAME
------------------------------
DBA_OBJECTS
###被刪除的物件可以在回收站中檢視,現在沒有內容
SQL> select count(*) from dba_recyclebin;
COUNT(*)
----------
0
(三)
drop 表
# 刪除資料表
SQL> drop table working.DBA_OBJECTS;
Table dropped.
# 回收站中保留了剛刪除的表的資訊,原物件 working.DBA_OBJECTS 在回收站中有一個對映名字 BIN$NSM8ZSPA8vvgU2W8CgpvQg==$0
SQL> select owner,object_name,original_name from dba_recyclebin;
OWNER OBJECT_NAME
------------------------------ ------------------------------
ORIGINAL_NAME
--------------------------------
WORKING BIN$NSM8ZSPA8vvgU2W8CgpvQg==$0
DBA_OBJECTS
(四)
利用閃回特性,還原被刪除的資料表,並重新命名
# 可以直接閃回表,也可以rename 表名
SQL> flashback table working.DBA_OBJECTS to before drop rename to DBA_OBJECTS_bak;
Flashback complete.
SQL> select table_name from dba_tables where owner=`WORKING`;
TABLE_NAME
------------------------------
DBA_OBJECTS_BAK
SQL> select count(*),owner from working.DBA_OBJECTS_bak group by owner;
COUNT(*) OWNER
---------- ------------------------------
1 WORKING
10 OUTLN
3340 PUBLIC
512 RPTADM
609 SYSTEM
8 ORACLE_OCM
124 GWADM
55 DBSNMP
5 APPQOSSYS
9592 SYS
124 PORTALADM
11 rows selected.
(五)
誤更新資料的恢復(update delete)
如果知道確切的誤操作時間,可以閃回至某個時間點,比如20分鐘之前
# 拿上一步恢復的表做測試
SQL> select object_name,owner from working.DBA_OBJECTS_bak where owner=`WORKING`;
OBJECT_NAME
--------------------------------------------------------------------------------
OWNER
------------------------------
DBA_OBJECTS
WORKING
###修改資料
SQL> update working.DBA_OBJECTS_bak set object_name = `DBA_OBJECTS_UPDATE` where owner = `WORKING`;
1 row updated.
SQL> commit;
Commit complete.
###第二次更新
SQL> update working.DBA_OBJECTS_bak set object_type = `TABLE_UPDATE` where owner = `WORKING`;
1 row updated.
SQL> commit;
Commit complete.
###檢視更新後的資料
SQL> select object_name,owner,object_type from working.DBA_OBJECTS_bak where owner=`WORKING`;
OBJECT_NAME
--------------------------------------------------------------------------------
OWNER OBJECT_TYPE
------------------------------ -------------------
DBA_OBJECTS_UPDATE
WORKING TABLE_UPDATE
(六)
閃回資料到20分鐘之前
SQL> flashback table WORKING.DBA_OBJECTS_BAK to timestamp(systimestamp-interval `20` minute);
Flashback complete.
SQL> select object_name,owner,object_type from working.DBA_OBJECTS_bak where owner=`WORKING`;
OBJECT_NAME
--------------------------------------------------------------------------------
OWNER OBJECT_TYPE
------------------------------ -------------------
DBA_OBJECTS
WORKING TABLE
超出回滾段保留的時效,可以通過備份檔案進行恢復需要的物件。
相關文章
- 被誤刪的檔案正確處理方法,快速找回誤刪的檔案
- oracle級聯刪除使用者,刪除表空間Oracle
- 5、刪除被其它表關聯的主表
- Mac 備忘錄( Notes)裡筆記被永久刪除後的找回方法Mac筆記
- MYSQL下如何安全的快速刪除大表MySql
- 【北亞資料恢復】誤刪除oracle表和誤刪除oracle表資料的資料恢復方法資料恢復Oracle
- ORACLE刪除-表分割槽和資料Oracle
- Oracle中刪除表中的重複資料Oracle
- win10推送檔案被刪除怎麼恢復_win10推送檔案已被刪除如何找回Win10
- Oracle億級大表高效刪除案例分析Oracle
- mac誤刪檔案怎樣快速找回?Mac
- [Oracle]Oracle資料庫資料被修改或者刪除恢復資料Oracle資料庫
- 利用延時備庫找回被誤刪的資料
- 防刪庫實用指南 | 只需一步,快速召回被誤刪的表
- oracle刪除日誌Oracle
- Git恢復被刪除的分支Git
- 修改刪除表
- oracle rac 12徹底刪除,徹底刪除該死的racOracle
- 刪除oracle重複值Oracle
- Oracle 增加 修改 刪除 列Oracle
- Oracle分割槽表基礎運維-09刪除分割槽Oracle運維
- Oracle ORA-06512&ORA-08103物件已不存在之查詢期間表上索引被刪除Oracle物件索引
- 什麼樣的文章會被刪除?
- oracle建立臨時表空間和資料表空間以及刪除Oracle
- 電腦怎麼找回徹底刪除的檔案?年度方法
- MySQL socket檔案被刪除MySql
- mySql刪除多個表 刪除多個欄位的SQLMySql
- oracle rman 刪除過期的歸檔Oracle
- 刪除linux下的oracle資料庫LinuxOracle資料庫
- Oracle如何刪除表中重複記錄保留第一條Oracle
- oracle刪除重資料方法Oracle
- oracle大資料量分批刪除Oracle大資料
- 如何恢復被刪除的 GitLab 專案?Gitlab
- Oracle 刪除使用者、表空間、資料檔案、使用者下的所有表Oracle
- Oracle表 列欄位的增加、刪除、修改以及重新命名操作sqlOracleSQL
- 被誤刪的檔案快速恢復方法
- Tablespace表空間刪除
- MySQL刪除資料表MySql