public final class DatabaseUtils
{
// private final static String JDBC_URL = "jdbc:oracle:thin:@localhost:1521:orcl";
private final static String JDBC_URL = "dbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = vip-db1)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = vip-db2)(PORT = 1521))(LOAD_BALANCE = yes)(failover = yes)(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = db) ) )";
private final static String JDBC_USER = "xxx";
private final static String JDBC_PASSWORD = "xxx";
private final static String JDBC_DRIVER = "oracle.jdbc.driver.OracleDriver";
// private static DataSource dataSource;
private static ComboPooledDataSource cpds;
static
{
try
{
cpds = new ComboPooledDataSource();
cpds.setDriverClass(JDBC_DRIVER);
cpds.setJdbcUrl(JDBC_URL);
cpds.setUser(JDBC_USER);
cpds.setPassword(JDBC_PASSWORD);
cpds.setMinPoolSize(5);
cpds.setAcquireIncrement(5);
cpds.setMaxPoolSize(20);
}
catch (Exception e)
{
e.printStackTrace();
System.exit(1);
}
}
/**
* @return 网络连接
* @throws SQLException
*/
public static Connection getConnection() throws SQLException
{
return cpds.getConnection();
}
}
-- 加上注释后的TNS连接串
jdbc:oracle:thin:@
(description=
(ADDRESS_LIST =
(address=(protocol=tcp)(host=192.168.1.44)(port=1521))
(address=(protocol=tcp)(host=192.168.1.45)(port=1521))
(address=(protocol=tcp)(host=192.168.1.46)(port=1521))
(load_balance=yes)//表示是否负载均衡
)
(connect_data =
//(server = dedicated)//该参数表示专用服务器模式
(service_name=ORACMS)//要操作数据库的服务名
(failover_mode =//连接失败后处理的方式
(type=session)//TYPE =SESSION表示当一个连接好的会话的实例发生故障,系统会自动将会话切换到其他可用的实例,前台应用无须再度发起连接,但会话正在执行的SQL 需要重新执行。
(method=basic)//表示初始连接就连接一个接点
(retries=5)//连接失败后重试连接的次数
(delay=15)//连接失败后重试的延迟时间(以秒为单位)
)
)
)
-- 要点说明
1、load_balance该参数值为yes就是采用负载均衡模式连接,为no就是采用非负载均衡模式
2、method该参数值为basic就是表示初始连接只有一个连接节点,为preconnect就是表示初始连接所有的rac接点
3、server 参数值 dedicated表示专用服务器模式,没什么实际用处,可以去掉