Oracle Inspector 是一款开源的Oracle数据库健康检查工具,能够快速采集数据库核心指标并生成专业的健康检查报告。支持单实例检查、多数据库批量巡检,输出Word详细报告或Excel汇总报告,帮助DBA及时发现数据库隐患。
- ✅ 一键巡检:自动采集数据库版本、创建时间、实例信息、表空间使用率、大表TOP10、锁等待、SGA/PGA内存使用、CPU负载等关键指标
- ✅ 主机资源监控:获取运行Oracle的主机磁盘、内存、CPU使用率(支持Windows/Linux)
- ✅ 双报告模式:生成Word详细报告(逐库详细分析)或Excel批量汇总报告(多库对比)
- ✅ 灵活部署:支持单机交互式输入、Excel模板批量导入数据库连接
- ✅ 权限友好:自动捕获权限不足的SQL并给出提示,不中断巡检流程
- ✅ 性能优化:报告生成过程经过优化,避免CPU占用过高
- ✅ 试用授权:内置366天试用许可证,到期后可重新生成
- Python 3.6 或更高版本
- Oracle客户端(Basic或Instant Client)
- 操作系统:Windows / Linux / macOS
-
克隆或下载代码
git clone https://github.com/Zhh9126/Oracledbcheck.git cd oracle-inspector -
安装Python依赖
pip install -r requirements.txt
依赖列表:
cx_Oracle,python-docx,openpyxl,docxtpl,configparser,pywin32(Windows可选) -
配置Oracle客户端
确保已安装Oracle Instant Client并设置环境变量(如LD_LIBRARY_PATH或PATH)。
Linux示例:export LD_LIBRARY_PATH=/usr/lib/oracle/19.6/client64/lib:$LD_LIBRARY_PATH
-
运行工具
python main.py
- 程序会在当前目录自动生成试用许可证文件
oracle_inspector.lic(有效期366天) - 自动创建
templates/sqltemplates.ini(内置SQL模板)和reports/输出目录 - 显示交互式主菜单,按提示操作即可
- 主菜单选择
1、单机巡检 - 依次输入数据库连接信息(主机、端口、服务名、用户名、密码、连接模式)
- 推荐使用SYSDBA模式以获取完整数据
- 程序自动执行所有SQL查询,并展示健康状态汇总
- 选择生成Word报告或Excel报告
- 报告保存在
reports/目录下,文件名包含数据库名和时间戳
- 主菜单选择
2、批量巡检(从Excel导入) - 如没有Excel模板,先选择
3、创建Excel配置模板生成模板文件 - 在模板中填写多个数据库连接信息(数据库名称、IP、端口、服务名、用户名、密码、连接模式)
- 运行批量巡检,程序依次连接每个数据库并执行检查
- 可同时生成Word报告(每库独立)和Excel汇总报告(所有库概览+表空间详情+主机资源)
主菜单选择 3、创建Excel配置模板,程序会在templates/目录生成带示例数据的Excel文件,可直接编辑使用。
python main.py -C templates/sqltemplates.ini-C或--sqltemplates:指定自定义SQL模板文件路径(默认为templates/sqltemplates.ini)-L或--label:预留标签参数(暂未使用)
- 报告基本信息(检查对象、时间、连接用户等)
- 数据库核心信息(版本、创建时间)
- 表空间使用情况(前20个)
- 主机资源使用情况(磁盘/内存/CPU)
- 大表TOP10
- 锁等待信息(前10个)
- 健康状态汇总(健康等级、告警统计、资源使用率、处理建议)
包含三个工作表:
- 数据库概览:所有库的关键指标对比(健康状态、告警数、表空间紧急扩容数、资源使用率等)
- 表空间详情:每个库的表空间使用明细(使用率≥85%自动标记警告/紧急)
- 主机资源:每个库对应的主机磁盘、内存使用详情
采用INI格式存储SQL语句,每个节(section)对应一项检查:
[version]
query = SELECT * FROM v$version
[db_size]
query = SELECT tablespace_name, ROUND(SUM(bytes)/1024/1024/1024,2) AS total_gb ... FROM dba_data_files ...可根据Oracle版本自定义SQL语句(例如替换dba_data_files为user_data_files适应不同权限)。
- 自动生成,采用XOR+Base64简单加密
- 包含许可证类型、创建时间、过期时间、机器签名
- 试用期为366天,到期后删除该文件即可自动生成新的试用许可证
原因:当前用户权限不足。
解决:使用SYSDBA模式连接(输入连接模式时填sysdba),或授予用户SELECT ANY DICTIONARY、SELECT ON v_$views等权限。
原因:用户无权访问DBA_*视图。
解决:使用SYSDBA连接,或联系DBA授权。程序会继续执行其他查询。
原因:打包或移动目录后docx库找不到内置模板。
解决:程序已内置应急修复机制(fix_docx_template_path()),会自动在程序目录创建docx_templates并写入最小模板文件。若仍有问题,请确保程序有写入权限。
原因:未安装openpyxl库。
解决:执行pip install openpyxl。
原因:操作系统命令执行权限或路径问题。
解决:Windows需允许执行wmic;Linux需有读取/proc/meminfo和执行df/top的权限。程序会捕获异常并继续运行。
本项目采用 MIT License 开源协议,详情见LICENSE文件。
欢迎提交Issue和Pull Request。代码风格请遵循PEP8,并确保兼容Python 3.6+。
如有问题或建议,请通过GitHub Issues反馈。
⭐ 如果这个工具对您有帮助,请点亮Star支持一下!