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 でスローされます。FTP サーバーと通信するには、「WORKFLOW」ユーザーに特権を付与する必要があります。

で既存の助成金を確認できます

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 に答える