11 Verwaltung von Abhängigkeiten. Ziele Am Ende dieser Lektion verfügen Sie über die folgenden...

29
11 11 Verwaltung von Abhängigkeiten

Transcript of 11 Verwaltung von Abhängigkeiten. Ziele Am Ende dieser Lektion verfügen Sie über die folgenden...

1111Verwaltung von Abhängigkeiten

ZieleAm Ende dieser Lektion verfügen Sie über die Am Ende dieser Lektion verfügen Sie über die folgenden Kenntnisse: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

View

Procedure

Function

Package Specification

Package Body

Database Trigger

Table

View

Sequence

Synonym

Procedure

Function

Package Specification

Referenzierte ObjekteReferenzierte ObjekteAbhängige ObjekteAbhängige Objekte

Abhängigkeiten

AbhängigesAbhängigesObjektObjekt

xxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvv

ProzedurProzedurView/View/

ProzedurProzedur

DirekteDirekteAbhängigkeitAbhängigkeit

Abhängiges undAbhängiges undreferenziertesreferenziertes

ObjektObjekt

ReferenziertesReferenziertesObjektObjekt

TabelleTabelle

DirekteDirekteAbhängigkeitAbhängigkeit

IndirekteIndirekteAbhängigkeitAbhängigkeit

Lokale Abhängigkeiten

xxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvv

ProzedurProzedur ViewView

INVALIDINVALID INVALIDINVALID INVALIDINVALID

Lokale ReferenzLokale ReferenzDefinition geändertDefinition geändert

ProzedurProzedur TabelleTabelle

vvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvv

xxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvv

ProzedurProzedur ViewView

VALIDVALID INVALIDINVALID INVALIDINVALID

Fern-ReferenzFern-Referenz

Definition geändertDefinition geändert

ProzedurProzedur TabelleTabelle

vvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvv

NetzwerkNetzwerk

Abhängigkeiten von Ferndatenbanken

xxxxxxxxxxxxxxxxxxxxxvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxvvvvvvvvvvvvvvvvvvvvv

xxxxxxxxxxxxxxxxxxxxxvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxvvvvvvvvvvvvvvvvvvvvv

ProzedurProzedurADD_EMP ADD_EMP

ProzedurProzedurQUERY_EMPQUERY_EMP

Tabelle EMPTabelle EMP

View NEW_EMPView NEW_EMPEMPNO ENAME 7839 KING 7698 BLAKE 7782 CLARK 7566 JONES

EMPNO ENAME HIREDATE JOB 7839 KING 17-NOV-81 PRESIDENT 7698 BLAKE 01-MAY-81 MANAGER 7782 CLARK 09-JUN-81 MANAGER 7566 JONES 02-APR-81 MANAGER

Szenario lokaler Abhängigkeiten

SQL> SELECT name, type, referenced_name, referenced_type 2 FROM user_dependencies 3 WHERE referenced_name IN ('EMP' , 'NEW_EMP' );

NAME TYPE REFERENCED_NAME REFERENCED_TYPE--------- ---------- --------------- ---------------QUERY_EMP PROCEDURE EMP TABLEADD_EMP PROCEDURE NEW_EMP VIEWNEW_EMP VIEW EMP TABLE

Anzeige direkter Abhängigkeiten aus USER_DEPENDENCIES

SQL> @UTLDTREE

Anzeige direkter und indirekter Abhängigkeiten

SQL> EXECUTE deptree_fill (‘TABLE’, ‘SCOTT’, ‘EMP’) PL/SQL procedure successfully completed.PL/SQL procedure successfully completed.

1. Ausführen des Skripts UTLDTREE.SQL1. Ausführen des Skripts UTLDTREE.SQL

2. Ausführen der Prozedur DEPTREE_FILL2. Ausführen der Prozedur DEPTREE_FILL

SQL> SELECT nested_level, type, name 2 FROM deptree 3 ORDER BY seq#;

NESTED_LEVEL TYPE NAME ------------ --------- ----

0 TABLE EMP1 VIEW NEW_EMP2 PROCEDURE ADD_EMP1 PROCEDURE QUERY_EMP

SQL> SELECT * 2 FROM ideptree;

DEPENDENCIES----------------------------------------------------TABLE SCOTT:EMP VIEW SCOTT.NEW_EMP PROCEDURE SCOTT.ADD_EMP PROCEDURE SCOTT.QUERY_EMP

Views DEPTREE und IDEPTREE

Tabelle EMPTabelle EMP

Prozedur Prozedur REDUCE_SALREDUCE_SAL

Prozedur Prozedur RAISE_SALRAISE_SAL

Ein weiteres Szenario lokaler Abhängigkeiten

EMPNO ENAME HIREDATE JOB 7839 KING 07-NOV-81 PRESIDENT 7698 BLAKE 01-MAY-81 MANAGER 7782 CLARK 09-JUN-81 MANAGER 7566 JONES 02-APR-81 MANAGER

xxxxxxxxxxxxxxxxxxxxxvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxvvvvvvvvvvvvvvvvvvvvv

xxxxxxxxxxxxxxxxxxxxxvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxvvvvvvvvvvvvvvvvvvvvv

TabelleTabelleEMPEMP

ProzedurProzedurQUERY_EMPQUERY_EMP

Public Synonym EMPPublic Synonym EMP

XX

Ein Szenario lokaler Namensabhängigkeiten

EMPNO ENAME HIREDATE JOB 7839 KING 17-NOV-81 PRESIDENT 7698 BLAKE 01-MAY-81 MANAGER 7782 CLARK 09-JUN-81 MANAGER 7566 JONES 02-APR-81 MANAGER

EMPNO ENAME HIREDATE JOB 7839 KING 17-NOV-81 PRESIDENT 7698 BLAKE 01-MAY-81 MANAGER 7782 CLARK 09-JUN-81 MANAGER 7566 JONES 02-APR-81 MANAGER

xxxxxxxxxxxxxxxxxxxxxvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxvvvvvvvvvvvvvvvvvvvvv

Abhängigkeiten von Ferndatenbanken

Definition geändertDefinition geändertNetzwerkNetzwerk

xxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvv

ProzedurProzedur ViewView

VALIDVALID INVALIDINVALID INVALIDINVALID

Fern-ReferenzFern-Referenz

ProzedurProzedur TabelleTabelle

vvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvv

Konzepte der Abhängigkeiten von Ferndatenbanken

Fern-Abhängigkeiten werden durch den Fern-Abhängigkeiten werden durch den vom Benutzer gewählten Modus geregelt:vom Benutzer gewählten Modus geregelt:• TIMESTAMP-Prüfungoderoder• SIGNATURE-Prüfung

Parameter für den Modus der Abhängigkeiten von Ferndatenbanken

• Als init.ora-ParameterREMOTE_DEPENDENCIES_MODE = wert• Auf Systemebene

ALTER SYSTEM SET REMOTE_DEPENDENCIES_MODE = wert• Auf Sitzungsebene

ALTER SESSION SET REMOTE_DEPENDENCIES_MODE = wert

xxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvv

ProzedurProzedur ViewView

VALIDVALID INVALIDINVALID INVALIDINVALID

Definition geändertDefinition geändert

ProzedurProzedur TabelleTabelle

vvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvvxxxxxxxxxxxxxxvvvvvvvvvvvvvv

NetzwerkNetzwerk

1 2

Abhängigkeiten von Ferndatenbanken und Timestamp-Modus: Szenario

Fern-Prozedur B kompiliert um 8:00

VALIDVALID

Fern-Prozedur BFern-Prozedur B

kompiliertkompiliert

Lokale Prozedur A kompiliert um 9:00

Lokale Prozedur ALokale Prozedur A

VALIDVALID

Fern-Prozedur BFern-Prozedur B

kompiliertkompiliertVALIDVALID

A kompiliertA kompiliert B kompiliertB kompiliert

Prozedur A wird aufgerufen um 10:00 (Prozedur B wurde nicht rekompiliert seit 8:00)

Lokale Prozedur ALokale Prozedur A

VALIDVALID

Fern-Prozedur BFern-Prozedur B

kompiliertkompiliertVALIDVALID

A kompiliertA kompiliert B kompiliertB kompiliert

Zeitstempel-Zeitstempel-vergleichvergleich

Lokale Prozedur ALokale Prozedur A

VALIDVALID

Fern-Prozedur BFern-Prozedur B

kompiliertkompiliertINVALID zur StartzeitINVALID zur Startzeit

A kompiliertA kompiliert B kompiliertB kompiliert

...paßt ...paßt nichtnicht

Zeitstempel-Zeitstempel-vergleich...vergleich...

Prozedur A wird aufgerufen um 12:00(Prozedur B wurde rekompiliert um 11:00 (Lokalzeit) )

Signature Modus

Die Signatur einer Prozedur beinhaltet: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 ALTERALTER PROCEDURE [SCHEMA.] prozedur_name COMPILEALTER FUNCTION [SCHEMA.] funktions_name COMPILE

ALTER PACKAGE [SCHEMA.] package_name COMPILE [PACKAGE]ALTER PACKAGE [SCHEMA.] package_name COMPILE SPECIFICATIONALTER PACKAGE [SCHEMA.] package_name COMPILE BODY

ALTER TRIGGER trigger_name [ENABLE|DISABLE|COMPILE]

Rekompilieren von ProzedurenRekompilierung abhängiger Prozeduren rozeduren und Funktionen wird erfolglos sein, wenn: 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 rozeduren und Funktionen wird erfolgreich sein, wenn: 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: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

Prozedur AProzedur Adeklarationdeklaration

Package-SpezifikationPackage-Spezifikation

Package-BodyPackage-Body

Prozedur AProzedur Adefinitiondefinition

Standalone-Standalone-

ProzedurProzedur

VALID

VALID

Definition geändertDefinition geändert

Packages und Abhängigkeiten

Prozedur AProzedur Adeklarationdeklaration

Package-SpezifikationPackage-Spezifikation

Package-BodyPackage-Body

Prozedur AProzedur AdefinitiondefinitionStandalone-Standalone-

ProzedurProzedur

INVALID

VALID

Definition Definition geändertgeändert

Zusammenfassung

Vermeidung von Produktionsstörungen durch: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ängigkeitenVerwaltung von Objektabhängigkeiten