Linux中Oracle的sqlplus下退格和Del键无效的问题解决

所属分类: 数据库 / oracle 阅读数: 671
收藏 0 赞 0 分享

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

乱七八糟的字符如图:

20151222173455870.jpg (857×379)

一、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现有设置,如图:

20151222173534907.jpg (1002×257)

第二种是使用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企业版默认没有这两个包),要分别下载这两个源码包编译安装一下。

# 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用起来就很爽很习惯了!

20151222173636868.jpg (799×485)

更多精彩内容其他人还在看

oracle存储过程中return和exit区别概述及测试

至于return和exit在oracle存储过程中的应用,有些新手朋友们还是比较容易混淆的,本文将针对这两个关键字进行详细对比下,感兴趣的你可以参考下,希望可以帮助到你
收藏 0 赞 0 分享

oracle查看当前日期是第几个星期的方法

oracle查看当前日期是第几个星期方法的代码段,需要的朋友可以参考一下
收藏 0 赞 0 分享

oracle删除已存在的表的实例

查询系统表,判断表是否存在,存在则直接删除
收藏 0 赞 0 分享

oracle中文乱码解决的办法

oracle中文乱码解决的办法,需要的朋友可以参考一下
收藏 0 赞 0 分享

Oracle中在pl/sql developer修改表的2种方法

Oracle中在pl/sql developer修改表的2种方法,需要的朋友可以参考一下
收藏 0 赞 0 分享

oracle 创建表空间步骤代码

oracle 创建表空间步骤代码,需要的朋友可以参考一下
收藏 0 赞 0 分享

Oracle 查看表空间的大小及使用情况sql语句

表空间使用情况包括:查看表空间的名称及大小/查看表空间物理文件的名称及大小/查看回滚段名称及大小等等感兴趣的你可以参考下本文
收藏 0 赞 0 分享

Oracle Form中COMMIT的概述及使用技巧

针对form上面的数据变动提交到后台数据库,同时数据库提交数据,接下来将详细介绍下Form中COMMIT的使用,感兴趣的你可以参考下本文
收藏 0 赞 0 分享

Oracle跨数据库查询并插入实现原理及代码

需要从一个数据库中的表GIS_WEICHAI_DATA_1S中的数据导入到另个一数据库的表GIS_WEICHAI_DATA_1S中,接下来为你讲解跨数据库查询并插入需要的朋友可以参考下
收藏 0 赞 0 分享

Oracle 存储过程发送邮件实例学习

接下来将介绍下如何使用存储过程发送邮件这一案例实现,感兴趣的你可以参考下本文或许对你有所帮助
收藏 0 赞 0 分享
查看更多