数据库中java的权限问题,把过程贴出来

解决方案 »

  1.   

    create or replace procedure my_test
      (id varchar2, name varchar2)
    as language java name
       'com.phw.database.ldap.PhwTrigger.log_test(java.lang.String,java.lang.String)';
      

  2.   

    我在ITPUB上看到有人用dbms_java.grant_permission授权
    可我授权了,还是不好用,还报一样的错,就是端口号,每次递增
    begin
    dbms_java.grant_permission('ORADB_TEST','SYS:java.net.SocketPermission','192.168.0.220:1521','connect,resolve');
    end;
    报错
    ORA-29532:Java调用被未捕获的Java例外终止:java.security.AccessControlException:the Permission(java.net.SocketPermission 192.168.0.220:4048 connect,resolve)has not been granted to oradb_test.The PL/SQL to grant this is dbms_java.grant_permission('ORADB_TEST','SYS:java.net.SocketPermission','192.168.0.220:4048','connect,resolve')
    ORA-06512:在"ORADB_TEST.MY_TEST",line 0
    ORA-06512:在"ORADB_TEST.MY_TG1",line 2
    ORA-04088:触发器'ORADB_TEST.MY_TG1'执行过程中出错
      

  3.   

    如果方便把这段代码贴出来'com.phw.database.ldap.PhwTrigger.log_test(java.lang.String,java.lang.String)'
      

  4.   

    package com.phw.database.ldap;import java.io.*;
    import java.sql.*;public class PhwTrigger
    {
        public static void log_test(String id, String name)
           throws SQLException
       {
           String dbURL = "jdbc:oracle:thin:@192.168.220.200:1521:oradb";
           String dbUser = "oradb_lps";
           String dbPassword = "db";       DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());       Connection conn = DriverManager.getConnection(
               dbURL, dbUser, dbPassword);
           String sql = "INSERT INTO phw_test2 VALUES(?,?)";
           try
           {
               PreparedStatement pstmt = conn.prepareStatement(sql);
               pstmt.setString(1, id);
               pstmt.setString(2, name);
               pstmt.executeUpdate();
               pstmt.close();
           }
           catch (SQLException e)
           {       }   }}
      

  5.   

    执行试试
    begin
      dbms_java.grant_permission('ORADB_TEST','SYS:java.net.SocketPermission','192.168.0.220:4048','connect,resolve');
    end;
      

  6.   

    不成啊,下次运行,还是报一样的错,就是端口递增,
    java.security.AccessControlException:the Permission(java.net.SocketPermission 192.168.0.220:4050
    再插入数据
    java.security.AccessControlException:the Permission(java.net.SocketPermission 192.168.0.220:4052to simpleOra:
    可否留个msn,好向你请教
      

  7.   

    你的用法不对,你收现在数据库中建一个dblink,连接到本地数据库,
    使用dblink连结远程数据库再试试
      

  8.   

    自己解决了,还是权限不够的问题
    把JAVASYSPRIV角色授予给用户,就可以执行java程序了也该结帖了,呵呵,谢谢大家的关注