database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Tutorials 9254 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 9254
TABLE SEGMENT/EXTENT 내의 FREE SPACE/USED SPACE USAGE 확인 방법
작성자
정재익(advance)
작성일
2002-01-05 15:37
조회수
5,133

TABLE SEGMENT/EXTENT 내의 FREE SPACE/USED SPACE USAGE 확인 방법

 

Data를 보유 중인 table segment에 다양한 DML 문장의 수행으로 인하여 free space가 발생하게 되는 경우, table segment 내에 free space가 얼마나 존재하는지 확인하는 방법입니다.

 

기본적으로 segment는 extent 단위로 space를 할당받게 되어 있으며, 한번 할당된 extent는 사용되지 않는 경우에도 지속적으로 유지됩니다.

( 'alter table ... deallocate unused' command를 사용하는 경우는 제외 )

 

이러한 경우, data segment 내의 free space를 확인함으로 해서 load되는

data를 위하여 space를 할당할 것인가? 할당한다면 어느 정도의 space를

할당하여야 하는가? 라는 사항에 대하여 적절한 결정이 가능하게 되며, dba_tables/user_tables의 avg_space column의 값을 사용하여 산출됩니다.

 

Segment 내의 free space를 확인하는 방법

1. 대상 table에 대하여 analyze command를 compute option으로 수행. 

        SQL> analyze table dept compute statistics; 

2. dba_tables 또는 user_tables view의 empty_blocks, blocks, avg_space 
      column을 확인. 

      SQL> select table_name, empty_blocks, blocks, avg_space 
                from user_tables 
                where table_name='DEPT'; 

      empty_blocks : 아직 format(or 사용)되지 않은 block 수 = High Water 
                                    Mark 이후의 block 수. 
      blocks : data가 한 번이라도 쓰여졌던 block 수 = High Water 
                                    Mark 이전의 block 수. 
      avg_space : 사용된 block의 평균 free space (bytes 단위) 

3. blocks * avg_space + empty_blocks * db_block_size 의 결과가 해당 
      segment 내의 free space 입니다. 

< 주의 > 실제 data가 load될 수 있는 공간은 3 step의 결과보다 작아지게 
                  됩니다. Format이 수행되지 않았던 block이 사용되면서 block 
                  header 정보가 기록되게 되므로, empty_blocks의 block 당 일정 
                  space가 실제 data의 load에 사용될 수 없게 됩니다. 

4. 이 free space size를 이용하여 현재 table에 실제 차지하고 있는 space를 
      확인하는 방법은 다음과 같다. 

        select bytes from dba_segments where segment_name = 'DEPT'; 

      여기에서 얻은 bytes 값에서 3에서 얻은 free space를 빼면 된다. 
[Top]
No.
제목
작성자
작성일
조회
9257단.복수의 오라클 엔진에 db복사
정재익
2002-01-05
5158
9256TABLE(INDEX)을 다른 TABLESPACE로 옮기는 방법(8I,ALTER TABLE .. MOVE)
정재익
2002-01-05
6043
9255CLOB COLUMN을 조회하는 방법
정재익
2002-01-05
6782
9254TABLE SEGMENT/EXTENT 내의 FREE SPACE/USED SPACE USAGE 확인 방법
정재익
2002-01-05
5133
9253LONG RAW DATA(IMAGE) 를 INSERT, SELECT 하기
정재익
2002-01-05
16125
9252INSERT 가 SELECT 보다 느린 경우...
정재익
2002-01-05
5287
9251SQL TRACE FACILITY 를 사용하여 APPLICATION TUNING 하는 방법
정재익
2002-01-05
5899
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다