Email: [email protected] 7 x 24 online support!
【Oracle ASMリカバリ】V$ASM_DISK HEADER_STATUSがProvisionedのトラブル解析を示される
	プロのOracle Databaseの復旧サービスを提供
携帯番号: +86 13764045638 メール:[email protected]
ユーザーが前に使用可能なdiskgroup をmountするときに,ASMのアラームログで以下のエラが示される:
SQL> ALTER DISKGROUP ALL MOUNT
	Tue Jul 19 09:31:09 2005
	Loaded ASM Library – Generic Linux, version 1.0.0 library for asmlib interface
	Tue Jul 19 09:31:09 2005
	NOTE: cache registered group DBFILE_GRP number=1 incarn=0xc3fd9b7d
	NOTE: cache registered group FLASHBACK_GRP number=2 incarn=0xc40d9b7e
	NOTE: cache dismounting group 1/0xC3FD9B7D (DBFILE_GRP)
	NOTE: dbwr not being msg’d to dismount
	ERROR: diskgroup DBFILE_GRP was not mounted
	NOTE: cache dismounting group 2/0xC40D9B7E (FLASHBACK_GRP)
	NOTE: dbwr not being msg’d to dismount
	ERROR: diskgroup FLASHBACK_GRP was not mounted
[oracle@vrh8 ~]$ oerr ora 15032
	15032, 00000, “not all alterations performed”
	// *Cause: At least one ALTER DISKGROUP action failed.
	// *Action: Check the other messages issued along with this summary error.
	//
	[oracle@vrh8 ~]$ oerr ora 15063
	15063, 00000, “ASM discovered an insufficient number of disks for diskgroup \”%s\””
	// *Cause: ASM was unable to find a sufficient number of disks belonging to the
	// diskgroup to continue the operation.
	// *Action: Check that the disks in the diskgroup are present and functioning,
	// that the owner of the ORACLE binary has read/write permission to
	// the disks, and that the ASM_DISKSTRING initialization parameter
	// has been set correctly. Verify that ASM discovers the appropriate
	// disks by querying V$ASM_DISK from the ASM instance.
	//
主に三つのエラが現れる:
	ORA-15032: not all alterations performed
	ORA-15063: diskgroup “FLASHBACK_GRP” lacks quorum of 2 PST disks; 0 found
	ORA-15063: diskgroup “DBFILE_GRP” lacks quorum of 2 PST disks; 0 found
SQL> select path, MOUNT_STATUS, HEADER_STATUS, MODE_STATUS, STATE from v$asm_disk;
	PATH MOUNT_S HEADER_STATUS MODE_ST STATE
	————- ——- ————- ——- ——–
	/dev/raw/raw1 CLOSED PROVISIONED ONLINE NORMAL
一般的に、このトラブルの原因はハードウェアトラブルあるいはストレージハードウェアがアップグレードしている。
Kfedでdisk headerをチェックする:
	kfed read /dev/raw/raw1
	kfbh.type: 1 ; 0x002: KFBTYP_DISKHEAD
	kfdhdb.driver.provstr: ORCLDISKASM1 ; 0x000: length=12
	kfdhdb.grptyp: 1 ; 0x026: KFDGTP_EXTERNAL
	kfdhdb.hdrsts: 3 ; 0x027: KFDHDR_MEMBER
	kfdhdb.dskname: ASM1 ; 0x028: length=4
	kfdhdb.grpname: DBFILE_GRP ; 0x048: length=10
	kfdhdb.fgname: ASM1 ; 0x068: length=4
	kfdhdb.capname: ; 0x088: length=0
	kfdhdb.dskname: ASM1 ; 0x028: length=4
	kfdhdb.grpname: DBFILE_GRP ; 0x048: length=10
	kfdhdb.fgname: ASM1 ; 0x068: length=4
	kfdhdb.capname: ; 0x088: length=0
kfdhdb.hdrsts: 3 ; 0x027: KFDHDR_MEMBER, KFDHDR_MEMBERを観察して、そのheader状態が実際にはMEMBERだと説明してください。けどV$ASM_DISK.HEADER_STATUS はPROVISIONEDと映して、二つには一致していない。
disk headerでkfdhdb.hdrsts がdiskの状態を標識した。次のテーブルでいくつかの状態のディスクライブを含んでいる:
	 
| kfdhdb.hdrsts | ディスクライブ | 
| MEMBER | 今のdiskgroupのdiskに属している | 
| FORMER | このdiskは前にあるdiskgroupに属しているが、そのdiskgroupも削除された | 
| CANDIDATE | 裸のマシンを使うときに、新しいdiskgroupに使われるdisk | 
| PROVISIONED | Asmlibを使うと、新しいdiskgroupに使われるdisk | 
もしkfed readがその状態は0x027: KFDHDR_MEMBERの場合に、V$ASM_DISKがPROVISIONEDと示すわけにはいかない。
Checksumが正確ではない場合に、V$ASM_DISK.HEADER_STATUSがPROVISIONEDと示すかもしれない。
例えば、ハードウェアトラブルがheaderの部分が正常を示すが、あるいはchecksumだけが正確ではないと示される。Kfedでそのトラブルをリカバリできる。流石に、 kfed、amdu 、adhuはASM三神器である。
