jdbc:oracle:thin:@apctcsol1.au.oracle.com:1521/pas_srv
In the example below we use some JRuby code to do the exact same thing. We are using the 11.2.0.2 Oracle JDBC Driver and an 11.2.0.2 RAC cluster as well.
JRuby Code
require 'java' require 'C:/jdev/jdcbdrivers/11.2/11202/ojdbc6.jar' java_import java.sql.Statement java_import java.sql.Connection java_import java.sql.SQLException java_import java.sql.DatabaseMetaData java_import 'oracle.jdbc.OracleDriver' java_import 'oracle.jdbc.pool.OracleDataSource' INSTANCE_SQL = <<EOF select sys_context('userenv', 'instance_name'), sys_context('userenv', 'server_host'), sys_context('userenv', 'service_name') from dual EOF class MyOracleDataSource def initialize(user, passwd, url) @user, @passwd, @url = user, passwd, url @ods = OracleDataSource.new @ods.set_user user @ods.set_password passwd @ods.set_url url end # add getters and setters for all attrributes we wish to expose attr_reader :user, :passwd, :url def get_connection() @ods.get_connection end def create_statement() @connection.create_statement end def to_s "OracleDataSource [user=#{@user}, passwd=#{@passwd}, " + "url=#{@url}]" end def self.create(user, passwd, url) ods = new(user, passwd, url) rescue puts "\n** Error occured **\n" puts "Failed executing SCAN Load Blance test from JRuby ", $!, "\n" end end user = "scott" passwd = "tiger" url = "jdbc:oracle:thin:@apctcsol1.au.oracle.com:1521/pas_srv" print "Run at #{Time.now} using JRuby #{RUBY_VERSION}\n\n" mods = MyOracleDataSource.create(user, passwd, url) # empty array conns = [] # obtain 5 connections for i in 1..5 conns[i] = mods.get_connection end # determine instance details for i in 1..5 if (i == 1) meta = conns[i].get_meta_data puts "=============\nDatabase Product Name is ... #{meta.getDatabaseProductName()}" puts "Database Product Version is #{meta.getDatabaseProductVersion()}" puts "=============\nJDBC Driver Name is ........ #{meta.getDriverName()}" puts "JDBC Driver Version is ..... #{meta.getDriverVersion()}" puts "JDBC Driver Major Version is #{meta.getDriverMajorVersion()}" puts "JDBC Driver Minor Version is #{meta.getDriverMinorVersion()}" puts "=============" end stmt = conns[i].create_statement rset = stmt.execute_query INSTANCE_SQL rset.next puts "Connection #{i} : instance [#{rset.get_string 1}], " + "host[#{rset.get_string 2}], service[#{rset.get_string 3}] " rset.close stmt.close end #close the 5 connections for i in 1..5 conns[i].close end print "\nEnded at #{Time.now}"
Output
C:\jdev\scripting\demos\jruby\jdbc\scan-load-balance-test>jruby scan-lbt.rb
Run at Mon Jan 31 14:28:11 +1100 2011 using JRuby 1.8.7
=============
Database Product Name is ... Oracle
Database Product Version is Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
=============
JDBC Driver Name is ........ Oracle JDBC driver
JDBC Driver Version is ..... 11.2.0.2.0
JDBC Driver Major Version is 11
JDBC Driver Minor Version is 2
=============
Connection 1 : instance [A12], host[auw2k4], service[pas_srv]
Connection 2 : instance [A11], host[auw2k3], service[pas_srv]
Connection 3 : instance [A12], host[auw2k4], service[pas_srv]
Connection 4 : instance [A11], host[auw2k3], service[pas_srv]
Connection 5 : instance [A12], host[auw2k4], service[pas_srv]
Ended at Mon Jan 31 14:28:12 +1100 2011