Oracle SQL*Plus に SQL 編集機能を追加して使いやすくして作業効率アップを図る

Oracle SQL*Plus コマンドを使いやすくする!

SQL*Plus での SQL 実行環境を快適にしたい

SQL*Plus で SQL を実行していると分かりますが、SQL を書いている途中に一部を間違えてしまうと修正出来なくなってしまって、また最初から SQL を打ち直していませんか?

SQL*Plus には直前に実行した SQL を編集する機能がありますが、あくまでも直前に実行した SQL だけしか編集することが出来ません。例えば3回前に実行した SQL は変更できないということです。

これらの問題を解決するために、今回 SQL*Plus コマンドを劇的に改善して快適にする方法をご紹介します。以下の動画を見て頂ければ分かりますが、SQL*Plus 上で bash や zsh などのようにコマンド編集機能を使えるようになります。



socat コマンドをインストールする

動画のようなコマンドライン編集機能を SQL*Plus で使えるようにするために、socat というコマンドをインストールする必要があります。

RedHat / CentOS で socat パッケージをインストールするには次のコマンドを実行します。
$ sudo yum install socat

SQL*Plus でコマンドライン編集機能を使ってみる

socat コマンドをインストールしたら、次のようにコマンドを実行します。ユーザー名とパスワードを聞かれますので入力するとデータベースに接続されます。

$ socat READLINE EXEC:'sqlplus',pty,setsid,ctty

もしユーザー名とパスワードをあらかじめ SQL*Plus に設定したい場合には以下のように username/password 部分にデータベースのユーザー名とパスワードを設定します。
$ socat READLINE EXEC:'sqlplus username/password',pty,setsid,ctty

データベースに接続したら、あとはいつも通り SQL を実行してみます。そしてキーボードの矢印キーで上下左右を押すことで自由にカーソルを移動させることが出来るようになります。

SQL*Plus での SQL 実行履歴も保存していつでも呼び出せるようにする

ここまで説明した方法で SQL*Plus 内でコマンド編集機能が使えるようになりました。しかし SQL*Plus を終了させてしまうと、それまでに実行した SQL がなくなってしまいます。今度は SQL 実行履歴も保存する機能を加えてさらに便利に SQL*Plus を使いましょう。
$ socat READLINE,history=$HOME/.sqlplus_history EXEC:'sqlplus',pty,setsid,ctty

このコマンドを実行して SQL を実行して SQL*Plus を終了させてから$HOME/.sqlplus_history ファイルを見ると、これまで実行した SQL が保存されています。また SQL*Plus に再接続すれば、これまで実行した SQL が使えるようになります。


この方法を使うと SQL*Plus での SQL 実行がとても快適になります!