rac修改异步IO导致挂死

今天遇到个rac的异步IO的问题,环境是oracle 10201的双节点rac,存储使用ASM,机器是HP 的PA的机器,操作系统是11.23.
在udump下的日志中有大量的报错:

看到这个报错,觉得很轻松,之前也遇到过,是oracle用户的dba组在操作系统上没有MLOCK的权限,在这里的文章,我也写到过。由于hp的11.23的系统,默认是开asyncdsk的。于是就用root给oracle用户的dba组加MLOCK权限了。

可是,等加完之后,问题就出现了:登录的提示就是不完整的,登录之后select所有信息,都会报没有连接数据库:

检查环境变量的正常的,确实登录的是gzxnh1的实例,而且,oracle的进程都是在的:

怎么回事?为何数据库登录有问题?登录上去报错没有连接,再次登录就报错connect to an idle instance?

进一步检查oracle的alertlog:

PZ99的进程死了?虽然在alertlog中没看到trace file指的是哪个,但是通过bdump下的最新一个trace文件可以看到:

在rac2上看:

看来确实和rac上刚刚开启的异步IO有关系了,既然这样,赶紧还是把异步IO关闭了吧:在操作系统级别用sam将asyncdsk改成unused,将/etc/privgroup文件删除,重启主机后,数据库启动,恢复正常。

PZ99是rac中并发进程的slave进程(可查看这里),查询Gv$视图需要该进程,目前我猜测是由于修改成了异步IO,导致原来正在执行的pz99进程挂死,sqlplus登录时无法查询gv$视图。如果此时kill掉PZ99的进程,说不定不用重启主机,关闭异步IO,就能解决故障了。

不过,还是想不通PZ99进程和异步IO间的关系,哪位如果也遇到这个情况,能说说当时你是怎么处理的么?

相关文章

3条评论

  1. re dhhb:由于os系统默认是开启异步IO的,数据库默认也是开启异步IO,只是oracle用户所在的dba组没MLOCK权限,因此在线操作了。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据