본 장에서는 DBMS_SPACE 패키지의 기본 개념과 패키지 내의 프러시저를 사용하는 방법을 설명한다.
본 절에서는 DBMS_SPACE 패키지에서 제공하는 프러시저를 알파벳 순으로 설명한다.
세그먼트의 High Water Mark(이하 HWM) 아래의 공간(즉, 현재 사용하는 공간)에 대한 사용 정보를 제공한다. 단, 비트맵 블록(bitmap block), 세그먼트 헤더(segment header), 익스텐트 맵 블록(extent map block)의 정보는 포함되지 않는다.
High Water Mark란 테이블, 인덱스, 클러스터가 생성되고 한 번도 사용되지 않은 공간을 의미한다.
SPACE_USAGE 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_SPACE.SPACE_USAGE ( segment_owner IN VARCHAR2, segment_name IN VARCHAR2, segment_type IN VARCHAR2, unformatted_blocks OUT NUMBER, unformatted_bytes OUT NUMBER, fs1_blocks OUT NUMBER, fs1_bytes OUT NUMBER, fs2_blocks OUT NUMBER, fs2_bytes OUT NUMBER, fs3_blocks OUT NUMBER, fs3_bytes OUT NUMBER, fs4_blocks OUT NUMBER, fs4_bytes OUT NUMBER, full_blocks OUT NUMBER, full_bytes OUT NUMBER, partition_name IN VARCHAR2 DEFAULT NULL );
파라미터
파라미터 | 설명 |
---|---|
segment_owner | 스키마 객체를 소유한 사용자의 이름이다. |
segment_name | 스키마 객체의 이름이다. |
segment_type | 스키마 객체의 종류로, 다음 중 하나의 값을 갖는다.
|
unformatted_blocks | 세그먼트의 HWM 아래에서 포맷되지 않은 블록의 개수이다. |
unformatted_bytes | 세그먼트의 HWM 아래에서 포맷되지 않은 블록의 양(in bytes)이다. |
fs1_blocks | 0%와 25% 사이에 free space를 갖는 블록의 개수이다. |
fs1_bytes | 0%와 25% 사이에 free space를 갖는 블록의 양(in bytes)이다. |
fs2_blocks | 25%와 50% 사이에 free space를 갖는 블록의 개수이다. |
fs2_bytes | 25%와 50% 사이에 free space를 갖는 블록의 양(in bytes)이다. |
fs3_blocks | 50%와 75% 사이에 free space를 갖는 블록의 개수이다. |
fs3_bytes | 50%와 75% 사이에 free space를 갖는 블록의 양(in bytes)이다. |
fs4_blocks | 75%와 100% 사이에 free space를 갖는 블록의 개수이다. |
fs4_bytes | 75%와 100% 사이에 free space를 갖는 블록의 양(in bytes)이다. |
full_blocks | full로 marking된 블록의 개수이다. |
full_bytes | full로 marking된 블록의 양(in bytes)이다. |
partition_name | 다음의 경우에 따라 다르게 정의된다.
|
예제
set serveroutput on; DECLARE unformatted_blocks NUMBER; unformatted_bytes NUMBER; fs1_blocks NUMBER; fs1_bytes NUMBER; fs2_blocks NUMBER; fs2_bytes NUMBER; fs3_blocks NUMBER; fs3_bytes NUMBER; fs4_blocks NUMBER; fs4_bytes NUMBER; full_blocks NUMBER; full_bytes NUMBER; BEGIN DBMS_SPACE.SPACE_USAGE('SYS', 'EMP', 'TABLE' ,unformatted_blocks ,unformatted_bytes ,fs1_blocks ,fs1_bytes ,fs2_blocks ,fs2_bytes ,fs3_blocks ,fs3_bytes ,fs4_blocks ,fs4_bytes ,full_blocks ,full_bytes); DBMS_OUTPUT.PUT_LINE('Space utilization (TABLES) '); DBMS_OUTPUT.PUT_LINE('unformatted_blocks: '|| TO_CHAR(unformatted_blocks) ); DBMS_OUTPUT.PUT_LINE('unformatted_bytes: '|| TO_CHAR(unformatted_bytes) ); DBMS_OUTPUT.PUT_LINE('fs1_blocks: '|| TO_CHAR(fs1_blocks) ); DBMS_OUTPUT.PUT_LINE('fs1_bytes: '|| TO_CHAR(fs1_bytes) ); DBMS_OUTPUT.PUT_LINE('fs2_blocks: '|| TO_CHAR(fs2_blocks) ); DBMS_OUTPUT.PUT_LINE('fs2_bytes: '|| TO_CHAR(fs2_bytes) ); DBMS_OUTPUT.PUT_LINE('fs3_blocks: '|| TO_CHAR(fs3_blocks) ); DBMS_OUTPUT.PUT_LINE('fs3_bytes: '|| TO_CHAR(fs3_bytes) ); DBMS_OUTPUT.PUT_LINE('fs4_blocks: '|| TO_CHAR(fs4_blocks) ); DBMS_OUTPUT.PUT_LINE('fs4_bytes: '|| TO_CHAR(fs4_bytes) ); DBMS_OUTPUT.PUT_LINE('full_blocks: '|| TO_CHAR(full_blocks) ); DBMS_OUTPUT.PUT_LINE('full_bytes: '|| TO_CHAR(full_bytes) ); END;
세그먼트의 HWM 위의 공간(즉, 현재 사용하지 않는 공간)에 대한 사용 정보를 제공한다.
UNUSED_SPACE 프러시저의 세부 내용은 다음과 같다.
프로토타입
DBMS_SPACE.UNUSED_SPACE ( segment_owner IN VARCHAR2, segment_name IN VARCHAR2, segment_type IN VARCHAR2, total_blocks OUT NUMBER, total_bytes OUT NUMBER, unused_blocks OUT NUMBER, unused_bytes OUT NUMBER, last_used_extent_file_id OUT NUMBER, last_used_extent_block_id OUT NUMBER, last_used_block OUT NUMBER, partition_name IN VARCHAR2 DEFAULT NULL );
파라미터
파라미터 | 설명 |
---|---|
segment_owner | 스키마 객체를 소유한 사용자의 이름이다. |
segment_name | 스키마 객체의 이름이다. |
segment_type | 스키마 객체의 종류로, 다음 중 하나의 값을 갖는다.
|
total_blocks | 세그먼트의 전체 블록의 개수이다. |
total_bytes | 세그먼트의 전체 블록의 양(in bytes)이다. |
unused_blocks | 세그먼트의 HWM 위의 블록의 개수이다. |
unused_bytes | 세그먼트의 HWM 위의 블록의 양(in bytes)이다. |
last_used_extent_file_id | 맨 마지막에 INSERT를 위해 사용된 익스텐트가 속한 파일 ID이다. |
last_used_extent_block_id | 맨 마지막에 INSERT를 위해 사용된 익스텐트가 속한 시작 블록(starting block)의 ID이다. 파일 ID와 같이 합하면 DBA가 된다. |
last_used_extent_block | 맨 마지막에 INSERT를 위해 사용된 블록의 숫자(익스텐트 내에서의 오프셋)이다. |
partition_name | 다음의 경우에 따라 다르게 정의된다.
|
예제
set serveroutput on; DECLARE total_blocks NUMBER; total_bytes NUMBER; unused_blocks NUMBER; unused_bytes NUMBER; last_used_extent_file_id NUMBER; last_used_extent_block_id NUMBER; last_used_block NUMBER; BEGIN DBMS_SPACE.UNUSED_SPACE('SYS', 'EMP', 'TABLE' ,total_blocks ,total_bytes ,unused_blocks ,unused_bytes ,last_used_extent_file_id ,last_used_extent_block_id ,last_used_block); DBMS_OUTPUT.PUT_LINE('Unused space utilization (TABLES) '); DBMS_OUTPUT.PUT_LINE('total_blocks: '|| TO_CHAR(total_blocks) ); DBMS_OUTPUT.PUT_LINE('total_bytes: '|| TO_CHAR(total_bytes) ); DBMS_OUTPUT.PUT_LINE('unused_blocks: '|| TO_CHAR(unused_blocks) ); DBMS_OUTPUT.PUT_LINE('unused_bytes: '|| TO_CHAR(unused_bytes) ); DBMS_OUTPUT.PUT_LINE('last_used_extent_file_id: '|| TO_CHAR(last_used_extent_file_id) ); DBMS_OUTPUT.PUT_LINE('last_used_extent_block_id: '|| TO_CHAR(last_used_extent_block_id) ); DBMS_OUTPUT.PUT_LINE('last_used_block: '|| TO_CHAR(last_used_block) ); END;