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 走向智能化世界的桥梁。

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

相关推荐
行走的陀螺仪2 小时前
.vscode 文件夹配置详解
前端·ide·vscode·编辑器·开发实践
这儿有一堆花6 小时前
重磅推出!Google Antigravity:一次 “以 Agent 为中心 (agent-first)” 的 IDE 革命
vscode·ai·ai编程·googlecloud
j***518913 小时前
vscode配置django环境并创建django项目(全图文操作)
vscode·django·sqlite
skywalk816316 小时前
FreeBSD系统安装VSCode Server(未成功,后来是在FreeBSD系统里的Linux虚拟子系统里安装启动了Code Server)
ide·vscode·编辑器·freebsd
深海潜水员17 小时前
【MonoGame游戏开发】| 牧场物语实现 第一卷 : 农场基础实现 (下)
vscode·游戏·c#·.net·monogame
skywalk81631 天前
linux安装Code Server 以便Comate IDE和CodeBuddy等都可以远程连上来
linux·运维·服务器·vscode·comate
疯狂踩坑人1 天前
MCP理论和实战,然后做个MCP脚手架吧
前端·node.js·mcp
组合缺一2 天前
Spring Boot 国产化替代方案。Solon v3.7.2, v3.6.5, v3.5.9 发布(支持 LTS)
java·后端·spring·ai·web·solon·mcp
喂自己代言2 天前
VS Code中提升效率的实用快捷键(中英双语版)
vscode
爱吃泡芙的小白白2 天前
vscode、anaconda、git、python配置安装(自用)
ide·git·vscode·python·anaconda·学习记录