SQL*Plusのカスタマイズ

今回はSQL*Plusが使用するエディタの設定方法を紹介します。
SQL*Plusで以下のように
SQL> edit
とコマンドを打ち込むと、前回実行したSQLをエディタで開いて編集する事が出来ます。
デフォルトの設定では、Windowsは「メモ帳」、Linuxでは「edエディタ」が編集用のエディタとして起動します。
「メモ帳」の使い方を知らない人は少ないと思いますが、「edエディタ」の使い方を知らない人は結構いるのではないでしょうか。
実際「edエディタ」は、エディタをどうやって終了すればよいのかも最初は分からない程です。
(おらも最初は終了の仕方がわからずに、端末ごと切断してしまいました)

というわけで、今回はLinux環境で、SQL*Plusが使用するエディタを使い方の難しい「edエディタ」から普段から使い慣れている(?)「viエディタ」へ変更してみます。

[環境]
OSRed Hat Enterprise Linux AS release 3
DBOracle Database 10g Release 10.1.0.3.0

[エディタの設定]
1.事前定義変数の確認
DEFINEコマンドを実行して事前定義変数を確認します。
事前定義変数とは、SQL*Plusの設定情報などを保持している変数です。
SQL> DEFINE
DEFINE _DATE = "06-07-27" (CHAR)
DEFINE _CONNECT_IDENTIFIER = "gtest" (CHAR)
DEFINE _USER = "GTEST" (CHAR)
DEFINE _PRIVILEGE = "" (CHAR)
DEFINE _SQLPLUS_RELEASE = "1001000300" (CHAR)
DEFINE _EDITOR = "ed" (CHAR)
DEFINE _O_VERSION = "Oracle Database 10g Release 10.1.0.3.0 - Production" (CHAR)
DEFINE _O_RELEASE = "1001000300" (CHAR)
「DEFINE _EDITOR = "ed" (CHAR)」という行が確認出来ますね。
事前定義変数_EDITORに設定されている値がSQL*Plusが使用するエディタです。
現在は「ed」が設定されているので「edエディタ」が起動します。
その他の事前定義変数の詳細は以下を参照して下さい。
  • SQL*Plus ユーザーズ・ガイドおよびリファレンス10g リリース2
    http://otndnld.oracle.co.jp/document/products/orac...
    ※参照するにはOTNのユーザ登録が必要です。

2.事前定義変数の変更
「viエディタ」が起動するように_EDITORの値を変更します。
値の変更にもDEFINEコマンドを使用します。
構文は以下の通りです。
DEFINE variable = value
variableには事前定義変数名、valueには値を指定します。
上記を踏まえ_EDITORの値を「vi」に設定してみます。
SQL> DEFINE _EDITOR = vi
設定が変更されたか確認してみます。
SQL> DEFINE
DEFINE _DATE = "06-07-27" (CHAR)
DEFINE _CONNECT_IDENTIFIER = "gtest" (CHAR)
DEFINE _USER = "GTEST" (CHAR)
DEFINE _PRIVILEGE = "" (CHAR)
DEFINE _SQLPLUS_RELEASE = "1001000300" (CHAR)
DEFINE _EDITOR = "vi" (CHAR)
DEFINE _O_VERSION = "Oracle Database 10g Release 10.1.0.3.0 - Production" (CHAR)
DEFINE _O_RELEASE = "1001000300" (CHAR)
「DEFINE _EDITOR = "vi" (CHAR)」となっているのが確認出来ましたね。
これで設定は完了です。
事前定義変数の値はSQL*Plusを終了してしまうと元に戻ってしまうため毎回設定が必要になります。
これは面倒なので「login.sql」を作成して自動で設定されるようにしましょう。
「login.sql」とはSQL*Plusでデータベースに接続する際に毎回実行されるスクリプトです。
SQL*Plusはこのスクリプトファイルをユーザ(OSのユーザ)がsqlplusコマンドを実行したカレントディレクトリから探して実行します。
例えば、現在のディレクトリが/home/oracleだとして、ここでsqlplusコマンドを実行した場合/home/oracle/login.sqlというファイルをSQL*Plusは探して実行します。

では、「login.sql」を作成してみます。
まずはSQL*Plusを終了します。
SQL> exit
次に任意のディレクトリに「login.sql」を作成します。
今回は/home/oracleディレクトリに作成します。
cd /home/oracle
vi login.sql
「login.sql」に_EDITORの設定を記述します。
DEFINE _EDITOR = vi
保存して閉じます。そして/home/oracleディレクトリからSQL*Plusを起動します。
sqlplus user/password@service_name
userpasswordservice_nameは環境に合わせて変更して下さい。
それでは変更されているか確認してみましょう。
SQL> DEFINE
DEFINE _DATE = "06-07-27" (CHAR)
DEFINE _CONNECT_IDENTIFIER = "gtest" (CHAR)
DEFINE _USER = "GTEST" (CHAR)
DEFINE _PRIVILEGE = "" (CHAR)
DEFINE _SQLPLUS_RELEASE = "1001000300" (CHAR)
DEFINE _EDITOR = "vi" (CHAR)
DEFINE _O_VERSION = "Oracle Database 10g Release 10.1.0.3.0 - Production" (CHAR)
DEFINE _O_RELEASE = "1001000300" (CHAR)
「DEFINE _EDITOR = "vi" (CHAR)」になっていますね。
これで毎回設定しなくても「viエディタ」が起動するようになりました。

以上
2006年07月27日(木) 15:39:37 Modified by mr_makochi




スマートフォン版で見る