Oracle 데이터베이스에서 테이블스페이스 또는 데이터 파일에 포함된 데이터베이스 개체를 어떻게 확인합니까? 데이터베이스 개체가 있는 테이블 공간과 데이터 파일을 보는 방법은 무엇입니까?
이 문서에서는 참조용으로 몇 가지 쿼리 스크립트를 제공합니다.
1. 테이블스페이스에 포함된 객체 확인
SELECT TABLESPACE_NAME,
SEGMENT_NAME,
SUM(BYTES)/1024/1024 SEGMENT_SIZE_M
FROM DBA_SEGMENTS
WHERE TABLESPACE_NAME='&TABLESPACE_NAME'
GROUP BY TABLESPACE_NAME,SEGMENT_NAME;
또한 다음 SQL 문을 통해 테이블스페이스의 개체를 봅니다.
SELECT OWNER,
'TABLE' SEGMENT_TYPE,
TABLE_NAME SEGMENT_NAME
FROM DBA_TABLES
WHERE TABLESPACE_NAME='&TABLESPACE_NAME'
UNION ALL
SELECT OWNER,
'INDEX' SEGMENT_TYPE,
INDEX_NAME SEGMETN_NAME
FROM DBA_INDEXES
WHERE TABLESPACE_NAME='&TABLESPACE_NAME'
UNION ALL
SELECT OWNER,
'LOBSEGMENT' SGEMENT_TYPE,
SEGMENT_NAME SEGMENT_NAME
FROM DBA_LOBS
WHERE TABLESPACE_NAME='&TABLESPACE_NAME';
둘째, 해당 데이터베이스 개체가 포함된 데이터 파일 보기
SELECT A.OWNER,
A.SEGMENT_NAME,
A.SEGMENT_TYPE,
B.FILE_NAME,
SUM(A.BYTES)/1024/1024 SEGMENT_SIZE_M
FROM DBA_EXTENTS A
INNER JOIN DBA_DATA_FILES B ON A.FILE_ID= B.FILE_ID
WHERE B.FILE_ID =&FILE_ID
GROUP BY A.OWNER,A.SEGMENT_NAME,A.SEGMENT_TYPE,B.FILE_NAME;
또는
SELECT A.OWNER,
A.SEGMENT_NAME,
A.SEGMENT_TYPE,
B.FILE_NAME,
SUM(A.BYTES)/1024/1024 SEGMENT_SIZE_M
FROM DBA_EXTENTS A
INNER JOIN DBA_DATA_FILES B ON A.FILE_ID= B.FILE_ID
WHERE B.FILE_NAME ='&FILE_NAME'
GROUP BY A.OWNER,A.SEGMENT_NAME,A.SEGMENT_TYPE,B.FILE_NAME;
3. 데이터베이스 개체가 속한 테이블스페이스 보기
SELECT TABLE_NAME, TABLESPACE_NAME
FROM USER_TABLES
WHERE TABLE_NAME = '&TABLE_NAME';
4. 데이터베이스 개체가 속한 데이터 파일 보기
SELECT A.OWNER,
A.SEGMENT_TYPE,
A.SEGMENT_NAME,
A.PARTITION_NAME,
A.TABLESPACE_NAME,
B.FILE_NAME,
SUM(A.BYTES)/1024/1024 SEGMENT_SIZE_M
FROM DBA_EXTENTS A
INNER JOIN DBA_DATA_FILES B ON A.FILE_ID= B.FILE_ID
WHERE A.OWNER='&OWNER'
AND A.SEGMENT_NAME='&SEGMENT_NAME'
GROUP BY A.OWNER,A.SEGMENT_TYPE,A.PARTITION_NAME,A.SEGMENT_NAME,A.TABLESPACE_NAME,B.FILE_NAME;