반응형



Connection 실패!

e : java.sql.SQLException: Listener refused the connection with the following error:

ORA-12505, TNS:listener does not currently know of SID given in connect descriptor

The Connection descriptor used by the client was:

100.100.1.1:1521:HHHAAA


원인

SID 와 ServiceName이 상이할 경우 발생


해결 방안


SID일 경우                - "jdbc:oracle:thin:@" + dbip + ":" + dbport + ":" + dbsid;
ServiceName일 경우 - "jdbc:oracle:thin:@" + dbip + ":" + dbport + "/" + dbsid;   


JSP 상에서는 안될 경우
connectInfo = "jdbc:oracle:thin:@//" + dbip + ":" + dbport + "/" + dbsid;

참고 사이트 : 
http://stillrabbit.blogspot.com/2009/01/jdbc-config-oracle-resource.html
 

후후... 일반적으로 SID와 Service Name이 동일하나... 이 사이트와 같은 경우도 존재했음...

샘플 JDBCTest.java

컴파일 : javac JDBCTest.java
실행 : java -cp /xxx/xxx/ojdbc.jar:. JDBCTest

 import java.sql.*; 


public class JDBCTest { 

 private static Connection con; 1

 private static Statement stmt; 

 private static ResultSet rs;   

  

 public static void main(String[] ar){ 

  try{ 

   // 1. Driver를 로딩한다. 

   Class.forName("oracle.jdbc.driver.OracleDriver"); 

   System.out.println("OracleDriver의 로딩이 정상적으로 이뤄졌습니다."); 

    


   String url = "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=100.100.1.1)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=HHHAAA)))";

   // 2. Connection 얻어오기 

   con  = DriverManager.getConnection("jdbc:oracle:thin:@100.100.1.1:1521/HHHAAA" , "HHHH_WEBS", "123456");

   System.out.println("데이터베이스의 연결에 성공하였습니다."); 

    

   // 3. Statement 얻기 --> 쿼리문 작성하여 적용하기 위한 용도 

   stmt = con.createStatement(); 

    

   String sql ="";

    

   // 7. Select문 실행하여 데이터베이스 내용 출력하기 

   sql = "select count(*) from admin.tablesAN20"; 

   

   rs = stmt.executeQuery(sql); 

   

   while(rs.next()){ 

    System.out.println("count : " + rs.getString(1)); 

   } 

   

   // 7. Select문 실행하여 데이터베이스 내용 출력하기 

   sql = "select count(*) from admin.tablesXA01"; 

   

   rs = stmt.executeQuery(sql); 

   

   while(rs.next()){ 

    System.out.println("count : " + rs.getString(1)); 

   } 

   

   // 7. Select문 실행하여 데이터베이스 내용 출력하기 

   sql = "select count(*) from admin.tablesXA02"; 

   

   rs = stmt.executeQuery(sql); 

   

   while(rs.next()){ 

    System.out.println("count : " + rs.getString(1)); 

   }       

   

   rs.close(); 

   stmt.close(); 

   con.close(); 

  }catch(ClassNotFoundException cnfe){ 

   System.out.println("oracle.jdbc.driver.OracleDriver를 찾을 수 없습니다."); 

  }catch(SQLException  sql){ 

   System.out.println("Connection 실패!"); 

   System.out.println("e : " + sql.toString()); 

  }catch(Exception e){ 

   System.out.println(e.toString()); 

  }finally{ 

   System.out.println("성공!!"); 

  } 

 } 








반응형

'Private' 카테고리의 다른 글

node-red oracledb  (0) 2018.06.25
서버 용량 산정 / 성능 측정 / tpmc / bops / tpc / tpc-h  (0) 2013.05.10
Magicar AF BRONZE (매직카 브론즈)  (0) 2011.11.30
압력 밥솥 구매 ... 예정  (0) 2011.11.26
아놔 가습기  (3) 2011.11.22

+ Recent posts