热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

RMAN备份与恢复之基于时间点的不完全恢复

RMAN恢复分为完全恢复和不完全恢复。完全恢复,顾名思义,就是基于全备的基础上对数据进行恢复。但是真实环境中这样的恢复用得很

RMAN恢复分为完全恢复和不完全恢复。完全恢复,顾名思义,就是基于全备的基础上对数据进行恢复。但是真实环境中这样的恢复用得很

一 不完全恢复讲解

在上一篇文章(RMAN备份与恢复之UNDO表空间丢失 )中,我们讲到UNDO表空间丢失怎么处理。UNDO表空间是不可脱机的,同样,SYSTEM表空间也是不可脱机的,所以SYSTEM表空间丢失的处理办法和UNDO表空间丢失的处理办法类似,在此不赘述。

RMAN恢复分为完全恢复和不完全恢复。完全恢复,顾名思义,就是基于全备的基础上对数据进行恢复。但是真实环境中这样的恢复用得很少。相反,不完全恢复使用较多。不完全恢复,也就是通过备份文件,恢复某一个误操作或者是某一段时间丢失的数据。不完全恢复可以基于时间,基于SCN,基于日志序列号、基于备份控制文件。本文讲解基于时间点的不完全恢复。

二 基于时间点的不完全恢复讲解

与前面的文章一样,既然要做恢复,我们首先要有备份文件,我们使用RMAN工具对数据库进行备份。备份完全后,我们切换到SQL Plus中,打开显示完整时间的选项,为什么要显示完整时间呢?因为基于时间点的恢复需要一个时间点,打开这个选项后,一是可以使我们更方便的查看到操作过程中经历的时间,二是保证时间点选取的精确性。然后我们登录到SCOTT用户,创建一张测试表,插入数据,手动提交。注意,我们为了保证数据的一致性,最好切换到SYS用户下手动切换日志(ALTER SYSTEM SWITCH LOGFILE)和手动触发CKPT(ALTERSYSTEM CHECKPOINT)。好了,数据准备完成,我们此时删除表,并同时清空回收站,记下删除表之前的时间点,后面恢复操作要使用到。现在我们强制关闭数据库,登录到RMAN中,启动数据库到MOUNT状态,然后查看当前的INCARNATION号,至于INCARNATION号是什么东西。我们可以这样理解,每一次RESETLOGS就会使INCARNATION+1,如果想要恢复到之前INCARNATION的scn(或者时间点),就需要先跳转到之前的INCARNATION。跳转到之前的INCARNATION,我们可以使用如下命令:RESET DATABASE TO INCARNATION 。举一个不太恰当的比喻,这个INCARNATION就像我们在十字路口,此时我们不知道应该往哪个方向走,如果你一旦走错,还得回到这个十字路口选取下一条路。此时我们需要编辑恢复脚本,内容就是告诉Oracle恢复到哪个时间点,并且还原和恢复数据库。恢复完成后,我们需要使用RESETLOGS方式打开数据库,此时我们登录到SQL Plus中,查看表只中的数据,如果能够成功查询到,证明恢复成功。如果不能查询到,第一考虑时间点是否选择正确,第二确认INCARNATION号是否正确,第三数据是否保持了一致性。因为我们重置了日志,所以需要重新备份数据库。至此,完整的恢复操作完成。

三 基于时间点的恢复模拟

Step 1,SQL Plus中确保数据库在归档模式,RMAN中备份数据库

SQL> ARCHIVE LOG LIST;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 68
Next log sequence to archive 70
Current log sequence 70
[oracle@orcl ~]$ uniread rman target /
[uniread] Loaded history (2 lines)

Recovery Manager: Release 11.2.0.3.0 - Production on Fri Jan 17 09:44:40 2014

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

connected to target database: LARRRDB (DBID=3428598070)

RMAN> BACKUP DATABASE;

Starting backup at 17-JAN-14
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=36 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u01/oracle/oradata/larrrdb/system01.dbf
input datafile file number=00003 name=/u01/oracle/oradata/larrrdb/undotbs01.dbf
input datafile file number=00002 name=/u01/oracle/oradata/larrrdb/sysaux01.dbf
input datafile file number=00004 name=/u01/oracle/oradata/larrrdb/users01.dbf
channel ORA_DISK_1: starting piece 1 at 17-JAN-14
channel ORA_DISK_1: finished piece 1 at 17-JAN-14
piece handle=/u01/oracle/fast_recovery_area/LARRRDB/backupset/2014_01_17/o1_mf_nnndf_TAG20140117T094447_9fk2rhv7_.bkp tag=TAG20140117T094447 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:04:07
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
including current SPFILE in backup set
channel ORA_DISK_1: starting piece 1 at 17-JAN-14
channel ORA_DISK_1: finished piece 1 at 17-JAN-14
piece handle=/u01/oracle/fast_recovery_area/LARRRDB/backupset/2014_01_17/o1_mf_ncsnf_TAG20140117T094447_9fk309p8_.bkp tag=TAG20140117T094447 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
Finished backup at 17-JAN-14

Step 2,SQL Plus中打开显示完整时间

SQL> CONN SCOTT/tiger;
Connected.
SQL> SET TIME ON;
09:53:34 SQL>

Step 3,SQL Plus创建测试表

09:53:34 SQL> CREATE TABLE test(id NUMBER(2),name VARCHAR(20));

Table created.

09:53:59 SQL>

Step 4,,SQL Plus插入数据,并提交,为了保持数据一致性,最好使用sys用户手动切换日志(ALTER SYSTEM SWITCHLOGFILE)和触发CKPT(ALTERSYSTEM CHECKPOINT)

09:53:59 SQL> INSERT INTO test VALUES(1,'justdb');

1 row created.

09:54:16 SQL> COMMIT;

Commit complete.

09:54:25 SQL> SELECT * FROM test;

ID NAME
---------- --------------------
1 justdb

09:54:33 SQL>

Step 5,SQL Plus中删除测试表

09:54:33 SQL> DROP TABLE test PURGE;

Table dropped.

Step 6,SQL Plus中一致性关闭数据库

10:00:09 SQL> SHUTDOWN IMMEDIATE;
Database closed.
Database dismounted.
ORACLE instance shut down.
10:01:57 SQL>

Step 7,编辑基于时间点恢复的脚本,注意时间点的选取,此处选取为删除表的时间点(09:54:33),注意时间点尤其重要

推荐阅读
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
  • Postgresql备份和恢复的方法及命令行操作步骤
    本文介绍了使用Postgresql进行备份和恢复的方法及命令行操作步骤。通过使用pg_dump命令进行备份,pg_restore命令进行恢复,并设置-h localhost选项,可以完成数据的备份和恢复操作。此外,本文还提供了参考链接以获取更多详细信息。 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • 仙贝旅行是日本最大的旅游服务平台之一,为广大用户提供优质的日本定制游服务。随着用户数量的增长,仙贝旅行决定与智齿科技合作,全面替换原有客服系统,打造全新的在线客服体系。该体系具备多渠道快速接入的能力,让仙贝旅行轻松与各个渠道的接入用户完成沟通。同时,机器人与人工协同发力,提升客户服务水平。 ... [详细]
  • 本文介绍了一些Java开发项目管理工具及其配置教程,包括团队协同工具worktil,版本管理工具GitLab,自动化构建工具Jenkins,项目管理工具Maven和Maven私服Nexus,以及Mybatis的安装和代码自动生成工具。提供了相关链接供读者参考。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了StartingzookeeperFAILEDTOSTART相关的知识,希望对你有一定的参考价值。下载路径:https://ar ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • SAP羞辱国产软件商:技术停在10年前
    SAP中国研究院总裁芮祥麟表示,国产软件厂商过于热衷概念炒作,技术水平停留在10年前的客户端架构水平。他认为,国内厂商推出基于SOA的产品或转型SAAS模式是不可能的,研发新架构需要时间。当前最热门的概念是云计算,芮祥麟呼吁国产厂商应该潜心研发底层架构。 ... [详细]
  • IT方面的论坛太多了,有综合,有专业,有行业,在各个论坛里混了几年,体会颇深,以前是论坛哪里人多 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 本文讲述了孙悟空写给白骨精的信件引发的思考和反省。孙悟空在信中对自己的行为进行了反思,认识到自己胡闹的行为并没有给他带来实际的收获。他也揭示了西天取经的真相,认为这是玉皇、菩萨设下的一场陷阱。他还提到了师傅的虚伪和对自己的实心话,以及自己作为师傅准备提拔的对象而被派下来锻炼的经历。他认为路上的九九八十一难也都是菩萨算计好的,唐僧并没有真正的危险。最后,他提到了观音菩萨在关键时刻的指导。这封信件引发了孙悟空对自己行为的思考和反省,对西天取经的目的和自己的角色有了更深入的认识。 ... [详细]
  • Windows2003 IIS上设置301定向,实现不带www域名跳转带www域名的方法
    打开IIS,建一个网站,主机头用不带www的域名,随便指向一个目录。然后在这个网站上点右键,属性--主目录--重定向到URL如图ÿ ... [详细]
  • 本文介绍了在Ubuntu下制作deb安装包及离线安装包的方法,通过备份/var/cache/apt/archives文件夹中的安装包,并建立包列表及依赖信息文件,添加本地源,更新源列表,可以在没有网络的情况下更新系统。同时提供了命令示例和资源下载链接。 ... [详细]
  • 本文讨论了读书的目的以及学习算法的重要性,并介绍了两个算法:除法速算和约瑟夫环的数学算法。同时,通过具体的例子和推理,解释了为什么x=x+k序列中的第一个人的位置为k,以及序列2和序列3的关系。通过学习算法,可以提高思维能力和解决问题的能力。 ... [详细]
author-avatar
ys2011一号_139
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有