ASM错误集合

===
ASM在创建Disk Group的时候报错 ORA-15014: location '/u01/app/oracle/oradata/raw1' is not in the discovery set-

CREATE DISKGROUP dg1 DISK '/u01/app/oracle/oradata/raw1','/u01/app/oracle/oradata/raw2';
CREATE DISKGROUP dg1 DISK '/u01/app/oracle/oradata/raw1','/u01/app/oracle/oradata/raw2'
*
ERROR at line 1:
ORA-15018: diskgroup cannot be created
ORA-15031: disk specification '/u01/app/oracle/oradata/raw2' matches no disks
ORA-15014: location '/u01/app/oracle/oradata/raw2' is not in the discovery set

ASM discovery string 没有设置.
alter system set asm_diskstring='/u01/app/oracle/oradata/*' 再 create diskgroup 试试。
在pfile中加上 asm_diskstring='/u01/app/oracle/oradata/*

====

今天客户的一个RAC集群系统出现问题,一个节点被重启后,ASM磁盘组无法mount,报出如下错误:

 ORA-00600: internal error code, arguments: [kfgFinalize_2], [], [], [], [], [], [], []

检查trac文件如下:
Errors in file /u01/app/oracle/admin/+ASM/udump/+asm2_ora_11560.trc:
ORA-00600: internal error code, arguments: [kfgFinalize_2], [], [], [], [], [], [], []

ksedmp: internal or fatal error
ORA-00600: internal error code, arguments: [kfgFinalize_2], [], [], [], [], [], [], []
Current SQL statement for this session:
ALTER DISKGROUP ALL MOUNT


后面就是一堆二进制码,看来是磁盘组mount的时候出现问题。

查找各方面资料,发现是oracle的一个bug。

解决的办法有三个:

1、升级到10.2.0.3
2、打一个patch上去
3、把活着的那个节点的PMON进行kill掉,然后重新启动活着的节点的实例,使得强制对数据库进行恢复

评估一下,

方案1动作太大,而且这个版本没有测试使用过。

方案2的readme文件里明确写着这个patch可能会造成数据丢失,要在oracle support的支持下做,我没有support,

看来方案三比较可行,可问题是现在至少有一个节点活着,如果强行kill pmon进程后,节点2也起不来了,那就全玩完了,只有准备好切dataguard的方案先了。

此时在oracle的论坛上看见说不用kill pmon的,只要把两个节点都宕下来,然后启动就ok。

于是重启两个节点,看见见SUCCESS: diskgroup DATA was mounted提示出来了,放心了。

数据库全部起来后,业务回复正常!

===

问题:ASM创建磁盘组时出错
SQL> create diskgroup dgroup1 normal redundancy
2   failgroup fgroup1 disk 'ORCL:VOL1','ORCL:VOL2'
3   failgroup fgroup2 disk 'ORCL:VOL3','ORCL:VOL4';
create diskgroup dgroup1 normal redundancy
*
ERROR at line 1:
ORA-15018: diskgroup cannot be created
ORA-15031: disk specification 'ORCL:VOL4' matches no disks
ORA-15031: disk specification 'ORCL:VOL3' matches no disks
ORA-15031: disk specification 'ORCL:VOL2' matches no disks
ORA-15031: disk specification 'ORCL:VOL1' matches no disks

表v$asm_disk没有数据
select * from v$asm_disk;

原始设置:
asm_diskstring='ORCL:VOL*';

解决方法:
1、修改ASM的参数:
SQL>alter system set asm_diskstring='/dev/oracleasm/disks/*';

2、重启ASM实例:
SQL>shutdown immediate
SQL>startup
SQL>select * from v$asm_disk;--有数据了

3、使用硬盘的绝对路径创建:
SQL>create diskgroup dgroup1 normal redundancy
failgroup fgroup1 disk '/dev/oracleasm/disks/VOL1','/dev/oracleasm/disks/VOL2'
failgroup fgroup2 disk '/dev/oracleasm/disks/VOL3','/dev/oracleasm/disks/VOL4';

SQL> select name from v$asm_diskgroup;

NAME
----------
DGROUP1

=====

如果你的监听器注册为动态注册的话。修改服务器的listener.ora,变动态注册监听为静态注册。


SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
#skate add begin
     (SID_DESC =
(GLOBAL_DBNAME = +ASm)
(ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
(SID_NAME =+ASM)
)
#skate add end
)

posted on 2010-01-07 12:14  dhj  阅读(566)  评论(0编辑  收藏  举报

导航