はじめに
Oracle 11gでREDOログを削除して、作り直してみました。
SBクリエイティブ
売り上げランキング: 21,204
環境
- Windows Server 2008 R2
- Oracle 11g Enterprise(11.2.0.1.0)
REDOファイルの確認
以下のクエリをsysユーザで実行すると、REDOログファイルの格納場所が分かります。
SELECT * FROM v$logfile;
MEMBER#カラムに表示されているのがREDOログファイルです。メンバーはグループ(GROUP#)に所属しています。
REDOロググループの確認
REDOロググループの情報を表示するには、以下のクエリをsysユーザで実行します。
SELECT * FROM V$LOG;
REDOロググループの削除
REDOロググループを削除するには、以下のクエリを実行します。
alter database drop logfile group n;
nの部分にはGROUPの番号を指定します。
REDOロググループは、削除できないケースがあります。
●次の場合、REDOロググループの削除はできない
・REDOロググループの削除によってインスタンス内のロググループが一つになってしまう場合
・アクティブなREDOロググループを削除しようとした場合
・アーカイブモードで稼動しているデータベースで、アーカイブされていないREDOロググループを削除しようとした場合
REDOログファイルのメンテナンス
REDOロググループは、必ず2つ以上必要になり、削除することによってREDOロググループが1つになってしまう場合は、ORA-01567のエラーとなります。
ORA-01567:
ログ2を削除すると、インスタンスorcl(スレッド1)内の残りログ・ファイルが1つ以下になります
REDOログの追加
REDOロググループを追加するには、以下のクエリを実行します。
以下の例では、REDOロググループの4を追加しています。
alter database add logfile group 4
追加したばかりのロググループは、SEQUENCE#が0で、STATUSがUNUSEDになります。
次のようなシチュエーションで、REDOロググループ6を追加して、REDOロググループ3を削除したいと思います。
ステータスがCURRENTのREDOロググループを削除しようとすると、ORA-01623のエラーになります。
alter database drop logfile group 3;
ORA-01623: ログ3はインスタンスorcl(スレッド1)の現在のログです - 削除できません
この場合は、ログファイルをスイッチングしてCURRENTを切り替えます。
alter system switch logfile;
REDOロググループ3を削除しようとしてみましたが、ORA-01624のエラーになってしまいました。
ACTIVE状態のREDOロググループは削除できないようです。
alter database drop logfile group 3;
ORA-01624: ログ3はインスタンスorcl(スレッド1)のクラッシュ・リカバリに必要です。
もういちどスイッチングします。
alter system switch logfile;
REDOロググループ3のステータスがINACTIVEになりました。
この状態で、再度REDOロググループ3を削除すると、成功します。
SQL> alter database drop logfile group 3; >データベースが変更されました。
SQL> alter database add logfile group 6; データベースが変更されました。