DB/Oracle/コマンド/REDO ログ管理
目次†
REDO ログに関する諸々の管理方法。
REDO ログファイルを切り替える†
ログスイッチを明示的に実行させる。
方法†
- REDO ログファイルを切り替える
alter system switch logfile;
確認†
- v$log または v$logfile からロググループの情報を確認
select group#, status from v$log;
チェックポイントを実行する†
チェックポイントを明示的に実行させる。
方法†
- チェックポイントを実行する
alter system checkpoint;
REDO ロググループの追加†
デフォルトで REDO ロググループは三つ。これにグループを新しくひとつ追加する。
方法†
- 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 ロググループへのメンバの追加†
既存のロググループに新規メンバを追加する。
方法†
- 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 ロググループの削除†
方法†
- 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 ロググループから既存のメンバを削除する
方法†
- 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 ログファイルのファイル名を変える。フルパスで指定するので、移動にも対応。
方法†
- データベースを停止する
shutdown immediate
- REDO ログファイルのファイル名を変更(または REDO ログファイルを移動)する
mv /path/to/redo.log /new/path/to/newredo.log
- データベースをマウントする
startup mount
- 新しい REDO ログファイルの情報を登録する
alter database rename file '/path/to/redo.log' to '/new/path/to/newredo.log';
- データベースをオープンする
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 ロググループのメンバが破損しているときに作りなおしたい場合
方法†
- 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