DB/Oracle/コマンド/REDO ログ管理

Top / DB / Oracle / コマンド / REDO ログ管理

目次

REDO ログに関する諸々の管理方法。


REDO ログファイルを切り替える

ログスイッチを明示的に実行させる。

方法

  1. REDO ログファイルを切り替える
    alter system switch logfile;
    

確認

  • v$log または v$logfile からロググループの情報を確認
    select group#, status from v$log;
    

チェックポイントを実行する

チェックポイントを明示的に実行させる。

方法

  1. チェックポイントを実行する
    alter system checkpoint;
    

REDO ロググループの追加

デフォルトで REDO ロググループは三つ。これにグループを新しくひとつ追加する。

方法

  1. REDO ロググループを追加する
    -- ファイルを新規に作成して追加する
    alter database add logfile group <group-number>
      ('/path/to/redo.log', '/path/to/...') size <file-size>;
    
    -- 既存のファイルを再利用して追加する
    alter database add logfile group <group-number>
      ('/path/to/redo.log', '/path/to/...') reuse;
    

確認

  • v$log または v$logfile からロググループの情報を確認
    select group#, member from v$logfile;
    select group#, members, bytes from v$log;
    

補足

  • サイズはグループごとに指定する
  • サイズやファイル名を指定しないとデフォルトが使われる。サイズは 100Mくらい、ファイル名はランダム文字列を含み、パスはフラッシュリカバリ領域

REDO ロググループへのメンバの追加

既存のロググループに新規メンバを追加する。

方法

  1. REDO ロググループにメンバを追加する
    -- 一個だけ追加する
    alter database add logfile member '/path/to/redo.log' to group <group-number>;
    
    -- 複数追加する
    alter database add logfile member
      '/path/to/redo.log' to group <group-number>,
      '/path/to/redo.log' to group <group-number>;
    
    -- ファイルを再利用する
    alter database add logfile member '/path/to/redo.log' reuse to group <group-number>;
    

確認

  • v$log または v$logfile からロググループの情報を確認
    select group#, member from v$logfile;
    select group#, members, bytes from v$log;
    

REDO ロググループの削除

方法

  1. REDO ロググループを削除する
    alter database drop logfile group <group-number>;
    

確認

  • v$log または v$logfile からロググループの情報を確認
    select group#, member from v$logfile;
    select group#, members, bytes from v$log;
    select group#, status from v$log;
    

補足

  • このコマンドを実行すると制御ファイルから当該 REDO ロググループに関する情報が削除される。ログファイル自体は削除されないで残る
  • LGRW が書き込み中のログファイル(current なログファイル)は削除できない。削除したい場合はログスイッチを発生させて inactive にしてから行う
    alter database switch logfile;
    
  • REDO ロググループが二つのときにはどちらも削除できない

REDO ロググループからのメンバの削除

既存の REDO ロググループから既存のメンバを削除する

方法

  1. REDO ロググループからのメンバの削除
    alter database drop logfile member '/path/to/redo.log';
    

確認

  • v$log または v$logfile からロググループの情報を確認
    select group#, member from v$logfile;
    select group#, members, bytes from v$log;
    

補足

  • グループ削除時と同様、制御ファイルから情報は消えるがファイル自体は消えない
  • Current のグループのメンバは削除できない
  • グループにメンバがひとつしかない場合は削除できない

REDO ログファイルのファイル名の変更

REDO ログファイルのファイル名を変える。フルパスで指定するので、移動にも対応。

方法

  1. データベースを停止する
    shutdown immediate
    
  2. REDO ログファイルのファイル名を変更(または REDO ログファイルを移動)する
    mv /path/to/redo.log /new/path/to/newredo.log
    
  3. データベースをマウントする
    startup mount
    
  4. 新しい REDO ログファイルの情報を登録する
    alter database rename file '/path/to/redo.log' to '/new/path/to/newredo.log';
    
  5. データベースをオープンする
    alter database open;
    

確認

  • v$log または v$logfile からロググループの情報を確認
    select group#, member from v$logfile;
    select group#, members, bytes from v$log;
    

REDO ログファイルの初期化

REDO ロググループを初期化する。内部的には DROP したあとに ADD しているようなもの。CLEAR しないでも DROP して ADD すれば初期化になるが、場合によって DROP ができないときもあるので、こういうときに使う。具体的には以下のようなときに利用。

  • REDO ロググループが二つのときに REDO ログファイルを初期化したい場合
  • REDO ロググループのメンバが破損しているときに作りなおしたい場合

方法

  1. REDO ログファイルの初期化
    -- グループまるごと初期化する
    alter database clear logfile group <group-number>;
    
    -- 特定のメンバだけ初期化する
    alter database clear logfile '/path/to/redo.log';
    
    -- ログファイルがアーカイブされていない場合に初期化する
    alter database unarchived
       clear { logfile '/path/to/redo.log' | group <group-number> };
    

Last-modified: 2011-11-01 (火) 10:41:21 (2455d)