Oracle11.2.0.4从RMAN备份中快速恢复单个表的方法

文章目录

  • 前言
  • 一、查询所要恢复的表所涉及的表空间
  • 二、创建用于恢复的数据库
  • 三、恢复步骤
    • 1.恢复控制文件
    • 2.修改redo日志名称
    • 3.表空间恢复
    • 4.表空间recover
    • 5.查询数据


前言

由于用户误操作导致某表中的数据错乱,导致业务不能正常使用,现需要将该表恢复到一天前的状态。
用户数据库版本是11.2.0.4,11g版本对于这种误操作恢复,有3中恢复手段:
1.通过查询保留在undo表空间中的数据库快照,来恢复保留在undo表空间中的数据快照,但是这种方式受限于快照保留时间和undo表空间大小限制,可能无法获取误操作前的数据快照。如果undo保留的数据快照无法恢复误操作之前的数据,还可以使用数据库闪回功能将该表状态闪回至误操作之前状态,该功能需要求数据库闪回功能在误操作的时候是打开的并且是否能恢复到误操作之前状态受限于闪回区的大小。
2.通过归档日志挖掘,获取误操作的反向sql,将误操作的数据恢复至操作之前的状态。
3.通过rman恢复数据库(前提是rman备份是可用的),恢复整个数据库到指定时间或者恢复单个表空间(包含所要恢复的表的表空间及系统表空间)到指定时间。

12C新增恢复手段:基于rman恢复单个表,12C版本可以直接恢复某个表而不用将整个数据库或者表空间恢复。


此次恢复因为误操作时间已经过去很长时间,从undo中已经无法恢复到误操作之前状态并且数据库也没有开启闪回。因为数据库整体数据量不大,整库恢复和表空间恢复时间快于归档挖掘时间,所以这里我们选择恢复表空间的方式恢复表数据。

一、查询所要恢复的表所涉及的表空间

with temp as  (
select tablespace_name from dba_tables where owner=UPPER('&SCHEMA') and table_name=UPPER('&TABNAME') union all
select tablespace_name from dba_TAB_PARTITIONS where TABLE_OWNER=UPPER('&SCHEMA') and table_name=UPPER('&TABNAME') union all
select tablespace_name from dba_indexes where owner=UPPER('&SCHEMA') and table_name=UPPER('&TABNAME') union all
select tablespace_name from dba_lobs where owner=UPPER('&SCHEMA') and table_name=UPPER('&TABNAME'))
select distinct tablespace_name "tbs info " from temp union all
select ' ' as "tbs info" from dual union all
select 'file_id   |   file_name          |     tablespace' as "tbs info" from dual union all
select '------------------------------------------------------------' as "tbs info" from dual union all
select ''||file_id||'   '||file_name||'   '||tablespace_name||''  "tbs_info " from dba_data_files where
tablespace_name in (select distinct tablespace_name "tbs info " from temp);

查询结果:
在这里插入图片描述
可以看到该表只涉及到一个表空间,所以我们只需针对该表空间进行恢复。

二、创建用于恢复的数据库

安装与主库相同版本的数据库并创建相同实例,将完整的备份和归档拷贝至新建测试库中。

三、恢复步骤

1.恢复控制文件

restore controlfile from '/bak/full_v82fhld7_1_1_20240102.bak';
alter database mount;--数据库打开到mount
catalog start with '/bak/';--注册备份集

2.修改redo日志名称

rac恢复到单机需要重命名redo日志文件名,不然恢复完成后redo不可用:


alter database rename file'+DATADG/orcldg/onlinelog/group_4.300.1134422071' to '/u01/app/oracle/oradata/orcl/group_4.300.1134422071';
alter database rename file'+DATADG/orcldg/onlinelog/group_6.301.1134422071' to '/u01/app/oracle/oradata/orcl/group_6.301.1134422071';
alter database rename file'+DATADG/orcldg/onlinelog/group_1.297.1134422069' to '/u01/app/oracle/oradata/orcl/group_1.297.1134422069';
alter database rename file'+DATADG/orcldg/onlinelog/group_2.298.1134422071' to '/u01/app/oracle/oradata/orcl/group_2.298.1134422071';
alter database rename file'+DATADG/orcldg/onlinelog/group_3.299.1134422071' to '/u01/app/oracle/oradata/orcl/group_3.299.1134422071';
alter database rename file'+DATADG/orcldg/onlinelog/group_15.305.1134422073' to '/u01/app/oracle/oradata/orcl/group_15.305.1134422073';
alter database rename file'+DATADG/orcldg/onlinelog/group_11.302.1134422071' to '/u01/app/oracle/oradata/orcl/group_11.302.1134422071';
alter database rename file'+DATADG/orcldg/onlinelog/group_12.303.1134422071' to '/u01/app/oracle/oradata/orcl/group_12.303.1134422071';
alter database rename file'+DATADG/orcldg/onlinelog/group_13.304.1134422071' to '/u01/app/oracle/oradata/orcl/group_13.304.1134422071';
alter database rename file'+DATADG/orcldg/onlinelog/group_16.306.1134422073' to '/u01/app/oracle/oradata/orcl/group_16.306.1134422073';
alter database rename file'+DATADG/orcldg/onlinelog/group_17.307.1134422073' to '/u01/app/oracle/oradata/orcl/group_17.307.1134422073';
alter database rename file'+DATADG/orcldg/onlinelog/group_18.308.1134422073' to '/u01/app/oracle/oradata/orcl/group_18.308.1134422073';

3.表空间恢复

恢复单个表空间的话,需要连同系统表空间一起恢复:

run {
allocate channel d1 type disk;
allocate channel d2 type disk;
allocate channel d3 type disk;
allocate channel d4 type disk;
set newname for datafile 1 to '/u01/app/oracle/oradata/orcl/system01.dbf';
set newname for datafile 2 to '/u01/app/oracle/oradata/orcl/sysaux01.dbf';
set newname for datafile 20 to '/u01/app/oracle/oradata/orcl/sysaux02.dbf';
set newname for datafile 26 to '/u01/app/oracle/oradata/orcl/sysaux03.dbf';
set newname for datafile 3 to '/u01/app/oracle/oradata/orcl/undotbs01.dbf';
set newname for datafile 4 to '/u01/app/oracle/oradata/orcl/undotbs02.dbf';
set newname for datafile 41 to '/u01/app/oracle/oradata/orcl/undotbs011.dbf';
set newname for datafile 42 to '/u01/app/oracle/oradata/orcl/undotbs021.dbf';
set newname for datafile 5 to '/u01/app/oracle/oradata/orcl/users01.dbf';
set newname for datafile 7 to '/u01/app/oracle/oradata/orcl/bshrp561.dbf';
set newname for datafile 8 to '/u01/app/oracle/oradata/orcl/bshrp562.dbf';
set newname for datafile 9 to '/u01/app/oracle/oradata/orcl/bshrp563.dbf';
set newname for datafile 10 to '/u01/app/oracle/oradata/orcl/bshrp564.dbf';
set newname for datafile 11 to '/u01/app/oracle/oradata/orcl/bshrp565.dbf';
set newname for datafile 12 to '/u01/app/oracle/oradata/orcl/bshrp566.dbf';
set newname for datafile 32 to '/u01/app/oracle/oradata/orcl/bshrp567.dbf';
set newname for datafile 33 to '/u01/app/oracle/oradata/orcl/bshrp568.dbf';
set newname for datafile 34 to '/u01/app/oracle/oradata/orcl/bshrp569.dbf';
restore tablespace SYSTEM,SYSAUX,USERS,UNDOTBS1,UNDOTBS2,BSHRP56;
--注意这里所列出的表空间所包含的所有数据文件都必须在上面写全了,不然恢复会失败。
switch datafile all;
release channel d1;
release channel d2;
release channel d3;
release channel d4;
}

4.表空间recover

RMAN> recover database skip tablespace JCKH,"BS-WHIS",ANHENG,JSYB2021,HSXX,BSMRC,BSHIP_PLATFORM_MRC,BSHSS56,EXAMPLE,BSEMR56,LIS56,BSENR56,PORTAL56,TEMP;
--跳过不需要的表空间
Starting recover at 04-MAY-2024 06:48:38
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=1700 device type=DISKExecuting: alter database datafile 25 offline
Executing: alter database datafile 31 offline
Executing: alter database datafile 23 offline
Executing: alter database datafile 24 offline
Executing: alter database datafile 27 offline
Executing: alter database datafile 35 offline
Executing: alter database datafile 36 offline
Executing: alter database datafile 29 offline
Executing: alter database datafile 22 offline
Executing: alter database datafile 30 offline
Executing: alter database datafile 40 offline
Executing: alter database datafile 39 offline
Executing: alter database datafile 17 offline
Executing: alter database datafile 16 offline
Executing: alter database datafile 15 offline
Executing: alter database datafile 18 offline
Executing: alter database datafile 19 offline
Executing: alter database datafile 21 offline
Executing: alter database datafile 28 offline
Executing: alter database datafile 37 offline
Executing: alter database datafile 38 offline
Executing: alter database datafile 14 offline
Executing: alter database datafile 13 offline
Executing: alter database datafile 6 offline
starting media recoverychannel ORA_DISK_1: starting archived log restore to default destination
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=118701
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=118429
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=118430
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=118431
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=118702
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=118432
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=118433
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=118434
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=118435
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=118703
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=118436
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=118437
channel ORA_DISK_1: reading from backup piece /backup/arch_vb2fhlmg_1_1_20240102.bak
channel ORA_DISK_1: piece handle=/backup/arch_vb2fhlmg_1_1_20240102.bak tag=TAG20240102T005646
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:25
archived log file name=/u01/archivelog/1_118701_1006647421.dbf thread=1 sequence=118701
archived log file name=/u01/archivelog/2_118429_1006647421.dbf thread=2 sequence=118429
archived log file name=/u01/archivelog/2_118430_1006647421.dbf thread=2 sequence=118430
archived log file name=/u01/archivelog/2_118431_1006647421.dbf thread=2 sequence=118431
。
。
。
archived log file name=/u01/archivelog/1_118918_1006647421.dbf thread=1 sequence=118918
archived log file name=/u01/archivelog/2_118589_1006647421.dbf thread=2 sequence=118589
archived log file name=/u01/archivelog/1_118919_1006647421.dbf thread=1 sequence=118919
archived log file name=/u01/archivelog/2_118590_1006647421.dbf thread=2 sequence=118590
archived log file name=/u01/archivelog/1_118920_1006647421.dbf thread=1 sequence=118920
archived log file name=/u01/archivelog/2_118591_1006647421.dbf thread=2 sequence=118591
archived log file name=/u01/archivelog/1_118921_1006647421.dbf thread=1 sequence=118921
archived log file name=/u01/archivelog/2_118592_1006647421.dbf thread=2 sequence=118592
archived log file name=/u01/archivelog/1_118922_1006647421.dbf thread=1 sequence=118922
archived log file name=/u01/archivelog/1_118923_1006647421.dbf thread=1 sequence=118923
archived log file name=/u01/archivelog/2_118593_1006647421.dbf thread=2 sequence=118593
archived log file name=/u01/archivelog/1_118924_1006647421.dbf thread=1 sequence=118924
unable to find archived log
archived log thread=1 sequence=118925
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 05/04/2024 07:21:51
RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 118925 and starting SCN of 15417637288132RMAN> 

5.查询数据

[oracle@hisre orcl]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Sat May 4 07:23:05 2024

Copyright © 1982, 2013, Oracle. All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> alter database open resetlogs;

Database altered.

SQL> select count(*) from bshrp56.gy_ylml;

count(*)

9050

SQL>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/608130.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【FPGA】分享一些FPGA数字信号处理相关的书籍

在做FPGA工程师的这些年,买过好多书,也看过好多书,分享一下。 后续会慢慢的补充书评。 【FPGA】分享一些FPGA入门学习的书籍【FPGA】分享一些FPGA协同MATLAB开发的书籍 【FPGA】分享一些FPGA视频图像处理相关的书籍 【FPGA】分享一些FPGA高速…

更改邮箱发件人

更改邮箱发件人 未更改前发件人显示为发件人的邮箱地址 这里以outlook邮箱为例,进行邮箱发件人的更改 1.点击左上角“文件”选项 2.打开“账户设置”下拉菜单中的“账户设置” 3.选择“电子邮件”,点击该栏下的“更改”选项 4.在弹出页面中修改你…

机器学习原理到Python代码实现之NaiveBayes【朴素贝叶斯】

Naive Bayes 朴素贝叶斯算法 该文章作为机器学习的第二篇文章,主要介绍的是朴素贝叶斯算法的原理和应用。学习本章内容建议对概率论中的联合概率以及先验概率、后验概率有初步的学习和掌握。 难度系数:⭐⭐⭐ 更多相关工作请参考:Github 算法…

为什么流不关闭会导致内存泄漏

引言 经常有人告诉你流用完要记得关,不然会导致内存泄漏,但你是否考虑过下面这些问题: 为什么流不关会导致内存泄漏?JVM不是有垃圾回收机制吗?这些引用我用完不就变垃圾了为什么不会被回收呢?流未关闭除了导致内存泄…

node的下载、安装、配置

下载: 官网下载:Node.js 左右两个都可以: 安装: 打开cmd: 输入以下指令,如果出现版本号说明安装成功 node -v npm -v 配置: 1、新建文件夹:node_cache和node_global作为npm“缓…

前端实现搜索功能

最近遇到一个需求,用户在输入框输入关键字之后,点击搜索按钮后进行搜索,如下图,选中的数据在下面,上面展现的是搜索后的数据,现在选中了2条数据: 当用户输入KET后点击搜索,搜出的结果有16条,勾选全选选中后,将选中的16条的数据加到之前已选的2条数据里,于是此时已选…

重磅!大模型框架 LangChain 首个稳定版本终于来了!

著名的大模型智能体工具,现在有大版本更新了。 不知不觉,LangChain 已经问世一年了。作为一个开源框架,LangChain 提供了构建基于大模型的 AI 应用所需的模块和工具,大大降低了 AI 应用开发的门槛,使得任何人都可以基于…

oracle角色管理

常用角色 CONNECT,RESOURCE,DBA,EXP_FULL_DATABASE,IMP_FULL_DATABASE 1角色可以自定义,语法与创建用户一样 CREATE role role1 IDENTIFIED by 123; 2授权权限给角色 --自定义角色 CREATE role role1 IDENTIFIED by 123; --授权权限给角色 GRANT create view, …

AI人工智能从业人员《自然语言及语音处理设计开发工程师》证书专项培训(第二期)通知!

工业和信息化部电子工业标准化研究院联合北京龙腾亚太教育咨询有限公司和北京龙腾智元信息技术有限公司于2024年1月成功在京举办AI人工智能从业人员《自然语言及语音处理设计开发工程师》证书专项培训第一期课程,所有学员成功通过考试。介于学员的良好反应&#xff…

设置flex布局的元素,其子元素宽度和超过其本身时,其宽度值未被撑起问题

如图父元素main-content设置了display:flex. 里面包含了不确定个数的子元素,子元素样式为: flex: 1; min-width: 240px;现在想获取父元素的宽度,发现无论子元素的个数为多少,父元素的宽度都是一样的大小,并没有被子元…

Docker与微服务实战(基础篇)

Docker与微服务实战(基础篇) 1、Docker简介2、Docker安装步骤1.Centos7及以上的版本2.卸载旧版本3.yum安装gcc相关4.安装需要的软件包5.设置stable镜像仓库【国内aliyun】6.更新yum软件包索引--以后安装更快捷7.安装Docker-Ce8.启动Docker9.测试10.卸载1…

Socket closed 异常解决方案:如何解决 JMeter 压测中的问题

问题描述 JMeter 压测时会报 java.net.SocketException: Socket closed java.net.SocketException: Socket closed at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.ne…

Temu、Shopee、Lazada等跨境流量如何提升?买家号如何批量养号?

现在在temu、Lazada、shopee等跨境电商平台开店的商家越来越多。如果商家想让商店的产品得到更多的展示,流量是必不可少的,平台的流量入口主要有几个板块。 让我们谈谈temu、Lazada、shopee搜索流量如何提升,有什么方法。 有两种方法可以在短…

usb转32串口方案

方案结构图 使用usb hub芯片扩展4路usb然后再一分八路串口 USB hub 选择hub芯片注意事项: 目前市场上多数的USB 2.0 Hub芯片,只有内建一个Transaction Translators(STT),因此 当Hub接收到如Full Speed的装置进入时,12Mbps的「单一」信道…

使用Moonbuilders Academy平台,学习DApp开发

Moonbeam团队于2022年宣布开放Moonbuilders Academy。这是一套以开发为中心的异步学习课程,用于学习如何在Moonbeam上构建跨链DApp。 如何从官网进入平台? 点击http://moonbeam.network 鼠标移动至 “Builders”,在Resources下方选择“Moo…

2024腾讯爱奇艺首发片单,谁能率先拿下开年爆款?

刚进入2024年,头部长视频平台就开启了新一轮“内卷”。 腾讯和爱奇艺不约而同地在2024年的第一天发布了新剧片单,多部高质量精品大剧蓄势待发,点燃了观众和市场的期待。 2023年之争已经落下帷幕,爱奇艺凭借大爆剧《狂飙》拔得头…

Next City 数都上海应用创新大赛结果公布,子虔科技获奖

12月16日,以“应变求机 以数谋新”为主题的上海城市数字化转型体验周举办。作为上海城市数字化转型年终重磅活动,上海市人民政府副秘书长庄木弟,市经济和信息化工作党委书记程鹏,杨浦区委副书记、区长周海鹰,市经济和信…

Apache ActiveMQ 远程代码执行漏洞分析

漏洞简介 Apache ActiveMQ官方发布新版本,修复了一个远程代码执行漏洞,攻击者可构造恶意请求通过Apache ActiveMQ的61616端口发送恶意数据导致远程代码执行,从而完全控制Apache ActiveMQ服务器。 影响版本 Apache ActiveMQ 5.18.0 before …

统信UOS虚拟机安装VirtualBox扩展使用USB功能

为什么要安装VirtualBox扩展包? 安装 Oracle VM VirtualBox 扩展包的原因是,它提供了对 USB 2.0、USB 3.0、远程桌面协议 VRDP(VirtualBox Remote Desktop Protocol)等实用功能的支持,以增强 VirtualBox 的功能。这些…

HarmonyOS 应用开发学习笔记 ets组件生命周期

HarmoryOS Ability页面的生命周期 Component自定义组件 ets组件生命周期官放文档 本文讲解 ets组件的生命周期,在此之前大家可以先去了解Ability的生命周期,这两个生命周期有有一定的关联性 在开始之前,我们先明确自定义组件和页面的关系&…