今天由于错误操作,导致数据库代码丢了几千行。
菊花一紧,冷汗直流。
关键时刻张茂林与倪闻伯,脚踏七色祥云,犹如盖世英雄
SELECT *
FROM dba_source
AS OF TIMESTAMP TO_TIMESTAMP (‘2018-08-23 08:00:00’, ‘YYYY-MM-DD HH24:MI:SS’)
WHERE owner=‘OLP’ and name =‘PKG_R50’
上述一个闪回查询。
功能是 查询OLP用户的PKG_R50包2018-08-23 08:00:00时间的数据。
Flashback Query
Flashback Query这一特性,最常被应用的就是修复误操作的数据了。注意,这并不是说Flashback Query能够恢复数据。Flashback Query本身不会恢复任何操作或修改,也不能告诉你做过什么操作或修改,实际上Flashback Query特性实际应用时,是基于标准SELECT的扩展,借助该特性能够让用户查询到指定时间点的表中的记录,相当于拥有了看到过去的能力.
SELECT * FROM A_TABLE AS OF TIMESTAMP SYSDATE-5/1440;
上述例句为 查询A_TABLE 5分钟前的数据
???
SYSDATE-5/1440是啥意思,1440又是怎么来的?
首先60(分)×24=1440,这样就计算出一天拥有多少分钟,SYSDATE是系统函数,用来取得当前的系统时间(以天为单位),SYSDATE-5/1440,得出的就是距当前时间5分钟前的记录了。(看不懂就代数)
flashback table '需要恢复数据的表名' to timestamp to_timestamp('数据丢失的前一时间点','yyyy-mm-dd hh24:mi:ss');
flashback 语句够很好的进行数据恢复,不过需要oracle10以上
特此记录。以作警示。