문제 설명 RAC(Real Application Cluster)는 RAC 인스턴스의 노드 간 로드 밸런싱, 페일오버(failover) 및 데이터베이스 확장성을 제공하는 유사 고가용성(High Availability) 구성입니다. RAC를 사용하면 데이터베이스에 노드를 추가하고 용량을 늘리거나 성능을 향상시킬 수 있습니다. Oracle9i RAC란? Oracle9i RAC는 두 개 이상의 인스턴스가 클러스터 기술을 통해 공유 데이터베이스에 액세스할 수 있는 Oracle에서 제공하는 JDBC 드라이버에 의해 수행되는 대부분의 페일오버(failover) 및 로드 밸런싱 작업은 RAC에서는 로드 밸런싱 및 복구도 지원하지만 사용자들이 겪고 있는 대부분의 문제는 사용자는 원활하게 즉각 페일오버(failover)가 수행되는 고가용성 시스템을 기대하지만, 위에서 또한 시작된 트랜잭션이 있는 경우 Oracle DB에 오류가 발생하면 페일오버(failover) 동작은 트랜잭션의 RAC는 OS 클러스터링 기술을 활용하여 데이터 무결성 보장에 필요한 공유 디스크를 제공합니다. 사용자는 다음 내용에 대해 충분히 숙지하고 있어야 합니다.
|
문제 해결 다음 항목을 모두 수행해야 하는 것은 아닙니다. 어떤 경우에는 다음 중 일부만 수행하여도 해결할 수 있습니다. 항목 바로가기 |
문제 발생 원인
가장 일반적인 드라이버 문제는 드라이버가 요청된 서비스를 지원하지 않는 것입니다. 예를 들어, , 또한 "다음 키 입력" 시 오류가 감지되는 NON-STOP(Tandem Copywrite) 시스템과 같이, 오류를 즉시 그러므로 엔드 시스템을 사용할 수 없음을 인식한 후에야 다른 RAC 노드로 이동해야 할 필요성을 문제가 발생하는 또 다른 원인은 디스크에 쓰여진(준비/커밋) 트랜잭션만 복구할 수 있는 경우 모든 구성 기초 |
SLRAC = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.18.137.231)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 172.18.137.230)(PORT = 1521)) (LOAD_BALANCE = yes) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = slrac.bea.com) (FAILOVER_MODE = (TYPE = SELECT) (METHOD = BASIC) ) ) ) SLRAC2 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.18.137.230)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = slrac.bea.com) (INSTANCE_NAME = slrac2) ) ) SLRAC1 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.18.137.231)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = slrac.bea.com) (INSTANCE_NAME = slrac1) ) ) |
WLS JDBC URL은 다음과 같이 구성됩니다. jdbc:oracle:thin:@(description=(address_list= (address=
(host=172.18.137.231) (protocol=tcp)(port=1521))(address=( host=172.18.137.230)(protocol=tcp) (port=1521)) (load_balance=yes) (failover=yes))(connect_data=(service_name= slrac.bea.com))) 배포 시 다음과 같이 표시됩니다. Connection successful on: myserver RAC를 구성할 때 드라이버의 종류와 버전은 중요합니다. RAC는 Oracle thin Java 드라이버와 호환되지만, Oracle 클라이언트를 설치하는데 따르는 번거로움보다 간단한 구성이 더 중요하여 thin 드라이버가 또한 Oracle에서 제공하는 RAC 구성 모범 사례 중 일부를 BEA에서는 권장하지 않습니다. RAC 사용 시, Oracle 드라이버가 WLS에서 제공하는 멀티 풀 기능을 제공하며(예: 데이터베이스 RAC에서는 WLS 멀티 풀 사용이 제한됩니다. 일반적으로 멀티 풀은 XA 드라이버와 함께 사용할 수 RAC 구성 테스트
풀은 WLS 콘솔의 JDBC and Testing에서 TestPool 기능을 사용하여 테스트할 수도 있습니다.
참고: RAC는 WLS에서 보면 단일 연결 풀 및 단일 DataSource로 구성됩니다.
모두 제대로 작동해야 합니다.
그러면 오류가 발생합니다.
모두 제대로 작동합니다. DB는 Oracle 쪽에서 제어됩니다.
아래에서 설명하는 RAC 디버깅은 구성이 좀 더 복잡하다는 점을 제외하고는 기타 모든 JDBC 문제를
|
페이지 맨 위
다음은 RAC를 사용하도록 구성된 JDBC 연결의 예입니다. |
<JDBCConnectionPool ConnLeakProfilingEnabled="true" DriverName="oracle.jdbc.driver.OracleDriver" Name="RACTest" Password="{3DES}SnVOJbMRf3M=" Properties="user=mks" Targets="" TestConnectionsOnCreate="true" TestConnectionsOnRelease="true" TestConnectionsOnReserve="true" TestTableName="SQL SELECT 1 FROM DUAL" URL="jdbc:oracle:thin:@(description= (address_list= (address=(host=172.18.137.231) (protocol=tcp)(port=1521))(address= (host=172.18.137.230)(protocol=tcp) (port=1521)) (load_balance=yes)(failover=yes)) (connect_data=(service_name= slrac.bea.com)))"/> <JDBCTxDataSource EnableTwoPhaseCommit="true" JNDIName="RACTest1" Name="RACTest1" PoolName="RACTest" Targets=""/> |
다음과 같은 예제가 제공됩니다.
이 예제를 사용하려면,
UNIX의 경우: >. ./setEnv.sh
Windows의 경우: setEnv
(예: CLASSPATH=.;%CLASSPATH%로 설정 또는 UNIX의 경우 CLASSPATH=.:$CLASSPATH로 설정) 이 예제에서는 기본 SQL 문만 테스트할 뿐 트랜잭션은 테스트하지 않습니다. |
Sample Test Code- Standard Data Source test //package examples.jdbc.datasource; import java.sql.*; import java.util.*; import javax.naming.*; public class racTest1 { public static void main(String argv[]) // ============== Make connection to database ================== // Put connection properties in to a hashtable. // Get a context for the JNDI look up // execute some SQL statements to demonstrate the connection. try { stmt.execute("create table empdemo (empid int, name varchar(30), dept int)"); int numrows = stmt.executeUpdate("insert into empdemo values (0, 'John Smith', 12)"); numrows = stmt.executeUpdate("delete from empdemo where empid = 0"); } |
트리의 JNDI 항목에 있는 DataSource - RACTest1(이 예제에서는 RAC DataSource)에 유의하십시오.
Start 스크립트에서 CLASSPATH가 JDBC 드라이버를 가리켜야 합니다.
이것은 ojdbc14.jar이며 weblogic jar 앞에 있어야 합니다. |
'자바(JAVA)' 카테고리의 다른 글
Eclipse Struts 플러그인 설치와 사용 (0) | 2008.12.13 |
---|---|
spring 에서 Hibernate 트랜잭션 설정과 sessionFactory 설정법 (2) | 2008.12.08 |
MySQL 과 Oracle DBCP config.xml 기본연결설정정보 (0) | 2008.12.07 |
Multi Pool 구성 예 - config.xml (0) | 2008.12.07 |
간단하게 spring batch 를 만들어 스케줄 프로그램하기 (0) | 2008.11.30 |
log4j 서버 재 기동없이 load 되어 적용될수 있게 하자 (1) | 2008.11.30 |
velocity 에서 숫자로 for 문을 돌리고자 할때 (0) | 2008.11.30 |
ModelAndViewDefiningException 클래스의 용도 (1) | 2008.11.19 |