Geläufige DBA-Protokollaufgaben für Oracle DB-Instances - Amazon Relational Database Service

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.

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 in der Oracle-Dokumentation.

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

p_enable

Boolean

true

Nein

Setzen Sie diesen Wert auf true, um die Datenbank in den Modus für erzwungene Protokollierung zu setzen, oder auf false, um Datenbanken aus diesem Modus zu entfernen.

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 der Oracle-Dokumentation.

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

p_action

varchar2

Ja

'ADD', um ergänzende Protokollierung hinzuzufügen, 'DROP' um ergänzende Protokollierung zu verwerfen.

p_type

varchar2

Null

Nein

Der Typ der ergänzenden Protokollierung. Gültige Werte sind 'ALL', 'FOREIGN KEY', 'PRIMARY KEY', 'UNIQUE' oder PROCEDURAL.

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.

Anmerkung

Die Parameter schließen sich gegenseitig aus.

Parametername Datentyp Standard Erforderlich Beschreibung

bytes

positiv

Null

Nein

Die Größe der Protokolldatei in Bytes

p_size

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

grp

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 in der Oracle-Dokumentation.

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

name

varchar

Ja

Der Name für die zu aktualisierende Konfiguration

value

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;
Anmerkung

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.

Anmerkung

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:

Wichtig

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;