SQL*Plus是Oracle数据库的命令行工具,需先安装Oracle Instant Client并配置环境变量才能使用。
oracle-instantclient-basic-21.6.0.0.0-1.x86_64.rpm、oracle-instantclient-sqlplus-21.6.0.0.0-1.x86_64.rpm)。rpm命令本地安装:sudo yum localinstall oracle-instantclient-basic-*.rpm oracle-instantclient-sqlplus-*.rpm
~/.bashrc文件,添加以下内容(根据实际安装路径调整):export ORACLE_HOME=/usr/lib/oracle/21/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH=$PATH:$ORACLE_HOME/bin
使环境变量生效:source ~/.bashrc
SQL*Plus支持多种连接方式,根据场景选择:
/ as sysdba登录,用于数据库启动/关闭等管理操作:sqlplus / as sysdba
sqlplus username/password
@服务名指定远程数据库,需提前配置tnsnames.ora文件(包含主机、端口、服务名映射):sqlplus username/password@orcl
tnsnames.ora:sqlplus username/password@//hostname:port/service_name
使用@或@@执行SQL脚本文件(.sql格式):
@file_path:执行指定路径的脚本(如@/home/user/create_table.sql);@@file_path:在脚本文件中引用同目录下的其他脚本(如脚本a.sql中包含@@b.sql,则a.sql执行时会自动查找b.sql)。SQL> @/home/user/select_emp.sql
使用edit命令编辑指定路径的SQL脚本(需系统安装vi或vim):
SQL> edit /home/user/select_emp.sql
编辑完成后,按:wq保存并退出,脚本内容会自动加载到SQL缓冲区。
save命令将当前SQL缓冲区的内容保存到指定文件(如save /home/user/query_result.sql);get命令将指定文件的内容加载到SQL缓冲区(如get /home/user/query_result.sql),加载后可修改并执行。list(或简写l)命令显示缓冲区中的SQL语句(如l);change/old/new:替换缓冲区中第一个匹配的old字符串为new(如c/emp/dept,将emp替换为dept);append/text:在缓冲区当前行末尾追加text(如a ,loc,在select deptno, dname后追加,loc);insert/line/text:在指定行前插入text(如i 2 ,loc,在第2行前插入,loc)。column命令调整列的显示宽度(如column ename format a20,将ename列宽设置为20字符);column ename heading Employee Name,将ename列标题改为Employee Name);set pagesize 20,将每页显示20行);set linesize 100,将每行显示100字符);column sal null 'No Salary',将sal列的NULL值显示为No Salary)。commit命令保存当前事务的修改(如commit);rollback命令撤销当前事务的修改(如rollback);savepoint命令设置事务的保存点(如savepoint sp1),便于部分回滚(如rollback to sp1)。disconnect命令断开与数据库的连接,但不会退出SQL*Plus(如disconnect);exit命令退出SQL*Plus(如exit);show user命令显示当前登录的用户名(如show user);help命令查看SQL*Plus命令的帮助信息(如help column,查看column命令的用法)。sqlplus scott/tiger@//192.168.1.100:1521/orcl
SQL> set linesize 100
SQL> set pagesize 20
SQL> column ename format a20
SQL> column sal format $9,999.99
SQL> spool /home/user/emp_result.txt
SQL> select empno, ename, sal, deptno from emp where deptno = 10;
SQL> spool off
SQL> @/home/user/update_emp.sql
SQL> exit
通过以上步骤,可在CentOS系统中熟练使用SQL*Plus进行Oracle数据库的管理与操作。