REDOログの管理

REDOログの概念

REDOログの内容

REDOエントリには、UNDOセグメントなど、データベースに対するすべての変更の再構築に使用できるデータが記録される。したがって、REDOログによってロールバック・データも保護される。

REDOログのステータス
  • カレント:LGWRが書込み中のREDOログ・ファイルを現行のREDOログ・ファイル
  • アクティブ:インスタンス・リカバリに必要なREDOログ・ファイル
  • 非アクティブ:インスタンス・リカバリには不要なREDOログ・ファイル
REDOログ・ファイル数を制限するパラメータ
  • CREATE DATABASE文のMAXLOGFILES:REDOログ・ファイルの最大グループ数を決定する。互換性レベルが10.2.0より前に設定されている場合、この上限値を上書きする唯一の方法は、データベースまたはその制御ファイルを再作成することである。換性レベルが10.2.0以降の場合は、MAXLOGFILES制限を超えることができ、制御ファイルを必要に応じて拡張できる。
  • CREATE DATABASE文のMAXLOGMEMBERS:グループに含まれるメンバーの最大値を決定する。この上限値を変更する唯一の方法は、MAXLOGFILESの場合と同様、データベースまたは制御ファイルを再作成することである。

REDOログの管理

REDOロググループの作成

ALTER DATABASE ADD LOGFILE {GROUP n}

PROD(SYS)>alter database add logfile group 4 ('/u01/app/oracle/oradata/prod/redo04_01.log','/u01/app/oracle/oradata/prod/redo04_02.log') size 10M;
 
データベースが変更されました。
 
-- GROUPオプションを指定しないと、GROUP番号が自動に発番される。
PROD(SYS)>alter database add logfile ('/u01/app/oracle/oradata/prod/redo05a.log','/u01/app/oracle/oradata/prod/redo05b.log') size 10M;
 
データベースが変更されました。
 
PROD(SYS)>select * from v$log;
 
    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARCHIVED  STATUS                                           FIRST_CHANGE# FIRST_TI
---------- ---------- ---------- ---------- ---------- --------- ------------------------------------------------ ------------- --------
         1          1         70   10485760          2 NO        CURRENT                                                 305213 09-05-11
         2          1         68   10485760          2 YES       INACTIVE                                                304494 09-05-11
         3          1         69   10485760          2 YES       INACTIVE                                                305188 09-05-11
         4          1          0   10485760          2 YES       UNUSED                                                       0
         5          1          0   10485760          2 YES       UNUSED                                                       0
 
PROD(SYS)>
REDOログ・メンバーの作成

ALTER DATABASE ADD LOGFILE MEMBER

PROD(SYS)>alter database add logfile member '/u01/app/oracle/oradata/prod/redo05c.log' to group 5;
 
データベースが変更されました。
 
PROD(SYS)>
--GROUP番号を指定しなくて、追加しようとするREDOグループのメンバーを指定してもよい
PROD(SYS)>alter database add logfile member '/u01/app/oracle/oradata/prod/redo04_03.log' to
('/u01/app/oracle/oradata/prod/redo04_01.log','/u01/app/oracle/oradata/prod/redo04_02.log');
 
データベースが変更されました。
 
PROD(SYS)>
PROD(SYS)>select * from v$logfile;
 
    GROUP# STATUS                TYPE                  MEMBER                                             IS_RECOVE
---------- --------------------- --------------------- -------------------------------------------------- ---------
         1                       ONLINE                /u01/app/oracle/oradata/prod/redo01a.log           NO
         1                       ONLINE                /u01/app/oracle/oradata/prod/redo01b.log           NO
         2                       ONLINE                /u01/app/oracle/oradata/prod/redo02a.log           NO
         2                       ONLINE                /u01/app/oracle/oradata/prod/redo02b.log           NO
         3                       ONLINE                /u01/app/oracle/oradata/prod/redo03a.log           NO
         3                       ONLINE                /u01/app/oracle/oradata/prod/redo03b.log           NO
         4                       ONLINE                /u01/app/oracle/oradata/prod/redo04_01.log         NO
         4                       ONLINE                /u01/app/oracle/oradata/prod/redo04_02.log         NO
         5                       ONLINE                /u01/app/oracle/oradata/prod/redo05a.log           NO
         5                       ONLINE                /u01/app/oracle/oradata/prod/redo05b.log           NO
         5 INVALID               ONLINE                /u01/app/oracle/oradata/prod/redo05c.log           NO
 
    GROUP# STATUS                TYPE                  MEMBER                                             IS_RECOVE
---------- --------------------- --------------------- -------------------------------------------------- ---------
         4 INVALID               ONLINE                /u01/app/oracle/oradata/prod/redo04_03.log         NO
 
12行が選択されました。
 
PROD(SYS)>
REDOログ・メンバーの再配置

手順:

  1. データベースのバックアップを取る
  2. データベースをシャットダウン
  3. OSコマンドでREDOログファイルを移動したり、名前を変更したりする。
  4. データベースをマウントにする
  5. ALTER DATABASE RENAME FILEを発行
  6. データベースをオープンにする。
-- DBをシャットダウン
PROD(SYS)>shutdown immediate
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
-- OSのmvコマンドで名前を変更
[prod oracle(PROD)] mv redo01a.log redo01_01.log
[prod oracle(PROD)] mv redo01b.log redo01_02.log
[prod oracle(PROD)] mv redo02a.log redo02_01.log
[prod oracle(PROD)] mv redo02b.log redo02_02.log
[prod oracle(PROD)] mv redo03b.log redo03_02.log
[prod oracle(PROD)] mv redo03a.log redo03_01.log
-- DBをマウントに
PROD(SYS)>startup mount
ORACLEインスタンスが起動しました。
 
Total System Global Area  205520896 bytes
Fixed Size                  1259960 bytes
Variable Size             150996552 bytes
Database Buffers           50331648 bytes
Redo Buffers                2932736 bytes
データベースがマウントされました。
PROD(SYS)>
-- ALTER DATABASE RENAME FILEを発行
PROD(SYS)>alter database rename file
  2  '/u01/app/oracle/oradata/prod/redo01a.log','/u01/app/oracle/oradata/prod/redo01b.log',
  3  '/u01/app/oracle/oradata/prod/redo02a.log','/u01/app/oracle/oradata/prod/redo02b.log',
  4  '/u01/app/oracle/oradata/prod/redo03a.log','/u01/app/oracle/oradata/prod/redo03b.log'
  5  to
  6  '/u01/app/oracle/oradata/prod/redo01_01.log','/u01/app/oracle/oradata/prod/redo01_02.log',
  7  '/u01/app/oracle/oradata/prod/redo02_01.log','/u01/app/oracle/oradata/prod/redo02_02.log',
  8  '/u01/app/oracle/oradata/prod/redo03_01.log','/u01/app/oracle/oradata/prod/redo03_02.log';
 
データベースが変更されました。
 
PROD(SYS)>select * from v$logfile;
 
    GROUP# STATUS                TYPE                  MEMBER                                             IS_RECOVE
---------- --------------------- --------------------- -------------------------------------------------- ---------
         1                       ONLINE                /u01/app/oracle/oradata/prod/redo01_01.log         NO
         1                       ONLINE                /u01/app/oracle/oradata/prod/redo01_02.log         NO
         2                       ONLINE                /u01/app/oracle/oradata/prod/redo02_01.log         NO
         2                       ONLINE                /u01/app/oracle/oradata/prod/redo02_02.log         NO
         3                       ONLINE                /u01/app/oracle/oradata/prod/redo03_01.log         NO
         3                       ONLINE                /u01/app/oracle/oradata/prod/redo03_02.log         NO
         4                       ONLINE                /u01/app/oracle/oradata/prod/redo04_01.log         NO
         4                       ONLINE                /u01/app/oracle/oradata/prod/redo04_02.log         NO
         5                       ONLINE                /u01/app/oracle/oradata/prod/redo05a.log           NO
         5                       ONLINE                /u01/app/oracle/oradata/prod/redo05b.log           NO
         5                       ONLINE                /u01/app/oracle/oradata/prod/redo05c.log           NO
 
    GROUP# STATUS                TYPE                  MEMBER                                             IS_RECOVE
---------- --------------------- --------------------- -------------------------------------------------- ---------
         4                       ONLINE                /u01/app/oracle/oradata/prod/redo04_03.log         NO
 
12行が選択されました。
 
PROD(SYS)>alter database open;
 
データベースが変更されました。
 
PROD(SYS)>
REDOログ・メンバーの削除

ALTER DATABASE DROP LOGFILE MEMBER

PROD(SYS)>alter database drop logfile member '/u01/app/oracle/oradata/prod/redo04_02.log';
 
データベースが変更されました。
 
PROD(SYS)>select * from v$logfile;
 
    GROUP# STATUS                TYPE                  MEMBER                                             IS_RECOVE
---------- --------------------- --------------------- -------------------------------------------------- ---------
         1                       ONLINE                /u01/app/oracle/oradata/prod/redo01_01.log         NO
         1                       ONLINE                /u01/app/oracle/oradata/prod/redo01_02.log         NO
         2                       ONLINE                /u01/app/oracle/oradata/prod/redo02_01.log         NO
         2                       ONLINE                /u01/app/oracle/oradata/prod/redo02_02.log         NO
         3                       ONLINE                /u01/app/oracle/oradata/prod/redo03_01.log         NO
         3                       ONLINE                /u01/app/oracle/oradata/prod/redo03_02.log         NO
         4                       ONLINE                /u01/app/oracle/oradata/prod/redo04_01.log         NO
         5                       ONLINE                /u01/app/oracle/oradata/prod/redo05a.log           NO
         5                       ONLINE                /u01/app/oracle/oradata/prod/redo05b.log           NO
         5                       ONLINE                /u01/app/oracle/oradata/prod/redo05c.log           NO
         4                       ONLINE                /u01/app/oracle/oradata/prod/redo04_03.log         NO
 
11行が選択されました。
 
PROD(SYS)>host ls -l
total 1680876
-rw-r-----  1 oracle oinstall 134221824 May 11 23:12 batch01.dbf
-rw-r-----  1 oracle oinstall  12337152 May 11 23:16 control01.ctl
-rw-r-----  1 oracle oinstall  12337152 May 11 23:16 control02.ctl
-rw-r-----  1 oracle oinstall  12337152 May 11 23:16 control03.ctl
-rw-r-----  1 oracle oinstall 536875008 May 11 23:12 example01.dbf
-rw-r-----  1 oracle oinstall  33558528 May 11 23:12 indx01.dbf
-rw-r-----  1 oracle oinstall  67112960 May 11 23:12 oltp01.dbf
-rw-r-----  1 oracle oinstall  10486272 May 11 23:12 redo01_01.log
-rw-r-----  1 oracle oinstall  10486272 May 11 23:12 redo01_02.log
-rw-r-----  1 oracle oinstall  10486272 May 11 23:12 redo02_01.log
-rw-r-----  1 oracle oinstall  10486272 May 11 23:12 redo02_02.log
-rw-r-----  1 oracle oinstall  10486272 May 11 23:12 redo03_01.log
-rw-r-----  1 oracle oinstall  10486272 May 11 23:12 redo03_02.log
-rw-r-----  1 oracle oinstall  10486272 May 11 23:12 redo04_01.log
-rw-r-----  1 oracle oinstall  10486272 May 11 23:12 redo04_02.log    -- オペレーティング・システム・ファイルはディスクから削除されない
-rw-r-----  1 oracle oinstall  10486272 May 11 23:12 redo04_03.log
-rw-r-----  1 oracle oinstall  10486272 May 11 23:15 redo05a.log
-rw-r-----  1 oracle oinstall  10486272 May 11 23:15 redo05b.log
-rw-r-----  1 oracle oinstall  10486272 May 11 23:15 redo05c.log
-rw-r-----  1 oracle oinstall 262148096 May 11 23:12 sysaux01.dbf
-rw-r-----  1 oracle oinstall 314576896 May 11 23:12 system01.dbf
-rw-r-----  1 oracle oinstall 104861696 May  7 22:00 temp01.dbf
-rw-r-----  1 oracle oinstall  67112960 May 10 22:07 tmp1_01.dbf
-rw-r-----  1 oracle oinstall  67112960 May 11 22:00 tmp2_01.dbf
-rw-r-----  1 oracle oinstall  67112960 May  7 23:20 tmp3_01.dbf
-rw-r-----  1 oracle oinstall 125833216 May 11 23:12 undotbs01.dbf
-rw-r-----  1 oracle oinstall  67112960 May 11 23:12 users01.dbf
 
PROD(SYS)>

データベースからREDOログ・メンバーを削除しても、オペレーティング・システム・ファイルはディスクから削除されない。正常に処理したことを確認する上で、OSコマンドで削除する。
ログ・グループの削除

ALTER DATABASE DROP LOGFILE GROUP n

PROD(SYS)>select * from v$log;
 
    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARCHIVED  STATUS                                           FIRST_CHANGE# FIRST_TI
---------- ---------- ---------- ---------- ---------- --------- ------------------------------------------------ ------------- --------
         1          1         70   10485760          2 YES       INACTIVE                                                305213 09-05-11
         2          1         68   10485760          2 YES       INACTIVE                                                304494 09-05-11
         3          1         69   10485760          2 YES       INACTIVE                                                305188 09-05-11
         4          1         71   10485760          2 YES       INACTIVE                                                307244 09-05-11
         5          1         72   10485760          3 NO        CURRENT                                                 307269 09-05-11
 
PROD(SYS)>alter database drop logfile group 4;
 
データベースが変更されました。
 
PROD(SYS)>select * from v$log;
 
    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARCHIVED  STATUS                                           FIRST_CHANGE# FIRST_TI
---------- ---------- ---------- ---------- ---------- --------- ------------------------------------------------ ------------- --------
         1          1         70   10485760          2 YES       INACTIVE                                                305213 09-05-11
         2          1         68   10485760          2 YES       INACTIVE                                                304494 09-05-11
         3          1         69   10485760          2 YES       INACTIVE                                                305188 09-05-11
         5          1         72   10485760          3 NO        CURRENT                                                 307269 09-05-11
 
PROD(SYS)>
REDOログ・ファイル内のブロックの検証

DB_BLOCK_CHECKSUM=TRUE(デフォルト)

REDOログ・ファイルの初期化

ALTER DATABASE CLEAR {UNARCHIVED} LOGFILE
この文は、REDOログの削除が不可能な次の2つの状況に対応できる。

  • ログ・グループが2つのみの場合
  • 破損したREDOログ・ファイルがカレント・グループに属する場合
アーカイブ・タイムラグの制御

初期化パラメータ:ARCHIVE_LAG_TARGET
下記ではログ・スイッチ間隔を30分(標準的な値)に設定する。

PROD(SYS)>alter system set archive_lag_target=1800 scope=both;
 
システムが変更されました。
 
PROD(SYS)>show parameter archive_lag_target
 
NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
archive_lag_target                   integer                           1800
PROD(SYS)>

REDOログ情報の表示

制御ファイルのREDOログ・ファイル情報 V$LOG
PROD(SYS)>select * from v$log;
 
    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARCHIVED  STATUS                                           FIRST_CHANGE# FIRST_TI
---------- ---------- ---------- ---------- ---------- --------- ------------------------------------------------ ------------- --------
         1          1         16  104857600          2 YES       INACTIVE                                                316254 09-05-12
         2          1         17  104857600          2 YES       INACTIVE                                                316326 09-05-12
         3          1         15  104857600          2 YES       INACTIVE                                                315963 09-05-12
         4          1         18  104857600          2 NO        CURRENT                                                 316347 09-05-12
 
PROD(SYS)>
REDOログ・グループとメンバーおよびメンバーの状態 V$LOGFILE
PROD(SYS)>col member format a50
PROD(SYS)>select * from v$logfile;
 
    GROUP# STATUS                TYPE                  MEMBER                                             IS_RECOVE
---------- --------------------- --------------------- -------------------------------------------------- ---------
         1                       ONLINE                /u01/app/oracle/oradata/prod/redo01a.log           NO
         1                       ONLINE                /u01/app/oracle/oradata/prod/redo01b.log           NO
         2                       ONLINE                /u01/app/oracle/oradata/prod/redo02a.log           NO
         2                       ONLINE                /u01/app/oracle/oradata/prod/redo02b.log           NO
         3                       ONLINE                /u01/app/oracle/oradata/prod/redo03a.log           NO
         3                       ONLINE                /u01/app/oracle/oradata/prod/redo03b.log           NO
         4                       ONLINE                /u01/app/oracle/oradata/prod/redo04a.log           NO
         4                       ONLINE                /u01/app/oracle/oradata/prod/redo04b.log           NO
 
8行が選択されました。
 
PROD(SYS)>
ログの履歴情報 V$LOG_HISTORY
PROD(SYS)>select * from V$LOG_HISTORY;
 
     RECID      STAMP    THREAD#  SEQUENCE# FIRST_CHANGE# FIRST_TI NEXT_CHANGE# RESETLOGS_CHANGE# RESETLOG
---------- ---------- ---------- ---------- ------------- -------- ------------ ----------------- --------
         1  685931914          1          1             1 09-05-04         6923                 1 09-05-04
         2  685932594          1          2          6923 09-05-04        12024                 1 09-05-04
         3  685932617          1          3         12024 09-05-04        17427                 1 09-05-04
         4  685932753          1          4         17427 09-05-04        22613                 1 09-05-04
         5  685932784          1          5         22613 09-05-04        34051                 1 09-05-04
         6  685932892          1          6         34051 09-05-04        40899                 1 09-05-04
         7  685932913          1          7         40899 09-05-04        44891                 1 09-05-04
         8  685932935          1          8         44891 09-05-04        52590                 1 09-05-04
         9  685933021          1          9         52590 09-05-04        56557                 1 09-05-04
        10  685933035          1         10         56557 09-05-04        59610                 1 09-05-04
        11  685933041          1         11         59610 09-05-04        61065                 1 09-05-04
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License