oracle数据丢失怎么办,Oracle数据库数据丢失?这几种方法教你来恢复~

无论是开发、测试还是运维过程中,大家都可能会因为误操作、连错数据库、用错用户、语句条件有误等原因,导致错误删除、错误更新等问题。当你恨不得剁掉按回车的那个指头、捶胸顿足、或者吓得腿软时,肯定希望有办法来恢复这些数据。刚好,oracle 提供了一些强大的方法或机制,可以让你找到 “后悔药”。

oracle数据丢失怎么办,Oracle数据库数据丢失?这几种方法教你来恢复~_第1张图片

根据 oracle 数据库的特点和提供的工具,主要方法有以下几种方法:

利用逻辑备份使用 import 工具丢失数据的表

利用物理备份来通过还原数据文件并进行不完全恢复

利用 dbms_logmnr 包从 redo log 文件中恢复

利用 flashback 特性恢复数据

为了方便使用方法的介绍,上述恢复方法都将基于以下场景进行:系统管理员在前一天晚上 11 点用 export 对数据库做了全库逻辑备份,然后对所有数据文件进行了热备份。第二天上午 10 点,系统管理员在修改表 TFUNDASSET 的数据时,由于修改语句的条件写错了,导致一批记录(几千条)的 ztm 字段被修改成了错误的值,而且已经提交。这个表是资产表,相对而言数据变化不频繁。

一、利用逻辑备份使用 import 工具恢复丢失的数据

export/import 是 oracle 提供的用于对数据库进行逻辑备份的工具。该工具适用于备份那些数据量不大、业务量不多的数据库系统。因为如果在前一天晚上 11 点用 export 做了逻辑备份,那么当今天上午 10 点数据库意外崩溃时,从备份起到数据库崩溃的这段时间里的数据修改操作(包括 DDL 和 DML)都会丢失。如果丢失数据内的表上的数据是相对比较稳定,也就是说该表上基本没有 DML 操作,例如标准代码表、分区表里的历史数据,那么采用 import 来导入该表可以比较完整的恢复数据。如果该表是经常变化的业务表,那么这些丢失的数据只能根据业务情况从纸质记录恢复,或者其他途径恢复。

▲示例如下:这个表是一个资产表。相对来说,今天系统运行中修改的数据较少,丢失的数据量可以承受或者可以从别的途径恢复。那就可以用 import 来恢复。

方法一:

1、把这个表的数据备份到另一个表:

c17502a5a3fde1f627072b094605727b.png

2、删除该表的记录:

5f20d83b107dc0d361c6c107b5ff32b8.png

3、执行下面的命令:

78a5a6b9323881758d445fe9f5de8dd6.png

这个命令中在关键字 tables 中指定需要导入的表名字,ignore=y 表示忽略表已经存在的错误。

4、导入结束后,检查表中的记录,并用适当的方法恢复当天的修改。

方法二:

1、 把需要恢复的表导入到另一个用户下面:

你可能感兴趣的:(oracle数据丢失怎么办)