我一直试图解决这个问题好几天,而且我总是一遍又一遍地得到同样的错误。我是用户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
答案 0 :(得分: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;
请参阅the docs了解详情。