Oracle
 sql >> Base de données >  >> RDS >> Oracle

Création d'une table temporaire globale dans Oracle

-Oracle nous permet de  créer une table temporaire .

-La définition d'une table temporaire est visible pour toutes les sessions, mais les données d'une table temporaire ne sont visibles que pour la session qui insère les données dans la table.

-Nous devons utiliser l'instruction CREATE GLOBAL TEMPORARY TABLE pour créer une table temporaire.

-La clause ON COMMIT indique si les données de la table sont spécifiques à la transaction (valeur par défaut) ou spécifiques à la session

SUPPRIMER DES LIGNES

Cela crée une table temporaire spécifique à la transaction. Une session devient liée à la table temporaire avec une première transaction insérée dans la table. La liaison disparaît à la fin de la transaction. La base de données tronque la table (supprime toutes les lignes) après chaque commit.

CONSERVER LES LIGNES

Cela crée une table temporaire spécifique à la session. Une session est liée à la table temporaire avec la première insertion dans la table de la session. Cette liaison disparaît à la fin de la session ou en émettant TRUNCATE de la table dans la session. La base de données tronque la table lorsque vous terminez la session.

Les tables temporaires sont utiles dans les applications où un jeu de résultats doit être mis en mémoire tampon, peut-être parce qu'il est construit en exécutant plusieurs opérations DML

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

Les index peuvent être créés sur des tables temporaires . Ils sont également temporaires et les données de l'index ont la même portée de session ou de transaction que les données de la table sous-jacente.

Si l'instruction TRUNCATE est émise sur une table temporaire, seules les données spécifiques à la session sont tronquées. Il n'y a aucun effet sur les données des autres sessions.

Si vous annulez une transaction, les données que vous avez saisies sont perdues, bien que la définition de table persiste.

Les données des tables temporaires sont stockées dans des segments temporaires dans l'espace de table temporaire qui ne génère aucune opération de restauration, de sorte que l'utilisation de la table temporaire globale est relativement plus rapide. Mais les annulations sont toujours générées dans l'espace de table d'annulation qui a une journalisation redo. Ainsi, les opérations de restauration ne sont pas totalement éliminées dans les tables temporaires globales, mais elles sont relativement inférieures

Les données des tables temporaires sont automatiquement supprimées à la fin de la session de la base de données, même si elle se termine anormalement.

Des vues peuvent être créées sur des tables temporaires et des combinaisons de tables temporaires et permanentes. Ils peuvent être associés à des déclencheurs

Avec la version 12.1 (base de données 12c) d'Oracle, le concept d'annulation temporaire a été introduit, ce qui permet aux segments d'annulation des tables temporaires globales d'être stockés dans l'espace de table temporaire. Cela permet aux tables temporaires globales d'être utilisées dans les bases de données de secours physiques et les bases de données en lecture seule, tout en supprimant la nécessité de créer des redo.

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