0.前期准备

数据库版本、补丁、操作系统版本一样,ADG只需要安装数据库软件,不需要dbca创建库

备库ORACLE_HOME、ORACLE_SID路径和主库保持一致

主库 ADG-备库
IP

10.98.3.70

10.98.3.75
数据库版本 19.19.0.0.0 19.19.0.0.0
补丁

19.19_DB_p35042068

_190000_Linux-x86-64.zip

19.19_DB_p35042068

_190000_Linux-x86-64.zip

操作系统版本 Red Hat7.9 Red Hat8.8

备库hostname=wza01,oracle_sid=orcl,db_unique_name=orcl

备库hostname=wzabak,oracle_sid=orcldg,db_unique_name=orcldg

一、主库&备库环境准备

1、主库配置

1.1.主库更改hosts文件

vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6


#DG备库
10.98.3.75 wzabak

#主库
10.98.3.70 wza01

1.2.主库开启强日志&归档模式

select force_logging from v$database;
alter database force logging;

archive log list;


--如果主库没有开启归档是需要停机窗口开启归档的
sqlplus / as sysdba
shutdown immediate
startup mount
alter database archivelog;
alter database open

1.3.主库配置参数

查询数据文件位置:select name from v$datafile;

查询日志文件位置:select member from v$logfile;

DG_CONFIG主库和备库必须设置不同的名称,不区分大小写,

oracle_sid可以重复(因为是异机)fal_client=本机oracle_sid

DB_FILE_NAME_CONVERT=主库路径、备库路径

alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,orcldg)' scope=both sid='*';         
alter system set log_archive_dest_1='LOCATION=/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl' scope=spfile;
alter system set LOG_ARCHIVE_DEST_2='SERVICE=orcldg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcldg' scope=both sid='*';
alter system set fal_client='orcl' scope=both sid='*';    
alter system set FAL_SERVER='orcldg' scope=both sid='*';  
alter system set standby_file_management=AUTO scope=both sid='*';
alter system set DB_FILE_NAME_CONVERT='/data/orcl','/u01/app/oracle/oradata/orcldg/datafile' scope=spfile sid='*';  
alter system set LOG_FILE_NAME_CONVERT='/data/orcl','/u01/app/oracle/oradata/orcldg/onlinelog' scope=spfile sid='*';
alter system set log_archive_format='%t_%s_%r.arc' scope=spfile sid='*';
alter system set remote_login_passwordfile='EXCLUSIVE' scope=spfile;
alter system set PARALLEL_EXECUTION_MESSAGE_SIZE=8192 scope=spfile;
 
 
有scope=spfile的参数,需要重启数据库生效
(无停机窗口的时候可以不设置非必要的参数)

1.4.主库增加standby logfile日志组 

select GROUP#,BYTES/1024/1024 MB,STATUS from v$log;

    GROUP#         MB STATUS
---------- ---------- ----------------
         1        200 CURRENT
         2        200 INACTIVE
         3        200 INACTIVE
         4        200 CURRENT

备库比主库多一组redolog,大小一样,group最好从10开始,防止和主库冲突

alter database add standby logfile thread 1 group 11 '/u01/app/oracle/fast_recovery_area/redo11.log' size 200m;
alter database add standby logfile thread 1 group 12 '/u01/app/oracle/fast_recovery_area/redo12.log' size 200m;
alter database add standby logfile thread 1 group 13 '/u01/app/oracle/fast_recovery_area/redo13.log' size 200m;
alter database add standby logfile thread 2 group 14 '/u01/app/oracle/fast_recovery_area/redo14.log' size 200m;
alter database add standby logfile thread 2 group 15 '/u01/app/oracle/fast_recovery_area/redo15.log' size 200m;
alter database add standby logfile thread 2 group 16 '/u01/app/oracle/fast_recovery_area/redo16.log' size 200m;

1.5.主库修改tnsnames文件

cd $ORACLE_HOME/network/admin
vi tnsnames.ora


ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = wza-01)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

ORCLDG=
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = wzabak)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME= orcldg)
    )
  )

1.6.主库监听重启,确认监听状态

su - oracle
lsnrctl stop
lsnrctl start
lsnrctl status


[oracle@wza01]$ lsnrctl status

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 17-APR-2025 15:55:29

Copyright (c) 1991, 2023, Oracle.  All rights reserved.

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))

STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date                14-APR-2025 10:14:49
Uptime                    3 days 5 hr. 40 min. 40 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/19c/grid/network/admin/listener.ora
Listener Log File         /u01/app/grid/diag/tnslsnr/wza01/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.98.3.70)(PORT=1521)))
Services Summary...
Service "orcl" has 1 instance(s).
  Instance "orcl1", status READY, has 1 handler(s) for this service...
The command completed successfully

2、备库配置

 2.1.备库更改hosts文件,和主库内容相同

su - root
vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6


#DG备库
10.98.3.75 wzabak

#主库
10.98.3.70 wza01

 2.2.备库更改Oracle用户环境变量

[oracle@wzabak ~]$ pwd
/home/oracle
[oracle@wzabak ~]$ cat .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH

export EDITOR=vi
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=orcldg
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19c/db_1
export INVENTORY_LOCATION=/u01/oraInventory
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
export PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:$PATH:$HOME/bin

2.3.备库修改tnsnames文件,和主库内容相同

cd $ORACLE_HOME/network/admin
vi tnsnames.ora


ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = wza-01)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

ORCLDG=
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = wzabak)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME= orcldg)
    )
  )

2.4.备库修改listener.ora文件

cd $ORACLE_HOME/network/admin
vi listener.ora

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.98.3.75)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = /u01/app/oracle/product/19c/db_1)
      (SID_NAME = orcl)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = orcldg)
      (ORACLE_HOME = /u01/app/oracle/product/19c/db_1)
      (SID_NAME = orcldg)
    )
  )

2.5.备库监听重启,确认监听状态

su - oracle
lsnrctl stop
lsnrctl start
lsnrctl status


[oracle@wzabak]$ lsnrctl status

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 16-APR-2025 17:25:01

Copyright (c) 1991, 2023, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.98.3.75)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date                16-APR-2025 17:14:50
Uptime                    0 days 0 hr. 10 min. 10 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/19c/db_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/wzabak/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.98.3.75)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "orcl" has 1 instance(s).
  Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
Service "orcldg" has 1 instance(s).
  Instance "orcldg", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

3、复制密码文件到备库

注意:duplicate需要确保主备库的数据库密码&用户名一致,pfile(init*.ora)文件名一致

3.1.主库重新生成密码文件

密码文件名称=orapw{主库ORACLE_SID}

密码需要满足复杂度,至少8位,有一个特殊字符,包含字母和数字

spfile同路径下可以找到密码文件的位置
SQL> show parameter spfile;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      /data/ORCL/PARAMETERFILE/spfil
                                                 e.276.1191232127

su - grid
orapwd file=$ORACLE_HOME/dbs/orapworcl password=dba_12345 force=y

3.2.复制密码文件到备库

备库的路径不可以用$ORACLE_HOME代替,除非主备库的ORACLE_HOME一模一样

scp $ORACLE_HOME/dbs/orapworcl oracle@wzabak:/u01/app/oracle/product/19c/db_1/dbs/
备库:
cd /u01/app/oracle/product/19c/db_1/dbs/
cp orapworcl orapworcldg

4、备库修改参数文件

备库的参数文件名称=init{主库ORACLE_SID}.ora,备库启动&主库duplicate的时候读取此文件

文件修改完毕之后复制一份,=init{备库ORACLE_SID}.ora,搭建完成之后读取此文件

主库:
create pfile from spfile
cd $ORACLE_HOME/dbs
scp $ORACLE_HOME/dbs/initorcl.ora oracle@wzabak:/u01/app/oracle/product/19c/db_1/dbs/
备库:
cp initorcl.ora initorcldg.ora

4.1.修改参数文件

enable_pluggable_database=true,备库开启PDB模式,这个是可选项

su - oracle
vi /u01/app/oracle/product/19c/db_1/dbs/initorcl.ora

*.audit_file_dest='/u01/app/oracle/audit'
*.audit_trail='db'
*.compatible='19.19.0.0'
*.control_files='/u01/app/oracle/oradata/orcldg/control01.ctl','/u01/app/oracle/oradata/orcldg/control02.ctl'
*.db_block_size=8192
*.db_create_file_dest='/u01/app/oracle/oradata/orcldg'
*.db_name='orcl'
*.diagnostic_dest='/u01/app/oracle/diag/rdbms'
*.db_unique_name='orcldg'
*.dispatchers=''
*.fal_client='orcldg'
*.fal_server='orcl'
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,orcldg)'
*.log_archive_dest_1='LOCATION=/u01/app/oracle/fast_recovery_area VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcldg'
*.LOG_ARCHIVE_DEST_2='SERVICE=orcl LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl'
*.log_archive_format='%t_%s_%r.arc'
*.LOG_FILE_NAME_CONVERT='+DATA/orcl','/u01/app/oracle/oradata/orcldg/onlinelog'
*.DB_FILE_NAME_CONVERT='+DATA/orcl','/u01/app/oracle/oradata/orcldg/datefile'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.parallel_execution_message_size=8192
*.pga_aggregate_target=1006m
*.processes=320
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=3018m
*.standby_file_management='AUTO'
*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=5242880
*.enable_pluggable_database=true
*.service_names='orcl','orcldg'
log_archive_dest_state_1='ENABLE'
log_archive_dest_state_2='ENABLE'

4.2.根据参数文件,在备库创建目录

su - oracle
mkdir -p /u01/app/oracle/oradata/orcldg/onlinelog
mkdir -p /u01/app/oracle/oradata/orcldg/datafile
mkdir -p /u01/app/oracle/oradata/orcldg/
mkdir -p /u01/app/oracle/diag/rdbms/
mkdir -p /u01/app/oracle/audit
mkdir -p /u01/app/oracle/fast_recovery_area

二、主备库数据同步

1、备库启动至unmount

[oracle@wzabak ]$ sqlplus / as sysdba
SQL> startup nomount;
ORACLE instance started.

Total System Global Area 3170891368 bytes
Fixed Size                  9168488 bytes
Variable Size             637534208 bytes
Database Buffers         2516582400 bytes
Redo Buffers                7606272 bytes

SQL> select status from v$instance;

STATUS
------------------------------------
STARTED

2、主库使用RMAN进行在线auxiliary克隆

2.1rman登录主库和备库

主备库的数据库登录用户名和密码必须相同

[oracle@wza01:/home/oracle]$ rman target sys/dba_12345@orcl auxiliary sys/dba_12345@orcldg
Recovery Manager: Release 19.0.0.0.0 - Production on Wed Apr 16 17:30:39 2025
Version 19.19.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

connected to target database: ORCL (DBID=1719012227)
connected to auxiliary database: ORCL (not mounted)

RMAN> 

2.2duplicate复制

run
{ 
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate channel c4 type disk;
allocate channel c5 type disk;
allocate channel c6 type disk;
allocate AUXILIARY channel c7 type disk;
allocate AUXILIARY channel c8 type disk;
allocate AUXILIARY channel c9 type disk;
allocate AUXILIARY channel c10 type disk;
allocate AUXILIARY channel c11 type disk;
allocate AUXILIARY channel c12 type disk;
DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER NOFILENAMECHECK;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
release channel c5;
release channel c6;
release channel c7;
release channel c8;
release channel c9;
release channel c10;
release channel c11;
release channel c12;
}

2.3复制成功,此时备库应为mounted状态。以下为示例log

Starting restore at 18-JUL-26                                                                                                                          
                                                                                                                                                       
channel aux1: starting archived log restore to default destination                                                                                     
channel aux1: using network backup set from service orcl                                                                                               
channel aux1: restoring archived log                                                                                                                   
archived log thread=1 sequence=96993                                                                                                                   
channel aux2: starting archived log restore to default destination                                                                                     
channel aux2: using network backup set from service orcl                                                                                               
channel aux2: restoring archived log                                                                                                                   
archived log thread=1 sequence=96994                                                                                                                   
channel aux3: starting archived log restore to default destination                                                                                     
channel aux3: using network backup set from service orcl                                                                                               
channel aux3: restoring archived log                                                                                                                   
archived log thread=1 sequence=96995                                                                                                                   
channel aux1: restore complete, elapsed time: 00:00:00                                                                                                 
channel aux2: restore complete, elapsed time: 00:00:01                                                                                                 
channel aux3: restore complete, elapsed time: 00:00:01                                                                                                 
Finished restore at 18-JUL-26   

Starting recover at 18-JUL-26    
Starting recover at 18-JUL-26                                                                                                                          
                                                                                                                                                       
starting media recovery                                                                                                                                
                                                                                                                                                       
archived log for thread 1 with sequence 96993 is already on disk as file /data/app/oracle/archivelog1_96993_1204799200.dbf                             
archived log for thread 1 with sequence 96994 is already on disk as file /data/app/oracle/archivelog1_96994_1204799200.dbf                             
archived log for thread 1 with sequence 96995 is already on disk as file /data/app/oracle/archivelog1_96995_1204799200.dbf                             
archived log file name=/data/app/oracle/archivelog1_96993_1204799200.dbf thread=1 sequence=96993   
archived log for thread 1 with sequence 96995 is already on disk as file /data/app/oracle/archivelog1_96995_1204799200.dbf                             
archived log file name=/data/app/oracle/archivelog1_96993_1204799200.dbf thread=1 sequence=96993                                                       
archived log file name=/data/app/oracle/archivelog1_96994_1204799200.dbf thread=1 sequence=96994                                                       
archived log file name=/data/app/oracle/archivelog1_96995_1204799200.dbf thread=1 sequence=96995                                                       
media recovery complete, elapsed time: 00:00:02                                                                                                        
Finished recover at 18-JUL-26    

Deleted 1 objects                                                                                                                                      
                                                                                                                                                       
deleted archived log                                                                                                                                   
archived log file name=/data/app/oracle/archivelog1_96994_1204799200.dbf RECID=3 STAMP=1238945222                                                      
Deleted 1 objects                                                                                                                                      
                                                                                                                                                       
Finished Duplicate Db at 18-JUL-26                                                                                                                     
                                                                                                                                                       
released channel: c1                                                                                                                                   
                                                                                                                                                       
released channel: c2                                                                                                                                   
                                                                                                                                                       
released channel: c3                                                                                                                                   
                                                                                                                                                       
released channel: c4                                                                                                                                   
                                                                                                                                                       
released channel: aux1                                                                                                                                 
                                                                                                                                                       
released channel: aux2                                                                                                                                 
                                                                                                                                                       
released channel: aux3                                                                                                                                 
                                                                                                                                                       
released channel: aux4 

3、备库启动至open

alter database recover managed standby database using current logfile disconnect;

该命令用于启动备用数据库的恢复管理进程,让备用数据库开始接收并应用主数据库传输过来的重做日志(Redo Log),以此保持与主数据库的数据同步。同时,disconnect 选项允许在启动恢复进程后,当前的 SQL 会话与恢复进程断开连接,这样你可以继续使用该会话执行其他操作,而恢复进程会在后台持续运行

SQL> alter database open;

Database altered.

SQL> select open_mode from v$database;

OPEN_MODE
--------------------
READ ONLY

SQL> alter database recover managed standby database using current logfile disconnect;

Database altered.

SQL> select open_mode from v$database;

OPEN_MODE
--------------------
READ ONLY WITH APPLY

SQL> select status from v$instance;

STATUS
------------
OPEN

4、在备库确认物理备库搭建成功,进程正常运行

SQL> select process,client_process,sequence#, THREAD# ,status from v$managed_standby;

PROCESS   CLIENT_P  SEQUENCE#    THREAD# STATUS
--------- -------- ---------- ---------- ------------
ARCH      ARCH              0          0 CONNECTED
DGRD      N/A               0          0 ALLOCATED
DGRD      N/A               0          0 ALLOCATED
ARCH      ARCH              0          0 CONNECTED
ARCH      ARCH              0          0 CONNECTED
ARCH      ARCH              0          0 CONNECTED
RFS       Archival          0          1 IDLE
RFS       LGWR            177          1 IDLE
MRP0      N/A             170          2 WAIT_FOR_LOG
RFS       UNKNOWN           0          0 IDLE


10 rows selected.

SQL> select database_role,protection_mode,protection_level,open_mode from v$database;

DATABASE_ROLE    PROTECTION_MODE      PROTECTION_LEVEL     OPEN_MODE
---------------- -------------------- -------------------- --------------------
PHYSICAL STANDBY MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE  READ ONLY WITH APPLY

SQL> SELECT sequence#, thread#, first_time FROM V$ARCHIVED_LOG ORDER BY sequence#;

 SEQUENCE#    THREAD# FIRST_TIME
---------- ---------- -------------------
       167          2 2025-04-25 10:52:31
       168          2 2025-04-25 10:59:08
       169          2 2025-04-25 10:59:26
       169          2 2025-04-25 10:59:26
       175          1 2025-04-25 10:59:06
       176          1 2025-04-25 10:59:26

6 rows selected.

SQL> select group#,thread#,sequence#,archived,status from v$standby_log;

    GROUP#    THREAD#  SEQUENCE# ARC STATUS
---------- ---------- ---------- --- ----------
        11          1          0 NO  UNASSIGNED
        12          1          0 NO  UNASSIGNED
        13          1        177 YES ACTIVE
        14          2          0 YES UNASSIGNED
        15          2          0 YES UNASSIGNED
        16          2          0 YES UNASSIGNED

6 rows selected.

三、主备库角色切换

0.应用停止向数据库写入,因为主备切换有段时间停止窗口

1.在主库检查 Switchover 状态

SELECT SWITCHOVER_STATUS FROM V$DATABASE;
-- 预期:返回 TO STANDBY 或 SESSIONS ACTIVE 才能继续

检查主库状态(必须在主库执行)
SELECT DATABASE_ROLE, OPEN_MODE FROM V$DATABASE;
-- 预期:PRIMARY  READ WRITE

检查主库是否有活动会话(建议切换前先踢掉应用连接)
SELECT COUNT(*) FROM V$SESSION WHERE USERNAME IS NOT NULL;

在主、备库执行,确认最后归档已应用
SELECT MAX(SEQUENCE#) FROM V$ARCHIVED_LOG WHERE APPLIED='YES';

在备库确认同步状态
SELECT PROCESS, STATUS, SEQUENCE# FROM V$MANAGED_STANDBY WHERE PROCESS='MRP0';
-- MRP0 状态应为 APPLYING_LOG,SEQUENCE# 应与主库一致

2.主库执行 Switchover 切换,状态变为备库

-- 在主库执行,将主库转为备库角色
ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;

-- 切换完成后,主库会进入 MOUNT 状态
-- 然后关闭并启动到备库模式
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;

3.在备库执行 Switchover 切换

-- 在备库(当前是 READ ONLY WITH APPLY)执行
-- 先取消日志应用
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

-- 切换为新主库
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;

-- 打开新主库
ALTER DATABASE OPEN;

4.验证新主库状态

-- 在新主库(原备库)上执行
SELECT DATABASE_ROLE, OPEN_MODE FROM V$DATABASE;

DATABASE_ROLE    OPEN_MODE
---------------- ------------
PRIMARY          READ WRITE

5.在新备库(原主库)启动日志应用,如果这个新的备库准备废弃可以不做,直接关机

-- 在原主库(现在是新备库)上执行
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

6.验证ADG同步

-- 在新主库(原备库)上查询
SELECT THREAD#, SEQUENCE#, FIRST_TIME, LAST_TIME FROM V$ARCHIVED_LOG WHERE APPLIED='YES' ORDER BY SEQUENCE# DESC FETCH FIRST 3 ROWS ONLY;

-- 在新备库(原主库)上查询
SELECT PROCESS, STATUS, SEQUENCE# FROM V$MANAGED_STANDBY WHERE PROCESS='MRP0';

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐