728x90

1. USER 함수란?
Oracle의 USER 함수는 현재 SQL 문을 실행하고 있는 데이터베이스 사용자 이름을 반환하는 단순하지만 매우 유용한 내장 함수입니다. 일반적으로 인증된 세션에서 사용자의 식별을 위해 활용되며, 보안 로직, 트리거, 감사 로그 등 다양한 영역에서 쓰입니다.
2. 기본 문법
SELECT USER FROM DUAL;
위 SQL은 현재 접속한 사용자의 계정명을 출력합니다. 예를 들어 SCOTT 계정으로 접속한 경우, 결과는 SCOTT입니다.
3. USER 함수와 관련된 예제
3.1 현재 사용자 확인
SELECT USER AS CURRENT_USER FROM DUAL;
3.2 트리거에서 USER 사용하기
CREATE OR REPLACE TRIGGER trg_audit_log
BEFORE INSERT ON employees
FOR EACH ROW
BEGIN
INSERT INTO audit_log(user_name, action_time)
VALUES (USER, SYSDATE);
END;
이 트리거는 INSERT 작업이 발생할 때마다 USER 함수를 통해 작업한 사용자의 이름을 기록합니다.
3.3 USER 기반 권한 제어 예제
BEGIN
IF USER = 'HR' THEN
DBMS_OUTPUT.PUT_LINE('HR 권한 부여됨');
ELSE
DBMS_OUTPUT.PUT_LINE('접근 권한 없음');
END IF;
END;
4. USER vs UID vs SESSION_USER vs CURRENT_USER
Oracle에서는 현재 사용자 정보를 가져오는 다양한 함수가 존재합니다. 다음은 비교표입니다.
| 함수명 | 설명 | 용도 |
|---|---|---|
| USER | 현재 SQL 문을 실행하는 사용자 | 간단한 권한 체크, 트리거 로그 |
| UID | 사용자의 numeric ID | 내부 비교, 고급 보안 로직 |
| SESSION_USER | 인증된 세션의 사용자 | 접속 시점 기준 사용자 정보 |
| CURRENT_USER | 현재 실행 중인 권한 기준 사용자 | View 또는 Procedure 권한 흐름 분석 |
5. USER 함수 활용 팁
- 멀티 유저 환경에서 세션별 제어 로직을 구성할 때 유용합니다.
- 트리거나 감사 테이블에 삽입되는 로그에 사용자 정보를 남길 때 간편합니다.
- 시스템 접근 시 기본적인 사용자 검증용 조건문에도 자주 활용됩니다.
6. USER 함수 사용 시 주의사항
USER함수는 SYS 콘텍스트를 활용하지 않기 때문에 다중 계정 기반 프로그램에서SESSION_USER와 혼용하여 정확한 사용자 정보를 확인해야 할 수 있습니다.- PL/SQL 내 사용 시 예외 처리를 포함한 로직 구성이 중요합니다.
7. 참고 문서 및 출처
- Oracle 공식 문서
- Oracle-Base.com
- 실제 현업 DBA 인터뷰 및 PL/SQL 실습 자료
728x90
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] SELECT()로 데이터 조회하기 : 실무에서 자주 쓰는 패턴 (0) | 2025.06.08 |
|---|---|
| [ORACLE] LNNVL() 함수 활용 예제 모음과 실무 적용 법 (0) | 2025.06.07 |
| [ORACLE] UID() 함수로 사용자 추적 로직 구현하기 (0) | 2025.06.07 |
| [ORACLE] USERENV() 함수로 접속 정보와 세션 상태 추적하기 (0) | 2025.06.07 |
| [ORACLE] SYS_CONTEXT() 함수로 사용자, 세션, IP 정보 확인하는 방법 (0) | 2025.06.07 |