2013-04-04 68 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