一、獨立安裝sqlcl
1. ?安裝 Java 環境?
SQLcl 需要 Java 1.8.0_220 或更高版本,
Oracle Linux9.6 上已經默認安裝Oracle 23ai后Java 是11 lts版本
如果java jdk安裝錯誤將遇上SQLcl困擾n多人的bug
sql /nolog
錯誤:找不到或加載主類 oracle.dbtools.raptor.scriptrunner.cmdline.SqlCli
原因:java.lang.ClassNotFoundException:oracle.dbtools.raptor.scriptrunner.cmdline.SqlCli
bash復制# 檢查當前 Java 版本
java -version# 若未安裝或版本過低,安裝 OpenJDK 17(推薦)
sudo dnf install java-17-openjdk-devel# 設置 JAVA_HOME(根據實際路徑調整)
echo "export JAVA_HOME=/usr/lib/jvm/java-17-openjdk" >> ~/.bashrc
source ~/.bashrc[oracle@OL96 ~]$ which java
/usr/bin/java
[oracle@OL96 ~]$ which sqlcl
/usr/bin/which: no sqlcl in (/opt/oracle/product/23ai/dbhomeFree/bin:/home/oracle/.local/bin:/home/oracle/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/lib/jvm/java-11-openjdk/bin:/opt/sqlcl/bin:/opt/sqlcl/bin:/opt/sqlcl/bin:/usr/lib/jvm/java-11-openjdk/bin)
2. ?下載并安裝 SQLcl--默認安裝了一個版本
可以獨立下載
SQLcl Downloads
也可以直接wget??
# 下載最新版 SQLcl(當前最新為 25.1.1)--20250607
wget https://download.oracle.com/otn_software/java/sqldeveloper/sqlcl-latest.zip
unzip sqlcl-latest.zip -d /opt/
[root@OL96 home]# wget https://download.oracle.com/otn_software/java/sqldeveloper/sqlcl-latest.zip
--2025-06-08 00:10:08-- https://download.oracle.com/otn_software/java/sqldeveloper/sqlcl-latest.zip
Resolving download.oracle.com (download.oracle.com)... 23.35.208.76
Connecting to download.oracle.com (download.oracle.com)|23.35.208.76|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 87557295 (84M) [application/zip]
Saving to: ‘sqlcl-latest.zip’sqlcl-latest.zip 100%[=============================================================>] 83.50M 2.26MB/s in 57s2025-06-08 00:11:07 (1.47 MB/s) - ‘sqlcl-latest.zip’ saved [87557295/87557295]# 設置環境變量
echo 'export PATH=$PATH:/opt/oracle/sqlcl/bin' >> ~/.bashrc
source ~/.bashrc
2. 查找默認的sqlcl路徑和rpm安裝的sqlcl?
---可以使用默認的sql也可以用dnf install 下載最新的sqlcl,需要提前添加oracle linux repo
sudo dnf config-manager --add-repo https://yum.oracle.com/repo/OracleLinux/OL9/oracle/software/x86_64
sudo dnf install sqlcl
--這個sqlcl安裝后,會在/opt/oracle/sqlcl路徑下。
而原生的隨著oracle 23 ai free安裝的sql在/opt/oracle/product/23ai/dbhomeFree/sqlcl/bin--需要修改oracle下的.bash_profile文件,才能正常使用sqlcl
--關鍵設置export PATH=$PATH:/opt/oracle/product/23ai/dbhomeFree/sqlcl/bin
[oracle@OL96 ~]$ vi .bash_profile
--
[oracle@OL96 ~]$ cat .bash_profile
# .bash_profile# Get the aliases and functions
if [ -f ~/.bashrc ]; then. ~/.bashrc
fi# User specific environment and startup programs
export ORACLE_HOME=/opt/oracle/product/23ai/dbhomeFree
export ORACLE_SID=FREE
export PATH=$ORACLE_HOME/bin:$PATH
export PATH=$PATH:/opt/oracle/product/23ai/dbhomeFree/sqlcl/bin
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
export PATH=$PATH:$JAVA_HOME/bin
[oracle@OL96 ~]$
--
[oracle@OL96 ~]$ source .bash_profile
[oracle@OL96 ~]$ sql / as sysdba
SQLcl: Release 25.1 Production on Sun Jun 08 09:33:25 2025Copyright (c) 1982, 2025, Oracle. All rights reserved.Connected to:
Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Version 23.8.0.25.04
3. ?配置 SQLcl 基礎連接?
# 連接 Oracle 23ai Free 數據庫
sql username/password@//localhost:1521/FREE# 或使用 EZConnect 格式
sql user@//db_host:1521/service_name
4. ?啟用 23ai 特性支持?
在 SQLcl 中設置兼容性參數:
-- 在 SQLcl 會話中執行
SET SQLCOMPATIBILITY '23'
5. ?常用配置優化
-- 啟用自動補全(默認開啟)
SET AUTOTRACE ON-- 設置歷史記錄(保存 1000 條命令)
SET HISTSIZE 1000-- 啟用 JSON 輸出格式(適合 23ai 的 JSON 功能)
SET SQLFORMAT JSON-- 顯示執行時間
SET TIMING ON
6. ?23ai 特定功能配置?
-- 向量搜索示例(使用 23ai 的 AI Vector Search)
SELECT content
FROM documents
ORDER BY VECTOR_DISTANCE(embedding, :query_vector)
FETCH FIRST 5 ROWS ONLY;
7. ?登錄屬性配置?
創建?$HOME/sqlcl/login.sql?自動加載腳本:
-- login.sql 內容
SET SQLFORMAT ANSICONSOLE
SET FEEDBACK 1
DEFINE _EDITOR = vim
SET HISTSIZE 1000
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
?8. ?異常排除
# 啟用調試模式
SQLCL_DEBUG=true sql user/pass@db# 檢查 23ai 特性兼容性
SELECT * FROM v$compatibility WHERE feature_id LIKE '%23AI%';
TIPS?:
undefined.Oracle 23ai 的 AI Vector Search 需要單獨啟用
undefined.使用 SET COMPATIBILITY 確保語法兼容性
undefined.通過 ALTER SYSTEM SET enable_vector_engine=TRUE 啟用向量引擎(需要 DBA 權限)
9. 常用 SQLcl 命令
命令 | 說明 |
INFO | 顯示表結構 |
DDL | 生成對象 DDL |
SET SQLFORMAT JSON | JSON 格式輸出 |
HISTORY | 查看命令歷史 |
LB STATUS | Liquibase 狀態 |
VECTOR | 向量搜索 |