1.如果我们一不小心删除或者批量更新了数据库里面的数据(事务已经提交),而且没有进行数据的备份,如果我们想恢复修改之前的数据怎么办,这时候我们就需要用到orcale的快照
2.如何利用orcale快照来恢复数据呢
查看快照数据
SELECT * FROM table_name AS OF TIMESTAMP TO_TIMESTAMP('2021-01-08 18:45:00','yyyy-MM-dd hh24:mi:ss')
table_name :即我们误操作的表名,2021-01-08 18:45:00:想恢复到哪个时间点的数据
根据快照数据创建备份表
CREATE TABLE 备份表名 AS SELECT * FROM table_name AS OF TIMESTAMP TO_TIMESTAMP('2021-01-08 18:45:00','yyyy-MM-dd hh24:mi:ss')
也可将现有的表清空,直接insert into table_name SELECT * FROM table_name AS OF TIMESTAMP TO_TIMESTAMP('2021-01-08 18:45:00','yyyy-MM-dd hh24:mi:ss')
快照默认保存8天,采集数据间隔时间是一小时,这个信息可以从DBA_HIST_WR_CONTROL视图中获得。
select * from dba_hist_wr_control;
DBID SNAP_INTERVAL RETENTION TOPNSQL CON_ID
---------- -------------------- -------------------- ----------
1571313779 +00000 01:00:00.0 +00008 00:00:00.0 DEFAULT 0
SNAP_INTERVAL=+00000 01:00:00.0 表示采样间隔是1小时
RETENTION=+00008 00:00:00.0 表示采样数据保留期限是8天
关于DBA_HIST_WR_CONTROL视图的更多参考可参见Oracle官方文档
http://download.oracle.com/docs/cd/B193 ... REFRN23462