作者 阿九【转载时请务必以超链接形式标明文章原始出处和作者信息】
解决Linux上sqlplus中的backspace键及上下翻命令问题
一、解决Backspace删除功能。
在oracle的.bash_profile文件中添加如下内容
stty erase ^h |
二、解决上下翻命令问题。
解决上下翻问题需要安装一个工具。
uniread
下载地址:
http://sourceforge.net/projects/uniread/
再安装uniread 前,还需要安装其他4个工具。分别是perl、readline、Term、IO-Tty
在系统关盘中,找到 perl-5.8.8-27.el5.i386.rpm 和 readline-5.1-3.el5.i386.rpm 两个包进行安装。
如果系统光盘中没有readline,可以在这里下载
GNU readline
http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html
Term::ReadLine::Gnu
http://search.cpan.org/dist/Term-ReadLine-Gnu/
IO::Tty
http://search.cpan.org/dist/IO-Tty/
下载好后,先解压
tar -xvzf Term-ReadLine-Gnu-1.20.tar.gz
tar -xvzf IO-Tty-1.10.tar.gz
进入各自目录,分别执行
perl Makefile.PL
make
make install
来进行安装。
在安装完这4个工具后。解压uniread并安装
tar -xzvf uniread-1.01.tar.gz
perl Makefile.PL
make
make install
三、使用uniread
以oracle用户执行
[oracle@sigle uniread-1.01]$ uniread sqlplus /nolog [uniread] Loaded history (3 lines)
SQL*Plus: Release 10.2.0.4.0 - Production on 星期三 3月 21 23:41:19 2012
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
SQL> |
编辑.bash_profile加入以下别名
#ALIAS alias sq="uniread sqlplus /nolog" alias sqlplus="uniread sqlplus" alias rman="uniread rman" |
四、有关的安全问题
在oracle主目录下有.bash_logout文件用户用户推出时执行的命令,相对于.bash_profile为用户登录时执行的命令。可以编辑.bash_logout文件,删除用户主目录下的.uniread文件夹下的sqlplus 或rman文件即可清除历史记录。删除文件不影响下次uniread的使用,文件会自动创建。
rm -rf /home/oracle/.uniread/sqlplus rm -rf /home/oracle/.uniread/rman |
使用uniread后记录历史命令,其中可能会涉及到一些用户的密码[如sqlplus test/test],可以采取交互式输入。或者采取如下方式,当用户退出时清空历史记录:
vi .bash_logout #用户退出登录时,系统会执行的命令
> .uniread/sqlplus #添加该行在/usr/bin/clear前即可
> .uniread/rman #添加该行在/usr/bin/clear前即可
/usr/bin/clear
更为高级的办法可以自行编写shell,shell的功能是去除上述两个历史记录文件的中的sqlplus和conn等与密码相关的行,oracle用户注销系统会话时,执行该shell,这样一些与口令相关的内容会自动清除。