客户发来报告,说是在 RAC 环境,每天进行这种测试,是可以成功的。
sqlplus sys/password@hostname / as sysdba
但是某一天,似乎 GI 崩溃了。执行 下面的命令,一直没有返回结果:
$ crsctl stat res -t
而另外一个节点,执行时,返回如下的信息:
$crsctl stat res -t CRS-4535: Unable to communicate with Cluster Ready Services CRS-4000: Command Status failed or completed with an error. $
但是,让客户感到奇怪的事情发生了:
如果客户用普通用户远程连接数据库,是可以成功的,但是如果用 sys 用户远程连接数据库,则失败。
其实这个现象与 GI 的动作有关,CRSD 进程在 sys 用户来访问数据库时,会去读取 password文件,来对比用户提供的口令是否和 password 文件中的匹配。
当 GI 已经 hang 住时,它根本没有办法访问 password 文件,所以,sys用户访问数据库时,会失败,而普通用户的访问,则可以成功。