GAP - thread 1 sequence 184-185
DBID 1484954774 branch 960494131
FAL[client]: All defined FAL servers have been attempted.
------------------------------------------------------------
Check that the CONTROL_FILE_RECORD_KEEP_TIME initialization
parameter is defined to a value that's sufficiently large
enough to maintain adequate log switch information to resolve
archivelog gaps.
查询缺失的归档日志:
SQL> select * from v$archive_gap;
THREAD# LOW_SEQUENCE# HIGH_SEQUENCE#
---------- ------------- --------------
1 183 185
去主库查看归档,发现归档已丢失
下面开始使用RMAN进行基于SCN增量备份恢复的方式进行恢复,参考文档 ID 836986.1
1.取消备库日志应用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE cancel;
2.在备库上确定需要开始增量备份的SCN
SQL> SELECT CURRENT_SCN FROM V$DATABASE;
CURRENT_SCN
-----------
8031228
SQL> select min(checkpoint_change#) from v$datafile_header
2 where file# not in (select file# from v$datafile where enabled = 'READ ONLY');
MIN(CHECKPOINT_CHANGE#)
-----------------------
(如果结果为空,重启备库到mount状态)
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount pfile='/home/oracle/orcldg.pfile';
ORACLE 例程已经启动。
Total System Global Area 2248143960 bytes
Fixed Size 8660056 bytes
Variable Size 620756992 bytes
Database Buffers 1610612736 bytes
Redo Buffers 8114176 bytes
数据库装载完毕。
SQL> select min(checkpoint_change#) from v$datafile_header
2 where file# not in (select file# from v$datafile where enabled = 'READ ONLY');
MIN(CHECKPOINT_CHANGE#)
-----------------------
8031229
选择以上结果中最小SCN作为增量备份的起点(此处是8031229)
3.在主库上进行基于SCN的增量备份
RMAN> BACKUP INCREMENTAL FROM SCN 8031229 DATABASE FORMAT '/backup/ForStandby_%U' tag 'FORSTANDBY';
从位于 08-5月 -2019 03:24:55 的 backup 开始
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=411 实例 = orcl1 设备类型 = DISK
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
输入数据文件, 文件号 = 00002 名称 = +DATADG/ORCL/sysaux01.dbf
输入数据文件, 文件号 = 00001 名称 = +DATADG/ORCL/system01.dbf
输入数据文件, 文件号 = 00003 名称 = +DATADG/ORCL/undotbs01.dbf
输入数据文件, 文件号 = 00004 名称 = +DATADG/ORCL/undotbs02.dbf
输入数据文件, 文件号 = 00005 名称 = +DATADG/ORCL/users01.dbf
通道 ORA_DISK_1: 正于 08-5月 -2019 03:24:58 启动段 1
通道 ORA_DISK_1: 完成了于 08-5月 -2019 03:25:13 启动段 1
片段句柄 = /backup/ForStandby_0vu10dka_1_1 标记 = FORSTANDBY 注释 = NONE
通道 ORA_DISK_1: 备份集完成, 用时: 00:00:15
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
备份集内包括当前控制文件
通道 ORA_DISK_1: 正于 08-5月 -2019 03:25:14 启动段 1
通道 ORA_DISK_1: 完成了于 08-5月 -2019 03:25:15 启动段 1
片段句柄 = /backup/ForStandby_10u10dkp_1_1 标记 = FORSTANDBY 注释 = NONE
通道 ORA_DISK_1: 备份集完成, 用时: 00:00:01
在 08-5月 -2019 03:25:15 完成了 backup
4. 把/backup/目录下面的备份文件拷备到备机
5.将拷贝过来的备份注册到备库的控制文件中
[oracle@db5 ~]$ rman target /
恢复管理器: Release 18.0.0.0.0 - Production on 星期三 5月 8 03:25:54 2019
Version 18.3.0.0.0
Copyright (c) 1982, 2018, Oracle and/or its affiliates. All rights reserved.
已连接到目标数据库: ORCL (DBID=1530636559, 未打开)
RMAN> catalog start with '/backup/';
使用目标数据库控制文件替代恢复目录
搜索与样式 /backup/ 匹配的所有文件
数据库未知文件的列表
=====================================
文件名: /backup/ForStandby_0vu10dka_1_1
文件名: /backup/ForStandby_10u10dkp_1_1
是否确实要将上述文件列入目录 (输入 YES 或 NO)? yes
正在编制文件目录...
目录编制完毕
已列入目录的文件的列表
=======================
文件名: /backup/ForStandby_0vu10dka_1_1
文件名: /backup/ForStandby_10u10dkp_1_1
6.使用增量备份恢复备库
RMAN> RECOVER DATABASE NOREDO;
从位于 08-5月 -2019 03:26:23 的 recover 开始
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=50 设备类型=DISK
通道 ORA_DISK_1: 正在开始还原增量数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
数据文件 00001 的还原目标: /u01/orcl/system01.dbf
数据文件 00002 的还原目标: /u01/orcl/sysaux01.dbf
数据文件 00003 的还原目标: /u01/orcl/undotbs01.dbf
数据文件 00004 的还原目标: /u01/orcl/undotbs02.dbf
数据文件 00005 的还原目标: /u01/orcl/users01.dbf
通道 ORA_DISK_1: 正在读取备份片段 /backup/ForStandby_0vu10dka_1_1
通道 ORA_DISK_1: 片段句柄 = /backup/ForStandby_0vu10dka_1_1 标记 = FORSTANDBY
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:00:15
在 08-5月 -2019 03:26:40 完成了 recover
RMAN> exit
7.在主库为备库重新备份控制文件,并scp到备库
[oracle@db1 backup]$ rman target /
恢复管理器: Release 18.0.0.0.0 - Production on 星期三 5月 8 03:27:03 2019
Version 18.3.0.0.0
Copyright (c) 1982, 2018, Oracle and/or its affiliates. All rights reserved.
已连接到目标数据库: ORCL (DBID=1530636559)
RMAN> BACKUP CURRENT CONTROLFILE FOR STANDBY FORMAT '/backup/ForStandbyCTRL.bck';
从位于 08-5月 -2019 03:27:06 的 backup 开始
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=142 实例 = orcl1 设备类型 = DISK
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
备份集内包括备用控制文件
通道 ORA_DISK_1: 正于 08-5月 -2019 03:27:09 启动段 1
通道 ORA_DISK_1: 完成了于 08-5月 -2019 03:27:10 启动段 1
片段句柄 = /backup/ForStandbyCTRL.bck 标记 = TAG20190508T032708 注释 = NONE
通道 ORA_DISK_1: 备份集完成, 用时: 00:00:01
在 08-5月 -2019 03:27:10 完成了 backup
从位于 08-5月 -2019 03:27:10 的 Control File and SPFILE Autobackup 开始
片段句柄 = /u01/oracle/product/12.2.0/db/dbs/c-1530636559-20190508-01 注
8.备库还原控制文件:
oracle@db5 ~]$ sqlplus '/as sysdba'
SQL*Plus: Release 18.0.0.0.0 - Production on 星期三 5月 8 03:27:57 2019
Version 18.3.0.0.0
Copyright (c) 1982, 2018, Oracle. All rights reserved.
连接到:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.3.0.0.0
SQL> shutdown immediate;
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup nomount pfile='/home/oracle/orcldg.pfile';
ORACLE 例程已经启动。
Total System Global Area 2248143960 bytes
Fixed Size 8660056 bytes
Variable Size 620756992 bytes
Database Buffers 1610612736 bytes
Redo Buffers 8114176 bytes
SQL> exit
[oracle@db5 backup]$ rman target /
恢复管理器: Release 18.0.0.0.0 - Production on 星期三 5月 8 03:29:08 2019
Version 18.3.0.0.0
Copyright (c) 1982, 2018, Oracle and/or its affiliates. All rights reserved.
已连接到目标数据库: ORCL (未装载)
RMAN> RESTORE STANDBY CONTROLFILE FROM '/backup/ForStandbyCTRL.bck';
从位于 08-5月 -2019 03:29:48 的 restore 开始
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=39 设备类型=DISK
通道 ORA_DISK_1: 正在还原控制文件
通道 ORA_DISK_1: 还原完成, 用时: 00:00:01
输出文件名=/u01/orcl/control01.ctl
输出文件名=/u01/orcl/control02.ctl
在 08-5月 -2019 03:29:51 完成了 restore
9.重启备库到mount
[oracle@db5 ~]$ sqlplus '/as sysdba'
SQL*Plus: Release 18.0.0.0.0 - Production on 星期三 5月 8 03:30:00 2019
Version 18.3.0.0.0
Copyright (c) 1982, 2018, Oracle. All rights reserved.
连接到:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.3.0.0.0
SQL> shutdown immediate;
ORA-01507: 未装载数据库
ORACLE 例程已经关闭。
SQL> startup nomount pfile='/home/oracle/orcldg.pfile';
ORACLE 例程已经启动。
10. 备机恢复
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE NODELAY PARALLEL 2 USING CURRENT LOGFILE DISCONNECT FROM SESSION;
SQL> shutdown immediate;
ORA-01507: 未装载数据库
SQL> startup pfile='/home/oracle/orcldg.pfile';
ORACLE 例程已经启动。
Total System Global Area 2248143960 bytes
Fixed Size 8660056 bytes
Variable Size 620756992 bytes
Database Buffers 1610612736 bytes
Redo Buffers 8114176 bytes
数据库装载完毕。
数据库已经打开。
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE NODELAY PARALLEL 2 USING CURRENT LOGFILE DISCONNECT FROM SESSION;
数据库已更改。
11. 添加standby redolog
因为重新恢复了控制文件,所以standby redolog可能失效,需要重新添加standby redo log
alter database add standby logfile group 11 '/u01/orcl/stbredo11.log' size 200M;
alter database add standby logfile group 12 '/u01/orcl/stbredo12.log' size 200M;
alter database add standby logfile group 13 '/u01/orcl/stbredo13.log' size 200M;
alter database add standby logfile group 14 '/u01/orcl/stbredo14.log' size 200M;
alter database add standby logfile group 15 '/u01/orcl/stbredo15.log' size 200M;
alter database add standby logfile group 16 '/u01/orcl/stbredo16.log' size 200M;
12. 如果数据库是用OMF方式管理数据文件的,则需要在备库的控制文件中重新注册下数据文件,示例如下:
备注:
当使用omf方式管理表空间,需要配置初始化参数db_create_dest.当建立omf表空间会自动建立数据文件,当删除omf表空间时会自动删除omf文件。
当使用omf方式管理数据文件时,如果不指定数据文件尺寸,则其默认为100m.
SQL> show parameter db_create_file_dest;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string
SQL>
(如果数据文件存放在文件系统,没有使用OMF,则跳过此步骤) 参考示例
RMAN> CATALOG START WITH '+DATA/rzorcl/datafile/';
List of Files Unknown to the Database
=====================================
File Name: +data/rzorcl/DATAFILE/SYSTEM.309.685535773
File Name: +data/rzorcl/DATAFILE/SYSAUX.301.685535773
File Name: +data/rzorcl/DATAFILE/UNDOTBS1.302.685535775
File Name: +data/rzorcl/DATAFILE/SYSTEM.297.688213333
File Name: +data/rzorcl/DATAFILE/SYSAUX.267.688213333
File Name: +data/rzorcl/DATAFILE/UNDOTBS1.268.688213335
Do you really want to catalog the above files (enter YES or NO)? YES
cataloging files...
cataloging done
List of Cataloged Files
=======================
File Name: +data/rzorcl/DATAFILE/SYSTEM.297.688213333
File Name: +data/rzorcl/DATAFILE/SYSAUX.267.688213333
File Name: +data/rzorcl/DATAFILE/UNDOTBS1.268.688213335
确保主库在这个SCN之后没有添加新的数据文件,如果有则需要单独进行备份和还原,参考文档文档 ID 836986.1
SQL> select file#,name from v$datafile where creation_change# > 3505254;
no rows selected
RMAN> SWITCH DATABASE TO COPY;
datafile 1 switched to datafile copy "+DATA/rzorcl/datafile/system.297.688213333"
datafile 2 switched to datafile copy "+DATA/rzorcl/datafile/undotbs1.268.688213335"
datafile 3 switched to datafile copy "+DATA/rzorcl/datafile/sysaux.267.688213333"
想我的小悠悠。。。




