| ||||||||||||||||||||||||||||||||||||
♣ JOB 및 EXPORT/IMPORT |
▶job은 export/import 가능
▶job의 export/import시 job 번호, 환경, 정의는 변경되지 않음 ♨import시 job의 번호가 database에 이미 존재하는 job은 import할 수 없고 이때는 database에 새로운 job을 submit |
♣ JOB Owner |
▶job queue에 Job을 보낸 사람 ▶job의 소유자는 job의 변경, 강제 실행, queue로부터 job의 삭제 가능 ▶현재 자신이 만든 job을 볼려면 SQL>SELECT * FROM user_jobs; |
♣ 작업 번호 |
▶job queue안에 있는 job을 식별자 ▶SYS.JOBSEQ sequence로부터 자동적으로 생성 ▶할당된 job번호는 변경되지 않음(job이 export/import시 job 번호는 유지) SQL>SELECT job FROM user_jobs; |
♣ 작업 정의 | ||||||||||||
▶SUBMIT procudure의 WHAT 매개변수에 기술된 PL/SQL code ♨job정의시 문자열 주위는 2개의 single quotation(')을 이용하고, job정의의 마지막 은 (;)을 포함한다. ▶작업 정의의 매개변수
▶작업정의 예 |
♣ 작업 실행간격 | ||||||||||
▶INTERVAL 날짜함수는 job이 실행되기 직전의 값을 계산하며, job이 성공적으로 완료 되면 INTERVAL로부터 계산된 날짜가 새 NEXT_DATE가 된다. INTERVAL 날짜함수의 결과가 NULL이고, job이 성공적으로 완료되면 queue에서 job을 Remove ▶ job이 정해진 간격으로 정기적으로 실행할 경우 ▶작업 실행간격의 일반적인 날짜표현식
|
♣ 데이타베이스 링크 및 작업 |
▶데이타베이스 링크를 사용하여 job을 submit하는 경우 링크는 사용자명과 암호를 포함해야 함. anonymous 데이카베이스 링크는 안됨 |
☞ ☞How Job Execute |
▶SNP process가 job을 실행, 작업 실행을 위해 프로세스는 작업을 실행할 세션을 생성 ▶job 실행시 작업은 보낸환경과 동일한 환경에서 소유자의 기본권한을 사용하여 실행 ▶DBMS_JOB.RUN procedure로 강제로 실행하면 사용자가 프로세스가 작업을 실행 가능 |
♣ Job Queue Locks |
▶Oracle 7은 job queue lock를 사용하여 job이 한번에 하나의 session에 실행하도록 함. job이 실행될 때 그 session에 job queue lock를 얻는다.
▶ JQ lock 정보 해석 ▶session 식별자, lock type, lock 식별자 SVRMGR> SELECT sid, type, id1, id2 FROM v$lock WHERE type='JQ'; SID TY ID1 ID2 ---- --- ----- ----- 12 JQ 0 13ID1 lock identifier는 JQ Locks에서 항상 0이다. ID2 lock identifier는 session이 실행되는 job의 번호 |
♣ 작업 실행 오류 |
▶Queue 안에 있는 Job의 성공적인 실행할 수 없는 경우
Tue Oct 07 22:41:51 1997 Errors in file C:ORAWIN95RDBMS73traceorclSNP0.TRC: ORA-12012: error on auto execute of job 1 ORA-00001: unique constraint (SCOTT.PK_EMP) violated ORA-06512: at line 1 ▶Job Failure와 실행시간 첫 번째 시도는 1분후, 두 번째는 2분후, 세 번째는 4분후, 네 번째 8분후 등등 .... Job 재시도를 계속 만약 Job이 16번째 실패한다면 job을 broken을 True로하고 더 이상 Job을 실행을 시도하지 않는다. |
☞ Removing a Job from the Job Queue |
▶DBMS_JOB package 내의 REMOVE procedure를 이용DBMS_JOB.REMOVE( job IN BINARY_INTEGER )다음 문장은 Job Queue로부터 job번호 13을 제거하는 것이다. SQL>execute DBMS_JOB.REMOVE(13);▶제한사항 ERROR at line 1: ORA-23421: job number 1 is not a job in the job queue ORA-06512: at "SYS.DBMS_SYS_ERROR", line 83 ORA-06512: at "SYS.DBMS_JOB", line 91 ORA-06512: at "SYS.DBMS_JOB", line 152 ORA-06512: at line 1 |
☞ Altering a Job |
▶CHANGE, WHAT, NEXT_DATE,INTERVAL 프로시저를 사용하여 Job Queue의 Job을 변경 ▶제한사항 |
♣ CHANGE 구문 |
▶DBMS_JOB.CHANGE procedure를 호출하여 Job에 할당된 사용자 정의 매개변수를 변경 가능 DBMS_JOB.CHANGE( job IN BINARY_INTEGER, what IN VARCHAR2, next_date IN DATE, interval IN VARCHAR2) ▶change 구문에서 WHAT, NEXT_DATE, INTERVAL에 NULL이면 현재의 값이 유지 |
♣ NEXT_DATE 구문 |
▶DBMS_JOB.NEXT_DATE procedure를 호출하여 Job을 실행할 다음 날짜 변경 DBMS_JOB.NEXT_DATE( job IN BINARY_INTEGER, next_date IN DATE) ▶예제 |
♣ INTERVAL 구문 |
▶DBMS_JOB.INTERVAL procedure를 호출하여 Job을 실행 간격을 변경 DBMS_JOB.INTERVAL( job IN BINARY_INTEGER, interval IN VARCHAR2)▶예 |
☞ Broken Jobs |
▶job이 중단되는 경우 ▶DBMS_JOB.BROKEN 프로시저 SVRMGR>DBMS_JOB.BROKEN(job IN BINARY_INTEGER, broken IN BOOLEAN, next_date IN DATE DEFAULT SYSDATE);▶job의 중단 여부 확인 ▶예] job 21를 중단되지 않은 것으로 표시하고 다음 실행날짜를 다음 월요일 설정 ▶ 중단된 작업은 DBMS_JOB.RUN 프로시저를 이용하여 재실행 가능 ▶제한사항 |
♣ 중단된 job 실행 |
▶job이 16번 실패하면 작업은 중단됨 ▶job의 재실행 방법 ▶DBMS_JOB.RUN 프로시저로 job을 재실행하면 job이 성공적으로 완료되면 job을 broken을 false로하고 실패한 실행횟수를 재설정 |
☞ Forcing a job to Execute |
▶job을 직접 실행하고자 할때 ▶DBMS_JOB.RUN 프로시저 ▶예] ▶제한사항 |
☞ Terminating a Job |
▶job 종료방법 |
자료 출처 : http://www.koug.net/xe/3396
권한 부여 하는 것은 sys계정에서 grant execute on dbms_job to users;
[출처] http://blog.naver.com/kiyoun82?Redirect=Log&logNo=110076992957
'OraclE' 카테고리의 다른 글
Automatic Undo Retention 개요 [펌] (0) | 2010.10.12 |
---|---|
10G RAC Fail-Over test중 CRS가 listener down을 늦게 감지 (0) | 2010.09.01 |
was 다국어설정 (0) | 2010.07.05 |
CONVENTIONAL PATH LOAD & DIRECT PATH LOAD (0) | 2010.05.25 |
TAPE로 EXPORT, IMPORT!, LOADER 사용하기(PIPE 사용) (0) | 2010.05.25 |