본문 바로가기
Database

[ Oracle] 오라클 USERENV() 함수로 접속 정보와 세션 상태 추적하기

by 코드개미 2025. 6. 7.

오라클 USERENV() 함수로 접속 정보와 세션 상태 추적하기
[Oracle] USERENV

 

1. USERENV 함수란?

USERENV는 Oracle Database에서 사용자의 환경 및 세션 정보를 조회하기 위한 내장 함수입니다. 보통 PL/SQL 트리거나 감사 로그 등에서 접속 정보, OS 사용자, 인증 방법 등을 추적하기 위해 사용됩니다.

2. 기본 문법

USERENV(parameter)

parameter는 문자열이며, USERENV가 반환할 정보를 지정합니다.

3. 주요 파라미터 목록 및 설명

파라미터 설명 예시 결과
ISDBA 현재 사용자가 DBA 권한을 가지고 있는지 여부 TRUE / FALSE
LANGUAGE 데이터베이스 언어 및 문자셋 AMERICAN_AMERICA.AL32UTF8
SESSIONID 세션 식별자 12345
TERMINAL 사용자의 터미널 이름 또는 접속 IP pts/2 또는 192.168.0.5
AUTHENTICATED_ID 외부 인증된 사용자명 CUSTOM_APP
OS_USER 운영체제 계정명 oracle
SESSION_USER 현재 세션의 사용자 이름 HR

4. USERENV 예제

4.1. 현재 접속자 정보 확인

SELECT USERENV('SESSION_USER') AS session_user,
       USERENV('OS_USER') AS os_user,
       USERENV('TERMINAL') AS terminal
  FROM dual;

4.2. 트리거에서 USERENV 사용하기

감사 로깅용 트리거 예제입니다.

CREATE OR REPLACE TRIGGER log_update
BEFORE UPDATE ON employees
FOR EACH ROW
BEGIN
  INSERT INTO audit_log (user_name, terminal_name, update_time)
  VALUES (USERENV('SESSION_USER'), USERENV('TERMINAL'), SYSDATE);
END;

5. USERENV vs SYS_CONTEXT 비교

항목 USERENV SYS_CONTEXT
기능 환경/세션 정보 조회 보다 세분화된 환경 정보 조회
유연성 제한적 파라미터 네임스페이스 기반 확장성 우수
대표 네임스페이스 없음 (내장) USERENV, CLIENT_IDENTIFIER 등
활용도 기본적인 감시나 로깅 보안, 정책 기반 트래킹 등 고급 활용

6. USERENV 함수 사용 시 유의사항

  • 파라미터는 문자열로 정확히 입력해야 하며, 대소문자 구분은 하지 않음
  • 한 세션에서 동일한 값이 지속적으로 반환됨
  • 보안 로그 수집, 업무 감시 등에 적절히 활용 가능

7. 실무 활용 팁

  • 운영 환경에서 접속 로그를 저장할 때 트리거나 프로시저 내부에서 사용
  • 사용자 행동 추적 시 기본 정보 수집에 유리
  • DB 접근 제어 로직에 내장하여 동적 제어 가능

8. 결론

Oracle의 USERENV 함수는 간단하지만 매우 강력한 기능을 제공합니다. 특히 보안, 감시, 감사 로그 관리 등 다양한 실무 상황에서 유용하게 활용될 수 있습니다. 다만 고급 환경 정보가 필요한 경우에는 SYS_CONTEXT 함수와 병행하여 사용하는 것이 좋습니다.

9. 참고 및 출처