LoginSignup
1
1

More than 5 years have passed since last update.

SQLclの動作を環境変数で変えてみる (Oracle Database 12c Release 2付属)

Posted at

Oracle Database 12c Release 2に付属するSQLcl (12.2.0.1) が実行時に参照し、動作を変更できる環境変数を調べてみました。調査はRed Hat Enterprise Linux 7 Update 3にOracle Database 12c Release 2 Enterprise Editionをインストールし、最新のPSUを適用した状態で実施しました。

SQLclの起動

日本語環境でSQLclを起動すると以下のようなメッセージが出力されます。

$ sql / as sysdba

SQLcl: 月 5 21 10:47:40 2018のリリース12.2.0.1.0 RC

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

接続先:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production


SQL>

環境変数

LANG

SQLclの起動メッセージのエンコードは環境変数NLS_LANGではなく、LANGで指定したコードが使用されます。セッションのNLS関連パラメーターのデフォルト値も変更されます。起動パラメーターとしてOCIインターフェースを用いる-ociを指定した場合でも同じ動作をするようです。

LANGを日本語に設定した例。

$ export LANG=ja_JP.utf8
$ sql / as sysdba

SQLcl: 月 5 21 10:51:27 2018のリリース12.2.0.1.0 RC

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

接続先:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production


SQL> SHOW PARAMETER nls
NAME                    TYPE   VALUE
----------------------- ------ --------------------------
nls_calendar            string GREGORIAN
nls_comp                string BINARY
nls_currency            string \
nls_date_format         string RR-MM-DD
nls_date_language       string JAPANESE
nls_dual_currency       string \
nls_iso_currency        string JAPAN
nls_language            string JAPANESE
nls_length_semantics    string BYTE
nls_nchar_conv_excp     string FALSE
nls_numeric_characters  string .,
nls_sort                string BINARY
nls_territory           string JAPAN
nls_time_format         string HH24:MI:SSXFF
nls_time_tz_format      string HH24:MI:SSXFF TZR
nls_timestamp_format    string RR-MM-DD HH24:MI:SSXFF
nls_timestamp_tz_format string RR-MM-DD HH24:MI:SSXFF TZR
SQL> SELECT SYSDATE FROM DUAL;

SYSDATE
--------
18-05-21

SQL>

LANGを英語にした例。

$ export LANG=en_US.utf8
$ sql / as sysdba

SQLcl: Release 12.2.0.1.0 RC on Mon May 21 10:52:21 2018

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

Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production


SQL> SHOW PARAMETER nls
NAME                    TYPE   VALUE
----------------------- ------ ----------------------------
nls_calendar            string GREGORIAN
nls_comp                string BINARY
nls_currency            string $
nls_date_format         string DD-MON-RR
nls_date_language       string AMERICAN
nls_dual_currency       string $
nls_iso_currency        string AMERICA
nls_language            string AMERICAN
nls_length_semantics    string BYTE
nls_nchar_conv_excp     string FALSE
nls_numeric_characters  string .,
nls_sort                string BINARY
nls_territory           string AMERICA
nls_time_format         string HH.MI.SSXFF AM
nls_time_tz_format      string HH.MI.SSXFF AM TZR
nls_timestamp_format    string DD-MON-RR HH.MI.SSXFF AM
nls_timestamp_tz_format string DD-MON-RR HH.MI.SSXFF AM TZR
SQL> SELECT SYSDATE FROM DUAL;

SYSDATE
---------
21-MAY-18

SQL>


JAVA_HOME

SQLclはJavaを使って開発されているため、内部ではjavaコマンドが動作します。インストールされた Java Runtimeのディレクトリを指定する環境変数がJAVA_HOMEです。
この環境変数が指定されていない場合、環境変数JAVA_HOMEにはORACLE_HOME/jdkが使用されます。
以下の例はRed Hat Enterprise Linuxのパッケージに含まれるOpenJDK 1.8を指定する例です。

$ export JAVA_HOME=/usr
$ sql / as sysdba

SQLcl: 月 5 21 10:58:54 2018のリリース12.2.0.1.0 RC

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

接続先:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production


SQL> ! ps -ef|grep java
oracle     8421   8416 65 10:58 pts/0    00:00:03 /usr/bin/java -Djava.awt.headless=true -Dapple.awt.UIElement=true -Xss10M -Djava.net.useSystemProxies=true -client -cp /u01/app/oracle/product/12.2.0/dbhome_1/sqldeveloper/sqlcl/lib/extensions/*:/u01/app/oracle/product/12.2.0/dbhome_1/jdbc/lib/ojdbc8.jar:/u01/app/oracle/product/12.2.0/dbhome_1/ojdbc8.jar:/u01/app/oracle/product/12.2.0/dbhome_1/jdbc/lib/ojdbc7.jar:/u01/app/oracle/product/12.2.0/dbhome_1/ojdbc7.jar:/u01/app/oracle/product/12.2.0/dbhome_1/jdbc/lib/ojdbc6.jar:/u01/app/oracle/product/12.2.0/dbhome_1/ojdbc6.jar:/u01/app/oracle/product/12.2.0/dbhome_1/sqldeveloper/sqlcl/lib/oracle.sqldeveloper.sqlcl.jar: oracle.dbtools.raptor.scriptrunner.cmdline.SqlCli / as sysdba
oracle     8465   8421  0 10:58 pts/0    00:00:00 bash -c SQLCLTERM=`stty -g 2>/dev/null` ; stty sane 2>/dev/null;  export PATH="/u01/app/oracle/product/12.2.0/dbhome_1/sqldeveloper/sqlcl/bin:$PATH" && ps -ef|grep java; SQLCLEXIT=$? ; if test "M$SQLCLTERM" != "M" ; then stty "$SQLCLTERM" 2>/dev/null ; fi; exit $SQLCLEXIT
oracle     8470   8465  0 10:58 pts/0    00:00:00 grep java

SQL>

Java Runtimeとして/usr/bin/javaコマンドが実行されていることがわかります。

DEBUG

Java Runtimeのデバッグモードを設定するオプションを指定します。
以下の例はDEBUGに-Xdebugを指定しています。環境変数DEBUGが指定されると、SQLcl起動時に環境変数の値が表示されるようになります。
ただし、JAVA_HOMEは表示されず、コマンドのパスがJAVAとして表示されます。

$ export DEBUG=-Xdebug
$ sql / as sysdba
JAVA=/usr/bin/java
STD_ARGS=-Djava.awt.headless=true -Dapple.awt.UIElement=true -Xss10M -Djava.net.useSystemProxies=true
JAVA_OPTS=
DEBUG=-Xdebug
CPLIST=/u01/app/oracle/product/12.2.0/dbhome_1/sqldeveloper/sqlcl/lib/extensions/*:/u01/app/oracle/product/12.2.0/dbhome_1/jdbc/lib/ojdbc8.jar:/u01/app/oracle/product/12.2.0/dbhome_1/ojdbc8.jar:/u01/app/oracle/product/12.2.0/dbhome_1/jdbc/lib/ojdbc7.jar:/u01/app/oracle/product/12.2.0/dbhome_1/ojdbc7.jar:/u01/app/oracle/product/12.2.0/dbhome_1/jdbc/lib/ojdbc6.jar:/u01/app/oracle/product/12.2.0/dbhome_1/ojdbc6.jar:/u01/app/oracle/product/12.2.0/dbhome_1/sqldeveloper/sqlcl/lib/oracle.sqldeveloper.sqlcl.jar:

SQLcl: 月 5 21 11:03:17 2018のリリース12.2.0.1.0 RC

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

接続先:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production


SQL>

JAVA_OPTS

標準以外のJava Runtimeのオプションを指定する場合に使います。
デフォルトでは以下のオプションが指定されます。

  1. -Djava.awt.headless=true
  2. -Dapple.awt.UIElement=true
  3. -Djava.net.useSystemProxies=true
  4. -Xss10M
  5. -client
  6. -cp {ORACLE_HOME}sqldeveloper/sqlcl/lib/extensions/*, {ORACLE_HOME}/jdbc/lib/ojdbc8.jar {ORACLE_HOME}/ojdbc8.jar {ORACLE_HOME}/jdbc/lib/ojdbc7.jar {ORACLE_HOME}/ojdbc7.jar {ORACLE_HOME}/jdbc/lib/ojdbc6.jar {ORACLE_HOME}/ojdbc6.jar {ORACLE_HOME}/sqldeveloper/sqlcl/lib/oracle.sqldeveloper.sqlcl.jar

JAVA_OPTSに指定されたオプションは、-clientと${DEBUG}の間に指定されます。下記の例は-Xincgcを指定しています。

$ export DEBUG=-Xdebug
$ export JAVA_OPTS=-Xincgc
$ sql / as sysdba
JAVA=java
STD_ARGS=-Djava.awt.headless=true -Dapple.awt.UIElement=true -Xss10M -Djava.net.useSystemProxies=true
JAVA_OPTS=-Xincgc
DEBUG=-Xdebug
CPLIST=/u01/app/oracle/product/12.2.0/dbhome_1/sqldeveloper/sqlcl/lib/extensions/*:/u01/app/oracle/product/12.2.0/dbhome_1/jdbc/lib/ojdbc8.jar:/u01/app/oracle/product/12.2.0/dbhome_1/ojdbc8.jar:/u01/app/oracle/product/12.2.0/dbhome_1/jdbc/lib/ojdbc7.jar:/u01/app/oracle/product/12.2.0/dbhome_1/ojdbc7.jar:/u01/app/oracle/product/12.2.0/dbhome_1/jdbc/lib/ojdbc6.jar:/u01/app/oracle/product/12.2.0/dbhome_1/ojdbc6.jar:/u01/app/oracle/product/12.2.0/dbhome_1/sqldeveloper/sqlcl/lib/oracle.sqldeveloper.sqlcl.jar:
OpenJDK 64-Bit Server VM warning: Using incremental CMS is deprecated and will likely be removed in a future release

SQLcl: 月 5 21 11:13:28 2018のリリース12.2.0.1.0 RC

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

接続先:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production


SQL>

ORACLE_HOME

ORACLE_HOMEはJava Runtimeの検索に使用されます。ORACLE_HOMEが指定され、JAVA_HOMEが指定されていない場合、
JAVA_HOMEとしてORACLE_HOME/jdk/jreが指定されます。
また、ORACLE_HOMEが指定されている場合、JDBC Driverの検索パスとしてORACLE_HOMEとORACLE_HOME/jdbc/libが追加され、
LD_LIBRARY_PATHも変更されます。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1