首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >从需求看懂Oracle RAC多租户环境的Service

从需求看懂Oracle RAC多租户环境的Service

作者头像
胖头鱼的鱼缸
发布2026-07-02 14:14:04
发布2026-07-02 14:14:04
1010
举报

数据库管理-第352期 从需求看懂Oracle RAC多租户环境的Service(20250729)

胖头鱼的鱼缸4_01.png
胖头鱼的鱼缸4_01.png

在最早写的几篇文章中,我写过在Oracle RAC多租户环境下如何配置Service,由于是刚刚开始写,写的不咋滴,回头看我感觉自己都有点看不明白,今天花一篇文章用实际需求(案例)来讲清楚RAC下常用的Service配置。

1 环境说明

这里说一下基本环境:

  • 版本为19c
  • 4节点RAC
  • 数据库名称问racdb
  • 实例名分别为racdb1、racdb2、racdb3、racdb4
  • rac1-3用于生产,rac4用于基本测试

2 srvctl

在Oracle RAC多租户环境下配置Service,我们需要在oracle用户下使用srvctl命令来添加Service,可以通过下面方式来获取命令帮助:

代码语言:javascript
复制
srvctl add service -help
WPS拼图0.png
WPS拼图0.png

3 需求与解决

3.1 需要一个测试库Service

创建一个运行在racdb4实例上的测试PDB的Service

PDB名称

Service名称

常驻实例

可用实例

pdb_test

testdb

racdb4

-

代码语言:javascript
复制
srvctl add service -db racdb -pdb pdb_test -s testdb -preferred racdb4
srvctl start service -db racdb -s testdb
# 可以通过下面命令来查看Service运行与配置情况
srvctl config service -db racdb -s testdb
image.png
image.png

这时候可以通过下面的连接字符串访问到对应数据库:

代码语言:javascript
复制
scan_ip:1521/testdb

3.2 创建生产数据库Service

创建一个常驻运行在racdb1实例上的数据库Service,在racdb1出现异常时,racdb2可以接管该Service

PDB名称

Service名称

常驻实例

可用实例

pdb_test

db1

racdb1

racdb2

代码语言:javascript
复制
srvctl add service -db racdb -pdb pdb_test -s db1 -preferred racdb1 -available racdb2
srvctl start service -db racdb -s db1
image.png
image.png

这时候可以通过下面的连接字符串访问到对应数据库:

代码语言:javascript
复制
scan_ip:1521/db1
在此基础上增加session级别失败转移

常驻实例出现异常时,整个会话会被转移到可用实例执行

代码语言:javascript
复制
srvctl modify service -db racdb -s db1 -failovertype session
image.png
image.png
再加上失败转移恢复后回切至原实例

racdb1出现异常恢复后,运行在racdb2上的Service将回到racdb1上运行

代码语言:javascript
复制
srvctl modify service -db racdb -s db1 -failback YES
image.png
image.png
调整为TRANSACTION级别失败转移

常驻实例出现异常时,整个事务会被转移到可用实例执行

代码语言:javascript
复制
srvctl modify service -db racdb -s db1 -failovertype transaction -commit_outcome true
image.png
image.png
添加一个常驻实例
代码语言:javascript
复制
srvctl modify service -db racdb -s db1 -modifyconfig -preferred racdb1,racdb3  -available racdb2

修改完成后,服务不会在新添加的实例上运行,需要手工启动。

image.png
image.png
image.png
image.png

3.3 创建一个备库Service

默认创建的Service的角色是PRIMARY。在ADG环境中,当主备角色切换后角色变更为PHYSICAL_STANDBY启动的Service

PDB名称

Service名称

常驻实例

可用实例

pdb_test

db1_ro

racdb1

racdb2

代码语言:javascript
复制
srvctl add service -db racdb -pdb pdb_test -s db1_ro -preferred racdb1 -available racdb2 -role physical_standby
image.png
image.png

当数据库以PHYSICAL_STANDBY角色启动后可以通过下面的连接字符串访问到对应数据库:

代码语言:javascript
复制
scan_ip:1521/db1_ro

总结

本期通过实际需求与案例介绍了Oracle RAC多租户环境的Service。 老规矩知道写了些啥。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-07-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 胖头鱼的鱼缸 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据库管理-第352期 从需求看懂Oracle RAC多租户环境的Service(20250729)
    • 1 环境说明
    • 2 srvctl
    • 3 需求与解决
      • 3.1 需要一个测试库Service
      • 3.2 创建生产数据库Service
      • 3.3 创建一个备库Service
    • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档