dataguard主库删除归档日志后从库恢复的方法

栏目: 数据库 · 发布时间: 5年前

------------------方法1在主库上使用备份的进行恢复丢失的归档日志------------------------

1.发现主库备份后删除了归档,但是这些归档从库还没应用,也没有传到从库

从库应用的最新的归档日志为592

SQL> connect / as sysdba

Connected.

SQL> Select Max(t.SEQUENCE#) From V$archived_Log t;

MAX(T.SEQUENCE#)

----------------

592

主库的归档日志

SQL> connect / as sysdba

Connected.

SQL> Column Name format a100;

SQL> Column THREAD# format 99;

SQL> Column SEQUENCE# format 999999;

SQL> Column STANDBY_DEST format a10;

SQL> Column ARCHIVED format a10;

SQL> Column APPLIED format a10;

SQL> Column STATUS format a10;

SQL> Column fal format a10;

SQL> Column COMPLETION_TIME format a20;

SQL> Select t.SEQUENCE#,t.STANDBY_DEST,t.APPLIED,t.STATUS From V$archived_Log t Where t.SEQUENCE#>=592 And t.STANDBY_DEST<>'YES';

SEQUENCE# STANDBY_DE APPLIED    STATUS

--------- ---------- ---------- ----------

592 NO         NO         D

593 NO         NO         D

594 NO         NO         D

595 NO         NO         D

596 NO         NO         D

597 NO         NO         D

598 NO         NO         D

599 NO         NO         D

600 NO         NO         D

601 NO         NO         D

602 NO         NO         D

11 rows selected.

发现主库的日志从592开始就删除掉了,因为主库是备份后才删除的,那么我们可以恢复这些删除的日志,然后让从库应用

2.将那些日志恢复到自定义的目录

2.1先创建目录

cd /u01/app/oracle/archive_log

mkdir gap_log

2.2 恢复归档

run{

allocate channel ci type disk;

set archivelog destination to '/u01/app/oracle/archive_log/gap_log';

restore archivelog sequence 592;

restore archivelog sequence 593;

restore archivelog sequence 594;

restore archivelog sequence 595;

restore archivelog sequence 596;

restore archivelog sequence 597;

restore archivelog sequence 598;

restore archivelog sequence 599;

restore archivelog sequence 600;

restore archivelog sequence 601;

restore archivelog sequence 602;

release channel ci;

}

好像执行如上命令后,主库会自动将该文件应用到从库了,V$archived_Log里也有相应的记录,deleted状态为NO,还是挺智能的.

--------------------方法二:采用注册的方式恢复------------- ---------------------------------

1.主库模拟归档日志丢失

模拟将没有传到从库的归档日志拷贝到另外一个目录

[oracle@localhost archive_log]$ mv arch_994182077* ./gap_log/

2.物理删除后需要进行crosscheck,要不字典信息里还会有相应归档日志的记录

RMAN> crosscheck archivelog all;

RMAN> delete expired archivelog all;

查询归档字典表Select Name From v$archived_log t Order By t.SEQUENCE# Desc 相应的值为空

3.主库从新注册归档日志

3.1 单个或少量日志注册

SQL> alter database register physical logfile  '/u01/app/oracle/archive_log/gap_log/arch_994182077_1_615.arc';

SQL> alter database register physical logfile  '/u01/app/oracle/archive_log/gap_log/arch_994182077_1_616.arc';

SQL> alter database register physical logfile  '/u01/app/oracle/archive_log/gap_log/arch_994182077_1_617.arc';

SQL> alter database register physical logfile  '/u01/app/oracle/archive_log/gap_log/arch_994182077_1_618.arc';

SQL> alter database register physical logfile  '/u01/app/oracle/archive_log/gap_log/arch_994182077_1_619.arc';

SQL> alter database register physical logfile  '/u01/app/oracle/archive_log/gap_log/arch_994182077_1_620.arc';

SQL> alter database register physical logfile  '/u01/app/oracle/archive_log/gap_log/arch_994182077_1_621.arc';

ORA-16225: Missing LogMiner session name for Streams

报该错误的话需要加上 physical 关键字

3.2.大量日志注册

rman> catalog start with '/u01/app/oracle/archive_log/gap_log';

4.步骤3完成后数据库会自动应用恢复回来的文件

----------------方法三:将丢失的日志文件恢复到备库直接应用------------------ ------------

1.主库模拟归档日志丢失

模拟将没有传到从库的归档日志拷贝到另外一个目录

[oracle@localhost archive_log]$ mv arch_994182077* ./gap_log/

2.物理删除后需要进行crosscheck,要不字典信息里还会有相应归档日志的记录

RMAN> crosscheck archivelog all;

RMAN> delete expired archivelog all;

查询归档字典表Select Name From v$archived_log t Order By t.SEQUENCE# Desc 相应的值为空

3.将相应的归档日志拷贝到从库

scp arch_994182077_1_625.arc oracle@192.168.1.85:/u01/app/oracle/archlog/gap_log/

scp arch_994182077_1_626.arc oracle@192.168.1.85:/u01/app/oracle/archlog/gap_log/

scp arch_994182077_1_627.arc oracle@192.168.1.85:/u01/app/oracle/archlog/gap_log/

scp arch_994182077_1_628.arc oracle@192.168.1.85:/u01/app/oracle/archlog/gap_log/

scp arch_994182077_1_629.arc oracle@192.168.1.85:/u01/app/oracle/archlog/gap_log/

scp arch_994182077_1_630.arc oracle@192.168.1.85:/u01/app/oracle/archlog/gap_log/

scp arch_994182077_1_631.arc oracle@192.168.1.85:/u01/app/oracle/archlog/gap_log/

4.在从库上注册

alter database register logfile  '/u01/app/oracle/archlog/gap_log/arch_994182077_1_625.arc';

alter database register logfile  '/u01/app/oracle/archlog/gap_log/arch_994182077_1_626.arc';

alter database register logfile  '/u01/app/oracle/archlog/gap_log/arch_994182077_1_627.arc';

alter database register logfile  '/u01/app/oracle/archlog/gap_log/arch_994182077_1_628.arc';

alter database register logfile  '/u01/app/oracle/archlog/gap_log/arch_994182077_1_629.arc';

alter database register logfile  '/u01/app/oracle/archlog/gap_log/arch_994182077_1_630.arc';

alter database register logfile  '/u01/app/oracle/archlog/gap_log/arch_994182077_1_631.arc';

5.数据库会自动应用如上的归档日志

这种方法的话在主库查询v$archived_log视图是看不到从库相应日志的应用情况

--The End --


以上所述就是小编给大家介绍的《dataguard主库删除归档日志后从库恢复的方法》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

垃圾回收算法手册:自动内存管理的艺术

垃圾回收算法手册:自动内存管理的艺术

Richard Jones、Eliot Moss、Antony Hosking / 王雅光、薛迪 / 机械工业出版社 / 2016-3 / 139

在自动内存管理领域,Richard Jones于1996年出版的《Garbage Collection:Algorithms for Automatic Dynamic Memory Management》可谓是一部里程碑式的作品。接近20年过去了,垃圾回收技术得到了非常大的发展,因此有必要将该领域当前最先进的技术呈现给读者。本书汇集了自动内存管理研究者和开发者们在过去50年间的丰富经验,在本书中......一起来看看 《垃圾回收算法手册:自动内存管理的艺术》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

MD5 加密
MD5 加密

MD5 加密工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具