Unix命令通过Oracle

时间:2011-08-22 09:50:07

标签: java oracle unix privileges rights

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

正在执行PL / SQL过程,不会出现错误。 在JavaSource中有以下unix命令:

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

目录中没有创建List.txt文件。

如果没有错误,我怎么知道问题? 这可能是unix从oracle获得权利的问题。

Oracle在unix sun solaris上

2 个答案:

答案 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' 
);

希望这会有所帮助。 奥利。