我创建了一个PL / SQL Java Source,并且已经授予了特权。
正在执行PL / SQL过程,不会出现错误。 在JavaSource中有以下unix命令:
ls -al> /orion/list/list.txt
目录中没有创建List.txt文件。
如果没有错误,我怎么知道问题? 这可能是unix从oracle获得权利的问题。
Oracle在unix sun solaris上
答案 0 :(得分:3)
从远处的内存中,我很确定你需要在执行Java执行unix命令之前为执行Java的用户授予一些权限。
查看http://download.oracle.com/docs/cd/B28359_01/java.111/b31225/chten.htm
我认为你需要给它java.io.FilePermission权限。一种方法是将JAVASYSPRIV角色授予您的用户。我目前无处可测试,但如果不正确,上面的链接应指向正确的方向。
答案 1 :(得分:2)
我同意Stephen ODonnell的观点。
我最近实现了完全相同的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'
);
希望这会有所帮助。 奥利。