首先准备数据库的必要信息。

查询当前数据库实例名

方法一:select instance_name from v$instance;

方法二:show parameter instance

查询数据库服务名

方法一:show parameter service_name

ora文件:

单实例的2中配法:

//通过SERVICE_NAME配置

SINGLE1 =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.22.1)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = db1)

)

)

//通过SID配置

SINGLE1 =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.22.1)(PORT = 1521))

(CONNECT_DATA =

(SID = db1)

)

)

//SERVICE_NAME (数据库服务名)和 SID(数据库实例名)是有区别的。

一般情况下,单实例,我们会把SERVICE_NAME (数据库服务名)和 SID(数据库实例名)写成一样的,

那么上面的2中配置就等效。

如果配置的不一样,或者在集群下,SID是有多个的,SERVICE_NAME用的是同一个。

即SERVICE_NAME: dbcommon

SID: db1,db2,db3......

那么上面的2中配置就不同了,我们一般用SERVICE_NAME那种配置。

oracle集群:

集群下,登录oracle用户,在plsql里改的数据,会自动同步,这就是集群。

你可以等一台机器,建一张表,然后登另一台,查这张表。

注意要加上用户名

例如 select * from scott.t_aaa;

所以ora的配置文件中有个LOAD_BALANCE=yes就是负载均衡,虽然是随机分发请求。

但是,无论访问哪个实例,最后的数据都是同步的。

根本原因就是集群是实例的集群,数据文件在底层都是同一个。

在集群下:

rac_group =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.22.1)(PORT = 1521))

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.22.2)(PORT = 1521))

)

(LOAD_BALANCE=yes)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = dbcommon)

)

)

yml文件:

spring:

datasource:

url: jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.22.1)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.22.2)(PORT=1521))(FAILOVER=on)(LOAD_BALANCE=on))(CONNECT_DATA=(SERVICE_NAME=dbcommon)))

username: test

password: Test@123

driver-class-name: oracle.jdbc.driver.OracleDriver

initialSize: 5

minIdle: 5

maxActive: 200

maxWait: 60000

如果,你在集群的oracle机器外又使用了浮动ip。

简单介绍下浮动ip的原理:

浮动ip即在你的应用服务器之外专门有一台机器做转发,对请求来说,只有一个ip。

这个浮动ip会按照一定的算法把请求转发到后面的任意一台机器上。

当应用有宕机的时候,就不会抓饭到宕机的机器上。

浮动ip原理介绍:

https://wenku.baidu.com/view/ed2b639b770bf78a6529546a.html

这个原理跟springcloud中的api网关很类似。

如果你的数据库也做了浮动ip,比如192.168.22.56 端口是 8888

那么在配置oracle集群时即可以这样配置一个ip:

rac =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.22.56)(PORT = 8888))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = dbcommon)

)

)

yml文件:

spring:

datasource:

url: jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.22.56)(PORT=8888))(FAILOVER=on)(LOAD_BALANCE=on))(CONNECT_DATA=(SERVICE_NAME=dbcommon)))

username: test

password: Test@123

driver-class-name: oracle.jdbc.driver.OracleDriver

initialSize: 5

minIdle: 5

maxActive: 200

maxWait: 60000

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐