DBMS 1
DA, SQL, DB보안 등 실무자를 위한 위한 DB기술 바이블!
19.1. 개요 19.2. 프로시저 19.2.1. SPACE_USAGE 19.2.2. UNUSED_SPACEDBMS_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;
R