暂无图片
暂无图片
7
暂无图片
暂无图片
暂无图片

AI AGENT 实现 ORACLE 数据库的自动运维巡检

甲骨文云技术 2025-07-24
841

【🔥 炸裂实操】工作 19 年 Oracle 老兵,终于把“巡检”熬成一句话:

“哥,帮我看看库。”

30 分钟!只花两集《繁花》+1 杯冰美式,我用 Docker+Dify 零代码,搓了个 AI AGENT。

现在它 24h 在线,秒答 AWR、秒回锁、还能写诗哄开发,DB 巡检直接躺平!

说太多浪费流量,先上干货!

    Oracle 23ai 日常巡检报告(非归档模式)


    === 1. 数据库概况 ===
    • 数据库名 : FREE
    • 实例名 : FREE
    • 实例状态 : OPEN — 正常运行
    • 数据库角色 : PRIMARY
    • 启动时间 : 2025-07-15 09:03:59
    • DB Unique Name : FREE
    • 版本(Version): 23.7.0.25.01
    • 归档模式 : NOARCHIVELOG — 已确认不开启归档,符合业务要求
    • Archiver 进程 : STOPPED


    === 2. 关键初始化参数(非默认值)===
    ┌────────────────────────────────────────────┬─────────────┐
    │ 参数 │ 值 │
    ├────────────────────────────────────────────┼─────────────┤
    │ sga_target │ 1.5 GB │
    │ pga_aggregate_target │ 512 MB │
    │ processes │ 200 │
    │ open_cursors │ 300 │
    │ undo_tablespace │ UNDOTBS1 │
    └────────────────────────────────────────────┴─────────────┘
    (其余参数详见附录,无明显异常)


    === 3. 存储空间 ===
    3.1 表空间使用率
    ┌─────────────┬────────┬────────┬────────┐
    │ 表空间 │ 总MB │ 已用MB │ 使用率 │
    ├─────────────┼────────┼────────┼────────┤
    │ SYSTEM │ 1 040 │ 1 036 │ 99.6 % │
    │ SYSAUX │ 760 │ 723 │ 95.2 % │
    │ USERS │ 7 │ 6 │ 86.6 % │
    │ UNDOTBS1 │ 50 │ 21 │ 42.5 % │
    └─────────────┴────────┴────────┴────────┘
    ⚠ 风险点:SYSTEM、SYSAUX 剩余空间只有 4 MB、37 MB,建议尽快扩容或清理。


    3.2 Temp / Undo
    • Temp 空间:由 dba_temp_files 统计为 0 MB,可忽略(PDB/容器特性)。
    • Undo:自动管理,未见过度膨胀。


    3.3 Redo Log
    ┌───────┬────┬───────┬────────┬──────────┐
    │ Group#│Seq #│ Size │ Status │ Archived │
    ├───────┼────┼───────┼────────┼──────────┤
    │ 1 │ 13 │ 200M │ CURRENT│ NO │
    │ 2 │ 11 │ 200M │ INACTIVE│ NO │
    │ 3 │ 12 │ 200M │ INACTIVE│ NO │
    └───────┴────┴───────┴────────┴──────────┘
    • 每组 200 MB,满足小型系统需求,无需立即调整。


    === 4. 会话与等待事件 ===
    • 当前总连接 7565 个 ACTIVE,10 个 INACTIVE。
    • 主要等待事件(Top 5 wait-class non-idle):


    db file sequential read 113.75 s
    log file parallel write 99.51 s
    oracle thread bootstrap 55.65 s
    control file parallel write 47.86 s
    optimizer stats update retry 47.69 s
    以上均为单实例常见 I/O 和控制文件/自动任务等待,未见明显异常。
    • 堵塞锁:当前 v$session 无 blocking_session,无锁冲突。


    === 5. Top SQL(近 CPU 耗用)===
    ┌──────────────┬──────────┬──────────┬──────────┐
    │ SQL_ID │ CPU 秒 │ 执行次数 │ 说明片段 │
    ├──────────────┼──────────┼──────────┼──────────┤
    │ 76a325pa048q0│ 29.35 │ 69 │ APEX URL解析 │
    │ 0qsph1wwqkgwg│ 18.40 │ 928 │ APEX 后台协调 │
    │ b39m8n96gxk7c│ 15.99 │ 35 │ 自动任务 │
    └──────────────┴──────────┴──────────┴──────────┘
    均为 APEX/自动任务用 SQL,CPU 占比在可控范围。


    === 6. 对象一致性 / 统计信息 ===
    • 无效对象(非 SYS/XDB 之外):无,全部为 VALID。
    • 30 天未更新统计的对象示例(前 10 个):
    均为 APPQOSSYS/DBSFWUSER 系统 schema 的小表/索引(如 WLM_*、ACL$_OBJ 等),
    最近一次采集为 2025-01-31,暂时无需额外处理。


    === 7. 备份策略简述 ===
    本次巡检跳过备份检查(按用户要求:未开启归档)。


    === 8. 结论 & 建议 ===


    系统层面:数据库实例运行正常,版本 23.7.0.25.01
    空间风险:SYSTEM/SYSAUX 将满,建议:
    • 清理审计/AWR 历史数据或切换 PDB;
    • 为 SYSTEM/SYSAUX 新增数据文件,每区 500 MB ×2
    性能层面:
    • I/O 等待指标正常,可适当关注 db file sequential read 是否随负载升高;
    • APEX 内部任务 SQL 可继续监控,必要时固定 SQL Plan。
    统计信息:所有业务表均为有效状态,系统小表 30 日未重新收集可接受。
    建议周期:
    每 3 小时自动监控 SYSTEM/SYSAUX 使用率,
    每周执行 dbms_stats.gather_dictionary_stats。
    报告完毕 — 如有进一步需求,请随时指示~

    当然实现上面的功能需要具备以下几个条件

    1. Docker 运行环境 (我有1Panel环境,直接偷个懒)

    2. Dify 编排环境 (1.6 版本以上)

    3. 大语言模型运行环境(ollamaAPI 调用都可以)


    整体架构图如下:

    下面我来逐步分解:

    Docker 运行环境主要是用来运行 MCP for Oracle

    可以参考 Docker 作者的使用方法:

    https://hub.docker.com/r/mochoa/mcp-oracle

    这个 docker 部署方式非常简单,我是采用 1Panel 里边自带的 MCP 服务器(注意是红框)

    直接导入作者页面的NPX配置脚本

    完成后你就可以看到一个服务已经起来了

    其中显示的外部连接地址就是后面Dify要用到的http地址

    Dify  mcp 服务配置

    点击添加 MCP 服务(HTTP

    把上面显示的 MCP Server 外部链接地址填写进来

    配置完成后你就可以在 MCP 界面里边看到你的工具,注意右下角的绿灯亮起就表示该工具连接正常

    打开后你可以看到该 MCP 提供了 5个工具可以调用

    至此 Dify  MCP 工具配置结束,下面就可以开始创建 agent 来调用 MCP 访问数据库了(Dify 配置大语言模型 API 在此就不过多介绍了)

    Dify 配置 agent

    打开 Dify agent 配置界面,选择 agent

    选择如下图

    开始编排你的 agent

    选择使用你刚才添加的 MCP 服务器

     你也可以选择你的知识库和开启 agent 使用时间的功能

    agent 可以选择你已经配置好的后端大语言模型

    接下来开始享受你的数据库 AI 之旅吧

    随便叫他给你查几个数据库的指标

    过去,我把大模型当成一位全天候待命的最强外脑
    它能跟我头脑风暴,也能把复杂概念翻译成白话,但终归只停留在的层面。
    活儿,还得我自己撸起袖子干。

    直到我遇见 MCPModel Context Protocol)。
    那一刻,我仿佛听见咔哒一声——
    外脑终于装上了义肢,还是瑞士军刀级别的。

    现在,Oracle数据库运维脚本、巡检报告、慢查询分析……
    这些曾经让我加班到凌晨的重复动作,
    只要给 MCP 递一把工具,它就能精准地起来,
    像一位熟练的技工,把耗时 30 分钟的操作压缩成 3 秒钟的回车。
    我不再是对着终端疯狂敲命令的人肉流水线
    而是成了给 AI 配钥匙、搭舞台的导演。

    【文末彩蛋|给DBA们的一封情书】

    👋先打个招呼:今天我先扔块搬砖,剩下的魔法就交给屏幕前的你们啦!

    毕竟,能把索引写到诗里、把锁冲突画成漫画的天选DBA们,在MCP这条赛道上,绝对能玩出10086+种高能姿势!

    留言区已就位,坐等各路神仙卷出新卷法~

    编辑:赵靖宇

    文章转载自甲骨文云技术,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论