温馨提示×

Ubuntu sqlplus使用技巧有哪些

小樊
41
2025-12-07 01:26:01
栏目: 云计算

Ubuntu 下 SQL*Plus 高效使用技巧

一 登录与连接

  • 以管理员身份本地登录:使用 sqlplus / as sysdba 进入,无需口令,适合启停实例、恢复等运维操作。
  • 不直接暴露密码:先 sqlplus /nolog,再 conn / as sysdbaconn sys/password as sysdba
  • 普通用户登录:
    • 本机或已配置 TNS 别名:sqlplus scott/tiger@orcl
    • 直连远程:sqlplus scott/tiger@//dbhost:1521/SIDsqlplus scott/tiger@//dbhost:1521/service_name
  • 远程连接常见报错 ORA-12504 多与监听未启动或 SERVICE_NAME 配置不符有关,检查监听与 tnsnames.oraSERVICE_NAME 是否一致。

二 交互体验优化

  • 使用 rlwrap 提供方向键、历史与补全:安装 sudo apt-get install rlwrap,运行 rlwrap sqlplus 或将别名写入 ~/.bashrcalias sqlplus=‘rlwrap sqlplus’
  • 设置默认编辑器:在 $ORACLE_HOME/sqlplus/admin/glogin.sql 或启动目录 login.sql 中加入 DEFINE _EDITOR=/usr/bin/vim,之后 edit 即可用 vim 编辑。
  • 启动即加载个人环境:在 glogin.sql(全局)或当前目录 login.sql(会话级,后加载会覆盖前者)中写入常用 SET 与列格式,统一显示风格。
  • 保存与复用个人配置:在 SQL*Plus 中执行 store set myenv.sql,下次 @myenv.sql 一键恢复。

三 常用 SET 与显示优化

  • 常用显示与输出控制:
    • SET PAGESIZE 9999SET LINESIZE 1000:减少分页与折行,适合宽表与长字段。
    • SET TIMING ON:显示每条 SQL 执行耗时。
    • SET SERVEROUTPUT ON SIZE UNLIMITED FORMAT WRAPPED:便于 DBMS_OUTPUT 输出。
    • SET TRIMSPOOL ON:去除 spool 文件行尾空格。
    • SET LONG 5000:设置 LONG/CLOB 默认显示字节数。
    • SET NULL ‘:统一 NULL 显示样式。
  • 自定义提示符与列格式:
    • 动态提示符(显示 用户名@实例名):
      • COLUMN global_name NEW_VALUE gname
      • SELECT lower(user)||‘@’||substr(global_name,1,decode(instr(global_name,‘.’),0,length(global_name),instr(global_name,‘.’)-1)) global_name FROM global_name;
      • SET SQLPROMPT '&gname> ’
    • 常用列宽:COLUMN object_name FORMAT A30 WORD_WRAPCOLUMN segment_name FORMAT A30 WORD_WRAP

四 脚本执行与自动化

  • 执行脚本与快速重跑:
    • @/path/file.sqlSTART file.sql 执行脚本;/ 重跑缓冲区上一条 SQL。
    • 在脚本中合理使用 SET 与格式化命令,输出更规整,便于日志留存。
  • 脚本搜索路径:设置环境变量 ORACLE_PATH(如 export ORACLE_PATH=/usr/lib/oracle/xe/code),之后 @default.sql 可直接找到文件。
  • 在 SQL*Plus 中调用系统命令:使用 HOST (如 HOST ls /tmp),便于快速查看日志或传参。

五 客户端安装与连接排错

  • 安装 Instant Client(Ubuntu 推荐方式):
    • 下载 BasicSQL*Plus(可选 SDK)RPM 包,使用 alien 转为 DEB 并安装:
      • sudo apt-get install alien
      • sudo alien -i oracle-instantclient-basic-*.rpm
      • sudo alien -i oracle-instantclient-sqlplus-*.rpm
    • 安装依赖:sudo apt-get install libaio1
    • 配置库路径:创建 /etc/ld.so.conf.d/oracle.conf,写入 /usr/lib/oracle//client(64)/lib,执行 sudo ldconfig
    • 设置环境变量(示例):
      • export ORACLE_HOME=/usr/lib/oracle/21/client64
      • export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
      • export TNS_ADMIN=$ORACLE_HOME/network/admin
      • export PATH=$PATH:$ORACLE_HOME/bin
      • export ORACLE_SID=ORCL
  • 配置 tnsnames.ora(位于 $TNS_ADMIN):
    • 示例:
      • TESTDB = (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ip)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=TESTDB)))
    • 直连语法:sqlplus user/pass@//host:1521/service_name
  • 常见报错处理:
    • sqlplus: command not found:检查 PATH 是否包含 $ORACLE_HOME/bin
    • libaio.so.1: cannot open shared object file:安装 libaio1
    • ORA-12504:检查监听状态与 SERVICE_NAME 是否与服务器一致。

0