본문 바로가기

Server Oriented/DB-Oracle

11g 부터는 utl_http 에 대한 접근권한을 설정해야 작동합니다

10g 까지는 utl_http 를 사용해서, 웹서비스 URL 을 DB 프로시저에 호출하도록 하고, DB Job 에 스케줄로 DB 프로시저를 실행하는데 문제가 없죠.

그런데, 11g 부터는 권한 설정을 별도로 해 주어야 상기 프로세스가 가능합니다.


10g 에선 잘 작동하다가 아래 에러 메시지가 나온다면, 이곳에 기술된 내용을 처리해야 합니다.

ORA-24247: network access denied by access control list (ACL)


DB sys 계정으로 작업해야 한다고 하는데, system 계정도 되지 않나 싶긴 합니다만..


참고 웹페이지. http://blog.naver.com/jinh2004?Redirect=Log&logNo=80139511224

UTL_HTTP 활용 안내. http://jsp-making.tistory.com/26



-- 아래 명령은, 1회만 실행하면 되며, 2회 이상 실행시 이미 존재한다고 오류 메시지 나옴 
exec dbms_network_acl_admin.create_acl('network_services.xml','Network connection permission to HTTP server for <DB 사용자 아이디>', '<DB 사용자 아이디>', TRUE, 'connect');
-- DB 사용자 아이디는 오라클 DB 서비스에 접속하는 아이디 (대문자 필수)


-- 아래 명령은, DB 사용자 별로 1회만 실행하면 되며, 시간이 상당히 오래 소요될 수 있네요.
exec dbms_network_acl_admin.add_privilege('network_services.xml','<DB 사용자 아이디>',true,'resolve');
-- DB 사용자 아이디는 오라클 DB 서비스에 접속하는 아이디 (대문자 필수)
-- resolve 나 connect 둘 중 하나를 사용 (소문자 필수)

exec dbms_network_acl_admin.assign_acl('network_services.xml','<도메인 이름>');
- 도메인 이름은 이를테면 www.tistory.com 과 같이 사용 (대/소문자 무관)


.Fine.