7 x 24 在线支持!
Oracle オンラインREDOログファイルのリカバリ--多重化した一部の障害の場合 (for UNIX)
ORACLEデータベース によくあるエラ の解決策
プロのOracle Databaseの復旧サービスを提供
携帯番号: +86 13764045638 メール:[email protected]
[概要]
オンラインREDOログファイルのリカバリ--多重化した一部の障害の場合
[内容]
本KROWNでは、多重化されたオンラインREDOログファイルの一部のファイルが
障害を受けた場合のリカバリ方法を紹介します。
[対象リリース]
Oracle7 Server/Oracle7 Workgroup Server 7.x
Oracle8 Enterprise Edition/Oracle8 Standard Edition 8.0.x
Oracle8i Enterprise Edition/Oracle8i Standard Edition 8.1.x
Oracle9i Database Release1 (9.0.1.x)
Oracle9i Database Release2 (9.2.x)
[対象プラットフォーム]
Unixプラットフォーム
[エラー内容]
多重化されたオンラインREDOログの一部のファイルが破損した場合には、
アラートログファイル、又は v$logfile から確認出来ます。
アラートには、ORA-312/ORA-313/ORA-321 又はその他付随する
OSエラーが書き込まれます。
--------------
Errors in file /home/admin/ora920/bdump/ora920_lgwr_21920.trc:
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: '/home/oradata/ora920/redo01_2.log'
ORA-27037: unable to obtain file status
SVR4 Error: 2: No such file or directory
Additional information: 3
Errors in file /home/admin/ora920/bdump/ora920_lgwr_21920.trc:
ORA-00321: log 1 of thread 1, cannot update log file header
ORA-00312: online log 1 thread 1: '/home/oradata/ora920/redo01_2.log'
ORA-00313: open failed for members of log group 1 of thread 1
--------------
v$logfile から確認した場合には、破損したログの STATUS は
"INVALID" となっています。
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER
---------- ------- ------- --------------------------------------------------
3 ONLINE /home/oradata/ora920/redo03_2.log
2 ONLINE /home/oradata/ora920/redo02_2.log
1 INVALID ONLINE /home/oradata/ora920/redo01_2.log <--
1 ONLINE /homeoradata/ora920/redo01_1.log
2 ONLINE /home/oradata/ora920/redo02_1.log
3 ONLINE /home/oradata/ora920/redo03_1.log
[リカバリ方法]
手順例として、以下のような環境であると仮定します。
$ORACLE_HOME: ora920
破損したオンラインREDOログファイル: redo01_2.log
破損したオンラインREDOログファイルが属するグループ: group#1
1. v$logfile から破損したログファイルを特定します。
破損したログファイルのステータスは、"INVALID" となっています。
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER
---------- ------- ------- --------------------------------------------------
3 ONLINE /home/oradata/ora920/redo03_2.log
2 ONLINE /home/oradata/ora920/redo02_2.log
1 INVALID ONLINE /home/oradata/ora920/redo01_2.log <--** 破損したファイル
1 ONLINE /homeoradata/ora920/redo01_1.log
2 ONLINE /home/oradata/ora920/redo02_1.log
3 ONLINE /home/oradata/ora920/redo03_1.log
--> 上記結果から、問題のREDOログファイルは、group#1 のメンバー、redo01_2.log で
あることがわかります。
2. 破損したファイルが属するロググループ(ここでは group#1) のステータスが
CURRENT ではないことを確認します。
(グループの STATUS が CURRENT では、そのグループに属するメンバーの DROP を
出来ないためです。)
SQL> select group#, status from v$log;
GROUP# STATUS
---------- ----------------
1 ACTIVE <--** group#1は "CURRENT" ではないことを確認
2 CURRENT
3 INACTIVE
<問題のログメンバーが属するグループが CURRENT であった場合>
問題のメンバーが属するグループが CURRENT の場合には、ログスイッチを発生させます。
SQL> alter system switch logfile;
3. 問題のログメンバー、redo01_2.log を DROP します。
SQL> alter database drop logfile member
2 '/home/oradata/ora920/redo01_2.log';
4. グループに新しいメンバーを追加します。既にOS上に存在しているログファイルを
削除せず、再利用する場合には、reuse 句をつけて add します。
SQL> alter database add logfile member
2 '/home/oradata/ora920/redo01_2.log' reuse to group 1;
^^^^^
※ 一旦OS側でログファイルの削除を行っている場合、又は新しい名前でログファイルを
add するには、reuse 句は必要ありません。
#注意#
カレントグループに属するロググループの DROP は出来ません。カレントロググループに
属するメンバーを DROP しようとした場合、以下のようなエラーとなります。
----------
ORA-01609: ログ1はスレッド1の現在のログです - メンバーは削除できません
ORA-00312: オンライン・ログ1 スレッド1:
'/home/oradata/ora920/redo01_2.log'
ORA-00312: オンライン・ログ1 スレッド1:
'/home/oradata/ora920/redo01_1.log'
----------
元の状態に戻ったか確認します。
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER
---------- ------- ------- -------------------------------------
1 ONLINE /home/oradata/ora920/redo01_2.log
3 ONLINE /home/oradata/ora920/redo03_2.log
2 ONLINE /home/oradata/ora920/redo02_2.log
1 ONLINE /home/oradata/ora920/redo01_1.log
2 ONLINE /home/oradata/ora920/redo02_1.log
3 ONLINE /home/oradata/ora920/redo03_1.log
以上で作業は完了です。
[参照情報]
「Oracle9i ユーザー管理バックアップおよびリカバリ・ガイド リリース1(9.0.1)」
「Oracle9i ユーザー管理バックアップおよびリカバリ・ガイド リリース2(9.2)」
第6章: ユーザー管理のメディア・リカバリのシナリオ
「Oracle8i バックアップおよびリカバリ・ガイド リリース8.1」
第6章: メディア・リカバリのシナリオ

沪公网安备 31010802001377号