【问题标题】:Oracle 11g procedure error with ftp packages带有 ftp 包的 Oracle 11g 过程错误
【发布时间】:2012-03-26 09:16:35
【问题描述】:

我的数据库遇到了问题(版本是 Oracle 11g)。

我想做什么?

  • 我想用程序上传文件到ftp服务器。

我是怎么做到的?

  • 首先,我已经下载了 ftp.pksftp.pkb 文件,我使用 @**.pks 来导入这些包。

  • 然后我编写这样的程序:

    DECLARE
      l_conn  UTL_TCP.connection;
    BEGIN
      l_conn := ftp.login('192.168.1.102', '21', 'tony', 'tony');
      ftp.ascii(p_conn => l_conn);
      ftp.put(p_conn      => l_conn,
              p_from_dir  => 'MY_DOCS',
              p_from_file => 'aaa.txt',
              p_to_file   => 'test_put.txt');
      ftp.logout(l_conn);
    END;
    
  • 当我运行它时,控制台给我这个错误信息

    ORA-24247: network access rejected by ACL
    ORA-06512: at "SYS.UTL_TCP", line 17
    ORA-06512: at "SYS.UTL_TCP", line 246
    ORA-06512: at "SCOTT.FTP", line 76
    ORA-06512: at line 4
  • 因此,我使用以下代码创建了ACL 规则:

    begin
    
         DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(
         acl          => 'ftp_conn.xml',
         description  => 'ftp connection',
         principal    => 'SCOTT',
         is_grant     => TRUE,
         privilege    => 'connect');
    
         DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(
          acl         => 'ftp_conn.xml',
          host        => '192.168.1.102',
          lower_port  => 21,
          upper_port => 21);
    
    end;
    

但是,当我再次运行 ftp 代码时,它也显示该错误,所以我想知道如何解决这个问题。

ACL可以允许TCP连接,但是当我使用ftp包并调用'ftp.put'时,控制台输出是

error at 1 line:
ORA-29260: network error:not connected
ORA-06512: at "SYS.UTL_TCP", line 212
ORA-06512: at "SYS.UTL_TCP", line 432
ORA-06512: at "SCOTT.FTP", line 413
ORA-24247: Network access rejected by acl
ORA-06512: at "SCOTT.FTP", line 491
ORA-06512: at line 6

【问题讨论】:

  • 你在分配ACL后提交了吗?
  • @A.B.Cade 是的,我已经提交了更改。
  • 这有帮助吗? stackoverflow.com/questions/9827038/oracle-11g-migrated-users-have-acl-set-but-cant-hit-utl-http-ora-24247-29273/9858759
  • @A.B.Cade 你好。我发现我可以使用 tcp 连接,但是当我使用 ftp 包时,它会报错。
  • “网络访问被 acl 拒绝”听起来另一个端口被阻止,出于某种原因。使用一些 FTP 客户端可以正常工作吗?

标签: oracle plsql acl plsqldeveloper


【解决方案1】:

尝试添加解析权限(虽然听起来很奇怪……):

begin
 DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(
 acl          => 'ftp_conn.xml',
 description  => 'ftp connection',
 principal    => 'SCOTT',
 is_grant     => TRUE,
 privilege    => 'connect');

 DBMS_NETWORK_ACL_ADMIN.add_privilege ( 
acl         => 'ftp_conn.xml', 
principal   => 'SCOTT',
is_grant    => FALSE, 
privilege   => 'resolve', 
position    => NULL, 
start_date  => NULL,
end_date    => NULL);

 DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(
  acl         => 'ftp_conn.xml',
  host        => '192.168.1.102',
  lower_port  => 21,
  upper_port => 21);

end;
/
COMMIT;

【讨论】:

  • 很抱歉,错误信息格式不漂亮
    第 1 行错误:ORA-29260:网络错误:未连接 ORA-06512:在“SYS.UTL_TCP” ,第 212 行 ORA-06512:在“SYS.UTL_TCP”,第 432 行 ORA-06512:在“SCOTT.FTP”,第 413 行 ORA-24247:网络访问被 acl ORA-06512:在“SCOTT.FTP”,行491 ORA-06512:在第 6 行
猜你喜欢
  • 2021-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 2011-11-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-26
相关资源
最近更新 更多