当oracle rac出问题时,很多人往往不知道从何查起,我根据自己在生产上排查的经验,说一下自己的排查思路。
1、date
2、不同步的进行同步,在两个节点上执行:
ntpdate -u 1.cn.pool.ntp.org
3、重启有问题的节点
【时间不同步,断电后数据库启动时crs启动失败导致asm启动失败,最后数据库启动失败,asm日志信息报i/o错误、找不到磁盘组等,可能会误导问题的定位,其实只是时间不同步导致的问题,找到问题的根源,重启即可】
ping 私有ip,vip,如果不通,先按下面步骤操作:
1、 查看防火墙状态:service iptables status
2、 如果防火墙是开的,就关闭:service iptables stop
3、 设置防火墙不要开机启动:chkconfig iptables off
4、 检查上一步是否设置成功:chkconfig --list iptables
关闭防火墙
重启有问题节点数据库即可。
归档日志满的话会导致数据库异常,删除过期日志可解决。
1、 进入grid 用户,asmcmd,输入lsdg查看磁盘情况,删除前和删除后做个对比,就知道腾出多少空间了:
su – grid
asmcmd
lsdg
2、 用rman来删除,不要手动删除
su – oracle
rman target /
crosscheck archivelog all;//检查控制文件和实际物理文件的差别。
//删除7天前日志
delete noprompt archivelog all completed before 'sysdate-7';
//将过期的日志删除:
delete noprompt expired archivelog all;
delete noprompt obsolete【或者delete noprompt obsolete until time 'sysdate-7' ;
】
到这里,归档删除完了
3、 查看腾出多少空间,如果腾出的空间还不够,在ASM管理模式下手工删除方法:【有双实例的,每个实例都进去检查一下是否有过期归档日志】
ASMCMD>cd archivelog
ASMCMD>ls
(ASMCMD>rm -f +data/zgdb/archivelog/2013_10_31/t* 删除2013年10月31日的归档日志)
ASMCMD>rm –rf ./2016* 删除所有2016年文件夹及文件夹下的归档日志文件
手动删除日志
把归档日志物理文件删除后,但是还没完全把归档日志删除干净,需要检验同步。登录rman,执行如命令:
su - oracle
rman target /
RMAN> crosscheck archivelog all;
RMAN>delete expired archivelog all;
【补充】
查询每天的归档产生的情况:
SELECT TRUNC(FIRST_TIME) "TIME",SUM(BLOCK_SIZE * BLOCKS) / 1024 / 1024 / 1024 "SIZE(GB)"FROM V$ARCHIVED_LOG GROUP BY TRUNC(FIRST_TIME);
查询每天的归档产生的情况
查询最近7天每天归档产生情况,在上条sql中加过滤条件:
SELECT TRUNC(FIRST_TIME) "TIME",SUM(BLOCK_SIZE * BLOCKS) / 1024 / 1024 / 1024 "SIZE(GB)"FROM V$ARCHIVED_LOG GROUP BY TRUNC(FIRST_TIME) having TRUNC(FIRST_TIME) >= TRUNC(sysdate -7);
ps –ef | grep d.bin
进入oracle 的bin目录下:
cd /u01/App/11.2.0/grid/bin/
执行:
./crsctl stat res -t
或者,进入grid用户,直接执行crsctl stat res -t
[grid@rac1 ~]$ crsctl check cluster
节点1
节点2
crsctl check crs //只检查本节点
Grid相关日志:
/u01/app/11.2.0/grid/log/node1
./crsctl start cluster -n db1 //-n后是节点名
[oracle@rac1 ~]$ srvctl status asm
ASM is running on rac1,rac2
Asm相关日志路径:
/u01/app/grid/diag/asm/+asm/+ASM1/trace
重要的日志文件:alert_+ASM1.log
srvctl config asm -a
srvctl start asm -n db1 // -n后是节点名字
还有其他检查,像检查节点应用状态及配置、查看数据库配置、检查scan ip、检查 VIP的状态及配置等,篇幅原因就先不再介绍了。可以关注我,如果以后遇到oracle rac故障需要排查,我们可以进行沟通交流。