Oracle 10g Razvan Bizoï SQL pour © Tsoft, Groupe Eyrolles, 2006, ISBN : 2-212-1

Oracle 10g Razvan Bizoï SQL pour © Tsoft, Groupe Eyrolles, 2006, ISBN : 2-212-12055-9, ISBN 13 : 978-2-212-12055-4 © Eyrolles/Tsoft – SQL pour Oracle10g 14-1 Module 14 : Les transactions Objectifs A la fin de ce module, vous serez à même d’effectuer les tâches suivantes : • Décrire les concepts d’une transaction. • Structurer une transaction en plusieurs parties. • Décrire les composants de la base de données et de l’instance. • Décrire les niveaux d’isolation d’Oracle. • Décrire le verrouillage des ressources en Oracle. • Décrire le traitement de validation ou de rejet de la transaction. Contenu Les transactions ............................... 14-2 La conservation des blocs ..............14-17 Début et fin de transaction............... 14-4 Flashback........................................14-18 Structuration de la transaction ......... 14-5 DBMS_FLASHBACK...................14-19 L’isolation........................................ 14-8 Fonctions de conversion.................14-22 Les niveaux d’isolation.................. 14-10 Interrogation FLASHBACK ..........14-24 Le verrouillage............................... 14-12 Interrogation des versions ..............14-26 Le Segment Undo.......................... 14-15 Atelier 14.......................................14-29 La lecture cohérente....................... 14-16 • La transaction • SAVEPOINT • Le verrouillage • COMMIT Module 14 : Les transactions © Eyrolles/Tsoft – SQL pour Oracle10g 14-2 Les transactions Module 14 : Les transactions TSOFT - ORACLE 10g SQL et PL*SQL Les transactions Atomicité Cohérence Isolation Durabilité La création d'une base de données ne supportant qu'un utilisateur simple n'est pas très utile. Le contrôle de multiples utilisateurs mettant à jour les mêmes données et en même temps est crucial ; il est lié à l'uniformité et à la simultanéité des données. La simultanéité des données signifie que de nombreuses personnes peuvent accéder aux mêmes données en même temps, alors que l'uniformité des données signifie que les résultats visualisés par une personne sont cohérents à l'intérieur d'une ou plusieurs transactions courantes. Une transaction est un ensemble d'ordres SQL qui ont pour objectif de faire passer la base de données, en une seule étape, d'un état cohérent à un autre état cohérent. Une transaction qui réussit, modifie la base de données dans un nouvel état cohérent. Si elle échoue (volontairement ou involontairement), les modifications déjà effectuées dans la base sont annulées, de sorte qu'elle retrouve l'état cohérent antérieur au début de la transaction. C'est Oracle qui se charge entièrement de toute cette gestion. Les transactions devraient être aussi petites que possible, avec toutes les opérations adaptées pour le changement simple des données. Afin qu'une série d'opérations soit considérée comme une transaction, elle doit présenter les propriétés : Atomicité Une transaction doit être une unité atomique de travail ; elle ne peut réussir que si toutes ses opérations réussissent. Cohérence Quand une transaction est terminée, elle doit laisser les données dans un état cohérent incluant toutes les règles d'intégrité de données. Isolation Les transactions doivent être isolées des changements effectués par d'autres transactions, soit avant que la transaction ne démarre, soit avant le démarrage de chaque opération dans la transaction. Ce niveau d'isolation est configurable par l'application. Module 14 : Les transactions © Eyrolles/Tsoft – SQL pour Oracle10g 14-3 Durabilité Une transaction doit être récupérable aussitôt qu'elle est terminée. Même si un échec du système se produit après la fin de la transaction, les effets de la transaction sont permanents dans le système. Bien que de nombreuses personnes considèrent que les transactions sont des groupes d'instructions SQL, chaque instruction SQL est une transaction. Si, pendant l'exécution d'une simple instruction SQL, une erreur se produit, le travail effectué par cette instruction est annulé comme s'il ne s'était jamais produit, c'est le niveau d'instruction uniforme. Pour être sûr de l'uniformité des données quand on développe des applications, il suffit de grouper logiquement plusieurs instructions SQL dans une transaction simple. Celle- ci peut alors être traitée comme unité simple de travail en utilisant les ordres de contrôle des transactions. Attention Module 14 : Les transactions © Eyrolles/Tsoft – SQL pour Oracle10g 14-4 Début et fin de transaction Module 14 : Les transactions TSOFT - ORACLE 10g SQL et PL*SQL Début et fin de transaction INSERT UPDATE DELETE temps Début Début transaction transaction Fin transaction précédente Début de la session COMMIT ROLLBACK Fin Fin transaction transaction Une transaction commence à l’ouverture de la session ou à la fin de la précédente transaction. La toute première transaction débute au lancement du programme. Il n'existe pas d'ordre implicite de début de transaction. La fin d'une transaction peut être définie explicitement par l'un des ordres « COMMIT » ou « ROLLBACK » : • « COMMIT » termine une transaction par la validation des données. Il rend définitives et accessibles aux autres utilisateurs toutes les modifications effectuées pendant la transaction en les sauvegardant dans la base de données et annule tous les verrous positionnés pendant la transaction (voir Mécanismes de verrouillage); • « ROLLBACK » termine une transaction en annulant toutes les modifications de données effectuées et annule tous les verrous positionnés pendant la transaction. La fin d'une transaction peut aussi être implicite et correspondre à l'un des événements suivants : • l'exécution d'un ordre de définition d'objet : « CREATE », « DROP », « ALTER », « GRANT », « REVOKE », « TRUNCATE », etc. se solde par la validation de la transaction en cours; • l'arrêt normal d'une session par « EXIT » se solde par la validation de la transaction en cours; • l'arrêt anormal d'une session par annulation de la transaction en cours. Dans le cas d’arrêt brutal de la machine qui héberge la base de données, Oracle garantit que toutes les transactions déjà validées par un « COMMIT » ou un « ROLLBACK » seront assurées. Au redémarrage de l'instance, Oracle efface toutes les transactions en cours qui n'étaient ni validées, ni supprimées. Ce mécanisme d'annulation automatique ne nécessite aucune intervention de l'administrateur Oracle. Module 14 : Les transactions © Eyrolles/Tsoft – SQL pour Oracle10g 14-5 Structuration de la transaction Module 14 : Les transactions TSOFT - ORACLE 10g SQL et PL*SQL Structuration de la transaction INSERT UPDATE DELETE SAVEPOINT n SAVEPOINT n+1 COMMIT ROLLBACK Fin transaction précédente Début de la session temps Début Début transaction transaction Fin Fin transaction transaction Il est possible de subdiviser une transaction en plusieurs étapes en sauvegardant les informations modifiées à la fin de chaque étape, tout en gardant la possibilité soit de valider l'ensemble des mises à jour, soit d'annuler tout ou partie des mises à jour à la fin de la transaction. Le découpage de la transaction en plusieurs parties se fait en insérant des points de repère, ou « SAVEPOINT ». Les points de repère « SAVEPOINT » sont des points de contrôle utilisés dans les transactions pour annuler partiellement l'une d'elles. Dans ce cas, un savepoint est défini par un identifiant et peut être référencé dans la clause « ROLLBACK ». La notion de « SAVEPOINT » est très utile dans la conception de programmes batch. L’annulation des mises à jour effectuées depuis un point de repère « SAVEPOINT » de la transaction conserve les mises à jours antérieures, les points de repère « SAVEPOINT » inclus, et rejette les modifications postérieures, les points de repère « SAVEPOINT » inclus. Si le nom du point de repère « SAVEPOINT » existe déjà dans la même transaction le nouveau point de repère « SAVEPOINT » créé efface l’ancien. SQL> INSERT INTO CATEGORIES 2 ( CODE_CATEGORIE, NOM_CATEGORIE, DESCRIPTION ) 3 VALUES ( 9,'Légumes et fruits','Légumes et fruits frais'); 1 ligne créée. SQL> SAVEPOINT POINT_REPERE_1; Note Module 14 : Les transactions © Eyrolles/Tsoft – SQL pour Oracle10g 14-6 Point de sauvegarde (SAVEPOINT) créé. SQL> INSERT INTO FOURNISSEURS (NO_FOURNISSEUR, SOCIETE, ADRESSE, 2 VILLE, CODE_POSTAL, PAYS, TELEPHONE, FAX) 3 VALUES ( 30, 'Légumes de Strasbourg', '104, rue Mélanie', 4 'Strasbourg',67200,'France','03.88.83.00.68','03.88.83.00.62'); 1 ligne créée. SQL> SAVEPOINT POINT_REPERE_2; Point de sauvegarde (SAVEPOINT) créé. SQL> UPDATE PRODUITS SET CODE_CATEGORIE = 9 2 WHERE CODE_CATEGORIE = 2; 12 ligne(s) mise(s) à jour. SQL> SAVEPOINT POINT_REPERE_3; Point de sauvegarde (SAVEPOINT) créé. SQL> UPDATE PRODUITS SET NO_FOURNISSEUR = 30 2 WHERE NO_FOURNISSEUR = 2; 4 ligne(s) mise(s) à jour. SQL> SELECT NOM_PRODUIT, NO_FOURNISSEUR, CODE_CATEGORIE 2 FROM PRODUITS 3 WHERE NO_FOURNISSEUR = 30 AND 4 CODE_CATEGORIE = 9; NOM_PRODUIT NO_FOURNISSEUR CODE_CATEGORIE -------------------------------- -------------- -------------- Chef Anton's Cajun Seasoning 30 9 Chef Anton's Gumbo Mix 30 9 Louisiana Fiery Hot Pepper Sauce 30 9 Louisiana Hot Spiced Okra 30 9 SQL> ROLLBACK TO POINT_REPERE_2; Annulation (ROLLBACK) effectuée. SQL> SELECT NOM_PRODUIT, NO_FOURNISSEUR, CODE_CATEGORIE 2 FROM PRODUITS 3 WHERE NO_FOURNISSEUR = 2 AND 4 CODE_CATEGORIE = 9; NOM_PRODUIT NO_FOURNISSEUR CODE_CATEGORIE -------------------------------- -------------- -------------- Chef Anton's Cajun Seasoning 2 2 Chef Anton's Gumbo Mix 2 2 Louisiana Fiery Hot Pepper Sauce 2 2 Louisiana Hot Spiced Okra 2 2 Module 14 : Les transactions © Eyrolles/Tsoft – SQL pour Oracle10g 14-7 SQL> ROLLBACK TO POINT_REPERE_3; ROLLBACK TO POINT_REPERE_3 * ERREUR à la ligne 1 : ORA-01086: le point de sauvegarde 'POINT_REPERE_3' n'a jamais été établi L’exemple précèdent illustre l’utilisation du « SAVEPOINT » pour la structuration d’une transaction. La transaction insère un enregistrement dans la table CATEGORIES et un autre dans la table FOURNISSEURS ; après chaque insertion on sauvegarde les modifications avec les « points de repère » POINT_REPERE_1 et POINT_REPERE_2. La suite uploads/Finance/ cours-oracle.pdf

  • 23
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Sep 24, 2021
  • Catégorie Business / Finance
  • Langue French
  • Taille du fichier 1.4269MB