Datafile Resize 계산하기

- maxshrink.sql - 


set verify off 

column file_name format a50 word_wrapped 

column smallest format 999,990 heading ""Smallest|Size|Poss."" 

column currsize format 999,990 heading ""Current|Size"" 

column savings format 999,990 heading ""Poss.|Savings"" 

break on report 

compute sum of savings on report 


column value new_val blksize 

select value from v$parameter where name = 'db_block_size' 


select file_name, 

ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) smallest, 

ceil( blocks*&&blksize/1024/1024) currsize, 

ceil( blocks*&&blksize/1024/1024) - 

ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) savings 

from dba_data_files a, 

( select file_id, max(block_id+blocks-1) hwm 

from dba_extents 

group by file_id ) b 

where a.file_id = b.file_id(+) 


column cmd format a75 word_wrapped 


select 'alter database datafile '''||file_name||''' resize ' || 

ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) || 'm;' cmd 

from dba_data_files a, 

( select file_id, max(block_id+blocks-1) hwm 

from dba_extents 

group by file_id ) b 

where a.file_id = b.file_id(+) 

and ceil( blocks*&&blksize/1024/1024) - 

ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) > 0 



테이블 스페이스에 공간이 부족해서 여유공간을 확보하려고 테이블에 데이터를 지우고 축소를 하려면?


해당 Tablespace가 automatic segment management 가 되어있어야 하고


해당 Table은 row movement가 enable 되어있어야 합니다


되어있다면 


SQL> alter table [table_name] shrink space;


SQL> alter table [table_name] shrink space cascade;


Shrink 작업으로 HWM를 당긴 다음에 Resize 작업을 진행해야 합니다.


Shrink는 온라인 상태에서 가능하나 시간이 오래 걸리고,


HWM 당길 테이블들을 기존에 담고 있는 Tablespace로 Move 명령을 하면 Reorg 작업이 가능합니다.


단, Tablespace를 offline 상태에서 해야합니다.

'ORACLE > Admin' 카테고리의 다른 글

Table 또는 인덱스의 사이즈를 확인 하는 쿼리  (0) 2018.11.01
ASM 용량 확인  (0) 2018.10.28
Datafile Resize 계산하기  (0) 2018.10.18
Listener password  (0) 2018.10.14
Oracle 8i Startup, shutdown  (0) 2018.04.09
ASM  (0) 2018.03.12

티스토리 툴바