ORACLE PDB Failover 方案

来源:这里教程网 时间:2026-03-03 18:31:38 作者:

 

第一部分 PDB Failover 方案

1.1 Failover pdb

12.2 之后的版本支持PDB 级别failover

方案流程:

1 、主库故障

2 、检查 GDS 服务

3 Broker 检查

4 PDB 物理备份

5 PDB Failover

6 、检查辅助 BROKER 环境

7 GDS 创建和启动服务

8 、删除 PDB

9 PDB 还原主环境!

 

1.   登陆主库,模拟 PDB 故障

SQL> alter pluggable database frankpdb close abort instances=all;

 

2.   登陆备库,检查 Broker 状态

DGMGRL> show configuration verbose

 

Configuration - dg_config

 

  Protection Mode: MaxPerformance

  Members:

  frankdb   - Primary database

    frankdbfs - Far sync instance

      frankdbdg - Physical standby database

    frankdbdg - Physical standby database (alternate of frankdbfs)

 

  Properties:

    FastStartFailoverThreshold      = '30'

    OperationTimeout                = '30'

    TraceLevel                      = 'USER'

    FastStartFailoverLagLimit       = '30'

    CommunicationTimeout            = '180'

    ObserverReconnect               = '0'

    FastStartFailoverAutoReinstate  = 'TRUE'

    FastStartFailoverPmyShutdown    = 'TRUE'

    BystandersFollowRoleChange      = 'ALL'

    ObserverOverride                = 'FALSE'

    ExternalDestination1            = ''

    ExternalDestination2            = ''

    PrimaryLostWriteAction          = 'CONTINUE'

    ConfigurationWideServiceName    = 'frankdb_CFG'

 

Fast-Start Failover: DISABLED

 

Configuration Status:

SUCCESS

 

3.   登陆备库,执行 PDB failover

# su - oracle

$ sqlplus sys/xxxx@" 备库hostname1-vip:1521/frankdbfl" as sysdba;

SQL> select status from v$instance;

 

 

$ dgmgrl sys@cmddbdg as sysdba;

DGMGRL> migrate pluggable database frankpdb to container frankdb using '/tmp/frankpdb.xml' connect as sys/xxxx@" 备库hostname1-vip:1521/frankdbfl"

 

4.   GDS 重建服务

删除服务:

GDSCTL> remove service -gdspool frankdbpool -service frankpdb_s1,frankpdb_s2

 

添加服务:

GDSCTL> add service -gdspool frankdbpool -service frankpdb_s1 -pdbname frankpdb -preferred frankdbfl -role primary

GDSCTL> add service -gdspool frankdbpool -service frankpdb_s2 -pdbname frankpdb -preferred frankdbfl -role primary

 

修改服务:

GDSCTL> modify service -gdspool frankdbpool -service frankpdb_s1 -database frankdbfl -add_instances  -preferred frankdbfl1,frankdbfl2

GDSCTL> modify service -gdspool frankdbpool -service frankpdb_s2 -database frankdbfl -add_instances  -preferred frankdbfl1,frankdbfl2

 

启动服务:

GDSCTL> start service -gdspool frankdbpool -service frankpdb_s1

 

5.        登陆备库,备份PDB

 

6.        如果需要将PDB 切换回原先的主库,参考章节“3.2     Relocate PDB

 

参考:

How to relocate a PDB from one CDB to another with minimal down time -12.2 Release (Doc ID 2396518.1)

Data Guard Impact on Oracle Multitenant Environments (Doc ID 2049127.1)

PDB Failover in a Data Guard environment: Using Data Guard Broker to Unplug a Single Failed PDB from a Standby Database and Plugging into a New Container or Migrate a Single PDB into a New Container (Doc ID 2088201.1)

 

相关推荐