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

在 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 模型

示例:启动更简单

bash 复制代码
# 过去(SQL*Plus)
sqlplus / as sysdba

# 现在(SQLcl)
sql / as sysdba

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

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

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

sql 复制代码
--默认格式,我们直接查询某张表数据:
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安装:

BASH 复制代码
brew install sqlcl

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

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

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

BASH 复制代码
brew upgrade sqlcl

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

复制代码
export PATH=/opt/homebrew/Caskroom/sqlcl/25.2.2.199.0918/sqlcl/bin:"$PATH"

升级后是这个版本:

BASH 复制代码
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 走向智能化世界的桥梁。

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

相关推荐
William.csj27 分钟前
VSCode——python选择解释器消失的解决办法
vscode·编辑器
滴水成川31 分钟前
现代 C++ 开发工作流(VSCode / Cursor)
开发语言·c++·vscode·cursor
Eiceblue13 小时前
PDF转Markdown - Python 实现方案与代码
开发语言·vscode·python·pdf
老纪的技术唠嗑局17 小时前
AI 替代传统 GUI:基于 MCP 的 OBCloud 工作流
运维·mcp
聚客AI19 小时前
📊构建企业AI Agent中台:基于MCP的统一工具调用架构设计
人工智能·agent·mcp
老周聊大模型20 小时前
大模型如何突破“认知茧房”?RAG+MCP构建外部脑接口
langchain·agent·mcp
AI大模型1 天前
超实用!Dify快速接入本地MCP服务
程序员·llm·mcp
新手村领路人1 天前
Cursor(vscode)一些设置
ide·vscode·cursor
HealthScience1 天前
vscode文件颜色,只显示自己更改的文件颜色、刚git下来的库,vscode打开后,显示所有文件都被修改了
vscode·深度学习