Oacle9i Job 은 자동 으로 실행 할 수 없습니다.

3091 단어 Oacle
최근 에 회 사 는 모든 생산 데이터베이스 에 로그 감 사 를 열 었 습 니 다. 로그 감사 정 보 는 기본적으로 sys. aud $표 에 존재 합 니 다. sys. aud $표 가 너무 빨리 증가 하 는 것 을 방지 하기 위해 자동 으로 스 크 립 트 를 지 웠 습 니 다. 이 job 는 한 시간 마다 aud $표 의 정 보 를 자동 으로 삭제 합 니 다.
 
 
create or replace procedure clear_aud
as
begin
delete sys.aud$ where timestamp# <trunc(sysdate,'HH')- 1/24;
commit;
exception when others then 
rollback;
end;
/

Variable job number ;
begin
dbms_job.submit(:job, 'clear_aud;' ,trunc( sysdate + 1 / 24 , 'hh24' ), 'trunc(sysdate+1/24,''hh24'')' );
commit ;
end ;
/

 
 
 
실시 과정 에서 데이터베이스 가 있 는 system 표 의 공간 이 빠르게 증가 하 는 것 을 발 견 했 습 니 다. aud $를 보면 몇 십 만 개의 기록 이 있 는 것 을 발 견 했 습 니 다. 그러나 위의 자동 청소 스 크 립 트 는 이미 이 데이터베이스 에서 실행 되 었 기 때문에 이 문 제 를 일 으 킨 원인 은 이 job 가 자동 으로 실행 되 지 않 았 기 때 문 입 니 다. dba 를 보 세 요.jobs 표, 이 job 가 존재 하지만 자동 으로 실행 할 수 없습니다:
 
 
SQL> select JOB,THIS_DATE,NEXT_DATE, TOTAL_TIME,WHAT, INSTANCE from dba_jobs;

       JOB THIS_DATE  NEXT_DATE  TOTAL_TIME WHAT                   INSTANCE
---------- ---------- ---------- ---------- -------------------- ----------
         1 2011-07-11                     0 clear_aud;                    0

 
 
표 dbajobs 의 nextdate 필드 는 job 가 다음 에 실 행 될 시간 을 표시 합 니 다. 이 데이터베이스 의 nextdate 필드 가 비어 있 습 니 다. 이 job 가 자동 으로 실행 되 지 않 는 다 는 것 을 설명 합 니 다. 이 문 제 를 인용 한 이 유 는 spfile 의 JOB 입 니 다.QUEUE_PROCESSES 인자 가 0 으로 설정 되 었 습 니 다. 공식 문서 에서 이 인자 에 대한 설명 은 다음 과 같 습 니 다.
 
You can schedule routines (jobs) to be run periodically using the job queue. To schedule a job you submit it to the job queue, using the Oracle suppliedDBMS_JOBpackage, and specify the frequency at which the job is to be run. Additional functionality enables you to alter, disable, or delete a job that you previously submitted.

Job queue (Jnnn)processes execute jobs in the job queue.For each instance, these job queue processes are dynamically spawned by a coordinator job queue (CJQ0) background process. The coordinator periodically selects jobs that are ready to run from the jobs shown in theDBA_JOBSview. It orders them by time, and then spawns Jnnnprocesses to run the selected jobs. Each Jnnnprocess executes one of the selected jobs.

TheJOB_QUEUE_PROCESSESinitialization parameter controls whether a coordinator job queue process is started by an instance. If this parameter is set to 0, no coordinator job queue process is started at database startup, and consequently no job queue jobs are executed. TheJOB_QUEUE_PROCESSESinitialization parameter also specifies the maximum number of Jnnnprocesses that can concurrently run on an instance. The maximum number of processes that can be specified is 1000.
 
이 매개 변 수 는 동적 으로 변경 할 수 있 기 때문에 변경 명령 을 실행 하여 이 매개 변 수 를 유효 하 게 할 수 있 습 니 다.
 
ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 20;

좋은 웹페이지 즐겨찾기