一、前言
对于ORACLE数据库因为人为误操作(更新update、删除delete等)或业务需要将数据恢复到某个历史点,下面通过具体示例SQL脚本操作步骤说明。
二、示例操作
1.向数据库用户test802的GUEST表中插入两条数据,结果如下
2.分别对GUEST表进行修改、删除记录操作,结果如下
3.查询oracle系统操作视图表V$SQL,如下所示,可以看到最近操作sql记录,最近时间点“2018-02-04 14:42:10”
select first_load_time 第一次修改时间点,last_load_time 最近修改时间点,last_active_time,sql_text,parsing_schema_name 数据库用户 from V$SQL @b@where parsing_schema_name='TEST802' and ( sql_text like 'update%' or sql_text like 'delete%')
4.现只需将数据恢复到“2018-02-04/14:22:08”即可将误操作结果恢复到之前正确的数据版本,具体如下
-- 创建guest_recovery恢复表,将14:22:08时间点的数据还原到该表中@b@create table guest_recovery as select * from guest as of timestamp to_timestamp('2018-02-04 14:22:08','yyyy-mm-dd hh24:mi:ss')
5.最后将guest_recovery表数据迁移到guest表,即可完成guest表的数据恢复
-- 删除原来guest表的数据@b@delete from guest@b@-- 将恢复表中数据还原到guest@b@insert into guest select * from guest_recovery
��