세션 킬 관련하여 스케줄러 등록하면서 방법을 전달드려요.
참고한 출처는 아래와 같습니다.
[ADMIN ID님]
http://adminid.kr/oracle/51350
DBA권한에서 CREATE 권한을 부여합니다.
GRANT CREATE ANY JOB TO 계정명;
-- 동작 프로그램 설정
BEGIN
DBMS_SCHEDULER.CREATE_PROGRAM(
program_name => 'KILL_SESSION_PROGRAM',
program_action => 'KILL_SESSION',
program_type => 'STORED_PROCEDURE',
comments => 'KILL SESSION EVERY 1 HOUR PROGRAM',
enabled => TRUE);
END;
-- 동작 스케줄러 설정
BEGIN
DBMS_SCHEDULER.CREATE_SCHEDULE(
schedule_name=>'KILL_SESSION_SCHEDULE',
start_date=>TRUNC(SYSDATE)+7/24,
END_DATE=>null,
repeat_interval=>'FREQ=HOURLY;INTERVAL=1;',
comments=>'KILL_SESSION_EVERY_HOUR');
END;
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name =>'KILL_SESSION_JOB',
program_name =>'KILL_SESSION_PROGRAM',
schedule_name =>'KILL_SESSION_SCHEDULE',
comments => 'KILL_SESSION_JOB_EVERY_1HOUR',
enabled =>TRUE);
END;
-- JOB 삭제
BEGIN
DBMS_SCHEDULER.DROP_JOB(
JOB_NAME => 'KILL_SESSION_JOB',
FORCE => FALSE);
END;
-- SCHEDULAR 삭제
BEGIN
DBMS_SCHEDULER.DROP_SCHEDULE(
SCHEDULE_NAME => 'KILL_SESSION_SCHEDULE',
FORCE => FALSE);
END;
-- PROGRAM 삭제
BEGIN
DBMS_SCHEDULER.DROP_PROGRAM(
PROGRAM_NAME => 'KILL_SESSION_PROGRAM',
FORCE => FALSE);
END;
-- 등록된 JOB 수정 (NULL 수정시)
DBMS_SCHEDULER.SET_ATTRIBUTE(_NULL) (
name IN VARCHAR2,
attribute IN VARCHAR2,
value IN {BOOLEAN|DATE|TIMESTAMP|TIMESTAMP WITH
TIME ZONE|TIMESTAMP WITH LOCAL TIME ZONE| INTERVAL DAY TO SECOND});
-- 등록된 JOB 확인
SELECT * FROM USER_SCHEDULER_JOBS;
-- JOB 로그
SELECT * FROM USER_SCHEDULER_JOB_LOG;
-- 등록된 Program 확인
SELECT * FROM USER_SCHEDULER_PROGRAMS;
-- 등록된 Schedule 확인
SELECT * FROM USER_SCHEDULER_SCHEDULES;
-- 등록된 JOB 실행
EXEC DBMS_JOB.RUN(90);
-- 등록된 JOB 중지
EXEC DBMS_JOB.BROKEN(JOBNO, TRUE);
해당 변수에 대한 정보는 출처를 참고부탁드립니다.
https://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_sched.htm#BABEJGCH
https://thebook.io/006696/part03/ch15/02/03/05-1/
부족한 정보는 ORACLE API 및 더북 출처를 참고 바랍니다.