Как архивировать файлы журналов в базе данных? - PullRequest
0 голосов
/ 20 апреля 2009

Мне нужна помощь по выполнению архивных файлов журналов в базе данных, вместо того, чтобы вставлять каждый из журналов в инструкции execute ниже по одному, есть ли способ включить все журналы одновременно в один оператор в скрипте?

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 голосов
/ 20 апреля 2009

Использование 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

EDIT

Иногда проще использовать анонимный блок 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;
/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...