오라클 연결은 두 가지 방식이 있다.

thin과 oci가 그것이다.

두 가지 방식은 서로 간에 차이가 있다.

먼저, thin의 경우, ip, port, service name, id, password 를 넣는다.

oci의 경우, tns name, id, password 를 넣는다.

thin의 경우, 오라클 드라이버에 대한 자바 라이브러리만 있으면 쉽게 사용할 수 있다.

반면, oci방식은 tns name을 사용한다. 

tns name은 $ORA_HOME/network/admin에 있는 tnsname.org에 넣은 name이다.

tnsname.org를 보면 다음과 같은 형식을 지닌다.

 # tnsnames.ora Network Configuration File: C:\oracle\product\10.2.0\client\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = HOSTNAME)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = PLSExtProc)
)
)

여기서 HOST의 값이 IP주소이고, PORT는 1521(리스너에 연결할 포트로 오라클은 1521을 쓴다.)

SERVICE_NAME은 ORA10R2 같은 방식이다.(ORA10이라는 것은 오라클 10버전을, R은 아마 리비젼이라 생각한다만 정확하진 않다.)

thin방식은 인터넷 뒤지면 많이 나오니까 설명하지 않겠다.(사실은 까먹었다.)

OCI방식에 필요한 것은 다음과 같다.

classic12.jar(버전마다 약간 다름을 유의)

ojdbc14.jar(오라클 10버전에서 쓴다. 11버전에선 ojdbc6.jar가 있는데 이건 JDK1.6버전 이상 지원으로 ojdbc5.jar는 JDK1.5버전 이상 지원이다.)

ocijdbc10.dll(이게 가장 중요하다 볼 수 있다. 오라클 깔려있지 않으면 구하지 힘들다.)

인터넷을 잘 찾아보았다면 시스템 환경변수를 이용해 공유 라이브러리 패스에 넣어서 쓰면 된다는 것을 찾을수 있을 거다.

oci의 경우, 오라클 클라이언트를 설치해야 사용할 수 있다.(당연하다. tnsname.org가 필요하기 때문에 설치해 놓으면 편하다. 서버가 살아있는지 확인하려면, sqlplus도 사용해야하고 해서 겸사겸사 설치해라. 공짜프로그램이다.)


자, 먼저 프로젝트에 classic12.jar와 ojdbc14.jar를 참조하게 한다.

oci를 해보라. 자바 소스 안에서 쓰이는 것은 thin방식과 유사하다. 다만 커넥션 연결시, url이 들어갈 부분에 tnsname을 넣어 주면 된다.

그리고 실행해보면 아마 오류가 뜰거다. UnsatisfiedLinkError : no 'file' in share library path 같은 것이리라 생각한다.

바로 네이티브 라이브러리 패스를 연결 안 했기 때문일거다.

참고로 윈도우는 시스템 환경변수중 PATH가 공유 라이브러리 패스다. 위에 'file' 부분에 필요한 파일이름이 뜰 것이다.

그것의 경로를 PATH에 넣고 실행하면 될것이다.




Posted by 풍객사