springboot配置数据库包括集群下 配置

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

查询当前数据库实例名
方法一: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

 

你可能感兴趣的:(springcloud)