본문 바로가기
프로그래밍/SQL

[Oracle*오라클] Idle Time란? 확인 및 변경 방법

by 곰 옥수수 2025. 2. 20.
728x90
반응형

DB Link 에러가 발생하여 알아보던 중 Idle Time과 연관이 있어 이에 대해 알아봤습니다. 

 

IDLE_TIME 이란?

IDLE_TIME은 오라클 데이터베이스에서 특정 세션이 일정 시간 동안 유효(Idle) 상태일 경우 자동으로 종료되도록 설정하는 값이다.

세션이 일정 시간 동안 아무런 SQL문이 실행하지 않으면 강제종료시킨다.

IDLE_TIME은 오라클 프로파일(Profile) 설정에서 관리된다. 

 

IDLE_TIME의 역할

IDLE_TIME은 오라클 데이터베이스의 세션이 일정 시간 동안 아무런 작업을 수행하지 않을 경우, 해당 세션을 자동으로 종료하는 기능을 제공합니다.

●역할 및 기능

  1. 세션 관리 최적화
    • 사용되지 않는 세션을 자동으로 종료하여 불필요한 리소스 점유를 방지.
    • 데이터베이스의 SESSIONS, PROCESSES 등의 제한을 넘지 않도록 제어.
  2. 보안 강화
    • 장시간 사용되지 않는 세션을 자동으로 종료하여 불필요한 보안 취약점을 줄임.
    • 예를 들어, 누군가 DB에 로그인한 후 로그아웃하지 않으면, IDLE_TIME이 초과되었을 때 자동으로 세션이 닫힘.
  3. DB 성능 유지
    • 오랜 시간 유지되는 불필요한 연결을 자동 종료하여 데이터베이스 성능을 향상.
    • 특히 DB Link를 통한 원격 연결에서, 비활성 세션이 많아지면 원격 DB의 리소스를 소모하므로, IDLE_TIME이 이를 방지.

 

IDLE_TIME이 적용되는 방식

  1. 사용자가 데이터베이스에 접속 (로그인)
  2. SQL 실행 없이 일정 시간 동안 아무런 작업도 하지 않음.
  3. IDLE_TIME 값(예: 30분)이 초과되면 해당 세션이 자동으로 종료됨.
  4. 다시 사용하려면 새로운 세션을 생성해야 함.

 

IDLE_TIME 설정 확인 및 변경

현재 IDLE_TIME 값 확인 (DBA 권한 필요)

SELECT PROFILE, RESOURCE_NAME, LIMIT FROM DBA_PROFILES WHERE RESOURCE_NAME = 'IDLE_TIME';

 

✔ LIMIT 값이 UNLIMITED이면 IDLE_TIME 제한이 없음.

✔ 30이면 30분 동안 아무 작업도 하지 않으면 세션이 종료됨.

 

 

IDLE_TIME 설정 변경 (DBA 권한 필요)

●IDLE_TIME 변경

ALTER PROFILE DEFAULT LIMIT IDLE_TIME 120;

 

✔ IDLE_TIME을 120분(2시간) 으로 변경
✔ 특정 프로파일을 변경하고 싶다면 DEFAULT 대신 프로파일명을 입력

 

특정 프로파일만 변경

ALTER PROFILE my_profile LIMIT IDLE_TIME 180;

 

사용자별 프로파일 확인

SELECT USERNAME, PROFILE FROM DBA_USERS WHERE USERNAME = 'DB_LINK_USER';

이 값을 기반으로 해당 프로파일을 변경해야 합니다.

 

 

IDLE_TIME이 끊어졌을 때 해결 방법

1. IDLE_TIME을 늘리거나 UNLIMITED로 설정

ALTER PROFILE DEFAULT LIMIT IDLE_TIME UNLIMITED;
 

2. 주기적으로 SQL 실행하여 세션 유지 (SELECT 1 FROM DUAL@DB_LINK)

SELECT 1 FROM DUAL@PEPT;


10분마다 쿼리를 실행하는 스케줄러
를 만들면 IDLE_TIME 초과로 인한 세션 종료 방지 가능.

 

3. SQLNET.EXPIRE_TIME 설정 (sqlnet.ora 파일)

sqlnet.ora 파일에서 SQLNET.EXPIRE_TIME 값을 설정하면 세션이 유효한지 주기적으로 확인할 수 있음.

SQLNET.EXPIRE_TIME = 10 # 10분마다 세션 유지 확인
 

 

IDLE_TIME과 DB Link (DB LINK)

DB LINK를 통해 원격 데이터베이스에 연결할 경우, 원격 DB의 IDLE_TIME 설정이 적용됨.

IDLE_TIME이 초과되면 DB LINK 연결이 끊어짐 → ORA-03150 오류 발생 가능.

 

●DB LINK 유지 방법

SELECT 1 FROM DUAL@PEP;
  • 주기적으로 실행하여 DB Link 세션 유지.

결론

1. IDLE_TIME은 유휴(Idle) 상태인 세션을 자동으로 종료하는 설정
2. DB 성능 최적화 및 보안을 위해 사용됨
3. IDLE_TIME이 초과되면 세션이 끊어지므로, 필요하면 값을 늘리거나 UNLIMITED로 설정 가능
4. DB Link를 사용할 경우 원격 DB의 IDLE_TIME 설정을 확인해야 함 

 

728x90
반응형

댓글