暂无图片
oracle 12c recover standby using service方式恢复gap报错
我来答
分享
XM.
2022-01-10
oracle 12c recover standby using service方式恢复gap报错

怎么解决一下恢复报错的问题

RMAN> alter database mount;

Statement processed
released channel: ORA_DISK_1

RMAN> select file# from v$datafile where creation_change# > =2069803;

FILE#
----------
22

RMAN> run
2> {
3> SET NEWNAME FOR DATABASE TO '/app/oracle/oradata/crds3dbdg/%f_%U';
4> RESTORE DATAFILE 22 FROM SERVICE crds3db;
5> }

executing command: SET NEWNAME

Starting restore at 2022-01-10 18:09:48
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=45 device type=DISK

channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: using network backup set from service crds3db
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00022 to /app/oracle/oradata/crds3dbdg/22_data_D-CRDS3DB_TS-DG_TEST_FNO-22
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 2022-01-10 18:09:50

RMAN>

RMAN>

RMAN> catalog start with '/app/oracle/oradata/crds3dbdg';

searching for all files that match the pattern /app/oracle/oradata/crds3dbdg
no files found to be unknown to the database

RMAN> SWITCH DATABASE TO COPY;

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of switch to copy command at 01/10/2022 18:12:15
RMAN-06571: datafile 1 does not have recoverable copy

我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
Lucifer三思而后行
暂无图片

可以参考如下步骤:

12C新特性修复

首先,模拟备库断电,主库切几个最新的归档,然后手工删掉,重新开启DG同步。

模拟GAP期间,有数据文件添加的情况:

##主库添加数据文件 alter tablespace TEST add datafile '/oradata/ORCL/test02.dbf' size 100M autoextend off;
复制

📢 注意: 当前DG数据库已存在GAP,GAP日志为:30—31 。

a.记录备库当前SCN号

备库记录当前 scn 号:

sqlplus / as sysdba SELECT CURRENT_SCN FROM V$DATABASE; CURRENT_SCN ----------- 2600487
复制

b.使用recover standby using service恢复

采用rman的新功能,recover standby using service,通过RMAN连接到target备库,然后用主库的service执行恢复备库命令。

语法:

RECOVER DATABASE FROM SERVICE < PRIMARY DB SERVICE NAME > NOREDO USING COMPRESSED BACKUPSET;

📢 注意: 确认主库的TNS已配置,这里的< PRIMARY DB SERVICE NAME >即 TNSNAME。

c.备库启动到nomount状态,恢复控制文件

备库启动到nomount状态:

sqlplus / as sysdba shutdown immediate startup nomount
复制

备库通过from service恢复控制文件:

rman target / restore standby controlfile from service orcl;
复制

备库开启到mount状态:

sqlplus / as sysdba alter database mount;
复制

d.备库恢复,修复GAP

检查主备GAP期间是否添加数据文件:

sqlplus / as sysdba select file# from v$datafile where creation_change# > =2600487; FILE# ---------- 13
复制

restore 新添加的数据文件:

rman target / run { SET NEWNAME FOR DATABASE TO '/oradata/ORCL_STBY/%f_%U'; RESTORE DATAFILE 13 FROM SERVICE orcl; }
复制

由于主备的数据文件目录不一致,需要修改controlfile中数据文件位置:

rman target / catalog start with '/oradata/ORCL_STBY'; YES SWITCH DATABASE TO COPY;
复制

将备库文件管理方式改为手动:

sqlplus / as sysdba alter system set standby_file_management=MANUAL;
复制

重命名 tempfile && logfile:

sqlplus / as sysdba ##logfile alter database clear logfile group 1; alter database clear logfile group 2; alter database clear logfile group 3; alter database clear logfile group 4; alter database clear logfile group 5; alter database clear logfile group 6; alter database clear logfile group 7; alter database rename file '/oradata/ORCL/redo03.log' to '/oradata/ORCL_STBY/redo03.log'; alter database rename file '/oradata/ORCL/redo02.log' to '/oradata/ORCL_STBY/redo02.log'; alter database rename file '/oradata/ORCL/redo01.log' to '/oradata/ORCL_STBY/redo01.log'; alter database rename file '/oradata/ORCL/standby_redo04.log' to '/oradata/ORCL_STBY/standby_redo04.log'; alter database rename file '/oradata/ORCL/standby_redo05.log' to '/oradata/ORCL_STBY/standby_redo05.log'; alter database rename file '/oradata/ORCL/standby_redo06.log' to '/oradata/ORCL_STBY/standby_redo06.log'; alter database rename file '/oradata/ORCL/standby_redo07.log' to '/oradata/ORCL_STBY/standby_redo07.log'; ##tempfile alter database rename file '/oradata/ORCL/temp01.dbf' to '/oradata/ORCL_STBY/temp01.dbf'; alter database rename file '/oradata/ORCL/pdbseed/temp012021-04-11_06-13-50-844-AM.dbf' to '/oradata/ORCL_STBY/pdbseed/temp012021-04-11_06-13-50-844-AM.dbf'; alter database rename file '/oradata/ORCL/BFA6BEE45A1E3605E053AC01A8C0DD20/datafile/o1_mf_temp_j749f5fy_.dbf' to '/oradata/ORCL_STBY/BFA6BEE45A1E3605E053AC01A8C0DD20/datafile/o1_mf_temp_j749f5fy_.dbf';
复制

备库重命名完后再改为自动:

sqlplus / as sysdba alter system set standby_file_management=AUTO;
复制

恢复主备GAP:

recover database from service orcl noredo using compressed backupset;
复制

📢 注意: 如果主备库文件目录不一致,则需要catalog切换控制文件中路径,否则报错:

e.开启备库日志应用,检查同步

  • 检查主备scn是否一致
sqlplus / as sysdba col HXFNM for a100 set line222 select HXFIL File_num,substr(HXFNM,1,40) HXFNM,fhscn from x$kcvfh;
复制
  • 主库切几次归档
sqlplus / as sysdba ALTER SYSTEM ARCHIVE LOG CURRENT; ALTER SYSTEM SWITCH LOGFILE;
复制
  • 开启备库应用日志
sqlplus / as sysdba alter database open; alter pluggable database all open; ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
复制
  • 查看备库同步是否正常
sqlplus / as sysdba set line222 col member for a60 select t1.group#,t1.thread#,t1.bytes/1024/1024,t1.status,t2.member from gv$standby_log t1,gv$logfile t2 where t1.group#=t2.group#;
复制
  • 主库插入数据
sqlplus test/test@pdb01 insert into test values (999); commit;
复制
  • 备库查询是否实时同步
alter session set container=pdb01; select * from test.test; ID ---------- 1 2 999
复制

至此,GAP已修复完成,可以发现,12C这个新特性,将一些步骤进行了省略和封装,进一步减少了我们的操作步骤,但是内部的原理仍然是一致的。

暂无图片 评论
暂无图片 有用 0
打赏 0
XM.

前面步骤都一样,到这边catalog不知道怎么报错了

暂无图片 评论
暂无图片 有用 0
打赏 0
Lucifer三思而后行
2022-01-10
你 catalog 那一步没有成功哇
Lucifer三思而后行
2022-01-10
控制文件恢复了吗?
XM.
题主
2022-01-10
控制文件恢复了呀 [oracle@hisdg ~]$ rman target / Recovery Manager: Release 12.2.0.1.0 - Production on Mon Jan 10 18:06:37 2022 Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved. connected to target database: CRDS3DB (not mounted) RMAN> restore standby controlfile from service crds3db; Starting restore at 2022-01-10 18:06:49 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=35 device type=DISK channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: using network backup set from service crds3db channel ORA_DISK_1: restoring control file channel ORA_DISK_1: restore complete, elapsed time: 00:00:01 output file name=/app/oracle/oradata/crds3dbdg/control01.ctl output file name=/app/oracle/oradata/crds3dbdg/control02.ctl Finished restore at 2022-01-10 18:06:50
XM.

控制文件恢复了呀

[oracle@hisdg ~]$ rman target /

Recovery Manager: Release 12.2.0.1.0 - Production on Mon Jan 10 18:06:37 2022

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

connected to target database: CRDS3DB (not mounted)

RMAN> restore standby controlfile from service crds3db;

Starting restore at 2022-01-10 18:06:49
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=35 device type=DISK

channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: using network backup set from service crds3db
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
output file name=/app/oracle/oradata/crds3dbdg/control01.ctl
output file name=/app/oracle/oradata/crds3dbdg/control02.ctl
Finished restore at 2022-01-10 18:06:50

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交