ORA-15032,ORA-15075(ディスクグループ追加ディスクエラー)


一:バージョン情報
OSバージョンAIX 6109
データベースのバージョン  11.2.0.3(PSU5)
 
二:誤った説明
asmディスクグループにディスクを追加するときに次のエラーが表示されます.
ORA-15032: not all alterations performed 
Cause: At least one ALTER DISKGROUP action failed.
 Action: Check the other messages issued along with this summary error.
ORA-15075: disk(s) are not visible cluster-wide 
Cause: An ALTER DISKGROUP ADD DISK command specified a disk that could not be discovered by one or more nodes in a RAC cluster configuration.
 Action: Determine which disks are causing the problem from the GV$OSM_DISK fixed view. Check operating system permissions for the device and the storage sub-system configuration on each node in a RAC cluster that cannot identify the disk.

#ORA-15075エラーメッセージに基づいて、エラーの原因を大体知ることができます.追加したディスクグループはすべてのracノードで表示されないからです.この考え方に基づいてオペレーティングシステムを見てみると、racの2番目のノードにディスクの所有者と所有グループがrootであることがわかり、これが問題のようです.
 
三:解決策
1.現在のディスク情報を2つのノードで確認
ノード1
<p>SQL> select GROUP_NUMBER,DISK_NUMBER,MOUNT_STATUS,HEADER_STATUS,NAME,PATH from v$asm_disk;    </p><p>GROUP_NUMBER DISK_NUMBER MOUNT_S HEADER_STATU NAME                           PATH
------------ ----------- ------- ------------ ------------------------------ --------------------------------------------------
           1           0 CACHED  MEMBER       CRSDG_0000                     /dev/rhdiskpower0
           1           1 CACHED  MEMBER       CRSDG_0001                     /dev/rhdiskpower1
........
           4          41 CACHED  MEMBER       DATA1DG_0041                   /dev/rhdiskpower223
           4          42 CACHED  MEMBER       DATA1DG_0042                   /dev/rhdiskpower224
           0           1 CLOSED  FORMER                                      /dev/rhdiskpower226
           0           0 CLOSED  FORMER                                      /dev/rhdiskpower225
</p>

ノード2
<p>SQL> select GROUP_NUMBER,DISK_NUMBER,MOUNT_STATUS,HEADER_STATUS,NAME,PATH from v$asm_disk;    </p><p>GROUP_NUMBER DISK_NUMBER MOUNT_S HEADER_STATU NAME                           PATH
------------ ----------- ------- ------------ ------------------------------ --------------------------------------------------
           1           0 CACHED  MEMBER       CRSDG_0000                     /dev/rhdiskpower0
           1           1 CACHED  MEMBER       CRSDG_0001                     /dev/rhdiskpower1
........
           4          41 CACHED  MEMBER       DATA1DG_0041                   /dev/rhdiskpower223
           4          42 CACHED  MEMBER       DATA1DG_0042                   /dev/rhdiskpower224</p>

#ノード1で実行したディスク追加操作です.最初のノードには2つのGROUP_が表示されます.NUMBERは0、HEADER_STATUSはFORMERのディスクrhdiskpower 225とrhdiskpower 226(つまり私が追加した2つのディスク)ですが、ノード2では検出されません
 
2.ノード2でrhdiskpower 225とrhdiskpower 226のグループを変更し、マスターと権限によってASMが使用できるようにする
変更後、2つのノードasm disk情報を再クエリー
ノード1
SQL> select GROUP_NUMBER,DISK_NUMBER,MOUNT_STATUS,HEADER_STATUS,NAME,PATH from v$asm_disk;    

GROUP_NUMBER DISK_NUMBER MOUNT_S HEADER_STATU NAME                           PATH
------------ ----------- ------- ------------ ------------------------------ --------------------------------------------------
           1           0 CACHED  MEMBER       CRSDG_0000                     /dev/rhdiskpower0
           1           1 CACHED  MEMBER       CRSDG_0001                     /dev/rhdiskpower1
........
           4          41 CACHED  MEMBER       DATA1DG_0041                   /dev/rhdiskpower223
           4          42 CACHED  MEMBER       DATA1DG_0042                   /dev/rhdiskpower224
           0           1 CLOSED  FORMER                                      /dev/rhdiskpower226
           0           0 CLOSED  FORMER                                      /dev/rhdiskpower225

ノード2
SQL> select GROUP_NUMBER,DISK_NUMBER,MOUNT_STATUS,HEADER_STATUS,NAME,PATH from v$asm_disk;    

GROUP_NUMBER DISK_NUMBER MOUNT_S HEADER_STATU NAME                           PATH
------------ ----------- ------- ------------ ------------------------------ --------------------------------------------------
           1           0 CACHED  MEMBER       CRSDG_0000                     /dev/rhdiskpower0
           1           1 CACHED  MEMBER       CRSDG_0001                     /dev/rhdiskpower1
........
           4          41 CACHED  MEMBER       DATA1DG_0041                   /dev/rhdiskpower223
           4          42 CACHED  MEMBER       DATA1DG_0042                   /dev/rhdiskpower224
           0           1 CLOSED  FORMER                                      /dev/rhdiskpower226
           0           0 CLOSED  FORMER                                      /dev/rhdiskpower225

#ノード1と2には225と226の2つのディスクが表示されます(v$asm_diskgroupには0というディスクグループはありません).
 
3.ディスクの追加操作を再度実行する
 
4.ディスクの追加に成功しました
 
##エラーが処理されていないため、最初は2つのディスクがv$asm_にあることに気づきました.diskビューで調べられましたが、この2つのディスクを削除してから再追加するべきではないでしょうか.しかし、4番のディスクグループ(私が追加したターゲットディスクグループ)にはこの2つのディスクがありません.v$asm_diskgroupにも0番ディスクグループはありません.どうやって削除しますか?それともMOSに助けを求めて、次の討論を見つけます
How to remove ASM disk from v$asm_disk with「FORMER」statusにこんな言葉が
As we see the header_status as FORMER and group_number as zero, this disk is not a part of any diskgroup. So there is no need to drop again. Just to be absolutely sure, you can query gv$asm_operation to see no rows, to confirm there is no pending rebalance.
This disk can be removed from the OS, then you will not see the row in v$asm_disk. You can also change the ownership/permission of this disk, say to root:disk / 600, and then also the row will disappear from v$asm_disk.

ここでは「header_statusはFORMER、group_numberが0のディスクはいずれのディスクグループにも属していない」と述べているので、add diskを直接再実行しても問題ありません.