Oracle
 sql >> Baza danych >  >> RDS >> Oracle

ORA-24247:odmowa dostępu do sieci przez listę kontroli dostępu (ACL) podczas wysyłania wiadomości e-mail oracle

Nie potrzebujesz żadnego commit , ponieważ dla tych operacji nie są wykonywane jawne operacje DML. I używając begin..end bloki również nie są potrzebne dla każdej metody wywoływania.

Twój problem wynika z konieczności wywołania Dbms_Network_Acl_Admin.Add_Privilege metoda z privilege => 'connect' opcja również. Możesz więc użyć następujących :

BEGIN
  DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(
                                    acl         => 'apex_user.xml',
                                    description => 'access to apex email',
                                    principal   => 'DBUSER',
                                    is_grant    => TRUE,
                                    privilege   => 'connect',
                                    start_date  => SYSTIMESTAMP,
                                    end_date    =>Null
                                    );
  DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(
                                       acl       => 'apex_user.xml',
                                       principal => 'DBUSER',
                                       is_grant  => true,
                                       privilege => 'connect'
                                       );

  DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(
                                       acl       => 'apex_user.xml',
                                       principal => 'DBUSER',
                                       is_grant  => true,
                                       privilege => 'resolve'
                                       );


  DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(
                                    acl         => 'apex_user.xml',
                                    host        => 'smtp.gmail.com',
                                    lower_port  =>587,
                                    upper_port  =>587
                                    );
 END;

Za pomocą następującego zapytania można sprawdzić wszystkie uprzywilejowane dostępy (poprzez schematy SYS lub SYSTEM ):

select a.host,p.*
  from dba_network_acl_privileges p
  join dba_network_acls a on a.aclid = p.aclid
 order by a.host, p.principal, p.privilege;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle SQL Dev, jak obliczyć liczbę dni tygodnia między 2 datami

  2. Oracle UTL_SMTP:przykład wysyłania poczty z załącznikiem przy użyciu uwierzytelniania portfela Oracle

  3. Jak dodać 2 daty w Oracle sp?

  4. PRZYPADEK vs. DEKODOWANIE

  5. Znajdź długość najdłuższego wiersza w kolumnie w Oracle