- 浏览: 107434 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
坚持唯一:
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 677从开始接触android已经2年多了,因为与平常工 ... -
我的第一个Android app, android app推广与广告
2012-10-15 23:01 1022学习Android APP开发一个月了,写了自己第一个APP, ... -
Anyone know this exception? Caused by: java.sql.SQLException: Protocol violation
2012-09-11 15:35 2362Caused by: java.sql.SQLExceptio ... -
TIBCO BW SQL data type
2012-03-15 16:28 832TIBCO BW 里面JDBC query的时候用绑定变量,但 ... -
JSF无法提交(summit只是刷新原页面)
2011-03-24 18:40 893最近使用JSF开发的时候,如果页面有某个element的I ... -
JAVA反射机制作用是什么
2011-03-24 18:34 900一、什么是反射: 反 ... -
JAVA设计模式学习笔记–装饰者模式
2010-03-26 22:59 1285装饰者模式: 1. 装饰者模式动态的将责任附加到对象上,若要 ... -
java.lang.IllegalStateExceptThis loader has been closed and should not be in use
2010-03-26 22:33 2631今天用OC4J重新deploy一个project以后出现了 ... -
理解Java ClassLoader机制
2009-11-10 11:24 976当JVM(Java虚拟机)启动 ... -
专家建议:五种最值得学习的JAVA开发技术
2008-10-15 16:46 756【赛迪网-技术社区整理】Carlos Perez(著名的J ... -
一个Java程序员应该掌握的10项技能
2008-10-15 16:49 843阅读提示: 一个合格 ... -
利用java做一个简单的计算器
2008-10-15 16:53 977两个类。还只是完成+、-、×、÷运算而已。GUI只是用了AWT ... -
SSL简单示例
2008-10-17 10:54 738import java.io.BufferedReader; ... -
Axis2 基础
2008-10-17 15:01 881Introduction Let's start with ... -
about uddi root registry and affiliate registry
2009-01-08 14:10 689V3规范则提出了一个全新的 UDDI体系框架 . V3规 ... -
Effective java 主题:Effective Java Second Edition中文版已出版
2009-03-13 16:11 918本书分为11章共78个条目 ... -
Java连接数据库代码
2009-03-16 10:58 12791、Oracle8/8i/9i数据库(thin模式) Cl ... -
Java的ClassLoader与Package机制(Prohibited package name:XXX)
2009-04-03 16:22 769如遇到这个问题:Prohibi ... -
AXIS2中OMElement和Java对象之间的转换*(详细版)
2009-04-08 17:54 1088AXIOM Axis对象模型(AXIOM)是一个XML ... -
JAVA排序汇总-java排序算法-JAVA算法汇总
2009-04-30 10:23 675package com.softeem.jbs.lesson4 ...
相关推荐
### Oracle RAC Failover 详解 #### 一、概述 Oracle Real Application Clusters (RAC) 是一种集群数据库解决方案,旨在提供高可用性和负载均衡功能。其中,高可用性的一个核心组成部分是 Failover(故障转移)...
Oracle RAC 修改 db_unique_name 参数 在 Oracle RAC 环境中,db_unique_name 参数是一个非常重要的参数,它决定了数据库的唯一标识。在某些情况下,我们需要修改 db_unique_name 参数,以便满足特定的需求。本文将...
### Oracle RAC 功能测试方案详解 #### 一、引言 Oracle Real Application Clusters (RAC) 是一种高可用性、高性能的企业级数据库解决方案。本文档旨在提供一个全面的Oracle 11g RAC安装后的功能测试方案,主要包括...
Oracle RAC 项目实施方案 Oracle RAC(Real Application Clusters)是 Oracle 公司的一种集群解决方案,旨在提供高可用性和高性能的数据库解决方案。在生产环境下实施 Oracle RAC 需要进行详细的规划和实施本文将...
另一方面,Oracle RAC的 Transparent Application Failover (TAF)可能会在故障切换时出现问题,如配置复杂且可能出现25%的查询回退概率,而DB2 HADR的配置更简单,且能自动重路由连接至备用服务器。 从价格成本角度...
Oracle RAC 增加 ASM 盘, 创建表空间 Oracle RAC 是一种高可用、高性能的数据库解决方案,通过将多个服务器节点组成一个集群,提供了高可用性和高性能的数据库服务。在 Oracle RAC 中,ASM(Automated Storage ...
Linux 常用命令 oracle rac 中文手册 官网翻译 oracle rac
Oracle RAC 12c是Oracle数据库的集群版本,全称是Oracle Real Application Clusters。它允许在多个计算机之间分布数据和负载,提供了高可用性、可扩展性和灵活性。RAC技术是Oracle数据库12c版本中提供的一项关键特性...
### Windows平台Oracle RAC集群安装过程详解 #### 引言 在企业级应用环境中,为了提高数据处理能力和系统的高可用性,Oracle Real Application Clusters (RAC) 成为了一种热门选择。尤其在Windows平台上部署Oracle...
### Oracle RAC重启操作手册知识点解析 #### 一、准备工作 **知识点1:确认应用程序状态** - **背景**: 在进行任何重启操作之前,确保所有的应用程序都已经停止是非常重要的一步。 - **目的**: 避免在数据库重启...
Oracle RAC 12c 运维最佳实践指南 Oracle RAC 12c 是一种高可用、高性能的集群解决方案,旨在实现数据库的高可用性和可扩展性。本文将对 Oracle RAC 12c 运维最佳实践指南进行解读,总结出相关的知识点。 一、 ...
Vmware ESXi6虚拟机环境下搭建Oracle RAC的过程 在本文中,我们将记录一次在Vmware ESXi6虚拟机环境下搭建Oracle RAC的过程。Oracle RAC(Real Application Clusters)是一种高可用性解决方案,能够提供高性能和高...
【华为云ECS ORACLE RAC 11.2.0.4 安装指导】 在当前技术环境中,由于去IOE(IBM、Oracle、EMC)的趋势,许多国内企业正考虑替换Oracle数据库,转而使用国产数据库或云计算平台上的数据库服务。然而,将Oracle RAC...
标题《Understanding Oracle RAC Internals - The Cache Fusion Edition》涉及的主题是Oracle RAC内部机制,特别是Cache Fusion技术。Oracle RAC(Real Application Clusters)是Oracle数据库的一个重要特性,它允许...
Oracle RAC(Real Application Clusters)是Oracle数据库的一项高级特性,它允许多个实例同时访问同一个物理数据库,从而实现高可用性和负载均衡。在Oracle RAC核心技术详解中,我们将深入探讨RAC的工作原理、架构、...
Oracle RAC 安装部署文档 本文档详细介绍了 Oracle RAC 的安装部署过程,涵盖了物理硬件配置需求、虚拟机需求、操作系统安装、数据库安装、 Oracle RAC 图形界面搭建方法、创建磁盘组、安装 Oracle 数据库、性能...
Oracle RAC(Real Application Clusters)集群是一种高可用性解决方案,它允许多个实例同时访问同一个数据库,确保在单个节点故障时数据的连续性和一致性。归档日志是Oracle数据库的重要组成部分,它们记录了自上次...
oracle rac 不停机调整时间.txt
- URL格式通常是:`jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=on)(FAILOVER=on)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=rac_node1)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=rac_node2)(PORT=1521)))...
Hypver-v Linux虚机配置Oracle RAC