hironomiu's Blog

こそっと書いていきます。twitter_id:hironomiu

Oracle CentOS5 rlwrapを利用したsqlplusのコマンド履歴機能

Oracle CentOS5 rlwrapを利用したsqlplusのコマンド履歴機能

centos上のOracleにローカルからsqlplusでSQLを実行してるとコマンド履歴がないのでちょっと苦労する。
そこでrlwrapを使ってこれを補ってみる。今回はrpm版のrlwrapを使用する。

rlwrap-0.37-1.el5.x86_64.rpmの取得(2012/03/29時点の最新版)

$ wget ftp://195.220.108.108/linux/epel/5/x86_64/rlwrap-0.37-1.el5.x86_64.rpm
--2012-03-30 15:23:09--  ftp://195.220.108.108/linux/epel/5/x86_64/rlwrap-0.37-1.el5.x86_64.rpm
           => `rlwrap-0.37-1.el5.x86_64.rpm'
195.220.108.108:21 に接続しています... 接続しました。
anonymous としてログインしています... ログインしました!
==> SYST ... 完了しました。    ==> PWD ... 完了しました。
==> TYPE I ... 完了しました。  ==> CWD /linux/epel/5/x86_64 ... 完了しました。
==> SIZE rlwrap-0.37-1.el5.x86_64.rpm ... 94353
==> PASV ... 完了しました。    ==> RETR rlwrap-0.37-1.el5.x86_64.rpm ... 完了しました。
長さ: 94353 (92K)

100%[======================================================================================>] 94,353      76.5K/s 時間 1.2s

2012-03-30 15:23:14 (76.5 KB/s) - `rlwrap-0.37-1.el5.x86_64.rpm' へ保存終了 [94353]

rmpパッケージをインストール

$ sudo rpm -ivh rlwrap-0.37-1.el5.x86_64.rpm
警告: rlwrap-0.37-1.el5.x86_64.rpm: ヘッダ V3 DSA signature: NOKEY, key ID 217521f6
準備中...                ########################################### [100%]
   1:rlwrap                 ########################################### [100%]

動作確認

oracleユーザで適当にSQLを実行。sqlplusを呼び出す際にrlwrap sqlplus ~の形で呼び出す。
今回は「select count(*) from v$session;」を2度目はctrl+pで履歴から選択して実行した。

[oracle]$ rlwrap sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on Fri Mar 30 15:24:14 2012

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

SQL> conn / as sysdba
Connected.
SQL> select count(*) from v$session;

  COUNT(*)
----------
        25

SQL> select count(*) from v$session;

  COUNT(*)
----------
        23

ctrl+a、ctrl+eなどの行内の移動とかも普通に使えるので楽チン。