2013-04-04 34 views
0

我一直试图解决这个问题几天,我总是得到相同的错误一遍又一遍。我是用户的Oracle SQL Developer版本3.2.20.09,我想通过FTP与此代码ORA-24247通过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 

回答

1

这个错误将11g上被thown发送文件由于ACL(访问控制列表)restictions。您需要授予您的“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获取更多信息。

+0

嗯,我试过使用select * from dba_network_acls,它显示我这个错误代码错误SQL:ORA-00942:表或视图不存在。那桌子只有dba才能看到吗? – 2013-04-04 16:40:33

+1

@AllanMiranda - 不一定只有DBA,但任何具有足够特权的人(例如'select any dictionary');但是你还需要在'dbms_network_acl_admin'软件包中有执行权限的人来设置它们。因此,您可能需要在某个时候让您的DBA参与其中,或者为您完成此任务,或者授予您自己设置此权限所需的权限。 – 2013-04-04 17:05:26