Oracle 10 g – Imansible liberare spazio nello spazio tabulato

Il tablespace in Oracle 10g è utilizzato quasi 100%.

Formato (MB) = 571,768.0 Utilizzato (MB) = 571,534.0

Ho appena eliminato (e impegnato) migliaia di record in una tabella che appartiene a uno schema associato a tale tabella. Sorprendentemente, nessun spazio è stato liberato secondo la pagina Tablespaces su Enterprise Manager.

Domanda: c'è qualcosa che devo fare per obbligare Oracle a rilasciare lo spazio corrispondente ai record cancellati?

  • Ci sono differenze di performance tra le edizioni Oracle Entreprise e Oracle Standard?
  • Come impedire l'accesso remoto per SYS
  • Oracle 10g for Windows non si avvia all'avvio del sistema
  • Come si profilano un database Oracle?
  • La generazione di Oracle Logical Standby redo
  • Come posso trovare la versione del server Oracle 10g?
  • oracle lsnrctl TNS-12545: il collegamento è fallito perché l'host o l'object target non esistono
  • come modificare il nome utente in oracle
  • 4 Solutions collect form web for “Oracle 10 g – Imansible liberare spazio nello spazio tabulato”

    alter table {table_name} abilita la movimentazione delle righe;

    altera tabella {table_name} spazio di restringimento;

    La pagina che stai esaminando in Enterprise Manager sta quasi certamente segnalando lo spazio libero confrontando DBA_DATA_FILES (che ti dice le size totali dei vari file assegnati a uno spazio tabellare) con DBA_SEGMENTS (che ti dice la dimensione totale di tutti i segmenti allocati agli oggetti nella tabella). Questo non cambierà semplicemente perché hai eliminato alcuni dati.

    Quando si elimina i dati, si libera lo spazio all'interno dei blocchi e delle estensioni assegnati ad un determinato object. Quindi, se elimini i dati di 100 MB dalla tabella FOO (e gli indici FOO associati), la dimensione del segmento FOO non diminuirà. Ma ci sarebbe ora spazio in quel segmento che avrebbe ospitato un altro 100 MB di inserti in FOO. Se stai eliminando lo spazio da FOO per liberare spazio per altri segmenti nel tablespace, dovresti riorganizzare il FOO dopo la cancellazione dei dati: questo è un process in qualche modo implicato che richiede tempi di inattività e un po 'di test . A less che non riduciate in modo permanente le size di un object, non è generalmente consigliabile se FOO avrà finalmente un altro 100 MB di inserti, non è vantaggioso ridurre il segmento FOO solo per farlo crescere nuovamente.

    Puoi utilizzare il pacchetto DBMS_SPACE per vedere quanto spazio è disponibile nei diversi segmenti. Questo vi dirà di blocchi vuoti e blocchi che sono in vari stati di riempimento (0-25% pieno, 25-50% pieno, 50-75% pieno e 75-100% pieno). Quando si eliminano i dati, si generano in genere un aumento del numero di blocchi vuoti e parzialmente vuoti assegnati a una tabella.

    Proprio come un follow-on alla risposta accettata, è ansible utilizzare il Segment Advisor (tramite una chiamata a dbms_advisor) per stimare il risparmio di spazio per l'esecuzione dell'operazione dello spazio di restringimento. [Non è necessario un licenza per eseguire il consulente di settore]

    Potresti poi risparmiare un po 'di tempo e puntare solo i segmenti where avresti più vantaggio.

    Di solito è meglio creare una tabella temporanea come creare il nome della tabella tab_table come select * da table_you_deleted_from; quindi rilasciare gli indici nella tabella originale disabilitare il vincolo che punta a quella tabella e quindi rilasciare e ricreare questa tabella di nuovo come creare tabella table_you_deleted_from nome come select * da temp_table; ricrearti indici e abilitare i vincoli.

    Qui è fondamentalmente ridotto la dimensione della tabella e la lunghezza dell'tree di indice, vale a dire una rapida ricostruzione in corso.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.