19c CDB Physical Standby增量恢复遇到RMAN-00600 [5041]

19c CDB Physical Standby增量恢复遇到RMAN-00600 [5041]

1.现象

Standby:
SQL> select to_char(current_scn) from v$database;
20712091

# 取消日志应用

DGMGRL> connect sys@czhstd as sysdba
Password:
Connected to "czhstd"
Connected as SYSDBA.
DGMGRL> show database czhstd;
Database - czhstd
  Role:               PHYSICAL STANDBY
  Intended State:     APPLY-ON
  Transport Lag:      0 seconds (computed 0 seconds ago)
  Apply Lag:          0 seconds (computed 0 seconds ago)
  Average Apply Rate: 0 Byte/s
  Real Time Query:    ON
  Instance(s):
    czhstd
Database Status:
SUCCESS
DGMGRL> EDIT DATABASE czhstd SET STATE = 'APPLY-OFF';

Primary:

RMAN> BACKUP INCREMENTAL FROM SCN 20712091 DATABASE FORMAT '/tmp/ForStandby_%U' tag 'FORSTANDBY';
scp /tmp/ForStandby* standby:/tmp

Standby:

RMAN> catalog start with '/tmp/';
RMAN> recover database noredo;
RMAN-00600: internal error, arguments [5041] [2] [16813038] [20712091] []

2.原因

Recover Database noredo Is Failing with (RMAN-00600: internal error, arguments [5041]) while performing roll forward of Physical standby (Doc ID 2319557.1)

# 附件有该文档

Recover Database noredo Is Failing with (RMAN-00600 internal error, arguments [5041]) while performing roll forward of Physical standby (Doc ID 2319557.1).pdf

Format: RMAN-00600 [5041] [a] [b] [c] [d]

Error  [5041]

Arg [a] File Number

Arg [b] scn in the file header

Arg [c] backup scn (used in from scn clause)

failure is because b < c

大概意思是,有数据文件头SCN低于增量备份from scn,导致无法应用增量备份,很奇怪,以前11g版本查出来scn直接就可以增量备份恢复了,下面开始排查。

3.解决

3.1 查询是否是有数据文件SCN低于增量恢复的SCN

select hxfil FILENUMBER,con_id, fhsta STATUS, fhscn SCN, fhrba_seq SEQUENCE,fhafs,FHDBI,fhdbn,fhtnm from x$kcvfh order by fhsta;
16813038

# 查到有一个PDB$SEED的种子PDB的数据文件低于增量备份SCN,查看主库PDB$SEED的数据文件SCN,

# 也高于目标端,需要根据最低SCN再次增量备份才能正常恢复。

3.2 再次恢复

Primary:

RMAN> BACKUP INCREMENTAL FROM SCN 16813038 DATABASE FORMAT '/tmp/ForStandby_%U' tag 'FORSTANDBY';
scp /tmp/ForStandby* standby:/tmp

Standby:

RMAN> catalog start with '/tmp/';
RMAN> recover database noredo;

3.3 恢复standby controlfile

Primary:

RMAN> backup current controlfile for standby format '/tmp/ctl_std.bak';
$ scp /tmp/ctl.std.bak bak:/tmp/

Standby:

RMAN> shutdown immediate;
RMAN> startup nomount;
RMAN> restore controlfile from '/tmp/ctl_std.bak';
RMAN> report schema;

  # 检查是否有数据文件size为0,如果有检查是否在正确位置,如果数据文件均0或个别为0,则使用catalog start with手工注册备库正确的数据文件位置,

# 然后switch database/datafile to copy切换到正确位置。


tempfile位置不正确,备库需要手工处理。

(1)db_file_name_convert参数未正确设置

主库的tempfile在备库db_file_name_convert设置正确可以转换以及db_create_file_dest设置启用OMF时,可以在打开数据库时自动创建,

如果未正确创建,调整参数,重启备库会再次创建。

(2)主库新增加的tempfile是无法在备库正确创建的,需要手工增加。

ALTER TABLESPACE TEMP ADD TEMPFILE 'path' size n;

(3)如果备库无法正确创建tempfile,需要手工处理

 # alter tablespace temp add tempfile 'path' size n;
 # alter database tempfile 'path' drop including datafiles;



请使用浏览器的分享功能分享到微信等