Verwendung und Einsatzmöglichkeiten des Flashback

Werbung
| 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
Herunterladen