Als PDF Downloaden!

Werbung
Tipps & Tricks: Log Miner
Bereich:
DBA
Erstellung:
01/2004 MP
Versionsinfo:
9.2, 10.2, 11.2
Letzte Überarbeitung:
06/2009 MP
LogMiner
Es kommt des öfteren vor, dass Benutzer aus Versehen falsche oder zu viele Datensätze löschen, Einträge mit
einem falschen Wert updaten oder den verkehrten Index löschen.
Wenn Sie nun im Besitz eines aktuellen logischen Backups (Export) sind, dann könnten Sie diese Fehler
möglicherweise beheben.
Wenn nicht, hat man eigentlich nur die Möglichkeit eines unvollständigen Recoveries. Aber es gibt da noch eine 3.
Möglichkeit:
Den LogMiner.
Der Oracle LogMiner ist ein Package (DBMS_LOGMNR), mit dem Sie den Inhalt von RedoLog-Dateien abfragen
und analysieren können. Die Ergebnisse werden in einer View (v$LOGMNR_CONTENTS) dargestellt und
können mittels SQL-Befehlen betrachtet werden.
Mit Hilfe des LogMiners können Sie unter anderem folgende Informationen aus den RedoLog-Dateien sichtbar
machen:
Jegliche DML- (Insert, Update, Delete) oder DDL-Befehle (Create ... )(als Sonderoption) in Form von
Undo- und Redo-Statements
Die System Change Number (SCN)
Der Benutzer, der das Statement abgesetzt hat
Der Name und das Schema des geänderten Objekts (Tabellenname)
In den RedoLog Dateien werden die einzelnen Tabellenname, Spaltenname, Objektnamen unter einer internen
Object-ID und die Spalten- oder Vergleichswerte in Hexadezimal-Code gespeichert. Damit der LogMiner diese
Informationen auch vollständig übersetzten kann, benötigt er den Zugriff auf das Dictionary. Dies kann man durch
folgende Möglichkeiten bewerkstelligen:
Data Dictionary-Extract in eine Datei
Data Dictionary-Extract in die RedoLog-Datei(en)
Das Dictionary der aktuellen Datenbank verwenden
Im folgenden werden wir nur die 1. Möglichkeit ( Dictionary in einem Flat-File) verfolgen ...
Anwendung des LogMiners
Zum Analysieren der RedoLog-Dateien mit Hilfe des LogMiners müssen Sie folgendermaßen vorgehen:
Muniqsoft GmbH
Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40
IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0
Seite 1 von 4
1. Dictionary erstellen
2. Die zu analysierenden RedoLog-Dateien auswählen und registrieren
3. Die Analyse starten
4. Das Ergebnis über die View V$LOGMNR_CONTENTS abfragen
5. Die LogMiner-Session beenden
Dictionary erstellen (Extrahieren in ein Flat-File)
Überprüfen Sie den Parameter UTL_FILE_DIR, und setzen Sie ihn gegebenenfalls auf das Verzeichnis, in dem
Sie die Dictionary-Datei erstellen wollen. (z. B. UTL_FILE_DIR = /oracle/logs)
Achtung: Nach Änderung dieses Parameters muss die Datenbank durchgestartet werden!
Hinweis: Ab Version 9.2 muss für eine vollständige Überwachung der DML Befehle folgendes Kommando
einmalig in der Datenbank abgesetzt werden:
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
Erst danach werden auch die Updates vollständig im LogMiner dokumentiert!
Erstellen Sie das Data Dictionary:
BEGIN
DBMS_LOGMNR_D.BUILD(
DICTIONARY_FILENAME => 'dictionary.ora',
DICTIONARY_LOCATION => '/oracle/logs');
END;
/
Die zu analysierenden Logfiles registrieren:
Hinweis: Die aktuell benutzte Log-Datei erhalten Sie durch:
SELECT member FROM v$logfile WHERE group#=(
select group# FROM v$log WHERE status='CURRENT');
BEGIN
/* Erste Log-Datei zur Auswahl hinzufügen*/
DBMS_LOGMNR.ADD_LOGFILE(
LOGFILENAME => '/oracle/logs/log1.f',
OPTIONS => dbms_logmnr.NEW);
/* Zweite Log-Datei zur Auswahl hinzufügen*/
DBMS_LOGMNR.ADD_LOGFILE(
LOGFILENAME => '/oracle/logs/log2.f',
OPTIONS => dbms_logmnr.ADDFILE);
END;
/
/* Optional kann die letzte Datei wieder aus der Auswahl entfernt werden*/
BEGIN
DBMS_LOGMNR.ADD_LOGFILE(
Muniqsoft GmbH
Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40
IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0
Seite 2 von 4
LOGFILENAME => '/oracle/logs/log2.f',
OPTIONS => dbms_logmnr.REMOVEFILE);
END;
/
Mit Hilfe der Prozedur ADD_LOGFILE können Sie nun die Liste der Logfiles bearbeiten. Sie können Logfile
hinzufügen (ADDFILE) oder auch von der Liste entfernen (REMOVEFILE).
Die Analyse starten
BEGIN
DBMS_LOGMNR.START_LOGMNR(
DICTFILENAME =>'/oracle/logs/dictionary.ora');
END;
/
Durch das Aufrufen der Prozedur START_LOGMNR wird nun die Analyse der Logfiles gestartet und die
Ergebnisse werden über die View V$LOGMNR_CONTENTS dargestellt.
Wenn Sie auch DDL Statements in den Log-Files nachvollziehen möchten, müssen Sie bevor die DDL Befehle
absetzen folgendes Kommando ausführen:
BEGIN
DBMS_LOGMNR.START_LOGMNR (OPTIONS => DBMS_LOGMNR.DDL_DICT_TRACKING);
END;
/
Ergebnisse der Abfragen:
Die Informationen können nun aus der V$LOGMNR_CONTENTS ausgelesen werden. Bevor die Prozedur
START_LOGMNR ausgeführt wurde ist diese View leer.
Die Analyse von RedoLog-Dateien mit Hilfe des LogMiners gilt immer nur auf Session-Ebene. Beenden Sie ihre
Session, gehen auch ihre Analyse-Ergebnisse in der V$LOGMNR_CONTENTS verloren.
Beispielabfrage (Welche Änderungen wurden in der letzten Stunde auf Objekten von Benutzer Scott
durchgeführt):
SELECT scn,timestamp,sql_redo,sql_undo,row_id,seg_name,seg_owner,username
FROM sys.v$logmnr_contents
WHERE seg_owner='SCOTT'
AND timestamp between sysdate-1/24 and sysdate;
Beschreibung der v$logmnr_contents Tabelle:
V$LOGMNR_CONTENTS:
Name
Type
Description/comments
--------------- ------------ --------------------------------------------------SCN
NUMBER
System Change Number des Redo Records
TIMESTAMP
DATE
Geschätzte Zeit des Redo Records
THREAD#
NUMBER
Redo log Thread (für OPS oder RAC)
Muniqsoft GmbH
Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40
IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0
Seite 3 von 4
LOG_ID
XIDUSN
XIDSLT
XIDSQN
RBASQN
RBABLK
RBABYTE
UBAFIL
UBABLK
UBAREC
UBASQN
ABS_FILE#
REL_FILE#
DATA_BLK#
DATA_OBJ#
DATA_OBJD#
SEG_OWNER
SEG_NAME
SEG_TYPE
SEG_TYPE_NAME
TABLE_SPACE
ROW_ID
SESSION#
SERIAL#
USERNAME
SESSION_INFO
ROLLBACK
OPERATION
SQL_REDO
SQL_UNDO
RS_ID
SSN
CSF
INFO
STATUS
NUMBER
Log Sequence Number innerhalb des redo thread
NUMBER
Rollback Segment Number in der die txn sich aufhält
NUMBER
Slot in der RBSs txn table in der die txn sich aufhält
NUMBER
Sequenz Nummer des Times slot in txn table in RBS reused
NUMBER
Log sequence number der Redo Byte Address (RBA)
NUMBER
Block innerhalb der Redolog-datei
NUMBER
Byte offset innerhalb 512-byte block der Redolog-datei
NUMBER
Datei ID # innerhalb Rollback Segment
NUMBER
Block ID # innerhalb rollback Segment
NUMBER
Slot # innerhalb des Rollback-Blocks
NUMBER
# of times slot within block within RBS reused
NUMBER
Absolute file ID # der Daten
NUMBER
Relative file ID # der daten
NUMBER
Block ID # innerhalb der Datendatei
NUMBER
OBJECT_ID in DBA_OBJECTS
NUMBER
DATA_OBJECT_ID in DBA_OBJECTS
VARCHAR2(32) Schema Name des Objekt-Eigentümers
VARCHAR2(32) Objektname
NUMBER
Objekttyp
VARCHAR2(32) Segment-Typ-Name
VARCHAR2(32) Name des Tablespace in dem das Objekt liegt
VARCHAR2(19) ROWID
NUMBER
Wert der Spalte V$SESSION.SID der Transaktion
NUMBER
Wert der Spalte V$SESSION.SERIAL# der Transaktion
VARCHAR2(32) Benutzername der die Transaktion ausführt
VARCHAR2(4000) Zusätzliche Informationen
NUMBER
0 = Transaktion commited, 1 = Transaktion rolled back
VARCHAR2(32) Typ der SQL Operation
VARCHAR2(4000) Text des SQL statement (um es nochmal auszuführen)
VARCHAR2(4000) Text des SQL statement (um es rückgängig zu machen)
VARCHAR2(32) Name des Rollback segments
NUMBER
SQL Sequence number
NUMBER
SQL continuation flag (0 = not continued)
VARCHAR2(32) Zusätzliche Informationen
NUMBER
txn status
Weitere Information zum Log-Miner erhalten Sie in unserem Backup & Recovery und in unserem DBA III Kurs.
Wir freuen uns auf Sie!
Muniqsoft GmbH
Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40
IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0
Seite 4 von 4
Herunterladen