2009-04-20 4 views
0

데이터베이스의 아카이브 된 로그 파일을 실행하는 데 도움이 필요합니다. 각 로그를 하나씩 아래에있는 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' 

나는 보고서의 천 로그를 통해 채광과 하나 하나가 가능하지 않습니다를 포함해야합니다.

답변

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 블록 :

+0

1000 개 이상의 로그를 스풀링해야합니다. 어떻게 각각의 로그 파일 이름을 포함하여 시작합니까? 한 번에 1000 개의 아카이브 로그 모두를 자동화하는 단일 구문이 필요합니다. –

+0

datadictionary 뷰에서 1000 개의 로그 파일 이름을 선택할 수 있습니다. 예 : v $ archived_log. 그런 다음 해당 뷰에서 열 이름을 선택하고 모든 명령을 스풀 파일에 생성하십시오. 그게 위 코드가하는 것입니다. –

+0

안녕하세요, 힌트를 보내 주셔서 감사합니다. v $ logmnr_contents보기 에 내 스크립트에서 선택한 1000 개의 로그 파일 이름을 어떻게 채워야합니까? 어떤 명령문을보기에 삽입 할 것인가? 가 STARTTIME 읽어 에코 "유형 사용자 ENDTIME (DD-MM-YYYY의 HH24! 친절"을 입력 STARTTIME (: MI : SS DD-MM-YYYY의 HH24) "을 –

관련 문제