728x90

1. USER_TRIGGERS란?
USER_TRIGGERS는 오라클 데이터베이스에서 현재 사용자가 소유한 **트리거(Trigger)**의 정의 정보를 조회할 수 있는 데이터 딕셔너리 뷰입니다. 트리거는 특정 테이블 또는 뷰에 대해 **자동으로 실행되는 PL/SQL 블록**이며, 데이터 무결성 유지, 감사(Audit), 복잡한 비즈니스 로직 자동화 등에 사용됩니다. USER_TRIGGERS 뷰는 트리거의 이름, 이벤트, 시점, 본문 소스 등을 모두 확인할 수 있어, 성능 분석, 보안 감사, 예기치 않은 동작 진단에 매우 유용합니다.
2. 주요 컬럼 설명
| 컬럼명 | 설명 |
|---|---|
| TRIGGER_NAME | 트리거 이름 |
| TABLE_NAME | 트리거가 연결된 테이블 이름 |
| TRIGGERING_EVENT | 트리거가 반응하는 이벤트 (INSERT, UPDATE 등) |
| TRIGGER_TYPE | BEFORE, AFTER, INSTEAD OF 등 실행 시점 |
| TRIGGER_BODY | 트리거의 PL/SQL 본문 (로직) |
| STATUS | 트리거의 활성화 여부 (ENABLED/DISABLED) |
| DESCRIPTION | 트리거의 요약 설명 (버전에 따라 다름) |
3. 실전 활용 예제
3.1. 현재 사용자 소유 트리거 목록 조회
SELECT
TRIGGER_NAME,
TABLE_NAME,
TRIGGERING_EVENT,
TRIGGER_TYPE,
STATUS
FROM
USER_TRIGGERS;
3.2. 특정 테이블에 연결된 트리거 확인
SELECT
TRIGGER_NAME,
TRIGGER_BODY
FROM
USER_TRIGGERS
WHERE
TABLE_NAME = 'ORDERS';
3.3. 비활성화된 트리거 확인
SELECT
TRIGGER_NAME,
STATUS
FROM
USER_TRIGGERS
WHERE
STATUS = 'DISABLED';
4. 트리거 유형 비교
| 구분 | 설명 | 대표 사용 예시 |
|---|---|---|
| BEFORE TRIGGER | 데이터가 저장되기 전에 실행 | 데이터 유효성 검사, 수정 |
| AFTER TRIGGER | 데이터 저장 후 실행 | 로깅, 감사(Audit) 기록 |
| INSTEAD OF TRIGGER | 뷰에서 사용되는 트리거 | 복잡한 뷰에 대한 업데이트 처리 |
5. USER_TRIGGERS 활용 전략
- 자동화 관리: 트리거를 통해 반복적인 데이터 처리 자동화
- 로깅 및 감사 기능: 사용자의 UPDATE/DELETE 작업을 자동 기록
- 보안 보조: 무단 수정 감지 및 추적용 트리거 활용
- 성능 진단: 자주 호출되는 트리거의 논리를 점검하여 병목 제거
6. 주의사항
- 트리거 난독성 주의: 비즈니스 로직이 트리거에 숨어 있으면 유지보수가 어려움
- 트랜잭션 지연: 트리거에서 긴 로직 처리 시 전체 트랜잭션 지연 발생
- 루프 발생 가능성: 서로 영향을 주는 트리거 간의 순환 참조 주의
7. 결론
USER_TRIGGERS 뷰는 단순한 정의 정보를 넘어서, 오라클 데이터베이스에서 발생하는 자동화 로직의 흐름을 이해하는 핵심 도구입니다. 트리거는 강력한 기능이지만, 남용 시 유지보수와 성능 이슈를 야기할 수 있으므로 정기적인 점검과 문서화가 필수적입니다. USER_TRIGGERS를 활용한 트리거 구조 분석은 고급 DBA와 개발자 모두에게 필요한 역량입니다.
8. 출처
- Oracle Corporation. Oracle Database Reference
- Steven Feuerstein, 『Oracle PL/SQL Best Practices』
728x90
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] USER_TS_QUOTAS : 사용자 테이블스페이스 할당량 진단과 관리 전략 (0) | 2025.08.09 |
|---|---|
| [ORACLE] USER_TRIGGER_COLS : 트리거 감시 컬럼 완전 분석 (0) | 2025.08.09 |
| [ORACLE] USER_TAB_SUBPARTITIONS : 서브 파티션 구조 완전 정복 (0) | 2025.08.09 |
| [ORACLE] USER_TAB_PRIVS_RECD : 수신된 오브젝트 권한 완전 분석 (0) | 2025.08.09 |
| [ORACLE] USER_TAB_PRIVS_MADE : 사용자가 부여한 오브젝트 권한 추적 가이드 (0) | 2025.08.09 |