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
- MySQL資料災難挽救之drop tableMySql
- MySQL資料災難挽救之Delete\UpdateMySqldelete
- 【資料庫資料恢復】ORACLE常見資料災難&資料恢復可能性資料庫資料恢復Oracle
- Oralce 資料庫的災難恢復(轉)資料庫
- 【資料庫資料恢復】如何恢復Oracle資料庫truncate表的資料資料庫資料恢復Oracle
- 【oracle資料庫資料恢復】誤操作導致的資料庫誤刪除的資料恢復案例Oracle資料庫資料恢復
- Xtrabackup實現資料庫備份和災難恢復資料庫
- TRUNCATE資料恢復資料恢復
- 【北亞資料恢復】oracle資料庫執行truncate table命令怎麼恢復資料?資料恢復Oracle資料庫
- Oracle中truncate table後的資料恢復(Oracle資料恢復工具-ODU)Oracle資料恢復
- truncate table 誤刪除資料後的恢復
- SQL Server災難恢復SQLServer
- oracle之rman恢復資料庫Oracle資料庫
- oracle logminer恢復truncate table的資料Oracle
- PostgreSQL資料檔案災難恢復-解析與資料dumpSQL
- 資料庫恢復方案資料庫
- 【北亞資料恢復】誤操作導致雲伺服器表被truncate,表內資料被delete的資料恢復資料恢復伺服器delete
- Oracle資料庫恢復之resetlogsOracle資料庫
- 使用ODU恢復oracle被truncate的表資料Oracle
- 檢查Oracle災難恢復場景下的物理備庫XIOracle
- 資料備份方法及災難恢復探討(轉)
- 【資料庫資料恢復】LINUX環境下ORACLE資料庫誤刪除的資料恢復資料庫資料恢復LinuxOracle
- Oracle恢復誤刪資料Oracle
- 【資料庫資料恢復】HP-UX系統ORACLE資料庫被誤刪除的資料恢復資料庫資料恢復UXOracle
- Oracle Truncate表恢復(ODU)Oracle
- IT系統災難恢復基本指南
- 恢復Oracle資料庫誤刪除資料的語句Oracle資料庫
- 6_Oracle truncate異常恢復之bbed修復Oracle
- 7_Oracle truncate異常恢復之plsql修復OracleSQL
- 表資料被誤操作的恢復
- 伺服器資料恢復-誤操作導致mysql資料庫資料丟失的資料恢復案例伺服器資料恢復MySql資料庫