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