Logfiles vergrößern wegen Checkpoint not complete

Für den Fall, dass man die Logfiles unter Oracle vergrößern möchte sollte man so vorgehen.
In diesem Beispiel werden sechs neue Logfiles mit jeweils 800 MB größe angelegt und die alten Logfiles gelöscht.
Einfaches vergrößern der Logfiles ist (soweit ich weiß) nicht möglich.
Natürlich müssen die Verzeichnisse, Gruppen und Namen an die jeweilige Systemumgebung angepasst werden!

  1. Zur Sicherheit vorab noch eine DB-Sicherung durchführen
  2. Neue Logfiles in DB anlegen
    ALTER DATABASE ADD LOGFILE GROUP 17 ('/oracle/origlogA/log_g17_m1.dbf', '/oracle/mirrlogA/log_g17_m2.dbf') SIZE 800M;
    ALTER DATABASE ADD LOGFILE GROUP 18 ('/oracle/origlogB/log_g18_m1.dbf', '/oracle/mirrlogB/log_g18_m2.dbf') SIZE 800M;
    ALTER DATABASE ADD LOGFILE GROUP 19 ('/oracle/origlogA/log_g19_m1.dbf', '/oracle/mirrlogA/log_g19_m2.dbf') SIZE 800M;
    ALTER DATABASE ADD LOGFILE GROUP 20 ('/oracle/origlogB/log_g20_m1.dbf', '/oracle/mirrlogB/log_g20_m2.dbf') SIZE 800M;
    ALTER DATABASE ADD LOGFILE GROUP 21 ('/oracle/origlogA/log_g21_m1.dbf', '/oracle/mirrlogA/log_g21_m2.dbf') SIZE 800M;
    ALTER DATABASE ADD LOGFILE GROUP 22 ('/oracle/origlogB/log_g22_m1.dbf', '/oracle/mirrlogB/log_g22_m2.dbf') SIZE 800M;
  3. Logfiles in DB durchswitchen
    solange

    ALTER SYSTEM SWITCH LOGFILE;

    bis

    SELECT * FROM V$LOGFILE f, V$LOG v WHERE f.group#=v.group#

    der Status „CURRENT“ auf den neuen Member /oracle/origlogA/log_g17_m1.dbf zeigt.

  4. alte Logfiles in DB löschen
    Dann können die alten Gruppen gelöscht werden:

    ALTER DATABASE DROP LOGFILE GROUP 1; 
    ALTER DATABASE DROP LOGFILE GROUP 2; 
    ALTER DATABASE DROP LOGFILE GROUP 3; 
    ALTER DATABASE DROP LOGFILE GROUP 4; 
    ALTER DATABASE DROP LOGFILE GROUP 5; 
    ALTER DATABASE DROP LOGFILE GROUP 6;
  5. Logfiles in DB durchswitchen
    Mit

    ALTER SYSTEM SWITCH LOGFILE;

    alle Logfile-Gruppen durchswitchen um zu prüfen, ob alles in Ordnung ist.

  6. im OS Prüfen, ob ein altes Logfile noch geöffnet ist
    lsof | grep log_g.*dbf
  7. im OS die alten Logfiles löschen
    rm /oracle/origlogA/log_g11m1.dbf /oracle/origlogB/log_g12m1.dbf /oracle/origlogA/log_g13m1.dbf /oracle/origlogB/log_g14m1.dbf /oracle/origlogA/log_g15m1.dbf /oracle/origlogB/log_g16m1.dbf

Hilfreiche SQL-Statements:

SELECT event, time_waited_micro FROM V$SYSTEM_EVENT WHERE event LIKE 'log file switch (checkpoint incomplete)';
SELECT instance_name, to_char(startup_time,'dd.mm.yyyy hh24:mi:ss') AS startup_time FROM v$instance;
SELECT * FROM V$LOGFILE;
SELECT * FROM V$LOG;
SELECT * FROM V$LOGFILE f, V$LOG v WHERE f.group#=v.group#;

Schreibe einen Kommentar

Deine Email-Adresse wird nicht veröffentlicht.