我已经创建了一个 PL/SQL 一个 Java 源,并且已授予权限。
PL/SQL 过程正在执行并且没有出现错误。在 JavaSource 中有以下 unix 命令:
ls -al > /orion/list/list.txt
目录中未创建文件 List.txt。
如果没有错误出现,我怎么知道问题?这可能是unix赋予oracle的权利问题吗?
Oracle 在 unix sun solaris 上
我已经创建了一个 PL/SQL 一个 Java 源,并且已授予权限。
PL/SQL 过程正在执行并且没有出现错误。在 JavaSource 中有以下 unix 命令:
ls -al > /orion/list/list.txt
目录中未创建文件 List.txt。
如果没有错误出现,我怎么知道问题?这可能是unix赋予oracle的权利问题吗?
Oracle 在 unix sun solaris 上
从遥远的记忆来看,我相当确定您需要先授予执行 Java 的用户一些权限,然后才能允许它执行 unix 命令。
看看http://download.oracle.com/docs/cd/B28359_01/java.111/b31225/chten.htm
我认为你需要给它 java.io.FilePermission 权限。一种方法是将角色 JAVASYSPRIV 授予您的用户。我目前无处进行测试,但如果这不正确,上面的链接应该为您指明正确的方向。
我同意斯蒂芬·奥唐奈的观点。
我最近实现了完全相同的 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'
);
希望这可以帮助。奥利。