文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>在RAC中使用连接池的一些限制

在RAC中使用连接池的一些限制

时间:2010-08-31  来源:osdba

BEA公司建议使用Weblogic JDBC多池,但使用了WebLogic JDBC多池就不能支持全局事务,不用多池就需要靠Oracle Thin driver来实现failover.
XA驱动要求: 全局事务必须被初始化、准备、终止在RAC的同一个实例上。 在RAC中,全局事务必须有相同的事务ID。
下面几项不能进行故障切换,必须由应用程序重新初始化: ?使用中的存储过程  ?应用程序向会话状态的转变  ?正在处理的“写”事务(正在进行数据库更新的本地事务)  ?全局事务 
建议: 1. 请开发人员在使用非XA JDBC程序开发程序时,发生数据库错误时,一定要发rollback到数据库,再继续后面的操作。 2. 不管是通过JDBC还是OCI连接数据库时,当发生“ORA-25402: 事务处理必须重新运行”时,必须rollback事务后,再进行后面的操作;当发生错误“ORA-25408: 无法安全重放调用”时请重做操作。 2. 当数据库连接中断(session 中断时)要求程序能自恢复。 3. 如遇错误“ORA-03113”错误时需要重新建立与数据库的连接。 4.不使用loadbalance,即配置后台程序时的Tnsnames类似如下: myrac = (description= (load_balance=off) (failover=on) (address= (protocol=tcp)(host=10.1.3.1)(port=1522)) (address= (protocol=tcp)(host=10.1.3.2)(port=1522)) (connect_data= (service_name=ora92) (failover_mode=(type=select)(method=basic)(retries=20)(delay=20)) ) )
rac1 = (description= (load_balance=off)  (failover=on)  (address= (protocol=tcp)(host=10.1.3.1)(port=1522))  (connect_data= (service_name=ora92) (failover_mode=(type=select)(method=basic) (backup=rac2)(retries=20)(delay=20)) ) )
rac2 = (description= (load_balance=off)  (failover=on)  (address= (protocol=tcp)(host=10.1.3.2)(port=1522))  (connect_data= (service_name=ora92) (failover_mode=(type=select)(method=basic) (backup=rac1)(retries=20)(delay=20)) ) )

使用JDBC连接池的配置大致为: <JDBCConnectionPool        Name="oracleRACPool"        DriverName="oracle.jdbc.client.OracleDataSource"        InitialCapacity="5"        LoginDelaySeconds="1"        MaxCapacity="5"        Password="{3DES}I5fj3vh4+nI="        Properties="user=SCOTT"        CountOfTestFailuresTillFlush="1"        ConnectionReserveTimeoutSeconds="120"        KeepXAConnTillTXComplete="true"        RefreshMinutes="5"        TestConnectionsOnReserve="true"        TestTableName="dual"        PreparedStatementCacheSize="15"        Targets="myCluster"        URL="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=        (ADDRESS=(PROTOCOL=TCP)(HOST=host1)(PORT=1521))        (ADDRESS=(PROTOCOL=TCP)(HOST=host2)(PORT=1521))        (FAILOVER=yes)(LOAD_BALANCE=no)(CONNECT_DATA=(SERVER=DEDICATED)        (SERVICE_NAME=dbservice.company.com)))"        />
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载