Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ORACLE PL/SQL执行Unix Sun Solaris命令时出现权限问题_Oracle_Unix_Plsql_Execute_Java Stored Procedures - Fatal编程技术网

使用ORACLE PL/SQL执行Unix Sun Solaris命令时出现权限问题

使用ORACLE PL/SQL执行Unix Sun Solaris命令时出现权限问题,oracle,unix,plsql,execute,java-stored-procedures,Oracle,Unix,Plsql,Execute,Java Stored Procedures,我已经创建了2个过程和一个java源代码 一个过程是调用java类TestHostCommand PROCEDURE TEST2 (p_command IN Varchar2) AS LANGUAGE JAVA NAME 'TestHostCommand.executeCommand(java.lang.String)'; Java源代码是: import java.io.*; public class TestHostCommand { public void exe

我已经创建了2个过程和一个java源代码

一个过程是调用java类TestHostCommand

 PROCEDURE TEST2
  (p_command IN Varchar2)
   AS LANGUAGE JAVA
    NAME 'TestHostCommand.executeCommand(java.lang.String)';
Java源代码是:

import java.io.*;

public class TestHostCommand
{

public void executeCommand(String command)
 {
Runtime rt = Runtime.getRuntime();
Process p = null;
try
{
  p = rt.exec("ls > /Orion/list/list.txt");
  return;
} catch ( IOException ioe)
  {
    System.out.println("Error executing file");
  }
}

}
另一个过程是授予权限,但生成的权限不正确:

     PROCEDURE GRANT_PERMISSION
      (grantee            IN  VARCHAR2,
       permission_type    IN  VARCHAR2,
       permission_name    IN  VARCHAR2,
       permission_action  IN  VARCHAR2)


        IS
        BEGIN
         DBMS_JAVA.grant_permission ('ORION', 'java.io.FilePermission',
                                   '<>', 'read ,write, execute, delete');

         DBMS_JAVA.grant_permission ('ORION', 'SYS:java.lang.RuntimePermission',
                                               'writeFileDescriptor', '');

          DBMS_JAVA.grant_permission ('Orion', 'SYS:java.lang.RuntimePermission',
                                                 'readFileDescriptor', '');

           END; 
程序授予\u权限
(VARCHAR2的受让人,
VARCHAR2中的权限类型,
VARCHAR2中的权限名称,
权限(VARCHAR2中的操作)
是
开始
DBMS_JAVA.grant_permission('ORION','JAVA.io.FilePermission',
“读、写、执行、删除”;
DBMS_JAVA.grant_permission('ORION','SYS:JAVA.lang.RuntimePermission',
“writeFileDescriptor”,”;
DBMS_JAVA.grant_permission('Orion','SYS:JAVA.lang.RuntimePermission',
‘readFileDescriptor’,“”);
结束;
错误是无效的对象


谢谢

第一条语句中的第三个参数应该是文件或目录路径,例如

     DBMS_JAVA.grant_permission ('ORION', 'java.io.FilePermission',
                               '/home/orion/*', 'read ,write, execute, delete');
或者你可以直接授予猎户座,因为这几乎就是你正在做的事情


无论哪种方式,授予ORION最大权限都会使该帐户非常强大,而且您需要严格控制该帐户,尤其是在生产环境中。

谢谢您的回答。因此,我需要通过DBA设置权限,以便它能够为我工作。ThanksI当前收到此错误:8:22:50执行失败:ORA-29532:Java调用被未捕获的Java异常终止:Java.lang.SecurityException:policy table update Java.io.FilePermission,TestHostCommand