在 Oracle 数据库的世界里,SQL*Plus 是开发和管理工作的标配工具。但随着数据库技术的演进和 AI 能力的嵌入,传统工具已无法满足现代数据开发、智能交互和自动化运维的需求。

Oracle 官方推出的现代化命令行工具 SQLcl(SQL Command Line) 正在取代 SQL*Plus,成为新时代的标准接口,特别是在 AI 与数据库深度融合的背景下,它是目前 唯一原生支持 MCP(Model Context Protocol) 的 CLI 工具。


一、SQL*Plus 的功成身退

SQL*Plus 陪伴 DBA 和开发者几十年,以其稳定和简洁而闻名,但也暴露出诸多局限:

  • 无命令历史、无自动补全
  • 交互体验落后,难以支持现代开发
  • 无法格式化 SQL,无语法高亮
  • 输出格式有限,不支持 JSON、CSV 等
  • 无法与 AI 模型协同工作

随着 Oracle 进入 23ai 时代,这些缺陷愈发明显。

而且细心的你可能已经发现,现在Oracle数据库安装完成后,其实SQLcl工具也已经默认安装了。


二、SQLcl:为现代数据库工作者而生

SQLcl 是 Oracle 官方提供的现代化 SQL 命令行工具,兼容 SQL*Plus 的全部命令,同时引入了丰富的现代特性,需要注意的是,SQLcl工具并非最近才推出,但最近火起来,真正成为 AI 与数据库交互的重要接口工具,是因为其对 MCP(Model Context Protocol) 的支持,至此 SQLcl 迈入了智能化新阶段(当前最新为25.2版本)。

关键功能一览

功能 SQL*Plus SQLcl
SQL 格式化(format
命令历史、多行编辑
SQL 高亮
输出格式(JSON/CSV/XML) set sqlformat
支持 JavaScript 脚本
内建 Liquibase 支持
与 MCP 集成,调用 AI 模型

示例:启动更简单

# 过去(SQL*Plus)
sqlplus / as sysdba # 现在(SQLcl)
sql / as sysdba

曾经那个调侃入门级DBA,敲完 sqlplus / as sysdba 然后不会了的笑话,如今也可以改成敲完 sql / as sysdba 然后不会了..

嗯,其实还可以敲个help看看丰富的帮助指引 _

可以看到SQLcl的功能实在是太多了,举例一个输出格式的细节示例:

--默认格式,我们直接查询某张表数据:
SQL> select * from countries fetch first 2 rows only; COUNTRY_ID CO COUNTRY_NAME COUNTRY_SUBREGION COUNTRY_SUBREGION_ID COUNTRY_REGION COUNTRY_REGION_ID COUNTRY_TOTA COUNTRY_TOTAL_ID
---------- -- ---------------------------------------- ------------------------------ -------------------- -------------------- ----------------- ------------ ----------------
52790 US 美国 北美洲 52797 美洲 52801 世界汇总 52806
52776 DE 德国 西欧 52799 欧洲 52803 世界汇总 52806 --通过设置可以支持csv格式,效果如下:
SQL> set sqlformat csv
SQL> select * from countries fetch first 2 rows only;
"COUNTRY_ID","COUNTRY_ISO_CODE","COUNTRY_NAME","COUNTRY_SUBREGION","COUNTRY_SUBREGION_ID","COUNTRY_REGION","COUNTRY_REGION_ID","COUNTRY_TOTAL","COUNTRY_TOTAL_ID"
52790,"US","美国","北美洲",52797,"美洲",52801,"世界汇总",52806
52776,"DE","德国","西欧",52799,"欧洲",52803,"世界汇总",52806 --通过设置可以支持json格式,效果如下:
SQL> set sqlformat json
SQL> select * from countries fetch first 2 rows only;
{"results":[{"columns":[{"name":"COUNTRY_ID","type":"NUMBER"},{"name":"COUNTRY_ISO_CODE","type":"CHAR"},{"name":"COUNTRY_NAME","type":"VARCHAR2"},{"name":"COUNTRY_SUBREGION","type":"VARCHAR2"},{"name":"COUNTRY_SUBREGION_ID","type":"NUMBER"},{"name":"COUNTRY_REGION","type":"VARCHAR2"},{"name":"COUNTRY_REGION_ID","type":"NUMBER"},{"name":"COUNTRY_TOTAL","type":"VARCHAR2"},{"name":"COUNTRY_TOTAL_ID","type":"NUMBER"}],"items":
[
{"country_id":52790,"country_iso_code":"US","country_name":"美国","country_subregion":"北美洲","country_subregion_id":52797,"country_region":"美洲","country_region_id":52801,"country_total":"世界汇总","country_total_id":52806}
,{"country_id":52776,"country_iso_code":"DE","country_name":"德国","country_subregion":"西欧","country_subregion_id":52799,"country_region":"欧洲","country_region_id":52803,"country_total":"世界汇总","country_total_id":52806}
]}]} --还有更多输出格式可以使用 help set sqlformat 来查看,按需使用

三、让 SQLcl 说“人话”:MCP Server 引领自然语言交互

如果说上面的这些功能没能打动你,那么 Oracle SQLcl 的 MCP Server 为与 Oracle 数据库的交互方式带来重大革新,支持直接通过 AI 应用实现自然语言操作。

是的,借助 MCP Server,你可以用自然语言对话方式直接查询Oracle数据、生成报表并执行数据库操作,大幅提升效率与易用性。

目前,SQLcl MCP Server 提供如下工具:

  • list-connections:自动发现并列出你电脑上保存的所有 Oracle 数据库连接。
  • connect:连接到你指定的数据库连接名称。
  • disconnect:断开当前正在使用的 Oracle 数据库连接。
  • run-sql:在已连接的数据库上执行标准 SQL 查询和 PL/SQL 代码块。
  • run-sqlcl:执行 SQLcl 的专属命令和扩展功能。

另外值得我们注意的是,Oracle基于现有的SQLcl工具,增强开发MCP功能,而不是另起炉灶,这是Oracle比较独特的地方,算是一个关键决策。

这种复用已有 CLI 工具的技术路径,体现了其工程上的务实与产品一致性思维。不仅保护了已有投资,还能快速将 AI 交互能力带入 Oracle 开发者熟悉的工作流中,这是目前其他主流数据库厂商尚未采用的路径。

下面来看我们具体该如何快速体验用起来?

SQLcl需要注意的就是版本要在25.2以上,运行需要依赖JDK环境。

我这里是在mac笔记本上直接安装的SQLcl,直接使用brew安装:

brew install sqlcl

起初我安装的版本是25.2.0,可还没来及测试就被其他事情耽误了。

alfredzhao@alfredzhaodeMacBook-Air ~ % sql -V
SQLcl:发行版 25.2.0.0 Production 工作版本:25.2.0.184.2054

等想起来继续测试时,听同事说最开始的版本有些小问题,所以干脆就把之前的版本直接升级到最新25.2.2,避免重复踩坑浪费时间:

brew upgrade sqlcl

按提示在mac配置新的环境变量:vi ~/.zprofile

export PATH=/opt/homebrew/Caskroom/sqlcl/25.2.2.199.0918/sqlcl/bin:"$PATH"

升级后是这个版本:

alfredzhao@alfredzhaodeMacBook-Air ~ % sql -V
SQLcl:发行版 25.2.2.0 Production 工作版本:25.2.2.199.0918

配置数据库连接,可以配置多个连接,在国外同事讲的这张片子中,可以看到配置非常灵活:

这些配置都是存在你SQLcl的本地电脑中的,保证了安全性。而且建议不要上来就给高权限用户,避免泄露敏感数据,比如我这里只配置了两个测试数据的连接信息,保证不会读取到关键敏感数据。

测试启动mcp server:

接下来就看MCP Server具体如何在其他工具中配置和使用?

我们选择在 VSCode 中配置 Cline来演示。

为什么选择这种方式?因为这个最流行且最简单,可以直接按照下面这个SQLcl的官方手册,一步步操作即可完成:

文档中详细描述了如何在VSCode中下载安装Cline插件:

如何配置好SQLcl的路径,注意因为我这里升级过SQLcl版本,需要重新修改:



修改为新版本的SQLcl路径:

起初我deepseek欠费了,所以临时用openai兼容的一个免费模型,但总是有问题,后来干脆充值换回deepseek来试,这个deepseek是直接在模型配置列表中存在可以选择的,测试起来就非常顺利。

这里先测试一个简单的业务问题“今年主要产品销售情况”,看下表现如何:

使用自然语言提问,最终它也直接使用自然语言返回答复,体验还挺好的。

当我再次提问相同问题,看它在这种情况下是如何反应的?

结果它非常聪明的识别到是相同问题,猜我是想获取更多维度的信息,还直接给我提供了一些维度选择,非常贴心!

当我选择按季度汇总时,就进一步得到了想要的业务结果:

我这里是构建的测试数据,这个方案下的所有数据都可以随便丢给LLM去分析,但我们从这个测试中也可以看到,在惊叹其功能强大的同时,也切身感受到数据安全显得比以往任何时候都重要,就像国外同事的这张片子中描述的,如今这些AI/LLM/MCP技术的应用,实际上进一步凸显了数据安全的重要性。

在这个AI时代,SQLcl 是传统与未来的接点,也是 Oracle DBA 走向智能化世界的桥梁。

附:本文在编写过程中参考的文章和视频

SQLcl:不仅是 SQL*Plus 的继任者,更是 AI 时代的连接器的更多相关文章

  1. 如何将SQL Server 2000备份的数据库文件还原(升级)为SQL Server 2005或更高版本的数据库?

    其实很简单,有两种方法. 方法一:将SQL Sever 2000数据库备份的数据库文件名后面加上“.bak”,然后直接在SQL Sever 2005或者高版本软件里面直接还原即可: 方法二:在SQL ...

  2. SQL Server 内存管理在64位时代的改变

    64位机上  地址空间比以前大了去了.它引起的改变多了去了 1.MemToLeave这个词不存在了.因为SQL Server以不再做这种预留空间的事了,也就是说multiple page 想用多少就用 ...

  3. 脸书VS微软,为何“老年创业者”更担忧AI失控?

    作为互联网行业最知名的大会之一,近日举行的微软Build 2017大会,却增加了与以往不同的"调味品".除了新技术.智能硬件.系统.平台之外,微软CEO纳德拉在大会上对科技带给人类 ...

  4. 缓存策略 半自动化就是mybaitis只支持数据库查出的数据映射到pojo类上,而实体到数据库的映射需要自己编写sql语句实现,相较于hibernate这种完全自动化的框架我更喜欢mybatis

    springboot入门(三)-- springboot集成mybatis及mybatis generator工具使用 - FoolFox - CSDN博客 https://blog.csdn.net ...

  5. SQL Server on Linux 理由浅析

    SQL Server on Linux 理由浅析 今天的爆炸性新闻<SQL Server on Linux>基本上在各大科技媒体上刷屏了 大家看到这个新闻都觉得非常震精,而美股,今天微软开 ...

  6. SQL Server2016升级前几点自检

    SQL Server2016已经出来一段时间了,而且最新的SP1包也于2016年11月18日正式发布,各种新的特性推出让我们跃跃欲试.那么对于我们真实的业务环境,特别是生产环境要不要"跟风& ...

  7. sql跨库查询

    ---------------------------------------------------------------------------------- --1. 创建链接服务器 --1. ...

  8. 通过sql server 连接mysql

    图文:通过sql server 连接mysql   1.在SQL SERVER服务器上安装MYSQL ODBC驱动; 驱动下载地址:http://dev.mysql.com/downloads/con ...

  9. 【转载】十步完全理解SQL

    很多程序员视 SQL 为洪水猛兽.SQL 是一种为数不多的声明性语言,它的运行方式完全不同于我们所熟知的命令行语言.面向对象的程序语言.甚至是函数语言(尽管有些人认为 SQL 语言也是一种函数式语言) ...

  10. SQL Server 使用全文索引进行页面搜索

    标签:SQL SERVER/MSSQL SERVER/数据库/DBA/全文索引 概述 全文引擎使用全文索引中的信息来编译可快速搜索表中的特定词或词组的全文查询.全文索引将有关重要的词及其位置的信息存储 ...

随机推荐

  1. Java Solon v3.3.0 发布(国产优秀应用开发基座)

    Solon 框架! Solon 是新一代,Java 企业级应用开发框架.从零开始构建(No Java-EE),有灵活的接口规范与开放生态.采用商用友好的 Apache 2.0 开源协议,是" ...

  2. C#之线程同步

    简述 当一个线程执行递增和递减操作时,其他线程需要依次等待,类似于这种常见的问题通常被称为线程同步问题. 有多种方式实现线程同步.首先,如果无须共享对象,那么就无序进行线程同步.大多数时候,可以通过重 ...

  3. 洛谷题解:P12364 [蓝桥杯 2022 省 Python B] 寻找整数

    注:可以在两分钟内跑出. 看到这题,暴力枚举跑不出来.如果你有没有充分的数学知识,那又怎么办呢? 减少枚举量 首先,注意到许多余数都是 \(11\),有图为证: 设这个数为 \(n\),则有: \[n ...

  4. Spring boot 项目集成Redisson抛异常 NoClassDefFoundError: Lorg/nustaq/serialization/FSTConfiguration

    Spring boot 项目集成Redisson做分布式锁的时候,抛异常 NoClassDefFoundError: Lorg/nustaq/serialization/FSTConfiguratio ...

  5. 使用 frp 进行内网穿透

    frp 是一个开源的内网穿透工具,可以使外网设备访问内网防火墙后的设备/服务器. 比如可以买一个 99元/年 的阿里云低配 ECS,然后把自己相对高配的旧电脑放在家里. 家里的旧电脑通过 frp 连上 ...

  6. 「Trick」智慧

    技巧部分 离线可能会使询问.操作的配置变得不那么怪异,甚至具有某种性质,类似去掉了某一维度的限制. ACAM 尝试在 Trie 树上或者 fail 树上进行 DP.(这不是很显著吗啊喂!) 注意到一些 ...

  7. Python 潮流周刊#106:PEP-734 正式接纳,多解释器时代来临(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 400+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  8. PS简单图片拼接

    1.打开图片 首先打开需要拼接的图片两张 以这两张图片为例子 首先我们先看看这两张图片的宽高分别为多少 打开图像---->画布大小 好记录下来小姐姐宽大概17cm,高大概20cm. 再来看看提莫 ...

  9. 第2周2_神经网络基础之Python与向量化

    神经网络基础之Python与向量化¶ 1. 向量化¶ ① 深度学习算法中,数据量很大,在程序中应该尽量减少使用loop循环语句,而可以使用向量运算来提高程序运行速度. ② 向量化(Vectorizat ...

  10. HyperWorks卫星惯性释放分析(OptiStruct)

    Step01:读取模型,并设置求解器模板为 OptiStruct. (1) 读入 IGES 格式的几何模型 Exercise_9a.iges. 在绝大多数 CAE 分析中,都将从一个导入的 CAD 模 ...