Dépendances

Download Report

Transcript Dépendances

Gérer les dépendances
Copyright © Oracle Corporation, 2001. Tous droits réservés.
Objectifs
A la fin de ce chapitre, vous pourrez :
11-2
•
•
effectuer le suivi des dépendances procédurales
•
gérer 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
Copyright © Oracle Corporation, 2001. Tous droits réservés.
Comprendre les dépendances
Objets dépendants
Table
Fonction
Vue
Spécification du package
Déclencheur de base
de données
Procédure
Séquence
Procédure
Synonyme
Fonction
11-3
Objets référencés
Corps du package
Table
Spécification du package
Vue
Types d'objets et
d'ensemble (collection)
définis par l'utilisateur
Types d'objets et
d'ensembles définis
par l'utilisateur
Copyright © Oracle Corporation, 2001. Tous droits réservés.
Dépendances
Vue ou
procédure
Procédure
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
Dépendance
directe
Dépendance
directe
Référencée
Dépendante
Dépendante
11-4
Table
Dépendance
indirecte
Copyright © Oracle Corporation, 2001. Tous droits réservés.
Référencée
Dépendances locales
Procédure
Procédure
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
vvvvvvvvvvvvvv
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
Vue
Références locales
Dépendance
locale directe
11-5
Copyright © Oracle Corporation, 2001. Tous droits réservés.
Table
Dépendances locales
Procédure
Procédure
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
vvvvvvvvvvvvvv
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
INVALID
INVALID
Vue
Table
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é
11-6
Copyright © Oracle Corporation, 2001. Tous droits réservés.
Scénario de dépendances locales
Procédure
ADD_EMP
Vue EMP_VW
xxxxxxxxxxxxxxxxxxxxx
vvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvv
vvvvvvxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxx
vvvvvvvvvvvvvvvvvvvvv
…
Procédure
QUERY_EMP
xxxxxxxxxxxxxxxxxxxxx
vvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvv
vvvvvvxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxx
vvvvvvvvvvvvvvvvvvvvv
11-7
Table EMPLOYEES
…
Copyright © Oracle Corporation, 2001. Tous droits réservés.
Afficher les dépendances directes en utilisant
USER_DEPENDENCIES
SELECT name, type, referenced_name, referenced_type
FROM
user_dependencies
WHERE referenced_name IN ('EMPLOYEES','EMP_VW' );
…
…
11-8
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-9
Copyright © Oracle Corporation, 2001. Tous droits réservés.
Afficher les dépendances
Vue DEPTREE
SELECT
nested_level, type, name
FROM
deptree
ORDER BY seq#;
…
…
11-10
Copyright © Oracle Corporation, 2001. Tous droits réservés.
Autre scénario de dépendances locales
REDUCE_SAL
procédure
RAISE_SAL
procédure
Table EMPLOYEES
…
11-11
Copyright © Oracle Corporation, 2001. Tous droits réservés.
xxxxxxxxxxxxxxxxxxxxx
vvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvv
vvvvvvxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxx
vvvvvvvvvvvvvvvvvvvvv
xxxxxxxxxxxxxxxxxxxxx
vvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvv
vvvvvvxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxx
vvvvvvvvvvvvvvvvvvvvv
Scénario de dépendances de résolution
de noms locale
QUERY_EMP
procédure
xxxxxxxxxxxxxxxxxxxxx
vvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvv
vvvvvvxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxx
vvvvvvvvvvvvvvvvvvvvv
Table
EMPLOYEES
Synonyme public EMPLOYEES
X
…
…
11-12
Copyright © Oracle Corporation, 2001. Tous droits réservés.
Comprendre les dépendances distantes
Procédure
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
Procédure
Réseau
Vue
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
Références locales et distantes
Dépendance
locale directe
11-13
Dépendance
distante directe
Copyright © Oracle Corporation, 2001. Tous droits réservés.
Table
Comprendre les dépendances distantes
Procédure
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
Procédure
Réseau
VALID
Vue
Table
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
INVALID
INVALID
Références locales et distantes
Dépendance
locale directe
11-14
Dépendance
distante directe
Changement
de définition
Copyright © Oracle Corporation, 2001. Tous droits réservés.
Concepts des dépendances distantes
Les dépendances distantes sont régies par le mode
choisi par l'utilisateur :
•
•
11-15
vérification d'horodatage (TIMESTAMP)
vérification de signature (SIGNATURE)
Copyright © Oracle Corporation, 2001. Tous droits réservés.
Paramètre REMOTE_DEPENDENCIES_MODE
Définir REMOTE_DEPENDENCIES_MODE :
•
en tant que paramètre init.ora
REMOTE_DEPENDENCIES_MODE = value
11-16
•
au niveau du système
ALTER SYSTEM SET
REMOTE_DEPENDENCIES_MODE = value
•
au niveau de la session
ALTER SESSION SET
REMOTE_DEPENDENCIES_MODE = value
Copyright © Oracle Corporation, 2001. Tous droits réservés.
Dépendances distantes
et horodatage
Procédure
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
Procédure
Réseau
Vue
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
Réseau
11-17
Copyright © Oracle Corporation, 2001. Tous droits réservés.
Table
Dépendances distantes
et horodatage
Procédure
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
VALID
Procédure
Réseau
Vue
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
INVALID
INVALID
Réseau
11-18
Table
Changement
de définition
Copyright © Oracle Corporation, 2001. Tous droits réservés.
Compilation de la procédure distante B
à 8H00
Procédure distante B
Compilation
Valide
11-19
Copyright © Oracle Corporation, 2001. Tous droits réservés.
Compilation de la procédure locale A
à 9H00
Procédure locale A
Horodatage
de A
Enregistrement
de l'horodatage
de B
Procédure distante B
Horodatage
de B
Valide
11-20
Copyright © Oracle Corporation, 2001. Tous droits réservés.
Valide
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
11-21
Copyright © Oracle Corporation, 2001. Tous droits réservés.
Valide
Recompilation de la procédure distante B
à 11H00
Procédure distante B
Compilation
Valide
11-22
Copyright © Oracle Corporation, 2001. Tous droits réservés.
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
ERREUR
Valide Non valide
11-23
Copyright © Oracle Corporation, 2001. Tous droits réservés.
Valide
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
11-24
•
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.
Copyright © Oracle Corporation, 2001. Tous droits réservés.
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]];
11-25
Copyright © Oracle Corporation, 2001. Tous droits réservés.
Echec de la recompilation
La recompilation de fonctions et de procédures
dépendantes échouera dans les cas suivants :
11-27
•
•
l'objet référencé a été supprimé ou renommé
•
•
la colonne référencée a été supprimée
•
la liste des paramètres d'une procédure référencée
a été modifiée
le type de données de la colonne référencée a été
modifié
une vue référencée a été remplacée par une vue
avec des colonnes différentes
Copyright © Oracle Corporation, 2001. Tous droits réservés.
Recompilation réussie
La recompilation de fonctions et de procédures
dépendantes réussira dans les cas suivants :
11-28
•
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
Copyright © Oracle Corporation, 2001. Tous droits réservés.
Recompilation des procédures
Vous pouvez réduire le nombre de dépendances
infructueuses en :
11-29
•
déclarant des enregistrements à l'aide de l'attribut
%ROWTYPE
•
•
déclarant des variables à l'aide de l'attribut %TYPE
•
ajoutant une liste de colonnes aux instructions
INSERT
effectuant des interrogations à l'aide de la notation
SELECT *
Copyright © Oracle Corporation, 2001. Tous droits réservés.
Packages et dépendances
Spécification du package
Procédure
autonome
Déclaration
de la procédure A
Valide
Corps du package
Définition
de la procédure A
Définition modifiée
11-30
Copyright © Oracle Corporation, 2001. Tous droits réservés.
Valide
Packages et dépendances
Spécification du package
Valide
Déclaration
de la procédure A
Corps du package
Procédure
autonome
Non valide
Définition
de la procédure A
Définition
modifiée
11-31
Copyright © Oracle Corporation, 2001. Tous droits réservés.
Synthèse
Ce chapitre vous a permis d'apprendre à :
•
•
11-32
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
Copyright © Oracle Corporation, 2001. Tous droits réservés.
Présentation de l'exercice 11
Dans cet exercice, vous allez :
11-33
•
utiliser DEPTREE_FILL et IDEPTREE pour
visualiser les dépendances
•
recompiler des procédures, des fonctions et des
packages
Copyright © Oracle Corporation, 2001. Tous droits réservés.