- 浏览: 102959 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
坚持唯一:
1、看一下eclipse中的window---Preferen ...
Emulator] Failed to allocate memory: 8 -
pop1030123:
都过期了。
MyEclipse 6.0.1 注册码 -
seasheart:
北京多好啊,为什么不留在那家公司呢?
突然发现我该把实习的经历写出来,等到以后7老8十了.... -
abin7230:
你都还有实习,我都不知学校在那实习的呢
突然发现我该把实习的经历写出来,等到以后7老8十了.... -
huangpengxiao:
关注楼主头像。。。
安装飞信fetion IE主页被yidong139篡改
前一段时间production的某一个RAC DB node挂掉了,但是不管是OC4J还是其他application 的JDBC Connection都没有failover到live的DB node上面去,于是各种google, 先写了个test 程序看看conncetion挂了能不能自动释放,这个就涉及到JNDI的RMI lookup, 程序如下:
在test 环境下面的RAC DB有2个node,RAC 环境的ONE ONS(即某个RAC DB node挂了以后会自动广播一个event,让其他node都知道)之类的都设置好了,发现上面的代码确实没有释放挂掉的connection,之后找了好多资料,发现OC4J JNDI datasource的某个property (property-check-interval="60"
默认是15分钟check一次)没有设置,在data-sources.xml里面加了这个property以后,发现上面的代码FCF其实是OK的,apply上production,不过不能随便弄production,没办法verify.
package com.m.toplink.connection; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.Hashtable; import java.util.List; import java.util.Map; import javax.naming.Context; import javax.naming.InitialContext; import junit.framework.TestCase; import oracle.jdbc.pool.OracleConnectionCacheManager; import oracle.oc4j.sql.ManagedDataSource; import org.junit.Test; public class ConnectionPoolFailOverTest extends TestCase { @Test public void testGetConnection() throws Exception { Hashtable<String,String> env1 = new Hashtable<String,String>(); env1.put("java.naming.factory.initial", "com.evermind.server.rmi.RMIInitialContextFactory"); env1.put("java.naming.provider.url", "opmn:ormi://localhost:6007/"); //注意默认是ormi://localhost:23791/ env1.put("java.naming.security.principal", "oc4jadmin"); env1.put("java.naming.security.credentials", "oc4jadmin"); Context context1 = new InitialContext(env1); ManagedDataSource datasource = (ManagedDataSource) context1.lookup("jdbc/OracleAdminDS"); List<Connection> connections=new ArrayList<Connection>(); for (int i = 0; i < 30; i++) { try{ Connection conn = datasource.getConnection(); connections.add(conn); conn.setAutoCommit(false); Statement stat= conn.createStatement(); ResultSet rs= stat.executeQuery("select instance_name from v$instance"); while(rs.next()){ System.out.println(i+"="+rs.getString(1)); } Thread.sleep(10000); ResultSet rs1= stat.executeQuery("select instance_name from v$instance"); rs1= stat.executeQuery("select instance_name from v$instance"); while(rs1.next()){ System.out.println(i+"in="+rs1.getString(1)); } System.out.println(conn); System.out.println(conn.isClosed()); Map status1= OracleConnectionCacheManager.getConnectionCacheManagerInstance().getStatistics("CS2AdminDSPool_default"); for(Object oneKey: status1.keySet()){ System.out.println(oneKey+"="+status1.get(oneKey)); } if(i==3){ System.out.println(conn.isClosed()); String [] cacheNames= OracleConnectionCacheManager.getConnectionCacheManagerInstance().getCacheNameList(); int activeConn= OracleConnectionCacheManager.getConnectionCacheManagerInstance().getNumberOfActiveConnections("CS2AdminDSPool_default"); System.out.println("activeConn="+activeConn); int avaliableConn= OracleConnectionCacheManager.getConnectionCacheManagerInstance().getNumberOfAvailableConnections("CS2AdminDSPool_default"); System.out.println("avaliableConn="+avaliableConn); Map status= OracleConnectionCacheManager.getConnectionCacheManagerInstance().getStatistics("CS2AdminDSPool_default"); for(String cacheName: cacheNames){ System.out.println(cacheName); } for(Object oneKey: status.keySet()){ System.out.println(oneKey+"="+status.get(oneKey)); } System.out.println(conn); try{ Statement invalidStat= connections.get(0).createStatement(); ResultSet invalidRs= invalidStat.executeQuery("select instance_name from v$instance"); while(invalidRs.next()){ System.out.println(i+"invalid="+invalidRs.getString(1)); } // OracleConnectionCacheManager.getConnectionCacheManagerInstance(). }catch(SQLException e){ System.out.println(); // OracleConnectionCacheManager.getConnectionCacheManagerInstance().getNumberOfActiveConnections(); //OracleConnectionCacheManager.getConnectionCacheManagerInstance().getCacheNameList(); if (OracleConnectionCacheManager.getConnectionCacheManagerInstance().isFatalConnectionError(e)) { System.out.println("FCF execption1"); } System.out.println("FCF execption"); e.printStackTrace(); } } // conn.commit(); //conn.close(); }catch(Exception e){ System.out.println("In refresh"); // OracleConnectionCacheManager.getConnectionCacheManagerInstance().refreshCache("CS2AdminDSPool_default", OracleConnectionCacheManager.REFRESH_INVALID_CONNECTIONS); // OracleConnectionCacheManager.getConnectionCacheManagerInstance().purgeCache("CS2AdminDSPool_default", true); System.out.println("Refreshed"); Thread.sleep(5000); e.printStackTrace(); } } Thread.sleep(20000); } }
在test 环境下面的RAC DB有2个node,RAC 环境的ONE ONS(即某个RAC DB node挂了以后会自动广播一个event,让其他node都知道)之类的都设置好了,发现上面的代码确实没有释放挂掉的connection,之后找了好多资料,发现OC4J JNDI datasource的某个property (property-check-interval="60"
默认是15分钟check一次)没有设置,在data-sources.xml里面加了这个property以后,发现上面的代码FCF其实是OK的,apply上production,不过不能随便弄production,没办法verify.
发表评论
-
我的android开发经历1
2013-06-14 19:40 646从开始接触android已经2年多了,因为与平常工 ... -
我的第一个Android app, android app推广与广告
2012-10-15 23:01 990学习Android APP开发一个月了,写了自己第一个APP, ... -
Anyone know this exception? Caused by: java.sql.SQLException: Protocol violation
2012-09-11 15:35 2317Caused by: java.sql.SQLExceptio ... -
TIBCO BW SQL data type
2012-03-15 16:28 780TIBCO BW 里面JDBC query的时候用绑定变量,但 ... -
JSF无法提交(summit只是刷新原页面)
2011-03-24 18:40 853最近使用JSF开发的时候,如果页面有某个element的I ... -
JAVA反射机制作用是什么
2011-03-24 18:34 842一、什么是反射: 反 ... -
JAVA设计模式学习笔记–装饰者模式
2010-03-26 22:59 1251装饰者模式: 1. 装饰者模式动态的将责任附加到对象上,若要 ... -
java.lang.IllegalStateExceptThis loader has been closed and should not be in use
2010-03-26 22:33 2565今天用OC4J重新deploy一个project以后出现了 ... -
理解Java ClassLoader机制
2009-11-10 11:24 929当JVM(Java虚拟机)启动 ... -
专家建议:五种最值得学习的JAVA开发技术
2008-10-15 16:46 729【赛迪网-技术社区整理】Carlos Perez(著名的J ... -
一个Java程序员应该掌握的10项技能
2008-10-15 16:49 807阅读提示: 一个合格 ... -
利用java做一个简单的计算器
2008-10-15 16:53 940两个类。还只是完成+、-、×、÷运算而已。GUI只是用了AWT ... -
SSL简单示例
2008-10-17 10:54 712import java.io.BufferedReader; ... -
Axis2 基础
2008-10-17 15:01 855Introduction Let's start with ... -
about uddi root registry and affiliate registry
2009-01-08 14:10 667V3规范则提出了一个全新的 UDDI体系框架 . V3规 ... -
Effective java 主题:Effective Java Second Edition中文版已出版
2009-03-13 16:11 875本书分为11章共78个条目 ... -
Java连接数据库代码
2009-03-16 10:58 12531、Oracle8/8i/9i数据库(thin模式) Cl ... -
Java的ClassLoader与Package机制(Prohibited package name:XXX)
2009-04-03 16:22 741如遇到这个问题:Prohibi ... -
AXIS2中OMElement和Java对象之间的转换*(详细版)
2009-04-08 17:54 1046AXIOM Axis对象模型(AXIOM)是一个XML ... -
JAVA排序汇总-java排序算法-JAVA算法汇总
2009-04-30 10:23 650package com.softeem.jbs.lesson4 ...
相关推荐
Oracle RAC Failover 详解
Linux 常用命令 oracle rac 中文手册 官网翻译 oracle rac
这个文档详细的记录了重启Oracle rac的每一个步骤,重启的方法很多,这个可能不是最适合你的,但这个是有效的,这个文档是我给外行看的
oracle rac 不停机调整时间.txt
oracle rac安装个人笔记oracle rac安装个人笔记oracle rac安装个人笔记oracle rac安装个人笔记oracle rac安装个人笔记oracle rac安装个人笔记oracle rac安装个人笔记oracle rac安装个人笔记oracle rac安装个人笔记...
资源名称:深入理解Oracle RAC 12c内容简介:《深入理解Oracle RAC 12c》介绍了Oracle RAC 12c技术的方方面面,涵盖了与RAC技术相关的集群件知识、数据库知识、存储知识、网络知识,并在基于RAC的应用软件设计、优化...
此文档是Oracle 11g rac安装完成后的IOPS、负载均衡、TAF等的测试,内容详尽。
Oracle RAC Cache Fusion介绍.pdf
数据库oracle rac 修改db_unique_name参数
这篇文档写了关于DB2 HADR 和 ORACLE RAC的区别,希望对大家学习理解DB2 HADR 和ORACLE RAC一些帮助。
Centos7安装部署Oracle RAC 11G说明文档,Oracle 11g R2安装,RAC环境搭建
Oracle RAC增加ASM盘,创建表空间
yum源配置 Oracle RAC部署环境
深入理解Oracle RAC 12c,数据库的知识,有需要的可以看一下
oracle rac (veritas)双机集群,一套机器挂了没发现,等两套都挂了才发现都是主板坏。。。
Oracle RAC 操作系统安装 oracle RAC部署环境
原创实战Oracle RAC rman恢复
Oracle RAC 数据库架构分析与实战攻略