Automatic Undo Management (AUM) ORACLE 9i

Nelle versioni Oracle 8i e precedenti, i segmenti di rollback fornivano consistenza di lettura e la possibilità di effettuare il rollback delle transazioni.
In Oracle 9i, queste funzionalità sono fornite dai segmenti di Undo. Il vantaggio di usare l’Automatic Undo Management è che il DBA è sollevato dal dover creare, dimensionare e monitorare i segmenti di rollback manualmente.
Per iniziare ad usare l’Automatic Undo Management è necessario creare un tablespace di tipo UNDO e settare alcune variabili di inizializzazione.
Creare un tablespace Undo:
Oracle può creare segmenti di Undo solamente in tablespace speciali di tipo Undo; E’ necessario creare il tablespace Undo al momento della creazione del database oppure separatamente:

  • Uso dello statement di creazione tablespace Undo
    CREATE UNDO TABLESPACE undotbs
    DATAFILE ‘/dev/vx/rdsk/dg_db/db_02048_raw_040′ SIZE 500M AUTOEXTEND ON MAXSIZE 10G;
    I parametri di inizializzazione seguenti possono essere usati per abilitare e controllare l’AUM (per vedere la configurazione corrente: “show parameters undo”):
    UNDO_MANAGEMENT (MANUAL o AUTO)
  • settare ad AUTO per abilitare AUM. L’impostazione di default per database 8i e 9i è MANUAL. E’ richiesto il riavvio del database per effettuare lo switch tra le due modalità.
    UNDO_TABLESPACE (con nome tablespace di tipo UNDO valido)
  • specifica quale tablespace Undo usare.
    UNDO_RETENTION (tempo espresso in secondi)
  • Specifica il tempo di retention a cui l’istanza dovrebbe attenersi. Il valore di default è di 9000 secondi o 15 minuti. Se il tablespace Undo è troppo piccolo rispetto al tempo di retention è possibile incorrere nell’errore ORA-1555.
    UNDO_SUPPRESS_ERRORS (TRUE o FALSE)
  • Specifica se restituire o meno un’eccezione a monte di un DDL o di un “SET TRANSACTION USE ROLLBACK SEGMENT”. Il default è FALSE.
  • Esempio:
    SQL> alter system set undo_management=auto scope=spfile;
    SQL> create UNDO tablespace UNDOTS1 datafile ‘/dev/vx/rdsk/dg_db/db_02048_raw_040′ size 500M AUTOEXTEND ON MAXSIZE 10G;
    SQL> alter system set undo_tablespace=UNDOTS1 scope=spfile;
    SQL> shutdown immediate;

    SQL> startup
    Per monitorare i segmenti di Undo si possono usare queste viste:
    Le viste tradizionali quali DBA_ROLLBACK_SEGS, V$ROLLSTAT, V$ROLLNAME e V$TRANSACTION sono ancora disponibili.
    DBA_UNDO_EXTENTS – indica quando sono stati impegnati i vari segmenti nel tablespace Undo.
    V$UNDOSTAT – mostra l’utilizzo dell’undo nelle ultime 24 ore. Ogni record riporta un intervallo temporale di 10 minuti delimitato da START_TIME ed END_TIME. Il campo chiave è UNDO_BLOCKS. Notare che è possibile dimensionare il tablespace UNDO solo rispettando la seguente: UNDO TS SIZE = UNDO_RETENTION * UNDO_BLOCKS * BLOCK_SIZE.

Potrebbero interessarti anche...