Oracle数据库在没有备份情况下在对表中的某数据表进行truncate删除后,通过oracle dul进行非常规恢复
1.准备oracle dul测试环境
SQL> select count(*) from t_xifenfei; COUNT(*) ---------- 67854 SQL> desc t_xifenfei Name Null? Type ----------------------------------------- -------- ---------------------------- OWNER VARCHAR2(30) OBJECT_NAME VARCHAR2(128) SUBOBJECT_NAME VARCHAR2(30) OBJECT_ID NUMBER DATA_OBJECT_ID NUMBER OBJECT_TYPE VARCHAR2(19) CREATED DATE LAST_DDL_TIME DATE TIMESTAMP VARCHAR2(19) STATUS VARCHAR2(7) TEMPORARY VARCHAR2(1) GENERATED VARCHAR2(1) SECONDARY VARCHAR2(1) NAMESPACE NUMBER EDITION_NAME VARCHAR2(30) SQL> select object_id,data_object_id from user_objects where object_name='T_XIFENFEI'; OBJECT_ID DATA_OBJECT_ID ---------- -------------- 68332 68332 SQL> TRUNCATE TABLE T_XIFENFEI; Table truncated. SQL> ALTER SYSTEM CHECKPOINT; System altered. SQL> select object_id,data_object_id from user_objects where object_name='T_XIFE NFEI'; OBJECT_ID DATA_OBJECT_ID ---------- -------------- 68332 68468 SQL> SELECT TABLESPACE_NAME FROM DBA_SEGMENTS WHERE SEGMENT_NAME='T_XIFENFEI'; TABLESPACE_NAME ------------------------------ USERS SQL> SELECT FILE_ID FROM DBA_DATA_FILES WHERE TABLESPACE_NAME='USERS'; FILE_ID ---------- 4 SQL> SELECT file#,RFILE#,NAME FROM V$DATAFILE; FILE# RFILE# NAME ---------- ---------- -------------------------------------------------- 1 1 E:\ORACLE\ORADATA\XIFENFEI\SYSTEM01.DBF 2 2 E:\ORACLE\ORADATA\XIFENFEI\SYSAUX01.DBF 3 3 E:\ORACLE\ORADATA\XIFENFEI\UNDOTBS01.DBF 4 4 E:\ORACLE\ORADATA\XIFENFEI\USERS01.DBF 5 5 E:\ORACLE\ORADATA\XIFENFEI\UNDO01.DBF 6 6 E:\ORACLE\ORADATA\XIFENFEI\CZUM01.DBF 6 rows selected.
备注说明:因为我们为了测试,所以直接查询出来了data_object_id,在实际的恢复中,我们需要使用logminer来找出来历史dataobj#
2.dul恢复truncate 表
e:\dul10>dul.exe Data UnLoader 10.2.4.37 - Oracle Internal Only - on Mon Feb 04 00:20:08 2013 with 64-bit io functions Copyright (c) 1994 2010 Bernard van Duijnen All rights reserved. Strictly Oracle Internal use Only DUL: Warning: Recreating file "dul.log" Reading USER.dat 65 entries loaded Reading OBJ.dat 67944 entries loaded and sorted 67944 entries Reading SCANNEDLOBPAGE.dat 8 entries loaded and sorted 8 entries Reading TAB.dat 1869 entries loaded Reading COL.dat 77409 entries loaded and sorted 77409 entries Reading SEG.dat 23 entries loaded Reading EXT.dat 54 entries loaded and sorted 54 entries Reading TABPART.dat 110 entries loaded and sorted 110 entries Reading TABCOMPART.dat 1 entries loaded and sorted 1 entries Reading TABSUBPART.dat 32 entries loaded and sorted 32 entries Reading INDPART.dat 127 entries loaded and sorted 127 entries Reading INDCOMPART.dat 0 entries loaded and sorted 0 entries Reading INDSUBPART.dat 0 entries loaded and sorted 0 entries Reading IND.dat 3729 entries loaded Reading LOB.dat DUL: Warning: Increased the size of DC_LOBS from 1024 to 8192 entries 1109 entries loaded Reading ICOL.dat 4868 entries loaded Reading COLTYPE.dat 2823 entries loaded Reading TYPE.dat 2082 entries loaded Reading ATTRIBUTE.dat 8736 entries loaded Reading COLLECTION.dat 591 entries loaded Reading COMPATSEG.dat 0 entries loaded Reading BOOTSTRAP.dat 60 entries loaded Reading LOBFRAG.dat 1 entries loaded and sorted 1 entries Reading LOBCOMPPART.dat 0 entries loaded and sorted 0 entries Reading UNDO.dat 24 entries loaded Reading TS.dat 7 entries loaded Reading PROPS.dat 36 entries loaded Database character set is ZHS16GBK Database national character set is AL16UTF16 Found db_id = 1422012639 Found db_name = XIFENFEI DUL> SCAN DATAFILE 4; DUL: Warning: Recreating file "EXT.dat" DUL: Warning: Recreating file "SEG.dat" DUL: Warning: Recreating file "COMPATSEG.dat" DUL: Warning: Recreating file "SCANNEDLOBPAGE.dat" Scanning tablespace 4, data file 4 ... 23 segment header and 1601 data blocks tablespace 4, data file 4: 2079 blocks scanned Reading EXT.dat 54 entries loaded and sorted 54 entries Reading SEG.dat 23 entries loaded Reading COMPATSEG.dat 0 entries loaded Reading SCANNEDLOBPAGE.dat 8 entries loaded and sorted 8 entries DUL> ALTER SESSION SET USE_SCANNED_EXTENT_MAP = TRUE; Parameter altered DUL> scan extents; DUL: Warning: Recreating file "seen_tab.dat" DUL: Warning: Recreating file "seen_col.dat" Scanning extents without segment header Scanning extent id (dba 0, obj 68332) Analyzing segment: data object id 68332 heap organized table Col Seen Max PCT PRINT NUMBERS DATES TIMESTAMP WITH TZ INTRVAL ROWIDS LOB no count Size NUL 75%100% AnyNice AnyNice AnyNice AnyNice Y2M D2S AnyNice 1 67854 18 0 100 100 0 0 0 0 0 0 0 0 0 0 44 0 0 ………… 14 67854 2 0 0 0 100 100 0 0 0 0 0 0 0 0 0 0 0 |SYS| |C_FILE#_BLOCK#| || |8| |8| |CLUSTER| |20-JAN-2013 AD 17:13:18| |20-JAN-20 ………… :18| |2013-01-20:17:13:18| |VALID| |N| |N| |N| |1| UNLOAD TABLE OBJNO68332 ( COL001 VARCHAR2(18), COL002 VARCHAR2(30), COL003 VARCH AR2(27) , COL004 NUMBER, COL005 NUMBER, COL006 VARCHAR2(18), COL007 DATE , COL008 DATE, COL009 VARCHAR2(19), COL010 VARCHAR2(7), COL011 VARCHAR2( 1) , COL012 VARCHAR2(1), COL013 VARCHAR2(1), COL014 NUMBER ) STORAGE( DATAOBJNO 68332 ); --自己拼接语句 DUL> UNLOAD TABLE t_xifenfei_1(OWNER VARCHAR2(30),OBJECT_NAME VARCHAR2(128),SUB OBJECT_NAME VARCHAR2(30),OBJECT_ID NUMBER,DATA_OBJECT_ID NUMBER,OBJECT_TY PE VARCHAR2(19),CREATED DATE,LAST_DDL_TIME DATE,TIMESTAMP VARCHAR2(19),ST ATUS VARCHAR2(7),TEMPORARY VARCHAR2(1),GENERATED VARCHAR2(1),SECONDARY VARCHAR2(1),NAMESPACE NUMBER,EDITION_NAME VARCHAR2(30)) STORAGE( DATAOBJNO 6 8332 ); . unloading table T_XIFENFEI_1 DUL: Warning: Recreating file "T_XIFENFEI_1.ctl" 67854 rows unloaded
补充说明:
1.在最新的dul 10.2.0.5.20中,不支持scan extents命令
2.在最新的dul 10.2.0.5.20中,挖出来的无数据字典数据,字符串转换为16进制值
--------------------------------------ORACLE-DBA----------------------------------------
最权威、专业的Oracle案例资源汇总之案例:Oracle dul数据挖掘 没有数据库备份非常规恢复truncate删除的数据表
原文唯一网址:http://www.oracleplus.net/arch/oracle-20160522-217.html