Verwaltung von Abhängigkeiten

Werbung
11
Verwaltung von
Abhängigkeiten
Ziele
Am Ende dieser Lektion verfügen Sie über die
folgenden Kenntnisse:
• Überwachen prozeduraler Abhängigkeiten
• Effekte von Änderungen eines DB-Objekts auf
gespeicherte Prozeduren und Funktionen
• Verwaltung prozeduraler Abhängigkeiten
Verständnis der Abhängigkeiten
Abhängige Objekte
Referenzierte Objekte
Table
View
View
Procedure
Sequence
Function
Synonym
Package Specification
Procedure
Package Body
Function
Database Trigger
Package Specification
Abhängigkeiten
View/
Prozedur
Prozedur
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
Direkte
Abhängigkeit
Abhängiges
Objekt
Tabelle
Direkte
Abhängigkeit
Abhängiges und
referenziertes
Objekt
Indirekte
Abhängigkeit
Referenziertes
Objekt
Lokale Abhängigkeiten
Prozedur
Prozedur
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
INVALID
INVALID
View
Tabelle
INVALID
Lokale Referenz
Definition geändert
Abhängigkeiten von Ferndatenbanken
Prozedur
Prozedur
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
VALID
INVALID
View
Tabelle
INVALID
Fern-Referenz
Definition geändert
Netzwerk
Szenario lokaler Abhängigkeiten
Prozedur
ADD_EMP
View NEW_EMP
EMPNO
7839
7698
7782
7566
xxxxxxxxxxxxxxxxxxxxx
vvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvv
vvvvvvxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxx
vvvvvvvvvvvvvvvvvvvvv
Prozedur
QUERY_EMP
xxxxxxxxxxxxxxxxxxxxx
vvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvv
vvvvvvxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxx
vvvvvvvvvvvvvvvvvvvvv
ENAME
KING
BLAKE
CLARK
JONES
Tabelle EMP
EMPNO
7839
7698
7782
7566
ENAME
KING
BLAKE
CLARK
JONES
HIREDATE JOB
17-NOV-81 PRESIDENT
01-MAY-81 MANAGER
09-JUN-81 MANAGER
02-APR-81 MANAGER
Anzeige direkter Abhängigkeiten
aus USER_DEPENDENCIES
SQL> SELECT name, type, referenced_name, referenced_type
2 FROM
user_dependencies
3 WHERE referenced_name IN ('EMP' , 'NEW_EMP' );
NAME
--------QUERY_EMP
ADD_EMP
NEW_EMP
TYPE
---------PROCEDURE
PROCEDURE
VIEW
REFERENCED_NAME
--------------EMP
NEW_EMP
EMP
REFERENCED_TYPE
--------------TABLE
VIEW
TABLE
Anzeige direkter und indirekter
Abhängigkeiten
1. Ausführen des Skripts UTLDTREE.SQL
SQL> @UTLDTREE
2. Ausführen der Prozedur DEPTREE_FILL
SQL> EXECUTE deptree_fill (‘TABLE’, ‘SCOTT’, ‘EMP’)
PL/SQL procedure successfully completed.
Views DEPTREE und IDEPTREE
SQL> SELECT nested_level, type, name
2 FROM
deptree
3 ORDER BY seq#;
NESTED_LEVEL TYPE
------------ --------0 TABLE
1 VIEW
2 PROCEDURE
1 PROCEDURE
SQL> SELECT *
2 FROM
ideptree;
NAME
---EMP
NEW_EMP
ADD_EMP
QUERY_EMP
DEPENDENCIES
---------------------------------------------------TABLE SCOTT:EMP
VIEW SCOTT.NEW_EMP
PROCEDURE SCOTT.ADD_EMP
PROCEDURE SCOTT.QUERY_EMP
Ein weiteres Szenario lokaler
Abhängigkeiten
Prozedur
REDUCE_SAL
Prozedur
RAISE_SAL
Tabelle EMP
EMPNO
7839
7698
7782
7566
ENAME
KING
BLAKE
CLARK
JONES
HIREDATE
07-NOV-81
01-MAY-81
09-JUN-81
02-APR-81
JOB
PRESIDENT
MANAGER
MANAGER
MANAGER
xxxxxxxxxxxxxxxxxxxxx
vvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvv
vvvvvvxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxx
vvvvvvvvvvvvvvvvvvvvv
xxxxxxxxxxxxxxxxxxxxx
vvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvv
vvvvvvxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxx
vvvvvvvvvvvvvvvvvvvvv
Ein Szenario lokaler
Namensabhängigkeiten
Prozedur
QUERY_EMP
xxxxxxxxxxxxxxxxxxxxx
vvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvv
vvvvvvxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxx
vvvvvvvvvvvvvvvvvvvvv
X
Public Synonym EMP
EMPNO
7839
7698
7782
7566
ENAME
KING
BLAKE
CLARK
JONES
Tabelle
EMP
EMPNO
7839
7698
7782
7566
ENAME
KING
BLAKE
CLARK
JONES
HIREDATE JOB
17-NOV-81 PRESIDENT
01-MAY-81 MANAGER
09-JUN-81 MANAGER
02-APR-81 MANAGER
HIREDATE JOB
17-NOV-81 PRESIDENT
01-MAY-81 MANAGER
09-JUN-81 MANAGER
02-APR-81 MANAGER
Abhängigkeiten von
Ferndatenbanken
Prozedur
Prozedur
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
VALID
INVALID
View
Tabelle
INVALID
Fern-Referenz
Definition geändert
Netzwerk
Konzepte der Abhängigkeiten
von Ferndatenbanken
Fern-Abhängigkeiten werden durch den
vom Benutzer gewählten Modus geregelt:
• TIMESTAMP-Prüfung
oder
• SIGNATURE-Prüfung
Parameter für den Modus der
Abhängigkeiten von Ferndatenbanken
• Als init.ora-Parameter
REMOTE_DEPENDENCIES_MODE = wert
• Auf Systemebene
ALTER SYSTEM SET
REMOTE_DEPENDENCIES_MODE = wert
• Auf Sitzungsebene
ALTER SESSION SET
REMOTE_DEPENDENCIES_MODE = wert
Abhängigkeiten von Ferndatenbanken
und Timestamp-Modus: Szenario
Prozedur
Prozedur
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
xxxxxxxxxxxxxx
vvvvvvvvvvvvvv
VALID
1
INVALID
View
Tabelle
INVALID
2
Definition geändert
Netzwerk
Fern-Prozedur B kompiliert um
8:00
Fern-Prozedur B
kompiliert
VALID
Lokale Prozedur A kompiliert um
9:00
Lokale Prozedur A
Fern-Prozedur B
A kompiliert B kompiliert
VALID
kompiliert
VALID
Prozedur A wird aufgerufen um 10:00
(Prozedur B wurde nicht rekompiliert seit 8:00)
Lokale Prozedur A
Fern-Prozedur B
Zeitstempelvergleich
A kompiliert B kompiliert
VALID
kompiliert
VALID
Prozedur A wird aufgerufen um 12:00
(Prozedur B wurde rekompiliert um 11:00 (Lokalzeit) )
Lokale Prozedur A
Fern-Prozedur B
Zeitstempelvergleich...
...paßt
nicht
A kompiliert B kompiliert
INVALID zur Startzeit

kompiliert
VALID
Signature Modus
Die Signatur einer Prozedur beinhaltet:
• den Namen der Prozedur
• die Datentypen der Parameter
• die Modi der Parameter
Rekompilieren einer
PL/SQL-Programmeinheit
• Implizit durch automatische
Rekompilierung zur Laufzeit
• Explizit durch Rekompilierung mit der
Anweisung ALTER
ALTER PROCEDURE [SCHEMA.] prozedur_name COMPILE
ALTER FUNCTION [SCHEMA.] funktions_name COMPILE
ALTER PACKAGE
ALTER PACKAGE
ALTER PACKAGE
[SCHEMA.] package_name
[SCHEMA.] package_name
[SCHEMA.] package_name
COMPILE [PACKAGE]
COMPILE SPECIFICATION
COMPILE BODY
ALTER TRIGGER
trigger_name [ENABLE|DISABLE|COMPILE]
Rekompilieren von Prozeduren
Rekompilierung abhängiger Prozeduren
und Funktionen wird erfolglos sein, wenn:
• Das referenzierte Objekt gelöscht oder
umbenannt wurde
• Der Datentyp der referenzierten Spalte
geändert wurde
• Die referenzierte Spalte gelöscht wurde
• Ein referenzierter View durch einen mit
unterschiedlichen Spalten ersetzt wurde
• Die Parameterliste einer referenzierten
Prozedur modifiziert wurde
Rekompilieren von Prozeduren
Rekompilierung abhängiger Prozeduren
und Funktionen wird erfolgreich sein, wenn:
• Die referenzierte Tabelle neue Spalten hat
• Der Datentyp referenzierter Spalten nicht
geändert wurde
• Der PL/SQL-Body einer referenzierten
Prozedur modifiziert und erfolgreich
rekompiliert wurde
Rekompilieren von Prozeduren
Minimieren von Abhängigkeitsfehlern durch:
• Record-Deklaration mit dem
Attribut %ROWTYPE
• Variablen-Deklaration mit dem
Attribut %TYPE
• Abfragen mit der Notation SELECT *
• Verwendung einer Spaltenliste bei
INSERT-Anweisungen
Packages und Abhängigkeiten
Package-Spezifikation
StandaloneProzedur
Prozedur A
deklaration
VALID
Package-Body
Prozedur A
definition
Definition geändert
VALID
Packages und Abhängigkeiten
Package-Spezifikation
Prozedur A
deklaration
Package-Body
StandaloneProzedur
Definition
geändert
Prozedur A
definition
VALID
INVALID
Zusammenfassung
Vermeidung von Produktionsstörungen durch:
• Überblick über prozedurale Abhängigkeiten
• Manuelle Rekompilierung, sobald die
Definition von Datenbankobjekten geändert
wurde
Übungsüberblick
Verwaltung von Objektabhängigkeiten
Herunterladen