在Ubuntu上进行Oracle数据库故障排查时,可以遵循以下步骤:
首次定位
- 查看alert日志:首先通过alert日志排查发现了
index unusable
,怀疑触发bug导致。可以参考Oracle官方文档Doc ID 849070.1。
- 检查索引状态:数据库分区索引出现了大面积失效,首先停机进行索引重建的工作。注意对分区表的TRUNCATE、DROP、EXCHANGE和SPLIT操作均会导致全局索引失效。
二次定位
- 分析ADDM报告:处理完索引失效的问题后,发现异常等待事件
gc buffer busy acquire
依然存在,索引和行锁消失了。接着分析ADDM报告,发现阻塞的SQL占用大量IO,数据库执行计划多变。
- 执行计划绑定和收集统计信息:进行执行计划绑定,收集统计信息。同时发现有大量并行,然后对取消了并行度。
最终定位
- AWR报告分析:异常等待事件
gc buffer busy acquire
依然存在,开始全方位定位分析,异常全部集中在网络。AWR报告进一步分析,发现实例心跳网络延迟很高。
- 硬件介入排查:系统日志发现新跳网卡持续出现down,up状态,而此时心跳网络ping发现节点间心跳网络有问题,延迟最高达到358ms。
整改措施
- 心跳线改造:本次心跳线为直连,容易出现接触不良的情况,改造方式为单网线实现网卡网卡聚合、心跳线直连替换位过交换机。
使用OSWatcher进行故障排查
- 安装OSWatcher:OSWatcher是一个用于捕获操作系统性能指标的实用程序,符合Oracle的标准许可条款。可以在Oracle支持网站上下载OSWatcher。
通过上述步骤,可以系统地进行Oracle数据库在Ubuntu上的故障排查。确保遵循最佳实践,如在每个运行Oracle实例的节点上安装并运行OSWatcher,可以帮助更快地解决性能问题。