[Oracle 10g] java.sql.SQLException: IO 예외 상황: The Network Adapter could not establish the connection

Posted at 2009/06/09 17:38 // in DBMS // by 엔신
java.sql.SQLException: IO 예외 상황: The Network Adapter could not establish the connection
오라클을 설치 후 원격의 시스템과 연결이 아닌 localhost(127.0.0.1)에 연결하고자 할 때 리스너 설정이 잘못된 경우 위와 같은 에러 메시지가 발생할 수 있다. 그 외에도 여러가지 에러에 발생할 수 있겠지만, 본인의 경우를 중점으로 설명한다.(단기기억력으로 나중에 고생하기싫어요...)

리스너와 관련된 설정 파일은
C:\oracle\product\10.2.0\db_1\NETWORK\ADMIN 경로의
tnsnames.ora와 listener.ora 파일이다.
그러나 파일을 열어보고 수정하기에는 설정 파일의 문법을 모르기 때문에 가독성 면에서 좋지 못하다.
시작 -> 프로그램 > 오라클 메뉴로 가면 구성 및 이전 툴 메뉴에 Net Manager 단축아이콘이 존재한다.

Net Manager에서는 리스너와 2개의 서비스가 최소한 존재할 것이다.
2개의 서비스는 리스너의 두 항목과 일치하여야 정상적으로 서비스 이용이 가능한데, 이 부분이 서로 일치하지 않을 경우 위와 같은 에러 메시지를 접할 수 있다.

사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지

위 4개의 그림에서는 리스너중 주소1의 IPC가 EXTPROC1으로 되어 있지만, extproc_connection_data 서비스에서는 EXTPROC0으로 서로 일치하지 않는다. 이럴 경우 위와 같은 에러메시지를 접하게 되므로 리스너의 주소1을 EXTPROC0으로 수정하여 서비스와 서로 일치하게 만든다.

위의 경우에는 IPC의 값이 일치하지 않아 발생했을 때이고, 또 다른 경우는 TCP/IP가 일치하지 않아 발생할 수도 있다.

서비스 네임은 darkhi으로 설정하고, 호스트 이름 : darkhi-054fa49f, Port : 1521로 설정하고 리스너에서도 동일하게 설정하고 정작 접속할 때 jdbc:oracle:thin:@127.0.0.1:1521:PLSExtProc1과 같이 일치하지 않은 내용을 입력할 경우에도 문제가 발생할 수 있다. 그 외에도 여러가지 이므로 상황에 맞게 리스너 설정을 변경하여주면 된다.

인터넷에서 찾아본 결과, IP가 자동인 경우 문제가 된다고 하였는데, 127.0.0.1인 Loopback 장치를 사용하는데 IP를 자동으로 받아오든 말든 무슨 상관이 있겠나 싶다.(물론 그런 경우도 있겠지만, 여기서는 loopback 장치를 사용하였으므로)

위 경우가 항상 100% 해답은 아니라고 생각되며, 상황에 따라 다른 경우 상황에서도 위와 같은 오류가 발생할 수 있는 것 같다.

저장 메뉴는 오른쪽 상단의 파일 -> 네트워크 구성 저장 메뉴를 이용하면 된다.
또한 환경설정의 경우 오라클 서비스를 재시작하거나, 운영체제를 재시작하여 reload하여야 한다.

이올린에 북마크하기
2009/06/09 17:38 2009/06/09 17:38