当前位置:  数据库>oracle

使用RMAN进行表空间TSPITR自动恢复

    来源: 互联网  发布时间:2017-06-04

    本文导语: Oracle发展到今天,在备份还原领域已经构建了完善的解决方案体系。绝大多数情况下,我们的备份还原需求都可以用Oracle成熟方案实现的。TSPITR(Tablespace Point In Time Recover)数据表空间定点恢复是我们在实践中偶尔会使用的一种...

Oracle发展到今天,在备份还原领域已经构建了完善的解决方案体系。绝大多数情况下,我们的备份还原需求都可以用Oracle成熟方案实现的。TSPITR(Tablespace Point In Time Recover)数据表空间定点恢复是我们在实践中偶尔会使用的一种恢复场景。本篇就围绕这个问题进行讨论实验。
 

--------------------------------------分割线 --------------------------------------

推荐阅读:

RMAN 配置归档日志删除策略

Oracle基础教程之通过RMAN复制数据库

RMAN备份策略制定参考内容

RMAN备份学习笔记

Oracle数据库备份加密 RMAN加密

--------------------------------------分割线 --------------------------------------

1、聊聊TSPITR
 
 

严格的说TSPITR是一种相对细粒度的不完全恢复技术。我们通常见到的还原操作,都是将所有的表空间和数据还原到相同的一个时间点上,无论是否是故障恢复点。而TSPITR则是以表空间为粒度单元,单独将某个表空间内容还原到一个特定可恢复时间点上。
 
举一个例子:一个Oracle数据库运行在归档模式下,在夜间零时保留一份完全备份。早上七点时候,某个特定表空间上数据表(单个表独占表空间)发生一个误操作,数据损坏。要求在不伤害其他数据表数据的情况下,将表空间数据恢复到早上六点。
 
这样部分数据恢复的场景,就是TSPITR的典型应用。我们在实际场景中,常常希望恢复部分的数据到过去时间点上,而不希望对现有数据进行补录。
 
TSPITR目前最方便的方法是使用RMAN进行自动的恢复。其使用前提为两个,一个是必须存在相应的备份集合,另一个是表空间对象是“self-contain”,也就是其他表空间中不包括与这个表空间对象相关的对象数据。
 
恢复步骤和原理如下:
 
 

ü  RMAN三个对象集合:catalog、target和auxiliary。其中auxiliary就是用于辅助target各种备份还原要求的操作数据库。这个库在TSPITR中扮演临时数据还原作用的;
 
ü  首先完成数据检查工作,确定备份集合和表空间完整性;
 
ü  当前时间是T1,如果需要将数据还原为T0。使用RMAN提取备份数据集合,还原到auxiliary上形成一个新的实例数据库。选择性应用归档日志序列,还原auxiliary到TO时间点;
 
ü  使用expdp工具从auxiliary中导出目标表空间为dump对象。注意:还原auxiliary并不是100%重建target,而是选择系统运行表空间和目标表空间;
 
ü  在target数据库中删除原表空间。使用impdp工具导入dump文件进入target数据库;
 
ü  清理环境,将创建的auxiliary数据库删除;
 
 

这种系列操作,我们如果使用RMAN命令系列是可以逐步完成的。自动化RMAN的TSPITR操作也是对这个过程的完全自动化运行。下面我们通过实验来进行演示操作。
 
 

2、环境准备
 
 

我们选择Oracle 11gR2进行试验。
 
 

SQL> select * from v$version;
 
BANNER
 
-----------------------------------------
 
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
 
PL/SQL Release 11.2.0.1.0 - Production
 
CORE 11.2.0.1.0 Production
 
TNS for Linux: Version 11.2.0.1.0 - Production
 
NLSRTL Version 11.2.0.1.0 – Production
 
 

SQL> select log_mode from v$database;
 
LOG_MODE
 
------------
 
ARCHIVELOG
 
 

创建实验表空间和实验数据表T。注意:由于我们使用的是11.2.0.1版本,如果使用sys用户进行测试,会引起Bug 12411104 : RMAN DUPLICATE RMAN-05548 WHEN CONNECTED TO TARGET。为避免问题,我们切换入scott用户执行。
 
 

SQL> create tablespace tsptiptbl datafile size 100m autoextend off
 
  2  extent management local uniform size 1m
 
  3  segment space management auto;
 
Tablespace created
 
 

--切换到scott用户进行试验,这个很重要!!(在11.2.0.1版本上)
 
SQL> conn scott/tiger@wilson ;
 
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0

Connected as scott
 
 

SQL> create table t tablespace tsptiptbl as select * from dba_objects;
 
Table created
 
 

保留一个备份集合。
 
 

BS Key  Type LV Size      Device Type Elapsed Time Completion Time
 
------- ---- -- ---------- ----------- ------------ ---------------
 
142    Full    1.33G      DISK        00:02:52    16-FEB-14     

        BP Key: 142  Status: AVAILABLE  Compressed: NO  Tag: TAG20140216T191156
 
        Piece Name: /u01/flash_recovery_area/WILSON/backupset/2014_02_16/o1_mf_nnndf_TAG20140216T191156_9j177yk1_.bkp
 
  List of Datafiles in backup set 142
 
 (篇幅原因,有省略……)
 
 

BS Key  Size      Device Type Elapsed Time Completion Time
 
------- ---------- ----------- ------------ ---------------
 
143    21.50K    DISK        00:00:00    16-FEB-14     

        BP Key: 143  Status: AVAILABLE  Compressed: NO  Tag: TAG20140216T191454
 
        Piece Name: /u01/flash_recovery_area/WILSON/backupset/2014_02_16/o1_mf_annnn_TAG20140216T191454_9j17fgd3_.bkp
 
 

  List of Archived Logs in backup set 143
 
  Thrd Seq    Low SCN    Low Time  Next SCN  Next Time
 
  ---- ------- ---------- --------- ---------- ---------
 
  1    497    5398705    16-FEB-14 5398798    16-FEB-14
 
 

BS Key  Type LV Size      Device Type Elapsed Time Completion Time
 
------- ---- -- ---------- ----------- ------------ ---------------
 
144    Full    9.67M      DISK        00:00:04    16-FEB-14     

        BP Key: 144  Status: AVAILABLE  Compressed: NO  Tag: TAG20140216T191455
 
        Piece Name: /u01/flash_recovery_area/WILSON/autobackup/2014_02_16/o1_mf_s_839704495_9j17flq9_.bkp
 
  SPFILE Included: Modification time: 16-FEB-14
 
  SPFILE db_unique_name: WILSON
 
  Control File Included: Ckp SCN: 5398809      Ckp time: 16-FEB-14
 
 

3、误操作过程
 
 

当前时间,我们通过logseq编号进行表示。
 
 

SQL> select sequence#, status from v$log;
 
 SEQUENCE# STATUS
 
---------- ----------------
 
      502 INACTIVE
 
      503 CURRENT
 
      501 INACTIVE
 
 

SQL> create table t tablespace TSPTIPTBL as select * from dba_objects;
 
Table created
 
 

SQL> alter system switch logfile;
 
System altered
 
 

SQL> select sequence#, status from v$log;
 
 SEQUENCE# STATUS
 
---------- ----------------
 
      502 INACTIVE
 
      503 ACTIVE
 
      504 CURRENT
 
 

 

切换日志,到下一个日志对象中出现误操作。
 
 

SQL> alter system switch logfile;
 
System altered
 
 

SQL> select sequence#, status from v$log;
 
 

 SEQUENCE# STATUS
 
---------- ----------------
 
      505 CURRENT
 
      503 ACTIVE
 
      504 ACTIVE
 
 

SQL> truncate table t;
 
Table truncated
 
 

SQL> alter system switch logfile;
 
System altered
 
 

SQL> select sequence#, status from v$log;
 
 

 SEQUENCE# STATUS
 
---------- ----------------
 
      505 ACTIVE
 
      506 CURRENT
 
      504 ACTIVE
 
 

恢复目标是将表空间TSPTIPTBL恢复到logseq=504位置上。

更多详情见请继续阅读下一页的精彩内容:


    
 
 

您可能感兴趣的文章:

  • 如何强制删除或恢复SQLServer正在使用的数据库
  • 原来装了linux和win2k,使用LiLO启动,现在重新win2k,如何恢复使用LILO来引导使得Linux可用
  • 请问:使用fdisk/mbr清除bios中登陆选择菜单后,如何恢复?或重设
  • 在线等。。。使用压力测试工具进行测试有时出现httpd子进程CPU占用率100%,且压力撤除后无法恢复
  • Solaris桌面的程序控制面板中的一项被我使用右键菜单中的Move left/Move right移走了, 出不来了,怎么恢复啊?
  • oracle冷备份恢复和oracle异机恢复使用方法
  • 如何恢复数据库备份到一个已存在的正在使用的数据库上
  • MYSQL使用.frm恢复数据表结构的实现方法
  • 解析Mysql备份与恢复简单总结与tee命令的使用介绍
  • MySQL数据库恢复(使用mysqlbinlog命令)
  • MySQL数据库InnoDB数据恢复工具的使用小结详解
  • linux下objdump命令用法介绍及如何使用objdump命令进行反汇编
  • 我安装Samba 3.0.4,能够使用smbclient进行登陆,可是不能使用windowsXP进行登陆
  • 消息队列一般是怎么使用的,是采用While的方式进行轮询么
  • linux中使用sort命令进行排序的问题
  • 只使用InputStream/OutputStream进行IO操作行吗?
  • 菜鸟问题,小弟刚刚使用LINUX不久,不知道如何使用编程工具进行编译和运行!
  • 下载的linxu如何使用md5文件进行验证?
  • 使用jdk1.4+wstk3.2+tomcat+axis进行开发webservice
  • linux下动态库中如何导出对象进行使用
  • 有谁告诉我如何使用main中的args进行输入输出的操作?
  • 针对使用java进行硬件编程
  • linux 下两个硬盘进行复制,用DD该如何使用????
  • 使用Linux/UNIX的系统用户进行PHP用户登录验证
  • 如何使用gdb+gdbserver进行调试
  • jquery代码-如何使用多个属性来进行过滤
  • 在Linux下怎么使用pppoe进行拨号?
  • 请教:多线程使用同一个socket进行数据收发会出现什么问题?
  • 如何使用shell脚本实现fdisk /dev/sdb的自动分区,不与用户进行交互
  • sql使用cast进行数据类型转换示例
  • jsp 中如何使用word进行编辑?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • Python不使用print而直接输出二进制字符串
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • Office 2010 Module模式下使用VBA Addressof
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • c#中SAPI使用总结——SpVoice的使用方法
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍
  • 使用了QWidget的程序,如何使用后台程序启动它?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • 共享内存一般是怎么使用的,是同消息队列配合使用么
  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例
  • Jsp可否使用带有GUI的JavaBean,如何使用?
  • c/c++预处理命令预#,##使用介绍
  • asp程序使用的access在Linux下如何使用!
  • 在div中使用css让文字底部对齐的方法
  • 新装的Linux使用root用户不能使用FTP?
  • Python namedtuple(命名元组)使用实例
  • LINUX下使用Eclipse,如何使用交叉编译器?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,