问题描述
在建立ADG主从库时,有时会出现主从化身不一致的问题,导致从库只能同步日志,而无法对日志进行应用。
2025年8月9日,历经36个小时的同步,ADG终于是搭建好了。
2025年8月11日,发现从库停止了日志应用,并比主库多了一个化身
从库已经从READ ONLY WITH APPLY
变回了 READ ONLY
状态
查看当前数据库化身
list incarnation;

思路:
- 核对主从归档日志
- 通过主库重建控制文件
- 从库重新开启日志应用
解决步骤:
-
关闭从库
shutdown immediate;
-
检查归档日志,必须与主库一致
查看归档日志目录:
SHOW PARAMETER LOG_ARCHIVE_DEST;
这次我的归档日志就少了一个,需要从主库传一个下来
-
主库生成standby控制文件,并传输至备库
ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/standby_controlfile.ctl';
将生成的控制文件利用scp传输到备库
scp /tmp/standby_controlfile.ctl oracle@192.168.0.14:/home/app/oracle/12.2.0/oradata/bserpdbdgol/
-
备库修改配置文件
把从库原来的.ctl文件删掉
在配置文件中,把配置文件的路径也修改了
vim initbserpdb1.ora *.control_files='/home/app/oracle/12.2.0/oradata/bserpdbdgol/standby_controlfile.ctl'
-
备库利用配置文件启动到nomount状态
startup pfile='/home/app/oracle/12.2.0/db/dbs/initbserpdb1.ora' nomount;
-
切换从库为mount状态
alter database mount;
-
确认从库角色为STANDBY后开库
SQL> SELECT DATABASE_ROLE FROM V$DATABASE; DATABASE_ROLE ---------------- PHYSICAL STANDBY --启动MRP0日志应用 SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION; Database altered. --查看MRO0进程 SQL> SELECT PROCESS, STATUS, THREAD#, SEQUENCE#, BLOCK#, BLOCKS FROM V$MANAGED_STANDBY; PROCESS STATUS THREAD# SEQUENCE# BLOCK# BLOCKS --------- ------------ ---------- ---------- ---------- ---------- ARCH CLOSING 1 60284 151552 1798 DGRD ALLOCATED 0 0 0 0 DGRD ALLOCATED 0 0 0 0 ARCH CONNECTED 0 0 0 0 ARCH CONNECTED 0 0 0 0 ARCH CONNECTED 0 0 0 0 RFS IDLE 0 0 0 0 RFS RECEIVING 1 60283 176129 2048 RFS IDLE 0 0 0 0 MRP0 WAIT_FOR_GAP 1 60255 0 0 RFS RECEIVING 1 60255 63489 2048 11 rows selected. --查询数据库模式 SQL> select open_mode from v$database; OPEN_MODE -------------------- MOUNTED
-
从库模式切换
以上的步骤已经恢复了DG库的同步与日志应用,但却只能作为物理备库,无法提供查询服务
从库仅用于日志应用(不对外提供查询服务),**
MOUNTED
**是正常的运行模式需要从库同时支持日志应用和只读查询,则可将其切换为
READ ONLY WITH APPLY
模式--开库 alter database open; --查看模式 SQL> select open_mode from v$database; OPEN_MODE -------------------- READ ONLY --启动日志应用进程 SQL> alter database recover managed standby database disconnect; Database altered. --验证模式 SQL> select open_mode from v$database; OPEN_MODE -------------------- READ ONLY WITH APPLY --查看从库化身 RMAN> list incarnation; List of Database Incarnations DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time ------- ------- -------- ---------------- --- ---------- ---------- 1 1 BSERPDB1 3574684876 PARENT 1890391 022-01-20 12.47.23 2 2 BSERPDB1 3574684876 PARENT 9370202 022-03-15 09.34.13 3 3 BSERPDB1 3574684876 CURRENT 11641114 022-03-31 10.34.18