1 / 32

Gérer les dépendances

Gérer les dépendances. Objectifs. A la fin de ce chapitre, vous pourrez : effectuer le suivi des dépendances procédurales prédire les conséquences de la modification d'un objet de base de données sur des fonctions et des procédures stockées gérer des dépendances procédurales.

Download Presentation

Gérer les dépendances

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Gérer les dépendances

  2. Objectifs A la fin de ce chapitre, vous pourrez : • effectuer le suivi des dépendances procédurales • prédire les conséquences de la modification d'un objet de base de données sur des fonctions et des procédures stockées • gérer des dépendances procédurales

  3. Comprendre les dépendances Objets dépendants Objets référencés Table Vue Déclencheur de base de données Procédure Fonction Corps du package Spécification du package Types d'objets et d'ensemble (collection) définis par l'utilisateur Fonction Spécification du package Procédure Séquence Synonyme Table Vue Types d'objets et d'ensembles définis par l'utilisateur

  4. Vue ou procédure Procédure Table xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv Dépendance directe Dépendance directe Dépendance indirecte Dépendances Référencée Dépendante Dépendante Référencée

  5. xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv vvvvvvvvvvvvvv vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv Dépendances locales Procédure Procédure Vue Table Références locales Dépendance locale directe

  6. xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv vvvvvvvvvvvvvv vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv Dépendances locales Procédure Procédure Vue Table INVALID INVALID INVALID Références locales Dépendance locale directe Changement de définition Le serveur Oracle recompile implicitement tout objet INVALID lorsque ce dernier est de nouveau appelé

  7. xxxxxxxxxxxxxxxxxxxxx vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv vvvvvvvvvvvvvvvvvvvvv vvvvvvvvvvvvvvvvvvvvv vvvvvvxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxx vvvvvvvvvvvvvvvvvvvvv xxxxxxxxxxxxxxxxxxxxx vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv vvvvvvvvvvvvvvvvvvvvv vvvvvvvvvvvvvvvvvvvvv vvvvvvxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxx vvvvvvvvvvvvvvvvvvvvv Scénario de dépendances locales ProcédureADD_EMP VueEMP_VW … ProcédureQUERY_EMP Table EMPLOYEES …

  8. … Afficher les dépendances directes en utilisantUSER_DEPENDENCIES SELECT name, type, referenced_name, referenced_type FROM user_dependencies WHERE referenced_name IN ('EMPLOYEES','EMP_VW' );

  9. Afficher les dépendances directes et indirectes 1. Exécuter le script utldtree.sql pour créer les objets permettant d'afficher les dépendances directes et indirectes 2. Exécuter la procédureDEPTREE_FILL EXECUTE deptree_fill('TABLE','SCOTT','EMPLOYEES')

  10. Afficher les dépendances Vue DEPTREE SELECT nested_level, type, name FROM deptree ORDER BY seq#; … …

  11. xxxxxxxxxxxxxxxxxxxxx vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv vvvvvvvvvvvvvvvvvvvvv vvvvvvvvvvvvvvvvvvvvv vvvvvvxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxx vvvvvvvvvvvvvvvvvvvvv Autre scénario de dépendances locales REDUCE_SAL procédure RAISE_SAL procédure xxxxxxxxxxxxxxxxxxxxx vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv vvvvvvvvvvvvvvvvvvvvv vvvvvvvvvvvvvvvvvvvvv vvvvvvxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxx vvvvvvvvvvvvvvvvvvvvv Table EMPLOYEES …

  12. xxxxxxxxxxxxxxxxxxxxx vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv vvvvvvvvvvvvvvvvvvvvv vvvvvvvvvvvvvvvvvvvvv vvvvvvxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxx vvvvvvvvvvvvvvvvvvvvv Scénario de dépendances de résolution de noms locale QUERY_EMP procédure Synonyme publicEMPLOYEES X … TableEMPLOYEES …

  13. xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv Comprendre les dépendances distantes Procédure Procédure Vue Table Réseau Références locales et distantes Dépendance locale directe Dépendance distante directe

  14. xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv Comprendre les dépendances distantes Procédure Procédure Vue Table Réseau VALID INVALID INVALID Références locales et distantes Dépendance locale directe Dépendance distante directe Changement de définition

  15. Concepts des dépendances distantes Les dépendances distantes sont régies par le mode choisi par l'utilisateur : • vérification d'horodatage (TIMESTAMP) • vérification de signature (SIGNATURE)

  16. Paramètre REMOTE_DEPENDENCIES_MODE Définir REMOTE_DEPENDENCIES_MODE : • en tant que paramètre init.ora REMOTE_DEPENDENCIES_MODE=value • au niveau du système ALTER SYSTEM SET REMOTE_DEPENDENCIES_MODE=value • au niveau de la session ALTER SESSION SET REMOTE_DEPENDENCIES_MODE =value

  17. xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv Dépendances distantes et horodatage Procédure Procédure Vue Table vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv Réseau Réseau

  18. xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv Dépendances distantes et horodatage Procédure Procédure Vue Table vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv xxxxxxxxxxxxxx vvvvvvvvvvvvvv Réseau VALID INVALID INVALID Réseau Changement de définition

  19. Compilation de la procédure distante B à 8H00 Procédure distante B Compilation Valide

  20. Compilation de la procédure locale A à 9H00 Procédure locale A Procédure distante B Horodatage de A Enregistrement de l'horodatage de B Horodatage de B Valide Valide

  21. Exécution de la procédure A Procédure locale A Procédure distante B Comparaison de l'horodatage Horodatage de A Horodatage de B Horodatage de B Exécution de B Valide Valide

  22. Recompilation de la procédure distante B à 11H00 Procédure distante B Compilation Valide

  23. Comparaison de l'horodatage ERREUR Exécution de la procédure A Procédure locale A Procédure distante B Horodatage de A Horodatage de B Horodatage de B Valide Non valide Valide

  24. Mode signature • La signature d'une procédure contient : • le nom de la procédure • les types de données des paramètres • les modes des paramètres • La signature de la procédure distante est enregistrée dans la procédure locale. • Lors de l'exécution d'une procédure dépendante, la signature de la procédure distante référencée est comparée.

  25. Recompilation d'un programme PL/SQL La recompilation : • est traitée automatiquement par le biais d'une recompilation implicite lors de l'exécution • est traitée par le biais d'une recompilation explicite avec l'instruction ALTER ALTER PROCEDURE [SCHEMA.]procedure_name COMPILE; ALTER FUNCTION [SCHEMA.]function_name COMPILE; ALTER PACKAGE [SCHEMA.]package_name COMPILE [PACKAGE]; ALTER PACKAGE [SCHEMA.]package_name COMPILE BODY; ALTER TRIGGER trigger_name [COMPILE[DEBUG]];

  26. Echec de la recompilation La recompilation de fonctions et de procédures dépendantes échouera dans les cas suivants : • l'objet référencé a été supprimé ou renommé • le type de données de la colonne référencée a été modifié • la colonne référencée a été supprimée • une vue référencée a été remplacée par une vue avec des colonnes différentes • la liste des paramètres d'une procédure référencée a été modifiée

  27. Recompilation réussie La recompilation de fonctions et de procédures dépendantes réussira dans les cas suivants : • la table référencée comporte de nouvelles colonnes • le type de données des colonnes référencées n'a pas été modifié • une table privée a été supprimée, mais il existe une table publique avec les mêmes nom et structure • le corps PL/SQL d'une procédure référencée a été modifié et recompilé avec succès

  28. Recompilation des procédures Vous pouvez réduire le nombre de dépendances infructueuses en : • déclarant des enregistrements à l'aide de l'attribut %ROWTYPE • déclarant des variables à l'aide de l'attribut %TYPE • effectuant des interrogations à l'aide de la notation SELECT * • ajoutant une liste de colonnes aux instructions INSERT

  29. Packages et dépendances Procédure autonome Spécification du package Valide Déclaration de la procédure A Valide Corps du package Définition de la procédure A Définition modifiée

  30. Packages et dépendances Spécification du package Valide Déclaration de la procédure A Non valide Corps du package Procédure autonome Définition de la procédure A Définition modifiée

  31. Synthèse Ce chapitre vous a permis d'apprendre à : • effectuer le suivi des procédures dépendantes • recompiler les procédures manuellement dès que possible après la modification de la définition d'un objet de base de données

  32. Présentation de l'exercice 11 Dans cet exercice, vous allez : • utiliser DEPTREE_FILL et IDEPTREE pour visualiser les dépendances • recompiler des procédures, des fonctions et des packages

More Related