Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Oracle数据库健康检查工具 (Oracle Inspector)

Python 3.6+ Oracle License

📖 简介

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

安装步骤

  1. 克隆或下载代码

    git clone https://github.com/Zhh9126/Oracledbcheck.git
    cd oracle-inspector
  2. 安装Python依赖

    pip install -r requirements.txt

    依赖列表:cx_Oracle, python-docx, openpyxl, docxtpl, configparser, pywin32(Windows可选)

  3. 配置Oracle客户端
    确保已安装Oracle Instant Client并设置环境变量(如LD_LIBRARY_PATHPATH)。
    Linux示例:

    export LD_LIBRARY_PATH=/usr/lib/oracle/19.6/client64/lib:$LD_LIBRARY_PATH
  4. 运行工具

    python main.py

首次运行

  • 程序会在当前目录自动生成试用许可证文件oracle_inspector.lic(有效期366天)
  • 自动创建templates/sqltemplates.ini(内置SQL模板)和reports/输出目录
  • 显示交互式主菜单,按提示操作即可

📋 使用指南

模式一:单机巡检

  1. 主菜单选择 1、单机巡检
  2. 依次输入数据库连接信息(主机、端口、服务名、用户名、密码、连接模式)
    • 推荐使用SYSDBA模式以获取完整数据
  3. 程序自动执行所有SQL查询,并展示健康状态汇总
  4. 选择生成Word报告或Excel报告
  5. 报告保存在reports/目录下,文件名包含数据库名和时间戳

模式二:批量巡检(从Excel导入)

  1. 主菜单选择 2、批量巡检(从Excel导入)
  2. 如没有Excel模板,先选择 3、创建Excel配置模板 生成模板文件
  3. 在模板中填写多个数据库连接信息(数据库名称、IP、端口、服务名、用户名、密码、连接模式)
  4. 运行批量巡检,程序依次连接每个数据库并执行检查
  5. 可同时生成Word报告(每库独立)和Excel汇总报告(所有库概览+表空间详情+主机资源)

模式三:创建Excel配置模板

主菜单选择 3、创建Excel配置模板,程序会在templates/目录生成带示例数据的Excel文件,可直接编辑使用。

命令行参数(高级)

python main.py -C templates/sqltemplates.ini
  • -C--sqltemplates:指定自定义SQL模板文件路径(默认为templates/sqltemplates.ini
  • -L--label:预留标签参数(暂未使用)

📁 输出报告说明

Word报告结构

  • 报告基本信息(检查对象、时间、连接用户等)
  • 数据库核心信息(版本、创建时间)
  • 表空间使用情况(前20个)
  • 主机资源使用情况(磁盘/内存/CPU)
  • 大表TOP10
  • 锁等待信息(前10个)
  • 健康状态汇总(健康等级、告警统计、资源使用率、处理建议)

Excel批量汇总报告

包含三个工作表:

  • 数据库概览:所有库的关键指标对比(健康状态、告警数、表空间紧急扩容数、资源使用率等)
  • 表空间详情:每个库的表空间使用明细(使用率≥85%自动标记警告/紧急)
  • 主机资源:每个库对应的主机磁盘、内存使用详情

⚙️ 配置文件说明

SQL模板文件 (templates/sqltemplates.ini)

采用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_filesuser_data_files适应不同权限)。

许可证文件 (oracle_inspector.lic)

  • 自动生成,采用XOR+Base64简单加密
  • 包含许可证类型、创建时间、过期时间、机器签名
  • 试用期为366天,到期后删除该文件即可自动生成新的试用许可证

🛠️ 常见问题

1. 连接失败,提示ORA-01031: insufficient privileges

原因:当前用户权限不足。
解决:使用SYSDBA模式连接(输入连接模式时填sysdba),或授予用户SELECT ANY DICTIONARYSELECT ON v_$views等权限。

2. 某些查询返回空数据(如表空间、大表TOP10)

原因:用户无权访问DBA_*视图。
解决:使用SYSDBA连接,或联系DBA授权。程序会继续执行其他查询。

3. 生成Word报告时报错“模板缺失”

原因:打包或移动目录后docx库找不到内置模板。
解决:程序已内置应急修复机制(fix_docx_template_path()),会自动在程序目录创建docx_templates并写入最小模板文件。若仍有问题,请确保程序有写入权限。

4. Excel报告生成失败

原因:未安装openpyxl库。
解决:执行pip install openpyxl

5. 主机资源(磁盘/内存/CPU)获取失败

原因:操作系统命令执行权限或路径问题。
解决:Windows需允许执行wmic;Linux需有读取/proc/meminfo和执行df/top的权限。程序会捕获异常并继续运行。

📄 开源许可证

本项目采用 MIT License 开源协议,详情见LICENSE文件。

🤝 贡献指南

欢迎提交Issue和Pull Request。代码风格请遵循PEP8,并确保兼容Python 3.6+。

📧 联系方式

如有问题或建议,请通过GitHub Issues反馈。


⭐ 如果这个工具对您有帮助,请点亮Star支持一下!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages