본문 바로가기
Database

[Oracle] 오라클 UID() 함수로 사용자 추적 로직 구현하기

by 코드개미 2025. 6. 7.

오라클 UID() 함수로 사용자 추적 로직 구현하기
[Oracle] UID

 

1. Oracle UID 함수란?

Oracle 데이터베이스에서 UID 함수는 현재 세션이 사용하는 사용자 계정의 고유 식별자(User ID)를 반환합니다. 반환되는 값은 해당 사용자의 USER_ID이며, 이는 ALL_USERS 또는 DBA_USERS 뷰에서 확인할 수 있는 값과 일치합니다.

2. 기본 사용법

SELECT UID FROM DUAL;

위 쿼리를 실행하면, 현재 세션의 사용자가 어떤 USER_ID를 가지고 있는지를 확인할 수 있습니다. 결과는 정수형 숫자이며, 예를 들어 101 같은 값이 반환됩니다.

3. UID 함수와 USER 함수 비교

항목 UID() USER
반환 타입 NUMBER VARCHAR2
반환 값 사용자의 내부 ID 사용자의 이름
사용 목적 정수 기반 사용자 식별 문자 기반 사용자 확인

4. UID 함수 실전 예제

4-1. 사용자별 트리거 제어

CREATE OR REPLACE TRIGGER trg_example
BEFORE INSERT ON employee
BEGIN
  IF UID = 101 THEN
    RAISE_APPLICATION_ERROR(-20001, '이 사용자는 INSERT 불가합니다.');
  END IF;
END;

이 예제는 UID가 101인 사용자가 employee 테이블에 데이터를 삽입하지 못하도록 방지합니다.

4-2. 감사 로그 테이블에 UID 기록

INSERT INTO audit_log(user_id, action_date)
VALUES (UID, SYSDATE);

사용자 ID를 정수형으로 기록함으로써 로그의 정합성과 효율적인 검색이 가능합니다.

5. UID 함수와 SYS_CONTEXT 비교

SYS_CONTEXT('USERENV', 'SESSION_USER')는 사용자명을 반환하는 반면, UID는 고유 숫자 ID를 제공합니다. 보안, 로깅, 조건 분기 등 실무에서는 두 함수가 함께 쓰이는 경우가 많습니다.

6. UID 확인을 위한 쿼리

SELECT username, user_id
FROM all_users
WHERE user_id = UID;

이 쿼리를 통해 UID 값이 실제 어떤 사용자 계정과 연결되어 있는지 확인할 수 있습니다.

7. UID 활용 팁

  • 보안 정책: 특정 사용자 ID 차단
  • 감사 로그 기록: 숫자형 사용자 구분
  • 프로시저에서 사용자 권한 로직 구현 시 활용

8. 정리

Oracle의 UID 함수는 단순하지만 실무에서 강력한 기능을 제공하는 내장 함수입니다. 사용자 고유 ID를 기반으로 보다 정밀한 보안 제어와 감사 로그 관리가 가능합니다. 특히 USERSYS_CONTEXT와의 조합을 통해 사용자 행위 추적과 권한 제어에 효과적으로 사용할 수 있습니다.

9. 참고 자료

  • Oracle 공식 문서 - https://docs.oracle.com
  • Oracle Database SQL Language Reference
  • 오라클 개발자 커뮤니티 포럼