이번에 트리테이블을 쓰면서 

트리테이블을 뷰어로 어떻게 쓸 수 있을까 고민하며 뒤지다가 찾은 예제사이트.

참고로 외국거다.

http://javawiki.sowas.com/doku.php?id=swt-jface:treetableviewer

Posted by 풍객사

OCI방식 연결했는데, 제목과 같은 에러가 나왔다.

뭘까?

이것은 오라클 클라이언트가 여러개 깔렸을 때 나올 수 있다.

instant client와 oracle10g 클라이언트를 설치하였는데, 두 곳 다 환경변수로 지정했다면 이런 에러가 뜰거다.

해결방법은 두 곳 중 한곳의 환경변수를 빼는 것이다.

나의 경우는, 프로젝트에 오라클 인스턴트 클라이언트의 dll들을 넣었다가 위와 같은 에러가 발생했다.

그리고 프로젝트에 넣었던 dll들을 지워서 해결하였다.


만약 위와 같은 에러가 뜬다면 한번 생각해 보자. 

오라클 DB가 여러개가 깔렸거나 dll을 여러곳에서 참조하고 있지는 않는지...

Posted by 풍객사

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

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 풍객사