Database OracleDB インフラ

[Oracle] 次世代SQL*Plusの「SQLcl」のインストール手順を紹介

こんにちは!シミダイ(@shimidai2100)です。

Oracle Databaseの次世代CUI「SQLcl」のインストール方法について紹介します。

SQLclは、コマンド履歴オートコンプリート新規の強力なコマンドが利用することができます。

もちろん従来のSQL*Plusのコマンドも使用することができ、今後SQL*Plusに代わるCUIユーティリティになることでしょう。


SQLclのダウンロード

SQLclはLinux版、Windows版もJavaで作成されており、どちらも同じメディアで利用できます。

SQLclのダウンロードは「http://www.oracle.com/technetwork/developer-tools/sqlcl/downloads/index.html」からダウンロード出来ます。

ダウンロードページの赤枠の「Download」でダウンロードしましょう。

SQLclのダウンロードページ

なお前提としてJava8以上が必要になります。

Linuxでのインストール手順

SQLclのインストールは非常に簡単でZIPファイルを解凍すれば直ぐに利用することができます。

今回は「$ORACLE_HOME」配下にSQLclを配置しましょう。

cd $ORACLE_HOME
unzip sqlcl-*.zip
cd sqlcl/bin/
rm sql.exe

Linux版では使用しない「exe」ファイルは削除しておきます。

より使いやすいようにするために「.bash_profile」に「SQLcl」のPATHを通しておきましょう。

以下、「.bash_profile」への追記のサンプルになります。

自身の環境に合わせてORACLE_HOMEORACLE_SIDを変更しておきましょう

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=${ORACLE_BASE}/product/18.0.0/dbhome_1
export PATH=$ORACLE_HOME/bin:${ORACLE_HOME}/sqlcl/bin:$ORACLE_HOME/jdk/bin:${PATH}
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export NLS_LANG=JAPANESE_JAPAN.UTF8
export LANG=ja_JP.UTF-8
export ORACLE_SID=orcl18c

では実際にデータベースに繋がるか試してみましょう。

以下のように「sql」で実行できます。

[oracle@rhel73-18000 ~]$ sql

SQLcl: 金 8 10 23:25:40 2018のリリース18.2 Production

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

ユーザー名 (''?) sys as sysdba
パスワード (**********?) ******
接続先:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.3.0.0.0


Sessionが変更されました。

経過時間: 00:00:00.033

23:26:03 SYS@orcl18c > select instance_name from v$instance ;
INSTANCE_NAME
----------------
orcl18c

経過時間: 00:00:00.022
23:26:17 SYS@orcl18c >

また引数を渡したデータベースに接続することも可能です。

sql <ユーザー名>/<パスワード>@接続識別子

Windowへのインストール手順

Windowのインストールも簡単でZIPファイルを展開すれば完了です。

今回は「C:\Program Files (x86)\Oracle\sqlcl」に配置します。

Program FileにZIPファイルを展開

「sql.exe」のショートカットデスクトップ上に作成しておくと使いやすくて便利です。

以下のように「SQLcl」から接続することができます。

SQLcl: 土 8 11 00:53:45 2018のリリース18.2 Production

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

ユーザー名 (''?) sys@localhost:1521/orcl18c as sysdba
パスワード (**********?) ******
接続先:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production


SQL> select instance_name from v$instance ;

INSTANCE_NAME
----------------
orcl18c

NLS_LANGの設定が誤っているとSQL実行時に以下のエラーが出力します。

SQL> select instance_name from v$instance;
java.io.UnsupportedEncodingException: JA16SJIS
        at java.lang.StringCoding.encode(Unknown Source)
        at java.lang.String.getBytes(Unknown Source)
        at oracle.dbtools.db.ResultSetFormatter.write(ResultSetFormatter.java:673)
        at oracle.dbtools.db.ResultSetFormatter.write(ResultSetFormatter.java:666)
        at oracle.dbtools.db.SQLPLUSCmdFormatter.rset2sqlplus(SQLPLUSCmdFormatter.java:2276)
        at oracle.dbtools.db.ResultSetFormatter.rset2sqlplus(ResultSetFormatter.java:309)
        at oracle.dbtools.db.ResultSetFormatter.rset2sqlplus(ResultSetFormatter.java:283)
        at oracle.dbtools.db.ResultSetFormatter.formatResults(ResultSetFormatter.java:144)
        at oracle.dbtools.db.ResultSetFormatter.formatResults(ResultSetFormatter.java:69)
        at oracle.dbtools.raptor.newscriptrunner.SQL.processResultSet(SQL.java:794)
        at oracle.dbtools.raptor.newscriptrunner.SQL.executeQuery(SQL.java:705)
        at oracle.dbtools.raptor.newscriptrunner.SQL.run(SQL.java:82)
        at oracle.dbtools.raptor.newscriptrunner.ScriptRunner.runSQL(ScriptRunner.java:404)
        at oracle.dbtools.raptor.newscriptrunner.ScriptRunner.run(ScriptRunner.java:230)
        at oracle.dbtools.raptor.newscriptrunner.ScriptExecutor.run(ScriptExecutor.java:341)
        at oracle.dbtools.raptor.newscriptrunner.ScriptExecutor.run(ScriptExecutor.java:224)
        at oracle.dbtools.raptor.scriptrunner.cmdline.SqlCli.process(SqlCli.java:406)
        at oracle.dbtools.raptor.scriptrunner.cmdline.SqlCli.processLine(SqlCli.java:417)
        at oracle.dbtools.raptor.scriptrunner.cmdline.SqlCli.startSQLPlus(SqlCli.java:1136)
        at oracle.dbtools.raptor.scriptrunner.cmdline.SqlCli.main(SqlCli.java:493)

環境変数「NLS_LANG」を「Japanese_Japan.AL32UTF8」に修正しましょう。

 

関連記事

-Database, OracleDB, インフラ

Copyright© shimidai2100 , 2020 All Rights Reserved.