- Posted
- Filed under 글로 기록하기
물론 정통부에서 작업 할 때에는, 다른 문제 때문이었었는데, 그때에도 문제를 해결하는 과정에서 오늘 발생한 문제에 대한 내용을 봤었습니다. 그때에는 다른 문제라 생각하고 그냥 지나쳤었는데, 오늘 이 에러를 접하고 나니, 바로 정리하지 못한 아쉬움이 남네요.
시스템은 그림에서 보이는 것 처럼 구성되어 있습니다.
- Client 와 WAS는 CORBA로 연결됩니다.
- WAS와 DB는 다른 네트워크에 존재합니다.
- Client <-----> DB 2-티어로 잘 연결됩니다.
- Client <-----> WAS <-----> DB 3-티어로는 DB에 연결이 되지 않습니다.
Caused by: java.sql.SQLException: IO 예외 상황: The Network Adapter could not establish the connection
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:420)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:420)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
그림 보기
이런 에러가 발생하는 이유로는 네트워크로 데이터베이스에 접근하지 못하는 문제인데,
- 리스너가 안떠있거나
- 호스트명이 잘못되어있거나
- 방화벽문제
실제 웹에서 검색을 해보면, 1번과 2번 때문에 이런 문제가 발생한다는 것과, 그에대한 해결방법에 대해 많이 찾을 수 있었습니다. 하지만 2-티어로는 접속이 잘 되고 있는 상황이기 때문에, 다른 원인을 찾아야만 했는데, 그래서 찾은 원인은 Oracle이 Multithreaded Server (MTS)로 설정되어 있을 경우 ORA-17002 (ORA-12505) 문제가 발생한다는 것입니다.
해결방법으로는 다음과 같은 접속 URL 대신에
다음 URL을 사용합니다.