::: 강좌/소스/문서 :::

강좌/소스/문서 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  신훈재(2004-06-18 13:54:21, Hit : 6717, Vote : 1489
 [자바] JDBC Connect

[ JDBC Connect ]


가. 설치 잘못으로 나타나는 문제

1. .cshrc에 setting이 잘못된 경우.

   a. oracle의 환경변수가 실제 디렉토리와 틀린경우.
    
      setenv ORACLE_SID ORA815
      setenv ORACLE_BASE /user1/oracle
      setenv ORACLE_HOME $ORACLE_BASE/product/815
      setenv ORA_NLS32 $ORACLE_HOME/ocommon/nls/admin/data
      setenv TNS_ADMIN $ORACLE_HOME/network/admin
      setenv NLS_LANG American_America.KO16KSC5601
      setenv NLS_CHARACTERSET  KO16KSC5601
      
      setenv JDK    /user1/oracle/tool/java1.1.8
      setenv JSWDK  /user1/oracle/tool/jswdk-1.0
      setenv SQLJ   /user1/oracle/tool/sqlj
  
   b. classpath에 jdbc드라이버가 연결되지 않은경우.
    
      setenv CLASSPATH .:$JDK/lib/classes.zip:$JSWDK/lib/servlet.jar:$JSWDK/lib/jsp.ja
      r:$JSWDK/lib/jspengine.jar:$JSWDK/webserver.jar:$ORACLE_HOME/jdbc/lib/classes111
      .zip:$ORACLE_HOME/jdbc/lib/nls_charset11.zip:$SQLJ/lib/translator.zip:$JSWDK/exa
      mples/WEB-INF/jsp/beans:$JSWDK/lib:$JSWDK/lib/cos.jar

2. listener가 start되어 있지 않은 경우(thin driver를 사용하는 경우)

   listener란 오라클DB를 접속하기위한 프로토콜이라고 생각하면됩니다.
   lsnrctl status로 확인한 후
   listener가 띄워있지 않으면 lsnrctl start를 실행시킨다.
  
   ip       : ip ( 예 : 210.96.555.23 )
   url      : url ( 예 : java.sun.com )
   1521     : port 번호
   ORA815   : sid
  
   conn = DriverManager.getConnection("jdbc:oracle:thin:id/passwd@ip:ORA815");
   혹은
   conn = DriverManager.getConnection("jdbc:oracle:thin:@java.sun.com:ORA815","id","passwd");

3. 공유라이브러리가 없는경우(OCI driver를 사용하는 경우.)

   liboci73jdbc.so  => ver 7.3
   libocijdbc8.so   => ver 8.x
   가 path에 연결되었는지 확인한다.
  
   conn = DriverManager.getConnection("jdbc:oracle:oci8:@","id","passwd");


나. Connection 사용상의 문제

0. JDBC로 동시에 연결할 수 있는 java.sql.Connection 수

   Oracle 에서는 E:\Oracle\ADMIN\ORA8i\pfile\init.ora
   에서 아래의 파라메터를 수정함으로써 가능합니다.
   -----------------------------------
   processes = 59  # INITIAL
   # processes = 50   # SMALL
   # processes = 100  # MEDIUM
   # processes = 200  # LARGE
   -----------------------------------
   그러나, 오라클 백그라운드 프로세스가 사용하는 것 때문에 12개의 차이가 난다.
  
   IBM UDB DB2 의 경우는 다음과 같은 방식으로 이 수치를 바꿀 수 있습니다.
   -----------------------------------
   # su - db2inst1
   # db2 get dbm cfg | grep MAXAGENTS
    기존 에이전트의 최대 수  (MAXAGENTS) = 200
   # db2 update dbm cfg using maxagents <number>
  
   # db2 get db cfg for <database_name> | grep MAXAPPLS
    실행 중인 프로그램의 최대 수 (MAXAPPLS) = 100
   # db2 update db cfg for <database_name> using maxappls <mumber>
   -----------------------------------


다. 기타

1. 오라클에서 원격 연결하는 방법

두가지 방법이 있습니다.

1) Oracle Thin Driver를 이용하는 방법
  
   이 방법은 Oracle JDBC Driver에 포함되어 있는 classes111.zip 파일만 A-Linux에
   복사하면 됩니다. 아무곳에 넣어 두셔도 되고, 단지, Tomcat의 startup.sh 나
   그에 준하는 적당한 곳에 CLASSPATH를 잡으시면서 해당 classes111.zip 을 연결하고
   tomcat 을 기동하셔야 합니다. (JDK 1.2 혹은 JDK 1.3 이라면 classes12.zip 을 사용하시면
   됩니다.)

   프로그램내에서는 다음과 같은 방식으로 DB를 연결합니다.

   String url = "jdbc:oracle:thin:@<B-Linux_ip_address>:1521:ORCL";
   String user = "scott";  String password = "tiger";
   DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());
   Java.sql.Connection conn = DriverManager.getConnection(url, user, password);

   또한 이 때, B-Linux에서는 $ORACLE_HOME/network/admin/listeners.ora 파일이 제대로
   설정되어 있고, "lsnrctl start"를 이용하여 Oracle Listener가 띄워야 합니다. 자세한
   내용는 아래의 "JDBC FAQ"를 참조하세요.
   http://javaservice.net/~java/bbs/read.cgi?m=dbms&b=jdbc&c=r_p&n=915430414

2) Oracle OCI Driver를 이용하는 방법

   적극 권장하는 방식입니다. 왜냐면 1)번의 Thin Driver 방식보다 Performance가 좋고,
   또, Thin Driver가 가지고 있는 기능상의 제약이나 버그가 없기 때문입니다.

   그러기 위해선 먼저 A-Linux 머신에 Oracle Client를 설치하셔야 합니다. Oracle
   Installation CD 에서 Oracle Client 부분만 install하시면 됩니다. (혹은 Oracle DB를
   Full로 설치하여도 됩니다. 그러나 현재 환경에서 B-Linux를 이용하기 위해 꼭 필요한
   부분은 아닙니다.)

   A-Linux의 $ORACLE_HOME/network/admin/tnsnames.ora 에 다음과 같이 B-Linux DB에 대한
   Alias를 설정해 주어야 합니다.
   ........
   B_ORCL=
    (DESCRIPTION =
     (ADDRESS = (PROTOCOL=TCP)(HOST=<B-Linux_ip_address>)(PORT=1521))
     (CONNECT_DATA = (SID = ORCL)
    )
   )
   ........

   또, tomcat의 startup.sh 나 그에 준하는 "기동스크립트"에서 Oracle에 관련한 각종
   환경변수들이 셋팅되어 져야 합니다. 예를 들면 다음과 같은 것들입니다.

   ORACLE_BASE=/home/oracle/app/oracle
   ORACLE_HOME=/home/oracle/app/oracle/product/815
   TNS_ADMIN=/home/oracle/app/oracle/product/815/network/admin
   ORA_NLS33=/home/oracle/app/oracle/product/815/ocommon/nls/admin/data
   ORACLE_OWNER=oracle
   NLS_LANG=American_America.KO16KSC5601
   LD_LIBRARY_PATH=.::/home/oracle/app/oracle/product/815/lib:/usr/java/lib

   또, Tomcat의 startup.sh 나 그에 준하는 적당한 곳에 CLASSPATH를 잡으시면서 해당
   classes111.zip 을 연결하고 tomcat 을 기동하셔야 합니다. (JDK 1.2 혹은 JDK 1.3
   이라면 classes12.zip 을 사용하시면 됩니다.)


   이제 A-Linux의 서블렛이나 JSP와 같은 프로그램에서 B-Linux의 DB를 접근하는 방법은
   다음과 같습니다.

   String url = "jdbc:oracle:oci8:@B_ORCL";
   String user = "scott";  String password = "tiger";
   DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());
   Java.sql.Connection conn = DriverManager.getConnection(url, user, password);
  
   물론 이 때, B-Linux의 Oracle에서 Oracle Listener는 떠 있어야 합니다.
  





23   [Java/PHP] [자바] DB 컨넥션 풀  신훈재 2004/06/18 9511 1857
22   [Java/PHP] [자바] JDBC-ODBC 연결 예제  신훈재 2004/06/18 9046 1672
21   [Java/PHP] [자바] 시스템 프로퍼티를 이용한 드라이버 로드  신훈재 2004/06/18 5487 1425
20   [Java/PHP] [자바] 오라클 각종 에러  신훈재 2004/06/18 6489 1671
19   [Java/PHP] [자바] 활용팁(오라클)  신훈재 2004/06/18 5997 1603
18   [Java/PHP] [자바] ResultSet 질의결과  신훈재 2004/06/18 6111 1317
17   [Java/PHP] [자바] Select예제  신훈재 2004/06/18 6249 1562
16   [Java/PHP] [자바] Update예제  신훈재 2004/06/18 5414 1333
15   [Java/PHP] [자바] Insert 예제  신훈재 2004/06/18 6493 1673
14   [Java/PHP] [자바] Query Statement  신훈재 2004/06/18 7763 1468
  [Java/PHP] [자바] JDBC Connect  신훈재 2004/06/18 6717 1489
12   [Java/PHP] [자바] JDBC 코딩시 주위사항(jsp, servlet)  신훈재 2004/06/18 6137 1357
11   [Java/PHP] [자바] 여러종류의 데이타베이스 테스트 소스  신훈재 2004/06/18 6421 1457
10   [Java/PHP] [자바] JDBC 테스트 소스(오라클)  신훈재 2004/06/18 5436 1345
9   [Java/PHP] [소스] snmp 를 이용한 시스템 가용율 구하기 예제  김영대 2003/12/01 9570 2092
8   [Java/PHP] [소스] Oolong 언어를 이용한 Factorial 계산 프로그램 예제  김영대 2003/11/10 6633 1683
7   [Java/PHP] [문서] Java Web Services Development Pack (JWSDP) 1.0 tutorial  김영대 2003/03/24 5851 1457
6   [Java/PHP] [문서] Java Swing v1.1.1 도움말  김영대 2003/03/24 5782 1470
5   [Java/PHP] [문서] Java Servlet Development Kit (JSDK) v2.3 도움말  김영대 2003/03/24 5520 1454
4   [Java/PHP] [문서] Java 2 SDK, Enterprise Edition (J2EE) 1.3.1 도움말  김영대 2003/03/24 5617 1469

1 [2]
 

Copyright 1999-2017 Zeroboard / skin by zero