Query per recuperare spazio disco allocato dai DATAFILE ma non utilizzato

Pubblicato da Alessandro Caredda il

Con l’articolo Query per recuperare spazio disco allocato dai DATAFILE ma non utilizzato, forniamo uno statement che permette di recuperare lo spazio sul disco, quindi in caso di emergenza, possiamo provare a recuperare qualche GB non utilizzato dai TABLESPACE.

Query recuperare spazio allocato dai DATAFILE

Bene, prima di partire con l’articolo “Query recuperare spazio allocato dai DATAFILE” vorremmo introdurre questo sito a te che lo vedi per la prima volta!
Scriptdba è il primo sito verticale su database Oracle completamente in italiano. In realtà durante il 2020 usciremo con la versione in inglese, ma l’italiano ci sarà sempre e comunque.
Hai capito bene, un sito in doppia lingua. Perchè? Perchè a noi piace fare le cose semplici, semplici per voi lettori ovviamente! (un po meno per noi).

Su scriptdba.com troverai guide, tutorial e troubleshooting sul database più enterprise che ci sia!

Lo spazio è recuperabile solo se contiguo, quindi se troppo frammentato occorrerà effettuare attività di reorg per avere una scrittura in lineare e senza frammentazione.

Statement per recuperare lo spazio da tutti i data file di un determinato file system:

set pages 999
set lines 300
select 'alter database datafile ''' || file_name || ''' resize ' || ceil( (nvl(hwm,1)*(select DISTINCT BLOCK_SIZE from dba_tablespaces))/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 a.file_name like '%/&file_system%'
and ceil(blocks*(select DISTINCT BLOCK_SIZE from dba_tablespaces)/1024/1024)- ceil((nvl(hwm,1)*(select DISTINCT BLOCK_SIZE from dba_tablespaces))/1024/1024 ) > 0;

Statement per recuperare lo spazio da tutti i datafile di un TABLESPACE:

set pages 999
set lines 300
select 'alter database datafile ''' || file_name || ''' resize ' || ceil( (nvl(hwm,1)*(select DISTINCT BLOCK_SIZE from dba_tablespaces))/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 a.tablespace_name ='&tbsp'
and ceil(blocks*(select DISTINCT BLOCK_SIZE from dba_tablespaces)/1024/1024)- ceil((nvl(hwm,1)*(select DISTINCT BLOCK_SIZE from dba_tablespaces))/1024/1024 ) > 0;
Query recuperare spazio allocato dai DATAFILE
Digital Cyberspace. Network and global database. 3D illustration of clusters of information with a binary code element

Per visionare le nostre guide sui Comandi CRS clicca qui!
A questo LINK, invece, troverai le query SQL

Per chi ancora non lo avesse fatto, consigliamo di salvare tra i propri bookmark questo sito, così da avere sempre a portata di mano le nsotre soluzioni ai problemi più comuni su database, in particolar modo, database oracle.

Resta aggiornato sulle nostre attività entrando a far parte della nostra community:
Facebook
Youtube
Linkedin


0 commenti

Lascia un commento

Segnaposto per l'avatar