iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >oracle12C—RMAN表级恢复
  • 282
分享到

oracle12C—RMAN表级恢复

2024-04-02 19:04:59 282人浏览 独家记忆
摘要

oracle数据库备份主要分为两类:逻辑和物理备份。每种备份类型都有其自身的优缺点。在之前的版本中,利用现有物理备份来恢复表或分区是不可行的。为了恢复特定对象,逻辑备份是必需的。在Oracle12c 版本中


oracle数据库备份主要分为两类:逻辑和物理备份。每种备份类型都有其自身的优缺点。在之前的版本中,利用现有物理备份来恢复表或分区是不可行的。为了恢复特定对象,逻辑备份是必需的。

在Oracle12c 版本中,你可以在发生drop或truncate的情况下从RMAN备份将一个特定的表或分区恢复到某个时间点或SCN。


RMAN的表级和表分区级恢复应用场景:

1、您需要将非常少量的表恢复到特定的时间点。在这种情况下,TSPITR 不是最有效的解决方案,因为它将表空间中的所有对象都移动到指定的时间点。

2、您需要恢复已被逻辑损坏或已被删除和清除的表。

3、Flashback Table 不可用,如undo 数据已经被覆盖。

4、恢复在DDL操作修改表结构之后丢失的数据。使用Flashback表是不可能的,因为在需要的时间点和当前时间之间的表上运行一个DDL。闪回表不能通过诸    如截断表操作之类的结构更改来倒表。


RMAN的表级和表分区级恢复限制:

①:SYS用户表或分区无法恢复

②:存储于SYSAUX和SYSTEM表空间下的表和分区无法恢复

③:当REMAP选项用来恢复的表包含NOT NULL约束时,恢复此表是不可行的

④:在备库上的表和分区表不能恢复


RMAN的表级和表分区级恢复前提:

1、The target database must be in read-write mode.

2、The target database must be in ARCHiveLOG mode.

3、You must have RMAN backups of the tables or table partitions as they existed at the point in time to which you want recover these        objects.

4、To recover single table partitions, the COMPATIBLE initialization parameter for target database must be set to 11.1.0 or higher.


恢复方法:

1、SCN

2、Time

3、Sequence number


RMAN从备份中自动处理恢复表或者表分区时的步骤:


1.确定哪些备份包含需要恢复的表或表分区,根据指定的时间来进行恢复。

2.确定目标主机上是否有足够的空间来创建将在表或分区恢复过程中使用的辅助实例。 如果需要的空间不足,那么RMAN会报错并退出恢复操作。

3.创建一个辅助数据库并恢复指定的表或表分区,并根据指定的时间来恢复指定的表或表分区到辅助数据库中。 可以指定用于存储已恢复表或表分区的元数   据的导出转储文件的名称和位置。

4.创建一个数据泵导出转储文件,其中包含已恢复的表或表分区。可以指定用于存储已恢复表或表分区的元数据的导出转储文件的名称和位置。

5.(可选操作)将上一步生产的数据泵文件导入到目标实例中。您可以选择不导入包含已恢复的表或表分区到目标数据库的导出转储文件。如果您不导入导    出转储文件作为恢复过程的一部分,那么您必须在稍后使用 impdp 手工导入。

6.(可选操作)在目标数据库中rename 恢复表或表分区。


准备测试环境:Oracle12.2

[oracle@localhost ~]$ sqlplus '/as sysdba'
SQL*Plus: Release 12.2.0.1.0 Production on Mon Jul 24 12:39:29 2017
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL>



一、恢复PDB中的表

①:在pdb中创建测试表:

[oracle@localhost ~]$ sqlplus admin/admin@192.168.2.100/testpdb
SQL*Plus: Release 12.2.0.1.0 Production on Fri Jul 21 16:28:24 2017
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
Last Successful login time: Fri Jul 21 2017 16:27:50 +08:00
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> alter session set nls_date_fORMat='yyyy-mm-dd hh34:mi:ss';
Session altered.
SQL> select sysdate from dual;   ---查看当前时间
SYSDATE
-------------------
2017-07-21 16:29:06
SQL> create table emp as select * from dba_objects;   ----创建测试表emp
Table created.
SQL> select sysdate from dual;     ---查看当前时间
SYSDATE
-------------------
2017-07-21 16:29:23
SQL>


②:备份全库

[oracle@localhost ~]$ rman target /
Recovery Manager: Release 12.2.0.1.0 - Production on Fri Jul 21 16:30:05 2017
Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.
connected to target database: ORCL (DBID=1476406003)
RMAN> backup database format='/home/oracle/bak/fulldb_%d_%U';   ----该备份会备份CDB及所有的pdb
Starting backup at 21-JUL-17
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=59 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=/opt/oracle/oradata/orcl/system01.dbf
input datafile file number=00003 name=/opt/oracle/oradata/orcl/sysaux01.dbf
input datafile file number=00013 name=/opt/oracle/oradata/orcl/system02.dbf
input datafile file number=00014 name=/opt/oracle/oradata/orcl/sysaux02.dbf
input datafile file number=00004 name=/opt/oracle/oradata/orcl/undotbs01.dbf
。。。。。。。。省略


③:登录pdb中,删除测试表

[oracle@localhost ~]$ sqlplus admin/admin@192.168.2.100/testpdb
SQL*Plus: Release 12.2.0.1.0 Production on Fri Jul 21 16:35:15 2017
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
Last Successful login time: Fri Jul 21 2017 16:28:24 +08:00
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> alter session set nls_date_format='yyyy-mm-dd hh34:mi:ss';
SQL> select sysdate from dual;   ----查看当前时间
SYSDATE
-------------------
2017-07-21 16:35:56
SQL> create table test_emp as select * from dba_objects;    ---再创建一个测试表test_emp
SQL> select current_scn from v$database;   ---查看当前数据库的SCN号,一会用于恢复使用
CURRENT_SCN
-----------
    1664487
SQL> commit;  
SQL> select sysdate from dual;
SYSDATE
-------------------
2017-07-21 16:37:04
SQL> drop table emp;     ----删除第一个刚才备份的测试表emp
Table dropped.
SQL> select sysdate from dual;
SYSDATE
-------------------
2017-07-21 16:38:31
SQL> drop table test_emp;    ----再删除刚刚创建的测试表test_emp(注意该表没有备份)
SQL> select current_scn from v$database;   ----删除表后,再查看当前数据库的SCN
CURRENT_SCN
-----------
    1665210
SQL> select current_scn from v$database;   
CURRENT_SCN
-----------
    1665213
SQL> 
-----注意:上面的操作我们可以看出 我们一共创建了两张表,一张表emp备份了,另外一张test_emp 是备份后创建的,我们都删除了,接下来进行恢复


④:rman恢复pdb中的表

[oracle@localhost ~]$ rman target /
Recovery Manager: Release 12.2.0.1.0 - Production on Fri Jul 21 17:32:24 2017
Copyriht (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.
connected to target database: ORCL (DBID=1476406003)
RMAN> recover table admin.test_emp OF PLUGGABLE DATABASE testpdb until scn 1664487  auxiliary destination '/opt/oracle/test';   ---因为是备份pdb中的表,所以要指定pdb
auxiliary instance file /opt/oracle/test/ORCL/539E6DBB875552F2E055000000000001/datafile/o1_mf_temp_dq3l21wf_.tmp deleted
auxiliary instance file /opt/oracle/test/ORCL/datafile/o1_mf_temp_dq3l1tmp_.tmp deleted
auxiliary instance file /opt/oracle/test/KSFR_PITR_TESTPDB_ORCL/onlinelog/o1_mf_3_dq3l4kg0_.log deleted
auxiliary instance file /opt/oracle/test/KSFR_PITR_TESTPDB_ORCL/onlinelog/o1_mf_2_dq3l47rl_.log deleted
auxiliary instance file /opt/oracle/test/KSFR_PITR_TESTPDB_ORCL/onlinelog/o1_mf_1_dq3l47nn_.log deleted
auxiliary instance file /opt/oracle/test/KSFR_PITR_TESTPDB_ORCL/539E6DBB875552F2E055000000000001/datafile/o1_mf_test_dq3l3xdf_.dbf deleted
auxiliary instance file /opt/oracle/test/ORCL/539E6DBB875552F2E055000000000001/datafile/o1_mf_sysaux_dq3l0sf7_.dbf deleted
auxiliary instance file /opt/oracle/test/ORCL/datafile/o1_mf_sysaux_dq3kyd0s_.dbf deleted
auxiliary instance file /opt/oracle/test/ORCL/datafile/o1_mf_sysaux_dq3kyd0g_.dbf deleted
auxiliary instance file /opt/oracle/test/ORCL/539E6DBB875552F2E055000000000001/datafile/o1_mf_undotbs1_dq3l0sg1_.dbf deleted
auxiliary instance file /opt/oracle/test/ORCL/datafile/o1_mf_undotbs1_dq3kyd0x_.dbf deleted
auxiliary instance file /opt/oracle/test/ORCL/539E6DBB875552F2E055000000000001/datafile/o1_mf_system_dq3l0sfc_.dbf deleted
auxiliary instance file /opt/oracle/test/ORCL/datafile/o1_mf_system_dq3kyd0m_.dbf deleted
auxiliary instance file /opt/oracle/test/ORCL/datafile/o1_mf_system_dq3kyd05_.dbf deleted
auxiliary instance file /opt/oracle/test/ORCL/controlfile/o1_mf_dq3ky1cb_.ctl deleted
auxiliary instance file tspitr_ksFr_40802.dmp deleted
Finished recover at 21-JUL-17
-----日志部分省略,这就算恢复完成了,
----补充
RMAN> recover table admin.test_emp OF PLUGGABLE DATABASE testpdb until scn 1664487  auxiliary destination '/opt/oracle/test' remap table admin.test_emp:test_empbak;   ---将恢复的表重命名



⑤:验证是否恢复完成:

SQL> select count(*) from emp;
  COUNT(*)
----------
     72633
SQL> select count(*) from test_emp;
  COUNT(*)
----------
     72634

---从上面的查询情况可以得知,恢复是完整的,没有问题;但是,大家肯定有个疑问,那就是为什么我没有进行备份的表怎么还恢复成功了,有疑问的可以去看看官方文档,多了解下恢复的原理。


二、Oracle12C(无pdb级的表恢复)

  ---在安装的过程中没有选择PDB的特性,把Oracle12C和之前的版本一样使用安装的方式:

恢复的流程是和上面PDB级恢复一样的,只是在恢复的命令上有差别,如:

RMAN> recover table admin.emp until scn 1665210 remap table admin.emp:emp_bak auxiliary destination '/hoem/oracle/bak';


注意:

①:分区表的恢复方法也是同样的

②:即使表emp做了DDL操作修改了表结构,也可以用这种方法进行恢复的;


Oracle12Crman恢复表的详细内容请查看官方文档:

Http://docs.oracle.com/database/121/BRADV/rcmresind.htm#BRADV686


您可能感兴趣的文档:

--结束END--

本文标题: oracle12C—RMAN表级恢复

本文链接: https://www.lsjlt.com/news/39631.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • [RMAN]表空间的恢复
    1.     恢复条件     恢复表空间实际上就是恢复其所对应的数据文件(一个表空间可以对应 1 个或多...
    99+
    2024-04-02
  • RMAN如何恢复drop purge的表
    这篇文章主要介绍RMAN如何恢复drop purge的表,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!@ORA12C>  alter s...
    99+
    2024-04-02
  • Oracle 12C新特性-RMAN恢复表
    Oracle 12C 新特性 -RMAN 恢复表 oracle 如何恢复单张表数据? 场景一:处理简单,恢复速度快 1 如果表被 delete 、 update 、 ...
    99+
    2024-04-02
  • rman怎么恢复spfile
    rman怎么恢复spfile,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。实验准备OGG (DBID=3068169019)spfile:/u...
    99+
    2024-04-02
  • rman 增量备份恢复
    rman异机增量备份恢复 https://blog.csdn.net/qq_28766111/article/details/85252754 https://blog.csdn.net...
    99+
    2024-04-02
  • 【RMAN】rman使用NORESTELOGS 方式恢复数据库
    关于备份、迁移具体命令方式可参考文档:http://blog.itpub.net/29487349/viewspace-2142872/ 全备恢复数据文件后,准备使用增量完整恢复数据时,选择使用nore...
    99+
    2024-04-02
  • [RMAN]异机恢复实验
    一、        准备工作 1.     环境设定 ...
    99+
    2024-04-02
  • RMAN恢复文件的步骤
    这篇文章主要讲解了“RMAN恢复文件的步骤”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“RMAN恢复文件的步骤”吧!1.   ...
    99+
    2024-04-02
  • rman怎么恢复数据文件
    rman怎么恢复数据文件,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。恢复可以在数据库处于 open 或 mount 状态下进行,只需4个步骤...
    99+
    2024-04-02
  • RMAN如何实现备份与恢复
    小编给大家分享一下RMAN如何实现备份与恢复,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! ###############################################...
    99+
    2024-04-02
  • RMAN全库恢复的示例分析
    这篇文章主要介绍RMAN全库恢复的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一 完全恢复1.数据库全库【完全恢复】$ rman target /  &...
    99+
    2024-04-02
  • RMAN如何快速恢复数据库
    小编给大家分享一下RMAN如何快速恢复数据库,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 10g会使用RMAN备份恢复一般是DBA的工作,对技术要求较高,且对oracle的组织结构有较...
    99+
    2024-04-02
  • Oracle rman怎么恢复时间差异
    要使用Oracle RMAN恢复时间差异,您可以按照以下步骤进行操作: 确定要恢复的时间点:确定要将数据库恢复到的特定时间点。这...
    99+
    2024-04-09
    Oracle
  • RMAN数据文件的恢复步骤
    这篇文章主要介绍“RMAN数据文件的恢复步骤”,在日常操作中,相信很多人在RMAN数据文件的恢复步骤问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”RMAN数据文件的恢复步骤”...
    99+
    2024-04-02
  • 使用RMAN来PDB执行完全恢复
    可以对一个或多个PDB执行完全恢复而不影响其它为open状态的PDB的操作。RMAN有两种方法来恢复PDB: .连接到CDB的root容器,然后使用restore pluggable database...
    99+
    2024-04-02
  • Oracle RMAN异机恢复的示例分析
    这篇文章给大家分享的是有关Oracle RMAN异机恢复的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Oracle RMAN异机恢复 实验场景:数据库服务器本机磁盘损坏...
    99+
    2024-04-02
  • 使用RMAN恢复数据库的过程
    这篇文章主要讲解了“使用RMAN恢复数据库的过程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“使用RMAN恢复数据库的过程”吧!由于需要搭建一个测试环境,把...
    99+
    2024-04-02
  • Oracle RMAN恢复测试的方法教程
    本篇内容主要讲解“Oracle RMAN恢复测试的方法教程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle RMAN恢复测试的方法教程”吧!1 启动归...
    99+
    2024-04-02
  • RMAN如何实现完全恢复错误
    这篇文章主要为大家展示了“RMAN如何实现完全恢复错误”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“RMAN如何实现完全恢复错误”这篇文章吧。RMAN恢复案例:...
    99+
    2024-04-02
  • 使用RMAN备份对Non-CDB中的表按时间点进行恢复
    RMAN使用recover命令来将表或表分区恢复到指定的时间点。为了从RMAN备份中恢复表与表分区,你必须提供以下信息: .要被恢复的表或表分区 .表或表分区要被恢复到的特定时间点 .被恢复的表或...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作