• Home
  • LLMs
  • Python
  • Docker
  • Kubernetes
  • Java
  • Ubuntu
  • Maven
  • Archived
  • About
Oracle | GLOBAL TEMPORARY TABLE (GTT)
  1. Les tables temporaires
  2. Créer des tables temporaires par transaction
  3. Créer des tables temporaires par session

  1. Les tables temporaires
    Les tables temporaires sont un outil qui peut être très important pour régler des problèmes de performance de certaines requêtes très complexes.
    Aussi, ces tables peuvent servir pour stocker les résultats temporaires de l'exécution de certaines requêtes qui sont amenées à s'exécuter plusieurs fois dans le code.

    Beaucoup de DBA Oracle croient que les tables temporaires ne sont pas nécessaires et que l'optimisateur Oracle est en mesure de répondre efficacement à toutes les requêtes et que la solution aux problèmes de performance est en mains des développeurs SQL qui doivent bien écrire les requêtes SQL et aussi en mains des DBA qui doivent bien concevoir la base données et bien gérer la structure logique et physique de la base de données (indexes, fichiers de données, …).

    Bien que cela soit en partie vrais, mais ca n'élimine pas le fait que dans la pratique on a toujours des exceptions, et d'ailleurs, si Oracle à créer ces tables c'est parce qu'il y a certainement des cas où elles peuvent servir à quelques choses!
    Personnellement, je pense que c'est la responsabilité des développeurs SQL et DBA de bien discuter les différents solutions possibles (y compris les tables temporaires) et balancer le temps et l'effort nécessaires pour implanter chaque solution en fonction des gains du temps espérés.

    Oracle offre la possibilité de créer deux types de tables temporaires : tables temporaires par transaction et par session.
  2. Créer des tables temporaires par transaction

    La clause ON COMMIT DELETE ROWS indique que les données seront privées à la transaction courante (elles sont invisibles à l'extérieur de cette transaction) et elles seront automatiquement supprimées à la fin de cette transaction.
    Par défaut, si la clause ON COMMIT n'est pas spécifiée, la table sera une table temporaire par transaction.
  3. Créer des tables temporaires par session

    La clause ON COMMIT PRESERVE ROWS indique que les données seront privées à la session SQL courante (elles sont invisibles à l'extérieur de cette session) et elles seront automatiquement supprimées à la fin de cette session.

    Note : Il faut faire attention qu'il s'agit d'une session SQL et non une session applicative : lorsqu'un utilisateur se connecte à une application WEB, le conteneur WEB (Tomcat) lui crée une session applicative unique (si configuré ainsi) et cette session applicative n'a rien à avoir avec la session SQL créée par ORACLE.

    Il y a deux scénarios à prendre en considération lorsqu'on crée une table temporaire par session :

    • Plusieurs sessions applicatives peuvent partager la même session SQL, et donc les insertions faites par un utilisateur d'une session applicative seront visibles à d'autres utilisateurs qui ont accès à la même session SQL.

    • Un utilisateur qui utilise une application WEB peut éventuellement être rediriger à des sessions SQL différentes pour chaque nouvelle requête http.
© 2025  mtitek