安装完Oracle和db之后,对于Oracle的各种交互命令窗口使用起来不是很得心应手,上下左右键包括删除操作都需要很麻烦,我们可以进行一些设置使我们更丝滑的使用Oracle的各种交互命令如SQL plus、RMAN、lsnrctl等。
1. 定义别名及配置环境变量
通过设置别名,可以更方便地调用 Oracle 常用命令,并配置环境变量以支持更优的交互体验。
1.1 编辑环境变量
使用 vi 编辑 oracle 用户的环境变量文件:
vi /home/oracle/.bash_profile
在文件中添加以下内容:
## 配置 Oracle 用户环境变量
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
alias lsnrctl='rlwrap lsnrctl'
alias asmcmd='rlwrap asmcmd'
alias adrci='rlwrap adrci'
alias alert='tail -n 200 -f $ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/trace/alert_$ORACLE_SID.log'
alias bdump='cd $ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/trace'
1.2 激活配置
保存文件后运行以下命令,使配置生效:
source /home/oracle/.bash_profile
2. 安装并配置 rlwrap
关于 rlwrap
rlwrap 是一个命令行工具,用于增强输入功能,如支持上下键历史记录、左右键编辑等功能。
源码安装解决sqlplus 中上下左右键无法使用,需要在环境变量里面定义。
2.1 下载 rlwrap 源码
需要下载 rlwrap 的源代码。可以在 rlwrap 的官方网站或者其他源获取到这个文件。
示例下载文件:rlwrap-0.42.tar.gz
2.2 解压源码
tar -zxvf rlwrap-0.42.tar.gz
cd rlwrap-0.42
2.3 检查依赖项
安装rlwrap错误的问题解决方法
checking for tgetent... no
checking for tgetent in -ltinfo... no
checking for tgetent in -lcurses... no
checking for tgetent in -lncurses... no
checking for tgetent in -ltermcap... no
configure: WARNING: No termcap nor curses library found
checking for readline in -lreadline... no
configure: error:
You need the GNU readline library(ftp://ftp.gnu.org/gnu/readline/ ) to build
this program!
配置过程可能提示缺失以下依赖项:
- libtermcap-devel
- readline-devel
检查自己的操作系统架构,去阿里镜像站去下载 阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区
[oracle@orcl:/soft/rlwrap-0.42]$ uname -a
Linux orcl 3.10.0-957.el7.x86_64 #1 SMP Thu Oct 4 20:48:51 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
下载对应的软件包
或者查看自己光盘中是否集成了,我的是在光盘下Packages里找到了
2.4 编译与安装
-
运行配置命令:
./configure
-
编译源码:
make
-
安装工具(需要root权限):
sudo make install
2.5 验证安装
检查 rlwrap
是否安装成功:
[oracle@orcl:/soft/rlwrap-0.42]$ which rlwrap
/usr/local/bin/rlwrap
[oracle@orcl:/soft/rlwrap-0.42]$ rlwrap --version
rlwrap 0.42
[oracle@orcl:/soft/rlwrap-0.42]$
3. SQL*Plus 设置
通过调整 login.sql
或 glogin.sql
配置文件,可以增强 SQL*Plus 的默认行为,例如自定义提示符、调整输出格式等。
3.1 配置文件路径
- 配置文件路径:
$ORACLE_HOME/sqlplus/admin/glogin.sql
使用 vi
编辑文件:
vi $ORACLE_HOME/sqlplus/admin/glogin.sql
3.2 常用配置示例
设置提示符显示用户名和数据库名
set sqlprompt "&_user@&_connect_identifier> "
SQL*Plus 输出设置
以下是推荐的常用设置:
-- 设置默认编辑器为 vi
define _editor=vi
-- 开启 DBMS_OUTPUT 并设置缓冲区大小
set serveroutput on size 1000000
-- 去除假脱机输出文本的多余空格
set trimspool on
-- 设置显示 LONG 和 CLOB 数据类型的最大字节数
set long 5000
-- 设置文本输出宽度为 200 字符
set linesize 200
-- 设置每页标题显示频率
set pagesize 9999
-- 设置 AUTOTRACE 计划输出宽度
column plan_plus_exp format a80
动态 SQL 提示符
动态显示当前用户和数据库名称:
column global_name new_value gname
set termout off
define gname=idle
select lower(user) || '@' || substr(global_name,1,instr(global_name,'.')-1) as global_name
from global_name;
set sqlprompt '&gname>'
set termout on
完整配置示例
-- 默认编辑器
define _editor=vi
-- DBMS_OUTPUT 默认开启
set serveroutput on size 1000000
-- 文本行设置
set trimspool on
set long 5000
set linesize 200
set pagesize 9999
-- 提示符
column global_name new_value gname
set termout off
define gname=idle
select lower(user) || '@' || substr(global_name,1,instr(global_name,'.')-1) as global_name
from global_name;
set sqlprompt '&gname>'
set termout on
通过以上配置,Oracle 的使用将更加丝滑。设置别名和环境变量能够快速调用常用命令,rlwrap
提升了命令行输入体验,SQL*Plus 配置则增强了输出的可读性和提示信息的直观性。完成这些设置后,无论是日常开发还是维护任务,都将变得更加高效与便捷。
4、SQL plus常用命令整理
|-------------------------|------------------------------------------------------------------|
| 命令 | 功能描述 |
| @脚本名
| 执行脚本 |
| ! 操作系统命令
| 执行操作系统命令 |
| /
| 执行上一条 SQL 命令 |
| sqlplus 用户名/密码@IP/服务名
| 登录数据库,默认不写数据库名连接本地,例:sqlplus scott/tiger@192.168.xx.xx:1521/prod |
| spool 文件名.log
| 把显示内容输出到指定文件 |
| spool off
| 关闭日志输出,否则日志内容不会写入文件 |
| desc 表名
| 查看表的结构 |
| col 列名 format a60
| 设置字符列的显示宽度 |
| col 列名 format 9999
| 设置数字列格式,解决显示 ####
的问题 |
| col 列名 heading 新标题
| 设置列标题 |
| set heading off
| 去掉表头信息 |
| set heading on
| 打开表头信息 |
| set linesize 200
| 设置行宽,容纳最大字符数 |
| set pagesize 200
| 设置每页最大显示内容 |
| set timing on/off
| 显示 SQL 语句执行时间 |
| set time on/off
| 显示系统时间 |
| show all
| 显示当前环境变量 |
| show error
| 显示最近操作的错误信息 |
| show parameter
| 显示数据库的所有参数 |
| show parameter undo
| 显示指定的 undo
参数 |
| show rel
| 显示数据库版本信息 |
| show sga
| 显示 SGA 大小 |
| show user
| 显示当前用户名 |