前几天,去客户现场部署系统,WEBLOGIC连接数据库使用RAC方式连接,好几个人弄了一下午愣是没搞定,总是报SID错误
开始一致认为是防火墙的原因,后来SSH登陆应用服务器后,再TELNET数据库服务器,是可以登陆的,而且本机的PLSQL也是可以连接到数据库的,网络部给了我们3个IP
第一个172.19.180.40,实例名是wdbd,这是虚拟出来的IP,之后的两个是172.19.190.43,wdb1,172.19.180.44,wdb2这两个是实际的IP地址,我们用PLSQL连接40的IP是可以正常登陆的,但是登陆后边两个是不行的,是启用了负载均衡的原因吧。
第二天弄好了,连接字符串的问题,网上找了很多都不对,后来又试了下边这种,可以连接到了,
这几天,应用程序后台一直报无法取得连数据库接池。但之前从来没有这个问题,迁移到Weblogic后才发生。
之后据了解,我们服务器上的Oracle 10G 是 RAC 的,即有两个节点。
两个节点 IP及实例名分别为:
10.1.43.11 stnic1
10.1.43.21 stnic2
配置数据源时 一直使用的是第一个 URL 及 实例名,配置完后,连接URL为:
jdbc:oracle:thin:@10.1.43.11:1521:stnic1
Weblogic 中显示的是但之后根据和DBA 的交流 发现当ORACLE是RAC配置的时候,连接池的 URL及实例名 应该用另一种写法:
jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.43.11)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.43.21)(PORT=1521))(FAILOVER=on)(LOAD_BALANCE=on))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=stnic)))
修改完成后,即将连接数平均分布在2台RAC上,而不是和之前一样将负载 全部加到1台机器上。
查阅文档后发现,配置多数据源还有另一种方法,即先添加 11 及 21 2个数据源
然后进入weblogic后台 ,添加数据源中 选择 多数据源,之后选择已经添加的 2个数据源即可。(一般都与RAC一起使用)
查询当前数据名
方法一:select name from v$database;
方法二:show parameter db
方法三:查看参数文件。
方法一:select name from v$database;
方法二:show parameter db
方法三:查看参数文件。
查询当前数据库实例名
方法一:select instance_name from v$instance;
方法二:show parameter instance
方法三:在参数文件中查询。
方法一:select instance_name from v$instance;
方法二:show parameter instance
方法三:在参数文件中查询。
在一般情况下,数据库名和实例名是一对一的关系,但如果在oracle并行服务器架构(即oracle实时应用集群)中,数据库名和实例名是一对多的关系。
JDBC字符串中,配置的是实际的IP地址,不是虚拟出的IP地址。