5HOHDVH 2QOLQH$SSOLFDWLRQ 8SJUDGH Ulrike Schwinn und Carsten Czarski 2QOLQH $SSOLFDWLRQ 8SJUDGH +RFKYHUIJEDUNHLW *HSODQWH9HUlQGHUXQJHQ 9HUlQGHUXQJHQDQ 'DWHQEDQNREMHNWHQ +DUGZDUHDXVIlOOH 2QOLQH2SHUDWLRQHQ 6WDQGJ • Index Aufbau und REBUILD • $/7(5,1'(;21/,1( • DDL Operationen mit Sperren • ''/PLW:$,72SWLRQ • Feingranulares Abhängigkeitsmodell • :HQLJHU5HNRPSLOLHUXQJ • Änderungen an Tabellenstrukturen • 3DFNDJH'%06B5('(),1,7,21 • Paralleles Arbeiten/Zusammenführen von versionierten Tabellen • :RUNVSDFH0DQDJHU 8QGZDVLVWPLW ... Veränderungen an Applikationen wie PL/SQL Programmen ... Lösung: Edition Based Redefinition („in-place“) $QIRUGHUXQJHQ • Die Änderungen dürfen die LIVE-Applikation NICHT beeinflussen • Transaktionen aus der “alten” und “neuen” Umgebung müssen parallel und online berücksichtigt werden • 'LH/|VXQJ • • • durch neue Konzepte: (GLWLRQHQ (GLWLRQLQJ 9LHZV &URVVHGLWLRQ7ULJJHUV (GLWLRQHQ • 1RQ6FKHPD basierender Objekttyp • Eine Datenbank hat PLQGHVWHQVHLQH (GLWLRQ – ora$base • Neue Edition ist “Child” einer Edition • Jede 6HVVLRQ befindet sich automatisch in einer Edition • Objekte werden eindeutig durch 1DPH, 2ZQHU und (GLWLRQ identifiziert => Keine neue Syntax notwendig 2%-(&7B1$0(2%-(&7B7<3(2:1(5(',7,21B1$0( /2*B7$%9,(:+59(56,21 /2*B7$%B)25:$5'B7575,**(5+59(56,21 '2,7352&('85(+59(56,21 2EMHNWHLQ(GLWLRQHQ 3/64/3UR]HGXU 3/64/3UR]HGXU 7(67 7(67 6\QRQ\P 6\QRQ\P )($785(7$% )($785(7$% 9LHZ 9LHZ '(/7$ '(/7$ 3/64/3UR]HGXU 3/64/3UR]HGXU 7(67 (GLWLRQ9(56,21 7(67 ,V FKLOGRI (GLWLRQ9(56,21 YHUlQGHUW JHO|VFKW YHUHUEW YHUlQGHUW $GPLQLVWUDWLRQ • Privileg CREATE ANY EDITION dient zum Erzeugen von Editionen &5($7((',7,21YHUVLRQ$6&+,/'2)YHUVLRQ • Editionen nutzbar machen $/7(586(5KU(1$%/((',7,216 *5$1786(21(',7,21YHUVLRQ72KU • Editionen wechseln und monitoren $/7(56(66,216(7HGLWLRQ YHUVLRQ 6(/(&7V\VBFRQWH[W XVHUHQY FXUUHQWBHGLWLRQBQDPH )520GXDO 0RQLWRULQJ 'HPR • $OWH (GLWLRQ • PL/SQL Prozedur TEST • 1HXH (GLWLRQ • Veränderte PL/SQL Prozedur TEST • $QIRUGHUXQJ • Applikationen sollen in alten und neuen Edition weiterarbeiten können (GLWLRQHQLQ$NWLRQ • Objekte in Edition erzeugen $/7(56(66,216(7HGLWLRQ YHUVLRQ &5($7(255(3/$&(352&('85(WHVW • Edition wechseln und Objekt ändern $/7(56(66,216(7HGLWLRQ YHUVLRQ &5($7(255(3/$&(352&('85(WHVW • Ausführung und Monitoring in verschiedenen Editionen führt zu unterschiedlichen Ergebnissen 6(/(&7REMHFWBQDPHHGLWLRQBQDPH)520XVHUBREMHFWV 6(/(&7WH[W)520XVHUBVRXUFH:+(5(QDPH 7(67 9HUVLRQLHUEDUH2EMHNWH • Folgende Datenbank-Objekte sind versionierbar/editionierbar: • PL/SQL Objekte • Synonyme • Views • Andere Objekte können nicht versioniert werden! • Tabellen werden manuell verändert d.h. Spalten werden hinzugefügt. • Spezielle Views – die (GLWLRQLQJ 9LHZV – übernehmen die Rolle der Tabelle für die Applikationen. (GLWLRQLQJ 9LHZV • Logische Sichtweise auf Tabellen • Sind nur sichtbar in der entsprechenden Edition • Sind Basis der Applikationen und erhalten den Namen der Tabelle • Falls keine Änderungen an den Tabellen durchgeführt werden, sind (GLWLRQLQJ 9LHZV ausreichend! ,G ,G 7DJ 0HHWLQJ]HLW 8KU]HLW 7DJ 8KU]HLW IODJ (GLWLRQLQJ 9LHZ IODJ %DVLV7DEHOOH (GLWLRQLQJ 9LHZV ,G 0HHWLQJ]HLW 7DJ 8KU]HLW 9RUJHKHQ • Basistabellen umbenennen • Editioning Views definieren => Applikationen arbeiten auf Editioning Views • Änderungen (Spalten, Privilegien, etc.) vornehmen /2*B7$%B%$6( $/7(56(66,216(7HGLWLRQ $/7(57$%/(ORJBWDEBEDVH$'' &5($7(255(3/$&( (',7,21,1*9,(: ORJBWDE 6(/(&7LGWDJXKU]HLWIODJ )520ORJBWDEBEDVH $6 IODJ .RQWLQXLHUOLFKH'0/2SHUDWLRQHQ 9RUJHKHQ • Einsatz von speziellen Triggern – &URVVHGLWLRQ7ULJJHU – in der “Post-Upgrade” Edition ist erforderlich. • Ein Crossedition Trigger transformiert die Daten, die in der alten Edition verändert werden in das neue Format und umgekehrt. • Zwei Trigger-Typen: • Ein IRUZDUG Crossedition Trigger wird durch DML gezündet ausgeführt durch die alte Version. Hier wird die Transformation von alt nach neu durchgeführt. • Ein UHYHUVH Crossedition Trigger wird durch DML gezündet - ausgeführt durch die neue Version. &URVVHGLWLRQ 7ULJJHU (LQ%HLVSLHO • Für die Transformation von „alt nach neu“ &5($7(255(3/$&(75,**(5ORJBWDEBIRUZDUGBWU %()25(,16(572583'$7(21ORJBWDEBEDVH )25($&+52: )25:$5'&5266(',7,21 %(*,1 QHZWDJ VXEVWUQHZPHHWLQJ]HLW QHZXKU]HLW VXEVWUQHZPHHWLQJ]HLW (1'ORJBWDEBIRUZDUGBWU 'HPR • $OWH (GLWLRQ • Tabelle mit Spalten ID und MEETINGZEIT und Prozedur DOIT • 1HXH (GLWLRQ • Nutzung der Spalten ID, TAG, UHRZEIT und FLAG und veränderte Prozedur DOIT • $QIRUGHUXQJ • Applikationen sollen in der alten und neuen Edition weiterarbeiten können … 2QOLQH $SSOLFDWLRQ 8SJUDGH $XVJDQJVVLWXDWLRQ • PL/SQL-Prozedur arbeitet auf einer Tabelle • Solange Prozedur im Zugriff ... • Weder Änderung der Tabelle noch der Prozedur möglich (Sperre) '2,7 ,G 0HHWLQJ]HLW 3UR]HGXU 9(56,21 /2*B7$% 2QOLQH $SSOLFDWLRQ 8SJUDGH (LQHHGLWLRQLHUEDUH$QZHQGXQJ • PL/SQL-Prozedur arbeitet mit (GLWLRQLQJ 9LHZ • Basistabelle kann nun geändert (erweitert) werden /2*B7$% ,G 0HHWLQJ]HLW 9LHZ '2,7 3UR]HGXU 9(56,21 /2*B7$%B%$6( 2QOLQH $SSOLFDWLRQ 8SJUDGH 1HXH(GLWLRQLQJ 9LHZ QHXH3UR]HGXULQ9(56,21 9(56,21 /2*B7$% 9LHZ '2,7 3UR]HGXU /2*B7$% ,G 0HHWLQJ]HLW 7DJ 8KU]HLW IODJ 9LHZ '2,7 3UR]HGXU 9(56,21 /2*B7$%B%$6( (GLWLRQLQJ 9LHZV • Tabelle umbenennen $/7(57$%/(ORJBWDE5(1$0(72/2*B7$%B%$6( • Editioning View in VERSION1 &5($7((',7,21,1*9,(:ORJBWDE$6 6(/(&7XVHULGPHHWLQJ]HLW)520ORJBWDEBEDVH • Editioning View in VERSION2 &5($7((',7,21,1*9,(:ORJBWDE $6 6(/(&7XVHULGWDJXKU]HLWIODJ )520ORJBWDEBEDVH 2QOLQH $SSOLFDWLRQ 8SJUDGH &URVVHGLWLRQ7ULJJHU VLFKHUQ'DWHQNRQVLVWHQ] 9(56,21 /2*B7$% 9LHZ '2,7 3UR]HGXU )RUZDUG7ULJJHU 5HYHUVH7ULJJHU /2*B7$% ,G 0HHWLQJ]HLW 7DJ 8KU]HLW IODJ 9LHZ '2,7 3UR]HGXU 9(56,21 /2*B7$%B%$6( )RUZDUG &URVVHGLWLRQ 7ULJJHU %HLVSLHO • Für die Transformation von „alt nach neu“ &5($7(255(3/$&(75,**(5ORJBWDEBIRUZDUGBWU %()25(,16(572583'$7(21ORJBWDEBEDVH )25($&+52: )25:$5'&5266(',7,21 %(*,1 QHZWDJ VXEVWUQHZPHHWLQJ]HLW QHZXKU]HLW VXEVWUQHZPHHWLQJ]HLW (1'ORJBWDEBIRUZDUGBWU 5HYHUVH&URVVHGLWLRQ 7ULJJHU %HLVSLHO • Für die Transformation von „neu nach alt“ &5($7(255(3/$&(75,**(5ORJBWDEBUHYHUVHBWU %()25(,16(572583'$7(21ORJBWDEBEDVH )25($&+52: 5(9(56(&5266(',7,21 '(&/$5( DQ]DKO180%(5 %(*,1 ,)QHZSRVWBIODJLVQRW QHZPHHWLQJ]HLW (1',) (1'ORJBWDEBUHYHUVHBWU QXOO7+(1 QHZXKU]HLW__ __QHZWDJ 2QOLQH $SSOLFDWLRQ 8SJUDGH 5HWLUHPHQW GHUÄDOWHQ³ (GLWLRQ 9(56,21 /2*B7$% 9LHZ '2,7 3UR]HGXU )RUZDUG7ULJJHU 5HYHUVH7ULJJHU /2*B7$% ,G 0HHWLQJ]HLW 7DJ 8KU]HLW IODJ 9LHZ '2,7 3UR]HGXU 9(56,21 /2*B7$%B%$6( 2QOLQH $SSOLFDWLRQ 8SJUDGH 9RUJHKHQVZHLVH 3UH8SJUDGHLVWLQ9HUZHQGXQJ 1HXH(GLWLRQHU]HXJHQ XQGbQGHUXQJHQ YRUQHKPHQ 3UH8SJUDGHLVWLQ9HUZHQGXQJ 3RVW8SJUDGHZLUGHU]HXJW 7ULJJHU YHUZHQGHQ 3RVW81'3UH8SJUDGHZLUGJHQXW]W 3UH8SJUDGHVWLOOOHJHQ 3RVW8SJUDGHZLUGYHUZHQGHW XQG3UH8SJUDGHZLUGVWLOOJHOHJW 7HVWVGXUFKIKUHQXQG X852//%$&. 2QOLQH $SSOLFDWLRQ 8SJUDGH =XVDPPHQIDVVXQJ • Änderungen an PL/SQL-Code, Synonyme und Views => Verwendung von (GLWLRQHQ • Änderungen an PL/SQL-Code, Synonyme und Views und an Tabellenstruktur => Verwendung von (GLWLRQHQ und (GLWLRQLQJ 9LHZV • Änderungen an PL/SQL-Code, Synonyme und Views, an Tabellenstruktur und an den Daten => Verwendung von (GLWLRQHQ, (GLWLRQLQJ 9LHZV und &URVVHGLWLRQ7ULJJHU 2QOLQH $SSOLFDWLRQ 8SJUDGH$XIZDQG • Umfang der Implementierung hängt vom Umfang der Änderungen an Tabellen und Prozeduren ab • Reine PL/SQL-Änderungen oder ... • Tabellenerweiterungen ... • Änderungen am Datenmodell WH Objekte in VERSION1 Die meisten Objekte der VERSION1 sind unverändert und ZHQLJHYHUlQGHUWH 2EMHNWHPLW 9(56,21 'XUFKIKUXQJ • Normalerweise entscheiden DBAs über die Hochverfügbarkeit und implementieren diese ... • ... anders bei Online Application Upgrade • Entwickler bereiten das Upgrade vor und implementieren die Transformationen • Editioning Views, Crossedition Trigger • DBAs müssen die Migration begleiten und vorbereiten • Setzen der Default-Edition • Zugriffssrechte auf Editionen ein- und abschalten • Monitoring ,QIRUPDWLRQHQ • Deutschsprachige Communities • http://www.oracle.com/global/de/community/dbadmin • http://www.oracle.com/global/de/community • Handbücher • Oracle® Database PL/SQL Packages and Types Reference 11J Release 1 (11.2) • Oracle® Database Advanced Application Developer's Guide 11JRelease 2 (11.2) )UDJHQ $QWZRUWHQ