阻止Oracle LogMiner在闪回恢复区中创建归档日志

时间:2010-12-08 10:10:53

标签: oracle plsql audit

我正在尝试使用Oracle LogMiner(DBMS_LOGMNR包)来实现基于重做日志的审计跟踪功能。但每当我查询V$LOGMNR_CONTENTS时,它会在闪回恢复区(SELECT NAME FROM V$RECOVERY_FILE_DEST)中创建几个大的(最多50M)归档日志文件,尽管我的测试数据库中每小时只有几个事务。使用Oracle LogMiner几次后,将使用闪回恢复区中的所有空间,Oracle将停止工作。

有没有办法阻止Oracle LogMiner在闪回恢复区创建归档日志?

我通过以下方式初始化Oracle LogMiner:

SYS.DBMS_LOGMNR_D.BUILD(options => SYS.DBMS_LOGMNR_D.STORE_IN_REDO_LOGS);

SYS.DBMS_LOGMNR.START_LOGMNR(startScn => PREV_SCN, endScn => NEXT_SCN,
      options =>
                 SYS.DBMS_LOGMNR.COMMITTED_DATA_ONLY +
                 SYS.DBMS_LOGMNR.DICT_FROM_REDO_LOGS +
                 SYS.DBMS_LOGMNR.SKIP_CORRUPTION +
                 SYS.DBMS_LOGMNR.CONTINUOUS_MINE
   );

PREV_SCN和NEXT_SCN之间的距离在我的情况下总是很小,只涵盖几个交易。

当我使用ALTER DATABASE NOARCHIVELOG;关闭存档日志时,DBMS_LOGMNR_D.BUILD会引发ORA-01325:必须启用存档日志模式才能构建到日志流中。

1 个答案:

答案 0 :(得分:1)

Logminer在重做日志中创建条目的原因是因为您已具体询问:

 SYS.DBMS_LOGMNR_D.BUILD(options => SYS.DBMS_LOGMNR_D.STORE_IN_REDO_LOGS);
                                                      ^^^^^^^^^^^^^^^^^^

如果您不希望logminer将其数据存储在重做日志中,请改用DBMS_LOGMNR_D.STORE_IN_FLAT_FILE。有关如何使用平面文件设置logminer的分步指南,请参阅this blog note