SELECT SEGMENT_NAME, BYTES FROM USER_SEGMENTS WHERE SEGMENT_TYPE='TABLE'
analyze TABLE <table_name> compute statistics;
SELECT blocks FROM dba_tables WHERE TABLE_NAME ='<table_name>';
blocks + 1(segment header block) : 해당 Table 이 사용중인 database block count , HWM
object fil block row ------ --- ------ --- AAABPW AAF AAAAv1 AAA
SELECT COUNT(1) FROM (SELECT SUBSTR(ROWID,1,15) FROM <table_name> GROUP BY SUBSTR(ROWID,1,15) );
SQL> analyze TABLE costs compute statistics; TABLE analyzed.
SQL> select blocks from user_tables where table_name='COSTS'; BLOCKS ---------- 2924
2924는 HWM 아래 block count 이다.
SQL> SELECT COUNT(1)FROM (SELECT substr(rowid,1,15) FROM costs GROUP BY substr(rowid,1,15)); COUNT(1) ---------- 2506
2506은 HWM 아래 block 중 사용중인 block count 이다.
해당 Table에 할당된 크기 | Table에 할당되었지만 사용중 또는 미사용공간 전부 포함 |
---|---|
HWM 아래 크기 | 할당된 공간중에서 full table scan시 검색하는 부분까지만의 크기 즉 HWM이후 공간은 아직 한번도 사용이 안된 new block이다 |
HWM 아래중 완전히 비어 있는 block을 제외한 크기 | delete에 의해 block전체가 비어 있는 block을 제외한 크기 |
SELECT TABLE_NAME, GREATEST(4, CEIL(NUM_ROWS / ((ROUND(((8192 - (INI_TRANS * 23)) * ((100 - PCT_USED) /100)) / AVG_ROW_LEN)))) * 8192)/1024/1024 TABLESIZE_MBYTES FROM USER_TABLES ;