web-dev-qa-db-ja.com

Oracleasm deletedisk failedディスクをクリアできません

ASMディスクグループからディスクを削除しました:

> ALTER DISKGROUP DATA01 DROP DISK DISK1;

Oracleはリバランス操作を行った後、ディスクを削除しました。

次に、ASMライブラリからディスクを削除して、ディスクをシステムに戻します。

# oracleasm deletedisk -v DISK1
  Clearing disk header: oracleasm-write-label: Unable to open device "/dev/oracleasm/disks/DISK1": 
  Device or resource busy failed
  Unable to clear disk "DISK1"

システムの詳細:11.2.0.1 2ノードRAC

ASMがディスクヘッダーをクリアしないのはなぜですか?詳細なログはどこにありますか?

------------------------------------ Edit1 --------- -----------------------------------

# fuser /dev/oracleasm/disks/DISK1

両方のノードで何も返しません

1
kupa

まず、DISK1にエクステントがないことを確認しました。

$ . oraenv
Oracle_SID = [+ASM1] ?

SQL> select PXN_KFFXP,  -- physical extent number
           XNUM_KFFXP, -- virtual extent number
           DISK_KFFXP, -- disk number
           AU_KFFXP    -- allocation unit number
    from X$KFFXP
    where DISK_KFFXP=1;

no rows selected

ディスクヘッダーをddでクリアしました。

# dd if=/dev/zero of=/dev/oracleasm/disks/DISK1 bs=1024 count=100
100+0 records in
100+0 records out
102400 bytes (102 kB) copied, 0.000156 seconds, 656 MB/s

:私のアロケーションユニットは1MBなので、bs = 1024を使用しています。

次に、oracleasmによってディスクを削除しました。

# oracleasm deletedisk DISK1
# oracleasm scandisks    <--Do this step on all nodes

実を言うと、2番目のノードで次のコマンドを実行すると、問題を解決するのに適した方法ではありません。

/sbin/blkid | grep oracleasm

/dev/sdg1: LABEL="DISK6" TYPE="oracleasm"
/dev/sdb1: LABEL="DISK1" TYPE="oracleasm"
/dev/sdh2: LABEL="DISK8" TYPE="oracleasm"
/dev/sdh3: LABEL="DISK9" TYPE="oracleasm"
/dev/sdh4: LABEL="DISK10" TYPE="oracleasm"
/dev/sdh1: LABEL="DISK7" TYPE="oracleasm"
/dev/sdi1: LABEL="DISK11" TYPE="oracleasm"
/dev/sdi2: LABEL="DISK12" TYPE="oracleasm"

ラベルDISK1が表示されます。

そのため、ddを使用してASMディスクヘッダーをクリアすると、いくつかのジャンクが残りました。

2
kupa

ヘッダーを消去することはクリーンな方法ではありません。

ルートとして実行するのが良い方法です:

oracleasm deletedisk -v <label>

ディスク<label>は、マークされていないデバイスを定義します。
ディスクの削除:完了

その場合は、各クラスターノードで繰り返します。

0
eric