如果9i或更高版本,用logminer分析数据库生成的日志文件,8i以下只能得到DML.
V$LOGMNR_CONTENTS的OPERATION列显示为DDL,SQL_REDO列显示实际的DDL语句,SQL_UNDO列为NULL.
但此特性不能被用来恢复TRUNCATE操作,只能从备份中恢复SQL> exec sys.dbms_logmnr_d.build(dictionary_filename=>'d.ora', dictionary_location =>'D:\oracle\oradata\suntec');PL/SQL procedure successfully completedSQL>
SQL> alter session set nls_date_format='dd-mm-yy';Session alteredSQL> alter session set NLS_DATE_LANGUAGE=AMERICAN;Session altered
SQL> exec sys.dbms_logmnr.add_logfile (logfilename =>'D:\oracle\oradata\suntec\redo01.log', options=>sys.dbms_logmnr.NEW);PL/SQL procedure successfully completedSQL> exec sys.dbms_logmnr.add_logfile (logfilename =>'D:\oracle\oradata\suntec\redo02.log', options=>sys.dbms_logmnr.addfile);PL/SQL procedure successfully completedSQL> exec sys.dbms_logmnr.add_logfile (logfilename =>'D:\oracle\oradata\suntec\redo03.log', options=>sys.dbms_logmnr.addfile);PL/SQL procedure successfully completedSQL> exec sys.dbms_logmnr.start_logmnr (dictfilename =>'D:\oracle\oradata\suntec\d.ora');PL/SQL procedure successfully completed然后
SVRMGR> ALTER SYSTEM SWITCH LOGFILE;
语句已处理。
SVRMGR> ALTER SYSTEM SWITCH LOGFILE;
语句已处理。
SVRMGR> ALTER SYSTEM SWITCH LOGFILE;
语句已处理。
SVRMGR> ALTER SYSTEM SWITCH LOGFILE;
语句已处理。SQL> SELECT sql_redo, sql_undo FROM v$logmnr_contents WHERE username = 'xxx' AND seg_name = 'xxx';