SQL*Plus on Linux で bash のようにカーソルキー(↑、↓)で履歴を呼出したり、Tabキーで自動補完したりする方法を紹介します。
以前書いた sqlplus で bash みたいにヒストリを呼び出したりできたらいいな - ablog と同じような内容ですが、Oracle Database がインストールされていない Linux マシンに Oracle Instant Client と rlwrap をインストールしたので手順をメモっておきます。
使用感はこんな感じです
こんな感じで、履歴を呼出したり、Tab で自動補完したりできるようになります。
[yazekats@yazekats-linux ~]$ sqlplus scott/tiger@dbserver:1521/orcl SQL> set pagesize 500 SQL> set linesize 200 SQL> SE ← 「SE」と入力して[Tab]キーを押すと候補が表示される SELECT SESSION SQL> SELECT ← 「SEL」まで入力して[Tab]キーを押すと自動補完される SQL> SELECT * F ← 「F」まで入力して[Tab]キーを押すと候補が表示される FILE FLOAT FROM SQL> SELECT * FROM ← 「FR」まで入力して[Tab]キーを押すと自動補完される SQL> SELECT * FROM DUAL; D - X SQL> set pagesize 500 ← [↑][↓]キーを押すと入力履歴が呼出される SQL> (reverse-i-search)`': ← [Ctrl] + [r]を押す (reverse-i-search)`S': SELECT * FROM DUAL; ←「S」と入力すると入力履歴から検索してヒットした「SELECT * FROM DUAL;」が表示される SQL> SELECT * FROM DUAL; ← Enter」キーを押すとSQLが実行される D - X
インストールと設定手順は以下の通りです。
インストール
readline-devel をインストールする
[root@yazekats-linux ~]# yum install readline-devel
rlwrap をインストールする
[root@yazekats-linux ~]# cd /usr/local/src/ [root@yazekats-linux src]# wget http://utopia.knoware.nl/~hlub/rlwrap/rlwrap-0.37.tar.gz [root@yazekats-linux src]# make [root@yazekats-linux src]# make install
Oracle Instant Client をインストールする
- Instant Client for Linux x86-64 (64-bit) から以下をダウンロードする。
[yazekats@yazekats-linux software]$ unzip instantclient-basic-linux.x64-11.2.0.4.0.zip [yazekats@yazekats-linux software]$ unzip instantclient-sqlplus-linux.x64-11.2.0.4.0.zip [yazekats@yazekats-linux software]$ mv instantclient_11_2 /opt/oracle/
設定
.bash_profile と .bashrc を編集する
- .bash_profile の PATH に Instant Client のパスを追記し、LD_LIBRARY_PATH と NLS_LANG を追記する。
PATH=$PATH:$HOME/bin:/sbin:/usr/sbin:/opt/oracle/instantclient_11_2 ... export LD_LIBRARY_PATH=/opt/oracle/instantclient_11_2 export NLS_LANG=American_America.AL32UTF8
- .bashrc に alias を追記する。
alias sqlplus='rlwrap /opt/oracle/instantclient_11_2/sqlplus'
辞書ファイルをダウンロードする
[root@yazekats-linux ~]# cd /usr/local/share/rlwrap/completions [root@yazekats-linux completions]# wget http://www.linuxification.at/download/rlwrap-extensions-V11-0.05.tar.gz [root@yazekats-linux completions]# tar xfvz rlwrap-extensions-V11-0.05.tar.gz
環境
今回使った環境は以下の通り。Oracle Database はインストールされていません。
[yazekats@yazekats-linux ~]$ cat /etc/issue Oracle Linux Server release 6.4 Kernel \r on an \m [yazekats@yazekats-linux ~]$ uname -r 2.6.39-400.17.1.el6uek.x86_64