一時的なディスク・パス障害後にOracle ASMディスク・グループの冗長性をリストアする処理には、時間がかかります。このことは特に、リカバリ・プロセスにOracle ASMディスク・グループ全体の再構築が必要である場合は顕著です。Oracle ASMの高速ミラー再同期を行うと、このような状況下で障害が発生したディスクの再同期に要する時間を大幅に短縮できます。障害が発生したディスクを置換する場合、Oracle ASMディスクのエクステントを簡単に再同期できます。
注意:
この機能を使用するには、ディスク・グループの互換性属性を11.1以上に設定する必要があります。詳細は、「ディスク・グループの互換性」を参照してください。
障害グループが一時的に使用できなくなる問題は、Oracle ASMの高速ミラー再同期機能によってリカバリすることが可能な、一時的障害とみなされます。一時的障害は、たとえば、ディスク・パスの不具合(ケーブル障害、ホスト・バス・アダプタ障害、コントローラ障害など)や、ディスク電源の停電などによって発生します。
Oracle ASMの高速再同期では、停止時にオフラインのディスクのエクステントに対して保留になっている変更が追跡されます。これらのエクステントは、ディスクがオンラインに戻ったときに再同期されます。
デフォルトでは、ディスクはオフラインになってから3.6時間でOracle ASMにより削除されます。この削除操作は、DISK_REPAIR_TIMEディスク・グループ属性を設定することによって遅らせることもできます。つまり、ディスクを修復してオンラインに戻すまでの時間間隔をこの属性に指定できます。この時間は、分単位(m、M)または時間単位(h、H)で指定できます。単位を省略すると、デフォルトでは時間単位になります。DISK_REPAIR_TIMEディスク・グループ属性は、ALTER DISKGROUP SQL文を使用してのみ設定でき、標準冗長性および高冗長性のディスク・グループにのみ適用されます。
この属性が明示的に設定されていない場合、明示的なDROP AFTER句なしでOFFLINEモードに設定されたディスクには、デフォルト値(3.6h)が適用されます。I/OエラーによってオフラインになったディスクにはDROP AFTER句がありません。
DISK_REPAIR_TIME属性のデフォルト値は、多くの環境に適合すると思われる予測値です。ただし、この属性値は、実際の環境で一時的なディスク・エラーを修正するために必要と考えられ、データの冗長性の低下を許容できる時間に設定してください。
経過時間(ディスクがOFFLINEモードになってからの時間)は、オフラインになったディスクが属しているディスク・グループがマウントされている場合にのみ増分されます。V$ASM_DISKのREPAIR_TIMER列には、オフラインのディスクが削除されるまでの残り時間(秒単位)が表示されます。指定した時間を経過すると、Oracle ASMによりディスクは削除されます。この属性は、ALTER DISKGROUP OFFLINE DISK文およびDROP AFTER句を使用してオーバーライドできます。
注意:
ディスクがI/O(書込み)エラーのためにOracle ASMによってオフラインにされた場合、またはDROP AFTER句のないALTER DISKGROUP... OFFLINE文によって明示的にオフラインにされた場合は、ディスク・グループのDISK_REPAIR_TIME属性に指定された値が使用されます。
DISK_REPAIR_TIME属性の変更はオフライン・ディスクには影響しません。属性が更新された後にオフラインになるディスクには、この新しい値が使用されます。この動作は、Oracle ASMのアラート・ログを参照することによって確認できます。
オフラインのディスクが2回目にオフラインになると、経過時間はリセットされてから再開されます。このディスクに対してDROP AFTERを使用して別の時間を指定すると、最初の値がオーバーライドされ、新しい値が適用されます。OFFLINEモードのディスクは、ALTER DISKGROUP DROP DISK文では削除できません。削除しようとするとエラーが戻されます。なんらかの理由(ディスクを修復できない場合など)により、修復時間が経過する前にディスクを削除する必要がある場合、0hまたは0mを指定したDROP AFTER句を使用して2回目のOFFLINE文を発行して、ディスクを即時に削除できます。
ALTER DISKGROUPを使用して、DISK_REPAIR_TIME属性を特定の時間または分の値(4.5時間または270分など)に設定できます。次に例を示します。
ALTER DISKGROUP data SET ATTRIBUTE 'disk_repair_time' = '4.5h' ALTER DISKGROUP data SET ATTRIBUTE 'disk_repair_time' = '270m'
ディスクを修復した後、SQL文ALTER DISKGROUP ONLINE DISKを実行します。この文により、修復したディスク・グループがオンラインに戻され、新しい書込みが失われないよう書込みが有効になります。また、この文により、冗長コピー上で失効とマークされているすべてのエクステントをコピーする手順が開始されます。
Oracle ASMインスタンスがローリング・アップグレード・モードのときにディスクがオフラインになると、ローリング・アップグレードが終了するまでディスクはオフラインのままであり、Oracle ASMクラスタがローリング・アップグレード・モードでなくなるまでディスクの削除タイマーは停止されます。「Oracle ASMのアップグレードおよびパッチ適用」を参照してください。ディスクをオフラインにして、オンラインに戻す例を次に示します。
次の例では、ディスクDATA_001をオフラインにして、5分後に削除します。
ALTER DISKGROUP data OFFLINE DISK DATA_001 DROP AFTER 5m;
次の例では、ディスクDATA_001をオフラインにして、DISK_REPAIR_TIMEで指定した時間の経過後にこのディスクを削除します。
ALTER DISKGROUP data OFFLINE DISK DATA_001;
この例では、障害グループFG2のディスクをすべてオフラインにして、DISK_REPAIR_TIMEで指定した時間の経過後にこれらを削除します。DROP AFTER句を使用した場合、指定時間の経過後にこのディスクは削除されます。
ALTER DISKGROUP data OFFLINE DISKS IN FAILGROUP FG2;
次の例では、障害グループFG2のディスクをすべてオンラインに戻します。
ALTER DISKGROUP data ONLINE DISKS IN FAILGROUP FG2;
この例では、ディスクDATA_001のみをオンラインに戻します。
ALTER DISKGROUP data ONLINE DISK DATA_001;
この例では、ディスク・グループDATAのディスクをすべてオンラインに戻します。
ALTER DISKGROUP data ONLINE ALL;
ALTER DISKGROUP ONLINE文の実行中にV$ASM_OPERATIONビューに問い合せると、現在実行している操作の名前と状態が表示されます。たとえば、次のSQL問合せでは、オンライン操作中のPASS列の値を示しています。
SQL> SELECT GROUP_NUMBER, PASS, STATE FROM V$ASM_OPERATION;
GROUP_NUMBER PASS STAT
------------ --------- ----
1 RESYNC RUN
1 REBALANCE WAIT
1 COMPACT WAIT
オフライン操作では、V$ASM_OPERATIONビュー問合せでの表示は生成されません。
FAILGROUP_REPAIR_TIMEおよびCONTENT.TYPEディスク・グループ属性を設定できます。FAILGROUP_REPAIR_TIMEディスク・グループ属性は、ディスク・グループ内の障害グループのデフォルトの修復時間を指定します。CONTENT.TYPEディスク・グループ属性は、ディスク・グループに格納される予定のデータのタイプを指定します。これらの属性は、ASMCA、ASMCMDのmkdg、またはSQLのCREATEおよびALTER DISKGROUP文を使用して設定できます。ディスク・グループ属性の詳細は、「ディスク・グループ属性の管理」を参照してください。
ASMCMDのlsopコマンドは、再同期の見積時間を表示します。リバランスの各フェーズ(ディスク再同期、リバランスおよびデータ比較)用に、V$ASM_OPERATION表に別々の行があります。
ASMCMDのonlineコマンドには、オンライン操作の指数を指定するためのpowerオプションがあります。SQLのALTER DISKGROUP REPLACE DISK文にも指数オプションがあります。
ASMCMDのchdgコマンドでは、addおよびdropタグの他に、replaceオプションが提供されます。ASMCMDのmkdgコマンドには、障害グループをオフラインにする時間を指定するための追加の時間パラメータ(-t)があります。
関連項目:
ALTER DISKGROUPおよびCREATE DISKGROUPの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。