Total Recall – Eine Reise in die Tiefen des Oracle Gedächtnis

Werbung
Total Recall – Eine Reise in die Tiefen des
Oracle Gedächtnis
Mirko Hotzy
Discipline Manager
Databases
Trivadis GmbH
Niederlassung Stuttgart
Dezember 2008
Basel
·
Baden
·
Bern
·
Lausanne
·
Zürich
·
Düsseldorf
·
Frankfurt/M.
·
Freiburg i. Br.
·
Hamburg
·
München
·
Stuttgart
·
Wien
Agenda
Flashback – Übersicht & Historie
Total Recall – Flashback Data Archives
Total Recall – Einschränkungen
Daten sind
immer im Spiel.
Oracle Database 11g – Total Recall, eine Reise in die Tiefen des Oracle Gedächtnis
2
© 2008
Was bisher geschah?
Das Oracle Gehirn war bisher eher übersichtlich konstruiert…
Oracle Database 11g – Total Recall, eine Reise in die Tiefen des Oracle Gedächtnis
3
© 2008
Übersicht & Historie – bis Oracle 10 (1)
3 vollständig unabhängige und unterschiedliche Mechanismen
Flashback-Typ
Flashback Query
Flashback Table
Mechanismus
Basiert auf Undo-Informationen
UNDO_MANAGEMENT
UNDO_RETENTION
UNDO_TABLESPACE
Recyclebin
Umbenennen von Tabellen und
Abhängigen Objekten in
systemverwaltete Objekte innerhalb
desselben Tablespace
Flashback Database
Flashback Logging, RVWR Prozess
schreibt Flashback Logs, abgelegt
in Flash Recovery Area,
Erweiterung des Rewind Buttons
durch Restore Point Techniken
Oracle Database 11g – Total Recall, eine Reise in die Tiefen des Oracle Gedächtnis
4
© 2008
Flashback Befehlsportfolio (1)
Flashback Query (auch SCN möglich)
SELECT *
FROM emp AS OF TIMESTAMP
to_timestamp('26.10.2008 13:52:00'‚ 'DD.MM.YYYY HH24:MI:SS')
WHERE deptno = 30;
Flashback Version Query
SELECT empno, ename, job, versions_starttime, versions_endtime
FROM emp VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE
WHERE ename = 'MEIER'
ORDER BY versions_starttime NULLS FIRST;
Flashback Transaction Query
SELECT ftq.xid, ftq.start_scn, ftq.commit_scn, ftq.operation,
ftq.logon_user, ftq.undo_sql
FROM emp VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE,
flashback_transaction_query ftq
WHERE ftq.xid = '04001F000F2D0000'
AND ftq.undo_sql IS NOT NULL
AND ftq.xid = versions_xid;
Oracle Database 11g – Total Recall, eine Reise in die Tiefen des Oracle Gedächtnis
5
© 2008
Flashback Befehlsportfolio (2)
Flashback Table
FLASHBACK TABLE emp TO TIMESTAMP
to_timestamp('25.10.2008 12:00:00','DD.MM.YYYY HH24:MI:SS');
Recyclebin
FLASHBACK TABLE emp TO BEFORE DROP RENAME TO emp_restore;
-- Rename is optional
Flashback Database (mount status)
ALTER DATABASE FLASHBACK ON;
FLASHBACK DATABASE TO [ SCN … | TIMESTAMP … | Restore Point];
Oracle Database 11g – Total Recall, eine Reise in die Tiefen des Oracle Gedächtnis
6
© 2008
Übersicht & Historie – bis Oracle 10 (2)
Anzeigen vergangener Zustände von Datenbankobjekten
(Flashback-Query, Flashback Transaction Query, Flashback
Version Query)
Zurücksetzen von Objekten auf einen früheren Stand ohne Point-in-time
Media Recovery (primär Generierung & Anwendung von Undo-SQL)
Mit Flashback-Funktionen waren bisher folgende Aktionen
möglich:
Durchführen von Queries, die frühere Datenzustände anzeigen
Durchführen von Queries, die eine detaillierte Historie von
Datenbankänderungen anzeigt
Wiederherstellen von Tabellen oder Zeilen zu einem früheren Zeitpunkt
Zurückrollen einer Transaktion und der davon abhängigen Transaktionen,
während die Datenbank online verfügbar ist
Voraussetzungen:
FLASHBACK DATABASE benötigt Flashback-Logs
FLASHBACK Query benötigt ausreichend Undo-Tablespaceplatz
Oracle Database 11g – Total Recall, eine Reise in die Tiefen des Oracle Gedächtnis
7
© 2008
Und nun …
Was hat sich nun mit Oracle 11g geändert?
Oracle Database 11g – Total Recall, eine Reise in die Tiefen des Oracle Gedächtnis
8
© 2008
Agenda
Flashback - Übersicht & Historie
Total Recall – Flashback Data Archives
Total Recall – Einschränkungen
Daten sind
immer im Spiel.
Oracle Database 11g – Total Recall, eine Reise in die Tiefen des Oracle Gedächtnis
9
© 2008
ORACLE Total Recall – Worum geht es?
Historische Daten werden einfach
aufgefressen …
… aber nicht terminiert!
Oracle Database 11g – Total Recall, eine Reise in die Tiefen des Oracle Gedächtnis
10
© 2008
Total Recall – Meine Erwartungen
Einfache Erstellung und Verwaltung von FlashbackDatenarchiven
Datensicherheit – nicht jeder darf historische Daten abfragen
Effizientes Management von Flashback Data Archives durch
Oracle selbst
Automatische Datenbereinigung
Effiziente Speicherplatznutzung für historische Daten
Einfacher und schneller Zugriff auf historische Daten
Keine Zeitbeschränkung – jeder Aufbewahrungszeitraum ist
möglich
Einfache Administration und Visualisierung über EM11g
Database Control
Oracle Database 11g – Total Recall, eine Reise in die Tiefen des Oracle Gedächtnis
11
© 2008
Flashback Data Archives
Flashback Data Archive (Total Recall)
Automatisches Protokollieren und
Archivieren von geänderten Daten für
reguläre Queries und Flashback
Queries
Ermöglichen den Zugriff auf einzelne
Versionen der Datenbankobjekte, ohne
«snapshot-too-old»-Fehler
Speichern alle Änderungen eines
Datensatzes über seine gesamte
Lebensdauer
ora_fbda_SID startet beim
Hochfahren der Datenbank
Quelle Oracle Corporation
Kein Archivelog Mode notwendig!
Oracle Database 11g – Total Recall, eine Reise in die Tiefen des Oracle Gedächtnis
12
© 2008
Flashback Data Archives – Konzept (2)
Ein weiterer, neuer Mechanismus ist hinzugekommen
Flashback-Typ
Mechanismus
Flashback Data Archives
Asynchrones Protokollieren von
Änderungen auf Tabellenebene,
Systemgenerierte, partitionierte
Historientabellen protokollieren alle
Änderungen (Update, Delete),
Platzoptimierung
Limits
Quotas für Flashback Data Archives
Tablespace-/Storagelimits
Oracle Database 11g – Total Recall, eine Reise in die Tiefen des Oracle Gedächtnis
13
© 2008
Flashback Data Archives – Vorbereitungen
Erstellen eines Tablespaces für Flashback Data Archives
CREATE SMALLFILE TABLESPACE FDA_LONG_RET
DATAFILE '/u01/oradata/DB1110A/DB1110A_FDA_LONG_RET01.dbf'
SIZE 100M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE 200M
LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
Vergeben der Administrationsrechte an Benutzer
GRANT FLASHBACK ARCHIVE ADMINISTER TO scott;
Erstellen des Flashback-Archivs
CREATE FLASHBACK ARCHIVE flasharch_long TABLESPACE FDA_LONG_RET
QUOTA 100M RETENTION 10 YEAR;
Oracle Database 11g – Total Recall, eine Reise in die Tiefen des Oracle Gedächtnis
14
© 2008
Flashback Data Archives – Nutzung
Aktivieren der Flashback-Archivierung für eine Tabelle
ALTER TABLE SCOTT.cust2 FLASHBACK ARCHIVE flasharch_long;
Abfragen der Daten, zu einem spezifischen Zeitpunkt
select * from scott.cust2
AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '10' DAY)
WHERE cust_last_name ='Ruddy';
Relevante Dictionary-Views
DBA_FLASHBACK_ARCHIVE (Erstellungsdatum…)
DBA_FLASHBACK_TABLES (archivierte Tabellen…)
DBA_FLASHBACK_ARCHIVE_TS (Tablespace für FlashbackArchiv…)
Oracle Database 11g – Total Recall, eine Reise in die Tiefen des Oracle Gedächtnis
15
© 2008
Flashback Data Archives – Internals (1)
Für historische Daten werden Range-Partitionierte Tabellen erstellt
Der Name der Archiv- und Mappingtabellen ist systemgeneriert
(SYS_FBA_*)
Oracle Database 11g – Total Recall, eine Reise in die Tiefen des Oracle Gedächtnis
16
© 2008
Flashback Data Archives – Internals (2)
Systemgenerierte, rangepartitionierte Tabellen werden benutzt
DBMS_METADATA.GET_DDL('TABLE','SYS_FBA_HIST_88149','SCOTT')
--------------------------------------------------------------CREATE TABLE "SCOTT"."SYS_FBA_HIST_88149"
(
"RID" VARCHAR2(4000),
"STARTSCN" NUMBER,
"ENDSCN" NUMBER,
"XID" RAW(8),
"OPERATION" VARCHAR2(1),
…
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 COMPRESS
STORAGE(
BUFFER_POOL DEFAULT)
TABLESPACE "FDA_LONG_RET"
PARTITION BY RANGE ("ENDSCN")
(PARTITION "PART_11369538" VALUES LESS THAN (11369538)
…
TABLESPACE "FDA_LONG_RET" COMPRESS FOR ALL OPERATIONS )
Oracle Database 11g – Total Recall, eine Reise in die Tiefen des Oracle Gedächtnis
17
© 2008
Flashback Data Archives – Internals (3)
OLTP Table Compression ist ebenfalls involviert
select table_owner, table_name, partition_name, compress_for
from dba_tab_partitions
where table_name like 'SYS_FBA_HIST%' order by table_owner
TAB_OWNER
--------HR
SCOTT
SCOTT
SCOTT
SCOTT
TABLE_NAME
-----------------SYS_FBA_HIST_88150
SYS_FBA_HIST_88149
SYS_FBA_HIST_88149
SYS_FBA_HIST_88148
SYS_FBA_HIST_88148
PART_NAME
------------HIGH_PART
PART_11369538
HIGH_PART
HIGH_PART
PART_11272997
COMPRESS_FOR
---------------FOR ALL OPERATIONS
FOR ALL OPERATIONS
FOR ALL OPERATIONS
FOR ALL OPERATIONS
FOR ALL OPERATIONS
Chained Rows? – Fehlanzeige!
TABLE_NAME
CHAIN_CNT
------------------------------ ---------SYS_FBA_HIST_88148
0
SYS_FBA_HIST_88149
0
Oracle Database 11g – Total Recall, eine Reise in die Tiefen des Oracle Gedächtnis
18
© 2008
Flashback Data Archives – Internals (4)
Was macht eigentlich die SYS.SMON_SCN_TIME Tabelle?
select count(*) from sys.smon_scn_time;
COUNT(*)
---------4378
Sie wächst … und wächst und …
Eine Row ist durchschnittlich 993 Bytes groß
Alle 5 Minuten entsteht eine Row in SYS.SMON_SCN_TIME
0,27MB pro Tag x 365Tage x 10Jahre = ca. 985 MB
10 Jahre = 1.051.200 rows!
Genaues Überwachen des SYSAUX Tablespaces wird
dringend empfohlen!
Oracle Database 11g – Total Recall, eine Reise in die Tiefen des Oracle Gedächtnis
19
© 2008
Flashback Data Archives – Internals (5)
Performance Overhead durch asynchrones Schreiben?
Sollte sorgfältig von Fall zu Fall getestet werden!
Oracle Database 11g – Total Recall, eine Reise in die Tiefen des Oracle Gedächtnis
20
© 2008
Agenda
Flashback - Übersicht & Historie
Total Recall – Flashback Data Archives
Total Recall – Einschränkungen
Daten sind
immer im Spiel.
Oracle Database 11g – Total Recall, eine Reise in die Tiefen des Oracle Gedächtnis
21
© 2008
Flashback Data Archives – Administration (1)
Manuelles Bereinigen eines Flashback Data Archives
ALTER FLASHBACK ARCHIVE flasharch_long
PURGE BEFORE TIMESTAMP (SYSTIMESTAMP – INTERVAL '1' Year)
Folgende DDL-Anweisungen sind für Quelltabellen, für die
Flashback Data Archive aktiviert ist, nicht erlaubt (ORA-55610)
ALTER TABLE Befehl
Löschen, Umbenennen oder Modifizieren einer Spalte
Durchführen von Partitions- oder Subpartitionsoperationen
Konvertierung einer LONG-Spalte in eine LOB-Spalte
UPGRADE TABLE, mit oder ohne einer INCLUDING DATA Klausel
DROP TABLE Befehl
RENAME TABLE Befehl
TRUNCATE TABLE Befehl
Oracle Database 11g – Total Recall, eine Reise in die Tiefen des Oracle Gedächtnis
22
© 2008
Flashback Data Archives – Administration (2)
Was passiert bei Platzmangel in Flashback Data Archives?
…
Sun Sep 07 00:56:31 2008
Flashback Archive FLASHARCH_SHORT ran out of space in
tablespace FDA_SHORT_RET.
Flashback archive FLASHARCH_SHORT is full, and archiving is
suspended.
Please add more space to flashback archive FLASHARCH_LOW.
Sun Sep 07 01:56:32 2008
Flashback Archive FLASHARCH_SHORT ran out of space in
tablespace FDA_SHORT_RET.
…
Datenbank läuft normal weiter, Fehlermeldungen erscheinen im
Alert.log
Oracle Database 11g – Total Recall, eine Reise in die Tiefen des Oracle Gedächtnis
23
© 2008
Flashback Data Archives – Administration (3)
Kein einfaches Löschen eines Flashback Data Archive
Tablespaces
DROP TABLESPACE FDA_LONG_RET INCLUDING CONTENTS AND DATAFILES
*ERROR at line 1:ORA-00604: error occurred at recursive SQL
level 1ORA-55622: DML, ALTER and CREATE UNIQUE INDEX operations
are not allowed on table "SCOTT"."SYS_FBA_TCRV_19334"
Zuerst „De-Archivieren“ und dann das Flashback-Archiv löschen
ALTER TABLE scott.cust2 NO FLASHBACK ARCHIVE;
DROP FLASHBACK ARCHIVE flasharch_long;
Anschließend das zugehörige Tablespace löschen
DROP TABLESPACE FDA_LONG_RET INCLUDING CONTENTS AND DATAFILES;
Abhängigkeiten sind zu beachten; Flashbacks müssen in der
richtigen Reihenfolge erfolgen, da ansonsten Constraint Fehler
auftreten können
Oracle Database 11g – Total Recall, eine Reise in die Tiefen des Oracle Gedächtnis
24
© 2008
Flashback Data Archives – Administration (4)
DML auf Flashback-Archivtabellen sind nicht erlaubt, Erstellung
von zusätzlichen nonunique Indices sind zulässig
DELETE FROM SYS_FBA_HIST_73420 WHERE ENAME='KING'
ERROR at line 1:
ORA-55622: DML, ALTER and CREATE UNIQUE INDEX operations are
not allowed on table "SCOTT"."SYS_FBA_HIST_73420"
Flashback Data Archives sind nicht exportierbar/importierbar
(weder über Data Pump noch über die alten exp/imp utilities)
ORA-31693: Table data object "SCOTT"."SYS_FBA_DDL_COLMAP_22297"
failed to load/unload and is being skipped due to error:
ORA-02354: error in exporting/importing data
ORA-01426: numeric overflow
ORA-31693: Table data object "SCOTT"."SYS_FBA_DDL_COLMAP_22299"
failed to load/unload and is being skipped due to error:
ORA-02354: error in exporting/importing data
ORA-01426: numeric overflow
Oracle Database 11g – Total Recall, eine Reise in die Tiefen des Oracle Gedächtnis
25
© 2008
Total Recall – Erwartungen und Realität
Einfache Erstellung und Administration
von Flashback Data Archives
Datensicherheit – nicht jeder darf
historische Daten abfragen
Wissen
vermitteln ist erst
der Anfang.
Wissen
umsetzen das
Entscheidende.
Keine Zeitbeschränkung – jeder
Aufbewahrungszeitraum ist möglich
Effizientes Management der Flashback
Data Archives durch Oracle
Integration EM11g Database Control
Option ist mit zusätzlichen Kosten
verbunden
Oracle Database 11g – Total Recall, eine Reise in die Tiefen des Oracle Gedächtnis
26
© 2008
Total Recall – Anmerkungen
Für unterschiedliche
Aufbewahrungszeiträume sollten
unterschiedliche Flashback Data
Archives benutzt werden
Möglichen Performance Overhead gut
testen!
Wissen
vermitteln ist erst
der Anfang.
Wissen
umsetzen das
Entscheidende.
Flashback Data Archives eignen sich
gut …
Oracle Database 11g – Total Recall, eine Reise in die Tiefen des Oracle Gedächtnis
Zur Bereinigung menschlicher DMLFehler
Zur Abfrage historischer Daten über
lange Zeiträume hinweg
(Bereinigungsintervall kann auf täglicher
Basis konfiguriert werden)
27
© 2008
Vielen Dank für Ihre Aufmerksamkeit!
Q&A
Basel
·
Baden
·
Bern
·
Lausanne
·
Zürich
·
Düsseldorf
·
Frankfurt/M.
·
Freiburg i. Br.
·
Hamburg
·
München
·
Stuttgart
·
Wien
Herunterladen