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 模型 |
示例:启动更简单
# 过去(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 走向智能化世界的桥梁。
附:本文在编写过程中参考的文章和视频
- https://blogs.oracle.com/database/post/introducing-mcp-server-for-oracle-database?source=:so:tw:or:awr:exd:::RC_DEVT250603P00091:ODB23ai&SC=:so:tw:or:awr:exd:::RC_DEVT250603P00091:ODB23ai&pcode=DEVT250603P00091
- https://docs.oracle.com/en/database/oracle/sql-developer-command-line/25.2
- https://youtu.be/hj6WoZVGUBg?si=yveiUlF83oB_BF8U
SQLcl:不仅是 SQL*Plus 的继任者,更是 AI 时代的连接器的更多相关文章
- 如何将SQL Server 2000备份的数据库文件还原(升级)为SQL Server 2005或更高版本的数据库?
其实很简单,有两种方法. 方法一:将SQL Sever 2000数据库备份的数据库文件名后面加上“.bak”,然后直接在SQL Sever 2005或者高版本软件里面直接还原即可: 方法二:在SQL ...
- SQL Server 内存管理在64位时代的改变
64位机上 地址空间比以前大了去了.它引起的改变多了去了 1.MemToLeave这个词不存在了.因为SQL Server以不再做这种预留空间的事了,也就是说multiple page 想用多少就用 ...
- 脸书VS微软,为何“老年创业者”更担忧AI失控?
作为互联网行业最知名的大会之一,近日举行的微软Build 2017大会,却增加了与以往不同的"调味品".除了新技术.智能硬件.系统.平台之外,微软CEO纳德拉在大会上对科技带给人类 ...
- 缓存策略 半自动化就是mybaitis只支持数据库查出的数据映射到pojo类上,而实体到数据库的映射需要自己编写sql语句实现,相较于hibernate这种完全自动化的框架我更喜欢mybatis
springboot入门(三)-- springboot集成mybatis及mybatis generator工具使用 - FoolFox - CSDN博客 https://blog.csdn.net ...
- SQL Server on Linux 理由浅析
SQL Server on Linux 理由浅析 今天的爆炸性新闻<SQL Server on Linux>基本上在各大科技媒体上刷屏了 大家看到这个新闻都觉得非常震精,而美股,今天微软开 ...
- SQL Server2016升级前几点自检
SQL Server2016已经出来一段时间了,而且最新的SP1包也于2016年11月18日正式发布,各种新的特性推出让我们跃跃欲试.那么对于我们真实的业务环境,特别是生产环境要不要"跟风& ...
- sql跨库查询
---------------------------------------------------------------------------------- --1. 创建链接服务器 --1. ...
- 通过sql server 连接mysql
图文:通过sql server 连接mysql 1.在SQL SERVER服务器上安装MYSQL ODBC驱动; 驱动下载地址:http://dev.mysql.com/downloads/con ...
- 【转载】十步完全理解SQL
很多程序员视 SQL 为洪水猛兽.SQL 是一种为数不多的声明性语言,它的运行方式完全不同于我们所熟知的命令行语言.面向对象的程序语言.甚至是函数语言(尽管有些人认为 SQL 语言也是一种函数式语言) ...
- SQL Server 使用全文索引进行页面搜索
标签:SQL SERVER/MSSQL SERVER/数据库/DBA/全文索引 概述 全文引擎使用全文索引中的信息来编译可快速搜索表中的特定词或词组的全文查询.全文索引将有关重要的词及其位置的信息存储 ...
随机推荐
- 解决github无法访问的问题,亲测有效--很强
参考:https://segmentfault.com/a/1190000037498373 ubuntu系统:在/etc/hosts文件中增加以下内容: windows系统:C:\Windows\S ...
- Mimikatz 常用命令
以肉去蚁蚁愈多,以鱼驱蝇蝇愈至. 导航 1 工具介绍 2 基本用法 2.1 执行方式 2.2 帮助命令 3 模块用法 3.1 Standard 模块 3.2 Privilege 模块 3.3 Toke ...
- pytorch入门 - 微调huggingface大模型
在自然语言处理(NLP)领域,预训练语言模型如BERT已经成为主流.HuggingFace提供的Transformers库让我们能够方便地使用这些强大的模型. 本文将详细介绍如何使用PyTorch微调 ...
- python中的split()函数
Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串 a,b,c=input().split(,) 意思是在a,b,c三个输入值直接 ...
- AI答案之书解来为你解决难题
本文由 ChatMoney团队出品 介绍说明 "答案之书智能体"是您贴心的智慧伙伴,随时准备为您解答生活中的种种困惑.无论您在工作中遭遇瓶颈,还是在情感世界里迷失方向,亦或是对个人 ...
- Ant Design Mobile 覆盖默认的样式。
直接在css中这样写是不行的,完全没有效果. .am-list-item.am-input-item { height: 36px; min-height: 30px; } 要像下面这样,加上glob ...
- Form 表单在数栈的应用(下):深入篇
这篇文章的主题为我们对 Form 表单在数栈产品中使用之后理解消化的一个过程,通过介绍一些 Form 表单中常用到的方法,来理解部分设计思想,加深我们对技术的追求.主要介绍 Form 表单的创建和 ...
- MongoDB入门实战教程:学习总结目录
2021年Edison总结了MongoDB的入门实战教程,2022年整理了一份目录索引,希望对你有帮助. 1 MongoDB学习路径 在去年学习<MongoDB高手课>的途中,我总结了一个 ...
- 设置eclipse编码
1 设置HTML编码(Windows-Preference-ContentType) 2 设置workspace编码(Windows-Preference-Workspace-Text file en ...
- C# WinForms 中嵌入 EXE 程序 打开外部的exe程序
public class ProcessEmbedder { // 常量定义 private const int GWL_STYLE = -16; // 窗口样式 private const int ...