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ログ・メンバーの再配置
手順:
- データベースのバックアップを取る
- データベースをシャットダウン
- OSコマンドでREDOログファイルを移動したり、名前を変更したりする。
- データベースをマウントにする
- ALTER DATABASE RENAME FILEを発行
- データベースをオープンにする。
-- 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
page revision: 27, last edited: 18 Nov 2009 14:09