Oracle诊断工具集

一个包含29种工具的Oracle 19c诊断服务器,涵盖会话、锁、等待事件、SQL性能、表空间、内存管理等多个方面,适用于AI工具(如Claude Code, Cursor)的数据库诊断需求。

  • by radekboronski
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 radekboronski/radek-oracle-mcp

使用说明

Radek Oracle MCP

高级Oracle 19c诊断MCP服务器 人工智能工具(克劳德代码、光标)。

29工具 涵盖了完整的Oracle诊断堆栈:会话、锁、等待事件、SQL性能(v$SQL)、表空间、SGA/PGA内存、重做日志、撤消管理、优化器统计、数据保护和模式分析。


察看连接信息

参数 值
服务器名称 radek-oracle-mcp
MCP名称 (在客户端配置中) radek-oracle
统一资源定位符 https://radek-oracle-mcp.clickchain.eu/mcp
健康检查 https://radek-oracle-mcp.clickchain.eu/health
港口(本地) 8003
隧道ID ffcf0846-8f91-4687-a312-989ac2e11835
隧道DNS radek-oracle-mcp.clickchain.eu

快速开始

1.安装依赖项

cd /data/project/radek-oracle-mcp
npm install
npm run build

2.初始化配置并生成secret

cp db.config.example.json db.config.json
node dist/create-token.js --init

3.生成JWT令牌

node dist/create-token.js --name claude --days 365

输出包括一个即用型 .mcp.json Claude代码和游标块。

4.启动服务器

npm start
# or for development:
npm run dev

验证:

curl http://localhost:8003/health
# {"status":"ok","server":"Radek Oracle MCP","version":"1.0.0","tools":29}

5.启动Cloudflare隧道

cloudflared tunnel --config ~/.cloudflared/config-radek-oracle-mcp.yml run radek-oracle-mcp

配置

db.config.json:

{
  "auth": {
    "secret": "<64-char hex — generated by node dist/create-token.js --init>"
  },
  "server": {
    "port": 8003,
    "tunnel_url": "https://radek-oracle-mcp.clickchain.eu"
  }
}

database.url 是可选的--Claude通过以下方式动态传递Oracle URL X-Database-URL 头球


Oracle连接URL格式

X-Database-URL: oracle://user:password@host:1521/service_name
X-Database-URL: oracle://user:password@host:1521/ORCL
X-Database-URL: oracle://user:password@scan-host:1521/MYDB    (RAC)
X-Database-URL: oracle+ssl://user:password@host:2484/ORCL     (SSL/TLS)

所需Oracle权限

GRANT CREATE SESSION TO mcp_user;
GRANT SELECT_CATALOG_ROLE TO mcp_user;
GRANT SELECT ANY DICTIONARY TO mcp_user;
-- For explain_query:
GRANT CREATE ANY TABLE TO mcp_user;
-- Or simply:
GRANT DBA TO mcp_user;

MCP客户端配置

克劳德代码-- .mcp.json

{
  "mcpServers": {
    "radek-oracle": {
      "type": "http",
      "url": "https://radek-oracle-mcp.clickchain.eu/mcp",
      "headers": {
        "Authorization": "Bearer <your-token>",
        "X-Database-URL": "oracle://user:password@host:1521/ORCL"
      }
    }
  }
}

克劳德代码-CLI

TOKEN="<your-token>"
DB="oracle://user:password@host:1521/ORCL"

claude mcp add radek-oracle https://radek-oracle-mcp.clickchain.eu/mcp \
  --transport http \
  --header "Authorization: Bearer $TOKEN" \
  --header "X-Database-URL: $DB" \
  --scope local

光标-- .cursor/mcp.json

{
  "mcpServers": {
    "radek-oracle": {
      "type": "http",
      "url": "https://radek-oracle-mcp.clickchain.eu/mcp",
      "headers": {
        "Authorization": "Bearer <your-token>",
        "X-Database-URL": "oracle://user:password@host:1521/ORCL"
      }
    }
  }
}

Cloudflare 隧道

隧道 radek-oracle-mcp 使用ID创建 ffcf0846-8f91-4687-a312-989ac2e11835.

域名系统 radek-oracle-mcp.clickchain.eu → 指向这条隧道。

手动开始

cloudflared tunnel --config ~/.cloudflared/config-radek-oracle-mcp.yml run radek-oracle-mcp

配置文件(~/.cloudflared/config-radek-oracle-mcp.yml)

credentials-file: /home/mcp/.cloudflared/ffcf0846-8f91-4687-a312-989ac2e11835.json
ingress:
  - hostname: radek-oracle-mcp.clickchain.eu
    service: http://127.0.0.1:8003
  - service: http_status:404

systemd服务

sudo tee /etc/systemd/system/cloudflared-radek-oracle-mcp.service > /dev/null << 'EOF'
[Unit]
Description=Cloudflare Tunnel — radek-oracle-mcp
After=network.target

[Service]
User=mcp
ExecStart=/usr/bin/cloudflared tunnel --config /home/mcp/.cloudflared/config-radek-oracle-mcp.yml run radek-oracle-mcp
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable cloudflared-radek-oracle-mcp
sudo systemctl start cloudflared-radek-oracle-mcp

令牌生成

# First time — generate secret
node dist/create-token.js --init

# Generate tokens
node dist/create-token.js --name claude --days 365
node dist/create-token.js --name cursor --days 90
node dist/create-token.js --name ci-bot --days 365

# Using npm script
npm run token -- --name claude --days 365

可用工具(29)

类别 工具 描述
诊断 auto_diagnose Oracle全自动诊断——从这里开始
诊断 health_check 快速运行状况:版本、SGA、缓冲区缓存、会话、等待
会话 analyze_sessions 按用户/机器/程序、长时间运行、长时间操作、限制划分的会话
锁 analyze_locks 使用kill命令、锁等待、事务、DDL锁阻止会话
SQL性能 analyze_sql 从v$SQL按已用/CPU/磁盘/缓冲区/执行次数排列的顶级SQL
SQL性能 explain_query 解释+DBMS_XPLAN的计划。显示(全部)
等待事件 analyze_waits v$system_event、当前等待、排队、锁存、ASH
记忆 analyze_memory SGA/PGA组件、内存顾问、排序溢出
表空间 analyze_tablespaces 使用率%、数据文件、可用空间、临时、自动扩展风险
表格 analyze_tables 段大小、统计数据、过时统计数据、分区
表格 investigate_table 深入了解一张表(大小、统计数据、索引、约束)
表格 list_tables 所有按大小排序的用户表
索引 analyze_indexes 所有索引,不可用,不可见,基数低,重复
索引 indexes_for_table 特定表的所有索引
索引 suggest_index 生成CREATE INDEX(不执行)
存储 analyze_storage 按模式、数据文件I/O、数据块碎片进行分段
重做 analyze_redo 日志组、切换频率、归档状态
撤销 analyze_undo ORA-01555风险、撤消统计、撤消分段
统计 analyze_statistics 过时/缺失的优化器统计数据,收集作业状态
数据卫士 analyze_dataguard 应用/传输延迟、存档转储、数据库角色
配置 analyze_configuration 关键参数、非默认、安全设置
模式 analyze_schema 对象无效、缺少PK、没有索引的FK、禁用约束
模式 table_structure 一个表的列、约束和索引
行动 run_query 执行任何Oracle SQL
行动 kill_session ALTER SYSTEM KILL会话“sid,序列号”
报告 generate_report 来自markdown的PDF/HTML/DOCX报告
发现 query_tools 列出所有带参数的工具
发现 query_queries 自然语言问题示例
发现 get_instructions 返回CLAUDE.md指令

Oracle专用工具(没有MySQL/PostgreSQL等效工具)

工具 为什么特定于Oracle
analyze_waits 完整的Oracle等待事件模型(v$system_event,ASH)
analyze_redo 恢复日志组、切换频率、存档
analyze_undo 撤销管理,ORA-01555跟踪
analyze_statistics DBMS_STATS优化器统计信息
analyze_dataguard Oracle数据保护(备用/主)

建筑

AI Client (Claude Code, Cursor)
    │  HTTPS + JWT Bearer + X-Database-URL header
    ▼
Cloudflare Tunnel (radek-oracle-mcp.clickchain.eu)
    │  ffcf0846-8f91-4687-a312-989ac2e11835
    ▼
HTTP Server (Node.js, port 8003)
    │  JWT verify → JSON-RPC 2.0
    ▼
MCP Handler (protocol 2025-11-25)
    │  tools/call dispatch
    ▼
Tool Layer (29 tools in src/tools/)
    │  Oracle SQL queries
    ▼
Query Layer (Oracle SQL in src/queries/)
    │  oracledb pool (max 5 connections, thin mode)
    ▼
Oracle 12c / 18c / 19c / 21c

文档

文件 内容
README.md 此文件——设置、配置、工具概述
USER_GUIDE.md 逐步设置、令牌生成、客户端配置、故障排除
TOOLS.md 所有29个工具的完整参考,包括参数和示例
QUERIES.md 映射到工具的自然语言问题示例
TREE.md 决策树——症状→ 工具映射
ARCHITECTURE.md 内部架构、层、文件结构
CLAUDE.md AI助手说明(工作流程、报告格式、Oracle特定注释)

许可证

麻省理工学院