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/全文索引 概述 全文引擎使用全文索引中的信息来编译可快速搜索表中的特定词或词组的全文查询.全文索引将有关重要的词及其位置的信息存储 ...
随机推荐
- 1+2+...+n
时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 题目描述 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.cas ...
- ASP.NET Core中DI中Add*方法对类的假定
在ASP.NET Core的依赖注入(DI)容器中,当你使用Add*方法和泛型类型来指定要注册的类时,容器会做出以下假设: (1)类必须是具体类(Concrete Class):使用Add*方法注册的 ...
- 本地编译WPF框架源码
最近,在 排查WPF框架触摸失效和书写 Stroke 绘制的问题,常常需要查看WPF 的源码,由于项目组用到的框架大部分都是 .netFramwork 的,只能通过VS的F12按键反编译或者Dnspy ...
- 启智树提高组day1T1 3436 : A:Doughnut
启智树提高组day1T1 3436 : A:Doughnut 原题传送门 题目描述 Aloisia有很多很多甜甜圈.有一天,她在地上画了n+1个格子,想从第1个格子跳到第n+1个格子.规则是,Aloi ...
- 超实用!Dify调用Java的3种实现方式!
在一些复杂的业务中,我们可能需要使用 Dify 调用外部程序(如 Java 程序),因为这样才能满足业务的特殊需求. 例如,当我们使用 Dify 实现"AI 简历自动筛选器"的时候 ...
- chatgpe脚本系列 - 分析nginx攻击日志,并自动加入防火墙黑名单
脚本内容 #!/bin/bash # 日志文件路径 LOG_FILE="/var/log/nginx/access.log" # Fail2Ban 过滤器路径 FILTER_FIL ...
- java里面的高精度运算
1 package com.lv.study.am.first; 2 3 import java.math.BigDecimal; 4 5 public class TestBigDecimal { ...
- Maven导入本地依赖包
maven pom 引入本地jar包 在pom.xml同级目录下新建lib文件夹,并放入本地jar包. 配置Jar包的dependency,包括groupId,artifactId,version三个 ...
- 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-18- 操作模态对话框弹窗 (详细教程)
1.简介 我们在日常工作中,会经常遇到弹出警告框的问题,弹框无法绕过,必须处理才可以执行后续的测试,所以弹框处理也是我们必须掌握的一个知识.宏哥在java+selenium系列文章中介绍过这部分内容. ...
- 一文读懂HyperWorks的耦合求解功能
Altair Engineering, Inc. 是世界领先的工程设计技术开发者,同时,也是一家具有全球深厚工程技术底蕴的优秀CAE工程咨询公司.Altair公司在CAE建模.有限元分析.可视化.结构 ...