咨询微信: dbservice1234 7 x 24 在线支持!

    你在这里

トラブルシューティング - ASM ディスクが発見/表示/検出されない問題

トラブルシューティング - ASM ディスクが発見/表示/検出されない問題

目的

このドキュメントはASMディスクが発見/表示/検出されない場合のトラブルシューティングに役立ちます。

通常、これは問題のあるディスクがV$ASM_DISKビューで表示されないことを意味します。

ディスクが存在していない/検出されないことを示す一般的なエラーは次の通りです。

ORA-15063: ディスク・グループ"string"に対するディスク数が不十分であることが、ASMにより検出されました 
ORA-15040: ディスク・グループが不完全です 
ORA-15042:ASMディスク"string"はグループ番号"string"にありません

トラブルシューティングの手順

ディスクは突然、既存のディスク·グループからなくなった場合... 

なくなったディスクを確認します。

非RAC環境、またはRAC環境のすべてのノードでこれらのエラーが表示される場合

    a) ASMアラートログを見つけて開きます (RAC環境にて複数のロが必要となる場合があります) 。
    b) ディスク·グループが最後に正常にマウントできた箇所を見つけます(ディスク一覧は表示されます) 。
    c) 最後の正常マウント以降に、ALTER DISKGROUP...ADD DISKの実行に成功した箇所を見つけます。
    d) 上記の b) と c) で確認できるディスクのリストを結合します。
    e) 結合したリストとV$ASM_DISKに表示されるリストを比較し、なくなったディスク(複数可能)を確定します。

RAC環境で1つ以上のノードでディスク·グループをマウントできる場合

    マウントできるノードとマウントできないノードのV$ASM_DISKのエントリを比較することで、なくなったディスク(複数可能)を特定できます。

以下はディスクが検出されない場合の問題解決に役立つ一連の手順です。

1) ASM_DISKSTRINGが正しく設定されていません

    パラメータ·ファイル、またはSHOW PARAMETERで、 ASM_DISKSTRINGの設定を確認します。
    ASM_DISKSTRING が 設定されていない場合は、次のデフォルト値は使用されます。

各OSにおけるASM_DISKSTRINGのデフォルト値

    OS                                    デフォルトの検出文字列
    =======================================
    Solaris (32/64 bit)                    /dev/rdsk/*
    Windows NT/XP                          \\.\orcldisk
    Linux (32/64 bit)                      /dev/raw/* 

    LINUX (ASMLIB)                         ORCL:*
    LINUX (ASMLIB)                        /dev/oracleasm/disks/* (予備手段)

    HPUX                                  /dev/rdsk/* 
    HP-UX(Tru 64)                         /dev/rdisk/*
    AIX                                   /dev/rhdisk*

   ASM_DISKSTRING設定されている場合、設定されているASM_DISKSTRINGに、ASMから検出する必要のあるディスクが含まれていることを確認してください。

2) オペレーティングシステムドライブの所有権

     ディスクがASMのOracleホームをインストールしたOSユーザーより所有され、かつ、適切なオーナーで正常にマウントされていることを確認してください。

3) オペレーティングシステムドライブのパーミッション

   ディスクレベルでのパーミッションが正しく設定されていることを確認してください。通常では、660となりますが、問題がある場合は、検証のために777を使用してください。

4) RACが使用されています

     RACが使用されている場合、ディスク·グループにディスクを追加する前に、ASMが動作しているまた動作予定のある全ノード上で、ディスクがすべて検出できる必要があります。

5) OSのユーティリティを使用して検出できないディスクを特定します

select * from v$asm_disk を実行していると同時に、RBALプロセスにTRUSS、またはSTRACEを実行することで、コマンドの実行結果にエラーがよく出力されます。

例: 
=========
セッション #1

strace -f -o /tmp/rbal.trc -p <OS pid of RBAL process>
  <また>
truss -ef -o /tmp/rbal.out -p <OS pid for RBAL process> 

セッション #2

select * from v$asm_disk

セッション #3

<CTRL-C>

rbal.outにエラーがあるかを確認します:

1147090: 1871929: chdir("dev/") = 0
1147090: 1871929: statx("rhdisk8, ", 0x0FFFFFFFFFFFAA80, 176, 010) Err#2 ENOENT

<< これは rhdisk8 が検出されないことを意味します >>

注意:ディスクの追加または削除の最中にクラッシュが発生した場合、問題のあるディスク(複数可能)がディスク·グループの一部として存在している可能性があります。そのため、上記のすべての手順を考慮に入れる必要があります。