2

PL / SQLとJavaソースを作成し、権限が付与されました。

PL / SQLプロシージャが実行されており、エラーは発生していません。JavaSource内には、次のunixコマンドがあります。

ls -al> /orion/list/list.txt

List.txtファイルがディレクトリ内に作成されていません。

エラーが発生していない場合、どうすれば問題を知ることができますか?これは、UNIXからOracleに付与される権利の問題である可能性があります。

OracleはUNIXのSunSolarisを使用しています

4

2 に答える 2

3

遠い記憶から、UNIXコマンドの実行を許可する前に、Javaを実行しているユーザーにいくつかの特権を付与する必要があると確信しています。

http://download.oracle.com/docs/cd/B28359_01/java.111/b31225/chten.htmをご覧ください

java.io.FilePermission権限を与える必要があると思います。これを行う1つの方法は、ユーザーにロールJAVASYSPRIVを付与することです。現時点ではこれをテストする場所がありませんが、それが正しくない場合は、上記のリンクから正しい方向を示す必要があります。

于 2011-08-22T10:02:12.563 に答える
2

私はスティーブン・オドネルに同意します。

最近、まったく同じJava機能(ディレクトリリストを含むファイルの作成)を実装しました。

私は以下を付与する必要がありました:

-- this grants read privilege on STDIN
EXEC dbms_java.grant_permission(
   grantee => '<username>', 
   permission_type => 'SYS:java.lang.RuntimePermission', 
   permission_name => 'readFileDescriptor', 
   permission_action => null
);

-- this grants write permission on STDOUT
EXEC dbms_java.grant_permission(
   grantee => '<username>', 
   permission_type => 'SYS:java.lang.RuntimePermission', 
   permission_name => 'writeFileDescriptor', 
   permission_action => null
);

-- this grants execute privilege for the 'ls' command
EXEC dbms_java.grant_permission(
   grantee => '<username>', 
   permission_type => 'SYS:java.io.FilePermission', 
   permission_name => '/bin/ls', 
   permission_action => 'execute'
);

-- this grants read, write, delete and execute on all 
-- of the referenced directories (subdirectories of <directory>)
EXEC dbms_java.grant_permission(
   grantee => '<username>', 
   permission_type => 'SYS:java.io.FilePermission', 
   permission_name => '<directory>/-', 
   permission_action => 'read,write,delete,execute'
);

-- this grants execute on sh
EXEC dbms_java.grant_permission(
   grantee => '<username>', 
   permission_type => 'SYS:java.io.FilePermission', 
   permission_name => '/bin/sh', 
   permission_action => 'read,execute' 
);

お役に立てれば。Ollie。

于 2011-08-22T10:11:10.893 に答える