皆さんは SQLcl は使われていますか?
SQL*Plus の拡張にあたるツールなのですが、
OracleDB 12.2 からは標準で同梱されるようになりました。
これを使うと SQL*Plus でできなかった上下キーによる履歴の参照などができるようになります(他の利点については下記参照)。
("Oracle SQLcl"を使ってみる - Qiita)
これだけであれば rlwrapper などを導入する選択肢もありますが、
環境によっては好き勝手にインストールしづらい場合があります。
その点標準で同梱されている sqlcl であれば、何も気にせず使える可能性が高いです。
そのような場合の選択肢として知っておくと良いと思います。
環境
- Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
使い方(OracleDB 12.2 以降)
普段 sqlplus
でログインしている場合、sqlplus
を sql
に変えるだけで使えます。
$ sql <USERNAME>/<PASSWORD>@pdborcl
ただしこれをそのまま実行すると、下記のように カレントパスが変更されます
コマンドが見つかれない方は、$ORACLE/sqldeveloper/sqlcl/bin/
にファイルが無いかパスが通っていない可能性があります。
[oracle@dbserver mywork]$ echo $ORACLE_HOME
/u01/app/oracle/product/12.2.0/dbhome_1
[oracle@dbserver mywork]$ pwd
/home/oracle/work/fam_taro/mywork # sql コマンド前のカレントディレクトリ
[oracle@dbserver mywork]$ sql /nolog
SQLcl: 月 12 25 10:25:51 2017のリリース12.2.0.1.0 RC
Copyright (c) 1982, 2017, Oracle. All rights reserved.
SQL> pwd
/u01/app/oracle/product/12.2.0/dbhome_1/sqldeveloper/sqlcl/bin/ # sql コマンド後のカレントディレクトリ
上記の通り、カレントディレクトリが $ORACLE_HOME/sqldeveloper/sqlcl/bin/
に変わっています。
(このように pwd コマンドなどが直接使えるのも sqlcl の特徴です)
sqlcl では cd
コマンドが叩けるため、
sqlcl でログイン後に cd /to/my/directry/path
と叩けば良いのですが、
自身の作業フォルダから sqlcl を呼び出す場合は何かとストレスになります。
起動スクリプト(ちょっと改善版)
ですので、予め下記のようなスクリプトを用意しておくと便利です。
コメントアウトしている部分は、行幅などの設定用ファイル (login.sql) を読み込むためにあります。
はじめに何か設定したい方は、 login.sql などに記述しておくと良いです。
# !/bin/sh
FNAME=tmp_login.sql
SCRIPT_DIR=$(cd $(dirname $0); pwd)
echo "cd ${SCRIPT_DIR}" > ${FNAME}
echo "" >> ${FNAME}
# echo "@login" >> ${FNAME}
sql <USERNAME>/<PASSWORD>@pdborcl @${SCRIPT_DIR}/${FNAME}
このスクリプトを使えば、以下のように pwd の結果が同じ場所になります。
(というかこれくらいデフォルトの sqlcl で対応しt)
[oracle@dbserver mywork]$ pwd
/home/oracle/work/fam_taro/mywork
[oracle@dbserver mywork]$ sh sample.sh
SQLcl: 月 12 25 10:47:01 2017のリリース12.2.0.1.0 RC
Copyright (c) 1982, 2017, Oracle. All rights reserved.
Last Successful login time: 月 12月 25 2017 10:47:04 +09:00
接続先:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> pwd
/home/oracle/work/fam_taro/mywork
それでは皆さん快適な SQLcl ライフを!