| DOAG-Präsentation Nov. 2002 Verwendung und Einsatzmöglichkeiten des Flashback-Query © © Copyright Trivadis AG 1 Facts & Figures Über 300 Mitarbeiter Über 340 Kunden (ohne Schulung) Über 1000 Projekte 100 Service Level Agreements (SLA) Konzentration auf Enterprise Computing Produktpalette von Oracle, Microsoft und IBM (neutral) Langjährige Erfahrung in den Bereichen Oracle, Microsoft, Java und eSecurity (Zertifikatstechnologie / Systems Architecture) © © Copyright Trivadis AG 2 Weitere Dienstleistungen Systems Development – Vom Coaching bis zum Fix-Preis Projekt (auf Basis von Oracle, Microsoft und eSecurity) Systems Management – Vom Coaching bis zur langfristigen Übernahme ganzer DatenbankAdministrations Aufgaben Java Professional Services – Design, Management und Umsetzung von Projekten auf Basis von Java-Technologien Gerne geben wir Ihnen mehr Informationen über unsere Dienstleistungen © © Copyright Trivadis AG 3 Kundenliste Deutschland (Auszug) © Alcatel SEL AG, Stuttgart BASF AG, Ludwigshafen Bezirk Oberbayern, München Boehringer Ingelheim Pharma KG, Biberach BMW Group, München DEKRA Automobil GmbH, Stuttgart Deutsche Bank AG, Frankfurt Deutsche Post AG, Darmstadt Nortel Networks Germany GmbH, Friedrichshafen Kultusministerium Baden-Württemberg, Oberschulamt, Stuttgart Landeshauptstadt Stuttgart Porsche AG, Stuttgart Robert Bosch GmbH, Stuttgart T-Systems debis Systemhaus GmbH, Leinfelden-Echterdingen © Copyright Trivadis AG 4 Agenda Einleitung Voraussetzungen (UNDO-Managment) Konzept des Flashback – Wie funktioniert es? Beispiele Fehler / Probleme Literaturhinweise © © Copyright Trivadis AG 5 Version 8i - Lesekonsistenz Statement Level Read Consistency Transaction Level Read Consistency © © Copyright Trivadis AG 6 Transaktionsverhalten Oracle Statement Level Read Consistency U se r 1 U se r 2 U se r 3 U se r 4 Z e it SELECT* FROM EM P; D ELETE FRO M EM P; SELECT * FROM EM P; C O M M IT ; SELECT * FROM EM P; © © Copyright Trivadis AG 7 Transaktionsverhalten Oracle Transaction Level Read Consistency User 1 Zeit User 2 SET TRANSACTION READ ONLY; SELECT* FROM EMP; DELETE FROM EMP; COMMIT; DELETE FROM DEPT; COMMIT; SELECT* FROM DEPT; COMMIT; SELECT* FROM DEPT; © © Copyright Trivadis AG 8 Warum Flashback? Alle notwendigen Befehle für Transaktionen vorhanden ! DELETE DELETEFROM FROMemp emp WHERE WHEREdeptno deptno==30; 30; COMMIT; COMMIT; SELECT SELECT**FROM FROMemp emp WHERE WHEREdeptno deptno==30; 30; no norows rowsselected selected Und nun ??? © © Copyright Trivadis AG 9 Voraussetzungen Oracle Version Automatic Undo Management definierbar über SPFILE- bzw. INIT.ORA-Parameter-File – UNDO_MANAGEMENT – UNDO_TABLESPACE – UNDO_RETENTION – UNDO_SUPRESS_ERRORS – COMPATIBLE © © Copyright Trivadis AG 10 Voraussetzungen UNDO_MANAGEMENT © – MANUEL Default. – Entspricht dem Verhalten von Oracle 7, 8 Verwendung von Rollback-Segmenten – AUTO neues Feature (ab Version 9i) einfache Administration Sehr gute Überwachungsmöglichkeiten © Copyright Trivadis AG 11 Voraussetzungen UNDO_TABLESPACE – Tablespace Rollback und Lesekonsistenz – Der UNDO_Tablespace kann bereits mit dem CREATE DATABASE erstellt werden create createdatabase database“DB1" “DB1" ...... character characterset set"WE8ISO8859P15" "WE8ISO8859P15" datafile datafile '/u00/oradata/DB1/system01DB1.dbf' '/u00/oradata/DB1/system01DB1.dbf'size size 300M 300M UNDO TABLESPACE undots DATAFILE UNDO TABLESPACE undots DATAFILE '/u00/oradata/DB1/undots01DB1.dbf' '/u00/oradata/DB1/undots01DB1.dbf'size size 200M 200M logfile logfile ...... CREATE CREATEUNDO UNDOTABLESPACE TABLESPACEundots undots DATAFILE DATAFILE'/u01/oradata/DB1/undots01DB1.dbf' '/u01/oradata/DB1/undots01DB1.dbf' SIZE SIZE128M; 128M; © © Copyright Trivadis AG 12 Voraussetzungen UNDO_RETENTION – In Sekunden, Default 900 (entspr. 15 Minuten) – max. 2147483645 – Dynamischer Instance Parameter geändert werden ALTER ALTERSYSTEM SYSTEMSET SETundo_retention=500 undo_retention=500SCOPE=MEMORY; SCOPE=MEMORY; ALTER ALTERSYSTEM SYSTEMSET SETundo_retention=500 undo_retention=500SCOPE=BOTH; SCOPE=BOTH; ALTER ALTERSYSTEM SYSTEMSET SETundo_retention=500 undo_retention=500SCOPE=SPFILE; SCOPE=SPFILE; © © Copyright Trivadis AG 13 Voraussetzungen UNDO_SUPPRESS_ERRORS – Default FALSE. Schreibt Fehlermeldungen bei TRUE nur ins Alert.log – INSTANCE und SESSION-Parameter – Bsp. bei SQL-Befehlen wie: TRANSACTION USE ROLLBACK SEGMENT …; ALTER ALTERSYSTEM SYSTEMSET SETundo_suppress_errors undo_suppress_errors==true; true; ALTER ALTERSESSION SESSIONSET SETundo_suppress_errors undo_suppress_errors==false; false; © © Copyright Trivadis AG 14 Voraussetzungen COMPATIBLE-Parameter in SPFILE bzw. INIT.ORA muss mindestens auf 9.0.x.x gesetzt sein © © Copyright Trivadis AG 15 UNDO-Tablespace-Berechnung TS Size = UNDO_RETENTION * UNDO Blocks/Sek. + "some Overhead" Beispiel: – 200 Undo-Blocks pro Sekunde – Blocksize 4K – Gewünschte Retention = 2 Stunden TS Size = ( 2 * 3600 * 200 * 4096 ) =~ 5.8Gb © © Copyright Trivadis AG 16 Voraussetzungen – UNDO_RETENTION © © Copyright Trivadis AG 17 Monitoring – UNDO V$UNDOSTAT im 10 Minuten Intervall über 24 h: – UNDO Platzverbrauch – Anzahl Transaktionen – Anzahl gleichzeitiger Transaktionen sql> select begin_time, end_time, undotsn, undoblks, txncount, maxconcurrency 2 from v$undostat; begin_time ----------------. 20010813 19:38:31 20010813 19:28:31 20010813 19:18:31 20010813 19:08:31 © end_time undotsn undoblks txncount maxconcurrency ----------------- ---------- ---------- ---------- -------------20010813 20010813 20010813 20010813 19:48:31 19:38:31 19:28:31 19:18:31 8 8 8 8 31 1 1 7 24 11 16 23 2 1 1 2 © Copyright Trivadis AG 18 Monitoring – UNDO (V$UNDOSTAT) UNDOTSN = TS# aus SYS.TS$ UNDOBLKS - Platzverbrauch in Oracle-Blöcken TXNCOUNT - Anzahl Transaktionen während des Intervalls MAXCONCURRENCY – max. Anzahl gleichzeitiger Transaktionen UNXPSTEALCNT – Steal Counts. Wie häufig musste ein „unexpired“ Extent durch eine Transaktion „gestohlen“ werden. NOSPACEERRCNT – Anzahl Space errors (cannot allocate ...) SSOLDERRCNT – Anzahl ORA-01555 (snapshot too old ...) © © Copyright Trivadis AG 19 Monitoring – UNDO DBA_UNDO_EXTENTS – zeigt den ältesten Commitzeitpunkt pro Extent – Status des Extents (ACTIVE/EXPIRED/UNEXPIRED) - ACTIVE: offene Transaktion - UNEXPIRED: nötig für Lesekonsistenz (UNDO_RETENTION) - EXPIRED: UNDO_RETENTION abgelaufen SQL> select segment_name ,extent_id, commit_wtime, status 2 from dba_undo_extents 3 where tablespace_name ='UNDO2' SEGMENT_NAME EXTENT_ID COMMIT_WTIME --------------- ---------- -------------------_SYSSMU21$ 0 08/13/2001 21:34:58 _SYSSMU21$ 1 08/13/2001 20:51:40 _SYSSMU21$ 2 08/13/2001 21:34:58 © STATUS --------ACTIVE EXPIRED UNEXPIRED © Copyright Trivadis AG 20 Steal – Count UNDO-Tablespace © ACTIVE ACTIVE EXPIRED EXPIRED UNEXPIRED UNEXPIRED © Copyright Trivadis AG 21 Steal – Count UNDO-Tablespace © ACTIVE ACTIVE ACTIVE ACTIVE UNEXPIRED UNEXPIRED © Copyright Trivadis AG 22 Steal – Count UNDO-Tablespace mit Datenfiles und Autoextend © ACTIVE ACTIVE ACTIVE ACTIVE ACTIVE UNEXPIRED UNEXPIRED ACTIVE © Copyright Trivadis AG 23 Steal – Count UNDO-Tablespace mit Datenfiles ohne Autoextend © ACTIVE ACTIVE ACTIVE ACTIVE UNEXPIRED UNEXPIRED © Copyright Trivadis AG 24 Steal – Count UNDO-Tablespace ACTIVE ACTIVE ACTIVE ACTIVE UNEXPIRED X UNEXPIRED unexpired © X active © Copyright Trivadis AG 25 Steal – Count UNDO-Tablespace ACTIVE ACTIVE ACTIVE ACTIVE ACTIVE ACTIVE unexpired © active (steal count) © Copyright Trivadis AG 26 Konzept von Flashback-Query Database File 5 10 15 20 25 33557 34382 37121 41389 52891 Block 10 SCN 33668 Block 10 30 min. Time … SCN SCN 43450 select xyz from table where … - Flashback at time - Flashback at scn Undo Segment Block Block Block 10 SCN 33668 select xyz from table where … © © Copyright Trivadis AG 27 Konzept - FLASHBACK Release 1 Lesekonsistente Sicht auf Daten der Vergangenheit Package: DBMS_FLASHBACK Zeitpunkt definierbar über – enable_at_time (Zeitpunkt des Flashback) – enable_at_scn (SCN des Flashback) Flashback über Shutdown hinweg möglich enable_at_time wird auf eine SCN gemappt (5 Minuten) Mit Export-Tool verwendbar © © Copyright Trivadis AG 28 Anwendbar für Korrektur einer fehlerhaften Datenmanipulation Wiederherstellen gelöschter Daten Wie sah mein Umsatz heute Morgen um 10:00 Uhr aus © © Copyright Trivadis AG 29 Package DBMS_FLASHBACK Release 1 und 2 CONNECT CONNECT sys/manager@db1 sys/manager@db1 as as sysdba sysdba GRANT GRANT EXECUTE EXECUTE ON ON dbms_flashback dbms_flashback TO TO scott; scott; © © Copyright Trivadis AG 30 Package DBMS_FLASHBACK Release 1 und 2 Prozeduren: DISABLE ENABLE_AT_SYSTEM_CHANGE_NUMBER ENABLE_AT_TIME Funktion: GET_SYSTEM_CHANGE_NUMBER © © Copyright Trivadis AG 31 Release 1 DML ausschließlich mittels PL/SQL dbms_flashback.enable Cursor öffnen dbms_flashback.disable Lesen aus Cursor Insert/Update © © Copyright Trivadis AG 32 Codebeispiel Release 1 BEGIN BEGIN dbms_flashback.enable_at_system_change_number(query_scn dbms_flashback.enable_at_system_change_number(query_scn=> =>:tmpscn); :tmpscn); END; END; // DECLARE DECLARE CURSOR CURSORc1 c1ISIS SELECT SELECT**FROM FROMemp empWHERE WHEREdeptno=10; deptno=10; c1_rec c1%ROWTYPE; c1_rec c1%ROWTYPE; BEGIN BEGIN OPEN OPENc1; c1; dbms_flashback.disable; dbms_flashback.disable; LOOP LOOP FETCH FETCHc1 c1INTO INTOc1_rec; c1_rec; EXIT WHEN c1%NOTFOUND; EXIT WHEN c1%NOTFOUND; INSERT INSERTINTO INTOemp emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) (empno,ename,job,mgr,hiredate,sal,comm,deptno) VALUES (c1_rec.empno, VALUES (c1_rec.empno,c1_rec.ename, c1_rec.ename,c1_rec.job, c1_rec.job, c1_rec.mgr, c1_rec.hiredate, c1_rec.mgr, c1_rec.hiredate, c1_rec.sal, c1_rec.sal,c1_rec.comm, c1_rec.comm,c1_rec.deptno); c1_rec.deptno); END LOOP; END LOOP; CLOSE CLOSEc1; c1; END; END; // © © Copyright Trivadis AG 33 Release 2 DML – Operationen mittels SQL möglich SELECT SELECT ** FROM FROM emp emp AS AS OF OF SCN SCN :tmpscn :tmpscn WHERE WHERE deptno=40; deptno=40; © © Copyright Trivadis AG 34 Release 2 DML – Operationen auf unterschiedlichen SCN’s möglich SELECT SELECT ** FROM FROM emp emp AS AS OF OF SCN SCN :tmpscn :tmpscn MINUS MINUS SELECT SELECT ** FROM FROM emp; emp; © © Copyright Trivadis AG 35 Mögliche Fehler / Probleme ORA-08180: no snapshot found based on specified time – Siehe metalink NOTE: 204334.1 ORA-08181: specified number is not a valid system change number ORA-08182: operation not supported while in Flashback mode – Versuch eines Update-Befehls, während sich die Transaktion im Flashback-Modus befindet © © Copyright Trivadis AG 36 Export-Utility Neue Parameter bei Export-Utility: – FLASHBACK_SCN – FLASHBACK_TIME exp exp userid=system/manager userid=system/manager file=exp_scott.dmp file=exp_scott.dmp flashback_scn=974619 flashback_scn=974619 owner=scott owner=scott © © Copyright Trivadis AG 37 Fazit Release 1 Positiv – Sehr mächtiges Feature – Einfach zu konfigurieren – Einfach in der Anwendung Weniger positiv – Braucht genügend UNDO Tablespace und ist direkt von den Transaktionen und des Parameters UNDO_RETENTION abhängig. © © Copyright Trivadis AG 38 Fazit Release 2 Positiv – Funktionalität erweitert – Deutlich einfacheres Handling bei DML-Operationen – Tabellenorientiertes Flashback möglich Negativ – UNDO-Space (wie bisher - siehe Fazit zum Release 1) © © Copyright Trivadis AG 39 Literaturhinweise [1] Application Developer’s Guide – Fundamentals Release 2 (9.2) [2] Oracle9i SQL Reference [3] Oracle 9i Supplied PL/SQL Packages and Types Reference Release 2 (9.2) Part Number A96612-01 [4] Seminarunterlagen der Firma Trivadis GmbH, Trivadis AG Seminar: Oracle9i Architektur, Interna und Administration [5] Seminarunterlagen der Firma Trivadis GmbH, Trivadis AG Seminar: TechnoCircle Oracle 9i Release 2 © © Copyright Trivadis AG 40 Lust Auf Mehr © © Copyright Trivadis AG 41 Kontaktadresse Peter Jensch Max-Lang-Strasse 56 D-70771 Leinfelden-Echterdingen © Telefon: +49 - 711 – 903 63 230 Fax: +49 - 711 – 903 63 259 E-Mail [email protected] Internet: www.trivadis.com © Copyright Trivadis AG 42