使用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来实现连接。
参考文章: