본문 바로가기
Database/Oracle

[ORACLE] TABS 뷰 완전 정복 : 테이블 구조 파악과 실무 활용 전략

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

TABS 뷰 완전 정복 : 테이블 구조 파악과 실무 활용 전략
[ORACLE] TABS

1. TABS 뷰란 무엇인가?

Oracle에서 TABS는 사용자가 생성한 테이블 객체에 대한 정보를 쉽게 조회할 수 있도록 제공되는 데이터 딕셔너리 뷰입니다. 정확히 말하면 USER_TABLES 뷰를 기반으로 하는 동의어(SYNONYM)이며, 사용자 스키마에 존재하는 테이블 목록을 간편하게 확인할 수 있도록 구성되어 있습니다. SQL*Plus나 Oracle 개발 도구를 사용할 때, 사용자 테이블 목록을 빠르게 조회하기 위한 목적으로 SELECT * FROM tabs;와 같이 널리 활용됩니다.

2. TABS의 구조와 주요 컬럼

TABS 뷰는 USER_TABLES를 기반으로 하며, 다음과 같은 주요 컬럼을 포함하고 있습니다.

컬럼명 설명
TABLE_NAME 테이블 이름
TABLESPACE_NAME 해당 테이블이 속한 테이블스페이스
CLUSTER_NAME 클러스터 이름(있을 경우)
IOT_TYPE Index Organized Table 여부

실제로 TABS 뷰에는 훨씬 더 많은 컬럼이 존재하지만, 간단한 조회에는 위 컬럼들만 주로 사용됩니다.

3. TABS와 USER_TABLES, DBA_TABLES의 비교

아래는 Oracle에서 테이블 정보를 제공하는 대표적인 뷰들 간의 차이점입니다.

구분 TABS USER_TABLES DBA_TABLES
접근 범위 본인 소유 테이블 본인 소유 테이블 모든 사용자의 테이블
접근 권한 기본 사용 가능 기본 사용 가능 DBA 권한 필요
상세 정보 간단 상세 가장 상세
대상 객체 테이블 중심 테이블 중심 전체 테이블 및 속성

4. 실무에서 TABS 뷰를 활용하는 주요 시나리오

  • 초기 테이블 구조 검토: 개발자가 본인이 만든 테이블을 빠르게 확인
  • 스키마 정리: 불필요한 테이블을 찾아 정리할 때 유용
  • 스키마 객체 문서화: 자동화 스크립트를 통해 테이블 목록 추출
  • SQL 개발 테스트: SQL 문 실행 전 해당 테이블 존재 여부 확인

간단한 스크립트 예:

-- 현재 사용자 테이블 목록 조회
SELECT * FROM tabs;

-- 테이블 이름만 정렬하여 조회
SELECT table_name FROM tabs ORDER BY table_name;

5. 뷰 확장: ALL_TABLES 및 DBA_TABLES 활용 전략

TABS 뷰는 간단하고 빠르게 사용할 수 있지만, 보다 정밀한 관리를 위해서는 ALL_TABLES 또는 DBA_TABLES와 같은 뷰와 함께 사용하는 것이 좋습니다.

  • ALL_TABLES: 사용자가 접근 가능한 모든 테이블
  • DBA_TABLES: 모든 사용자 테이블 포함 (DBA 권한 필요)

예제:

-- 전체 테이블 정보 확인 (접근 가능한 범위 내)
SELECT owner, table_name, tablespace_name 
FROM all_tables 
WHERE owner != 'SYS';

6. 테이블 메타데이터와의 연결 활용

TABS 뷰에서 추출한 테이블 이름을 기반으로 COLUMNS, CONSTRAINTS 등 다른 메타 정보와 연계하여 활용하는 것이 실무에서는 핵심입니다.

예시: 테이블별 컬럼 수 확인

SELECT table_name, COUNT(*) AS column_count
FROM user_tab_columns
GROUP BY table_name
ORDER BY column_count DESC;

7. 자동화 및 스크립트 활용 팁

TABS 뷰는 스크립트 기반의 테이블 점검 루틴에 매우 유용합니다. 예를 들어 테이블 생성 여부, 테이블 목록 로깅, 자동 문서화 등에 활용할 수 있습니다.

샘플 PL/SQL:

BEGIN
  FOR t IN (SELECT table_name FROM tabs) LOOP
    DBMS_OUTPUT.PUT_LINE('테이블: ' || t.table_name);
  END LOOP;
END;

8. 사용 시 유의할 점

  • 시스템 테이블 제외: TABS 뷰는 USER 스키마 기준이므로, SYS 객체는 포함되지 않음
  • VIEW는 제외됨: 뷰 객체는 표시되지 않으며, 이는 USER_VIEWS 사용 필요
  • 최신 스키마 동기화 필요: 객체 변경 후에는 즉시 반영됨

출처

  • Oracle Database SQL Language Reference 21c – Oracle Corporation
  • Oracle DBA Essentials – Jonathan Lewis
728x90