[Oracle] 오래된 비활성 세션(inactive session)을 자동으로 죽이기

앞서 “사용자 세션을 수동으로 종료시키는 방법“을 알아봤으니 이제는 자동으로 죽이는 방법에 대해 알아보겠습니다.

Step 1. 오래된 inactive session 조회하기

– oracle 사용자로 로그인해서 스크립트를 작성해야 합니다.
– 아래 스크립트는 15분 이상 경과한 inactive session을 조회하는 sql script입니다.
– 특정 사용자의 inactive session만 조회하기 위해서는 where절의 USERNAME 조건을 uncomment합니다.
– RAC 환경이라면, GV$SESSION뷰를 사용하고 옵션에 ,@inst_id를 추가합니다.

$ vi /path/to/inactive_session.sql

set lines 600;
set pages 600;
TTITLE OFF;
SET HEAD OFF;

SELECT 'Alter system kill session ''' || SID || ',' || SERIAL# || '''immediate;' AS KILL_CMD
FROM V$SESSION
WHERE STATUS != 'ACTIVE'
--AND USERNAME = 'YOUR_USERNAME'
AND WAIT_CLASS = 'Idle'
AND round(SECONDS_IN_WAIT/60,2) > 15;
exit;
Step 2. Step 1에서 작성한 sql script를 사용해서 shell script 만들기

– 쉘 환경설정 파일에 오라클 운영 환경이 설정되어 있으면 export로 환경설정을 하지 않아도 됩니다.

$ vi /path/to/kill_inactive_session.sh
#!/bin/bash

--export ORACLE_SID=
--export ORACLE_BASE=/u01/app/oracle
--export ORACLE_HOME=${ORACLE_BASE}/product/11.2.0.4/dbhome_1/
--export PATH=$ORACLE_HOME/bin:$PATH
sqlplus -S "/as sysdba" @/path/to/inactive_sessesion.sql > /path/to/kill_inactive_session.sql
sqlplus -S "/as sysdba" @/path/to/kill_inactive_sesssion.sql > /u01/scripts/kill_inactive_session_out.log
exit
Step 3. Step 2에서 작성한 shell script에 실행권한 부여하기
$ chmod 755 /path/to/kill_inactive_session.sh
Step 4. Step 2에서 작성한 shell script을 crontab에 등록하기

– root 사용자로 로그인한 후 crontab -e 명령어를 실행합니다. crontab 명령어의 자세한 사용법
– 매 5분마다 실행되도록 등록합니다. 실행 주기는 운영 환경에 맞게 설정합니다.

$ crontab -e
*/5 * * * * su - oracle -c /path/to/kill_inactive_session.sh

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다