0

几天来我一直在尝试解决这个问题,但我总是一遍又一遍地遇到同样的错误。我是用户 Oracle SQL Developer 版本 3.2.20.09,我想使用此代码通过 FTP 发送文件

    CREATE OR REPLACE 
PROCEDURE subirFTP(dirServer VARCHAR2, port VARCHAR2, usr VARCHAR2, pass VARCHAR2, dirRemitente VARCHAR2, dirDestinatario VARCHAR2, nombreArchivo VARCHAR2)
IS
  l_conn  UTL_TCP.connection;
BEGIN
  l_conn := ftp.login(dirServer,port,usr,pass);
  ftp.binary(p_conn => l_conn);
  ftp.put(p_conn => l_conn,
          p_from_dir => dirRemitente,
          p_from_file => nombreArchivo,
          p_to_file => dirDestinatario);
  ftp.logout(l_conn);
END subirFTP;

Informe de error:
ORA-24247: acceso de red denegado por la lista de control de acceso (ACL)
ORA-06512: en "SYS.UTL_TCP", línea 17
ORA-06512: en "SYS.UTL_TCP", línea 267
ORA-06512: en "WORKFLOW.FTP", línea 76
ORA-06512: en "WORKFLOW.SUBIRFTP", línea 5
ORA-06512: en línea 2
4

1 回答 1

1

由于 ACL(访问控制列表)限制,此错误将在 11g 上出现。您需要将权限授予您的“WORKFLOW”用户以与 FTP 服务器通信。

您可以在

select * from dba_network_acls

您的 dba 可以通过以下方式授予访问权限:

begin
  dbms_network_acl_admin.create_acl(acl => 'ftp.xml',
                                    description => 'Enables FTP',
                                    principal => 'WORKFLOW', 
                                    is_grant => true,
                                    privilege => 'connect');
end;
/
begin
  dbms_network_acl_admin.assign_acl(acl => 'ftp.xml',
                                    host => 'yourhost.com',
                                    lower_port => ftp port);
end;
/
commit;

有关更多信息,请参阅文档

于 2013-04-04T16:26:51.417 回答