2

2 つのプロシージャと Java ソースを作成しました

1 つのプロシージャは、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");
  }
}

}

もう 1 つの手順はアクセス許可を付与することですが、正しく生成されません。

     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; 

エラーは無効なオブジェクトです。

ありがとう

4

1 に答える 1

1

最初のステートメントの 3 番目のパラメーターは、ファイルまたはディレクトリ パスにする必要があります。

     DBMS_JAVA.grant_permission ('ORION', 'java.io.FilePermission',
                               '/home/orion/*', 'read ,write, execute, delete');

または、代わりにORIONに JAVASYSPRIV ロールを付与することもできます。

いずれにせよ、ORION に最大の権限を付与すると、アカウントは非常に強力になり、特に本番環境では厳密に管理する必要があります。

于 2011-08-09T13:28:05.823 に答える