Oracle 12c系列(十) | 12c中的Recovering Tables and Table Partitions

在Oracle 12c之前的版本中,rman进行数据恢复时只能进行database/tablespace/datafile/block四种级别的恢复,如果误操作删除某张表或表中数据,无法通过闪回进行数据还原时,且有完整备份以及归档,该种情况下可以进行表空间时间点恢复,但恢复方式较麻烦,在Oracle12c中,Oracle对rman功能进行了增强,除了之前的四种级别的恢复,rman也提供了表/表分区级别的恢复,该特性可以直接从现有的rman备份中来恢复表/表分区,且恢复的过程不影响数据库中的其他的对象。

表级别的恢复流程与表空间时间点恢复流程相似,只是Oracle对手工的表空间时间点恢复进行了一层封装,恢复时整个流程如下:

1.创建一个辅助实例。

2.在辅助实例中通过备份集对需要恢复的表/表分区所在的数据文件进行restore。

3.recover until scn/timestamp/sequence number。

4.通过数据泵功能将需要恢复的表在辅助数据库中导出到指定目录下。

5.将需要恢复的表导入到生产库中。

6.清理辅助数据库。

指定恢复时间点时可以有以下3种级别:

1.SCN

2.TIME

3.SEQUENCE NUMBER

表/表分区级别的恢复有如下前提:

1.数据库必须处于读写模式。

2.数据库必须处于归档模式。

3.必须存在表/表分区的RMAN备份。

4.当要恢复单个表分区时,COMPATIBLE参数需要设置为11.1.0或更高。

表/表分区级别的恢复存在如下限制:

1.SYS用户下的表/表分区无法进行恢复。

2.SYSTEM/SYSAUX表空间中的表/表分区无法进行恢复。

3.无法恢复备库中的表/表分区。

4.当使用REMAP选项时无法恢复具有NOT NULL约束的表。 

关于表/表分区恢复详细信息请参考官方文档,连接如下:

https://docs.oracle.com/en/database/oracle/oracle-database/12.2/bradv/rman-recovering-tables-partitions.html#GUID-87B7F772-335F-4179-81C9-91678D026D01

下面演示表级别的恢复,实验使用如下步骤:

1.创建表t,及相应索引idx_t_name。

2.做RMAN全备。

3.查看当前scn。

4.删除表。

5.在rman中恢复表t。

6.检查表中数据是否恢复。 

实验过程:

1.创建表t,及相应索引idx_t_name

07:55:36 yyh. pdb18c>create table t(id number, name varchar2(20));

Table created.

Elapsed: 00:00:00.12
07:55:49 yyh. pdb18c>insert into t values(0,'QData');

1 row created.

Elapsed: 00:00:00.07
07:55:59 yyh. pdb18c>insert into t values(1,'QData Cloud');

1 row created.

Elapsed: 00:00:00.00
07:56:04 yyh. pdb18c>commit;

Commit complete.

Elapsed: 00:00:00.01
07:56:05 yyh. pdb18c>create index idx_t_name t(name);
create index idx_t_name t(name)
                    *
ERROR at line 1:
ORA-00969: missing ON keyword


Elapsed: 00:00:00.00
07:56:23 yyh. pdb18c>create index idx_t_name on t(name);

Index created.

Elapsed: 00:00:00.10
07:56:26 yyh. pdb18c>select * from t;

    ID NAME
---------- ------------------------------
     0 QData
     1 QData Cloud

Elapsed: 00:00:00.03
07:56:33 yyh. pdb18c>

2.做RMAN全备

RMAN> backup database;

Starting backup at 07-AUG-18
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=80 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=/ssd2/ora18c/system01.dbf
input datafile file number=00003 name=/ssd2/ora18c/sysaux01.dbf
input datafile file number=00004 name=/ssd2/ora18c/undotbs01.dbf
input datafile file number=00007 name=/ssd2/ora18c/users01.dbf
channel ORA_DISK_1: starting piece 1 at 07-AUG-18
channel ORA_DISK_1: finished piece 1 at 07-AUG-18
piece handle=/ssd2/backup/20180807_full_09t9ukmd_1_1.bak tag=TAG20180807T075908 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:35
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00010 name=/ssd2/ora18c/pdb18c/sysaux01.dbf
input datafile file number=00009 name=/ssd2/ora18c/pdb18c/system01.dbf
input datafile file number=00011 name=/ssd2/ora18c/pdb18c/undotbs01.dbf
input datafile file number=00012 name=/ssd2/ora18c/pdb18c/users01.dbf
channel ORA_DISK_1: starting piece 1 at 07-AUG-18
channel ORA_DISK_1: finished piece 1 at 07-AUG-18
piece handle=/ssd2/backup/20180807_full_0at9ukng_1_1.bak tag=TAG20180807T075908 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:15
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00006 name=/ssd2/ora18c/pdbseed/sysaux01.dbf
input datafile file number=00005 name=/ssd2/ora18c/pdbseed/system01.dbf
input datafile file number=00008 name=/ssd2/ora18c/pdbseed/undotbs01.dbf
channel ORA_DISK_1: starting piece 1 at 07-AUG-18
channel ORA_DISK_1: finished piece 1 at 07-AUG-18
piece handle=/ssd2/backup/20180807_full_0bt9uknv_1_1.bak tag=TAG20180807T075908 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:25
Finished backup at 07-AUG-18

Starting Control File and SPFILE Autobackup at 07-AUG-18
piece handle=/ssd2/softw
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值