Oracle-Archivprotokollmodus, Archivpfad und Speicherplatzgröße ändern

Ist es erforderlich, die Protokollarchivierung zu aktivieren, wenn ORACLE eine Datenbank erstellt? Oracle-Datenbanken können in zwei Modi betrieben werden: Archivmodus (ARCHIVELOG) und Nicht-Archivmodus (NOARCHIVELOG). Der Archivmodus verbessert die Wiederherstellbarkeit der Oracle-Datenbank. Alle Produktionsdatenbanken sollten in diesem Modus laufen, wobei der Archivmodus mit einer entsprechenden Sicherungsstrategie kombiniert werden muss. Nur der Archivmodus ohne eine entsprechende Sicherungsstrategie führt lediglich zu Problemen …

Kostenloser Download
für VM, Betriebssystem, DB, Datei, NAS usw.
maximilian

Updated by Maximilian on 2026/06/25

Ist es erforderlich, die Protokollarchivierung zu aktivieren, wenn ORACLE eine Datenbank erstellt?

Die Oracle-Datenbank kann in zwei Modi betrieben werden: Archivmodus (ARCHIVELOG) und Nicht-Archivmodus (NOARCHIVELOG).

Der Archivmodus kann die Wiederherstellbarkeit der Oracle-Datenbank verbessern.

Alle Produktionsdatenbanken sollten in diesem Modus betrieben werden, und der Archivmodus sollte mit der entsprechenden Sicherungsstrategie kombiniert werden. Allein der Archivmodus ohne eine entsprechende Sicherungsstrategie führt lediglich zu Problemen.

Standardmäßig wird die Oracle-Datenbank im Modus „Non-Logging“ für Protokolldateien erstellt.

Im Nicht-Archiv-Log-Modus wird das Redo-Log beim Wechsel des Logs direkt überschrieben. Wenn zu diesem Zeitpunkt die Datendatei aufgrund eines Medienfehlers beschädigt wird, gehen die überschriebenen Daten bei der Wiederherstellung der Datenbank verloren.

Im Archivprotokollmodus kann die Datenbank alle Archivprotokolldateien nutzen, die seit der aktuellsten Datenbanksicherung erstellt wurden, um einen Datenverlust zu vermeiden; die meisten Produktionsdatenbanken laufen im Archivprotokollmodus.

Nachdem die Oracle-Datenbank den Archivprotokollmodus aktiviert hat, wird automatisch ein neuer Prozess gestartet: der Archivierungsprozess ARCn. Standardmäßig werden vier Prozesse gestartet. In praktischen Anwendungen können bis zu 30 Archivierungsprozesse gestartet werden.

[oracle@dbserver1 archivelog]$ ps -ef | grep -i ora_oracle   26567     1  0 08:48 ?        00:00:00 ora_arc0_orcloracle   26573     1  0 08:48 ?        00:00:00 ora_arc1_orcloracle   26575     1  0 08:48 ?        00:00:00 ora_arc2_orcloracle   26577     1  0 08:48 ?        00:00:00 ora_arc3_orcl

Ein Archivprotokoll ist eine inaktive Sicherungskopie eines Redo-Logs. Mithilfe von Archivprotokollen können sämtliche Redo-Historieneinträge dauerhaft gespeichert werden. Wenn sich die Datenbank im ARCHIVELOG-Modus befindet und ein Logwechsel stattfindet,

Der Hintergrundprozess ARCH speichert den Inhalt des Redo-Logs in das Archivlog. Bei einem Medienfehler der Datenbank können die Sicherungskopie der Datendateien, das Archivlog und das Redo-Log zur vollständigen Wiederherstellung der Datenbank verwendet werden.

#########################

Wechsel vom Nicht-Archiv-Modus in den Archivmodus

Vor der Änderung:


Bestätigen Sie die Umgebung. Prüfen Sie die Datenbank, ob der Archivmodus aktiviert ist: --- Die unten angezeigten Informationen gelten unter der Voraussetzung, dass Sie beim Installieren der Datenbank weder den Flashback-Modus noch den Archivmodus aktiviert haben.

Oracle-Archiv bearbeiten – 1
SQL> archive log list
Datenbank-Log-Modus:             Kein Archivmodus
Automatisches Archivieren:       Deaktiviert
Archiv-Ziel:                     /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Älteste Online-Log-Sequenz:      4
Aktuelle Log-Sequenz:            6

SQL> SELECT name, log_mode FROM v$database;
NAME     LOG_MODE
–------- ------------
ORCL     NOARCHIVELOG

SQL>  show parameter db_recovery
NAME                     TYP     WERT
–---------------------------------- ----------- ------------------------------
db_recovery_file_dest             Zeichenkette
db_recovery_file_dest_size         große Ganzzahl 0

Oracle-Archiv bearbeiten – 1

#########  Der folgende Test überprüft den Vorgang zum Wechseln der Datenbank vom Nicht-Archivmodus in den Archivmodus, wenn Flashback nicht aktiviert ist ############

Oracle-Archiv bearbeiten – 1
SQL> shutdown immediate
Datenbank geschlossen.

SQL> startup mount
ORACLE-Instanz gestartet.

SQL> Datenbank in Archivmodus versetzen;
Datenbank geändert.

SQL> Datenbank öffnen;
Datenbank geändert.

SQL> archive log list
Datenbank-Log-Modus           Archivmodus
Automatische Archivierung           Aktiviert
Archivziel           /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Älteste Online-Log-Sequenz     4
Nächste zu archivierende Log-Sequenz   6
Aktuelle Log-Sequenz           6

SQL> SELECT name FROM v$archived_log;
Keine Zeilen ausgewählt

SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;
System geändert.

SQL> SELECT name FROM v$archived_log;
NAME
–------------------------------------------------------------------------------
/home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch1_6_947091054.dbf

SQL>  show parameter recover;
NAME                     TYPE     VALUE
–---------------------------------- ----------- ------------------------------
db_recovery_file_dest             string
db_recovery_file_dest_size         große Ganzzahl 0
db_unrecoverable_scn_tracking     boolesch     TRUE
recovery_parallelism             Ganzzahl     0

SQL> SELECT * FROM V$FLASH_RECOVERY_AREA_USAGE;
Keine Zeilen ausgewählt

Oracle-Archiv bearbeiten – 1

Wenn log_archive_log auf den Standardwert gesetzt ist, wird das Archivverzeichnis zu ?/dbs/arch.

Oracle-Archiv bearbeiten – 1
SQL> alter system set log_archive_dest_1='';System geändert.

SQL> archive log list
Datenbank-Log-Modus           Archivmodus
Automatisches Archivieren       Aktiviert
Archiv-Ziel                 ?/dbs/arch
Älteste Online-Log-Sequenz     5
Nächste zu archivierende Log-Sequenz   7
Aktuelle Log-Sequenz           7

SQL> shutdown immediate
Datenbank geschlossen.
Datenbank getrennt.
ORACLE-Instanz heruntergefahren.

SQL> startup mount
ORACLE-Instanz gestartet.

Oracle-Archiv bearbeiten – 1

Nach dem Neustart der Datenbank im Mount-Modus wechselt das Archivverzeichnis wieder zum ursprünglichen Standardverzeichnis.

Oracle-Archiv bearbeiten – 1
SQL> archive log list
Datenbank-Log-Modus:             Archivmodus
Automatisches Archivieren:        Aktiviert
Archiv-Ziel:                      /home/oracle/u01/app/oracle/product/11.2.2.0/dbhome_1/dbs/archOldest Online-Log-Sequenz     5  
Nächste Log-Sequenz für die Archivierung   7  
Aktuelle Log-Sequenz           7  
--- Maximale Anzahl gleichzeitig geöffneter Prozesse für die Archivierung festlegen  
SQL> alter system set log_archive_max_processes = 5;  
System geändert.--- Ändern Sie das Format der Protokollspeicherung SQL> ALTER SYSTEM SET log_archive_format = "archive_%t_%s_%r.log" SCOPE=SPFILE; System geändert.

SQL> startup
ORACLE-Instanz wurde gestartet.

SQL> shutdown immediate
Datenbank wurde getrennt.

Gesamte System-Global-Area  939495424 Bytes
Feste Größe            2258840 Bytes
Variable Größe          637536360 Bytes
Datenbankpuffer      293601280 Bytes
Redo-Puffer            6098944 Bytes
Datenbank eingebunden.
Datenbank geöffnet.

SQL> archive log list
Protokollmodus der Datenbank           Archivmodus
Automatische Archivierung           Aktiviert
Archivierungsziel           /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Älteste Online-Protokollsequenz     5
Nächste zu archivierende Protokollsequenz   7
Aktuelle Protokollsequenz           7

SQL>  show parameter db_recovery
NAME                     TYP     WERT
–---------------------------------- ----------- ------------------------------
db_recovery_file_dest             Zeichenkette
db_recovery_file_dest_size         große Ganzzahl 0

SQL> SELECT name FROM v$archived_log;
NAME
–------------------------------------------------------------------------------
/home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch1_6_947091054.dbf

SQL> alter system switch logfile;
System geändert.

SQL> SELECT recid, name, first_time FROM v$archived_log;

NAME
–------------------------------------------------------------------------------
/home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch1_6_947091054.dbf
/home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/archarchive_1_7_94709105
4.log

SQL> SELECT NAME, SPACE_LIMIT/1024/1024/1024, SPACE_USED/1024/1024/1024, NUMBER_OF_FILES FROM V$RECOVERY_FILE_DEST;

Keine Zeilen ausgewählt

SQL> SELECT flashback_on FROM v$database;
FLASHBACK_ON
–----------------
NEIN

Oracle-Archiv ändern – 1

#############################

Datenbank-Flashback aktivieren. Legen Sie den Pfad und die Größe des Flash-Recovery-Bereichs zum Testen fest. Deaktivieren Sie zunächst den Archivmodus und aktivieren Sie danach den Standardpfad; nach der Archivierung ist dies der Flashback-Pfad der Datenbank.

Überprüfen Sie die Datenbank, ob der Flashback-Modus aktiviert werden soll.


Hinweis: Wenn Sie die Rückblende-Funktion aktivieren, müssen Sie sich im Archivmodus befinden; andernfalls ergibt die Rückblende keinen Sinn! ! ! !

Jedoch müssen Sie, wenn Sie das Archiv öffnen, die Rückblende-Funktion nicht unbedingt aktivieren!!!

Falls die Rückblende aktiviert ist und anschließend der Archivmodus eingeschaltet wird, wird das Archivprotokoll standardmäßig im Rückblendebereich der Datenbank gespeichert – sofern kein neuer Pfad für das Archivprotokoll angegeben wurde – und als „USE_DB_RECOVERY_FILE_DEST“ angezeigt, was tatsächlich dem Pfad der Rückblende entspricht.

Zusätzlich können der Standort und die Größe des Rückblendenbereichs sowie der Archivpfad manuell festgelegt werden.

Oracle-Archiv bearbeiten – 1
SQL> select flashback_on from v$database;
FLASHBACK_ON
------------------
NO
SQL> shutdown immediate
SQL> startup mount

SQL> alter database flashback on;   Bei der Installation der Datenbank hatte ich nicht die Option „Flashback aktivieren“ gewählt, weshalb folgender Fehler auftrat

Datenbank-Wiederherstellungsfunktion aktivieren
*
FEHLER in Zeile 1:
ORA-38706: Die Protokollierung der FLASHBACK-DATENBANK kann nicht aktiviert werden.
ORA-38709: Der Wiederherstellungsbereich ist nicht aktiviert.

Oracle-Archiv ändern – 1


Richten Sie den Flash-Recovery-Bereich ein:

Festlegen der Größe des Flash-Recovery-Bereichs: Die Standardgröße des Oracle-Flash-Recovery-Bereichs beträgt 2 GB

SQL>  alter system set db_recovery_file_dest_size=5g scope=spfile;

Zeigen Sie die Speicherplatzgröße des angegebenen Pfads im Flashback-Bereich an:

SQL> show parameter db_recovery_file_dest_size

NAME                     TYPE      WERT
–---------------------------------- ----------- ------------------------------
db_recovery_file_dest_size         große Ganzzahl 30G

Legen Sie den Speicherort des Flashback-Bereichs fest:

SQL> ALTER SYSTEM SET db_recovery_file_dest='/home/oracle/u01/app/oracle/account_flashback_area' SCOPE=SPFILE;

Legen Sie das Flashback-Ziel auf 5 Tage fest (in Minuten; der Oracle-Standardwert beträgt 1440 Minuten, also einen Tag).

SQL> ALTER SYSTEM SET db_flashback_retention_target=7200 SCOPE=SPFILE;

Erstellen Sie die für den Flashback erforderlichen Verzeichnisse auf Betriebssystemebene:

Oracle-Archiv bearbeiten – 1
[oracle@dbserver oracle]$ mkdir -p /home/oracle/u01/app/oracle/account_flashback_area

SQL> ALTER DATABASE FLASHBACK ON;
Datenbank geändert.
SQL> ALTER DATABASE OPEN;
Datenbank geändert.

SQL> SELECT flashback_on FROM v$database;
FLASHBACK_ON
–----------------
JA

SQL> archive log list
Datenbank-Log-Modus           Archivmodus
Automatische Archivierung           Aktiviert
Archivziel           USE_DB_RECOVERY_FILE_DEST
Älteste Online-Log-Sequenz     6
Nächste zu archivierende Log-Sequenz   8
Aktuelle Log-Sequenz           8

Oracle-Archiv bearbeiten – 1

Fazit: Wenn der Flashback-Modus aktiviert ist und der Archivmodus erneut eingeschaltet wird, ohne dass ein neuer Pfad für die Archivlogs angegeben wird, werden die Archivlogs standardmäßig im Flashback-Bereich der Datenbank gespeichert und als „USE_DB_RECOVERY_FILE_DEST“ angezeigt – dies entspricht tatsächlich dem Pfad des Flashbacks.


Derzeit testen wir, den Flashback zu deaktivieren und die Datenbank neu zu starten, um den Pfad der Archivprotokolle anzuzeigen.

Oracle-Archiv bearbeiten – 1
SQL> SELECT open_mode FROM v$database;
OPEN_MODE
--------------------
READ WRITE

SQL> SHUTDOWN IMMEDIATE
Datenbank geschlossen.

SQL> startup mount
ORACLE-Instanz gestartet.

Oracle-Archiv ändern – 1

Archivmodus schließen – erinnert uns daran, dass die Datenbank im Archivmodus ausgeführt wird. Wenn der Flashback aktiviert ist, kann das Archiv nicht direkt geschlossen werden.

SQL> ALTER DATABASE NOARCHIVELOG;ALTER DATABASE NOARCHIVELOG*FEHLER in Zeile 1:ORA-38774: Medienwiederherstellung kann nicht deaktiviert werden – Flashback-Datenbank ist aktiviert

Anschließend deaktivieren wir zunächst den Flashback.

Oracle-Archiv bearbeiten – 1
SQL> alter database flashback off;
Datenbank geändert.

SQL> alter database noarchivelog;
Datenbank geändert.

SQL> Datenbank öffnen;
Datenbank geändert.

SQL> archive log list
Protokollmodus der Datenbank           Kein Archivmodus
Automatische Archivierung           Deaktiviert
Archivierungsziel           USE_DB_RECOVERY_FILE_DEST
Älteste Online-Protokollsequenz     6
Aktuelle Protokollsequenz           8

SQL> SELECT flashback_on FROM v$database;
FLASHBACK_ON
–----------------
NEIN

Oracle-Archiv bearbeiten – 1

Neustart durchführen, Archivansicht öffnen und Archivpfad anzeigen

Oracle-Archiv bearbeiten – 1
SQL> shutdown immediate
Datenbank geschlossen.
SQL> startup mount
ORACLE-Instanz gestartet.
SQL> alter database archivelog;
Datenbank geändert.
SQL> alter database open;
Datenbank geändert.

SQL> archive log list
Betriebsmodus der Datenbank           Archivmodus
Automatisches Archivieren           Aktiviert
Archivziel                             USE_DB_RECOVERY_FILE_DEST
Älteste Online-Log-Sequenz         6
Nächste zu archivierende Log-Sequenz   8
Aktuelle Log-Sequenz                 8

SQL> SELECT flashback_on, open_mode FROM v$database;
FLASHBACK_ON       OPEN_MODE
–---------------- --------------------
NEIN           READ WRITE

Oracle-Archiv ändern – 1


Fazit: Wenn Sie das Archiv öffnen, müssen Sie die Rückblende-Funktion nicht unbedingt aktivieren – Sie müssen die Rückblende nicht aktivieren!!!

Test 3: Standard-Archivpfad ändern


Oracle-Archiv bearbeiten – 1
SQL> shutdown immediate
SQL> startup mount
ORACLE-Instanz gestartet.

SQL> archive log list
Datenbank-Logmodus           Archivmodus
Automatisches Archivieren     Aktiviert
Archiv-Ziel                 USE_DB_RECOVERY_FILE_DEST
Älteste Online-Log-Sequenz     6
Nächste zu archivierende Log-Sequenz   8
Aktuelle Log-Sequenz             8

SQL> alter system set log_archive_dest_1=‘location=/home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch’;
System geändert.

SQL> archive log list
Protokollmodus der Datenbank           Archivmodus
Automatische Archivierung           Aktiviert
Archivziel           /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Älteste Online-Protokollsequenz     6
Nächste zu archivierende Protokollsequenz   8
Aktuelle Protokollsequenz           8

SQL> SELECT flashback_on, open_mode FROM v$database;

FLASHBACK_ON       ÖFFNUNGS-MODUS
–---------------- --------------------
NEIN           IM MOUNT-ZUSTAND

Test 4: Wir schließen das Archiv, aktivieren zunächst den Flashback, dann das Archiv, starten die Datenbank, überprüfen den Archivpfad und prüfen, ob der benutzerdefinierte Pfad verwendet wird; anschließend ändern wir ihn in den standardmäßigen Flashback-Pfad.

 SQL> ALTER DATABASE NOARCHIVELOG; Datenbank geändert.

SQL> archive log list
Datenbank-Log-Modus           Kein Archivmodus
Automatische Archivierung           Deaktiviert
Archivziel           /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Älteste Online-Log-Sequenz     6
Aktuelle Log-Sequenz           8

SQL> ALTER DATABASE FLASHBACK ON;   –– Flashback kann im Nicht-Archivmodus nicht aktiviert werden

Datenbank-Wiederherstellungsfunktion aktivieren
*
FEHLER in Zeile 1:
ORA-38706: Die Protokollierung der FLASHBACK-DATABASE-Funktion kann nicht aktiviert werden.
ORA-38707: Die Medienwiederherstellung ist nicht aktiviert.

Fazit: Flashback kann im Nicht-Archivmodus nicht aktiviert werden

################################################

SQL> ALTER DATABASE ARCHIVELOG;
Datenbank geändert.

SQL> ARCHIVE LOG LIST
Modus des Datenbank-Logs           Archivmodus
Automatisches Archivieren           Aktiviert
Archiv-Ziel                       /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Älteste Online-Log-Sequenz         6
Nächste zu archivierende Log-Sequenz   8
Aktuelle Log-Sequenz               8
SQL>
SQL> ALTER DATABASE FLASHBACK ON;
Datenbank geändert.

SQL> archive log list
Datenbank-Log-Modus           Archivmodus
Automatisches Archivieren           Aktiviert
Archiv-Ziel           /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Älteste Online-Log-Sequenz     6
Nächste zu archivierende Log-Sequenz   8
Aktuelle Log-Sequenz           8

Fazit: Wenn für das Archivprotokoll ein Speicherpfad angegeben ist, bleibt bei aktivierter Flashback-Funktion der Speicherpfad des Archivprotokolls der ursprünglich vom Benutzer festgelegte Pfad.
#############################
Fortsetzung:
Ändern Sie das Archivprotokoll in den standardmäßigen Speicherpfad der Datenbank. Wiederholen Sie den obigen Vorgang, um zu bestätigen, ob der Pfad des Archivprotokolls mit dem Pfad des Flashback-Bereichs übereinstimmt.

SQL> shutdown immediate
Datenbank geschlossen.
SQL> startup mount
ORACLE-Instanz gestartet.

SQL> archive log list
Archivmodus der Datenbank           Archivmodus
Automatisches Archivieren           Aktiviert
Archivziel                             /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Älteste Online-Log-Sequenz         6
Nächste zu archivierende Log-Sequenz   8
Aktuelle Log-Sequenz                 8

SQL> alter system set log_archive_dest_1=’’;  – Ändern Sie das Archivprotokoll in den standardmäßigen Speicherpfad der Datenbank

System geändert.

SQL> archive log list
Protokollmodus der Datenbank           Archivmodus
Automatische Archivierung           Aktiviert
Archivierungsziel           ?/dbs/arch
Älteste Online-Log-Sequenz     6
Nächste zu archivierende Log-Sequenz   8
Aktuelle Log-Sequenz           8

SQL> Datenbank öffnen;
Datenbank geändert.

SQL> archive log list
Datenbank-Log-Modus           Archivmodus
Automatisches Archivieren           Aktiviert
Archiv-Zielverzeichnis           ?/dbs/arch
Älteste Online-Log-Sequenz     6
Nächste zu archivierende Log-Sequenz   8
Aktuelle Log-Sequenz           8

SQL> SELECT flashback_on, open_mode FROM v$database;
FLASHBACK_ON       OPEN_MODE
–---------------- --------------------
JA           LESEN/SCHREIBEN

SQL> shutdown immediate
Datenbank geschlossen.

SQL> startup
ORACLE-Instanz gestartet.

SQL> archive log list
Protokollmodus der Datenbank           Archivmodus
Automatische Archivierung           Aktiviert
Archivierungsziel           USE_DB_RECOVERY_FILE_DEST
Älteste Online-Protokollsequenz     6
Nächste zu archivierende Protokollsequenz   8
Aktuelle Protokollsequenz           8

Fazit: Das Archivprotokoll ist der standardmäßige Speicherort für die Datenbank. Wenn die Rückspul-Funktion aktiviert ist, muss in den Archivmodus gewechselt werden. Der Pfad des Archivprotokolls ist standardmäßig identisch mit dem Pfad des Rückspulbereichs.


Teilen auf:

Categories: Database Tips