解决SQLPLUS无法使用上下箭头

1 问题描述

SQLPLUS中使用上下箭头无法获取历史命令,如下图所示:

在这里插入图片描述

按上下箭头会显示^[[A/^[[B

2 解决方案

需要安装rlwrap,可以的话可以用包管理器安装,笔者环境CentOS,这里从源码编译安装。

2.1 下载源码

官方Github可以戳这里,目前最新的版本为0.43

在这里插入图片描述

2.2 安装

上传到服务器后,解压编译安装:

tar -zxvf rlwrap-0.43.tar.gz
cd rlwrap-0.43
./configure
make 
make install

笔者在./configure这步遇到以下错误:

在这里插入图片描述

安装一个库解决:

yum install readline-devel

再次./configure就没有问题了:

在这里插入图片描述

2.3 测试

使用rlwrap sqlplus代替原来的sqlplus登录:

rlwrap sqlplus xxx/xxx as sysdba

这样就可以使用上下箭头了。

因为笔者在root上进行测试,在oracle用户上进行测试可能会出现权限问题,如图:

在这里插入图片描述

到对应目录下创建该文件:

cd /home/oracle
sudo touch .sqlplus_history

创建了之后还是不能执行:

在这里插入图片描述

修改组权限即可:

sudo chmod g+w .sqlplus_history

在这里插入图片描述

2.4 别名

为了方便使用可以加上一个别名:

alias sp='rlwrap sqlplus'

这样下次就可以使用

sp xxx/xxx as sysdba

登录了。