oracle資料庫災難挽救應急方案之DDL誤操作恢復(truncate)
1.1 核心業務表誤 truncate 恢復
1.1.1 模擬 truncate 誤操作
建立 jason 業務表,如下:
SQL> create table jason as select * from dba_objects;
SQL> create index idx_jason_oid on jason(object_id);
使用者在清理資料的時候,不小心清理 jason 業務表,如下:
SQL> truncate table jason;
1.1.2 建立 truncate 恢復依賴 Pa ckage
SQL> @Recover_Truncate_Data.sql
Package created.
Package body created.
1.1.3 立即複製誤刪表所在資料檔案
鎖定被誤truncate 表所在資料檔案 ,如下:
select f.file_name,
f.bytes / 1024 / 1024 / 1024,
f.maxbytes / 1024 / 1024 / 1024,
f.autoextensible
from dba_segments s, dba_data_files f
where s.tablespace_name = f.tablespace_name
and s.owner = 'SCOTT'
and s.segment_name = 'JASON'
and s.segment_type = 'TABLE';
複製資料檔案至臨時目錄 ,如下:
SQL> !cp /oracle/app/oradata/orcl/testtbs01.dbf /tmp/fs_data_1.dat
或者
ASMCMD> cp +DATA/orcl/datafile/testtbs.438.1082648913 /tmp/ams_data_1.dat
1.1.4 嘗試使用聯機資料檔案恢復
使用聯機資料檔案進行恢復,如下:
SQL> set time on
SQL> set serveroutput on
SQL> exec fy_recover_data.recover_truncated_table('SCOTT','JASON');
11:11:28: New Directory Name: FY_DATA_DIR
11:11:28: Recover Tablespace: FY_REC_DATA; Data File: FY_REC_DATA.DAT
11:11:28: Restore Tablespace: FY_RST_DATA; Data File: FY_RST_DATA.DAT
11:11:29: Recover Table: SCOTT.JASON$
11:11:29: Restore Table: SCOTT.JASON$$
11:11:35: Copy file of Recover Tablespace: FY_REC_DATA_COPY.DAT
11:11:35: begin to recover table SCOTT.JASON
11:11:35: New Directory Name: TMP_HF_DIR
11:11:35: Recovering data in datafile /oracle/app/oradata/orcl/testtbs01.dbf
11:11:35: Use existing Directory Name: TMP_HF_DIR
11:12:08: 1234 truncated data blocks found.
11:12:08: 86429 records recovered in backup table SCOTT.JASON$$
11:12:08: Total: 1234 truncated data blocks found.
11:12:08: Total: 86429 records recovered in backup table SCOTT.JASON$$
11:12:08: Recovery completed.
11:12:08: Data has been recovered to SCOTT.JASON$$
PL/SQL procedure successfully completed.
11:12:08 SQL>
透過恢復出來的資料,恢復 jason 業務表,如下:
SQL> alter table jason rename to jason_old;
SQL> alter table jason$$ rename to jason;
1.1.5 嘗試使用離線資料檔案恢復
使用離線資料檔案進行恢復,如下:
SQL> set time on
SQL> set serveroutput on
SQL> exec fy_recover_data.recover_truncated_table('SCOTT','JASON',1,'/tmp','/tmp/fs_data_1.dat;');
11:28:00: Use existing Directory Name: FY_DATA_DIR
11:28:01: Recover Table: SCOTT.JASON$
11:28:01: Restore Table: SCOTT.JASON$$
11:28:07: Copy file of Recover Tablespace: FY_REC_DATA_COPY.DAT
11:28:07: begin to recover table SCOTT.JASON
11:28:07: Use existing Directory Name: TMP_HF_DIR
11:28:07: Recovering data in datafile /tmp/fs_data_1.dat
11:28:07: Use existing Directory Name: FY_DATA_DIR
11:28:48: 1234 truncated data blocks found.
11:28:48: 86429 records recovered in backup table SCOTT.JASON$$
11:28:48: Total: 1234 truncated data blocks found.
11:28:48: Total: 86429 records recovered in backup table SCOTT.JASON$$
11:28:48: Recovery completed.
11:28:48: Data has been recovered to SCOTT.JASON$$
PL/SQL procedure successfully completed.
11:28:48 SQL>
透過恢復出來的資料,恢復 jason 業務表,如下:
SQL> alter table jason rename to jason_old;
SQL> alter table jason$$ rename to jason;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30310891/viewspace-2920749/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle資料庫災難挽救應急方案之DDL誤操作恢復(drop)Oracle資料庫
- oracle資料庫災難挽救應急方案之DML誤操作恢復Oracle資料庫
- MySQL資料災難挽救之truncate tableMySql
- MySQL資料災難挽救之ibdata檔案誤刪恢復MySql
- 【資料庫資料恢復】誤truncate table的Oracle資料庫資料恢復方案資料庫資料恢復Oracle
- 【資料庫資料恢復】Oracle資料庫誤truncate table的資料恢復案例資料庫資料恢復Oracle
- 【資料庫資料恢復】oracle資料庫誤truncate table怎麼恢復資料?資料庫資料恢復Oracle
- 【資料庫資料恢復】ORACLE常見資料災難&資料恢復可能性資料庫資料恢復Oracle
- 【資料庫資料恢復】如何恢復Oracle資料庫truncate表的資料資料庫資料恢復Oracle
- MySQL資料災難挽救之drop tableMySql
- MySQL資料災難挽救之Delete\UpdateMySqldelete
- 【oracle資料庫資料恢復】誤操作導致的資料庫誤刪除的資料恢復案例Oracle資料庫資料恢復
- 【北亞資料恢復】oracle資料庫執行truncate table命令怎麼恢復資料?資料恢復Oracle資料庫
- Oracle資料庫恢復之resetlogsOracle資料庫
- 【資料庫資料恢復】LINUX環境下ORACLE資料庫誤刪除的資料恢復資料庫資料恢復LinuxOracle
- Oracle恢復誤刪資料Oracle
- 7_Oracle truncate異常恢復之plsql修復OracleSQL
- 6_Oracle truncate異常恢復之bbed修復Oracle
- 檢查Oracle災難恢復場景下的物理備庫XIOracle
- 【北亞資料恢復】誤操作導致雲伺服器表被truncate,表內資料被delete的資料恢復資料恢復伺服器delete
- 恢復Oracle資料庫誤刪除資料的語句Oracle資料庫
- oracle truncate table recover(oracle 如何拯救誤操作truncate的表)Oracle
- 【資料庫資料恢復】HP-UX系統ORACLE資料庫被誤刪除的資料恢復資料庫資料恢復UXOracle
- 【資料庫資料恢復】LINUX EXT3檔案系統下ORACLE資料庫誤操作導致資料丟失的資料恢復案例資料庫資料恢復LinuxOracle
- 【北亞資料恢復】誤刪除oracle表和誤刪除oracle表資料的資料恢復方法資料恢復Oracle
- 伺服器資料恢復-誤操作導致mysql資料庫資料丟失的資料恢復案例伺服器資料恢復MySql資料庫
- Sybase ASE資料庫恢復,Sybase資料恢復,資料誤刪除恢復工具READSYBDEVICE資料庫資料恢復dev
- 【資料庫資料恢復】Oracle資料庫ASM磁碟組掉線如何恢復資料?資料庫資料恢復OracleASM
- IT系統災難恢復基本指南
- 資料庫資料恢復—附加資料庫錯誤823的SQL Server資料恢復案例資料庫資料恢復SQLServer
- 【資料庫資料恢復】ASM磁碟組掉線的Oracle資料庫資料恢復案例資料庫資料恢復ASMOracle
- 【北亞資料恢復】誤操作分割槽損壞導致SqlServer資料庫資料丟失的資料恢復資料恢復SQLServer資料庫
- 【北亞資料庫資料恢復】誤操作導致資料丟失的華為雲mysql資料恢復案例資料庫資料恢復MySql
- 【儲存資料恢復案例】Netapp誤操作刪除lun的資料恢復資料恢復APP
- Sybase SQL Anywhere(ASA)資料庫恢復,ASA資料恢復,資料誤刪除恢復工具ReadASADBSQL資料庫資料恢復
- Oracle資料庫冷備和恢復Oracle資料庫
- Oracle & MySQL & PostgreSQL資料庫恢復支援OracleMySql資料庫
- 資料庫操作語言DDL資料庫