ヘッダーをスキップ
Oracle® Database Java開発者ガイド
11gリリース2 (11.2)
B56280-05
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

A DBMS_JAVAパッケージ

この付録では、DBMS_JAVAパッケージについて説明します。このパッケージのファンクションとプロシージャは、JavaからRDBMS機能にアクセスするためのエントリ・ポイントを提供します。

longname

FUNCTION longname (shortname VARCHAR2) RETURN VARCHAR2

このファンクションは、指定したJavaスキーマ・オブジェクトの完全修飾名を戻します。JavaクラスとJavaメソッドには、SQL識別子の最大長を超える名前を設定できるため、Oracle JVMの内部では、SQLアクセス用の短縮名が使用されます。このファンクションは、すべての切り捨てられた名前の元のJava名を戻します。このファンクションの例では、無効なクラスの完全修飾名を次のように表示します。

SELECT dbms_java.longname (object_name) FROM user_objects
WHERE object_type = 'JAVA CLASS' AND status = 'INVALID';

shortname

FUNCTION shortname (longname VARCHAR2) RETURN VARCHAR2

データベースにフルネームを指定するには、フルネームを入力として取得し、対応する短い名前を戻すDBMS_JAVAパッケージのshortname()ルーチンを使用できます。これは、USER_OBJECTSビューの問合せによってロードされたクラスの検証に役立ちます。

get_compiler_option

FUNCTION get_compiler_option(name VARCHAR2, optionName VARCHAR2) RETURN VARCHAR2

このファンクションは、optionNameパラメータで指定したオプションの値を戻します。これは、Oracle Databaseにより提供されるJavaとSQLJコンパイラに関するオプションの制御に使用するファンクションの1つです。

set_compiler_option

PROCEDURE set_compiler_option(name VARCHAR2, optionName VARCHAR2, value VARCHAR2)

このプロシージャは、Oracle Databaseにより提供されるJavaとSQLJコンパイラに関するオプションの設定に使用されます。

reset_compiler_option

PROCEDURE reset_compiler_option(name VARCHAR2, optionName VARCHAR2)

このプロシージャは、指定したコンパイラ・オプションをデフォルト値に再設定するために使用されます。

resolver

FUNCTION resolver (name VARCHAR2, owner VARCHAR2, type VARCHAR2) RETURN VARCHAR2

このファンクションは、オブジェクトがtype型のスキーマownerのオブジェクトnameに対するリゾルバ仕様を戻します。コール元には、EXECUTE権限、およびこのファンクションを使用するように指定されたオブジェクトへのアクセス権が必要です。

nameパラメータは、このオブジェクトの短縮名です。

typeの値は、SOURCEまたはCLASSのいずれかです。

エラーがある場合は、NULLが戻されます。基礎となるオブジェクトが変更された場合は、ObjectTypeChangedExceptionがスローされます。

このファンクションは次のようにコールできます。

SELECT dbms_java.resolver('tst', 'SCOTT', 'CLASS') FROM DUAL;

次の結果が戻されます。

DBMS_JAVA.RESOLVER('TST','SCOTT','CLASS')
-----------------------------------------
((* SCOTT)(* PUBLIC))

derivedFrom

FUNCTION derivedFrom (name VARCHAR2, owner VARCHAR2, type VARCHAR2) RETURN VARCHAR2

このファンクションは、オブジェクトがtype型のスキーマownerのオブジェクトnameに対するソース名を戻します。コール元には、EXECUTE権限、およびこのファンクションを使用するように指定されたオブジェクトへのアクセス権が必要です。

nameパラメータおよび戻されたソース名は、このオブジェクトの短縮名です。

typeの値は、SOURCEまたはCLASSのいずれかです。

エラーがある場合は、NULLが戻されます。基礎となるオブジェクトが変更された場合は、ObjectTypeChangedExceptionがスローされます。

オブジェクトがOracle JVMでコンパイルされなかった場合、戻り値はNULLになります。

このファンクションは次のようにコールできます。

SELECT dbms_java.derivedFrom('tst', 'SCOTT', 'CLASS') FROM DUAL;

次の結果が戻されます。

DBMS_JAVA.DERIVEDFROM('TST','SCOTT','CLASS')
-----------------------------------------
tst

fixed_in_instance

FUNCTION fixed_in_instance (name VARCHAR2, owner VARCHAR2, type VARCHAR2) RETURN NUMBER

このファンクションは、オブジェクトがtype型のスキーマownerのオブジェクトnameに対して、永続的に保持されるステータスを戻します。コール元には、EXECUTE権限、およびこのファンクションを使用するように指定されたオブジェクトへのアクセス権が必要です。

nameパラメータは、このオブジェクトの短縮名です。

typeの値は、RESOURCESOURCECLASSまたはSHARED_DATAのいずれかです。

戻される数値は、ステータスを保持しないことを示す0か、保持することを示す1のいずれかです。

このファンクションは次のようにコールできます。

SELECT dbms_java.fixed_in_instance('tst', 'SCOTT', 'CLASS') FROM DUAL;

次の結果が戻されます。

DBMS_JAVA.FIXED_IN_INSTANCE('TST','SCOTT','CLASS')
-----------------------------------------
0

次の文を考えてみます。

SELECT dbms_java.fixed_in_instance('java/lang/String', 'SYS', 'CLASS') FROM DUAL;

次の結果が戻されます。

DBMS_JAVA.FIXED_IN_INSTANCE('JAVA/LANG/STRING','SYS','CLASS')
-------------------------------------------------------------
1

set_output

PROCEDURE set_output (buffersize NUMBER)

このプロシージャは、Javaストアド・プロシージャの出力をリダイレクトし、DBMS_OUTPUTパッケージにトリガーします。

export_source

PROCEDURE export_source(name VARCHAR2, schema VARCHAR2, blob BLOB)

PROCEDURE export_source(name VARCHAR2, blob BLOB)

PROCEDURE export_source(name VARCHAR2, clob CLOB)

PROCEDURE export_source(name varchar2, schema varchar2, src CLOB)

このプロシージャは、Javaソースを、Javaソース・スキーマ・オブジェクトとしてOracle Databaseにエクスポートするために使用されます。ソースは、nameパラメータを使用して指定します。このソースは、BLOBオブジェクトまたはCLOBオブジェクトにエクスポートできます。ソースの内部表現にはUTF8形式が使用されるため、BLOBへのソースの格納にもこの形式が使用されます。ソース・スキーマ・オブジェクトは指定のスキーマで作成されます。スキーマが未指定の場合は、現行スキーマが使用されます。

export_class

PROCEDURE export_class(name VARCHAR2, schema VARCHAR2, blob BLOB)

PROCEDURE export_class(name VARCHAR2, blob BLOB)

このプロシージャは、nameパラメータで指定したJavaクラスを、Javaクラス・スキーマ・オブジェクトとしてOracle Databaseにエクスポートするために使用されます。クラスのエクスポート先はBLOBオブジェクトのみで、CLOBオブジェクトにはエクスポートできません。スキーマが指定されている場合、クラス・スキーマ・オブジェクトは、現行スキーマの他に、指定されたスキーマにも作成されます。

export_resource

PROCEDURE export_resource(name VARCHAR2, schema VARCHAR2, blob BLOB)

PROCEDURE export_resource(name VARCHAR2, blob BLOB)

PROCEDURE export_resource(name VARCHAR2, schema VARCHAR2, clob CLOB)

PROCEDURE export_resource(name VARCHAR2, clob CLOB)

nameパラメータで指定したリソースが、schemaパラメータで指定したスキーマのリソース・スキーマ・オブジェクトとしてOracle Databaseにエクスポートされます。スキーマが未指定の場合は、現行スキーマが使用されます。このリソースは、CLOBオブジェクトまたはBLOBオブジェクトのいずれにもエクスポートできます。

loadjava

PROCEDURE loadjava(options VARCHAR2)
PROCEDURE loadjava(options VARCHAR2, resolver VARCHAR2)

これらのプロシージャでは、loadjavaコマンドライン・ツールではなく、コールを使用して、データベースに複数のクラスをロードできます。このプロシージャは、次のように、使用しているJavaアプリケーション内でコールできます。

CALL dbms_java.loadjava('... options...');

オプションは、コマンドラインで指定する内容と同じです。各オプションは、スペースで区切る必要があります。オプションをカンマで区切らないでください。これに関する唯一の例外は、スペースを含むloadjava -resolverオプションです。-resolverの場合は、次のように、最初にすべての他のオプションを指定してカンマで区切り、次に-resolverオプションを指定します。

CALL dbms_java.loadjava('... options...', 'resolver_options');

-thin-oci-userおよび-passwordの各オプションはデータベース接続に関連しているため、指定しないでください。出力は、System.errに送られます。通常、出力はトレース・ファイルに保存されますが、リダイレクトできます。


関連項目:

「loadjavaツール」

dropjava

PROCEDURE dropjava(options VARCHAR2)

このプロシージャを使用すると、dropjavaコマンドライン・ツールではなく、コールを使用して、データベース内のクラスを削除できます。このプロシージャは、次のように、使用しているJavaアプリケーション内でコールできます。

CALL dbms_java.dropjava('... options...');

関連項目:

「dropjavaツール」

grant_permission

PROCEDURE grant_permission(grantee VARCHAR2, permission_type VARCHAR2, permission_name VARCHAR2, 
permission_action VARCHAR2)

このメソッドを使用すると、特定のユーザーまたはロールにパーミッションを付与できます。

grant_permission

PROCEDURE grant_permission(grantee VARCHAR2, permission_type VARCHAR2, permission_name VARCHAR2, 
permission_action VARCHAR2, key OUT NUMBER)

このメソッドを使用すると、特定のユーザーまたはロールにパーミッションを付与できます。キーは、ファイングレイン・アクセス・コントロールに使用できます。

restrict_permission

PROCEDURE restrict_permission(grantee VARCHAR2, permission_type VARCHAR2, permission_name VARCHAR2, 
permission_action VARCHAR2) 

このメソッドを使用すると、一般的な規則に対する制限または例外を指定できます。

restrict_permission

PROCEDURE restrict_permission(grantee VARCHAR2, permission_type VARCHAR2, permission_name VARCHAR2, 
permission_action VARCHAR2, key OUT NUMBER) 

このメソッドを使用すると、一般的な規則に対する制限または例外を指定できます。キーは、ファイングレイン・アクセス・コントロールに使用できます。

grant_policy_permission

PROCEDURE grant_policy_permission(grantee VARCHAR2, permission_schema VARCHAR2, permission_type VARCHAR2, 
permission_name VARCHAR2) 

このメソッドを使用すると、PolicyTablePermissionを付与および制限できます。

grant_policy_permission

PROCEDURE grant_policy_permission(grantee VARCHAR2, permission_schema VARCHAR2, permission_type VARCHAR2, 
permission_name VARCHAR2, key OUT NUMBER) 

このメソッドを使用すると、PolicyTablePermissionを付与および制限できます。キーは、ファイングレイン・アクセス・コントロールに使用できます。

revoke_permission

PROCEDURE revoke_permission(permission_schema VARCHAR2, permission_type VARCHAR2, permission_name VARCHAR2, 
permission_action VARCHAR2) 

このメソッドを使用すると、付与されたパーミッションを使用禁止にできます。

disable_permission

PROCEDURE disable_permission(key NUMBER) 

このメソッドを使用すると、付与されたパーミッションを使用禁止にできます。

enable_permission

PROCEDURE enable_permission(key NUMBER) 

このメソッドを使用すると、パーミッションを使用可能にできます。

delete_permission

PROCEDURE delete_permission(key NUMBER)

このメソッドを使用すると、付与されたパーミッションを削除できます。

set_preference

procedure set_preference(user VARCHAR2, type VARCHAR2, abspath VARCHAR2, key VARCHAR2, value VARCHAR2)

このプロシージャでは、次のように、SYS:java$prefs$表内の行の挿入または更新が行われます。

CALL dbms_java.set_preference('SCOTT', 'U', '/my/package/method/three', 'windowsize', '22:32');

userパラメータには、設定項目の連結先スキーマの名前を指定します。ログイン・スキーマがSYSではない場合、userには、現在のログイン・スキーマを指定する必要があり、指定しないと、INSERTに失敗します。typeパラメータには、ユーザー設定項目を示す値Uを指定するか、またはシステム設定項目を示すSを指定できます。abspathパラメータには、設定項目の絶対パスを指定します。keyは参照に使用する設定項目キー、valueは設定項目キーの値です。

runjava

FUNCTION runjava(cmdline VARCHAR2) RETURN VARCHAR2;

このファンクションは、唯一の引数としてJavaコマンドラインを取り、Oracle JVMでこれを実行します。

runjava_in_current_session

FUNCTION runjava_in_current_session(cmdline VARCHAR2) RETURN VARCHAR2;

このファンクションは、現在のコマンドラインを実行する前に、以前にJavaを使用したときからセッションに残っているJavaの状態を消去しない点を除き、runjavaファンクションと同じです。

set_property

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

このファンクションでは、Javaセッションが初期化されると、RDBMSの現行セッションの期間に使用されるシステム・プロパティの値を設定します。

データベース関連の例外が発生した場合、set_propertyファンクションの戻り値は、メッセージの形式の例外が含まれるVARCHARです。これにより、戻す前のデータベース・エラーとしてのファンクションの終了を回避できます。エラーがない場合、ファンクションの戻り値はnullです。


注意:

SET_PROPERTYファンクションを実行するには、ユーザーはプロパティ名のSYS:java.util.PropertyPermissionに対する書込みパーミッションを保持する必要があります。このパーミッションを付与するには、次のコマンドを使用します。
call dbms_java.grant_permission( '<user_name>', 'SYS:java.util.PropertyPermission', '<property_name>', 'write' );

get_property

FUNCTION get_property(name VARCHAR2) RETURN VARCHAR2;

このファンクションは、set_propertyで以前に設定された値を戻します。

remove_property

FUNCTION remove_property(name VARCHAR2) RETURN VARCHAR2;

このファンクションは、set_propertyで以前に設定された値を削除します。


注意:

remove_propertyファンクションを実行するには、ユーザーはプロパティ名のSYS:java.util.PropertyPermissionに対する書込みパーミッションを保持する必要があります。このパーミッションを付与するには、次のコマンドを使用します。
call dbms_java.grant_permission( '<user_name>', 'SYS:java.util.PropertyPermission', '<property_name>', 'write' );

show_property

FUNCTION show_property(name VARCHAR2) RETURN VARCHAR2;

このファンクションは、nameがNULLの場合、入力名または設定されたすべてのプロパティのバインディングについて、name = valueという形式のメッセージを表示します。

set_output_to_sql

FUNCTION set_output_to_sql (id VARCHAR2,
stmt VARCHAR2,
bindings VARCHAR2,
no_newline_stmt VARCHAR2 default null,
no_newline_bindings VARCHAR2 default null,
newline_only_stmt VARCHAR2 default null,
newline_only_bindings VARCHAR2 default null,
maximum_line_segment_length NUMBER default 0,
allow_replace NUMBER default 1,
from_stdout NUMBER default 1,
from_stderr NUMBER default 1,
include_newlines NUMBER default 0,
eager NUMBER default 0) return VARCHAR2;

set_output_to_sqlは、SQL文の実行命令を構成する指定の出力仕様を定義します。これを行うのは出力がデフォルトの

System.outおよびSystem.errストリームを対象として発生する場合です。

remove_output_to_sql

FUNCTION remove_output_to_sql (id VARCHAR2) return VARCHAR2;

remove_output_to_sqlは、set_output_to_sqlで作成された仕様を削除します。

enable_output_to_sql

FUNCTION enable_output_to_sql (id VARCHAR2) return VARCHAR2;

enable_output_to_sqlは、set_output_to_sqlで作成された後、disable_output_to_sqlで無効化された仕様を再度有効にします。

disable_output_to_sql

FUNCTION disable_output_to_sql (id VARCHAR2) return VARCHAR2;

disable_output_to_sqlは、set_output_to_sqlで作成された仕様を無効にします。

query_output_to_sql

FUNCTION query_output_to_sql (id VARCHAR2) return VARCHAR2;

query_output_to_sqlは、set_output_to_sqlで作成された仕様を説明するメッセージを戻します。

set_output_to_java

FUNCTION set_output_to_java (id VARCHAR2,
class_name VARCHAR2,
class_schema VARCHAR2,
method VARCHAR2,
bindings VARCHAR2,
no_newline_method VARCHAR2 default null,
no_newline_bindings VARCHAR2 default null,
newline_only_method VARCHAR2 default null,
newline_only_bindings VARCHAR2 default null,
maximum_line_segment_length NUMBER default 0,
allow_replace NUMBER default 1,
from_stdout NUMBER default 1,
from_stderr NUMBER default 1,
include_newlines NUMBER default 0,
eager NUMBER default 0,
initialization_statement VARCHAR2 default null,
finalization_statement VARCHAR2 default null)return VARCHAR2;

set_output_to_javaは、デフォルトのSystem.outおよびSystem.errへの出力ストリームが発生すると、Javaメソッドを実行する命令を構成する指定の出力仕様を定義します。

remove_output_to_java

FUNCTION remove_output_to_java (id VARCHAR2) return VARCHAR2;

remove_output_to_javaは、set_output_to_javaで作成された仕様を削除します。

enable_output_to_java

FUNCTION enable_output_to_java (id VARCHAR2) return VARCHAR2;

enable_output_to_javaは、set_output_to_javaで作成された後、disable_output_to_javaで無効化された仕様を再度有効にします。

disable_output_to_java

FUNCTION disable_output_to_java (id VARCHAR2) return VARCHAR2;

disable_output_to_javaは、set_output_to_javaで作成された仕様を無効にします。

query_output_to_java

FUNCTION query_output_to_java (id VARCHAR2) return VARCHAR2;

query_output_to_javaは、set_output_to_javaで作成された仕様を説明するメッセージを戻します。

set_output_to_file

FUNCTION set_output_to_file (id VARCHAR2,
file_path VARCHAR2,
allow_replace NUMBER default 1,
from_stdout NUMBER default 1,
from_stderr NUMBER default 1) return VARCHAR2;

set_output_to_fileは、出力を捕捉する命令を構成する指定の出力仕様を定義します。出力が送信される対象はデフォルトのSystem.outおよび

System.errストリームで、その出力を特定のファイルに追加します。

remove_output_to_file

FUNCTION remove_output_to_file (id VARCHAR2) return VARCHAR2;

remove_output_to_fileは、set_output_to_fileで作成された仕様を削除します。

enable_output_to_file

FUNCTION enable_output_to_file (id VARCHAR2) return VARCHAR2;

enable_output_to_fileは、set_output_to_fileで作成された後、disable_output_to_fileで無効化された仕様を再度有効にします。

disable_output_to_file

FUNCTION disable_output_to_file (id VARCHAR2) return VARCHAR2;

disable_output_to_fileは、set_output_to_fileで作成された仕様を無効にします。

query_output_to_file

FUNCTION query_output_to_file (id VARCHAR2) return VARCHAR2;

query_output_to_fileは、set_output_to_fileで作成された仕様を説明するメッセージを戻します。

enable_output_to_trc

PROCEDURE enable_output_to_trc;

このプロシージャは、disable_output_to_trcプロシージャが無効にした.trcファイルへのSystem.outおよびSystem.errの出力を再び有効にします。

disable_output_to_trc

PROCEDURE disable_output_to_trc;

このプロシージャは、System.outおよびSystem.errの出力が.trcファイルに表示されないようにします。

query_output_to_trc

FUNCTION query_output_to_trc return VARCHAR2;

このファンクションは、System.outおよびSystem.err.trcファイルへの出力が現在有効になっているかどうかを表示する値を戻します。

endsession

FUNCTION endsession RETURN VARCHAR2;

このファンクションは、以前にJavaを実行したときからRDBMS現行セッションに残っているJavaセッションの状態をすべて消去します。

endsession_and_related_state

FUNCTION endsession_and_related_state RETURN VARCHAR2;

このファンクションは、以前にJavaを実行したときからRDBMS現行セッションに残っているJavaセッションの状態と、Javaの実行に関連するサポート・データをすべて消去します。

set_native_compiler_option

PROCEDURE set_native_compiler_option(optionName VARCHAR2,
value VARCHAR2);

このプロシージャは、ネイティブ・コンパイラのオプションを現行スキーマの指定の値に設定します。

unset_native_compiler_option

PROCEDURE unset_native_compiler_option(optionName VARCHAR2,
value VARCHAR2);

このプロシージャは、現行スキーマについて、ネイティブ・コンパイラのオプション/値のペアの設定を解除します。

compile_class

FUNCTION compile_class(classname VARCHAR2) return NUMBER;

このファンクションは、現行スキーマのclassnameで特定されるクラスで定義されたすべてのメソッドをコンパイルします。

uncompile_class

FUNCTION uncompile_class(classname VARCHAR2,
permanentp NUMBER default 0) return NUMBER;

このファンクションは、現行スキーマのclassnameで特定されるクラスで定義されたすべてのメソッドをアンコンパイルします。

compile_method

FUNCTION compile_method(classname  VARCHAR2,
methodname VARCHAR2,
methodsig  VARCHAR2) return NUMBER;

このファンクションは、現行スキーマのclassnameで特定されるクラスで定義されたnameおよびJava typeシグネチャで指定したメソッドをコンパイルします。

uncompile_method

FUNCTION uncompile_method(classname  VARCHAR2,
methodname VARCHAR2,
methodsig  VARCHAR2,
permanentp NUMBER default 0) return NUMBER;

このファンクションは、現行スキーマのclassnameで特定されるクラスで定義されたnameおよびJava typeシグネチャで指定したメソッドをアンコンパイルします。

start_jmx_agent

procedure start_jmx_agent(port VARCHAR2 default NULL,
ssl  VARCHAR2 default NULL,
auth VARCHAR2 default NULL);

このプロシージャは、特定のセッションでJMXエージェントを開始します。通常、エージェントはセッションの期間内はアクティブのままです。

set_runtime_exec_credentials

procedure set_runtime_exec_credentials(dbuser varchar2, 
osuser varchar2, 
ospass varchar2);

dbuserはデータベース・ユーザー名またはスキーマ名で、osuserospassはOSアカウント資格証明です。

データベース・ユーザー/スキーマdbuserを、オペレーティング・システム(OS)資格証明のペアosuser/ospassと関連付けます。この関連付けは暗号化されて、SYSユーザーが所有する表に格納されます。新しい有効な関連付けが確立された後は、java.lang.Runtime.execメソッドによって分岐された新しいOSプロセスや、dbuserがOSコマンドを実行するために起動されたProceessBuilderはいずれも、OracleプロセスのOS IDとしてでなくUID osuserとして実行されます。つまり、分岐したプロセスのUIDビットはUID osuserに設定されます。


注意:

DBAおよびセキュリティ管理者は、このプロシージャを使用して、Oracle DatabaseにデプロイされたJavaアプリケーションのセキュリティを強化します。DBAは、より権限の小さいアカウントを指定することによって、生成されるプロセスの権限およびアクセス権を適宜制限できます。set_runtime_exec_credentialsプロシージャを使用するには、SYSユーザーである必要があり、そうでない場合は「ORA-01031: 権限が不足しています」エラーが発生します。無効なアカウント資格証明を使用すると、新しいプロセスの作成時にIOExceptionが発生します。

このプロシージャの使用方法の例を次に示します。

例1

次のコマンドは、ユーザー/スキーマDBUSERを資格証明osuser/ospassにバインドします。

dbms_java.set_runtime_exec_credentials('DBUSER', 'osuser', 'ospass');

例2

次のいずれかのコマンドは、DBUSERと資格証明osuser/ospassの関連付けをアンバインドします。

dbms_java.set_runtime_exec_credentials('DBUSER', '', '');
dbms_java.set_runtime_exec_credentials('DBUSER', null, null);

注意:

set_runtime_exec_credentialsプロシージャを使用するには、Oracleのjssu機能を構成して、Oracle製品のインストール時にUID rootを設定する必要があり、そうしない場合はプロセスの作成時にprocess spawn via jssu failed...というIOExceptionが発生する可能性があります。