SELECT table_name, num_rows, chain_cnt, blocks, empty_blocks as empty, avg_space, avg_row_len FROM dba_table WHERE owner = 'ST' AND table_name = 'SCORE'; // 테이블의 block 관련 정보를 조회한다.
SELECT owner, segment_name, tablespace_name, extent_id, bytes, blocks FROM dba_extents WHERE owner = 'ST' AND segment_name = 'SCORE'; // 세그먼트의 extent정보를 조회한다.
SELECT table_name, index_name, status, num_rows, leaf_blocks, blevel FROM dba_indexes WHERE owner = 'ST' AND table_name = 'SCORE'; // 인덱스와 연관된 테이블의 정보를 조회한다.
SELECT name, blocks, lf_rows, del_lf_rows FROM index_stats; // 인덱스의 정보를 조회한다.
ALTER TABLE st.score ALLOCATE EXTENT (SIZE 512K); // 테이블에 공간을 할당한다. ALTER INDEX st.score_sno_cno_pk ALLOCATE EXTENT (SIZE 64); // 인덱스에 공간을 할당한다.
ANALYZE TABLE st.score COMPUTE STATISTICS; // 테이블 정보를 갱신한다. ANALYZE INDEX st.score_sno_cno_pk VALIDATE STRUCTURE; // 인덱스 정보를 갱신한다.
ALTER TABLE st.score DEALLOCATE UNUSED; // 테이블의 H/W이후 사용하지 않는 extent를 해제한다. ALTER INDEX st.score_sno_cno_pk DEALLOCATE UNUSED; // 테이블의 H/W이후 사용하지 않는 extent를 해제한다.
실습 전 시스템 상태를 확인한다.공간을 할당하고 정보를 갱신한다.공간 할당 후 block의 수가 증가한것을 알 수 있다.추가로 증가도 가능하다. 할당하는 block의 크기는 지정하지 않는다면 locally management에 의해 자동적으로 할당한다.테이블의 extent중 H/W마크 이후 빈 extent는 해제한다.갱신하지 않아도 extent정보는 갱신된다.테이블의 extent정보는 갱신되지 않은 쓰레기 값이 출력된다.인덱스의 extent중 H/W마크 이후 빈 extent는 해제한다.인덱스의 extent정보는 갱신되지 않은 쓰레기 값이 출력된다.정보 갱신후 빈 블럭이 해제되었다.