Oracle JDBC 连接的几种方式
Oracle JDBC 连接的几种方式
jdbc连接oracle rac数据库的写法:
1、方法之一
datasource.jdbcUrl=jdbc:oracle:thin:@//192.168.1.43:1521/orcl
注意是=号后面的内容。其中orcl是rac 数据库的service_name,
192.168.1.43是rac 的scan-ip地址。如果scan-ip的别名好用,就用别名。
此时要注意你的数据库账号/密码是可用的(别被锁了不知道)。
2、方法之二
datasource.jdbcUrl=jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.1.43)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)))
注意@后面的是参考tnsnames.ora的写法
3、方法之三
datasource.jdbcUrl=jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.43)(PORT=1521))(FAILOVER=on)(LOAD_BALANCE=off))(CONNECT_DATA= (SERVICE_NAME=orcl)))
-----------------------------------------------------------------
JDBC连接数据库的三种方式:
格式一:jdbc:oracle:thin:@//<host>:<port>/<service_name>
格式二:jdbc:oracle:thin:@<host>:<port>:<SID>
格式三:jdbc:oracle:thin:@<TNSName>
格式一是通过 SERVICE_NAME 连接Oracle数据库,适合于单实例和RAC
格式二是通过实例名SID连接数据库,RAC环境下实例名不唯一,不能充分利用数据库资源
格式三为通过本地配置的TNSNAME,支持RAC
-----------------------------------------------------------------
使用jdbc连接oracle时url有三种格式
格式一: Oracle JDBC Thin using an SID
url = "jdbc:oracle:thin:@ip:port:sid"
Example: jdbc:oracle:thin:@localhost:1521:orcl
这种格式是最简单也是用得最多的
你的oracle的sid可以通过一下指令获得:
sqlplus / as sysdba
select value from v$parameter where name=‘instance_name’;
格式二: Oracle JDBC Thin using a ServiceName
url = "jdbc:oracle:thin:@ip:port/servicename"
Example:jdbc:oracle:thin:@localhost:1521/orcl.city.com
注意这里的格式,port后面:换成了/,这种格式是Oracle 推荐的格式,因为对于集群来说,每个节点的SID 是不一样的,但是SERVICE_NAME 确可以包含所有节点。
你的oracle的service_name可以通过以下方式获得:
sqlplus / as sysdba
select value from v$parameter where name=‘service_names’;
格式三:Oracle JDBC Thin using a TNSName
jdbc:oracle:thin:@TNSName
Example: jdbc:oracle:thin:@TNS_ALIAS_NAME
jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL= TCP)(HOST=hostA)(PORT= 1522))(ADDRESS=(PROTOCOL=TCP)(HOST=your host)(PORT=1521)))(SOURCE_ROUTE=yes)(CONNECT_DATA=(SERVICE_NAME=your service_name)))
例如:
连接一个地址:
jdbc:oracle:thin:@(description=(address_list= (address=(host=192.168.60.132) (protocol=tcp)(port=1521)))(connect_data=(service_name= oratest)))
连接两个地址:
jdbc:oracle:thin:@(description=(address_list= (address=(host=192.168.60.132) (protocol=tcp)(port=1521))(address=(host=192.168.60.144)(protocol=tcp) (port=1521)) (load_balance=yes)(failover=yes))(connect_data=(service_name= oratest)))
注意:oracle做了负载均衡,不能直接通过ip去连接,需要用listener.ora的连接配置才能连接。
所以当连接oracle rac的虚拟IP时,因为要连接多个(连接多个oracle rac的VIP ip才会有HA的效果),所以格式1就无法满足条件,只能通过格式3来实现连接。
参考资料
https://blog.csdn.net/langliu/article/details/80847213
https://blog.csdn.net/wjzholmes/article/details/114870854
https://blog.csdn.net/liangpingguo/article/details/119726041