在 CentOS 上,SQL*Plus 提供完整的 Oracle 数据库交互与管理能力,包括连接数据库、执行 DML/DDL、事务控制、脚本化批处理、输出报表、以及以 SYSDBA 执行实例启停等。它既可通过 Oracle Instant Client 轻量部署,也可在完整 Oracle Database 安装中使用,功能一致。
核心功能清单
- 连接与认证:支持本地 / as sysdba、用户名/口令、以及 Easy Connect 直连(如 user/pass@//host:1521/service)与 TNS 别名连接(tnsnames.ora)。
- SQL 与 PL/SQL:执行 SELECT/INSERT/UPDATE/DELETE、DDL(CREATE/ALTER/DROP)、事务控制(COMMIT/ROLLBACK)、以及 PL/SQL 块与 DBMS_OUTPUT。
- 实例管理:以 SYSDBA 身份执行 STARTUP(含 nomount/mount/open/read only)、SHUTDOWN(immediate/normal/transactional/abort)。
- 脚本与批处理:运行脚本(@script.sql)、静默执行(-S)、错误时退出(WHENEVER SQLERROR EXIT SQL.SQLCODE)、Here Document 自动化。
- 输出与报表:SPOOL 输出到文件、格式化设置(SET LINESIZE/PAGESIZE/HEADING/COLSEP/NUMFORMAT 等)、DESCRIBE 查看表结构。
- 交互增强:通过 rlwrap 提供方向键历史、搜索与编辑能力。
- 字符集与语言:设置 NLS_LANG(如 AMERICAN_AMERICA.AL32UTF8)以匹配数据库字符集与语言环境。
常用命令与用法示例
- 连接与登录
- 直连:
sqlplus user/pass@//dbhost:1521/orcl
- TNS:
sqlplus user/pass@ORCL
- 管理员:
sqlplus / as sysdba
- 执行脚本与静默输出
- 脚本:
sqlplus user/pass@ORCL @script.sql
- 静默:
sqlplus -S -L user/pass@ORCL @test.sql
- 输出到文件
SPOOL /tmp/result.txt … SPOOL OFF
- 格式化与查看
SET LINESIZE 200 PAGESIZE 10000
COL department_id HEADING 'Dept ID'
DESC employees
- 实例启停(SYSDBA)
- 启动:
STARTUP(或分阶段 STARTUP NOMOUNT/MOUNT/OPEN)
- 关闭:
SHUTDOWN IMMEDIATE
- 交互增强
- 在 ~/.bash_profile 中设置别名:
alias sqlplus='rlwrap sqlplus'
部署与连接要点
- 客户端形态:安装 Oracle Instant Client(Basic + SQLPlus 包),配置 ORACLE_HOME、PATH、LD_LIBRARY_PATH、TNS_ADMIN,即可在 CentOS 上使用 SQLPlus。
- TNS 与直连:可在 $TNS_ADMIN/tnsnames.ora 配置别名,也可使用 //host:port/service 直连,二者均受支持。
- 常见网络错误:如 ORA-12154(TNS 配置问题)、ORA-12541(监听端口不可达,检查 1521 与防火墙)、ORA-01017(用户名/口令或特殊字符需转义)。
适用场景与限制
- 适用场景:数据库日常运维(启停、查询、DML/DDL)、批量导入/报表导出(SPOOL)、自动化脚本与 CI/CD、远程诊断与轻量客户端访问。
- 限制与建议:SQL*Plus 为字符界面,复杂报表建议结合 SQL Developer 或脚本化工具;在纯字符环境下可借助 rlwrap 提升编辑与历史体验。