Oracle
 sql >> Database >  >> RDS >> Oracle

Creazione di una tabella temporanea globale in Oracle

-Oracle ci consente di  creare una tabella temporanea .

-La definizione di una tabella temporanea è visibile a tutte le sessioni, ma i dati in una tabella temporanea sono visibili solo alla sessione che inserisce i dati nella tabella.

-Dobbiamo utilizzare l'istruzione CREATE GLOBAL TEMPORARY TABLE per creare una tabella temporanea.

-La clausola ON COMMIT indica se i dati nella tabella sono specifici della transazione (impostazione predefinita) o specifici della sessione

ELIMINA RIGHE

Questo crea una tabella temporanea che è specifica della transazione. Una sessione viene associata alla tabella temporanea con una transazione prima inserita nella tabella. Il legame scompare al termine della transazione. Il database tronca la tabella (cancella tutte le righe) dopo ogni commit.

PRESERVA LE RIGHE

Questo crea una tabella temporanea che è specifica della sessione. Una sessione viene associata alla tabella temporanea con il primo inserimento nella tabella nella sessione. Questa associazione scompare al termine della sessione o emettendo un TRUNCATE della tabella nella sessione. Il database tronca la tabella quando si termina la sessione.

Le tabelle temporanee sono utili nelle applicazioni in cui un set di risultati deve essere memorizzato nel buffer, forse perché è costruito eseguendo più operazioni DML

CREATE GLOBAL TEMPORARY TABLE GL_DATA_TEMP
(startdate DATE,
enddate DATE,
gl_id CHAR(20))
ON COMMIT DELETE ROWS;

Gli indici possono essere creati su tabelle temporanee . Sono anche temporanei e i dati nell'indice hanno lo stesso ambito di sessione o transazione dei dati nella tabella sottostante.

Se l'istruzione TRUNCATE viene emessa rispetto a una tabella temporanea, vengono troncati solo i dati specifici della sessione. Non vi è alcun effetto sui dati di altre sessioni.

Se esegui il rollback di una transazione, i dati inseriti vanno perduti, sebbene la definizione della tabella persista.

I dati nelle tabelle temporanee vengono archiviati in segmenti temporanei nel tablespace temporaneo che non genera alcun ripristino, quindi le operazioni che utilizzano la tabella temporanea globale sono relativamente più veloci. Ma gli annullamenti vengono comunque generati in undo tablespace che ha la registrazione di ripetizione. Quindi le operazioni di ripristino non vengono del tutto eliminate nelle tabelle temporanee globali, ma sono relativamente inferiori

I dati nelle tabelle temporanee vengono automaticamente eliminati al termine della sessione del database, anche se termina in modo anomalo.

È possibile creare viste rispetto a tabelle temporanee e combinazioni di tabelle temporanee e permanenti. Possono essere associati a trigger

Con la versione Oracle 12.1(12c database) , è stato introdotto il concetto di annullamento temporaneo che consente ai segmenti di annullamento per le tabelle temporanee globali di essere archiviati nel tablespace temporaneo. Ciò consente di utilizzare le tabelle temporanee globali nei database fisici in standby e di sola lettura, oltre a eliminare la necessità di creare operazioni di ripristino.

ALTER SYSTEM SET TEMP_UNDO_ENABLED =TRUE;
ALTER SYSTEM SET TEMP_UNDO_ENABLED =FALSE;