最近为了分析一个Oracle 故障,我做了个小工具用于聚合排序Oracle RAC的日志,如tfactl打包的日志。

为什么需要它?
做过 Oracle RAC 故障排查的 DBA 都有过这样的经历:
- 一个节点异常,
alert_xxx.log、ocssd.log、ohasd.log、crsd.log、各种.trc散落在几十个目录里; - 每个文件的时间戳格式还不一样(CRS alert、RDBMS alert、listener、trace、syslog),没法直接按时间对比;
- 想看”这个时刻集群到底发生了什么”,得手工打开七八个文件对着时间戳来回翻,眼睛都快看花;
- 好不容易定位到某条 CRS-xxxx 错误,又要在海量日志里找它前后发生了什么。
OracleLogVisualizer 就是为了解决这个问题而生的。
它把指定目录下所有 Oracle 日志 / trace 文件解析后聚合成一张表,按时间排序、关键字高亮、实时过滤——相当于给 RAC 日志装了个”时间轴浏览器”。
核心特性
🕐 多格式时间戳统一解析
自动识别并归一化 5 种常见日志时间戳:
| 格式 | 示例 | 来源 |
yyyy-MM-dd HH:mm:ss.SSS | 2026-08-10 10:12:08.221 | CRS / 集群 alert |
*** yyyy-MM-ddTHH:mm:ss.uuuuuu+HH:MM | *** 2026-08-10T10:12:08.223482+08:00 | trace (.trc) |
EEE MMM dd HH:mm:ss yyyy | Wed Aug 10 10:12:08 2026 | RDBMS alert |
dd-MMM-yyyy HH:mm:ss | 10-AUG-2026 10:12:08 | listener |
MMM dd HH:mm:ss | Aug 10 10:12:08 hostname process: | syslog / messages |
日期与内容分行的日志也能自动合并:只含时间戳的行会被识别为”时间标记”,下一行内容自动继承该时间戳,合并成一行显示,不会产生空行或错位。
🎨 关键字高亮,问题一眼定位
- 内置 20+ 个 Oracle RAC / CRS 故障高频关键字,命中即红底加粗高亮:
ERROR、FAIL、ORA-、FATAL、eviction、misscount、has been evicted、reconfiguration、OHASD exiting、Reboot、CRS-8500、clssscProcessKillShutdown: Initiating shutdown due to、Unable to discover any voting files…… - 支持自定义关键字(逗号分隔),你的关注点由你说了算;
- 行级着色:ERROR 红、WARNING 黄,错误行在整张表中一眼可见。
🔍 灵活过滤
- 实时过滤:输入即过滤,支持
|分隔的多关键字; - 一键错误过滤:只看
ERROR|ORA-|FATAL; - 一键启动记录:筛选集群/数据库启动事件(CRS-8500、Starting ORACLE instance、cgroup 初始化);
- 快捷键:
Ctrl+O打开目录、Ctrl+F聚焦搜索框、Ctrl+L清空过滤; - 点击表头可按时间戳重新排序。
🚀 海量日志流畅加载
- 实测 110 万行级别的日志目录可以流畅加载、滚动、过滤;
- 后台线程分块加载(SwingWorker),界面不卡死;
- 解析过程带进度条,随时可取消。
📤 结果可导出
当前可见行一键导出为 CSV,方便二次分析或存档汇报。
技术内幕
- 纯 JDK Swing 实现,零第三方依赖,整个 JAR 只有 40KB,绿色免安装,拷到任何有 JVM 的机器即可运行;
- 智能目录策略:自动排除
incident、titanagent、zabbix目录下的.trc噪音;var/log下只解析message/messages,避免无关日志干扰; - 脏数据清理:自动过滤掉无时间戳或无消息内容的无效行;
- 粘性时间戳:无时间戳的续行(如堆栈、多行信息)自动继承最近时间戳,多行日志不会散架;
- 性能实测(Windows 环境):
| 日志目录 | 行数 | 解析耗时 |
| CRS trace | 661,443 | ≈ 6.5 s |
| ASM trace | 102,992 | ≈ 22 s |
| listener | 91,320 | ≈ 2.5 s |
| messages (syslog) | 19,411 | ≈ 0.8 s |
适用场景
- RAC 集群故障排查:快速还原”事故前后”完整时间线;
- 节点驱逐(eviction)分析:从海量日志中秒级定位 CSSD / OHASD 相关异常;
- 集群启动/关闭过程复盘:一键筛选启动记录,核对各资源拉起顺序;
- 数据库升级、迁移后的日志巡检;
- 一线 DBA 的日常日志快速预览。
下载与联系
- 作者:Zhang Weizhao
- 官网:www.anbob.com
- 邮箱:weejar@gmail.com(问题反馈、功能建议欢迎来信)
链接:https://pan.baidu.com/s/1lHkrlLZyGSFrvELHxRBkPA?pwd=uvr2 提取码:uvr2 复制这段内容后打开百度网盘手机App,操作更方便哦