ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

【Oracle】Oracle 18c主库日志已被删除的情况下使用service恢复从库

2022-06-18 14:34:26  阅读:204  来源: 互联网

标签:主库 18c datafile CLSDR DATAFILE Oracle copy DATA ORA


【Oracle】Oracle 11g主库日志已被删除的情况下如何恢复从库

【Oracle】Oracle 12c主库日志已被删除的情况下使用service恢复从库

 

 

如果备库与主库不同步,或者某些归档日志在发送或应用到备库之前被删除,那么可以按照以下方法将备库与主库同步。我们可以将此过程称为备库的前滚。

在oracle 11g中,这个过程是纯手工的,涉及很多步骤。这个过程在oracle 12c中得到了重大改进。同样在oracle 18c中,从主库刷新备库只是一个命令。

示例​

主库:CLSPROD
从库:CLSTDBY
类型:2节点的RAC

  

1.取消从库的recovery

SQL> recover managed standby database cancel;
Media recovery complete.

  

2.将从库启动到mount状态(只在一个节点执行)

因为是RAC环境,需要先关闭所有的节点,然后在其中一个节点执行操作​

[oracle@stdby-host]$srvctl stop database -d CLSTDBY

sqlplus / as sysdba 
SQL> startup mount;

  

3.rman连接到从库

语法:

RECOVER STANDBY DATABASE FROM SERVICE

  

这里CLSPROD是主库的数据库service_name​

[oracle@stdby-host admin]$ rman target /

Recovery Manager: Release 19.0.0.0.0 - Production on Thu Sep 9 15:39:06 2021
Version 19.3.0.0.0

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

connected to target database: CLSPROD (DBID=2290300697, not open)

RMAN>  RECOVER STANDBY DATABASE FROM SERVICE CLSPROD;


Starting recover at 09-SEP-21
Oracle instance started

Total System Global Area   53687090008 bytes

Fixed Size                    30145368 bytes
Variable Size               7247757312 bytes
Database Buffers           46305116160 bytes
Redo Buffers                 104071168 bytes

contents of Memory Script:
{
   restore standby controlfile from service  'CLSPROD';
   alter database mount standby database;
}
executing Memory Script

Starting restore at 09-SEP-21
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=1334 instance=CLSDR1 device type=DISK

channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: using network backup set from service CLSPROD
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:03
output file name=+DATA/CLSDR/control01.ctl
output file name=+FRA/CLSDR/control02.ctl
Finished restore at 09-SEP-21

released channel: ORA_DISK_1
Statement processed
Executing: alter system set standby_file_management=manual

contents of Memory Script:
{
set newname for tempfile  2 to
 "+DATA/CLSDR/TEMPFILE/temp.295.1068761213";
   switch tempfile all;
set newname for datafile  1 to
 "+DATA/CLSDR/DATAFILE/system01.dbf";
set newname for datafile  2 to
 "+DATA/CLSDR/DATAFILE/sysaux01.dbf";
set newname for datafile  3 to
 "+DATA/CLSDR/DATAFILE/undotbs01.dbf";
set newname for datafile  4 to
 "+DATA/CLSDR/DATAFILE/users01.dbf";
set newname for datafile  5 to
 "+DATA/CLSDR/DATAFILE/undotbs1.290.1068759067";
set newname for datafile  6 to
 "+DATA/CLSDR/DATAFILE/dwe.259.1068759067";
set newname for datafile  7 to
 "+DATA/CLSDR/DATAFILE/dwe_ndx.258.1068759067";
.
 "+DATA/CLSDR/DATAFILE/dwe.304.1081717387";
   catalog datafilecopy  "+DATA/CLSDR/DATAFILE/system01.dbf",
 "+DATA/CLSDR/DATAFILE/sysaux01.dbf",
 "+DATA/CLSDR/DATAFILE/undotbs01.dbf",
 "+DATA/CLSDR/DATAFILE/users01.dbf",
 "+DATA/CLSDR/DATAFILE/undotbs1.290.1068759067",
 "+DATA/CLSDR/DATAFILE/dwe.259.1068759067",
 "+DATA/CLSDR/DATAFILE/dwe_ndx.258.1068759067",
 "+DATA/CLSDR/DATAFILE/dwh.264.1068759067",
 "+DATA/CLSDR/DATAFILE/dwh_ndx.263.1068759067",
 "+DATA/CLSDR/DATAFILE/dww.266.1068759067",
 "+DATA/CLSDR/DATAFILE/dww_ndx.262.1068759067",

..
..
executing Memory Script

executing command: SET NEWNAME

Starting implicit crosscheck backup at 09-SEP-21
allocated channel: ORA_DISK_1
Crosschecked 6 objects
Finished implicit crosscheck backup at 09-SEP-21

Starting implicit crosscheck copy at 09-SEP-21
using channel ORA_DISK_1
Crosschecked 2 objects
Finished implicit crosscheck copy at 09-SEP-21

searching for all files in the recovery area
cataloging files...
cataloging done

List of Cataloged Files
=======================
File Name: +FRA/CLSDR/AUTOBACKUP/2021_08_27/s_1081649857.272.1081649889
File Name: +FRA/CLSDR/AUTOBACKUP/2021_08_27/s_1081671425.333.1081671459
File Name: +FRA/CLSDR/ARCHIVELOG/2021_09_07/thread_1_seq_1764.323.1082613623
File Name: +FRA/CLSDR/ARCHIVELOG/2021_09_07/thread_1_seq_1765.288.1082634551
File Name: +FRA/CLSDR/ARCHIVELOG/2021_09_07/thread_1_seq_1766.283.1082646769
File Name: +FRA/CLSDR/ARCHIVELOG/2021_09_07/thread_1_seq_1767.315.1082656825
File Name: +FRA/CLSDR/ARCHIVELOG/2021_09_07/thread_1_seq_1768.376.1082663419
File Name: +FRA/CLSDR/ARCHIVELOG/2021_09_07/thread_1_seq_1769.348.1082671631

..
renamed tempfile 2 to +DATA/CLSDR/TEMPFILE/temp.295.1068761213 in control file

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

executing command: SET NEWNAME

..
cataloged datafile copy
datafile copy file name=+DATA/CLSDR/DATAFILE/system01.dbf RECID=82 STAMP=1082821215
cataloged datafile copy
datafile copy file name=+DATA/CLSDR/DATAFILE/sysaux01.dbf RECID=83 STAMP=1082821215
cataloged datafile copy
datafile copy file name=+DATA/CLSDR/DATAFILE/undotbs01.dbf RECID=84 STAMP=1082821215
cataloged datafile copy
datafile copy file name=+DATA/CLSDR/DATAFILE/users01.dbf RECID=85 STAMP=1082821215
cataloged datafile copy
datafile copy file name=+DATA/CLSDR/DATAFILE/undotbs1.290.1068759067 RECID=86 STAMP=1082821215
cataloged datafile copy
datafile copy file name=+DATA/CLSDR/DATAFILE/dwe.259.1068759067 RECID=87 STAMP=1082821215
cataloged datafile copy
datafile copy file name=+DATA/CLSDR/DATAFILE/dwe_ndx.258.1068759067 RECID=88 STAMP=1082821215
cataloged datafile copy
datafile copy file name=+DATA/CLSDR/DATAFILE/dwh.264.1068759067 RECID=89 STAMP=1082821215
cataloged datafile copy
datafile copy file name=+DATA/CLSDR/DATAFILE/dwh_ndx.263.1068759067 RECID=90 STAMP=1082821215
cataloged datafile copy
datafile copy file name=+DATA/CLSDR/DATAFILE/dww.266.1068759067 RECID=91 STAMP=1082821215
cataloged datafile copy
datafile copy file name=+DATA/CLSDR/DATAFILE/dww_ndx.262.1068759067 RECID=92 STAMP=1082821215
cataloged datafile copy
datafile copy file name=+DATA/CLSDR/DATAFILE/dwe.267.1068759067 RECID=93 STAMP=1082821215

...
..
datafile 1 switched to datafile copy
input datafile copy RECID=82 STAMP=1082821215 file name=+DATA/CLSDR/DATAFILE/system01.dbf
datafile 2 switched to datafile copy
input datafile copy RECID=83 STAMP=1082821215 file name=+DATA/CLSDR/DATAFILE/sysaux01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=84 STAMP=1082821215 file name=+DATA/CLSDR/DATAFILE/undotbs01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=85 STAMP=1082821215 file name=+DATA/CLSDR/DATAFILE/users01.dbf
datafile 5 switched to datafile copy
input datafile copy RECID=86 STAMP=1082821215 file name=+DATA/CLSDR/DATAFILE/undotbs1.290.1068759067
datafile 6 switched to datafile copy
input datafile copy RECID=87 STAMP=1082821215 file name=+DATA/CLSDR/DATAFILE/dwe.259.1068759067
datafile 7 switched to datafile copy
input datafile copy RECID=88 STAMP=1082821215 file name=+DATA/CLSDR/DATAFILE/dwe_ndx.258.1068759067
datafile 8 switched to datafile copy
input datafile copy RECID=89 STAMP=1082821215 file name=+DATA/CLSDR/DATAFILE/dwh.264.1068759067
datafile 9 switched to datafile copy
input datafile copy RECID=90 STAMP=1082821215 file name=+DATA/CLSDR/DATAFILE/dwh_ndx.263.1068759067
datafile 10 switched to datafile copy
input datafile copy RECID=91 STAMP=1082821215 file name=+DATA/CLSDR/DATAFILE/dww.266.1068759067
datafile 11 switched to datafile copy
input datafile copy RECID=92 STAMP=1082821215 file name=+DATA/CLSDR/DATAFILE/dww_ndx.262.1068759067
datafile 12 switched to datafile copy
input datafile copy RECID=93 STAMP=1082821215 file name=+DATA/CLSDR/DATAFILE/dwe.267.1068759067
datafile 13 switched to datafile copy
input datafile copy RECID=94 STAMP=1082821216 file name=+DATA/CLSDR/DATAFILE/dwe.269.1068759067
datafile 14 switched to datafile copy
..


contents of Memory Script:
{
  recover database from service  'CLSPROD';
}
executing Memory Script

Starting recover at 09-SEP-21
using channel ORA_DISK_1
channel ORA_DISK_1: starting incremental datafile backup set restore
channel ORA_DISK_1: using network backup set from service CLSPROD
destination for restore of datafile 00001: +DATA/CLSDR/DATAFILE/system01.dbf
channel ORA_DISK_1: restore complete, elapsed time: 00:00:07
channel ORA_DISK_1: starting incremental datafile backup set restore
channel ORA_DISK_1: using network backup set from service CLSPROD
destination for restore of datafile 00002: +DATA/CLSDR/DATAFILE/sysaux01.dbf
channel ORA_DISK_1: restore complete, elapsed time: 00:00:35
channel ORA_DISK_1: starting incremental datafile backup set restore
channel ORA_DISK_1: using network backup set from service CLSPROD
destination for restore of datafile 00003: +DATA/CLSDR/DATAFILE/undotbs01.dbf
channel ORA_DISK_1: restore complete, elapsed time: 00:01:15
channel ORA_DISK_1: starting incremental datafile backup set restore
channel ORA_DISK_1: using network backup set from service CLSPROD
destination for restore of datafile 00004: +DATA/CLSDR/DATAFILE/users01.dbf
channel ORA_DISK_1: restore complete, elapsed time: 00:00:02
channel ORA_DISK_1: starting incremental datafile backup set restore
channel ORA_DISK_1: using network backup set from service CLSPROD
destination for restore of datafile 00005: +DATA/CLSDR/DATAFILE/undotbs1.290.1068759067

channel ORA_DISK_1: restore complete, elapsed time: 00:01:25
channel ORA_DISK_1: starting incremental datafile backup set restore
channel ORA_DISK_1: using network backup set from service CLSPROD
destination for restore of datafile 00006: +DATA/CLSDR/DATAFILE/dwe.259.1068759067

channel ORA_DISK_1: restore complete, elapsed time: 00:02:46
channel ORA_
...
..
destination for restore of datafile 00038: +DATA/CLSDR/DATAFILE/dww.305.1081717339
channel ORA_DISK_1: restore complete, elapsed time: 00:00:36
channel ORA_DISK_1: starting incremental datafile backup set restore
channel ORA_DISK_1: using network backup set from service CLSPROD
destination for restore of datafile 00039: +DATA/CLSDR/DATAFILE/dwe.304.1081717387
channel ORA_DISK_1: restore complete, elapsed time: 00:00:15

starting media recovery

archived log for thread 1 with sequence 1782 is already on disk as file +FRA/CLSDR/ARCHIVELOG/2021_09_09/thread_1_seq_1782.438.1082821213
archived log file name=+FRA/CLSDR/ARCHIVELOG/2021_09_09/thread_1_seq_1782.438.1082821213 thread=1 sequence=1782
media recovery complete, elapsed time: 00:00:02
Finished recover at 09-SEP-21
Executing: alter system set standby_file_management=auto
Finished recover at 09-SEP-21

  

4.recover从库到一致性状态

SQL> select name,open_Mode from v$database;

NAME      OPEN_MODE
--------- --------------------
CLSPROD  MOUNTED

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE UNTIL CONSISTENT;

Database altered.

Note - > If the above command is hung and taking long time to complete, then do alter system switch logfile ; from primary database.

SQL>select name,open_Mode from v$database;

NAME      OPEN_MODE
--------- --------------------
CLSPROD  MOUNTED

SQL> alter database open read only;

Database altered.

SQL> select name,open_mode from v$database;

NAME      OPEN_MODE
--------- --------------------
CLSPROD  READ ONLY

SQL> alter database recover managed standby database using current logfile disconnect from session;

Database altered.

SQL> select name,open_mode from v$database;

NAME      OPEN_MODE
--------- --------------------
CLSPROD  READ ONLY WITH APPLY

  

在这个阶段,主库上的实时更新(real time changes)不会反应到从库。

所以,我们需要在从库上重新创建standby redo日志文件。

 

5.重建standby redolog

在从库上执行。虽然主库是两节点的RAC,有两个threads,但是在从库上可以不考虑thread的事情。​

--- First cancel the recovery:

SQL> recover managed standby database cancel;
Media recovery complete.


SQL>  select inst_id,GROUP#,TYPE,MEMBER from gv$logfile where TYPE='STANDBY' WHERE INST_ID=1;

   INST_ID     GROUP# TYPE    MEMBER
---------- ---------- ------- --------------------------------------------------
         1         15 STANDBY +DATA/CLSPROD/ONLINELOG/group_15.326.1081670395
         1         15 STANDBY +FRA/CLSPROD/ONLINELOG/group_15.355.1081670397
         1         16 STANDBY +DATA/CLSPROD/ONLINELOG/group_16.325.1081670425
         1         16 STANDBY +FRA/CLSPROD/ONLINELOG/group_16.346.1081670429
         1         17 STANDBY +DATA/CLSPROD/ONLINELOG/group_17.324.1081670447
         1         17 STANDBY +FRA/CLSPROD/ONLINELOG/group_17.379.1081670451
         1         18 STANDBY +DATA/CLSPROD/ONLINELOG/group_18.334.1081670457
         1         18 STANDBY +FRA/CLSPROD/ONLINELOG/group_18.385.1081670459

SQL> select inst_id,thread#,group# from gv$standby_log;

   INST_ID    THREAD#     GROUP#
---------- ---------- ----------
         1          1         15
         1          1         16
         1          1         17
         1          1         18
         2          1         15
         2          1         16
         2          1         17
         2          1         18


-- Drop all standby redologs:

alter database drop standby logfile group 15;
alter database drop standby logfile group 16;
alter database drop standby logfile group 17;
alter database drop standby logfile group 18;

-- Create standby redolog for both threads:

ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 15 ('+DATA','+FRA') SIZE 1G;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 16 ('+DATA','+FRA') SIZE 1G;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 17 ('+DATA','+FRA') SIZE 1G;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 18 ('+DATA','+FRA') SIZE 1G;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 15 ('+DATA','+FRA') SIZE 1G;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 16 ('+DATA','+FRA') SIZE 1G;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 17 ('+DATA','+FRA') SIZE 1G;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 18 ('+DATA','+FRA') SIZE 1G;

--- Once standby redologs are created start recovery:

SQL> alter database recover managed standby database using current logfile disconnect from session;

Database altered.

SQL> select open_mode from v$database;

OPEN_MODE
--------------------
READ ONLY WITH APPLY

  

这样,主库上新的变更就会反映到从库上。

 

 

问题处理

1.报错

RMAN> RECOVER STANDBY DATABASE FROM SERVICE CLSPROD;

Starting recover at 09-SEP-21
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 09/09/2021 15:38:47
RMAN-05150: Managed Recovery Process must be disabled before running RECOVER STANDBY DATABASE.

  

处理方法:

先取消recovery过程,然后再recover从库

SQL> recover managed standby database cancel;
Media recovery complete.

RMAN> RECOVER STANDBY DATABASE FROM SERVICE CLSPROD;

  

 

 

https://dbaclass.com/article/recover-standby-database-from-primary-using-service-in-oracle-18c/

标签:主库,18c,datafile,CLSDR,DATAFILE,Oracle,copy,DATA,ORA
来源: https://www.cnblogs.com/abclife/p/16384057.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有