如何归档数据库中的日志文件?

时间:2009-04-20 12:55:00

标签: oracle plsql

我需要帮助在数据库中执行存档日志文件,而不是逐个插入执行语句中的每个日志有一种方法我可以 在脚本中的一个语句中一次包含所有日志?

EXECUTE DBMS_LOGMNR.ADD_LOGFILE(LOGFILENAME => '/u02/arch/1_50662_581101112.arc'
,OPTIONS => DBMS_LOGMNR.NEW);
EXECUTE DBMS_LOGMNR.ADD_LOGFILE(LOGFILENAME => '/u02/arch/1_50706_581101112.arc'

我需要为一份报告挖掘超过一千个日志,并且逐个包含它们是不可行的。

1 个答案:

答案 0 :(得分:0)

使用SQL和sqlplus生成假脱机文件的命令

spool c:\temp\log.sql

    select 'EXECUTE DBMS_LOGMNR.ADD_LOGFILE(LOGFILENAME =>'''||name||'''||,OPTIONS =>   DBMS_LOGMNR.NEW);' 
from  v$archived_log;

spool off

然后在sqlplus中执行假脱机文件

start c:\temp\log.sql

修改

有时使用匿名PL / SQL块更容易:

declare
begin
    for c in (select name from v$archived_log where name is not null)
    loop    
      EXECUTE IMMEDIATE 'begin DBMS_LOGMNR.ADD_LOGFILE(:1); end;' 
        USING c.name;    
    end loop;
end;
/