DBCheck 資料庫巡檢

👤 fiyo 📦 v2.6.2 ⭐ 4.5 ⬇️ 1.1K 下載
🔒 IT運維與安全 免費

📖 技能介紹


name: dbcheck description: 執行 MySQL、PostgreSQL、Oracle、SQL Server、DM8、TiDB、IvorySQL、GBase 8s、YashanDB、KingbaseES 資料庫健康巡檢,內建 130+ 條增強風險分析規則,一鍵生成專業 Word 巡檢報告。適用於 DBA 和運維人員快速掌握資料庫執行狀況、排查風險。專案地址:https://github.com/fiyo/DBCheck license: MIT metadata: { "openclaw": { "emoji": "🔍", }, }


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、埠、使用者名稱、服務名,防止資訊洩露

支援的資料庫

資料庫 驅動 預設埠 說明
🐬 MySQL pymysql 3306 主從複製、binlog、查詢快取
🐘 PostgreSQL psycopg2 5432 歸檔模式、快取命中率、dead tuples
🔴 Oracle oracledb / cx_Oracle 1521 表空間、SGA/PGA、RAC、ASM、Data Guard
🟠 SQL Server pyodbc (ODBC Driver 17/18) 1433 等待統計、鎖與阻塞、備份檢查
🟡 DM8 dmpython 5236 表空間、緩衝池、備份
🐬 TiDB pymysql 4000 Placement Rules、TiCDC/PD 心跳
🐘 IvorySQL psycopg2 5432 PG 相容巡檢項、複製狀態
🟢 GBase 8s jaydebeapi (JDBC) 5258 JDBC 驅動已內建(drivers/gbase/
🟣 YashanDB yzplotlib / psycopg2 5432 需要 YashanDB 客戶端(見下方說明)
🔵 KingbaseES psycopg2 54321 金倉資料庫巡檢

驅動說明: - ✅ 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_namesid Oracle 服務名或 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. Oracle 11g R2:https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html
  3. Oracle 19c / 21c:同上頁面選擇對應版本
  4. 解壓到任意目錄,如 C:\oracle\instantclient_21_12\
  5. 將目錄新增到系統 PATH 環境變數: powershell # Windows(管理員許可權執行)
  6. 重啟終端使 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 包已安裝: bash 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 <skill_scripts_dir>
python run_inspection.py \
    --type mysql \
    --host <資料庫IP> \
    --port 3306 \
    --user <使用者名稱> \
    --password <密碼> \
    --label "<資料庫標籤>" \
    --inspector "<巡檢人員姓名>"

更多技能請訪問小蔥技能站7w4.net。

PostgreSQL 巡檢

cd <skill_scripts_dir>
python run_inspection.py \
    --type pg \
    --host <資料庫IP> \
    --port 5432 \
    --user <使用者名稱> \
    --password <密碼> \
    --database <資料庫名,預設postgres> \
    --label "<資料庫標籤>" \
    --inspector "<巡檢人員姓名>"

Oracle 巡檢

cd <skill_scripts_dir>
python run_inspection.py \
    --type oracle \
    --host <資料庫IP> \
    --port 1521 \
    --user <使用者名稱> \
    --password <密碼> \
    --service_name <服務名> \
    --label "<資料庫標籤>" \
    --inspector "<巡檢人員姓名>"

SQL Server 巡檢

cd <skill_scripts_dir>
python run_inspection.py \
    --type sqlserver \
    --host <資料庫IP> \
    --port 1433 \
    --user <使用者名稱> \
    --password <密碼> \
    --database <資料庫名,預設master> \
    --label "<資料庫標籤>" \
    --inspector "<巡檢人員姓名>"

DM8(達夢)巡檢

cd <skill_scripts_dir>
python run_inspection.py \
    --type dm \
    --host <資料庫IP> \
    --port 5236 \
    --user <使用者名稱> \
    --password <密碼> \
    --label "<資料庫標籤>" \
    --inspector "<巡檢人員姓名>"

TiDB 巡檢

cd <skill_scripts_dir>
python run_inspection.py \
    --type tidb \
    --host <資料庫IP> \
    --port 4000 \
    --user <使用者名稱> \
    --password <密碼> \
    --label "<資料庫標籤>" \
    --inspector "<巡檢人員姓名>"

IvorySQL 巡檢

cd <skill_scripts_dir>
python run_inspection.py \
    --type ivorysql \
    --host <資料庫IP> \
    --port 5432 \
    --user <使用者名稱> \
    --password <密碼> \
    --database <資料庫名,預設postgres> \
    --label "<資料庫標籤>" \
    --inspector "<巡檢人員姓名>"

GBase 8s 巡檢

cd <skill_scripts_dir>
python run_inspection.py \
    --type gbase \
    --host <資料庫IP> \
    --port 5258 \
    --user <使用者名稱> \
    --password <密碼> \
    --database <資料庫名,預設gbase01> \
    --gbase-server-name <GBase 服務名,預設gbase01> \
    --label "<資料庫標籤>" \
    --inspector "<巡檢人員姓名>"

GBase 8s 注意:需要 drivers/gbase/*.jar 驅動檔案。工具會自動查詢該目錄下的 jar 檔案。

YashanDB 巡檢

cd <skill_scripts_dir>
python run_inspection.py \
    --type yashandb \
    --host <資料庫IP> \
    --port 5432 \
    --user <使用者名稱> \
    --password <密碼> \
    --database <資料庫名> \
    --label "<資料庫標籤>" \
    --inspector "<巡檢人員姓名>"

KingbaseES 巡檢

cd <skill_scripts_dir>
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 私鑰檔案路徑(可選,與密碼二選一)

報告輸出

  • 報告自動儲存在 <scripts_dir>/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 refused PG 埠不對或未監聽該地址 檢查 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(執行日誌),均在本地機器上

🤖 AI 評測

這是一款質量優秀的資料庫巡檢工具,功能非常全面,支援幾乎所有主流資料庫。優點是操作簡單、自動生成專業報告、風險規則豐富、還能做趨勢分析和AI診斷,且資料完全本地處理安全可靠。不足是部分資料庫(如Oracle、YashanDB)需要額外安裝驅動,配置稍複雜;部分大檔案程式碼維護成本較高。總體而言,適合DBA和運維人員快速掌握資料庫健康狀況。

📊 多維度評分

適應性4.7
規範性4.3
有效性4.6
可靠性4.5
可信度4.9

📁 包含檔案 (31 個)

📄 README.md 27.1 KB
📄 SKILL.md 14.3 KB
📄 _meta.json 126 B
📄 _skillhub_meta.json 116 B
📄 requirements.txt 2.6 KB
📄 scripts/analyzer.py 103.7 KB
📄 scripts/config_baseline.py 54.8 KB
📄 scripts/db_history.py 19.7 KB
📄 scripts/desensitize.py 7.1 KB
📄 scripts/i18n/__init__.py 3.7 KB
📄 scripts/i18n/en.py 138.3 KB
📄 scripts/i18n/zh.py 136.6 KB
📄 scripts/index_health.py 43.2 KB
📄 scripts/main.py 12.8 KB
📄 scripts/main_dm.py 106 KB
📄 scripts/main_gbase.py 11.5 KB
📄 scripts/main_ivorysql.py 193.5 KB
📄 scripts/main_kingbase.py 7.4 KB
📄 scripts/main_mysql.py 187.3 KB
📄 scripts/main_oracle_full.py 175.3 KB
📄 scripts/main_pg.py 192 KB
📄 scripts/main_sqlserver.py 90.4 KB
📄 scripts/main_tidb.py 185.4 KB
📄 scripts/main_yashandb.py 7.5 KB
📄 scripts/mod_logger.py 891 B
📄 scripts/pdf_export.py 20.2 KB
📄 scripts/run_inspection.py 33.3 KB
📄 scripts/slow_query_analyzer.py 44.2 KB
📄 scripts/version.py 414 B
📄 security.md 2.7 KB
📄 skill-card.md 3.1 KB