ASM を味わう ~ ASM をメンテする ~ その7
<ASM を味わう ~ ASM をメンテする ~ その7>
ペンネーム:ダーリン
先週は勢いあまって再び Oracle を壊してしまいました。なので、今週はもう
一度データを壊すところからスタートです。( 最近壊してばっかり。)
さて、同じように構築した環境を準備しました。 では、はじめましょう。
/dev/raw/raw1 にデータを書き込みます。
$ dd if=/dev/random of=/dev/raw/raw1
読み込んだブロック数は 0+607
書き込んだブロック数は 51+0
で、ステータスを確認します。
SQL> select mount_status 2 , header_status 3 , mode_status 4 , state 5 , total_mb 6 , free_mb 7 , name 8 , path 9 from v$asm_disk; MOUNT_STATUS HEADER_STATUS MODE_STATUS STATE TOTAL_MB FREE_MB NAME PATH ------------- --------------- ------------ ------- ---------- ---------- ---------- -------------- CACHED MEMBER ONLINE NORMAL 10236 9880 DATA_0004 /dev/raw/raw5 CACHED MEMBER ONLINE NORMAL 10236 9877 DATA_0003 /dev/raw/raw4 CACHED MEMBER ONLINE NORMAL 10236 9874 DATA_0002 /dev/raw/raw3 CACHED MEMBER ONLINE NORMAL 10236 9877 DATA_0001 /dev/raw/raw2 CACHED CANDIDATE ONLINE NORMAL 10236 0 DATA_0000 /dev/raw/raw1
今回は、一本だけ壊してようすを見ることにしましょう。 さあ、DISK を
DROP します。
SQL> alter diskgroup data drop disk data_0000; Diskgroup altered.
むむ。 DISK がカリカリと動いている。
SQL> select mount_status 2 , header_status 3 , mode_status 4 , state 5 , total_mb 6 , free_mb 7 , name 8 , path 9 from v$asm_disk; MOUNT_STATUS HEADER_STATUS MODE_STATUS STATE TOTAL_MB FREE_MB NAME PATH ------------- --------------- ------------ -------- ---------- ---------- ---------- -------------- CACHED MEMBER ONLINE NORMAL 10236 9880 DATA_0004 /dev/raw/raw5 CACHED MEMBER ONLINE NORMAL 10236 9877 DATA_0003 /dev/raw/raw4 CACHED MEMBER ONLINE NORMAL 10236 9874 DATA_0002 /dev/raw/raw3 CACHED MEMBER ONLINE NORMAL 10236 9877 DATA_0001 /dev/raw/raw2 CACHED CANDIDATE ONLINE DROPPING 10236 0 DATA_0000 /dev/raw/raw1 SQL> / MOUNT_STATUS HEADER_STATUS MODE_STATUS STATE TOTAL_MB FREE_MB NAME PATH ------------- --------------- ------------ -------- ---------- ---------- ---------- -------------- CACHED MEMBER ONLINE NORMAL 10236 9826 DATA_0004 /dev/raw/raw5 CACHED MEMBER ONLINE NORMAL 10236 9824 DATA_0003 /dev/raw/raw4 CACHED MEMBER ONLINE NORMAL 10236 9823 DATA_0002 /dev/raw/raw3 CACHED MEMBER ONLINE NORMAL 10236 9827 DATA_0001 /dev/raw/raw2 CACHED CANDIDATE OFFLINE DROPPING 10236 0 DATA_0000 /dev/raw/raw1
DROP していない DISK の FREE_MB が減少してきたので、”DATA_0000″ の
DISK のデータを移動しているようです。でも、壊れたデータを移動されても
困るのですが、この後どうなるのでしょうか。
SQL> / MOUNT_STATUS HEADER_STATUS MODE_STATUS STATE TOTAL_MB FREE_MB NAME PATH ------------- --------------- ------------ -------- ---------- ---------- ---------- -------------- CACHED MEMBER ONLINE NORMAL 10236 9779 DATA_0004 /dev/raw/raw5 CACHED MEMBER ONLINE NORMAL 10236 9785 DATA_0003 /dev/raw/raw4 CACHED MEMBER ONLINE NORMAL 10236 9789 DATA_0002 /dev/raw/raw3 CACHED MEMBER ONLINE NORMAL 10236 9796 DATA_0001 /dev/raw/raw2 CACHED CANDIDATE OFFLINE HUNG 10236 0 DATA_0000 /dev/raw/raw1
んげっ!! 今度は “HUNG” です。
HUNG - 削除中のディスクからデータを再配置するための十分な領域がないた
め、ディスク削除操作を続行できない。
(「Oracle(R) Database リファレンス 10g リリース1(10.1)」から抜粋 )
そんなはずはありません。FREE_MB は DATA_0001 ~ DATA_0004 まであわせて
39GB 以上空いています。いったいどうなっているんでしょうか?
ちなみに、ASM にも alert.log があります。何か出ていないでしょうか。
==================================================================== ...................... ...................... Tue Sep 13 17:57:35 2005 SQL> alter diskgroup data drop disk data_0000 Tue Sep 13 17:57:35 2005 ...................... ...................... WARNING: offlining mode 3 of disk 0/0x0 (DATA_0000) NOTE: cache closing disk 0: DATA_0000 path:/dev/raw/raw1 Tue Sep 13 17:59:21 2005 NOTE: stopping process ARB0 SUCCESS: rebalance completed for group 1/0xbc508a4b (DATA) <--(1) WARNING: offline disk DATA_0000 has references (0 AUs) ====================================================================
(1) に 「SUCCESS: rebalance completed for group 1/0xbc508a4b (DATA)」
と言う文字列が見えます。
どうやら、リバランス処理は正常に終了したようです。
( 本当に STATE 列の値は信用できませんね。)
つまり、”壊れたデータ” を “無事” 他の DISK に再配置完了したと言うことで
しょう。 … 怖い。
とにかく、ASM をメンテナンスするときは、最初に各 STATUS 列の内容を確認
した方がよさそうです。 しかも、STATUS がおかしいからといって「とりあえ
ず切り離しておこう」というのは危なそうです。なぜなら、おかしなデータも
そのまま、再配置しているようなので。
来週は、DISK を追加します。