rlwrap for Command Line History and Editing in SQL*Plus and RMAN on Linux
The rlwrap (readline wrapper) utility provides a command history and editing of keyboard input for any other command. This is a really handy addition to SQL*Plus and RMAN on Linux. This article explains how to install rlwrap and set it up for SQL*Plus and RMAN. Thanks to Lutz Hartmann for reminding me of this utility.
The SQL Developer team have a cool tool called SQLcl, that is like a Java-based SQL*Plus replacement with lots of extra functionality, including command history. The 12cR2 version of SQL*Plus now contains a command history.
Installation From EPEL
Configure the EPEL yum repository, as described here. In this case i was installing on Oracle Linux 6 (x86-64), so I downloaded the package displayed here. Don't worry that it is listed as a, i386 package. It just installs the yum repository. The following commands download and configure the EPEL repository.
# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
For Oracle Linux 7 you would do this.
# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
With the repository in place you can install
rlwrap using the following command.
# yum install rlwrap
If you are using Oracle Linux 7 you can enable the "ol7_developer_EPEL" repository in the "/etc/yum.repos.d/public-yum-ol7.repo" file, which is a clone of EPEL provided by Oracle. You can the do a normal YUM install.
Download the latest rlwrap software from the following URL.
Unzip and install the software using the following commands.
gunzip rlwrap*.gz tar -xvf rlwrap*.tar cd rlwrap* ./configure make make check make install
Run the following commands, or better still append then to the ".bash_profile" of the oracle software owner.
alias rlsqlplus='rlwrap sqlplus' alias rlrman='rlwrap rman'
You can now start SQL*Plus or RMAN using "rlsqlplus" and "rlrman" respectively, and you will have a basic command history and the current line will be editable using the arrow and delete keys.
Thanks to Laurent Schneider for pointing out the potential dangers of using alias names of "sqlplus" and "rman", which include:
- rlwrap may affect the behaviour of CTRL+C during interactive sessions. I've done a few tests on this and I can't see a difference in behavior of CTRL+C with or without rlwrap. Perhaps this was a problem with earlier versions.
rlwrap only supports interactive sessions, so scripts like the following may not work as expected.
sqlplus <<EOF ... select ... EOF
From what I can see the alias doesn't seem to work from within a shell script (bash, ksh or csh), so it doesn't really present a danger. Thanks Maxim for putting me on to this.
- rlwrap is not an Oracle tool! I guess it's best to leave the sqlplus and rman commands clean and alias using a different name, just in case.
For more information see:
Hope this helps. Regards Tim...