반응형
테이블 데이터의 사이즈를 계산해주는 SQL
/*--------------------------------------------------------------------------*/
/* TABLE DATA SIZE를 정확히 계산해주는 스크립트. 
/* 사용법 : @TAB_SIZE [TABLE_NAME]
/*--------------------------------------------------------------------------*/
ANALYZE TABLE &1 DELETE STATISTICS;
ANALYZE TABLE &1 COMPUTE STATISTICS;

SELECT GREATEST(4, CEIL(NUM_ROWS/
((ROUND(((1958-(INI_TRANS*23))*
((100-PCT_FREE)/100))/AVG_ROW_LEN)))) * 2048) 
TABLESIZE_KBYTES
FROM USER_TABLES
WHERE TABLE_NAME = UPPER('&1'); 

 

테이블이 사용중인 블록 크기를 계산해주는 SQL
/*--------------------------------------------------------------------------*/
/* TABLE이 사용하는 블럭 크기를 구하는 스크립트...
/* 사용법 : 1) DBA 권한으로 로그인한다.
/* 2) SQL> @TAB_BLOCK [TABLE명]
/* NOTICE : SUM(BLOCKS)는 사용하는 블럭의 갯수이며 사이즈는 
/* DB_BLOCK_SIZE를 곱하여 얻을 수 있다.
/*--------------------------------------------------------------------------*/
SELECT OWNER, TABLESPACE_NAME, SEGMENT_NAME, SUM(BLOCKS)
FROM DBA_EXTENTS
WHERE SEGMENT_NAME = UPPER('&1')
GROUP BY OWNER, TABLESPACE_NAME, SEGMENT_NAME
/

/* 테이블스페이스별 디스크 사용량 보기 */
SELECT SUBSTRB(A.TABLESPACE_NAME, 1,16) as TABLESPACE,
TO_CHAR(A.TOTAL, '999,999,999,990') as "총량(바이트)",
TO_CHAR(B.FREE, '999,999,999,990') as "남은량(바이트)",
TO_CHAR(A.BLOCKS, '9,999,990') as "총블럭",
TO_CHAR(C.BLOCKS, '9,999,990') as "사용블럭",
TO_CHAR(100*NVL(C.BLOCKS,0)/A.BLOCKS, '999.99') as "사용율%"
FROM (SELECT TABLESPACE_NAME,
SUM(BYTES) as TOTAL,
SUM(BLOCKS) as BLOCKS
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME
) A,
(SELECT TABLESPACE_NAME,
SUM(BYTES) as FREE
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME
) B,
(SELECT TABLESPACE_NAME,
SUM(BLOCKS) as BLOCKS
FROM DBA_EXTENTS
GROUP BY TABLESPACE_NAME
) C
WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME(+)
AND A.TABLESPACE_NAME = C.TABLESPACE_NAME(+)
ORDER BY A.TABLESPACE_NAME ;

 

 

SELECT SUBSTRB(TABLESPACE_NAME,1,20) AS "테이블스페이스",
SUBSTRB(FILE_NAME, 1, 26) AS "파일명",
TO_CHAR(BLOCKS,'999,999,990') as " 블럭수",
TO_CHAR(BYTES/1024/1024,'99,999,999') as " 크기(MB)"/*,
decode(STATUS, 'AVAILABLE', '사용', '중지') as "상태"*/
FROM SYS.DBA_DATA_FILES
WHERE TABLESPACE_NAME like 'REC_%'
ORDER BY TABLESPACE_NAME, FILE_NAME ;





*. 한 개의 BLOCK에 Available 한 Bytes - 1958
*. 각 initrans 는 23 Bytes
*. PCT_FREE : Table 의 pctfree 값(default 10)
*. ADJ_ROW_SIZE : 각 row 의 평균 SIZE 추정치
*. ROW_COUNT : table 의 row 의 갯수
*. BLOCK_SIZE : 1 block의 크기 (단위: K)

analyze table emp compute statistics;
(또는 건수가 매우 많을 때에는 compute 대신 estimate 사용)
반응형

+ Recent posts