Oracle • SAP • Archive Log

Zusätzliche Oracle Archive Log Destination

Es gibt Tätigkeiten, bei denen sehr viel mehr Archive Logs geschrieben werden, als beim herkömmlichen Tagesbetrieb.

Beispiele im SAP-Kontext:

  • Erstellen Shadow Instanz
  • Update / Upgrade
  • SGEN
  • Löschen von Daten nach Archivierungsläufen
  • Mandantenkopien
  • etc.

Dabei kann es vorkommen, dass das Archivverzeichnis nicht groß genug ausgelegt ist, für den normalen Betrieb aber vollkommen ausreicht.

Eine Option könnte sein, das Filesystem zu vergrößern. Aber leider lassen sich Filesysteme nicht immer verkleinern. Das würde bedeuten, dass im Anschluss der archivelogintensiven Tätigkeit ein viel zu großes Filesystem vorhanden ist, welches nicht ausgenutzt wird.

Eine Lösung könnte sein ein neues Filesystem anzulegen, welches wieder gelöscht wird, oder ein schon vorhandenes temporär zu nutzen und dieses der Oracle Datenbank zur Verfügung zu stellen.

Lösung:

Wenn LOG_ARCHIVE_DEST_1 nicht verfügbar (z.B. voll), dann soll unter LOG_ARCHIVE_DEST_2 weitergeschrieben werden.

Zusätzliche Archive Log Destination anlegen

> mkdir X:\oracle\SID\oraarch 

col DEST_NAME format a20 
col STATUS format a10 
col ERROR format a20 
col DESTINATION format a50 
col RECOVERY_MODE format a13 
col DATABASE_MODE format a13 
set lines 200 
set pages 100

SQL> alter system set LOG_ARCHIVE_DEST_2 = 'LOCATION=X:\oracle\SID\oraarch\SIDarch'; 
SQL> alter system set LOG_ARCHIVE_DEST_1='LOCATION=F:\oracle\SID\oraarch\SIDarch MAX_FAILURE=1 NOREOPEN ALTERNATE=LOG_ARCHIVE_DEST_2'; 
SQL> alter system set LOG_ARCHIVE_DEST_STATE_2 = ALTERNATE;

Überprüfung:

SQL> SELECT dest_name, status, destination FROM v$archive_dest where STATUS != 'INACTIVE';

DEST_NAME            STATUS     DESTINATION 
-------------------- ---------- ----------------------------------------- 
LOG_ARCHIVE_DEST_1   VALID      F:\oracle\SID\oraarch\SIDarch 
LOG_ARCHIVE_DEST_2   ALTERNATE  X:\oracle\SID\oraarch\SIDarch 

SQL> select dest_name,database_mode,recovery_mode,error from v$archive_dest_status where STATUS != 'INACTIVE';

DEST_NAME            DATABASE_MODE RECOVERY_MODE ERROR
-------------------- ------------- ------------- --------------------
LOG_ARCHIVE_DEST_1   OPEN          IDLE
LOG_ARCHIVE_DEST_2   OPEN          IDLE

Nach dem Update wird die Einstellung wieder rückgängig gemacht.

Zusätzliche Oracle Archive Log Destination löschen

col DEST_NAME format a20
col STATUS format a10
col ERROR format a20
col DESTINATION format a50
col RECOVERY_MODE format a13
col DATABASE_MODE format a13
set lines 200
set pages 100

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2= ENABLE;

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='';

Überprüfung

SQL> SELECT dest_name, status, destination FROM v$archive_dest where STATUS != 'INACTIVE';

DEST_NAME            STATUS     DESTINATION
-------------------- ---------- -----------------------------
LOG_ARCHIVE_DEST_1   VALID      F:\oracle\SID\oraarch\SIDarch

SQL> select dest_name,database_mode,recovery_mode,error from v$archive_dest_status where status != 'INACTIVE';

DEST_NAME            DATABASE_MODE RECOVERY_MODE ERROR
-------------------- ------------- ------------- ----------------
LOG_ARCHIVE_DEST_1   OPEN          IDLE