刚从山东回来,一堆麻烦事情。这不,快要下班了,客户说oracle rac挂了。
这是有两个节点和一个共享存储组成的rac系统,安装了oracle 11g r2.我试着登录系统查看,发现一个服务器不能联通。另一个上去了,执行df -h ,发现一个分区 /tmp被塞满了。再进子目录查看,发现一堆0926.dmp这样的文件,每个文件大小都在600M左右。看来是程序员在执行exp备份操作,一问,果然如此。
再从rac的私有网络,试着登录另一个节点,居然进去了。这说明心跳检查是正常的。
在跟其他人沟通后,我采取如下步骤:
1、清理/tmp空间,手动删除陈旧的文件,释放出至少50%的空间。
2、关闭所有oracle实例 srvctl stop instance -d sery_db -i sery1 , srvctl stop instance -d sery_db -i sery2.
3、查看不能从外面访问的那个服务器的网络状态,检查方法为:
(1)ip add 检查地址是否存在
(2)mii-tool 检查网线是否正常
(3)service network start 重启网络.嘿嘿,居然正常了。
4、检查asm文件系统,步骤为:
(1)ps aux | grep asm检查进程
(2) su - grid ; asmcmd 进去查看日志文件、数据文件是否存在。还好它们都在呢。
5、启动实例,然后用sqlplus登录检查数据文件等。
主要原因:oracle会根据需要往/tmp分区写入数据(比如排序等中间过程),如果文件系统满了,则写入失败,可能导致会话挂起。