1. script
/*
** 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′);
2. p-sql
[Oracle] TABLE, INDEX 실 데이터 size 구하기
TABLE size 구하기
set pagesize 9999
col owner format a10
col tablespace_name format a20
col table_name format a30
col mb format 99990.99
SELECT OWNER, TABLESPACE_NAME, TABLE_NAME, NUM_ROWS*AVG_ROW_LEN/1024/1024 as MB
FROM DBA_TABLES
WHERE OWNER IN (‘ADPORTAL’,'INTRADBA’,'UWDBA’,'WEBSALES’)
ORDER BY OWNER, TABLESPACE_NAME, TABLE_NAME;
INDEX size 구하기
db_block_size를 LEAF_BLOCKS과 곱한다
select value from v$parameter where name = ‘db_block_size’
set pagesize 9999
col owner format a10
col tablespace_name format a20
col index_name format a30
col mb format 99990.99
SELECT OWNER, TABLESPACE_NAME, INDEX_NAME, LEAF_BLOCKS*8192/1024/1024 as MB
FROM DBA_INDEXES
WHERE OWNER IN (‘ADPORTAL’,'INTRADBA’,'UWDBA’,'WEBSALES’)
ORDER BY OWNER, TABLESPACE_NAME, INDEX_NAME;
TABLE size 구하기
set pagesize 9999
col owner format a10
col tablespace_name format a20
col table_name format a30
col mb format 99990.99
SELECT OWNER, TABLESPACE_NAME, TABLE_NAME, NUM_ROWS*AVG_ROW_LEN/1024/1024 as MB
FROM DBA_TABLES
WHERE OWNER IN ('ADPORTAL','INTRADBA','UWDBA','WEBSALES')
ORDER BY OWNER, TABLESPACE_NAME, TABLE_NAME;
INDEX size 구하기
db_block_size를 LEAF_BLOCKS과 곱한다
select value from v$parameter where name = 'db_block_size'
set pagesize 9999
col owner format a10
col tablespace_name format a20
col index_name format a30
col mb format 99990.99
SELECT OWNER, TABLESPACE_NAME, INDEX_NAME, LEAF_BLOCKS*8192/1024/1024 as MB
FROM DBA_INDEXES
WHERE OWNER IN ('ADPORTAL','INTRADBA','UWDBA','WEBSALES')
ORDER BY OWNER, TABLESPACE_NAME, INDEX_NAME;