
1. 개요
CAT 뷰는 Oracle Database의 내부 객체 메타데이터를 한눈에 파악할 수 있도록 제공되는 시스템 카탈로그(Catalog) 뷰입니다. 즉, 데이터베이스 내의 테이블, 뷰, 시퀀스, 동의어(Synonym), 인덱스 등의 객체를 빠르게 검색하고 관리할 수 있는 간단하고 강력한 인덱스 뷰입니다. CAT 뷰는 사실상 Oracle의 모든 객체 정보의 “요약본”으로서, 개발자와 DBA가 가장 기초적으로 사용하는 데이터 딕셔너리 중 하나입니다.
2. CAT 뷰의 정의
CAT은 SYS 계정에 정의되어 있는 공개 시냅시스(Public Synonym)로, 내부적으로는 USER_CATALOG 또는 USER_OBJECTS를 참조합니다. 따라서 CAT은 사용자 스키마 내에서 자신이 소유한 객체만을 보여줍니다.
-- CAT 뷰의 기본 정의
CREATE SYNONYM CAT FOR USER_CATALOG;
즉, CAT을 조회하면 USER_CATALOG의 결과를 단축 명령으로 얻을 수 있으며, 이는 SELECT * FROM USER_OBJECTS;와 유사한 결과를 반환하지만, 더 단순화된 형태로 구성되어 있습니다.
3. 주요 컬럼 구조
| 컬럼명 | 데이터 타입 | 설명 |
|---|---|---|
| TABLE_NAME | VARCHAR2(128) | 객체의 이름(테이블, 뷰, 시퀀스 등) |
| TABLE_TYPE | VARCHAR2(18) | 객체의 유형(TABLE, VIEW, SYNONYM 등) |
CAT은 이처럼 매우 간결하지만, 데이터베이스 내의 모든 핵심 객체 구조를 확인하는 기본 도구로 활용됩니다.
4. 관련 데이터 딕셔너리와 비교
CAT은 USER_OBJECTS를 요약한 형태이며, 전체 데이터베이스 객체를 보려면 ALL_OBJECTS 또는 DBA_OBJECTS를 사용합니다. 각각의 차이를 이해하면 Oracle 내부 구조를 체계적으로 탐색할 수 있습니다.
| 구분 | CAT | USER_OBJECTS | ALL_OBJECTS | DBA_OBJECTS |
|---|---|---|---|---|
| 조회 범위 | 자신의 객체 | 자신의 객체 | 접근 가능한 모든 객체 | 데이터베이스 전체 |
| 사용 권한 | PUBLIC | 기본 사용자 | SELECT ANY DICTIONARY 필요 | DBA 전용 |
| 컬럼 수 | 2개 | 다수(상태, 날짜, ID 등) | 다수 | 다수 |
| 대표 용도 | 간단한 목록 조회 | 상세 속성 확인 | 접근 객체 관리 | 전체 관리 및 감사 |
5. 사용 예시
-- 1) 현재 사용자 스키마의 모든 객체 조회
SELECT * FROM cat;
-- 2) 특정 테이블만 조회
SELECT * FROM cat WHERE table_type = 'TABLE';
-- 3) 시퀀스 목록 확인
SELECT * FROM cat WHERE table_type = 'SEQUENCE';
-- 4) 특정 객체명 검색
SELECT * FROM cat WHERE table_name LIKE 'EMP%';
위 쿼리는 간단하지만, 데이터베이스 구조를 빠르게 점검하거나 스크립트 작성 시 자동화 루프에 자주 활용됩니다.
6. CAT 뷰의 장점
- 속도: 복잡한 필터링 없이 객체 이름만 신속하게 조회 가능
- 단순성: 테이블 이름과 타입만 표시하여 가독성이 뛰어남
- 범용성: SQL*Plus, SQL Developer 등 모든 환경에서 동일하게 사용 가능
7. 실무 활용 사례
- 개발자 환경 점검 – 신규 스키마 생성 후 객체 생성 여부를 한눈에 검증
- 테스트 스크립트 자동화 – CAT을 활용해 테이블 존재 여부를 조건으로 자동 DROP/CREATE 처리
- DB 마이그레이션 검증 – 이전 및 이후 시스템 간 객체 일치 여부를 비교
-- 마이그레이션 후 객체 일치 여부 점검
SELECT a.table_name, a.table_type
FROM cat a
MINUS
SELECT b.table_name, b.table_type
FROM cat@remote_link b;
8. CAT과 ALL_CATALOG의 관계
Oracle에는 CAT과 유사한 뷰로 ALL_CATALOG와 DBA_CATALOG가 존재합니다. 이들은 USER_CATALOG보다 넓은 범위를 보여주며, 각자의 용도는 다음과 같습니다.
| 뷰 명칭 | 조회 범위 | 설명 |
|---|---|---|
| CAT | 현재 사용자 객체 | USER_CATALOG의 Synonym |
| USER_CATALOG | 현재 사용자 | CAT과 동일 |
| ALL_CATALOG | 접근 가능한 객체 | 다른 스키마의 객체 포함 |
| DBA_CATALOG | 모든 스키마 | 전체 데이터베이스 카탈로그 |
9. CAT 사용 시 주의사항
- 권한 제한: CAT은 자신의 객체만 보여주므로 DBA 권한 없이 다른 스키마는 조회 불가
- 정확성: 최근 생성된 객체가 즉시 반영되지 않을 수 있어
FLUSH SHARED_POOL로 동기화 필요 - 버전 차이: Oracle 19c 이후에는
ALL_OBJECTS기반의 조회가 더 일반적
10. CAT 뷰와 DBA 운영의 관계
DBA 입장에서 CAT은 단순히 “조회용 뷰” 이상입니다. 신규 사용자의 스키마 초기 세팅 점검, SQL Developer의 탐색 뷰 구성, 또는 간단한 자동 스크립트 검증 등 다양한 실무 자동화 작업에 적극 활용됩니다. 특히 “CAT 기반 객체 비교”는 대규모 마이그레이션 시 유용하게 쓰입니다.
11. 성능 관점에서의 CAT
CAT은 기본적으로 USER_CATALOG를 참조하므로 인덱스 스캔이 매우 빠릅니다. 대규모 객체(수천 개 이상)가 있는 스키마에서도 즉각적인 조회 속도를 보장합니다. 또한, 컬럼 수가 적기 때문에 통계 정보 조회나 옵티마이저 부하를 거의 발생시키지 않습니다.
12. CAT 뷰의 현대적 활용
Oracle 23ai 이후에는 JSON 기반의 데이터 사전 접근도 가능하지만, CAT은 여전히 간단하고 SQL 표준적인 조회 방식을 제공하여 CLI 환경(DBA Shell)이나 DevOps 자동화 스크립트 내에서 자주 쓰입니다.
-- DevOps 자동 배포 스크립트에서 CAT 활용 예시
WHENEVER SQLERROR EXIT SQL.SQLCODE;
SPOOL check_objects.log;
SELECT * FROM cat WHERE table_type='TABLE';
SPOOL OFF;
EXIT;
13. 결론
CAT은 Oracle 데이터베이스의 “기본 지도” 역할을 합니다. 간결한 구조 덕분에 학습용으로도, 실무 자동화용으로도 탁월한 효율성을 제공합니다. Oracle의 복잡한 데이터 딕셔너리 계층을 이해하기 위한 첫걸음으로 CAT을 완전히 이해한다면, DBA로서의 관리 역량이 한 단계 향상될 것입니다.
14. 참고 출처
- Oracle Database 19c Administrator’s Guide – Data Dictionary Views
- Oracle 23ai Documentation: USER_CATALOG, ALL_CATALOG, DBA_CATALOG
- Oracle SQL Language Reference (CAT Synonym Section)
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] COLS 뷰 완전 가이드 : USER_TAB_COLUMNS의 초경량 별칭으로 컬럼 메타를 빠르게 읽는 법 (0) | 2025.10.10 |
|---|---|
| [ORACLE] CLU 뷰 완전 해설 : CLUSTERS 구조 파악의 핵심 포인트와 실무 활용 (0) | 2025.10.10 |
| [ORACLE] ALL_OUTLINE_HINTS 완벽 가이드 : 실행 계획 힌트 정보 완전 분석 (0) | 2025.10.10 |
| [ORACLE] ALL_OUTLINES 완전 가이드 : 개념 활용 예제 SPM 전환 전략 (0) | 2025.10.10 |
| [ORACLE] ALL_HISTOGRAMS 완전 정복 : 옵티마이저를 움직이는 히스토그램 이해와 실전 튜닝 (0) | 2025.10.10 |