13.8 ojvmjavaツール

ojvmjavaツールは、データベース・インスタンスのセッション・ネームスペースとの対話型インタフェースです。ojvmjavaツールを起動するときは、データベース接続引数を指定します。これによって、プロンプトが表示され、コマンドを入力できる状態になります。

シェルは実行可能プログラム、つまり、static main()メソッドを持つクラスを起動できます。起動するには、コマンドライン・インタフェースを使用するか、データベース常駐クラスをコールします。データベース常駐クラスをコールする場合、実行可能ファイルは、loadjavaツールを使用してロードしておく必要があります。

この項の内容は次のとおりです。

13.8.1 ojvmjavaツールの構文

ojvmjavaツールのコマンド構文は次のとおりです。

ojvmjava {-user user[/password@database ] [options]
  [@filename]
  [-batch]
  [-c | -command command args]
  [-debug]
  [-d | -database conn_string]
  [-fileout filename]
  [-o | -oci | -oci8]
  [-oschema schema]
  [-t | -thin]
  [-version | -v]
 -runjava [server_file_system]
 -jdwp port [host]
 -verbose

13.8.2 ojvmjavaツールの引数の概要

表13-4は、ojvmjavaツールの引数の一覧です。

表13-4 ojvmjavaの引数の概要

引数 説明

-user | -u

データベースに接続するためのユーザー名を指定します。この名前は大/小文字の区別がありません。名前は常に大文字に変換されます。データベース情報を指定した場合、デフォルトで使用される構文はOCIです。また、デフォルト・データベースを指定することもできます。

-password | -p

データベースに接続するためのパスワードを指定します。

@filename

実行するojvmjavaツールのコマンドを含むスクリプト・ファイルを指定します。

-batch

スクリーンに表示されたすべてのメッセージを無効にします。ヘルプ・メッセージまたはプロンプトは表示されません。入力したコマンドへの応答のみが表示されます。

-command

任意のコマンドを実行します。ojvmjavaツールをインタプリタ・モードで実行するのではなく、1つのコマンドのみ実行する場合は、このオプションの後にコマンドと引数を含む文字列を指定して実行します。指定したコマンドが実行されると、ojvmjavaツールは終了します。

-debug

デバッグ情報を表示します。

-d | -database conn_string

データベース接続文字列を指定します。

-fileout file

出力を指定のファイルにリダイレクトします。

-o | -oci | -oci8

JDBC OCIドライバを使用します。OCIドライバがデフォルトです。このフラグを使用して、@databaseまたは-databaseオプションのいずれかで使用する構文を指定します。

-o schema schema

このスキーマを使用してクラスを参照します。

-t | -thin

JDBC Thinドライバ用のデータベース構文を使用するように指定します。データベース接続文字列は、host:port:SIDの形式で指定するか、またはOracle Net Servicesの名前/値リストになります。

-verbose

接続情報を表示します。

-version

バージョンを表示します。

-runjava

Javaコマンドを実行する際にDBMS_JAVA.runjavaを使用します。引数を指定しない場合、クライアント・ファイルシステムの参照として-classpathを解析します。引数server_file_systemを指定すると、DBMS_JAVA.runjavaが通常行うように、Oracleサーバーが稼働しているファイルシステムの参照として-classpathを解析します。

-jdwp

接続が、指定のポートおよびホストでデバッガ接続をリスニングするようにします。ホストのデフォルト値はlocalhostです。

13.8.3 ojvmjavaツールの例

次に示すように、データベースorclのセッション・ネームスペース上のシェルを、ホストdbserverのリスナー・ポート2481に対してオープンします。

ojvmjava -thin -user HR@dbserver:2481:orcl
Password: password

13.8.4 ojvmjavaツールの機能

ojvmjavaツールのコマンドには様々なタイプの機能があり、次のようにグループ化されます。

13.8.4.1 ojvmjavaツールのコマンドライン・オプション

この項では、ojvmjavaツールのコマンドで使用できる次のオプションについて説明します。

@filenameオプションでのojvmjavaツール・コマンドのスクリプト

この@filenameオプションは、1つ以上のojvmjavaツール・コマンドを含むスクリプト・ファイルを指定します。指定されたスクリプト・ファイルは、クライアント上に配置されます。ojvmjavaツールはファイルを読み取り、指定されたサーバー上ですべてのコマンドを実行します。さらに、スクリプト・ファイルはサーバー上で実行されるため、ファイルへの出力のリダイレクトや別のスクリプトの実行など、そのスクリプト・ファイルでのオペレーティング・システムとの対話はすべてサーバー上で行われます。別のスクリプト・ファイルを実行するようにojvmjavaツールに指示する場合、そのファイルはサーバー上の$ORACLE_HOMEに存在する必要があります。

ojvmjavaツール・コマンドの後に任意のオプションと必要な入力引数を入力する必要があります。スクリプト・ファイルには、ojvmjavaツール・コマンドおよびそれに続くオプションと入力パラメータが含まれています。入力パラメータは、コマンドラインでojvmjavaツールに渡すことができます。ojvmjavaツールは、既知のオプションをすべて処理し、その他のオプションと引数をスクリプト・ファイルに渡します。

次の例は、スクリプト・ファイルexecShellの内容を示します。

java myclass a b c

このファイルを実行するには、次のコマンドを使用します。

ojvmjava -user HR -thin -database dbserver:2481:orcl @commands
Password: password

ojvmjavaツールは既知のオプションをすべて処理し、スクリプト・ファイル内のコマンドが使用する他の入力パラメータを渡します。次の例では、パラメータは、スクリプト・ファイル内のjavaコマンドに渡されます。

スクリプト・ファイルには、ハッシュ記号(#)を使用してコメントを追加できます。コメントはojvmjavaツールでは無視されます。次に例を示します。

#this whole line is ignored by ojvmjava

-runjava

このオプションは、ojvmjavaツールのシェル・コマンドJavaがコマンドライン・インタフェースまたはデータベース常駐クラスのどちらを使用して実行可能なクラスを実行するかを制御します。-runjavaオプションが存在する場合、コマンドライン・インタフェースが使用されます。それ以外の場合、実行可能ファイルはloadjavaツールで以前にロードされたデータベース常駐クラスになります。オプションの引数server_file_systemを使用する場合、-classpath表現がOracleサーバーを実行するマシンのファイルシステム上にあることを意味します。それ以外の場合、ojvmjavaツールを実行するマシンのファイルシステム上にあるものとして解析されます。

-jdwp

このオプションは、シェル・コマンドjavaが実行可能ファイルの実行に使用される場合にリスニングするデバッガ接続を指定します。実行可能ファイルのデバッグを許可します。引数はポートおよびホストを指定します。ホストの引数のデフォルト値はlocalhostです。これらを使用して、実行可能ファイルが実行されるRDBMSセッションからDBMS_DEBUG_JDWP.CONNECT_TCPのコールを実行します。

13.8.4.2 ojvmjavaツールのシェル・コマンド

この項では、ojvmjavaシェル内で使用できる次のコマンドについて説明します。

注意:

サポートされていないコマンドを入力すると、エラーがレポートされます。

次の表に、1つ以上の共通オプションを共有するコマンドの概要を示します。

表13-5 ojvmjavaコマンドの共通オプション

オプション 説明

-describe | -d

ツールの操作方法を要約表示します。

-help | -h

ツールの構文を要約表示します。

-version

バージョンを表示します。

echo

このコマンドは、指定された対象を正確にstdoutに表示します。これは、ほとんどの場合、スクリプト・ファイルで使用します。

構文は次のとおりです。

echo [echo_string] [args]

echo_stringは、シェル・スクリプトの起動時にスクリーンに書き込むテキストが含まれる文字列で、argsは、ユーザーが指定する入力引数です。たとえば、次のコマンドは通知を表示します。

echo "Adding an owner to the schema" &1

入力引数がHRの場合、出力は次のようになります。

Adding an owner to the schema HR

exit

このコマンドは、ojvmjavaを終了します。構文は次のとおりです。

exit

たとえば、シェルを終了するには次のコマンドを使用します。

$ exit
%

help

このコマンドは、シェル・コマンドの構文の要約を表示します。また、helpコマンドを使用すると、特定のコマンドについてオプションの要約も表示できます。構文は次のとおりです。

help [command]

java

このコマンドは、JDKのjavaコマンドに類似しています。これは、クラスのstatic main()メソッドをコールします。これを行うには、runjavaモードの設定に応じて、コマンドライン・インタフェースを使用するか、データベース常駐クラスを使用します。後者の場合、クラスはloadjavaツールを使用して以前にロードしたものである必要があります。このコマンドは、データベースで実行されるJavaコードのテストに便利です。特に、このコマンドは例外を捕捉し、クラスの標準出力と標準エラーをシェルにリダイレクトして、他のコマンド出力の場合と同様に表示します。データベース内で実行されるJavaクラスの標準出力と標準エラーの出力先は、データベース・サーバー・プロセスの1つ以上のトレース・ファイルで、これは読みにくく、また読むためにはDBA権限が必要な場合があります。

runjavaモードがoffのコマンドの構文は次のとおりです。

java [-schema schema] class [arg1 ... argn]

runjavaモードがonのコマンドの構文は次のとおりです。

java [command-line options] class [arg1 ... argn]

コマンドライン・オプションは、表3-1で説明したいずれかのオプションになります。

次の表に、このコマンドの引数の概要を示します。

表13-6 javaの引数の概要

引数 説明

class

実行するJavaクラス・スキーマ・オブジェクトの名前を指定します。

-schema

実行するクラスを含むスキーマ名を指定します。デフォルトは実行者のスキーマです。スキーマ名は、大/小文字の区別があります。

arg1 ... argn

クラスのstatic main()メソッドに渡す引数。

次のJavaファイルWorld.javaについて考えます。

package hello;
public class World
{
  public World()
  {
    super();
  }

  public static void main(String[] argv)
  {
    System.out.println("Hello from Oracle Database");
    if (argv.length != 0)
      System.out.println("You supplied " + argv.length + " arguments: ");
    for (int i = 0; i < argv.length; i++)
      System.out.println(" arg[" + i + "] : " + argv[i]);
  }
}

次のように、クラスをコンパイル、ロード、公開および実行します。

% javac hello/World.java

% loadjava -r -user HR@localhost:2481:orcl hello/World.class
Password: password
% ojvmjava -user HR -database localhost:2481:orcl
Password: password
$ java hello.World alpha beta
Hello from Oracle Database
You supplied 2 arguments:
arg[0] : alpha
arg[1] : beta

バージョン

このコマンドは、ojvmjavaツールのバージョンを表示します。また、指定したコマンドのバージョンも表示できます。このコマンドの構文は次のとおりです。

version [options] [command]

たとえば、次のように、シェルのバージョンを表示できます。

$ version
1.0

whoami

このコマンドは、カレント・セッションにログインしているユーザーのユーザー名を表示します。このコマンドの構文は次のとおりです。

whoami

connect

このコマンドを使用すると、クライアントで現在の接続を削除し、別の接続の説明でojvmjavaツールを再起動せずに別のデータベースに接続できます。

このコマンドの構文は次のとおりです。

connect [-service service] [-user user][-password password]

このコマンドは、次の例のように使用できます。

connect -s thin@locahost:5521:orcl -u HR/<password>
connect -s oci@locahost:5521:orcl -u HR -p <password>

次の表は、このコマンドの引数の一覧です。

表13-7 connectの引数の概要

引数 説明

-service | -s

有効なJDBCドライバのURL(oci @<connection descriptor>およびthin@<host:port:db>)

-user | -u

接続するユーザー

-password | -p

接続に使用するパスワード

runjava

このコマンドは、runjavaモードの問合せや変更を行います。runjavモードは、javaコマンドがコマンドライン・インタフェースを使用して実行可能ファイルを実行するかどうかを決定します。javaコマンドは次のように動作します。

  • runjavaモードがonの場合はコマンドライン・インタフェースを使用します。

  • runjavaモードがoffの場合はデータベース常駐の実行可能ファイルを使用します。

引数を指定せずにrunjavaコマンドを使用すると、runjavaモードの現在の設定が表示されます。

次の表は、このコマンドの引数の一覧です。

表13-8 runjavaの引数の概要

引数 説明

off

runjavaモードをオフにします。

on

runjavaモードをオンにします。

server_file_system

runjavaモードをオンにします。このオプションを使用する場合、-classpath表現がOracleサーバーが実行されているマシンのファイルシステム上にあることを意味します。それ以外の場合、ojvmjavaツールを実行するマシンのファイルシステム上にあるものとして解析されます。

jdwp

このコマンドは、実行可能ファイルがJavaコマンドで実行される場合にデバッガ接続がリスニングされるかどうか、およびそのリスニングの状況の問合せや変更を行います。

注意:

RDBMSセッションは、実行可能ファイルを起動する前に、指定のポートおよびホストでDBMS_DEBUG_JDWP.CONNECT_TCPコールを実行します。これはリスニングと呼ばれます。

引数を指定せずにこのコマンドを使用すると、現在の設定が表示されます。

次の表は、このコマンドの引数の一覧です。

表13-9 jdwpの引数の概要

引数 説明

off

今後の実行可能ファイルでのリスニングを停止します。

port

リスニングを有効にして、使用するポートを指定します。

host

リスニングを有効にして、使用するホストを指定します。この引数のデフォルト値はlocalhostです。