Oracle Admin 강좌 (Oracle9i)
테이블스페이스관련 Dictionary조회 8 2 99,999+

by 구루비 테이블스페이스 DBA_TABLESPACES DBA_DATA_FILES V$DATAFILE V$TABLESPACE DBA_FREE_SPACE TABLESPACE [2002.01.24]


데이타파일 정보와 테이블스페이스 정보 조회

  V$DATAFILEV$DATAFILE 이용

 
SQL> CONN / AS SYSDBA
SQL> SELECT status,enabled, t.name,d.name
     FROM  V$DATAFILE d, V$TABLESPACE t
     WHERE t.ts#=d.ts#;
 
STATUS   ENABLED     NAME            NAME
-------  ----------  ------------  -------------------------------------
SYSTEM   READ WRITE  SYSTEM        C:\ORACLE\ORADATA\ORACLE\SYSTEM01.DBF
ONLINE   READ WRITE  RBS           C:\ORACLE\ORADATA\ORACLE\RBS01.DBF
ONLINE   READ WRITE  USERS         C:\ORACLE\ORADATA\ORACLE\USERS01.DBF
ONLINE   READ WRITE  TEMP          C:\ORACLE\ORADATA\ORACLE\TEMP01.DBF
ONLINE   READ WRITE  TOOLS         C:\ORACLE\ORADATA\ORACLE\TOOLS01.DBF
ONLINE   READ WRITE  INDX          C:\ORACLE\ORADATA\ORACLE\INDX01.DBF
ONLINE   READ WRITE  DRSYS         C:\ORACLE\ORADATA\ORACLE\DR01.DBF
ONLINE   READ WRITE  STORM         C:\ORACLE\ORADATA\ORACLE\STORM.DBF
    

테이블스페이스의 데이터파일과 테이블스페이스 크기 확인

  DBA_DATA_FILES 데이터 사전을 이용 하면 됩니다.

 
SQL> COL FILE_NAME FORMAT A40
SQL> COL TABLESPACE_NAME FORMAT A15
 
SQL> SELECT file_name, tablespace_name, bytes, status 
     FROM  DBA_DATA_FILES;
 
FILE_NAME                              TABLESPACE_NAME  BYTES        STATUS
-------------------------------------  ---------------  -----------  ------------
C:\ORACLE\ORADATA\ORACLE\SYSTEM01.DBF  SYSTEM           248250368    AVAILABLE
C:\ORACLE\ORADATA\ORACLE\RBS01.DBF     RBS              545259520    AVAILABLE
C:\ORACLE\ORADATA\ORACLE\USERS01.DBF   USERS            113246208    AVAILABLE
C:\ORACLE\ORADATA\ORACLE\TEMP01.DBF    TEMP              75497472    AVAILABLE
C:\ORACLE\ORADATA\ORACLE\TOOLS01.DBF   TOOLS             12582912    AVAILABLE
C:\ORACLE\ORADATA\ORACLE\INDX01.DBF    INDX              60817408    AVAILABLE
C:\ORACLE\ORADATA\ORACLE\DR01.DBF      DRSYS             92274688    AVAILABLE


-- FILE_NAME : DATAFILE의 물리적인 위치와 파일명
-- TABLESPACE_NAME : 테이블스페이스의 이름
-- BYTES : 테이블스페이스의 크기
-- STATUS : 테이블스페이스의 이용가능 여부
    

테이블스페이스별 사용 가능한 공간의 확인

  DBA_FREE_SPACE 데이터 사전 이용

 
SQL> SELECT tablespace_name, SUM(bytes), MAX(bytes)
     FROM DBA_FREE_SPACE
     GROUP BY tablespace_name;

TABLESPACE_NAME   SUM(BYTES)   MAX(BYTES)
---------------   ----------   ----------
DRSYS               88268800     88268800
INDX                60809216     60809216
RBS                524279808    498589696
SYSTEM                 65536        65536
TEMP                75489280     74244096
TOOLS               12574720     12574720
USERS              113238016    113238016
   

-- SUM을 사용한 이유는하나의 테이블스페이스에 분산되어 있는 여유공간을 합한 것이며,
-- MAX를 사용한 이유는 여유 공간중 가장 큰 공간의 SIZE를 의미 합니다. 
    

데이타 화일에 대한 총 크기와 남아있는 공간, 사용한 용량, 남은 %율

  DBA_FREE_SPACE, DBA_DATA_FILES 데이터 사전 이용

 
SQL> COL FILE_NAME FORMAT A40
SQL> COL TABLESPACE_NAME FORMAT A30
SQL> SET LINESIZE 150
SQL> SELECT  b.file_name "FILE_NAME",                               --  DataFile Name
             b.tablespace_name "TABLESPACE_NAME",                   -- TableSpace Name
             b.bytes / 1024 "TOTAL SIZE(KB)",                       -- 총 Bytes
             ((b.bytes - sum(nvl(a.bytes,0)))) / 1024 "USED(KB)",   -- 사용한 용량
             (sum(nvl(a.bytes,0))) / 1024 "FREE SIZE(KB)",          -- 남은 용량
             (sum(nvl(a.bytes,0)) / (b.bytes)) * 100 "FREE %"       -- 남은 %
     FROM   DBA_FREE_SPACE a, DBA_DATA_FILES b
     WHERE a.file_id(+) = b.file_id
     GROUP BY b.tablespace_name, b.file_name, b.bytes
     ORDER BY b.tablespace_name
 
 
FILE_NAME                              TABLESPACE_NAME  TOTAL SIZE(KB)       USED(KB)  FREE SIZE(KB)     FREE %
-------------------------------------  ---------------  --------------  -------------  ------------   ----------
C:\ORACLE\ORADATA\ORACLE\DR01.DBF      DRSYS                    90112           3912         86200    95.6587358
C:\ORACLE\ORADATA\ORACLE\INDX01.DBF    INDX                     59392              8         59384    99.9865302
C:\ORACLE\ORADATA\ORACLE\RBS01.DBF     RBS                     532480          20488        511992    96.1523438
C:\ORACLE\ORADATA\ORACLE\TEMP01.DBF    TEMP                     73728              8         73720    99.9891493
C:\ORACLE\ORADATA\ORACLE\TOOLS01.DBF   TOOLS                    12288              8         12280    99.9348958
C:\ORACLE\ORADATA\ORACLE\USERS01.DBF   USERS                   110592              8        110584    99.9927662
    

- 강좌 URL : http://www.gurubee.net/lecture/1099

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

by 안병훈 [2005.07.05 10:59:52]
plan 뜨면 TABLE ACCESS FULL이 나네요. 이거 에러는 아니고 Full Scan 한다는거 같은데 엄청 오래걸리네요. 벌써 한시간째 ... 해결방안이 없나요?

by 정선욱 [2005.08.10 17:57:19]
1:M 조인을 것두 OUTER JOIN으로 ....ㅠㅠ
이렇게 해보심 어떠실런지~~~~~~~~~~~
select a.file_name, a.tablespace_name, a.bytes /1024 "TOTAL_SIZE(KB)" ,
(a.bytes - b.fsize)/1024 "USED(KB)", b.fsize/1024 "FREE_SIZE(KB)", b.fsize/a.bytes * 100 "FREE%"
from dba_data_files a,
( select file_id, sum(bytes) fsize
from dba_free_space
group by file_id ) b
where a.file_id = b.file_id;
눈깜짝할새~~~~~~~~~~`

DBA 공부 첫날~~~~ 초보가...............ㅎㅎ
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입