不小心删表删库了,还能救

本文详述了一次客户误更新数据表的恢复过程,利用RMAN在无DG容灾环境中,通过异机恢复表空间至指定时间点。介绍了分析、思路、测试环境模拟和完整恢复步骤,强调了备份的重要性。
摘要由CSDN通过智能技术生成

前言

常在河边走,哪能不湿鞋?

今天有客户联系说误更新数据表,导致数据错乱了,希望将这张表恢复到 一周前 的指定时间点。

  • 数据库版本为 11.2.0.1

  • 操作系统是 Windows64

  • 数据已经被更改超过1周时间

  • 数据库已开启归档模式

  • 没有DG容灾

  • 有RMAN备份

下面模拟一下问题的详细解决过程!

一、分析

以下只列出常规恢复手段:

  • 数据已经误操作超过一周,所以排除使用UNDO快照来找回;

  • 没有DG容灾环境,排除使用DG闪回;

  • 主库已开启归档模式,并且存在RMAN备份,可使用RMAN异机恢复表对应表空间,使用DBLINK捞回数据表;

  • Oracle 12C后支持单张表恢复;

结论:安全起见,使用RMAN异机恢复表空间来捞回数据表。

二、思路

客户希望将表数据恢复到 <2021/06/08 17:00:00> 之前某个时间点。

大致操作步骤如下:

  • 主库查询误更新数据表对应的表空间和无需恢复的表空间。

  • 新主机安装Oracle 11.2.0.1数据库软件,无需建库,目录结构最好保持一致。

  • 主库拷贝参数文件,密码文件至新主机,根据新主机修改参数文件和创建新实例所需目录。

  • 新主机使用修改后的参数文件打开数据库实例到nomount状态。

  • 主库拷贝备份的控制文件至新主机,新主机使用RMAN恢复控制文件,并且MOUNT新实例。

  • 新主机RESTORE TABLESPACE恢复至时间点  <2021/06/08 16:00:00>

  • 新主机RECOVER DATABASE SKIP TABLESPACE恢复至时间点  <2021/06/08 16:00:00>

  • 新主机实例开启到只读模式。

  • 确认新主机实例的表数据是否正确,若不正确则重复 第7步 调整时间点慢慢往 <2021/06/08  17:00:00> 推进恢复。

  • 主库创建连通新主机实例的DBLINK,通过DBLINK从新主机实例捞取表数据。

📢 注意: 选择表空间恢复是因为主库数据量比较大,如果全库恢复需要大量时间。

三、测试环境模拟

为了数据脱敏,因此以测试环境模拟场景进行演示!

⭐️ 测试环境可以使用脚本安装,可以使用博主编写的 Oracle 一键安装脚本,同时支持单机和 RAC 集群模式!

1、环境准备

测试环境信息如下:

节点 主机版本 主机名 实例名 Oracle版本 IP地址
主库 rhel6.9 orcl orcl 11.2.0.1 10.211.55.111
新主机 rhel6.9 orcl 不创建实例 11.2.0.1 10.211.55.112

2、模拟测试场景

主库开启归档模式:

sqlplus / as sysdba
## 设置归档路径
alter system set log_archive_dest_1='LOCATION=/a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值