본문 바로가기
Database/Oracle

[ORACLE] OBJ 테이블 완전 분석 : 구조 활용법 실무 적용사례

by Papa Martino V 2025. 7. 29.
728x90

OBJ 테이블 완전 분석 : 구조 활용법 실무 적용사례
[ORACLE] OBJ

1. OBJ란 무엇인가? - 오라클 데이터베이스의 핵심 메타 정보

Oracle 데이터베이스를 심층적으로 다루는 과정에서 OBJ(Object) 테이블은 가장 기초이자 중요한 메타데이터 테이블 중 하나입니다. 이 테이블은 Oracle 내부에서 관리하는 모든 데이터베이스 객체에 대한 정보를 저장하는 핵심 구조로, DBA나 개발자라면 반드시 이해하고 있어야 할 구성요소입니다. OBJ 테이블은 일반 사용자가 직접 접근할 수 없으며, SYS 스키마 내부에서 관리됩니다. 이를 통해 객체 ID(Object ID, OID), 객체 유형, 이름, 소유자 등의 핵심 정보를 추적할 수 있으며, 이 데이터는 Oracle 데이터 사전 및 기타 메타 테이블과 조합해 다양한 진단 및 분석에 활용됩니다.

2. OBJ 테이블의 주요 컬럼 설명

아래는 OBJ 테이블에서 주로 활용되는 컬럼에 대한 설명입니다.

컬럼명 설명
OBJ# 객체의 고유 ID (Object Number). 다른 테이블과 조인 시 주로 사용됨.
DATAOBJ# 실제 데이터가 저장된 객체의 ID. 예: 테이블 파티션 등.
NAME 객체의 이름
TYPE# 객체 유형을 숫자로 표시 (예: 2=Table, 4=View, 5=Procedure 등)
OWNER# 객체의 소유자 ID (사용자 ID)
STATUS 객체 상태. VALID/INVALID 등의 상태 구분

이러한 컬럼들은 Oracle의 다른 메타 테이블들(SYSAUX, TAB$, COL$, USER$ 등)과 함께 조인하여 객체 간 연관성을 파악하는 데 매우 유용합니다.

3. Oracle OBJ 테이블의 실전 활용 사례

  • 오브젝트 추적: 데이터베이스 내의 모든 객체(테이블, 인덱스, 프로시저 등)를 식별 및 추적
  • 의심 객체 분석: INVALID 상태의 객체를 필터링하여 컴파일 오류 확인
  • 조인 기반 진단: OBJ#를 기반으로 COL$, TAB$과 조인하여 테이블의 컬럼 목록 및 타입 추출
  • 백업 및 복구 검토: 백업 대상 객체의 상태 및 구조 정보 확인

4. TYPE# 코드별 객체 유형 요약

OBJ 테이블의 TYPE# 값은 Oracle 내부 객체 유형을 숫자로 표시한 것입니다.

TYPE# 객체 유형 설명
1 Index 기본 인덱스 객체
2 Table 일반 테이블
4 View 가상 테이블
5 Procedure 저장 프로시저
7 Sequence 시퀀스 객체
13 Type 사용자 정의 타입

5. OBJ 테이블로부터 유용한 정보 추출 쿼리 예시

-- 모든 테이블 객체의 이름과 소유자 출력
SELECT o.obj#, u.name AS owner, o.name AS object_name
FROM sys.obj$ o
JOIN sys.user$ u ON o.owner# = u.user#
WHERE o.type# = 2;

-- INVALID 상태인 객체 탐색
SELECT o.obj#, o.name, o.status
FROM sys.obj$ o
WHERE o.status != 1; -- 1은 VALID 상태

6. 실무에서 OBJ 테이블이 갖는 보안 및 성능 이슈

OBJ$ 테이블은 Oracle 내부 시스템에서 중요한 역할을 하므로 직접 수정은 불가능하며, 접근 시에는 읽기 전용으로 사용해야 합니다. 또한, 조인이나 서브쿼리를 통해 대량의 메타 정보를 처리할 경우 성능 부하를 유발할 수 있으므로, 적절한 인덱스를 활용하거나 뷰(View)를 사용한 간접 접근이 권장됩니다.

7. 실무에서의 차별화된 활용 전략

단순 조회에 그치지 않고 OBJ$ 테이블을 기반으로 다음과 같은 고급 전략이 가능합니다:

  • DB 오브젝트 변경 추적 시스템 구축 (OBJECT_ID 기반 로그 추적)
  • 사용자별 객체 소유 분석 및 권한 리스크 평가
  • 테이블 객체와 인덱스 간 일치 여부 검증

이처럼 Oracle 내부 메타 구조를 능동적으로 이해하면 DB의 복잡한 문제도 더 빠르고 정확하게 진단할 수 있습니다.

8. 마무리 및 실무 적용 요약

Oracle의 OBJ 테이블은 모든 오브젝트의 ‘지도’ 역할을 하며, 시스템 전체의 메타 데이터를 한눈에 파악하고 진단할 수 있는 강력한 도구입니다. 직접적인 활용은 제한되지만, 조인을 통해 실무에서 유용한 인사이트를 도출할 수 있습니다. 특히 성능 분석, 보안 점검, 장애 진단에 있어 필수적인 테이블이므로, 실무 개발자나 DBA는 반드시 숙지해야 할 요소입니다.

출처

  • Oracle Database Reference Guide 21c - Oracle Corp.
  • Expert Oracle Database Architecture - Thomas Kyte
  • 실전 Oracle 성능 진단과 튜닝 - 고경희 저
728x90