본문 바로가기
Database/Oracle

[ORACLE] ALL_INTERNAL_TRIGGERS 뷰 완벽 가이드

by Papa Martino V 2025. 6. 24.
728x90

오라클 ALL_INTERNAL_TRIGGERS 뷰 완벽 가이드
[Oracle] ALL_INTERNAL_TRIGGERS

 

Oracle 데이터베이스는 데이터 무결성과 내부 처리를 위해 다양한 종류의 트리거(Trigger)를 사용합니다. 일반적으로 개발자가 생성하는 트리거 외에도, Oracle 내부에서 자동으로 생성되는 시스템 트리거 또는 내부 트리거들이 존재하며, 이들에 대한 정보를 확인할 수 있는 대표적인 뷰가 ALL_INTERNAL_TRIGGERS입니다. 이 글에서는 Oracle의 ALL_INTERNAL_TRIGGERS 뷰가 무엇인지, 어떤 정보를 제공하는지, 그리고 실무에서 어떻게 활용할 수 있는지 상세히 설명합니다.

1. ALL_INTERNAL_TRIGGERS란?

ALL_INTERNAL_TRIGGERS는 Oracle에서 생성한 시스템 트리거(Internal Trigger) 정보를 보여주는 데이터 딕셔너리 뷰입니다. 이러한 트리거는 주로 제약 조건(constraints), materialized view, 클러스터드 테이블 등과 관련하여 자동 생성되며, 사용자가 명시적으로 생성하지 않아도 Oracle 내부에서 필요에 따라 생성 및 관리됩니다.

주요 목적

  • Oracle 내부 트리거의 존재 및 정의 확인
  • 데이터 무결성 트리거의 추적 및 감사
  • 제약 조건에 의해 생성된 트리거 분석
  • 성능 튜닝 시 불필요한 내부 트리거 식별

2. 주요 컬럼 설명

컬럼명 설명
OWNER 트리거가 정의된 스키마 소유자
TRIGGER_NAME Oracle 내부에서 자동 생성된 트리거 이름
TABLE_NAME 트리거가 정의된 대상 테이블 이름
BASE_OBJECT_TYPE 트리거가 적용되는 객체 유형(TABLE, VIEW 등)
TRIGGER_TYPE BEFORE/AFTER INSERT, UPDATE, DELETE 등 트리거 유형
TRIGGER_BODY 트리거가 실행하는 PL/SQL 코드 내용

3. 실무 활용 예시

현재 스키마에서 사용자가 접근 가능한 내부 트리거 목록을 확인하고 싶을 때 사용할 수 있는 SQL 예제는 다음과 같습니다.

SELECT 
  trigger_name, 
  table_name, 
  trigger_type 
FROM 
  ALL_INTERNAL_TRIGGERS 
WHERE 
  owner = 'HR';

위 쿼리는 HR 스키마에서 Oracle이 자동으로 생성한 트리거 목록을 보여주며, 특히 FOREIGN KEY, CHECK 제약 조건과 관련된 트리거들이 포함될 수 있습니다.

4. 관련 뷰 비교

뷰 이름 설명 주요 차이점
ALL_TRIGGERS 사용자가 생성한 일반 트리거 목록 내부 트리거는 포함하지 않음
ALL_INTERNAL_TRIGGERS Oracle이 자동 생성한 시스템 트리거 목록 제약 조건 등 내부용 트리거 포함
DBA_INTERNAL_TRIGGERS DB 전체의 내부 트리거 확인 (DBA 권한 필요) ALL_ 뷰보다 범위가 넓음

5. 실무 활용 팁

  • 제약 조건 성능 분석: INSERT/UPDATE 속도 저하 원인이 내부 트리거인 경우 파악 가능
  • 트리거 비정상 동작 디버깅: 사용자가 만든 트리거 외의 내부 트리거까지 함께 점검
  • 데이터 정합성 감사: 외래 키(FK) 제약에 의해 생성된 트리거 동작 확인
  • DDL 추적: Oracle이 자동으로 생성한 트리거 이름 규칙 파악 (예: SYS_Cnnnn)

6. 보안 및 권한 관리

ALL_INTERNAL_TRIGGERS 뷰는 현재 사용자가 SELECT 권한을 가진 객체에 대해 자동 생성된 트리거만 보여줍니다. 전체 시스템 차원의 정보를 확인하고자 할 경우에는 DBA_INTERNAL_TRIGGERS 뷰를 사용해야 하며, 개인 스키마의 트리거만 확인하려면 USER_INTERNAL_TRIGGERS 뷰를 사용할 수 있습니다.

7. 성능 및 구조적 고려 사항

Oracle 내부 트리거는 시스템 안정성과 무결성을 보장하기 위한 핵심 도구입니다. 하지만 데이터가 많거나 제약 조건이 복잡한 경우, 내부 트리거가 병목 지점이 될 수 있으므로 성능 저하가 의심되는 경우 반드시 ALL_INTERNAL_TRIGGERS를 통해 분석해야 합니다.

8. 결론

ALL_INTERNAL_TRIGGERS 뷰는 사용자가 직접 생성하지 않은 트리거의 존재와 그 기능을 추적할 수 있게 해주는 중요한 진단 도구입니다. 데이터 무결성 유지, 성능 분석, 내부 로직 감사 등 다양한 상황에서 이 뷰를 적극적으로 활용함으로써 보다 신뢰할 수 있는 Oracle 운영 환경을 구축할 수 있습니다.

출처

  • Oracle Database 19c Reference Guide - Oracle 공식 문서
  • Oracle Trigger Concepts - PL/SQL Developer's Guide
  • 실무 프로젝트 기반 트리거 디버깅 및 성능 튜닝 사례 (2020~2025)
728x90