Linux Oracle下sqlplus无法使用命令退格删除和历史记录的解决方法(使用rlwrap)

42 篇文章 0 订阅
近来因工作需要业余在学习 oracle ,发现通过 SecureCRT 或putty等SSH客户端远程登录 Linux 下oracle的sqplus时,输错字符后按Backspace键或Del键删除时,会出现^H或其他乱七八糟的的字符,感觉非常别扭不习惯,虽然可以通过Ctrl+Backspace组合键实现删除功能,但是严重影响使用效率。 google 了一番,终于完美解决此问题。总结记录如下,本文是此问题最完整的总结:

乱七八糟的字符如图:

一、SecureCRT终端里的解决方法:(不完美)

在SecureCRT终端里,如果要在sqlplus下使用Backspace来删除字符,有两种临时方法。

第一种是使用stty命令重新定义^H,可以在使用sqlplus之前执行stty erase ^H,也可以把这一句放到oracle用户的.bash_profile文件里。

stty命令简介:
Unix或者Linux中有个stty命令,它的作用是打印或更改terminal(终端)的设置。
常用参数:
-a --all 用人类可读表格,打印出所有现有设置
-g --save 用stty可读表格,打印出所有现有设置
--help 帮助
--version 版本

查看当前stty现有设置,如图:

第二种是使用SecureCRT的设置,在会话属性的Terminal->Emulation->Mapped Keys中,选中Backspace sends delete或Delete sends backspace中的其中一个,并确保另一个不被选中。

另一个问题是bash shell下的sqlplus中使用上下箭头无法显示上下命令,而只是显示^[[A,这个问题可以安装rlwrap这个工具解决!

二、利用rlwrap工具解决方法:(完美)

1、安装rlwrap和readline库

CentOS下可以用EPEL的yum源直接安装,步骤如下:

(1)RHEL/CentOS/SL Linux 6.x 下安装 EPEL6 yum源:

32位系统选择:
# rpm -ivh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
64位系统选择:
# rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
导入key:
# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
默认会在/etc/yum.repos.d/下创建epel.repo和epel-testing.repo两个配置文件。

(2)安装rlwrap和readline:
# yum install rlwrap readline readline-devel

其他Linux发行版如果源里没有rlwrap和readline的(如SUSE企业版默认没有这两个包),要分别下载这两个源码包编译安装一下。无论什么linux都可以用这个方法,我就是用的这个方法)  这两个安装程序我已经上传了(如果虚拟机没有连接外网可以下载后通过ftp上传),可以直接下载:安装程序下载地址

# wget ftp://ftp.gnu.org/gnu/readline/readline-6.2.tar.gz
# tar zxvf readline-6.2.tar.gz
# cd readline-6.2/
# ./configure
# make
# make install


# wget http://utopia.knoware.nl/~hlub/rlwrap/rlwrap-0.37.tar.gz
# tar zxvf rlwrap-0.37.tar.gz
# cd rlwrap-0.37/
# ./configure
# make
# make install

(3)设置sqlplus的系统别名:
# vim /home/oracle/.bash_profile
在头部或尾部添加:

alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'

退出oracle用户再重新登录就ok。现在sqlplus用起来就很爽很习惯了!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Oracle(Oracle培训 )下的SQL(SQL Server培训mySQL培训 )plus中不能使用方向、退格键,从网上查下有小工具可以实现,就弄个玩玩了,毕竟方便。

  linux下使用rlwrap回调sqlplus中执行过的命令

  从官方下最新

  rlwrap-0.37.tar.gz http://utopia.knoware.nl/~hlub/uck/rlwrap/

  安装

  [root@sunsyk src]# tar xvfz rlwrap-0.37.tar.gz

  [root@sunsyk src]# cd rlwrap-0.37

  [root@sunsyk rlwrap-0.37]# ./configure --prefix=/usr/local/rlwrap

  [root@sunsyk rlwrap-0.37]# make && make install

  使用

  [root@sunsyk rlwrap-0.37]#vim /home/oracle/.bash_profile

  添加

  alias sqlplus='rlwrap sqlplus'

  alias rman='rlwrap rman'

  PATH=/oracle/10g/bin/:/usr/local/rlwrap/bin/:$PATH

  export PATH

  [root@sunsyk rlwrap-0.37]# su - oracle

  [oracle@sunsyk ~]$ /usr/local/rlwrap/bin/rlwrap sqlplus / as sysdba

  SQL*Plus: Release 10.2.0.1.0 - Production on Mon Jul 27 21:29:05 2009

  Copyright (c) 1982, 2005, Oracle. All rights reserved.

  Connected to:

  Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

  With the Partitioning, OLAP and Data Mining options

  SQL> show user

  USER is "SYS"

  SQL>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值