본문 바로가기
DataBase

[펌]Oracle OCI Driver와 Thin Driver 차이점

by eqzero 2006. 7. 26.

Oracle OCI Driver와 Thin Driver 

Sun에서는 각 Vender들(Oracle, informix, sybase,etc..)에게 4가지 종류의
JDBC Driver가 있음을 공표 했습니다.
그 중에서도 Type 2와 Type 4형태의 Driver를 Vender들이 많이들 제공하는데,
Type 2 JDBC Driver란, Oracle로 얘기하면 Sql*Net을 필요로 하며, .dll혹은
.so형태의 H/W 종속적인 형태의 Native Module을 통해 DB와 연결됩니다.
Oracle의 경우 JDBC Type 2 형태를 통상 OCI(Oracle Call Interface) Driver라
부릅니다.


반면 Type 4 형태의 JDBC Driver는 순수하게 Java package만으로 바로 DB와
연결이 가능합니다. Oracle에서는 통상 thin Driver가 부릅니다.

Type 2형태가 보다 빠른 성능을 냅니다. 반면, SQL*Net(Oracle의 경우) 과 같은
native module이 항상 있어야 하므로 물리적인 H/W구성에 다소 종속적인 형태가
될 수 밖에 없습니다.

반면 Type 4의 형태일 경우는 Client에서 필요로 하는 것은 유일하게 Java클래스
들만으로 DB와 접속이 가능하니 어떤 H/W, OS에서도 유연하게 DB연결이 가능
합니다. 대신 OCI 형태보다 성능이 떨어진다고 합니다.

그러나 이건 어디까지나 Oracle JDBC Driver에 한해서 그러할 뿐, 다른 DB
Vendor는 특정 Type의 JDBC Driver만 제공하기도 합니다.


Oracle의 경우, OCI Driver와 thin Driver를 사용하는 방법은 다음과 같습니다.

OCI Driver:
     libjdbc*.so 파일이 필요하며, 해당 디렉토리가 Shared Library Path에 등록되어
     있어야 합니다. 즉, 최소한 Oracle Client 제품이 머신에 설치되어 있어야 합니다.
     자세한 사항은 다음의 문서를 참조하세요.
     http://javaservice.net/~java/bbs/read.cgi?m=dbms&b=jdbc&c=r_p&n=956117778

     classes111.zip 이 필요합니다.

   [사용법]
     String driver = "oracle.jdbc.driver.OracleDriver";
     String url = "jdbc:oracle:oci8:@ORA8i_alias";
     String user = "scott";  String password = "tiger";
     Class.forName(dirver);
     Java.sql.Connection conn = DriverManager.getConnection(url, user, password);

    NOTE: $ORACLE_HOME/network/admin/tnsnames.ora 파일에 해당 alias가 등록되어
          있어야 합니다.

Thin Driver:
     classes111.zip 이 필요합니다. thin 방식의 경우는 이 파일만 있으면 되며, Oracle관련
     제품이 Local머신에 설치되어 있을 필요가 없습니다.


   [사용법]
     String driver = "oracle.jdbc.driver.OracleDriver";
     String url = "jdbc:oracle:thin:@210.220.251.96:1521:ORA8i";
     String user = "scott";  String password = "tiger";
     Class.forName(dirver);
     Java.sql.Connection conn = DriverManager.getConnection(url, user, password);
  
   NOTE: thin 방식으로 접속할 경우, 원격지 Oracle DB의" Listener"가 떠 있어야 합니다.
         본게시판의 JDBC FAQ 를 참조하세요

   
NOTE: 프로그램 소스상의 유일한 차이점은 DB URL이 OCI는 Remote DB에 대한 Local Alias를
    사용하는 반면, Thin Driver는 Remote 머신의 IP Address와 Port번호, 그리고
    해당 DB의 SID를 필요로 한다는 것만이 차이가 있을 뿐입니다