--job 수행 시간 및 간격, 실행 건수 확인
select schema_user db_user
, what as job_proc
, last_date
, last_sec
, next_date
, next_sec
, total_time pros_time
, broken
, interval
, failures
from dba_jobs
order by schema_user, what
;
--현재 진행중인 dbms job
select j.sid,
s.spid,
s.serial#,
j.log_user,
j.job,
j.broken,
j.failures,
j.last_date||':'||j.last_sec last_date,
j.this_date||':'||j.this_sec this_date,
j.next_date||':'||j.next_sec next_date,
j.next_date - j.last_date interval,
j.what
from (select djr.SID,
dj.LOG_USER, dj.JOB, dj.BROKEN, dj.FAILURES,
dj.LAST_DATE, dj.LAST_SEC, dj.THIS_DATE, dj.THIS_SEC,
dj.NEXT_DATE, dj.NEXT_SEC, dj.INTERVAL, dj.WHAT
from dba_jobs dj, dba_jobs_running djr
where dj.job = djr.job ) j,
(select p.spid, s.sid, s.serial#
from v$process p, v$session s
where p.addr = s.paddr ) s
where j.sid = s.sid
1. JOB 등록
1
2
3
4
5
6
7
8 |
DBMS_JOB.SUBMIT(JOB_NO, WHAT, NEXT_DATE, INTERVAL); 예) declare job_no number; begin dbms_job.submit(job_no, 'dbms_output.put_line(' 'ok' ');' , sysdate, 'sysdate + 1' ); end ; |
참고 : 실행주기 계산
'sysdate + 7' : 일주일에 1회 실행
'sysdate + 1' : 하루에 1회 실행
'next_day(sysdate, ''TUESDAY'')' : 매주 화요일에 실행
'null' : 1회 실행
'sysdate + 1/24' : 1시간에 1회 실행
'sysdate + 1/24/60' : 1분에 1회 실행
'trunc(sysdate+1) + 2/24' : 다음날 2시에 1회 실행
2. JOB 변경
1
2
3
4
5
6
7
8
9
10 |
BEGIN DBMS_JOB.CHANGE(JOB_NO, WHAT, NEXT_DATE, INTERVAL); COMMIT ; END ; 예) BEGIN DBMS_JOB.CHANGE(10, null , null , 'sysdate+3' ); COMMIT ; END ; |
참고 : COMMIT를 사용하게 되면 변경내용이 바로 적용된다.
3. JOB 조회
1
2 |
SELECT * FROM USER_JOBS; SELECT * FROM DBA_JOBS; |
4. JOB 삭제
1
2
3
4
5 |
BEGIN DBMS_JOB.REMOVE(JOB_NO); COMMIT ; END ; / |
5. JOB 정지/재시작
1
2
3
4
5 |
EXECUTE DBMS_JOB.BROKEN(JOB_NO, TRUE ); EXECUTE DBMS_JOB.BROKEN(JOB_NO, FALSE ); 예) EXECUTE DBMS_JOB.BROKEN(10, TRUE ); EXECUTE DBMS_JOB.BROKEN(10, FALSE ); |
6. JOB 다음실행 시간 변경
1
2
3 |
EXECUTE DBMS_JOB.NEXT_DATE(JOB_NO, NEXT_DATE); 예) EXECUTE DBMS_JOB.NEXT_DATE(10, SYSDATE+1); |
7. JOB 실행주기 변경
1
2
3 |
EXECUTE DBMS_JOB.INTERVAL(JOB_NO, INTERVAL); 예) EXECUTE DBMS_JOB.INTERVAL(10, 'sysdate + 7' ); |
8. JOB 실행
1 |
EXECUTE DBMS_JOB.RUN(JOB_NO); |
'개발관련 > 디비' 카테고리의 다른 글
SQL Commands (0) | 2017.09.26 |
---|---|
exp, imp (0) | 2017.09.19 |
PK생성,삭제 (0) | 2017.04.19 |