Oracle 19C Data Guard基础运维-03 Failovers(物理)

来源:这里教程网 时间:2026-03-03 15:32:06 作者:

Oracle 19C Data Guard 基础运维 -0 3 Failovers( 物理 )

原主库

原备库

 

Failovers

新主库

独立库

192.168.31.90

192.168.31.100

192.168.31.100

192.168.31.90

cjcdb

chendb

chendb

cjcdb

Failover https://docs.oracle.com/en/database/oracle/oracle-database/19/sbydb/data-guard-concepts-and-administration.pdf Figure 9-4 Failover to a Standby Database  Performing a Failover to a Physical Standby Database   主库意外宕机,并无法启动 场景一:没有归档间隙,零数据丢失 主库模拟故障: 重命名system 数据文件 [oracle@cjcos01 CJCDB]$ pwd /u01/app/oracle/oradata/CJCDB [oracle@cjcos01 CJCDB]$ mv system01.dbf system01.dbf.bak SQL> alter system checkpoint; alter system checkpoint * ERROR at line 1: ORA-03113: end-of-file on communication channel Process ID: 5309 Session ID: 45 Serial number: 38130 备库日志: 2020-04-18T08:49:26.394680+08:00  rfs (PID:6276): Possible network disconnect with primary database 启动主库失败: SQL> startup ORACLE instance started. Total System Global Area 1375728192 bytes Fixed Size       9134656 bytes Variable Size    1107296256 bytes Database Buffers   251658240 bytes Redo Buffers       7639040 bytes Database mounted. ORA-01157: cannot identify/lock data file 1 - see DBWR trace file ORA-01110: data file 1: '/u01/app/oracle/oradata/CJCDB/system01.dbf' SQL> select status from v$instance; STATUS ------------ MOUNTED 备库:3.100 1. 检查 dg 恢复模式 SQL> select database_role,protection_level,protection_mode from v$database; DATABASE_ROLE  PROTECTION_LEVEL     PROTECTION_MODE ---------------- -------------------- -------------------- PHYSICAL STANDBY MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE 2 检查 archive_gap ( 没有 gap 说明备库执行 failovers 不会丢失数据 ) SQL> select thread#, low_sequence#, high_sequence# from v$archive_gap; no rows selected 检查没有归档gap后,最好在检查主从库归档日志是否完全同步,备库同步日志是否没有错误。 3 备库取消 DG 应用 ( 关闭 MRP) SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; Database altered. 4 备库执行 failover ---谨慎操作,确保数据已完全同步后再切换,避免切换后数据丢失。 SQL> ALTER DATABASE FAILOVER TO chendb; Database altered. 5 打开备库 SQL> select open_mode from v$database; OPEN_MODE -------------------- MOUNTED SQL> alter database open; Database altered. 6 新主库执行全备 7 新主库查看状态 SQL> select database_role,protection_level,protection_mode from v$database; DATABASE_ROLE  PROTECTION_LEVEL     PROTECTION_MODE ---------------- -------------------- -------------------- PRIMARY  MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE SQL> select switchover_status from v$database; SWITCHOVER_STATUS -------------------- FAILED DESTINATION SQL> insert into test1 select * from test1; 1  rows created. SQL> commit; Commit complete. 修复原主库 SQL> shutdown immediate [oracle@cjcos01 CJCDB]$ mv system01.dbf.bak system01.dbf SQL> startup ORACLE instance started. Total System Global Area 1375728192 bytes Fixed Size       9134656 bytes Variable Size    1107296256 bytes Database Buffers   251658240 bytes Redo Buffers       7639040 bytes Database mounted. Database opened. 此时原主库变成的一个独立的数据库,可以读写方式打开 SQL> select database_role,protection_level,protection_mode from v$database; DATABASE_ROLE  PROTECTION_LEVEL     PROTECTION_MODE ---------------- -------------------- -------------------- PRIMARY  MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE SQL> select open_mode from v$database; OPEN_MODE -------------------- READ WRITE 尝试将原主库切换为 physical standby SQL> alter database commit to switchover to physical standby with session shutdown; alter database commit to switchover to physical standby with session shutdown * ERROR at line 1: ORA-16416: No viable Physical Standby switchover targets available SQL> recover managed standby database using current logfile disconnect from session; ORA-01665: control file is not a standby control file 此时原故障主库变成了一个独立的数据库,若想恢复成现有主库的 Physical Standby ,可以通过现有主库的数据进行重新搭建,或通过原故障主库failovers 之前的备份,进行恢复,在通过现有主库进行 rman 增量追加数据。 欢迎关注我的微信公众号"IT小Chen",共同学习,共同成长!!!

相关推荐