2

我已经创建了一个 PL/SQL 一个 Java 源,并且已授予权限。

PL/SQL 过程正在执行并且没有出现错误。在 JavaSource 中有以下 unix 命令:

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

目录中未创建文件 List.txt。

如果没有错误出现,我怎么知道问题?这可能是unix赋予oracle的权利问题吗?

Oracle 在 unix sun solaris 上

4

2 回答 2

3

从遥远的记忆来看,我相当确定您需要先授予执行 Java 的用户一些权限,然后才能允许它执行 unix 命令。

看看http://download.oracle.com/docs/cd/B28359_01/java.111/b31225/chten.htm

我认为你需要给它 java.io.FilePermission 权限。一种方法是将角色 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' 
);

希望这可以帮助。奥利。

于 2011-08-22T10:11:10.893 回答