























一个用于 Oracle 数据库的交互式性能诊断 Python 脚本,旨在简化 AWR、ASH 报告生成以及 SQL Trace 的开启与收集流程。
在 Oracle 数据库日常运维中,生成 AWR/ASH 报告和开启 SQL Trace 是排查性能问题的核心手段。然而,频繁连接数据库、查找快照、处理不同版本的函数签名差异往往耗时且容易出错。
本工具箱提供统一的命令行交互界面,自动处理 Oracle 11g 至 19c 的版本兼容性问题,让你只需几步简单的输入即可获取标准的 HTML/文本格式诊断报告,或快速开启会话级跟踪。
📊 AWR 报告生成
⚡ ASH 报告生成
YYYY-MM-DD HH24:MI:SS)和相对时间(如 15m, 2h)输入。DBMS_WORKLOAD_REPOSITORY.ASH_REPORT_* 函数签名。🔍 SQL Trace 辅助工具
ALTER SESSION / DBMS_SESSION)。DBMS_SYSTEM)。DBMS_MONITOR,带有危险操作警告)。tkprof 格式化工具使用说明。🛡️ 高兼容性 & 智能容错
PLS-00302、ORA-20019、DBMS_OUTPUT 缓冲区溢出等常见版本兼容性问题。oracledb 和 cx_Oracle 两种 Python 驱动。ORACLE_HOME 环境变量。oracledb (推荐) 或 cx_Oraclegit clone https://github.com/Zhh9126/Oracle-Performance-Collection-Tools.git
cd Oracle-Performance-Collection-Tools
pip install oracledb
python Oracle-Performance-Collection-Tools.py
按照终端提示输入数据库连接信息(用户名、密码、主机、端口、服务名),然后选择你需要的功能:
请选择功能:
1. 生成 AWR 报告(基于快照)
2. 生成 ASH 报告(基于时间范围)
3. SQL Trace 辅助工具
q. 退出
--- AWR 报告生成 ---
显示最近多少小时的快照?(直接回车显示全部): 24
DBID INST SNAP_ID BEGIN_TIME END_TIME
--------------------------------------------------------------------------------
1323206914 1 57 2026-04-17 16:46:52 2026-04-17 16:57:52
1323206914 1 58 2026-04-17 16:57:52 2026-04-17 18:00:03
请输入起始快照 ID: 57
请输入结束快照 ID: 58
报告格式 (html/text,默认 html):
正在生成 AWR 报告...
✓ 报告已保存至: ./awr_57_58_20260421_142355.html
--- ASH 报告生成 ---
选择输入方式 (1=绝对时间, 2=相对时间,默认1): 2
相对开始时间 (例如 1h): 1h
相对结束时间 (例如 0m 表示当前,直接回车=当前):
解析时间范围: 2026-04-21 13:30:00 至 2026-04-21 14:30:00
报告格式 (html/text,默认 html):
正在生成 ASH 报告...
✓ 报告已保存至: ./ash_20260421_133000_20260421_143000_20260421_142530.html
【SQL Trace 诊断工具】
请选择操作:
1. 跟踪当前会话
2. 跟踪指定会话(通过 SID 和 SERIAL#)
...
请输入选项: 2
请输入目标会话的 SID: 42
请输入目标会话的 SERIAL#: 9876
开启跟踪还是关闭跟踪?(start/stop): start
✓ 已开启会话 (SID=42, SERIAL#=9876) 的 SQL Trace。
预计 trace 文件: /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_12345.trc
你可以通过设置环境变量来预设连接参数,避免每次输入:
| 变量名 | 描述 | 示例 |
|---|---|---|
ORACLE_USER |
默认用户名 | system |
ORACLE_PASS |
默认密码(不推荐明文存储) | manager |
ORACLE_HOST |
默认主机地址 | 192.168.1.100 |
ORACLE_PORT |
默认端口 | 1521 |
ORACLE_SERVICE |
默认服务名 | orcl |
ORACLE_REPORT_DIR |
报告输出目录 | /home/oracle/reports |
.
├── ora_perf_toolkit.py # 主程序脚本
├── README.md # 项目说明文档
└── LICENSE # 开源许可证
SELECT_CATALOG_ROLE 角色或拥有 DBA_HIST_* 视图的访问权限。SQL Trace 的部分功能(如跟踪其他会话)可能需要 SYSDBA 权限。欢迎提交 Issue 报告 Bug 或提出新功能建议。如果你想贡献代码,请遵循以下步骤:
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)本项目基于 MIT 许可证开源。详见 LICENSE 文件。
如果觉得这个工具有用,请给个 Star ⭐ 支持一下!
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。