DBAtlas · 数据库运维图谱

将 RAC 服务迁移到其他实例

OracleRAC 与 Grid

命令

# First check the current placement:
srvctl status service -db <db_unique_name> -service <service>
# Relocate by instance (sessions are drained):
srvctl relocate service -db <db_unique_name> -service <service> \
  -oldinst <inst1> -newinst <inst3> -drain_timeout 120 -wait YES
# By node (policy-managed / singleton service):
srvctl relocate service -db <db_unique_name> -service <service> \
  -currentnode <node1> -targetnode <node2>
# Session distribution per instance (SQL):
SELECT inst_id, service_name, COUNT(*) AS sessions
FROM   gv$session
WHERE  type = 'USER'
GROUP  BY inst_id, service_name
ORDER  BY service_name, inst_id;

作用

将正在运行的服务从一个实例/节点迁移到另一个;新连接进入目标实例,现有会话在 drain_timeout 期间自行关闭。

适用场景

维护前清空节点、故障转移后将服务迁回 preferred 实例,或重新平衡负载。

注意

迁移是临时的:不会改变服务配置(preferred/available);实例重启后服务会回到 preferred 实例。-force 会终止现有会话;如果应用无法重连,用户会遇到中断。

在 DBAtlas 中打开 →

相关内容