32
11 Copyright © Oracle Corporation, 2001. Tous droits réservés. Gérer les dépendances

Gérer les dépendances

Embed Size (px)

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

11Copyright © Oracle Corporation, 2001. Tous droits réservés.

Gérer les dépendances

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

11-33 Copyright © Oracle Corporation, 2001. Tous droits réservés.

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