ディスク・グループのメンテナンス

この項では、ディスク・グループで実行するメンテナンス操作について説明します。

この項では、次の項目について説明します。

ディスク・グループのマウントおよびディスマウント

ASM_DISKGROUPS初期化パラメータで指定したディスク・グループは、Oracle ASMインスタンスの起動時に自動的にマウントされます。このプロセスにより、Oracle ASMと同じノードで動作しているすべてのデータベース・インスタンスが、これらのディスク・グループを使用できるようになります。ディスク・グループは、Oracle ASMインスタンスの停止時にディスマウントされます。また、Oracle ASMでは、ディスク・グループは最初に作成するときにも自動的にマウントされ、削除するときにディスマウントされます。

ディスク・グループのマウント時に、ディスク・グループ番号が選択されます。この番号は、ディスク・グループのマウントごとに変わります。ディスク・グループ番号は永続的な構造で記録されませんが、現在の値はV$ASMビューのGROUP_NUMBER列に表示できます。

ディスク・グループを手動でマウントまたはディスマウントする場合は、ALTER DISKGROUP...MOUNTまたはALTER DISKGROUP...DISMOUNT文を使用します。ディスク・グループは名前別にマウントまたはディスマウントすることも、ALLを指定することもできます。オプションのFORCEオプションを指定することもできます。FORCEオプションの使用の詳細は、FORCEオプションを使用したディスク・グループのマウントを参照してください。

オープン・ファイルを含むディスク・グループをディスマウントしようとすると、FORCE句も指定しないかぎり、この文は失敗します。

RESTRICTEDモードのOracle ASMクラスタ環境では、ディスク・グループは単一インスタンスの排他モードでマウントされます。このクラスタ内の他のOracle ASMインスタンスはこのディスク・グループをマウントできません。このモードでは、Oracle ASMクライアントはディスク・グループを使用できません。このモードは、高速リバランスを実行する場合に使用します。

次のSQL文では、Oracle ASMインスタンスに現在マウントされているすべてのディスク・グループをディスマウントします。

ALTER DISKGROUP ALL DISMOUNT;

次のSQL文では、ディスク・グループdata1をマウントします。

ALTER DISKGROUP data1 MOUNT;

FORCEオプションを使用したディスク・グループのマウント

Oracle ASMには、一部のOracle ASMディスクがマウント時にディスク・グループで使用できない場合でも、標準冗長性モードまたは高冗長性モードでOracle ASMディスク・グループをマウントできるMOUNT FORCEオプションが、ALTER DISKGROUPにあります。

FORCEオプションを使用しない場合、破損または欠落しているディスクが含まれるディスク・グループのマウントはデフォルトで失敗します。

MOUNT FORCEオプションは、ディスクが一時的に使用できず、機能停止の原因となった状況の修正中に、冗長性を低下させてディスク・グループをマウントする場合に役立ちます。

MOUNT FORCEオプションを使用して正常にマウントするには、Oracle ASMがディスク・グループの全ファイルのエクステントのコピーを1つ以上検出できる必要があります。この場合、Oracle ASMによりディスク・グループのマウントは成功しますが、冗長性が損われる可能性があります。

Oracle ASMがアクセスできないディスクは、オフライン・モードになります。Oracle ASMは、次にこれらのディスクがオフライン・モードになる時間の計測を開始します。ディスクのオフラインの期間が、DISK_REPAIR_TIMEディスク・グループ属性で設定したタイマーのしきい値を超えると、これらのディスクはディスク・グループから完全に削除されます。ディスクがオフライン状態になった後にオフラインのタイマーを変更するには、ALTER DISKGROUP OFFLINE文を使用します。

注意:

Oracle ASMインスタンスは、指定の互換性に応じて異なる方法で不完全なディスク・グループをマウントします。

Oracle ASMクラスタ環境では、Oracle ASMインスタンスがディスク・グループをマウントする最初のインスタンスでない場合、MOUNT FORCE文の使用は失敗します。これは、ディスクが別のインスタンスからアクセスされたとしても、ローカルではアクセスできないためです。

すべてのディスクを使用できる場合、FORCEオプションを使用するとMOUNTコマンドは失敗します。このため、この機能は不必要かつ不適切に使用しないようにします。

次の例では、FORCEオプションを使用してdata1ディスク・グループのマウントを強制する方法を示します。

SQL> ALTER DISKGROUP data1 MOUNT FORCE;

関連項目:

ディスク・グループ・メタデータの内部整合性のチェック

CHECKキーワードを指定してALTER DISKGROUP文を使用し、ディスク・グループ・メタデータの内部整合性をチェックできます。この文を使用すると、ディスク・グループ内の特定のファイル、ディスク・グループ内の特定のディスクまたはすべてのディスク、あるいはディスク・グループ内の特定の障害グループをチェックできます。これらのチェックを実行するには、ディスク・グループをマウントする必要があります。

デフォルトでは、CHECK DISK GROUP句ですべてのメタデータ・ディレクトリを検証します。Oracle ASMにサマリー・エラーが表示され、エラーの詳細がアラート・ログに書き込まれます。CHECKキーワードによって、次の処理が実行されます。

  • ディスクの整合性を検証します。

  • 整合性に関してファイルのエクステント・マップと割当て表をすべてクロス・チェックします。

  • エイリアス・メタデータ・ディレクトリとファイル・ディレクトリが正しくリンクされているかどうかをチェックします。

  • エイリアス・ディレクトリ・ツリーが正しくリンクされているかどうかを検証します。

  • Oracle ASMメタデータ・ディレクトリに、到達できない割当てブロックがないかどうかをチェックします。

REPAIR | NOREPAIR句は、チェック中に検出されるエラーをOracle ASMが修復を試みる必要があるかどうかを指定します。デフォルトはNOREPAIRです。NOREPAIR句を使用して非一貫性に関するアラートを受信し、Oracle ASMがエラーを自動的に解決しないようにします。次の例の文では、data1ディスク・グループ内のすべてのディスクについてメタデータの整合性をチェックします。

ALTER DISKGROUP data1 CHECK ALL;

関連項目:

CHECK句の構文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

ディスク・グループの削除

DROP DISKGROUP文を使用すると、Oracle ASMディスク・グループおよび必要に応じてそのすべてのファイルを削除できます。

ディスク・グループに含まれるファイルもすべて削除する必要がある場合は、INCLUDING CONTENTS句を指定できます。デフォルトはEXCLUDING CONTENTSです。この場合、構文上の整合性が保たれ、内容のあるディスク・グループの削除を回避できます。

DROP DISKGROUP文が成功するには、Oracle ASMインスタンスが起動しており、ディスク・グループ・ファイルが開かれていない状態でディスク・グループがマウントされている必要があります。この文は、ディスク・グループが削除されるまでは戻されません。

ディスク・グループを削除すると、ディスク・グループはOracle ASMによりディスマウントされ、サーバー・パラメータ・ファイルを使用している場合はASM_DISKGROUPS初期化パラメータからディスク・グループ名が削除されます。テキスト初期化パラメータ・ファイルを使用しており、ASM_DISKGROUPS初期化パラメータにこのディスク・グループが記載されている場合、次回Oracle ASMインスタンスを停止して再起動する前に、このディスク・グループ名をASM_DISKGROUPS初期化パラメータから削除する必要があります。

次の文では、data1を削除します。

DROP DISKGROUP data1;

data1に含まれるファイルのいずれも開かれていないことが確認された後、ディスク・グループの各ディスクのヘッダーがOracle ASMによりリライトされ、Oracle ASMのフォーマット情報が削除されます。この文にはINCLUDING CONTENTSが指定されていないため、ディスク・グループにファイルが含まれていると、削除操作が失敗します。

Oracle Automatic Storage Managementクラスタ・ファイルシステム(Oracle ACFS)がディスク・グループ内にあるボリュームにマウントされている場合は、そのファイルシステムをディスマウントする必要があります。ファイルシステムが登録されている場合は、登録解除する必要があります。INCLUDING CONTENTS句を使用して、このディスク・グループを削除する必要があります。ファイルシステム内のすべてのデータが破棄されます。ディスク・グループに関連付けられたボリュームおよびマウント・パスを表示するには、V$ASM_VOLUMEビューに問い合せます。

ディスク・グループをマウントできないのに削除する必要がある場合は、DROP DISKGROUP文のFORCEオプションを使用できます。このコマンドを使用すると、次の例に示すように、Oracle ASMインスタンスによってマウントできないディスク・グループに属するディスクのヘッダーを削除できます。

SQL> DROP DISKGROUP data1 FORCE;

この操作を実行するディスク・グループは、クラスタ内でマウントされていない必要があります。FORCEオプションを使用する場合、Oracle ASMインスタンスにより、ディスク・グループが同じストレージ・サブシステム内の別のOracle ASMインスタンスで使用されているかどうかは検証されません。

注意:

FORCEオプションを使用する際は十分に注意してください。

ASMCAを使用して、ディスク・グループからディスクを削除することもできます。

関連項目:

ディスク・グループの名前変更

renamedgツールを使用すると、クローン化されたディスク・グループの名前を変更できます。ディスク・グループ上でrenamedgを実行する前に、クラスタ内のすべてのノードでディスク・グループをディスマウントする必要があります。

renamedgでは、次の2段階のプロセスを使用して、ディスク・グループの名前を変更します。

  1. フェーズ1

    このフェーズでは、フェーズ2で使用される構成ファイルを生成します。

  2. フェーズ2

    このフェーズでは、構成ファイルを使用して、ディスク・グループの名前を変更します。

構文は次のとおりです。

renamedg {-help | help=true}

renamedg
     [phase={one|two |both}] dgname=diskgroup 
       newdgname=newdiskgroup [config=configfile]
     [asm_diskstring=discoverystring, discoverystring ...] 
     [clean={true|false}] [check={true|false}]
     [confirm={true|false}] [verbose={ true|false}]
     [keep_voting_files={true|false}]
  • phase={one|two|both}

    実行されるフェーズを指定します。指定可能な値はonetwoまたはbothです。この引数はオプションです。デフォルトはbothです。

    通常、両方のフェーズを実行します。第2フェーズ中に問題が発生した場合は、生成された構成ファイルを使用してフェーズtwoを再実行します。

  • dgname=diskgroup

    名前を変更するディスク・グループの名前を指定します。

  • newdgname=newdiskgroup

    ディスク・グループの新しい名前を指定します。

  • config=configfile

    フェーズ1で生成される構成ファイルへのパスを指定するか、フェーズ2で使用される構成ファイルへのパスを指定します。

    この引数はオプションです。デフォルトの構成ファイルの名前はrenamedg_configで、コマンドが実行されるディレクトリにあります。プラットフォームによっては、一重引用符が必要になります。

  • asm_diskstring=discoverystring, discoverystring ...

    Oracle ASM検出文字列を指定します。Oracle ASMディスクがプラットフォームのデフォルトの場所にない場合は、asm_diskstring値を指定する必要があります。通常ワイルドカード文字を指定する場合に、プラットフォームによっては一重引用符が必要になります。

  • clean={true|false}

    許容しなければ無視されるエラーを削除するかどうかを指定します。デフォルトはtrueです。

  • check={true|false}

    フェーズ2で使用されるブール値を指定します。trueの場合、ディスクに加えられる変更のリストが出力されます。書込みは発行されません。オプション・パラメータで、デフォルトはfalseです。

  • confirm={true|false}

    フェーズ2で使用されるブール値を指定します。falseの場合、加えられる変更が出力され、実際に変更が加えられる前に確認を求めます。オプションの値で、デフォルトはfalseです。checkがtrueに設定されている場合、このパラメータの値は不要です。

  • verbose={true|false}

    verbose=trueの場合、verboseの実行を指定します。デフォルトは、falseです。

  • keep_voting_files={true|false}

    名前を変更したディスク・グループで投票ファイルを保持するかどうかを指定します。デフォルトはfalseで、名前を変更したディスク・グループから投票ファイルを削除します。

注意:

renamedgリソースを更新せず、またrenamedgは、データベース内のファイル参照も更新しません。この動作のため、フェーズtwoの完了後に、ディスク・グループの元のリソースは自動的に削除されません。ディスク・グループの古いリソースは、Oracle Clusterware Control(CRSCTL)のcrsctl stat res -tコマンドを使用してステータスをチェックした後、サーバー制御ユーティリティ(SRVCTL)のsrvctl remove diskgroupコマンドを使用して手動で削除できます。

例4-12は、renamedgのいくつかの使用例を示しています。最初の例では、ディスクを検索するためにディスク文字列を使用し、verboseオプションを有効にして、fra1ディスク・グループの名前をfra2に変更します。2番目の例では、renamedg操作のフェーズoneの実行中に構成ファイルのみを作成します。3番目の例では、renamedgのフェーズoneの実行で生成された構成ファイルを使用して、renamedg操作のフェーズtwoを実行します。

ディスク・グループの名前を変更後、新しいディスク・グループ名と一致するように、ディスク・グループ内のディスクの名前を変更できます。次に例を示します。

SQL> ALTER DISKGROUP fra2 RENAME DISKS ALL;

ディスクの名前変更の詳細は、ディスク・グループ内のディスクの名前変更を参照してください。

例4-12 renamedgの使用方法

$ renamedg dgname=fra1 newdgname=fra2 asm_diskstring='/devices/disk*'
      verbose=true

$ renamedg phase=one dgname=fra1 newdgname=fra2
      asm_diskstring='/devices/disk*' config=/tmp/fra2.conf verbose=true

$ renamedg phase=two dgname=fra1 newdgname=fra2 config=/tmp/fra2.conf
      verbose=true