728x90

Oracle Database를 사용하는 개발자나 DBA라면 ALL_TABLES 뷰에 대해 반드시 이해하고 있어야 합니다. 이 뷰는 데이터베이스 내에 존재하는 테이블의 메타데이터를 조회할 수 있는 중요한 시스템 뷰입니다. 특히 접근 권한이 부여된 테이블에 대한 정보를 제공하며, 실무에서 자주 사용되는 쿼리 작성의 핵심이 됩니다.
1. ALL_TABLES란 무엇인가?
ALL_TABLES는 Oracle Database의 사전 정의된 데이터 딕셔너리 뷰 중 하나로, 사용자가 접근 가능한 모든 테이블에 대한 메타 정보를 제공합니다. 이 뷰는 사용자 자신의 테이블뿐만 아니라 다른 사용자에게 권한이 부여된 테이블도 포함합니다.
1.1 기본 정의
SELECT * FROM ALL_TABLES;
위 쿼리는 사용자가 접근 가능한 모든 테이블의 정보를 반환합니다. 그러나 실무에서는 필요한 컬럼만 선택하여 사용하는 것이 일반적입니다.
2. 주요 컬럼 설명
ALL_TABLES 뷰에는 다양한 컬럼이 있지만, 아래는 자주 사용되는 주요 컬럼입니다:
| 컬럼명 | 설명 |
|---|---|
| OWNER | 테이블을 소유한 스키마의 사용자 이름 |
| TABLE_NAME | 테이블 이름 |
| TABLESPACE_NAME | 테이블이 속한 테이블스페이스 이름 |
| NUM_ROWS | 테이블에 저장된 행의 수 (통계 정보 필요) |
| BLOCKS | 테이블이 사용하는 블록 수 |
| LAST_ANALYZED | 통계가 마지막으로 수집된 날짜 |
3. ALL_TABLES vs USER_TABLES vs DBA_TABLES
Oracle에서는 유사한 목적의 세 가지 뷰가 존재합니다. 다음 표를 통해 각 뷰의 차이점을 비교할 수 있습니다:
| 항목 | USER_TABLES | ALL_TABLES | DBA_TABLES |
|---|---|---|---|
| 대상 | 자신이 소유한 테이블 | 접근 권한이 있는 모든 테이블 | 모든 테이블 (DBA만 사용 가능) |
| 접근 권한 | 일반 사용자 | 일반 사용자 | DBA 권한 필요 |
| 사용 목적 | 개인 소유 테이블 확인 | 협업 시 타인 테이블 확인 | 시스템 전체 테이블 관리 |
4. 실무에서의 활용 예제
4.1 특정 스키마의 테이블 목록 조회
SELECT TABLE_NAME
FROM ALL_TABLES
WHERE OWNER = 'HR';
4.2 최근 통계 수집되지 않은 테이블 찾기
SELECT OWNER, TABLE_NAME, LAST_ANALYZED
FROM ALL_TABLES
WHERE LAST_ANALYZED IS NULL;
4.3 테이블별 행 수 및 블록 수 확인
SELECT TABLE_NAME, NUM_ROWS, BLOCKS
FROM ALL_TABLES
WHERE OWNER = 'SALES';
5. 성능 팁 및 주의사항
- NUM_ROWS 값은 자동으로 업데이트되지 않으며,
ANALYZE나DBMS_STATS패키지를 사용하여 갱신해야 정확한 값을 얻을 수 있습니다. - ALL_TABLES 조회 시 필터 조건 없이 사용할 경우 수천 개의 테이블이 조회되어 성능 저하를 유발할 수 있습니다.
- 테이블의 실제 크기(디스크 사용량)는
DBA_SEGMENTS뷰를 병행하여 확인하는 것이 좋습니다.
6. 관련 시스템 뷰 참고
ALL_TAB_COLUMNS: 각 테이블의 컬럼 정보ALL_CONSTRAINTS: 제약조건 정보ALL_INDEXES: 인덱스 정보ALL_TAB_PRIVS: 테이블 권한 정보
7. 결론
ALL_TABLES는 단순한 정보 제공 뷰가 아니라, Oracle 데이터베이스의 구조를 파악하고 최적화된 SQL 작성을 위한 핵심 도구입니다. 이를 통해 자신의 쿼리 성능을 높이고, 보다 효율적인 데이터 분석 환경을 구축할 수 있습니다. Oracle DB를 다루는 모든 실무자에게 필수적인 지식이므로, 위 내용을 바탕으로 직접 쿼리를 작성하며 익숙해지는 것을 추천합니다.
8. 참고자료
- Oracle 공식 문서: https://docs.oracle.com/en/database/
- Oracle 21c Database Reference
- 실무 DBA 경험 및 프로젝트 문서
728x90
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] ALL_CONSTRAINTS() 제약 조건 뷰 완벽 가이드 (0) | 2025.06.14 |
|---|---|
| [ORACLE] ALL_TAB_COLUMNS() 실무 활용 가이드 (0) | 2025.06.14 |
| [ORACLE] EXPLAIN PLAN()으로 SQL 실행 계획 정확히 읽는 법 (0) | 2025.06.14 |
| [ORACLE] SESSION() 상세 분석으로 시스템 성능 향상 하기 (0) | 2025.06.14 |
| [ORACLE] REFERENCES() 완벽 가이드 : 외래키와 참조 무결성의 모든 것 (0) | 2025.06.13 |