如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!
诗檀软件专业数据库修复团队
服务热线 : 13764045638 QQ号:47079569 邮箱:service@parnassusdata.com
应用于:
Oracle数据库- 企业版- 版本10.2.0.1到11.2.0.2[发行10.2至11.2]
本文档中的信息适用于任何平台。
症状
1] V $ ASM_DISK视图显示磁盘头状态为 IGNORED ,且组号为“0”。
2]背景ASM跟踪文件对应的sqlplus显示类似于以下的消息。
Ignoring dsk because it is a duplicatekfdsk:0xb7b91620 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
disk: num: 21/47626513311654 grp: 0/47622597378048 compat: 10.1.0.0.0 dbcompat:10.1.0.0.0
fg: path: /dev/oracleasm/disks/ASM1 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
mnt: O hdr: M mode: v v(–) p(r-) a(-) d(-) sta: N flg: 1001
slot 65535 ddeslot 65535 numslots 65535 dtype 0 enc 0 part 0 flags 0
kfts: 2013/03/02 10:11:53.307000
kfts: 2013/11/15 01:18:09.263000
pcnt: 0 ()
kfkid: 0xb7bbf940, kfknm: , status: IDENTIFIED
fob: (KSFD)ba77c470, magic: bebe ausize: 0
kfdds: dn=21 inc=3915933606 dsk=0xb7b91620 usrp=0x2b50f0992118
kfkds 0x2b50f08b07f8, kfkid 0xb7bbf940, magic abbe, libnum 0, bpau 0, fob 0xba77dec0
Ignoring dsk because it is a duplicatekfdsk:0xb7b919a0
原因
这种情况是不正常的,但在下面的情形中可能会发生。
1] 如果有2个以上磁盘被迫退出正常冗余创建的同一个磁盘组,而磁盘组仍在安装,这些磁盘显示“成员”,组数为“0”。如果新的盘或是现有的磁盘以不同的顺序被添加到磁盘组,那么有可能相同的磁盘编号与磁盘名称会被分配给一些磁盘,其原本被分配给尚未被添加的退出的磁盘。
当SAN failgroup崩溃,或者数据库云服务器的一个小节点崩溃时,这种情况可能发生。
2]在RAC环境中,添加到现有磁盘组的ASM磁盘从所有节点都可以看到。如果一个节点上看不到添加的磁盘,该操作将失败,出现“ORA-15075 盘在不可见的集群范围内”,但正添加的磁盘保留新盘数量,磁盘名称显示“成员” 状态。此后,新的磁盘成功添加到RAC节点,新盘有机会得到相同的磁盘数和磁盘名,添加失败的盘摆在首位。
显示为IGNORED状态的这些磁盘试图加入一个现有的磁盘组时,会发生类似于下面的错误。
SQL> alter diskgroup data add failgroup F2 disk ‘/dev/oracleasm/disks/ASM1’ ;
alter diskgroup data add failgroup F2 disk ‘/dev/oracleasm/disks/ASM1’
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15033: disk ‘/dev/oracleasm/disks/ASM1’ belongs to diskgroup “DATA”
3] 错误的多路径配置,其中多项单设备路径在asm_diskstring中可见。
解决方案
IGNORED状态对ASM磁盘可见,ASM磁盘不属于任何当前安装的磁盘组,但它显示了相同的磁盘头信息,其中一个磁盘是当前安装的,如磁盘数,磁盘名,磁盘组,其地位是“成员”,组号为“0”。
使用附录中的KFED说明,检查是否至少2个ASM磁盘显示相同的磁盘头信息。
1] 若磁盘退出前的磁盘组当前正在安装,尝试使用强制选项将显示为 “IGNORED”状态的磁盘添加到磁盘退出前原本的磁盘组中。请参阅文档 Document:946213.1-关于如何将磁盘添加回原来的磁盘组。
例如)
SQL> alter diskgroup data add failgroup F2 disk ‘/dev/oracleasm/disks/ASM1’ force ;
Diskgroup altered
2] 若原本的磁盘当前不安装,V$ ASM_DISK显示正确的磁盘为 MEMBER,比较磁盘目录与创建时间。如果一个磁盘显示相同的磁盘编号,但创建时间与磁盘目录不同,其状态显示为 IGNORED。
example) /dev/oracleasm/disks/ASM1 and /dev/oacleasm/disks/ASM2 disks below show the same disk header information from kfed output.
SQL>@diskifno
G_N D_N NAME FAILGROUP M_STATU H_STATUS MO_STAT STATE PATH M_DATE
—- —- ———– ———- ——- ———- ——- ——– ————————- ——————–
0 0 CLOSED MEMBER ONLINE NORMAL /dev/oracleasm/disks/ASM2 2011/02/25 21:07:49
0 1 IGNORED MEMBER ONLINE NORMAL /dev/oracleasm/disks/ASM1 2011/02/25 18:08:43
0 2 CLOSED MEMBER ONLINE NORMAL /dev/oracleasm/disks/ASM4 2011/02/25 20:59:01
0 3 CLOSED MEMBER ONLINE NORMAL /dev/oracleasm/disks/ASM3 2011/02/25 21:07:49
1 0 PLAY_0000 PLAY_0000 CACHED MEMBER ONLINE NORMAL /dev/oracleasm/disks/ASM5 2011/02/20 20:52:31
3 0 KYLE_0000 KYLE_0000 CACHED MEMBER ONLINE NORMAL /dev/oracleasm/disks/ASM6 2011/02/20 20:52:44
2-1. ASM自动放弃显示为 IGNORED 状态的磁盘,安装DATA磁盘组时比较创建时间与称为磁盘目录的ASM元数据。
SQL> alter diskgroup data mount ;
Diskgroup altered.
注意 /dev/oracleasm/disks/ASM1 已经从 DATA 磁盘组排除。
SQL> @diskinfo
G_N D_N NAME FAILGROUP M_STATU H_STATUS MO_STAT STATE PATH M_DATE
—- —- ———– ———- ——- ———- ——- ——– ————————- ——————–
0 1 IGNORED MEMBER ONLINE NORMAL /dev/oracleasm/disks/ASM1 2011/02/25 18:08:43 <<<<<<<<<<<<<<<<<<< Here, ASM1 has been excluded from DATA diskgroup
1 0 PLAY_0000 PLAY_0000 CACHED MEMBER ONLINE NORMAL /dev/oracleasm/disks/ASM5 2011/02/20 20:52:31
2 0 DATA_0000 F1 CACHED MEMBER ONLINE NORMAL /dev/oracleasm/disks/ASM2 2011/02/25 21:09:47
2 1 DATA_0001 F2 CACHED MEMBER ONLINE NORMAL /dev/oracleasm/disks/ASM4 2011/02/25 21:09:47
2 2 DATA_0002 F2 CACHED MEMBER ONLINE NORMAL /dev/oracleasm/disks/ASM3 2011/02/25 21:09:47
3 0 KYLE_0000 KYLE_0000 CACHED MEMBER ONLINE NORMAL /dev/oracleasm/disks/ASM6 2011/02/20 20:52:44
2-2. 然后可以使用步骤1中所述的强制选项加入显示为IGNORED的磁盘。
附录
1.如何检查是否有复制磁盘,显示相同的磁盘头信息。
o检查KFED可执行文件是否存在于 <ASM_HOME/bin>
o如果KFED可执行文件不存在于$ GRID_HOME/ bin,使用以下方式重建KFED。 How to check whether there are duplication disks showing the same disk header information.
$cd $ORACLE_HOME/rdbms/lib
$make -f ins_rdbms.mk ikfed
o 提取磁盘的KFED输出。如果以下盘头信息相同,那么我们认为 2个磁盘相同。
注 该操作中,相同的磁盘mntstmp.hi和mntstmp.lo(磁盘安装时间)可能不同。
ex) $ kfed read /dev/oracleasm/disks/ASM1 | egrep ‘dsknum|dskname|grpname|fgname|hdrsts|mntstmp.hi|mntstmp.lo’
- diskinfo.sql
set linesize 200
col g_name format a10
col g_n format 99
col d_n format 999
col m_status format a7
col mo_status format a7
col h_status format a11
col name format a30
col path format a45
col failgroup format a15
select g.group_number g_n,
g.disk_number d_n,
g.name name,
g.failgroup,
g.mount_status m_status,
g.header_status h_status,
g.mode_status mo_status,
g.path ,
to_char(g.mount_date, ‘YYYY/MM/DD HH24:MI:SS’) m_date
from v$asm_disk g
order by g_n, d_n
/
Comment