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

 

posted @ 2023-01-05 10:38  SolidMango  阅读(8526)  评论(0编辑  收藏  举报