如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!
诗檀软件专业数据库修复团队
服务热线 : 13764045638 QQ号:47079569 邮箱:service@parnassusdata.com
Oracle 数据库 – 企业版 – 10.2.0.5 及更高版本
Linux x86-64
症状
1] ASMlib 磁盘用于ASM磁盘和asm_diskstring – /dev/oracleasm/disks/*。
2] 由于丢失一个磁盘,一个ASM磁盘组无法安装。
ASM alert.log中的例子
ERROR: diskgroup ORADATA was not mounted
ORA-15032: not all alterations performed
ORA-15040: diskgroup is incomplete
ORA-15042: ASM disk “1” is missing from group number “3”
ERROR: ALTER DISKGROUP ORADATA MOUNT /* asm agent *//* {2:28028:2} */
变化
HDLM 驱动程序已安装,系统已经重新启动
原因
ASMLIB标签丢失,但标签丢失的根本原因尚不明确。
举例
/dev/sdo1 should have ORADATA2 lable in kfdhdb.driver.provstr column below.
$ kfed read /dev/sdo1
/dev/sdo1
kfbh.endian: 1 ; 0x000: 0x01
kfbh.hard: 130 ; 0x001: 0x82
kfbh.type: 1 ; 0x002: KFBTYP_DISKHEAD
kfbh.datfmt: 1 ; 0x003: 0x01
kfbh.block.blk: 0 ; 0x004: blk=0
kfbh.block.obj: 2147483649 ; 0x008: disk=1
kfbh.check: 4287780181 ; 0x00c: 0xff925555
kfbh.fcn.base: 0 ; 0x010: 0x00000000
kfbh.fcn.wrap: 0 ; 0x014: 0x00000000
kfbh.spare1: 0 ; 0x018: 0x00000000
kfbh.spare2: 0 ; 0x01c: 0x00000000
kfdhdb.driver.provstr: ORCLDISK ; 0x000: length=8 <<<<<<<<<<<<<<———- Label missing, this should be ORCLDISKORADATA2
kfdhdb.driver.reserved[0]: 0 ; 0x008: 0x00000000
kfdhdb.driver.reserved[1]: 0 ; 0x00c: 0x00000000
kfdhdb.driver.reserved[2]: 0 ; 0x010: 0x00000000
kfdhdb.driver.reserved[3]: 0 ; 0x014: 0x00000000
kfdhdb.driver.reserved[4]: 0 ; 0x018: 0x00000000
kfdhdb.driver.reserved[5]: 0 ; 0x01c: 0x00000000
kfdhdb.compat: 186646528 ; 0x020: 0x0b200000
kfdhdb.dsknum: 1 ; 0x024: 0x0001
kfdhdb.grptyp: 1 ; 0x026: KFDGTP_EXTERNAL
kfdhdb.hdrsts: 3 ; 0x027: KFDHDR_MEMBER
kfdhdb.dskname: ORADATA_0001 ; 0x028: length=13
kfdhdb.grpname: ORADATA ; 0x048: length=8
kfdhdb.fgname: ORADATA_0001 ; 0x068: length=13
解决方案
关闭CRS,包括服务器上的ASM和RDBMS,并以root用户身份使用下列命令,放置丢失的标签背面
[root@bin]# /etc/init.d/oracleasm force-renamedisk /dev/sdo1 ORADATA2
[root@bin]# /usr/sbin/asmtool -I -l “/dev/oracleasm” -n /dev/sdo1 -a label
asmtool: Disk “/dev/sdo1” is marked an ASM disk with the label “ORADATA2”
[root@bin]# /etc/init.d/oracleasm scandisks
这之后一切都开始运行。
Comment