자동 세션 제거
자동 세션 제거
오라클에서 자체적으로 일정 간격으로 오래된 세션을 제거하는 Job을 생성해본다.
사용 중인 세션 조회
다음 SQL 구문을 이용하여 현재 사용 중인 세션 정보를 조회할 수 있다.
관리자 권한을 가지고 있어야 조회할 수 있다.
select sid, serial# from v$session;일정 시간이 지난 세션에 대해 조회하고 싶을 경우 logon_time 항목을 조건으로 걸어서 조회할 수 있다.
select sid, serial#, logon_time from v$session;조회한 값이 다음과 같다고 가정했을 때, 궁극적으로 실행해야 하는 구문은 다음과 같다.
1
1
5
23
100
152
alter system kill session '1, 1';
alter system kill session '5, 23';
alter system kill session '100, 152';일일이 작업할 수는 없기 때문에 다음과 같이 생성 구문을 만든 뒤 Procedure를 사용하여 실행하는 방법으로 진행한다.
select 'alter system kill session ''' || sid || ',' || serial# || '''' as ddl from v$session;실행해보면 세션 종료 구문이 ddl이라는 이름으로 생성되는 것을 알 수 있다.
우리는 열린지 1시간이 지난 세션을 제거할 예정이므로 조건을 추가하여 다음과 같이 작성한다.
SQL 구문 자동 실행
PL/SQL 을 이용하여 여러 개의 세션을 자동으로 종료할 수 있다. 단, 세션이 여러 이유로 종료되지 않을 수 있는데, 이 때는 아무런 작업을 하지 않도록 작성하였다.
실행했을 때 PL/SQL procedure successfully completed 라고 나오면 구문에 오류가 없는 것이다. 실행 완료된 구문을 프로시저(Procedure)로 만들기 위해 다음의 접두사를 추가한다.
생성된 프로시저
생성된 프로시저 코드는 다음과 같다.
자동 실행 설정
Oracle Job을 이용하여 주기적으로 실행되도록 처리할 수 있다.
job_name- job 이름comments- job 설명job_type- job 유형job_action- job이 실행할 코드start_date- 시작 시간repeat_interval- 반복 간격enabled- 사용 여부
Last updated