오라클 DBMS_SCHEDULER 스케줄러
DBMS_SCHEDULER 를 사용하면 서버의 cronjob 을 사용하지 않고도 정기적인 작업이 가능하다.
처음 크론탭에 작업을 등록하여 진행했지만 작업이 많아짐에 따라 관리가 어려울 것같아 스케줄러로 등록하기로 결정.
서버에 직접 접속하지 않고 디비버, 토드, 오렌지 같은 툴로 DB에 접속해서 결과를 확인할 수 있다.
스케줄러 관련된 작업은 dbms_scheduler.xx 로 접근할 수 있다.
1. 스케줄러 생성
dbms_scheduler.create_schedule : 작업 주기에 대한 스케줄링
-- 스케줄러 제거
BEGIN
SYS.DBMS_SCHEDULER.DROP SCHEDULE
(schedule_name =>'DBADM.SCHD_DIGWDE_DAILY_SYNC');
END;
/
-- 1. 스케줄러 생성 생성
begin
dbms_scheduler.create_schedule
(
schedule_name =>'SCHD_DIGWDB_DAILY_SYNC', --스케줄이름
start_date => systimestamp, --시작시간
end_date => null,
repeat_interval => 'freq=daily;byhour=17;byminute=30;bysecond=0;', --반복주기
comments => '매일 17:30 J0B 실행'
);
end;
2. dbms_scheduler.create_job
실행될 스케줄 잡 생성
begin
dbms_scheduler.create_job
(
job_name => 'JOB_DIGWDB_DAILY_SYNC',
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN DBADM.PRC_IMPDP_DAILY_SYNC(''IGWOWN''); DBADM.PRC_IMPDP_DAILY_SYNC(''MSMS''); END;',
schedule_name => 'SCHD_DIGWDB_DAILY_SYNC', -- 실행될 스케줄명 (앞에서 생성한)
comments => 'DIGWDB DDL 동기화 JOB 스케줄'
);
end;
begin
dbms_scheduler.create_job
(
job_name => 'JOB_MIG_HOURLY_DROP_TAB_SYNC',
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN RTIS_MIG.SP_OBJ_SYNC_CROP(); END;',
schedule_name => MIG_OBJ_SYN_SCH_HOUR',
comments => 'MIG_OBJ_SYN_HOUR'
);
end;
3. 스케줄러 잡 확인
SELECT *
FROM DBA_SCHEDULER_JOBS
WHERE OWNER = 'DBADM';
4. 유저별 스케줄 잡 실행 로그
SELECT *
FROM DBA_SCHEDULER_JOB_LOG
WHERE OWNER = 'DBADM';
5. 전체 스케줄 잡 실행 로그
SELECT *
FROM DBA_SCHEDULER_JOB_RUN_DETAILS
ORDER BY LOG_DATE DESC;
6. 실행중인 스케줄 잡
SELECT JOB_NAME
, SESSION_ID
, RUNNING_INSTANCE
, ELAPSED_TIME
, CPU_USED
FROM DBA_SCHEDULER_RUNNING_JOBS;
--진행중 작업 수
SELECT COUNT(*) FROM DBA_SCHEDULER_RUNNING_JOBS;
'새싹 DBA > Scripts' 카테고리의 다른 글
[오라클] DB내 스키마 테이블 이관 스크립트 ft. DDL 추출 프로시저 (0) | 2024.07.26 |
---|---|
[PL/SQL] DBLINK 사용 IMPDP 테이블 이관 프로시저 (2) | 2024.07.23 |
[오라클] DAILY 테이블 이관 프로시저 스크립트 (DB간 싱크, DDL 활용) (0) | 2024.07.23 |
테이블 DDL 추출 스크립트 (0) | 2024.07.22 |
[오라클]audit(시스템) 컬럼 존재, 순서 확인 쿼리 (0) | 2024.06.26 |