我需要帮助在数据库中执行存档日志文件,而不是逐个插入执行语句中的每个日志有一种方法我可以 在脚本中的一个语句中一次包含所有日志?
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'
我需要为一份报告挖掘超过一千个日志,并且逐个包含它们是不可行的。
答案 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;
/