4.6 システム・プロパティの設定について

RDBMSセッション内では、JavaセッションをRDBMSセッションで起動する場合、システム・プロパティに追加される値のセットを管理できます。この値のセットは、Javaセッションの状態の長い層の期間で有効な状態が維持され、これは、通常、RDBMSセッションと同じ期間です。

DBMS_JAVAパッケージには、内部のRDBMSセッション期間表でキーと値のペアを設定、取得、削除および表示するためのPL/SQLファンクションのセットがあります。ここでは、ペアのどちらの要素も文字列(VARCHAR2)であり、指定のキーに対して最大1つのペアがあります。ファンクションは次のとおりです。タスクの機能は次のとおりです。

set_property

このファンクションでは、Javaセッションが初期化されると、RDBMSの現行セッションの期間に使用されるシステム・プロパティの値を設定します。最初の引数はプロパティの名前、2番目の引数はプロパティに設定される値です。set_propertyの戻り値は、エラーがないかぎりNULLになります。たとえば、規定のプロパティの値を設定しようとすると、エラー・メッセージが戻されます。

FUNCTION set_property(name VARCHAR2, value VARCHAR2) RETURN VARCHAR2;

get_property

このファンクションは、set_propertyで以前に設定された値を戻します。該当する値がない場合は、NULLを返します。

FUNCTION get_property(name VARCHAR2) RETURN VARCHAR2;

remove_property

このファンクションは、set_propertyで以前に設定された値を削除します。戻り値はNULLです。ただし、エラーが発生した場合は、エラー・メッセージが返されます。

FUNCTION remove_property(name VARCHAR2) RETURN VARCHAR2;

show_property

このファンクションは、nameがNULLの場合、入力名または設定されたすべてのプロパティのバインディングについて、name = valueという形式のメッセージを表示します。このファンクションの戻り値は、正常に実行された場合はNULL、それ以外はエラー・メッセージになります。出力は、現在のJava出力の指定先に表示されます。

FUNCTION show_property(name VARCHAR2) RETURN VARCHAR2;

Javaセッションを初期化する前に、Oracle JVMですでに管理されているデフォルトのシステム・プロパティの値セットにこの表の値が追加されます。コマンドライン・インタフェースを使用してJavaメソッドを実行する場合、-Dオプション(指定する場合)で決定した値は、表の値セットをオーバーライドします。Javaセッションを終了するとすぐに、-Dオプションで設定した値は使用されなくなり、キーは表にある元の値に設定されます。

4.6.1 Oracle JVM固有のシステム・プロパティ

Oracle Databaseリリース23c以降では、Javaモジュールをサポートするために、追加のシステム・プロパティがいくつかOracle JVMで認識されます。

この項では、次のプロパティについて説明します:

oracle.aurora.addmods

このプロパティの値は、今後のOracle JVMセッションに追加されるモジュールのカンマ区切りリストです。このプロパティは、RDBMSセッションでJavaを使用する前に、つまりOracle JVMセッションの開始前に指定する必要があります。このプロパティを使用するのは、クライアント側のJavaコマンドに--add-modulesオプションを指定するのとほぼ同じです。

oracle.aurora.addmods.from

このプロパティの値は、クラスのカンマ区切りのリストで、それに関連付けられたモジュールが、今後のOracle JVMセッションに追加されます。このプロパティは、RDBMSセッションでJavaを使用する前に、つまりOracle JVMセッションの開始前に指定する必要があります。

リスト内のクラスが自分をモジュール化している場合は、クラスの名前を<module_name///<class_name>で指定する必要があります。たとえば、クラスCがモジュールM1にあり、モジュールM2がloadjavaによってクラスCに追加された場合に、システム・プロパティoracle.aurora.addmods.fromM1///Cと指定されている場合は、今後のOracle JVMセッションが初期化されると、モジュールM1とM2の両方がモジュールのルート・セットに追加されます。

loadjava --add-modulesオプションを使用すると、セッション・プロパティを設定する場合より、Oracle JVMセッションの起動パフォーマンスが向上します。システムプロパティでモジュールを追加すると、loadjavaでモジュールがロードされたときに指定されたモジュール・ホットロードも使用不可になります。