Resumable Space Allocation

mercoledì 24 ottobre 2007 alle 24:52 | Pubblicato su Installation and Configuration, Performance Tuning | Lascia un commento

Studiare per la certificazione mi fa bene, intanto sento che la mia memoria migliora, ma soprattutto imparo cose nuove. L’ultima cosa che ho scoperto è la caratteristica “RESUMABLE SPACE ALLOCATION“, una caratteristica utile in diverse situazioni e già presenti su 9iR2. Fra l’altro ho finalmente capito che cosa è un evento di tipo “SUSPEND” (evento di sistema). Vediamo un po’ di cosa si tratta.

Oracle fornisce un modo per sospendere e successivamente riattivare l’esecuzione di grosse operazioi sul database nell’eventualità di problemi di allocazione di spazio. In questo modo, quando si verifica questa situazione si possono prendere misure correttive e far riprendere il lavoro da dove si era interrotto senza dover rifare tutto; si pensi ad esempio ad un grosso caricamento dati. Questa caratteristica viene chiamata appunto resumable space allocation.

Questa caratteristica per default è disattiva ed è possibile attivarla a due livelli:

  1. A livello di sessione, con l’istruzione “ALTER SESSION ENABLE RESUMABLE”
  2. A livello di database, settando il parametro di sistema RESUMABLE_TIMEOUT ad un valore diverso da zero

Perchè un utente possa attivare la “RSA” deve avere il privilegio “RESUMABLE”:

SQL> grant resumable to sviluppo31;

Concessione riuscita.

Dopo di ché l’utente può attivarla:

SQL> alter session enable resumable;

Modificata sessione.

Oppure con un timeout:

SQL> alter session enable resumable timeout 3600;

Modificata sessione.

In questo modo la sessione se ad esempio sfora durante un inserimento la quota sulla tablespace:

STATUS   USERNAME    SID EVENT
-------- -------------  --- --------------------------------------------
ACTIVE   SVILUPPO31   120 statement suspended, wait error to be cleared

Ulteriori dettagli sono visualizzabili tramite le viste di sistema USER/DBA_RESUMABLE.

Le situazioni in cui questa caratteristica interviene sono diverse:

  • Query che esauriscono spazio della tablespace TEMPORARY
  • Statement DML che provocano un errore di quota o di spazio
  • Operazioni di Import/Export
  • DDL tipo CREATE TABLE … AS SELECT, CREATE INDEX ecc.

Per individuare e gestire le sessioni sospese vi sono le già citate viste USER/DBA_RESUMABLE, vi è il package PL/SQL DBMS_RESUMABLE. Inoltre quando una sessione entra in stato sospeso viene lanciato a livello di sistema un evento “SUSPEND” su cui è possibile attivare dei trigger, sia a livello di database che di schema. In questo caso i triggere sono sempre AUTONOMI.

Lascia un commento »

RSS feed for comments on this post. TrackBack URI

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

Crea un sito o un blog gratuitamente presso WordPress.com.
Entries e commenti feeds.

%d blogger cliccano Mi Piace per questo: