Documents

DBCheck 数据库巡检

Try it

执行 MySQL、PostgreSQL、Oracle、SQL Server、DM8、TiDB、IvorySQL、GBase 8s、YashanDB、KingbaseES 数据库健康巡检,内置 130+ 条增强风险分析规则,一键生成专业 Word 巡检报告。适用于 DBA 和运维人员快速掌握数据库运行状况、排查风险...

What it does

执行 MySQL、PostgreSQL、Oracle、SQL Server、DM8、TiDB、IvorySQL、GBase 8s、YashanDB、KingbaseES 数据库健康巡检,内置 130+ 条增强风险分析规则,一键生成专业 Word 巡检报告。适用于 DBA 和运维人员快速掌握数据库运行状况、排查风险。项目地址:https://github.com/fiyo/DBCheck

The skill document

DBCheck — 数据库自动化巡检工具(OpenClaw Skill)

安全声明(必读)

本 Skill 的数据流向完全可控,如下所示:

用户凭据 → [本地 Python 脚本] → 数据库服务器 → 巡检结果 → [本地 Word 报告]
  • 数据库凭据:仅用于建立连接,不会写入磁盘持久文件不会发送到任何第三方
  • 本地文件写入:巡检结果以 Word 报告形式保存在本地 reports/ 目录,所有文件均在本地,不含敏感凭据
  • ⚠️ 限制:本 Skill 仅用于合法授权的数据库巡检,请勿用于未授权访问

核心能力

能力说明
📊 130+ 条增强风险规则覆盖 MySQL / PostgreSQL / Oracle / SQL Server / DM8 / TiDB / IvorySQL / GBase 8s / YashanDB / KingbaseES
📈 历史趋势分析多次巡检数据聚合,生成指标趋势折线图(存储在本地 SQLite / history.json)
🔒 脱敏报告导出导出 Word 时自动掩码 IP、端口、用户名、服务名,防止信息泄露

支持的数据库

数据库驱动默认端口说明
🐬 MySQLpymysql3306主从复制、binlog、查询缓存
🐘 PostgreSQLpsycopg25432归档模式、缓存命中率、dead tuples
🔴 Oracleoracledb / cx_Oracle1521表空间、SGA/PGA、RAC、ASM、Data Guard
🟠 SQL Serverpyodbc (ODBC Driver 17/18)1433等待统计、锁与阻塞、备份检查
🟡 DM8dmpython5236表空间、缓冲池、备份
🐬 TiDBpymysql4000Placement Rules、TiCDC/PD 心跳
🐘 IvorySQLpsycopg25432PG 兼容巡检项、复制状态
🟢 GBase 8sjaydebeapi (JDBC)5258JDBC 驱动已内置(drivers/gbase/
🟣 YashanDByzplotlib / psycopg25432需要 YashanDB 客户端(见下方说明)
🔵 KingbaseESpsycopg254321金仓数据库巡检

驱动说明

  • ✅ GBase 8s JDBC 驱动已内置在 drivers/gbase/ 目录,无需额外下载
  • ⚠️ Oracle / YashanDB 需要用户在机器上自行安装客户端,详见下方「驱动配置」说明

触发条件

当用户请求以下任意一项时,加载本 Skill 并执行:

  • 对数据库做健康检查 / 健康巡检 / 体检
  • 检查 MySQL / PostgreSQL / Oracle / SQL Server / DM8 / TiDB / IvorySQL / GBase 8s / YashanDB / KingbaseES 的运行状态
  • 生成数据库巡检报告 / 健康报告
  • "帮我巡检一下 XX 数据库"
  • "生成一份 XX 数据库巡检报告"

前置准备

必需信息

开始巡检前,必须向用户收集以下信息(缺少任何一项都要询问,不要自行猜测):

参数说明默认值
db_type数据库类型mysql / pg / oracle / sqlserver / dm / tidb / ivorysql / gbase / yashandb / kingbase
host数据库主机 IP 或域名需用户确认
port数据库端口见上表
user数据库用户名需用户确认
password数据库密码需用户确认
label数据库标签(用于报告命名)需用户确认,如 "生产库-MySQL"
inspector巡检人员姓名需用户确认

Oracle 专用参数

参数说明
service_namesidOracle 服务名或 SID(二选一,必填)
特权连接用户名输入 sys as sysdba 可建立 SYSDBA 特权连接

注意事项

  • DM8:无需填写 database 参数,连接用户即 Schema
  • GBase 8s:需要 drivers/gbase/*.jar 驱动文件,工具会自动查找
  • KingbaseES:默认端口 54321(不是 PostgreSQL 的 5432)

驱动配置

部分数据库需要本地安装客户端才能正常巡检,请按以下说明配置。

GBase 8s

驱动已内置,无需额外操作。drivers/gbase/jdbc-3.5.1.jar 已随 skill 打包。

Oracle

需要安装 Oracle Instant Client 或完整 Oracle Client。

方式一:Oracle Instant Client(推荐,体积小)

  1. 下载对应版本的 Instant Client:
  2. 解压到任意目录,如 C:\oracle\instantclient_21_12\
  3. 将目录添加到系统 PATH 环境变量:
    # Windows(管理员权限运行)
    [Environment]::SetEnvironmentVariable("PATH", [Environment]::GetEnvironmentVariable("PATH", "Machine") + ";C:\oracle\instantclient_21_12", "Machine")
    
  4. 重启终端使 PATH 生效

方式二:使用项目内置客户端

如果本机已安装 DBCheck 完整版,可直接使用 drivers/oracle_client/ 目录:

# 将 DBCheck\drivers\oracle_client 加到 PATH
[Environment]::SetEnvironmentVariable("PATH", [Environment]::GetEnvironmentVariable("PATH", "Machine") + ";D:\DBCheck\drivers\oracle_client", "Machine")

YashanDB(崖山数据库)

需要安装 YashanDB 客户端。

  1. 从崖山官网或管理员获取 YashanDB 客户端安装包
  2. 安装后,将客户端的 bin 目录(包含 ysql 等工具)添加到 PATH
  3. 确认 yzplotlib Python 包已安装:
    pip install yzplotlib
    

说明:YashanDB 客户端较大(约 200M),未随 skill 打包。请从 YashanDB 官方渠道获取安装包。

SQL Server

需要安装 ODBC Driver 17 for SQL ServerODBC Driver 18 for SQL Server

下载地址:https://learn.microsoft.com/zh-cn/sql/connect/odbc/download-odbc-driver-for-sql-server

安装后 pyodbc 可自动检测到驱动。

执行巡检

使用 execute_command 工具执行 Python 脚本。

依赖检查

先检查依赖是否完整:

python -c "import pymysql, psycopg2, docxtpl, paramiko, psutil, openpyxl, docx" 2>&1

如有缺失,提示用户安装:

pip install pymysql psycopg2-binary paramiko openpyxl docxtpl python-docx pandas psutil flask oracledb dmpython pyodbc flask-socketio jaydebeapi

完整巡检示例

MySQL 巡检

cd 
python run_inspection.py \
    --type mysql \
    --host <数据库IP> \
    --port 3306 \
    --user <用户名> \
    --password <密码> \
    --label "<数据库标签>" \
    --inspector "<巡检人员姓名>"

PostgreSQL 巡检

cd 
python run_inspection.py \
    --type pg \
    --host <数据库IP> \
    --port 5432 \
    --user <用户名> \
    --password <密码> \
    --database <数据库名,默认postgres> \
    --label "<数据库标签>" \
    --inspector "<巡检人员姓名>"

Oracle 巡检

cd 
python run_inspection.py \
    --type oracle \
    --host <数据库IP> \
    --port 1521 \
    --user <用户名> \
    --password <密码> \
    --service_name <服务名> \
    --label "<数据库标签>" \
    --inspector "<巡检人员姓名>"

SQL Server 巡检

cd 
python run_inspection.py \
    --type sqlserver \
    --host <数据库IP> \
    --port 1433 \
    --user <用户名> \
    --password <密码> \
    --database <数据库名,默认master> \
    --label "<数据库标签>" \
    --inspector "<巡检人员姓名>"

DM8(达梦)巡检

cd 
python run_inspection.py \
    --type dm \
    --host <数据库IP> \
    --port 5236 \
    --user <用户名> \
    --password <密码> \
    --label "<数据库标签>" \
    --inspector "<巡检人员姓名>"

TiDB 巡检

cd 
python run_inspection.py \
    --type tidb \
    --host <数据库IP> \
    --port 4000 \
    --user <用户名> \
    --password <密码> \
    --label "<数据库标签>" \
    --inspector "<巡检人员姓名>"

IvorySQL 巡检

cd 
python run_inspection.py \
    --type ivorysql \
    --host <数据库IP> \
    --port 5432 \
    --user <用户名> \
    --password <密码> \
    --database <数据库名,默认postgres> \
    --label "<数据库标签>" \
    --inspector "<巡检人员姓名>"

GBase 8s 巡检

cd 
python run_inspection.py \
    --type gbase \
    --host <数据库IP> \
    --port 5258 \
    --user <用户名> \
    --password <密码> \
    --database <数据库名,默认gbase01> \
    --gbase-server-name  \
    --label "<数据库标签>" \
    --inspector "<巡检人员姓名>"

GBase 8s 注意:需要 drivers/gbase/*.jar 驱动文件。工具会自动查找该目录下的 jar 文件。

YashanDB 巡检

cd 
python run_inspection.py \
    --type yashandb \
    --host <数据库IP> \
    --port 5432 \
    --user <用户名> \
    --password <密码> \
    --database <数据库名> \
    --label "<数据库标签>" \
    --inspector "<巡检人员姓名>"

KingbaseES 巡检

cd 
python run_inspection.py \
    --type kingbase \
    --host <数据库IP> \
    --port 54321 \
    --user <用户名> \
    --password <密码> \
    --database <数据库名,默认kingbase> \
    --label "<数据库标签>" \
    --inspector "<巡检人员姓名>"

完整参数参考

--type           数据库类型: mysql / pg / oracle / sqlserver / dm / tidb / ivorysql / gbase / yashandb / kingbase(完整巡检必需)
--host           数据库主机 IP 或域名
--port           数据库端口(默认: MySQL 3306, TiDB 4000, PG 5432, Oracle 1521, SQL Server 1433, DM8 5236, GBase 5258, KingbaseES 54321)
--user           数据库用户名
--password       数据库密码
--service_name   Oracle 服务名(Oracle 专用)
--sid            Oracle SID(Oracle 专用,与 service_name 二选一)
--database       数据库名(PG/SQL Server/GBase/KingbaseES 专用,默认 postgres/master/gbase01/kingbase)
--gbase-server-name  GBase 8s 服务名(GBase 专用,默认 gbase01)
--label          数据库标签,用于报告命名
--inspector      巡检人员姓名
--ssh-host       SSH 主机 IP(可选,采集系统资源)
--ssh-port       SSH 端口(默认 22)
--ssh-user       SSH 用户名(可选)
--ssh-password   SSH 密码(可选)
--ssh-key        SSH 私钥文件路径(可选,与密码二选一)

报告输出

  • 报告自动保存在 /reports/ 目录下
  • 文件名格式:
    • MySQL:MySQL巡检报告_<标签>_<时间戳>.docx
    • PostgreSQL:PostgreSQL巡检报告_<标签>_<时间戳>.docx
    • Oracle:Oracle巡检报告_<标签>_<时间戳>.docx
    • SQL Server:SQLServer_<标签>_<时间戳>.docx
    • DM8:DM8巡检报告_<标签>_<时间戳>.docx
    • TiDB:TiDB巡检报告_<标签>_<时间戳>.docx
    • GBase 8s:GBase巡检报告_<标签>_<时间戳>.docx
    • YashanDB:YashanDB巡检报告_<标签>_<时间戳>.docx
    • KingbaseES:KingbaseES巡检报告_<标签>_<时间戳>.docx
  • 报告可用 Microsoft Word / WPS 打开(DOCX)

结果展示

巡检完成后:

  1. 告知用户报告文件完整路径
  2. 使用 open_result_view 工具打开报告文件供用户查看
  3. 简要汇报关键发现(如发现高风险项,单独列出)
  4. 提示用户报告中风险建议仅供参考,需结合实际业务评估

常见错误处理

错误信息原因解决方案
pymysql: Access denied用户名或密码错误核对数据库账户信息
Can't connect to MySQL server防火墙阻止或端口不对确认端口、防火墙、安全组规则
psycopg2: connection refusedPG 端口不对或未监听该地址检查 postgresql.conf 的 listen_addresses
ORA-01017 (Oracle)用户名/口令无效确认密码(注意大小写);如用 SYSDBA 请输入完整格式 sys as sysdba
ORA-00904 (Oracle)无效列名/标识符部分高级视图在低版本 Oracle 中不存在,标记⚠跳过不影响整体巡检
dmPython returned a result with an exception set (DM8)dmPython 为惰性连接,探测失败检查端口(默认 5236)、用户名、密码、服务器访问权限
Class com.gbasedbt.jdbc.Driver is not found (GBase)JDBC 驱动 jar 未找到将 GBase 8s JDBC 驱动 jar 文件放到 drivers/gbase/ 目录下
SSH 采集失败SSH 认证失败或目标机器无相关命令检查用户名密码或私钥路径;确认目标机器有 top/free/df/lscpu 命令
Permission denied(SSH)SSH 认证失败检查用户名密码或私钥路径

限制与注意事项

  • 本 Skill 仅用于合法授权的数据库巡检,请勿用于未授权访问
  • SSH 采集依赖目标机器的 topfreedflscpu 命令(使用 AutoAddPolicy 接受主机密钥)
  • 报告生成依赖 python-docxdocxtpl 库,务必确保已安装
  • Oracle 支持 11g R2 / 12c / 19c / 21c 及以上版本,部分高级视图在不同版本间有差异,工具已做兼容处理
  • DM8 巡检依赖 dmpython 驱动(pip install dmpython
  • SQL Server 巡检依赖 pyodbcpip install pyodbc)和 ODBC Driver 17 或 18(需单独安装)
  • GBase 8s 巡检依赖 jaydebeapipip install jaydebeapi)和 GBase 8s JDBC 驱动 jar 文件
  • KingbaseES 使用 PostgreSQL 协议(psycopg2),默认端口 54321
  • 本地文件写入:巡检会在 reports/ 生成 Word 报告、在当前目录写入 history.json(纯数值指标)、autoDoc.log(运行日志),均在本地机器上

Related skills

Run KaiwuDB inspection and health-check tasks. Use this skill for database health checks, metrics collection, anomaly detection, and inspection report generation.

12 installs

识别并规避基础数据库连接、事务、查询与数据完整性陷阱。Use when 需要数据库操作、SQL查询、数据存储管理时使用。不适用于数据库架构设计决策。适用于独立开发者、企业团队和自动化工作流场景。支持中文交互,无需复杂配置即开即用。输出结果可直接使用,减少二次加工成本。提供结构化输出和错误处理机制。支持多场景应用和灵活配置。

1 installs

Multi-database SQL assistant — query MySQL, PostgreSQL, SQLite & MariaDB across dev/test/prod environments with a single command. Security-first: read-only b...

2 installs

Health inspection for Alibaba Cloud PolarDB MySQL instances, generating visual HTML reports. Supports five inspection dimensions: 1. Resource Monitoring — CP...

1 installs

Batch health inspection for Alibaba Cloud RDS MySQL instances. Supports single, multiple, or all-instance global scan with configurable time window (default...

3 installs

Run a read-only health inspection on Alibaba Cloud MongoDB (DDS) instances and produce a standardized report. Supports Sharding and ReplicaSet architectures...

1 installs