Il arrive souvent (voir trop souvent) que l'on se retrouve avec des ressources disque limitées.
Notre base de données à vécue, l'espace libre s’amenuise mais nous constatons que plus de la moitié de l'espace alloué dans un de nos tablespace est vide.
Voici une petite solution qui peut vous permettre d’éviter de redeverser les objets de notre tablespace dans un autre
Ce script va calculer la taille minimale pour chaque datafile de notre tablespace et générer les requêtes de resize.
set pagesize 0
set linesize 150
set head off
set verify off
set echo off
spool resize_tbs.sql
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,
(select to_number(value) blksize from v$parameter where name = 'db_block_size') c
where a.file_id = b.file_id (+)
and CEIL(blocks * c.blksize / 1024 /1024) - CEIL((nvl(b.hwm,1) * c.blksize) / 1024 /1024) > 0
and tablespace_name=<TABLESPACE NAME>;
spool off
Aucun commentaire:
Enregistrer un commentaire