iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Oracle 12C新特性-RMAN恢复表
  • 270
分享到

Oracle 12C新特性-RMAN恢复表

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

Oracle 12C 新特性 -RMAN 恢复表 oracle 如何恢复单张表数据? 场景一:处理简单,恢复速度快 1 如果表被 delete 、 update 、

Oracle 12C 新特性 -RMAN 恢复表

oracle 如何恢复单张表数据?

场景一:处理简单,恢复速度快

1 如果表被 delete 、 update 、 insert ,并已经 commit ,在时间和 undo 允许的情况下,可以通过闪回将数据迅速找回;

alter table t1 enable row movement;

--- 基于 Scn 闪回

flashback table t1 to scn 1726953;

--- 基于时间闪回

flashback table t1 to timestamp to_timestamp('2020-02-08 12:00:00','yyyy-mm-dd hh34:mi:ss');

或者通过CTAS 方式将数据保存到另一张表里

create table t1_recv as select * from t1 as of timestamp (systimestamp - interval '2' minute);

2 如果表被 drop ,并且没有使用 purge 清空回收站,可以通过回收站找回被删除的表 (user_recyclebin);

--- 将回收站的数据通过 CTAS 方式保存到另一张表里

show recyclebin

select object_name,ORIGINAL_NAME from user_recyclebin;

select original_name,operation,droptime from recyclebin;

create table t1 as select * from "BIN$HKCe4+VkDVXgU8UDqMAWvQ==$0";

--- 或者直接闪回表

flashback table t1 to before drop;

场景二:通过备份进行恢复

处理复杂,恢复速度慢的场景

1 如果表被 delete 、 update 、 insert ,并已经 commit ,时间已过去很久, undo 信息已被覆盖:

或者 表被truncate 或 drop 并清空了回收站。

如果有expdp 或 exp 备份,可以用备份恢复,会丢失数据。

如果有rman 备份, 12C 之前,可以将备份基于时间点不完全恢复到另一个数据库里,然后通过 expdp 导出丢失数据的表,在导入到生产库,缺点是操作繁琐,时间较长。

从12C 开始,通过 rman 恢复单张表,操作命令变的更简单,但恢复时间还是会比较长。

场景三:处理难度大,不一定能完全恢复的场景

表被误操作(delete 、 update 、 truncate 、 drop) ,并且没有有效的备份,回收站已被清空, undo 数据已被覆盖:

可以考虑bbed,ODU 等工具进行数据恢复。

本次实验模拟pdb 中一张表误被 delete ,并通过 rman 进行单表恢复。

实验过程如下:

一 查看数据库基本信息

1 数据库版本为19C( 相当于 12.2.0.3 版本 )

sql> select banner_full from v$version;

BANNER_FULL

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

oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.3.0.0.0

  检查并 启动归档模式

SQL> arcHive log list;

Database log mode        No Archive Mode

Automatic archival        Disabled

Archive destination        /u01/app/oracle/product/19.0.0/dbhome_1/dbs/arch

Oldest online log sequence     12

Current log sequence        14

[root@cjcos ~]# mkdir /arch

[root@cjcos ~]# chown oracle.oinstall /arch

SQL> alter system set log_archive_dest_1='location=/arch' scope=both;

SQL> alter system set log_archive_fORMat = "cjcpdb_arch_%t_%s_%r.arc" scope=spfile;

SQL> shutdown immediate

SQL> startup mount

SQL> alter database archivelog;

SQL> alter database open;

SQL> archive log list;

Database log mode        Archive Mode

Automatic archival        Enabled

Archive destination        /arch

Oldest online log sequence     12

Next log sequence to archive   14

Current log sequence        14

SQL> alter system switch logfile;

[oracle@cjcos ~]$ cd /arch/

[oracle@cjcos arch]$ ll -rth

total 74M

-rw-r----- 1 oracle oinstall 74M Feb  8 11:04 cjcpdb_arch_1_14_1030641846.arc

创建测试数据

SQL> conn sys/oracle@cjcpdb as sysdba

Connected.

SQL> select name from v$dbfile;

NAME

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

/u01/app/oracle/oradata/CJCDB/cjcpdb/system01.dbf

/u01/app/oracle/oradata/CJCDB/cjcpdb/sysaux01.dbf

/u01/app/oracle/oradata/CJCDB/cjcpdb/undotbs01.dbf

/u01/app/oracle/oradata/CJCDB/cjcpdb/users01.dbf

SQL> create tablespace cjctbs datafile '/u01/app/oracle/oradata/CJCDB/cjcpdb/cjctbs01.dbf' size 10M autoextend on;

SQL> create user cjc identified by cjc default tablespace cjctbs;

SQL> grant connect,resource,dba to cjc;

SQL> conn cjc/cjc@cjcpdb

SQL> create table t1 as select * from dba_objects;

SQL> insert into t1 select* from t1;

72397 rows created.

SQL> /

144794 rows created.

SQL> commit;

SQL> update t1 set object_id=rownum;

289588 rows updated.

SQL> commit;

Commit complete.

:全库备份

[root@cjcos ~]# mkdir /backup/rman -p

[root@cjcos ~]# chown oracle.oinstall /backup -R

[oracle@cjcos ~]$ rman  target /

Recovery Manager: Release 19.0.0.0.0 - Production on Sat Feb 8 11:21:00 2020

Version 19.3.0.0.0

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

connected to target database: CJCDB (DBID=3744777523)

RMAN>

run

{

allocate channel ch2 type disk;

allocate channel ch3 type disk;

backup database tag 'full' format '/backup/rman/%d_full_%T_%U.bak';

sql 'alter system archive log current';

backup archivelog all tag 'arch' format '/backup/rman/%d_arch_%T_%U.bak';

backup current controlfile tag 'ctl' format '/backup/rman/%d_ctl_%T_%U.bak';

release channel ch2;

release channel ch3;

}

查看备份信息

RMAN> list backup of database;

[oracle@cjcos rman]$ pwd

/backup/rman

[oracle@cjcos rman]$ ll -rth

total 2.4G

-rw-r----- 1 oracle oinstall 415M Feb  8 11:48 CJCDB_full_20200208_13uo0vma_1_1.bak

-rw-r----- 1 oracle oinstall 789M Feb  8 11:48 CJCDB_full_20200208_12uo0vma_1_1.bak

-rw-r----- 1 oracle oinstall 272M Feb  8 11:49 CJCDB_full_20200208_15uo0vp0_1_1.bak

-rw-r----- 1 oracle oinstall 302M Feb  8 11:49 CJCDB_full_20200208_14uo0vp0_1_1.bak

-rw-r----- 1 oracle oinstall 305M Feb  8 11:50 CJCDB_full_20200208_16uo0vqd_1_1.bak

-rw-r----- 1 oracle oinstall 252M Feb  8 11:50 CJCDB_full_20200208_17uo0vqe_1_1.bak

-rw-r----- 1 oracle oinstall 6.3M Feb  8 11:50 CJCDB_arch_20200208_1auo0vrt_1_1.bak

-rw-r----- 1 oracle oinstall  74M Feb  8 11:50 CJCDB_arch_20200208_19uo0vrt_1_1.bak

-rw-r----- 1 oracle oinstall 125K Feb  8 11:50 CJCDB_arch_20200208_1buo0vs1_1_1.bak

-rw-r----- 1 oracle oinstall  18M Feb  8 11:50 CJCDB_ctl_20200208_1cuo0vs2_1_1.bak

:查看当前SCN 等信息

SQL> conn cjc/cjc@cjcpdb

Connected.

SQL> show con_name user

CON_NAME

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

CJCPDB

USER is "CJC"

SQL> select count(*) from t1;

  COUNT(*)

----------

    289588

SQL> select to_char(sysdate,'yyyy-mm-dd hh34:mi:ss') from dual;

TO_CHAR(SYSDATE,'YY

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

2020-02-08 11:53:51

SQL> select current_scn from v$database;

CURRENT_SCN

-----------

    2301721

:模拟误删除操作

SQL> delete t1 where object_id>10;

289578 rows deleted.

SQL> commit;

Commit complete.

SQL> select count(*) from t1;

  COUNT(*)

----------

10

--- 针对 delete 级别的误删除,在时间和 undo 允许的情况下,可以通过闪回将数据迅速找回

SQL> create table t2 as select * from t1 as of timestamp (systimestamp - interval '3' minute);

Table created.

SQL> select count(*) from t2;

  COUNT(*)

----------

    289588

 

本案例使用rman 进行 t1 表恢复,恢复到删除操作之前的时刻。

:使用rman 备份恢复 t1 表

1 创建辅助数据库恢复目录 /auxiliary/recover ,创建 expdp 导出目录 /auxiliary/dumpfiles

[root@cjcos ~]# mkdir /auxiliary/{recover,dumpfiles} -p

[root@cjcos ~]# chown oracle.oinstall /auxiliary -R

[root@cjcos ~]# ll -rth /auxiliary/

total 0

drwxr-xr-x 2 oracle oinstall 6 Feb  8 12:14 recover

drwxr-xr-x 2 oracle oinstall 6 Feb  8 12:14 dumpfiles

 2 rman执行恢复操作

[oracle@cjcos ~]$ rman target /

Recovery Manager: Release 19.0.0.0.0 - Production on Sat Feb 8 12:15:53 2020

Version 19.3.0.0.0

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

connected to target database: CJCDB (DBID=3744777523)

RMAN>

run{

RECOVER TABLE CJC.T1 OF PLUGGABLE DATABASE CJCPDB

UNTIL SCN 2301721

AUXILIARY DESTINATION '/auxiliary/recover'

DATAPUMP DESTINATION '/auxiliary/dumpfiles'

DUMP FILE 't1_scn_2301721.dmp'

REMAP TABLE 'CJC'.'T1':'T1_RECVR';

}

1 恢复 CJCPDB 数据库下 CJC 用户下的 T1 表。

2 恢复到 SCN 2301721 时刻。

3 恢复过程中创建的辅助实例恢复位置 /auxiliary/recover 。

4 恢复过程中通过 expdp 导出的备份位置 /auxiliary/dumpfiles ,备份名为 t1_scn_2301721.dmp 。

5 并将恢复数据插入到 T1_RECVR 表中,验证数据没问题后再手动将 T1_RECVR 数据插回到 T1 中。

下面是截取恢复过程中部分信息,均是自动完成,无需人为干预。

......

---1 创建辅助实例 DiFo 并恢复数据

Creating automatic instance, with SID='DiFo'

initialization parameters used for automatic instance:

db_name=CJCDB

db_unique_name=DiFo_pitr_CJCPDB_CJCDB

compatible=19.0.0

db_block_size=8192

db_files=200

diagnostic_dest=/u01/app/oracle

_system_trig_enabled=FALSE

sga_target=1104M

processes=200

db_create_file_dest=/auxiliary/recover

log_archive_dest_1='location=/auxiliary/recover'

enable_pluggable_database=true

_clone_one_pdb_recovery=true

#No auxiliary parameter file used

starting up automatic instance CJCDB

......

---2 基于 scn 恢复

contents of Memory Script:

{

# set requested point in time

set until  scn 2301721;

# online the datafiles restored or switched

sql clone 'CJCPDB' "alter database datafile 13 online";

# recover and open resetlogs

recover clone database tablespace  "CJCPDB":"CJCTBS", "SYSTEM", "CJCPDB":"SYSTEM", "UNDOTBS1", "CJCPDB":"UNDOTBS1", "SYSAUX", "CJCPDB":"SYSAUX" delete archivelog;

alter clone database open resetlogs;

}

executing Memory Script

......

--- 3  expdp 导出 T1 表数据,到 /auxiliary/dumpfiles/t1_scn_2301721.dmp

contents of Memory Script:

{

# create directory for datapump import

sql 'CJCPDB' "create or replace directory

TSPITR_DIROBJ_DPDIR as ''

/auxiliary/dumpfiles''";

# create directory for datapump export

sql clone 'CJCPDB' "create or replace directory

TSPITR_DIROBJ_DPDIR as ''

/auxiliary/dumpfiles''";

}

executing Memory Script

.....

Performing export of tables...

   EXPDP> Starting "SYS"."TSPITR_EXP_DiFo_aBzr":  

   EXPDP> Processing object type TABLE_EXPORT/TABLE/TABLE_DATA

   EXPDP> Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS

   EXPDP> Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER

   EXPDP> Processing object type TABLE_EXPORT/TABLE/TABLE

   EXPDP> . . exported "CJC"."T1"                                  38.18 MB  289588 rows

   EXPDP> Master table "SYS"."TSPITR_EXP_DiFo_aBzr" successfully loaded/unloaded

   EXPDP> ******************************************************************************

   EXPDP> Dump file set for SYS.TSPITR_EXP_DiFo_aBzr is:

   EXPDP>   /auxiliary/dumpfiles/t1_scn_2301721.dmp

   EXPDP> Job "SYS"."TSPITR_EXP_DiFo_aBzr" successfully completed at Sat Feb 8 12:32:57 2020 elapsed 0 00:01:45

Export completed

......

--- 4  impdp 将 T1 数据导入到正式库 T1_RECVR 表中

Performing import of tables...

   IMPDP> Master table "SYS"."TSPITR_IMP_DiFo_BABf" successfully loaded/unloaded

   IMPDP> Starting "SYS"."TSPITR_IMP_DiFo_BABf":  

   IMPDP> Processing object type TABLE_EXPORT/TABLE/TABLE

   IMPDP> Processing object type TABLE_EXPORT/TABLE/TABLE_DATA

   IMPDP> . . imported "CJC"."T1_RECVR"                            38.18 MB  289588 rows

   IMPDP> Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS

   IMPDP> Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER

   IMPDP> Job "SYS"."TSPITR_IMP_DiFo_BABf" successfully completed at Sat Feb 8 12:34:17 2020 elapsed 0 00:00:49

Import completed

 

:查看数据已经恢复到t1_recvr

---对比数据没问题后可以 选择手动 插回到t1 中

SQL> conn cjc/cjc@cjcpdb

SQL> select count(*) from t1;

  COUNT(*)

----------

10

SQL> select count(*) from t1_recvr;

  COUNT(*)

----------

289588

详细信息可参考官方文档:

https://docs.oracle.com/en/database/oracle/oracle-database/12.2/bradv/rman-recovering-tables-partitions.html#GUID-04D1B794-25D0-4C1E-9A98-F08AD361B41E

Database Backup and Recovery User's Guide

22.1.3 Basic Concepts of Recovering Tables and Table Partitions from RMAN Backups

...... 

欢迎关注我的微信公众号"IT小Chen",共同学习,共同成长!!!

Oracle 12C新特性-RMAN恢复表

Oracle 12C新特性-RMAN恢复表


您可能感兴趣的文档:

--结束END--

本文标题: Oracle 12C新特性-RMAN恢复表

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

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

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

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

下载Word文档
猜你喜欢
  • Oracle 12C新特性-RMAN恢复表
    Oracle 12C 新特性 -RMAN 恢复表 oracle 如何恢复单张表数据? 场景一:处理简单,恢复速度快 1 如果表被 delete 、 update 、 ...
    99+
    2024-04-02
  • Oracle 12c RMAN新特性
    Oracle 12c RMAN新特性 SYSBACKUP This privilege allows a user to perform backup and recovery operations e...
    99+
    2024-04-02
  • Oracle 12c 两个新特性
    1. ALTER DATABASE MOVE DATAFILE 可以在线迁移数据文件到新路径,system表空间也可以move。 SYS@czh29c > alter&nb...
    99+
    2024-04-02
  • Oracle 12C新特性是什么
    这篇文章主要讲解了“Oracle 12C新特性是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Oracle 12C新特性是什么”吧!在12c里,推出了H...
    99+
    2024-04-02
  • Oracle 12c新特性有哪些
    本篇内容介绍了“Oracle 12c新特性有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  1. 自...
    99+
    2024-04-02
  • Oracle 12C使用RMAN将PDB中分表的多个分区恢复到新用户方案中
    Oracle 12C使用RMAN将PDB中分表的多个分区恢复到新用户方案中的操作如下 1.对整个CDB(jy)生成RMAN备份 [oracle@jytest1 ~]$ rman target/ c...
    99+
    2024-04-02
  • Oracle 数据库12c新特性总结
    本篇内容介绍了“Oracle 数据库12c新特性总结”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  1....
    99+
    2024-04-02
  • Oracle 12c的ASM新特性是什么
    这篇文章主要讲解了“Oracle 12c的ASM新特性是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Oracle 12c的ASM新特性是什么”吧!or...
    99+
    2024-04-02
  • Oracle 12c新特性维护表分区Global Index不失效
    1.新特性官方文档说明 ...
    99+
    2024-04-02
  • Oracle 数据库12c新特性有哪些
    这篇文章将为大家详细讲解有关Oracle 数据库12c新特性有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。  1. 在线重命名和重新定位活跃数据文件   不同于以...
    99+
    2024-04-02
  • Oracle 12C如何使用RMAN将Non-CDB中分表的多个分区恢复到新用户方案中
    这篇文章主要介绍了Oracle 12C如何使用RMAN将Non-CDB中分表的多个分区恢复到新用户方案中,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起...
    99+
    2024-04-02
  • [RMAN]表空间的恢复
    1.     恢复条件     恢复表空间实际上就是恢复其所对应的数据文件(一个表空间可以对应 1 个或多...
    99+
    2024-04-02
  • Oracle数据库12c的新特性有哪些
    这篇“Oracle数据库12c的新特性有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“...
    99+
    2024-04-02
  • Oracle 12c如何使用RMAN备份对Non-CDB中的表按时间点进行恢复
    小编给大家分享一下Oracle 12c如何使用RMAN备份对Non-CDB中的表按时间点进行恢复,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起...
    99+
    2024-04-02
  • Oracle11g 新特性:优化Rman备份UNDO表空间
    Oracle11gR1的新特性,Rman备份UNDO表空间时排除已经提交的会话对应的数据,提高了Rman备份的效率。官方文档:http://docs.oracle.com/cd/B28359_01/serv...
    99+
    2024-04-02
  • RMAN如何恢复drop purge的表
    这篇文章主要介绍RMAN如何恢复drop purge的表,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!@ORA12C>  alter s...
    99+
    2024-04-02
  • ORACLE 12C 优化器的一些新特性总结(二)
    Oracle 12c 数据库在优化器方面确实做出了很大进步。在 Oracle 12c 数据库众多特性中,自适应查询优化是较大的功能变化了。它使优化器能够对执行计划进行实时调整。当现有的统...
    99+
    2024-04-02
  • oracle 12c新特性之在线移动数据文件
    11g时是无法在线移动数据文件的,12c增强了移动数据文件的功能,不仅可以更改路径,还可以给数据文件改名。 oracle 12c在线移动或更名数据文件语法案例: alter database mo...
    99+
    2024-04-02
  • Oracle 12C如何使用RMAN将Non-CDB多个用户方案中的多个表或表分区恢复到新用户方案中
    这篇文章主要介绍Oracle 12C如何使用RMAN将Non-CDB多个用户方案中的多个表或表分区恢复到新用户方案中,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Oracle 12C...
    99+
    2024-04-02
  • Oracle11g备份恢复新特性有哪些
    小编给大家分享一下Oracle11g备份恢复新特性有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 闪回日志急救还记得 O...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作