はじめに
Oracle Databaseを構築する際に、必ずと言っていいほど利用する「SQL*Plus」ですが、 Mysqlのように 履歴機能 ※1 や 補完機能 ※2 する機能が残念ながら装備されていません。
今回は、SQL*Plus(CentOS環境)で 履歴機能 や 補完機能 を追加する手順を紹介します。
※1. 履歴("↑"キーにてhistory表示)やC-rでインクリメンタルな履歴検索を実現する機能 ※2. タブを押すことで補完を実現する機能
利用パッケージ
名称 | 機能 | 説明 | 備考 |
---|---|---|---|
readline | 履歴機能 | CUI アプリケーションにおいてユーザが行を入力する際に便利な「行頭・行末移動」「履歴機能」などを提供するパッケージ | Linux上でbashを利用している場合、インストールされてます。 |
rlwrap | 補完機能 | readlineをラッピングし、「readline」の機能に加え、補完機能を提供するパッケージ |
履歴機能の追加手順
readlineのインストール確認
- readlineパッケージがインストール済みか確認します。 ※ヘッダファイル(devel)も含む
rpm -qa --qf "%{name}-%{version}-%{release}.%{arch}\n" | grep readline readline-5.1-3.el5.i386 readline-5.1-3.el5.x86_64 readline-devel-5.1-3.el5.i386 readline-devel-5.1-3.el5.x86_64
rlwrapライブラリのインストール
rlwrapライブラリを、インストールする場合は、次の3つの方法がありますが、今回は、「ソースコードをコンパイルしてインストール」する手順になります。
wget http://utopia.knoware.nl/~hlub/rlwrap/rlwrap-0.42.tar.gz
- ダウンロードしたファイル(rlwrap-0.42.tar.gz)を解凍します。
tar xvfz rlwrap-0.42.tar.gz
cd rlwrap-0.42 ./configure make & make install
- インストールされたコマンドのパスを通す。
whereis rlwrap rlwrap: /usr/local/bin/rlwrap vi /etc/profile (以下、追記) PATH=/bin:/bin:/usr/bin/:/usr/local/bin:/usr/X11R6/bin/:$PATH export PATH
動作確認
- 履歴機能がSQL*Plusで利用できるようになったことを確認します。
rlwrap sqlplus /nolog SQL>↑↓キーによる履歴表示 SQL> Ctr + R による履歴検索
※補足 履歴ファイルとして、ホームディレクトリ配下に「.sqlplus_history」が生成されています。
補完機能の追加手順
ダウンロード
Linuxification.at: rlwrap_extより対応するOracleのバージョンのURLをコピーしてください。
コピーしたURLにて、パッケージをダウンロードします。
wget http://www.linuxification.at/download/rlwrap-extensions-V10-0.08.tar.gz
展開
- 辞書ファイルの格納場所となるフォルダを作成します。
mkdir /home/user/oracle/sqlplus-dictionary
- ダウンロードしたファイル(rlwrap-0.42.tar.gz)を解凍します。
cd /home/user/oracle/sqlplus-dictionary tar xvfz /tmp/rlwrap-extensions-V10-0.08.tar.gz asmcmd README README.english rman sql+ sqlplus sqlplus.all sqlplus.dba sqlplus.dbms_packages sqlplus.functions sqlplus.gvdollar sqlplus.init sqlplus._init sqlplus.rman sqlplus.tables sqlplus.user sqlplus.utl_packages sqlplus.vdollar
動作確認
補完機能がSQL*Plusで利用できるようになったことを確認します。
rlwrap -pRed -if ~/sqlplus-dictionary/sqlplus sqlplus /nolog SQL> SELによる補完機能 SQL> SELECT SQL> sel による補完機能 ※小文字も対応可 SQL> SELECT
※補足 必要に応じて、以下のようなaliasの設定をすると便利です。
vi /etc/bashrc (以下、追記) alias sqlplus='/usr/local/bin/rlwrap -pRed -if /home/oracle/sqlplus-dictionary/sqlplus $ORACLE_HOME/bin/sqlplus'
参考サイト
rlwrap 提供サイト
http://utopia.knoware.nl/~hlub/rlwrap/