오라클에서 UTL_TCP 패키지를 사용하려고 할 때 ORA-24247: network access denied by access control list (ACL) 에러메시지가 나올 때가 있습니다.
ACL이란 Access Control Lists약자인데요. 오라클 DB에서 보안적인 측면에서 허용된 유저에게 접근 권한을 주려는 의도에서 만들어진 리스트입니다.
이 Resource는 Oracle XML DB Repository에 XML파일로 저장됩니다.
제가 DBA가 아니라서 오라클의 용어는 아직 많이 생소합니다.
우선 위의 에러가 나시면 일단
1. ACL 파일이 있는지 확인을 합니다.
1 SELECT * FROM dba_network_acls;
쿼리문을 실행하시면 리스트가 나옵니다.
2. 리스트가 없다면 새로 만들어 줍니다.
1 begin
2 dbms_network_acl_admin.create_acl (
3 acl => '/sys/acls/utl_mail.xml',
4 description => 'UTL MAIL Access',
5 principal => 'SCOTT',
6 is_grant => TRUE,
7 privilege => 'connect',
8 start_date => null,
9 end_date => null
10 );
11 end;
위의 문장을 실행하시면 해당 /sys/acls/utl_mail.xml 파일을 만들고 접근 권한을 SCOTT 유저에게 주겠다는 말입니다.
3. 마지막 단계로 특정 호스트를 실제로 ACL리스트에 추가합니다.
1 BEGIN
2 dbms_network_acl_admin.assign_acl (
3 acl => '/sys/acls/utl_mail.xml',
4 host => 'SMTP.GOOGLE.COM',
5 lower_port => 25,
6 upper_port => null
7 );
8 END;
Host 쪽에 접근하고자 하시는 호스트의 도메인명이나 아이피를 입력하시면 됩니다.
위와 같은 절차를 통해서 저는 에러를 해결하고 지금 Email 전송을 잘 하고 있습니다.
'SQL > 트러블슈팅' 카테고리의 다른 글
[에러] ORA-01722: invalid number, ORA-01722: 수치가 부적합합니다 (0) | 2015.12.29 |
---|---|
[에러] ORA-01722: invalid number, ORA-01722: 수치가 부적합합니다 (0) | 2014.11.27 |
ORA-01840, ORA-01830 (0) | 2014.08.13 |
ORU-10027: buffer overflow, limit of 20000 bytes 에러 (0) | 2014.06.11 |