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