是不是受够了安装了oracle database之后sqlplus的简陋,无法删除无法上下翻页的苦恼。
可以安装readline和rlwrap插件的话,配置.bahs_profile后也能解决上下翻页这些,但是很多生产环境无法安装rpm包。
oracle提供了sqlcl免费许可,sqlcl依赖于java,比sqldeveloper小,小巧的同时改善了sqlplus的功能。在完全兼容23ai的同时还支持vector属性。
rpm安装完毕Oracle 23 ai free之后,其实在23ai的路径中默认带了sqlcl 25.1,需要配置JDK变量即可调用sqlcl。
[oracle@OL96TC ~]$ 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 PATH=$PATH:/opt/oracle/product/23ai/dbhomeFree/jdk/bin
export PATH=$PATH:$JAVA_HOME/bin
可以查询主库中新建的表deparments3,
但是由于数据TrueCache,无法查询到表的objects信息
[oracle@OL96TC ~]$ sql / as sysdba;
SQLcl: Release 25.1 Production on Sun Jun 08 16:16:18 2025
Copyright (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
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
_________ ___________ ____________ _____________
2 PDB$SEED READ ONLY NO
3 FREEPDB1 READ ONLY NO
SQL> alter session set container=FREEPDB1;
Session altered.
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
_________ ___________ ____________ _____________
3 FREEPDB1 READ ONLY NO
SQL> info deparments3;
ERROR:
ORA-04043: object deparments3 does not exist
SQL> select * from departments3;
DEPT_ID DEPT_NAME LOCATION BUDGET
__________ ______________ _____________ _________
1 Research Building 7 750000
2 Research Building 7 750000
100 Development Building 5 900000
4 Marketing Building 3 650000
SQL>
二、SQLcl 的核心特性
SQL> help
For help on a topic type help
List of Help topics available:
/ @ @@ ACCEPT ALIAS APEX APPEND
AQ ARBORI ARCHIVE_LOG ARGUMENT AWR BACKGROUND BLOCKCHAIN_TABLE
BREAK BRIDGE BTITLE CD CERTIFICATE CHANGE CLEAR
CLOUDSTORAGE CODESCAN COLUMN COMPUTE CONNECT CONNMGR COPY
CS CTAS DATAPUMP DBCCRED DDL DEFINE DEL
DESCRIBE DG DIRS DISCONNECT EDIT EXECUTE EXIT
FILES FIND FORMAT GET HISTORY HOST IMMUTABLE_TABLE
INFORMATION INPUT JOBS LIQUIBASE LIST LOAD MDB
MIGRATEADVISOR MLE MODELER NET OCI OCIDBMETRICS OERR
ORAPKI PASSWORD PAUSE POPD PRINT PROJECT PROMPT
PUSHD QUIT REMARK REPEAT RESERVED_WORDS REST RUN
SAVE SCRIPT SDK SECRET SET SHOW SHUTDOWN
SODA SPOOL SSHTUNNEL START STARTUP STORE TIMING
TNSPING TOSUB TTITLE UNDEFINE UNLOAD VARIABLE VAULT
WAIT4 WHENEVER WHICH XQUERY
SQL> select * FROM V$VERSION
--习惯小写的命令,自动TAB补全的是大写
sqlformat格式化--OCM考试好用。通过设置sqlformat,可以设置不同输出的格式
SET SQLFORMAT JSON/CSV/HTML/XML
default
ansiconsole
csv
insert – lists resuts as an insert statement
loader – pipe-delimited
delimited – same as csv
xml
html
fixed – fixed width
text
json
2.1 设置sqlformant jason
SYS@CDB$ROOT> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
_________ ___________ _____________ _____________
3 FREEPDB1 READ WRITE NO
SYS@CDB$ROOT> set sqlformat json
SYS@CDB$ROOT> select * from departments3;
{"results":[{"columns":[{"name":"DEPT_ID","type":"NUMBER"},{"name":"DEPT_NAME","type":"VARCHAR2"},{"name":"LOCATION","type":"VARCHAR2"},{"name":"BUDGET","type":"NUMBER"}],"items":
[
{"dept_id":1,"dept_name":"Research","location":"Building 7","budget":750000}
,{"dept_id":2,"dept_name":"Research","location":"Building 7","budget":750000}
,{"dept_id":100,"dept_name":"Development","location":"Building 5","budget":900000}
,{"dept_id":4,"dept_name":"Marketing","location":"Building 3","budget":650000}
]}]}
SYS@CDB$ROOT>
2.2 设置XML格式
SYS@CDB$ROOT> set sqlformat xml
SYS@CDB$ROOT> select * from departments3;
SYS@CDB$ROOT>
SYS@CDB$ROOT> set sqlformat HTML
SYS@CDB$ROOT> select * from departments3;
Result Data