Oracle主从incarnation不一致问题解决
问题描述
在建立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 204811 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