View
52
Download
0
Category
Preview:
DESCRIPTION
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. - PowerPoint PPT Presentation
Citation preview
11-2 Copyright © Oracle Corporation, 2001. Tous droits réservés.
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
11-3 Copyright © Oracle Corporation, 2001. Tous droits réservés.
Comprendre les dépendancesComprendre les dépendances
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
Objets référencésObjets référencésObjets dépendantsObjets dépendants
11-4 Copyright © Oracle Corporation, 2001. Tous droits réservés.
Dépendances
xxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvv
ProcédureVue ou
procédure
Dépendance directe
Dépendante
Référencée
Dépendance indirecte
Dépendance directe
Dépendante
Table
Référencée
11-5 Copyright © Oracle Corporation, 2001. Tous droits réservés.
Dépendances locales
xxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvvvvvvvvvvvvvvv
Procédure Vue
Références locales
Procédure Tablevvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvv
Dépendance locale directe
11-6 Copyright © Oracle Corporation, 2001. Tous droits réservés.
Dépendances locales
xxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvvvvvvvvvvvvvvv
Procédure Vue
Références locales
Procédure Tablevvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvv
Dépendance locale directe
Changement de définition
INVALIDINVALIDINVALID
Le serveur Oracle recompile implicitement tout objet INVALID lorsque ce dernier est de nouveau appelé
11-7 Copyright © Oracle Corporation, 2001. Tous droits réservés.
xxxxxxxxxxxxxxxxxxxxxvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxvvvvvvvvvvvvvvvvvvvvv
xxxxxxxxxxxxxxxxxxxxxvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxvvvvvvvvvvvvvvvvvvvvv
ProcédureProcédure ADD_EMPADD_EMP
ProcédureProcédure QUERY_EMPQUERY_EMP
TableTable EMPLOYEES EMPLOYEES
VueVue EMP_VWEMP_VW
Scénario de dépendances locales
…
…
11-8 Copyright © Oracle Corporation, 2001. Tous droits réservés.
Afficher les dépendances directes en utilisant USER_DEPENDENCIES
SELECT name, type, referenced_name, referenced_typeFROM user_dependenciesWHERE referenced_name IN ('EMPLOYEES','EMP_VW' );
……
11-9 Copyright © Oracle Corporation, 2001. Tous droits réservés.
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édure DEPTREE_FILL
EXECUTE deptree_fill('TABLE','SCOTT','EMPLOYEES')
11-10 Copyright © Oracle Corporation, 2001. Tous droits réservés.
Afficher les dépendancesAfficher les dépendances
Vue DEPTREE
SELECT nested_level, type, nameFROM deptreeORDER BY seq#;
…
…
11-11 Copyright © Oracle Corporation, 2001. Tous droits réservés.
TableTable EMPLOYEES EMPLOYEES
REDUCE_SALREDUCE_SALprocédureprocédure
RAISE_SALRAISE_SALprocédureprocédure
Autre scénario de dépendances locales
xxxxxxxxxxxxxxxxxxxxxvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxvvvvvvvvvvvvvvvvvvvvv
xxxxxxxxxxxxxxxxxxxxxvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxvvvvvvvvvvvvvvvvvvvvv
…
11-12 Copyright © Oracle Corporation, 2001. Tous droits réservés.
QUERY_EMPQUERY_EMPprocédureprocédure Synonyme publicSynonyme public EMPLOYEESEMPLOYEES
XX
Scénario de dépendances de résolution de noms locale
xxxxxxxxxxxxxxxxxxxxxvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxvvvvvvvvvvvvvvvvvvvvv
TableTable EMPLOYEESEMPLOYEES
…
…
11-13 Copyright © Oracle Corporation, 2001. Tous droits réservés.
xxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvv
Procédure VueProcédure Table
vvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvv
Dépendance locale directe
Dépendance distante directe
Comprendre les dépendances distantes
Références locales et distantes
Réseau
11-14 Copyright © Oracle Corporation, 2001. Tous droits réservés.
xxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvv
Procédure VueProcédure Table
vvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvv
Dépendance locale directe
Dépendance distante directe
Comprendre les dépendances distantes
Références locales et distantes
Changement de définition
INVALIDINVALIDVALID
Réseau
11-15 Copyright © Oracle Corporation, 2001. Tous droits réservés.
Concepts des dépendances distantes
Les dépendances distantes sont régies par le modechoisi par l'utilisateur :
• vérification d'horodatage (TIMESTAMP)
• vérification de signature (SIGNATURE)
11-16 Copyright © Oracle Corporation, 2001. Tous droits réservés.
Paramètre REMOTE_DEPENDENCIES_MODEParamè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
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
11-17 Copyright © Oracle Corporation, 2001. Tous droits réservés.
Dépendances distantes et horodatage
xxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvv
Procédure VueProcédure Table
vvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvv
Réseau
Réseau
11-18 Copyright © Oracle Corporation, 2001. Tous droits réservés.
Dépendances distantes et horodatage
xxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvv
Procédure VueProcédure Table
vvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvv
Réseau
Réseau Changement de définition
INVALIDINVALIDVALID
11-19 Copyright © Oracle Corporation, 2001. Tous droits réservés.
Compilation de la procédure distante B à 8H00
Valide
Procédure distante B
Compilation
11-20 Copyright © Oracle Corporation, 2001. Tous droits réservés.
Compilation de la procédure locale A à 9H00
Compilation de la procédure locale A à 9H00
Procédure locale AProcédure locale A
ValideValide
Procédure distante BProcédure distante B
Horodatage Horodatage de Bde B
ValideValide
Horodatage Horodatage de A de A
Enregistrement Enregistrement de l'horodatage de l'horodatage de Bde B
11-21 Copyright © Oracle Corporation, 2001. Tous droits réservés.
Exécution de la procédure AExécution de la procédure A
Procédure locale A
Valide
Procédure distante B
Horodatage de B
Valide
Horodatage de A
Horodatage de B
Comparaison de l'horodatage
Exécution
de B
11-22 Copyright © Oracle Corporation, 2001. Tous droits réservés.
Recompilation de la procédure distante B à 11H00
Valide
Procédure distante B
Compilation
11-23 Copyright © Oracle Corporation, 2001. Tous droits réservés.
Exécution de la procédure AExécution de la procédure A
Procédure locale A
Valide
Procédure distante B
Horodatage de B
Valide
Horodatage de A
Horodatage de B
Comparaison de l'horodatage
ERREUR
Non valide
11-24 Copyright © Oracle Corporation, 2001. Tous droits réservés.
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.
11-25 Copyright © Oracle Corporation, 2001. Tous droits réservés.
Recompilation d'un programme PL/SQL
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
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]];
11-27 Copyright © Oracle Corporation, 2001. Tous droits réservés.
Echec de la recompilationEchec de la recompilation
La recompilation de fonctions et de procéduresdé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
La recompilation de fonctions et de procéduresdé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
11-28 Copyright © Oracle Corporation, 2001. Tous droits réservés.
Recompilation réussieRecompilation 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
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
11-29 Copyright © Oracle Corporation, 2001. Tous droits réservés.
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
11-30 Copyright © Oracle Corporation, 2001. Tous droits réservés.
Packages et dépendances
Déclaration de la procédure A
Spécification du package
Corps du package
Définition de la procédure A
Procédure
autonome
Valide
Valide
Définition modifiée
11-31 Copyright © Oracle Corporation, 2001. Tous droits réservés.
Packages et dépendancesPackages et dépendances
Déclaration de la procédure A
Spécification du package
Corps du package
Définition de la procédure A
Procédure autonome
Non valide
Valide
Définition modifiée
11-32 Copyright © Oracle Corporation, 2001. Tous droits réservés.
SynthèseSynthè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
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
Recommended