Geläufige DBA-Protokollaufgaben für Oracle DB-Instances
Im Folgenden erfahren Sie, wie Sie bestimmte allgemeine DBA-Aufgaben durchführen können, die mit der Protokollierung Ihrer Amazon RDS-DB-Instances in Oracle zusammenhängen. Um eine verwaltete Service-Erfahrung zu bieten, stellt Amazon RDS keinen Shell-Zugriff zu DB-Instances bereit und beschränkt den Zugriff auf bestimmte Systemprozeduren und -tabellen, die erweiterte Sonderrechte erfordern.
Weitere Informationen finden Sie unter Oracle-Datenbank-Protokolldateien.
Themen
- Einstellen der erzwungenen Protokollierung
- Einstellen der ergänzenden Protokollierung
- Wechseln zwischen Online-Protokolldateien
- Hinzufügen von Online-Redo-Log-Dateien
- Löschen von Online-Redo-Log-Dateien
- Anpassen der Größe von Online-Redo-Log-Dateien
- Beibehaltung von archivierten Redo-Log-Dateien
- Zugreifen auf Transaktionsprotokolle
Einstellen der erzwungenen Protokollierung
Im Modus für erzwungene Protokollierung protokolliert Oracle alle Änderungen in einer
Datenbank, außer Änderung in temporären Tabellenräumen und temporären Segmenten (NOLOGGING
Klauseln werden ignoriert). Weitere Informationen finden Sie unter Specifying FORCE LOGGING Mode
Um die erzwungene Protokollierung festzulegen, verwenden Sie die Amazon RDS-Prozedur
rdsadmin.rdsadmin_util.force_logging
. Die Prozedur force_logging
hat die folgenden Parameter.
Parametername | Datentyp | Standard | Ja | Beschreibung |
---|---|---|---|---|
|
Boolean |
true |
Nein |
Setzen Sie diesen Wert auf |
Im folgenden Beispiel wird eine Datenbank in den Modus für erzwungene Protokollierung gesetzt.
exec rdsadmin.rdsadmin_util.force_logging(p_enable =>
true
);
Einstellen der ergänzenden Protokollierung
Wenn Sie die ergänzende Protokollierung aktivieren, verfügt LogMiner über die erforderlichen
Informationen, um verkettete Zeilen und gruppierte Tabellen zu unterstützen. Weitere
Informationen finden Sie unter Supplemental Logging
In Oracle Database ist die ergänzende Protokollierung standardmäßig deaktiviert. Um
die erzwungene Protokollierung festzulegen, verwenden Sie die Amazon RDS-Prozedur
rdsadmin.rdsadmin_util.alter_supplemental_logging
. Weitere Informationen über die Verwaltung der Aufbewahrung von archivierten Redo-Log-Dateien
für Oracle-DB-Instances in Amazon RDS finden Sie unter Beibehaltung von archivierten Redo-Log-Dateien.
Die Prozedur alter_supplemental_logging
hat die folgenden Parameter.
Parametername | Datentyp | Standard | Erforderlich | Beschreibung |
---|---|---|---|---|
|
varchar2 |
— |
Ja |
|
|
varchar2 |
Null |
Nein |
Der Typ der ergänzenden Protokollierung. Gültige Werte sind |
Im folgenden Beispiel wird die ergänzende Protokollierung aktiviert.
begin rdsadmin.rdsadmin_util.alter_supplemental_logging( p_action => '
ADD
'); end; /
Im folgenden Beispiel wird die ergänzende Protokollierung für alle Spalten mit fester Länge für Maximalgröße aktiviert.
begin rdsadmin.rdsadmin_util.alter_supplemental_logging( p_action => '
ADD
', p_type => 'ALL
'); end; /
Im folgenden Beispiel wird die ergänzende Protokollierung für primäre Schlüsselspalten aktiviert.
begin rdsadmin.rdsadmin_util.alter_supplemental_logging( p_action => '
ADD
', p_type => 'PRIMARY KEY
'); end; /
Wechseln zwischen Online-Protokolldateien
Um die Protokolldateien zu wechseln, verwenden Sie die Amazon RDS-Prozedur rdsadmin.rdsadmin_util.switch_logfile
. Die Prozedur switch_logfile
hat keine Parameter.
Im folgenden Beispiel wird zwischen Protokolldateien gewechselt.
exec rdsadmin.rdsadmin_util.switch_logfile;
Hinzufügen von Online-Redo-Log-Dateien
Eine Amazon RDS-DB-Instance, die Oracle ausführt, beginnt mit vier Online-Redo-Log-Dateien,
jede 128 MB groß. Um weitere Wiederherstellungsprotokolle hinzuzufügen, verwenden
Sie die Amazon RDS-Prozedur rdsadmin.rdsadmin_util.add_logfile
.
Die Prozedur add_logfile
hat die folgenden Parameter.
Die Parameter schließen sich gegenseitig aus.
Parametername | Datentyp | Standard | Erforderlich | Beschreibung |
---|---|---|---|---|
|
positiv |
Null |
Nein |
Die Größe der Protokolldatei in Bytes |
|
varchar2 |
— |
Ja |
Die Größe der Protokolldateien. Sie können die Größe in Kilobytes (KB), Megabytes (MB) oder Gigabytes (GB) festlegen. |
Mit dem folgenden Befehl wird eine Protokolldatei der Größe 100 MB hinzugefügt.
exec rdsadmin.rdsadmin_util.add_logfile(p_size => '
100M
');
Löschen von Online-Redo-Log-Dateien
Um Wiederherstellungsprotokolle zu löschen, verwenden Sie die Amazon RDS-Prozedur
rdsadmin.rdsadmin_util.drop_logfile
. Die Prozedur drop_logfile
hat die folgenden Parameter.
Parametername | Datentyp | Standard | Erforderlich | Beschreibung |
---|---|---|---|---|
|
positiv |
— |
Ja |
Die Gruppennummer des Protokolls |
Im folgenden Beispiel wird das Protokoll mit der Gruppennummer 3 verworfen.
exec rdsadmin.rdsadmin_util.drop_logfile(grp =>
3
);
Sie können nur Protokolle verwerfen, die den Status "unbenutzt" oder "inaktiv" haben. Im folgenden Beispiel werden die Stati der Protokolle abgerufen.
SELECT GROUP#, STATUS FROM V$LOG; GROUP# STATUS ---------- ---------------- 1 CURRENT 2 INACTIVE 3 INACTIVE 4 UNUSED
Anpassen der Größe von Online-Redo-Log-Dateien
Eine Amazon RDS-DB-Instance, die Oracle ausführt, beginnt mit vier Online-Redo-Log-Dateien, jede 128 MB groß. Im folgenden Beispiel wird gezeigt, wie Sie Amazon RDS-Prozeduren verwenden können, um die Größe für jedes Ihrer Protokolle von 128 MB auf 512 MB anzupassen.
/* Query V$LOG to see the logs. */ /* You start with 4 logs of 128 MB each. */ SELECT GROUP#, BYTES, STATUS FROM V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 1 134217728 INACTIVE 2 134217728 CURRENT 3 134217728 INACTIVE 4 134217728 INACTIVE /* Add four new logs that are each 512 MB */ exec rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912); exec rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912); exec rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912); exec rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912); /* Query V$LOG to see the logs. */ /* Now there are 8 logs. */ SELECT GROUP#, BYTES, STATUS FROM V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 1 134217728 INACTIVE 2 134217728 CURRENT 3 134217728 INACTIVE 4 134217728 INACTIVE 5 536870912 UNUSED 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED /* Drop each inactive log using the group number. */ exec rdsadmin.rdsadmin_util.drop_logfile(grp => 1); exec rdsadmin.rdsadmin_util.drop_logfile(grp => 3); exec rdsadmin.rdsadmin_util.drop_logfile(grp => 4); /* Query V$LOG to see the logs. */ /* Now there are 5 logs. */ select GROUP#, BYTES, STATUS from V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 2 134217728 CURRENT 5 536870912 UNUSED 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED /* Switch logs so that group 2 is no longer current. */ exec rdsadmin.rdsadmin_util.switch_logfile; /* Query V$LOG to see the logs. */ /* Now one of the new logs is current. */ SQL>SELECT GROUP#, BYTES, STATUS FROM V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 2 134217728 ACTIVE 5 536870912 CURRENT 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED /* If the status of log 2 is still "ACTIVE", issue a checkpoint to clear it to "INACTIVE". */ exec rdsadmin.rdsadmin_util.checkpoint; /* Query V$LOG to see the logs. */ /* Now the final original log is inactive. */ select GROUP#, BYTES, STATUS from V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 2 134217728 INACTIVE 5 536870912 CURRENT 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED # Drop the final inactive log. exec rdsadmin.rdsadmin_util.drop_logfile(grp => 2); /* Query V$LOG to see the logs. */ /* Now there are four 512 MB logs. */ SELECT GROUP#, BYTES, STATUS FROM V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 5 536870912 CURRENT 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED
Beibehaltung von archivierten Redo-Log-Dateien
Sie können archivierte Redo-Log-Dateien lokal in Ihrer DB-Instance für die Verwendung
mit Produkten wie zum Beispiel Oracle LogMiner (DBMS_LOGMNR) aufbewahren. Nachdem
Sie Ihre Redo-Log-Dateien gespeichert haben, können Sie LogMiner verwenden, um diese
Protokolle zu analysieren. Weitere Informationen finden Sie unter Using LogMiner to Analyze Redo Log Files
Um archivierte Wiederherstellungsprotokolle zu erhalten, verwenden Sie die Amazon
RDS--Prozedur rdsadmin.rdsadmin_util.set_configuration
. Die Prozedur set_configuration
hat die folgenden Parameter.
Parametername | Datentyp | Standard | Erforderlich | Beschreibung |
---|---|---|---|---|
|
varchar |
— |
Ja |
Der Name für die zu aktualisierende Konfiguration |
|
varchar |
— |
Ja |
Der Wert für die Konfiguration |
Im folgenden Beispiel werden 24 Stunden an Redo-Logs aufbewahrt.
begin rdsadmin.rdsadmin_util.set_configuration( name => 'archivelog retention hours', value => '24'); end; / commit;
Das Commit muss durchgeführt werden, damit die Änderungen wirksam werden.
Um zu sehen, wie lange archivierte Wiederherstellungsprotokolle für Ihre DB-Instance
aufbewahrt werden, verwenden Sie die Amazon RDS-Prozedur rdsadmin.rdsadmin_util.show_configuration
.
Im folgenden Beispiel wird die Protokoll-Aufbewahrungszeit angezeigt.
set serveroutput on exec rdsadmin.rdsadmin_util.show_configuration;
Der Ausgang zeigt die aktuelle Einstellung für archivelog retention hours
. Die folgende Ausgabe zeigt, dass archivierte Wiederherstellungsprotokolle 48 Stunden
lang aufbewahrt werden.
NAME:archivelog retention hours
VALUE:48
DESCRIPTION:ArchiveLog expiration specifies the duration in hours before archive/redo log files are automatically deleted.
Da die archivierten Redo-Log-Dateien in Ihrer DB-Instance aufbewahrt werden, stellen Sie sicher, dass Ihre DB-Instance genügend zugewiesenen Speicherplatz für die aufbewahrten Protokolle bietet. Um festzustellen, wie viel Speicherplatz Ihre DB-Instance in den letzten X Stunden belegt hat, können Sie die folgende Abfrage ausführen. Dabei ersetzen Sie X durch die Anzahl von Stunden.
select sum(BLOCKS * BLOCK_SIZE) bytes from V$ARCHIVED_LOG where FIRST_TIME >= SYSDATE-(
X
/24) and DEST_ID=1;
Archivierte Redo-Log-Dateien werden nur erstellt, wenn ein Aufbewahrungszeitraum für Backups in Ihrer DB-Instance größer als Null ist. Standardmäßig ist der Aufbewahrungszeitraum für Backups größer als Null. Daher werden Redo-Log-Dateien so lange für Ihre DB-Instance erstellt, bis Sie selbst den Wert auf Null setzen.
Nachdem die archivierten Redo-Log-Dateien aus der DB-Instance entfernt wurden, ist ein erneutes Herunterladen in die DB-Instance nicht möglich. Amazon RDS bewahrt die archivierten Redo-Log-Dateien außerhalb Ihrer DB-Instance, damit sich die DB-Instance eines bestimmten Zeitpunkts wiederherstellen lässt. Amazon RDS bewahrt die archivierten Redo-Log-Dateien außerhalb Ihrer DB-Instance, basierend auf dem für Ihre DB-Instance konfigurierten Aufbewahrungszeitraum für Backups. Wie man den Aufbewahrungszeitraum für Backups für eine DB-Instance ändern kann können Sie unter Ändern einer Amazon RDS-DB-Instance nachlesen.
In einigen Fällen kann es vorkommen, das beim Verwenden von JDBC unter Linux zum Herunterladen von Redo-Logs lange Latenzzeiten auftreten und Verbindungen zurückgesetzt werden. Das Problem wird in solchen Fällen vielleicht durch die Standardeinstellung des Zufallszahlengenerators in Ihrem Java-Client verursacht. Wir empfehlen, dass Sie für die JDBC-Treiber die Verwendung eines blockierungsfreien Zufallszahlengenerators festlegen.
Zugreifen auf Transaktionsprotokolle
Der Zugriff auf Transaktionsprotokolle wird für Oracle Version 11.2.0.4.v11 und höher, Oracle Version 12.1.0.2.v7 und höher, alle 12.2.0.1-Versionen, alle 18.0.0.0-Versionen und alle 19.0.0-Versionen unterstützt.
Sie können auf Ihre Online- oder archivierten Redo-Log-Dateien für eine Auswertung mit externen Tools wie GoldenGate, Attunity, Informatica und anderen zugreifen. Wenn Sie auf Online- oder archivierte Redo-Log-Dateien zugreifen möchten, müssen Sie zuerst Verzeichnisobjekte erstellen, die einen schreibgeschützten Zugriff auf den physikalischen Dateipfad erlauben.
Der folgende Code erstellt Verzeichnisse, die schreibgeschützten Zugriff auf Ihre Online- und archivierte Redo-Log-Dateien bieten:
Dieser Code widerruft das Sonderrecht DROP ANY DIRECTORY
.
exec rdsadmin.rdsadmin_master_util.create_archivelog_dir; exec rdsadmin.rdsadmin_master_util.create_onlinelog_dir;
Nachdem Sie Verzeichnisobjekte für Ihre Online- oder archivierten Redo-Log-Dateien erstellt haben, können Sie die Dateien mithilfe von PL/SQL lesen. Weitere Informationen über das Lesen von Dateien in Verzeichnisobjekten finden Sie unter Auflisten von Dateien in einem DB-Instance-Verzeichnis und Lesen von Dateien in einem DB-Instance-Verzeichnis.
Der folgende Code verwirft die Verzeichnisse für Ihre Online- und archivierten Redo-Log-Dateien.
exec rdsadmin.rdsadmin_master_util.drop_archivelog_dir; exec rdsadmin.rdsadmin_master_util.drop_onlinelog_dir;
Der folgende Code erteilt oder widerruft die Berechtigung DROP ANY DIRECTORY
.
exec rdsadmin.rdsadmin_master_util.revoke_drop_any_directory; exec rdsadmin.rdsadmin_master_util.grant_drop_any_directory;