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": "🔍", }, }
安全宣告(必讀)
本 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 並執行:
開始巡檢前,必須向用戶收集以下資訊(缺少任何一項都要詢問,不要自行猜測):
| 引數 | 說明 | 預設值 |
|---|---|---|
db_type |
資料庫型別 | mysql / pg / oracle / sqlserver / dm / tidb / ivorysql / gbase / yashandb / kingbase |
host |
資料庫主機 IP 或域名 | 需使用者確認 |
port |
資料庫埠 | 見上表 |
user |
資料庫使用者名稱 | 需使用者確認 |
password |
資料庫密碼 | 需使用者確認 |
label |
資料庫標籤(用於報告命名) | 需使用者確認,如 "生產庫-MySQL" |
inspector |
巡檢人員姓名 | 需使用者確認 |
| 引數 | 說明 |
|---|---|
service_name 或 sid |
Oracle 服務名或 SID(二選一,必填) |
| 特權連線 | 使用者名稱輸入 sys as sysdba 可建立 SYSDBA 特權連線 |
database 引數,連線使用者即 Schemadrivers/gbase/*.jar 驅動檔案,工具會自動查詢部分資料庫需要本地安裝客戶端才能正常巡檢,請按以下說明配置。
✅ 驅動已內建,無需額外操作。drivers/gbase/jdbc-3.5.1.jar 已隨 skill 打包。
需要安裝 Oracle Instant Client 或完整 Oracle Client。
方式一:Oracle Instant Client(推薦,體積小)
C:\oracle\instantclient_21_12\PATH 環境變數:
powershell
# Windows(管理員許可權執行)方式二:使用專案內建客戶端
如果本機已安裝 DBCheck 完整版,可直接使用 drivers/oracle_client/ 目錄:
# 將 DBCheck\drivers\oracle_client 加到 PATH
[Environment]::SetEnvironmentVariable("PATH", [Environment]::GetEnvironmentVariable("PATH", "Machine") + ";D:\DBCheck\drivers\oracle_client", "Machine")
需要安裝 YashanDB 客戶端。
bin 目錄(包含 ysql 等工具)新增到 PATHyzplotlib Python 包已安裝:
bash
pip install yzplotlib說明:YashanDB 客戶端較大(約 200M),未隨 skill 打包。請從 YashanDB 官方渠道獲取安裝包。
需要安裝 ODBC Driver 17 for SQL Server 或 ODBC 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
cd <skill_scripts_dir> python run_inspection.py \ --type mysql \ --host <資料庫IP> \ --port 3306 \ --user <使用者名稱> \ --password <密碼> \ --label "<資料庫標籤>" \ --inspector "<巡檢人員姓名>"更多技能請訪問小蔥技能站7w4.net。
cd <skill_scripts_dir>
python run_inspection.py \
--type pg \
--host <資料庫IP> \
--port 5432 \
--user <使用者名稱> \
--password <密碼> \
--database <資料庫名,預設postgres> \
--label "<資料庫標籤>" \
--inspector "<巡檢人員姓名>"
cd <skill_scripts_dir>
python run_inspection.py \
--type oracle \
--host <資料庫IP> \
--port 1521 \
--user <使用者名稱> \
--password <密碼> \
--service_name <服務名> \
--label "<資料庫標籤>" \
--inspector "<巡檢人員姓名>"
cd <skill_scripts_dir>
python run_inspection.py \
--type sqlserver \
--host <資料庫IP> \
--port 1433 \
--user <使用者名稱> \
--password <密碼> \
--database <資料庫名,預設master> \
--label "<資料庫標籤>" \
--inspector "<巡檢人員姓名>"
cd <skill_scripts_dir>
python run_inspection.py \
--type dm \
--host <資料庫IP> \
--port 5236 \
--user <使用者名稱> \
--password <密碼> \
--label "<資料庫標籤>" \
--inspector "<巡檢人員姓名>"
cd <skill_scripts_dir>
python run_inspection.py \
--type tidb \
--host <資料庫IP> \
--port 4000 \
--user <使用者名稱> \
--password <密碼> \
--label "<資料庫標籤>" \
--inspector "<巡檢人員姓名>"
cd <skill_scripts_dir>
python run_inspection.py \
--type ivorysql \
--host <資料庫IP> \
--port 5432 \
--user <使用者名稱> \
--password <密碼> \
--database <資料庫名,預設postgres> \
--label "<資料庫標籤>" \
--inspector "<巡檢人員姓名>"
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 檔案。
cd <skill_scripts_dir>
python run_inspection.py \
--type yashandb \
--host <資料庫IP> \
--port 5432 \
--user <使用者名稱> \
--password <密碼> \
--database <資料庫名> \
--label "<資料庫標籤>" \
--inspector "<巡檢人員姓名>"
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巡檢報告_<標籤>_<時間戳>.docxPostgreSQL巡檢報告_<標籤>_<時間戳>.docxOracle巡檢報告_<標籤>_<時間戳>.docxSQLServer_<標籤>_<時間戳>.docxDM8巡檢報告_<標籤>_<時間戳>.docxTiDB巡檢報告_<標籤>_<時間戳>.docxGBase巡檢報告_<標籤>_<時間戳>.docxYashanDB巡檢報告_<標籤>_<時間戳>.docxKingbaseES巡檢報告_<標籤>_<時間戳>.docx巡檢完成後:
open_result_view 工具開啟報告檔案供使用者檢視| 錯誤資訊 | 原因 | 解決方案 |
|---|---|---|
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 認證失敗 | 檢查使用者名稱密碼或私鑰路徑 |
top、free、df、lscpu 命令(使用 AutoAddPolicy 接受主機金鑰)python-docx 和 docxtpl 庫,務必確保已安裝dmpython 驅動(pip install dmpython)pyodbc(pip install pyodbc)和 ODBC Driver 17 或 18(需單獨安裝)jaydebeapi(pip install jaydebeapi)和 GBase 8s JDBC 驅動 jar 檔案reports/ 生成 Word 報告、在當前目錄寫入 history.json(純數值指標)、autoDoc.log(執行日誌),均在本地機器上這是一款質量優秀的資料庫巡檢工具,功能非常全面,支援幾乎所有主流資料庫。優點是操作簡單、自動生成專業報告、風險規則豐富、還能做趨勢分析和AI診斷,且資料完全本地處理安全可靠。不足是部分資料庫(如Oracle、YashanDB)需要額外安裝驅動,配置稍複雜;部分大檔案程式碼維護成本較高。總體而言,適合DBA和運維人員快速掌握資料庫健康狀況。