Oracle集群(RAC)及 jdbc 连接双机数据库

Oracle集群(RAC)及 jdbc 连接双机数据库

Oracle集群(RAC)及 jdbc 连接双机数据库 - secyaher - 隐龙 为了一生的信念

还是因为工作经验太浅,虽然工作中每天都要用到ORACLE,不过集群还是第一次接触(包括11G也是第一次用),10G和11G在使用方面没有什么太大区别,主要还是记录下这次集群的测试和使用JDBC链接ORACLE RAC的连接串配置。

集群是把Oracle 实例(运行在服务器上的真来访问数据的进程和内存结构)与Oracle数据库(在存储设备上的实际数据的物理结构,也就是通常所说的数据文件)进行分离。一个真真数据库是一个可为多个实例访问的单一数据库。在真真中,每个实例在各自的服务器上运行。当需要添加额外的资源时,可以在不停机的情况下很容易地增加节点和实例。一旦新的实例启动,真真程序通过服务可以马上利真到,而无需修改真真或真真服务器。恩~以上为照抄 = =

这次的客户是双机访问操作数据库,一台实例名是orcl1,一台是orcl2。访问数据库服务名是orcl,之前我也搜了些资料,最后的想法是写了一个测试程序来测试JDBC链接ORACLE RAC的连接串。代码如下:

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties;   public class RacTest {    /** * 测试RAC * */ public static void main(String[] args) throws ClassNotFoundException {    String url; Connection conn = null; Statement stmt = null; ResultSet rs = null;   Properties conProps = new Properties();   conProps.put("user", "sys"); conProps.put("password", "sys"); conProps.put("internal_logon", "sysdba");   // String username = "sys"; // String password = "oracle";   url = "jdbc:oracle:thin:@(description= (ADDRESS_LIST ="; url += "(address=(protocol=tcp)(host=10.37.27.111)(port=1521))"; url += "(address=(protocol=tcp)(host=10.37.27.112)(port=1521))"; url += "(load_balance=yes))"; url += "(connect_data ="; url += "(server = dedicated)"; url += "(service_name=orcl)"; url += "(failover_mode ="; url += "(type=session)"; url += "(method=basic)"; url += "(retries=5)"; url += "(delay=15))"; url += " ))";   String sql = "select * from v$instance";   try {  Class.forName("oracle.jdbc.driver.OracleDriver"); conn = DriverManager.getConnection(url, conProps); // conn = DriverManager.getConnection(url, username, password); stmt = conn.createStatement(); rs = stmt.executeQuery(sql); if (rs.next()) {  System.out.print(rs.getString("INSTANCE_NAME")); } rs.close(); rs = null; stmt.close(); stmt = null; conn.close(); conn = null; } catch (SQLException ex) {  ex.printStackTrace(); } finally {    if (rs != null) {  try {  rs.close();   rs = null; } catch (Exception ex) {  ex.printStackTrace(); } } if (stmt != null) {  try {  stmt.close(); stmt = null; } catch (Exception ex) {  ex.printStackTrace(); } } if (conn != null) {  try {  conn.close(); conn = null; } catch (SQLException ex) {  ex.printStackTrace(); } }   }   }   }

每次执行都会打印出链接到此台服务器ORACLE的SID,如果要负载均衡的话,他应该随机会打印出orcl1和orcl2。由于只有SYSDBA用户才有权限查询出SID所以测试的用户得是DBA身份,不知道我这样的测试方法是否正确,总之是测试通过了(ORCL1和ORCL2随机打印)。

顺便记录下配置链接字符串的参数:

address后面就是连接的IP和端口号没什么说的。load_balance=yes;表示是否负载均衡。server = dedicated;表示专用服务器模式,感觉可以去掉。service_name=orcl;要操作数据库的服务名。TYPE = SESSION表示当一个连接好的会话的实例发生故障,系统会自动将会话切换到其他可用的实例,前台应用无须再度发起连接,但会话正在执行的SQL 需要重新执行。METHOD = BASIC表示初始连接就连接一个接点,他还有个选项是preconnect,表示初始连接所有的接点。RETRIES:重试次数。DELAY:重试的延迟(以秒为单位)。

并且集群中如果ORACLE服务器的LISTENER配置的是本机的机器名,则应用方面最好把winnt下的system32/drivers/etc/hosts文件更改一下。最后加上IP对应的机器名,比如:

10.37.27.111 linux1-vip

10.37.27.112 linux2-vip

如果有什么不对的以后继续更改 = =。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/100487.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • HTML中document的作用,html中的document对象是什么?一篇文章让你了解document对象

    HTML中document的作用,html中的document对象是什么?一篇文章让你了解document对象本篇文章主要的介绍了关于HTMLdocument对象的解释,还有关于HTMLdocument对象的使用实例解析,接下来让我们一起来看这篇文章吧首先我们来介绍一下HTML中的document对象:文档对象(document)代表浏览器窗口中的文档,该对象是window对象的子对象,由于window对象是DOM对象模型中的默认对象,因此window对象中的方法和子对象不需要使用window来引用。…

  • http请求有哪些方式_java.lang.reflect.undeclared

    http请求有哪些方式_java.lang.reflect.undeclared移除ASP.NETMVC项目中,HTTP请求的ResponseHeader中的X-AspNetMvc-Version,Server,X-AspNet-Version,X-Powered-ByX-AspNetMvc-VersionServerX-AspNet-VersionX-Powered-By查看原文:移除ASP.NETMVC项目中,HTTP请求的Response…

  • 提升苹果电脑速度的10个小技巧[通俗易懂]

    提升苹果电脑速度的10个小技巧[通俗易懂]众所周知,随着时间的流逝,包括Mac在内的所有计算机的速度都会降低。除了换电脑,还是有许多简单的调整可以提高计算机的性能并加快运行速度较慢的Mac,而且这些调整不会花费一分钱。1.升级macOS许多人仍然相信操作系统升级的神话总是会降低计算机的速度。尽管有时它们在旧Mac可能会出现性能问题,但这些更新通常弊大于利。它们包括错误修复,修补程序和改进,这些改进通常会提高Mac的速度。这些操作系统更新文件可能很大。因此,如果硬盘驱动器空间不足,则可能需要先释放硬盘空间。2.释放硬盘空间当您的存储驱动器达到其

  • findstr 用法

    findstr 用法http://bathome.l3.wuyou.com/thread-11159-1-6.html/B在一行的开始配对模式。——只在行开头搜索。/E在一行的结尾配对模式。——只在行结尾搜索。/L按字使用搜索字符串。——具体不详,可以与/r参数替换测试。

    2022年10月26日
  • Vuex实践-mapState和mapGetters

    Vuex实践-mapState和mapGetters一.前言  本文章是vuex系列的最后一篇,主要总结的是如何使用mapState和mapGetters访问vuex中的state和getters。二.多个模块中mapState和mapGetters的使用  上一篇文章《Vuex实践(中)》里面我们总结的就是多模块的内容,所以关于store.js、moduleA.js和moduleB.js的代码保持不变。  在此为了方便观看,我将这…

  • 逻辑回归原理_逻辑回归分析

    逻辑回归原理_逻辑回归分析逻辑回归原理

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号