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. 참고 및 출처
- Oracle 공식 문서
- Oracle Base 예제
- 실제 운영 DB 환경에서의 트리거 및 로깅 경험
'Database' 카테고리의 다른 글
[ Oracle] 오라클 USER() 함수 개념 정리 및 실습 가이드 (0) | 2025.06.07 |
---|---|
[ Oracle] 오라클 UID() 함수로 사용자 추적 로직 구현하기 (0) | 2025.06.07 |
[ Oracle] 오라클 SYS_CONTEXT() 함수로 사용자, 세션, IP 정보 확인하는 방법 (0) | 2025.06.07 |
[ Oracle] 오라클 CASE() 함수 사용법과 DECODE, IF-ELSE와의 차이점 비교 (0) | 2025.06.07 |
[ Oracle] 오라클 DECODE() 함수로 IF-ELSE 로직을 SQL에서 구현하는 방법 (0) | 2025.06.07 |