暂无图片
Oracle 数据库命令行工具 SQLcl
最近更新:2022-12-06 15:49:59

概念描述

Oracle SQL Developer Command Line (SQLcl) 工具是基于 Java 开发的 Oracle 数据库命令行界面,SQL*Plus 替代品, 不需要安装客户端,只需下载该应用程序解压后即可使用,且是一款免费的工具。

SQLcl 支持执行SQL,PL/SQL,提供了命令行编辑,命令重新调用和所有SQL*PLUS的脚本。

SQLcl 的功能非常丰富,我使用 SQLcl 的一个主要原因是 SQLcl 支持将 SQL 的查询结果以不同的格式输出,比如将查询结果以 JSON 格式输出到文件中,使用 python 再获取 JSON 文件中的数据做判断,可以非常方便的对数据库执行巡检等操作,虽然 Oracle 在12C及以后提供了 JSON_OBJECT 函数转换结果集,但是JSON_OBJECT受版本限制且结果集字符个数不能超过32768。

下载地址:https://www.oracle.com/database/sqldeveloper/technologies/sqlcl/download/

文档地址:https://docs.oracle.com/en/database/oracle/sql-developer-command-line/index.html

测试验证

安装

Oracle安装后自带此工具

Oracle 18C 以上的版本中自带此工具,执行文件是 $ORACLE_HOME/bin/sql 或 $ORACLE_HOME/sqldeveloper/sqldeveloper/bin/sql

[oracle@pod5-hb-c3-test1-13:~]$ sql / as sysdba

SQLcl: Release 19.1 Production on Mon Dec 05 20:37:05 2022

Copyright (c) 1982, 2022, Oracle.  All rights reserved.

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL>

[oracle@pod5-hb-c3-test1-13:~]$ sql sys/oracle@pod5-hb-c3-test1-13:1521/orcl as sysdba

SQLcl: Release 19.1 Production on Mon Dec 05 20:40:19 2022

Copyright (c) 1982, 2022, Oracle.  All rights reserved.

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL>

[oracle@pod5-hb-c3-test1-13:~]$ sql system/oracle@pod5-hb-c3-test1-13:1521/orcl

SQLcl: Release 19.1 Production on Mon Dec 05 20:40:38 2022

Copyright (c) 1982, 2022, Oracle.  All rights reserved.

Last Successful login time: Mon Dec 05 2022 20:40:39 +08:00

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> 

安装此工具

SQLcl 是基于JAVA开发的,所以运行SQLcl需要安装JAVA环境,目前SQLcl的最新版本是22.3.1.285.1825 - October 18, 2022,具体要求如下:

SQLcl的版本JAVA版本
22.3.1.285.1825 - October 18, 2022Java 11 and above
22.2.1.201.1451- July 28, 2022Java 11 and above
22.2.0.172.1718 - June 22, 2022Java 11 and above
22.1.1.131.0820 - May 11, 2022Java 11 and above
22.1.0.90.1611 - April 5, 2022Java 11 and above
21.4.1.17.1458 - January 19, 2022Java 8 and above

SQLcl 默认会使用$ORACLE_HOME里的JDK,除非 unset ORACLE_HOME,如果没有 java 环境或 java 版本较低(例如:11.2.0.4 的Oracle 自带的JDK版本是Java 5),则需自己安装。

以下演示在 Oracle 19.3 的环境下安装 SQLcl 21.4.1.17.1458

# Oracle 19.3 自带的 JAVA 8,所以使用自带的就行,但需要保证 $ORACLE_HOME 环境变量的正确性
su - oracle
unzip sqlcl-21.4.1.17.1458.zip
# 添加环境变量,注意将/home/oracle/sqlcl/bin放到$ORACLE_HOME/bin的前面,不然先找的还是$ORACLE_HOME/bin下的sql执行文件
export PATH=/home/oracle/sqlcl/bin:$ORACLE_HOME/bin:$PATH

# 要想使用 Oracle 自带的 JAVA ,必须正确配置 $ORACLE_HOME
[oracle@pod5-hb-c3-test1-13:~]$ echo $ORACLE_HOME
/oracle/app/oracle/product/19.0.0/db_1

# 使用 SQLcl 登录数据库
[oracle@pod5-hb-c3-test1-13:~]$ sql / as sysdba

SQLcl: Release 21.4 Production on Mon Dec 05 21:27:44 2022

Copyright (c) 1982, 2022, Oracle.  All rights reserved.

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> 

以下演示在 Oracle 11.2.0.4 的环境下安装 SQLcl 21.4.1.17.1458

# Oracle 11.2.0.4 自带 JAVA 5,不能运行 SQLcl
[oracle@rac1 ~]$ $ORACLE_HOME/jdk/bin/java -version
java version "1.5.0_51"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_51-b10)
Java HotSpot(TM) 64-Bit Server VM (build 1.5.0_51-b10, mixed mode)

# JAVA 5 运行 SQLcl 会报以下错误
[oracle@rac1 ~]$ sql / as sysdba
Unrecognized VM option '+IgnoreUnrecognizedVMOptions'
Could not create the Java virtual machine.

# 当前操作系统使用的是 RHEL 7.6,所以操作系统带了 JAVA 8,如果操作系统也没有 JAVA 8,则需自行安装
[oracle@rac1 ~]$ java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-b13)
......