Linux下 SQL*Plus 命令速查与实用示例
一 连接与登录
- 登录数据库
- 常规登录:sqlplus username/password@tnsname
- 本机操作系统认证:sqlplus / as sysdba
- 先不登录再连:sqlplus /nolog,随后 connect username/password@tnsname 或 conn / as sysdba
- 常用登录参数
- 静默模式:sqlplus -S /nolog(不回显登录横幅与提示,适合脚本)
- 退出与断开
- 退出会话:exit 或 quit
- 断开连接保留窗口:disconnect
以上登录与退出方式、静默参数及切换连接的写法适用于 Linux 终端下的 Oracle 客户端交互。
二 脚本执行与文件操作
- 执行脚本
- 执行本地或指定路径脚本:@ script.sql
- 等价写法:start script.sql
- 在脚本中调用同目录子脚本:@@ nested.sql(相对路径便捷)
- 编辑与保存
- 编辑缓冲区/文件:edit(默认编辑缓冲区,可带文件名)
- 保存缓冲区到文件:save file.sql
- 从文件读入到缓冲区:get file.sql
- 缓冲区浏览与执行
- 查看缓冲区:list(可简写 l)
- 执行当前缓冲区:/(斜杠)或 run
- 操作系统交互与注释
- 执行 OS 命令:host 或 !(如:host ls -l)
- 注释一行:REMARK 或 –
以上命令覆盖脚本执行、编辑、保存、加载与 OS 交互的高频用法,适合日常开发与批处理。
三 格式化与报表输出
- 列与标题格式化(COLUMN)
- 设置标题:COL column_name HEADING ‘标题’
- 字符列宽:COL ename FORMAT a20
- 数字千分位:COL sal FORMAT 99,990
- 空值替换:COL comm NUL ‘0’
- 显示属性查看/清除:COL column_name / CLEAR COLUMNS
- 页眉页脚与分隔(TTITLE/BTITLE)
- 页脚:BTITLE ‘页脚文本’;页眉:TTITLE ‘页眉文本’
- 分组与汇总(BREAK/COMPUTE)
- 去重/换页:BREAK ON deptno SKIP 1
- 汇总计算:COMPUTE SUM OF sal ON deptno
- 输出到文件(SPOOL)
- 开始记录:SPOOL /path/out.txt
- 结束记录:SPOOL OFF
以上格式化命令可显著提升查询结果的可读性与报表效果,配合 BREAK/COMPUTE 能快速完成分组统计。
四 会话设置与常用变量
- 常用 SET 项
- 反馈与标题:SET FEEDBACK 6(或 OFF);SET HEADING ON
- 行宽与页大小:SET LINESIZE 200;SET PAGESIZE 100
- 空值显示:SET NULL ‘NULL’
- 自动提交:SET AUTOCOMMIT ON|OFF|n
- 输出控制:SET SERVEROUTPUT ON(配合 DBMS_OUTPUT);SET TERMOUT OFF/ON;SET TRIMSPOOL ON
- 执行计时:SET TIMING ON
- 替代变量与交互输入
- 交互替换:SELECT * FROM emp WHERE empno = &empno;
- 接收输入:ACCEPT v_name PROMPT ‘请输入姓名:’
- 列值赋给变量:COL cnt NEW_VALUE v_cnt;随后可在脚本中使用 &v_cnt 引用
这些设置项覆盖输出、交互、计时与自动化提交等常见需求,是脚本稳定与美观输出的关键。
五 Linux 脚本与运维示例
- 静默执行脚本并写日志
- 读取变量并查询
- 使用 NEW_VALUE 返回计数
- 启停数据库与监听
以上示例展示了在 Shell 中静默调用 SQL*Plus、交互输入、NEW_VALUE 传参与数据库启停的实用写法,适合自动化运维与批处理任务。