泸州网站公司,怎么自己做个网站,wordpress增加英文,深汕特别合作区事务员待遇oracle的闪回查询#xff0c;可以查询提交在表空间的闪回数据#xff0c;并可以还原所查询的数据#xff0c;用于恢复短时间内的delele 或者 update 误操作#xff0c;非常方便#xff0c;缺点是只能恢复大概几小时内的数据。 文章目录 概要闪回查询恢复数据的主要方法包括… oracle的闪回查询可以查询提交在表空间的闪回数据并可以还原所查询的数据用于恢复短时间内的delele 或者 update 误操作非常方便缺点是只能恢复大概几小时内的数据。 文章目录 概要闪回查询恢复数据的主要方法包括基于时间的闪回查询1、基于时间区间来恢复恢复前5分钟数据前20分钟数据等2、基于具体的时间来恢复20250107 17:15:43 、20250106 17:15:43 基于scn闪回查询恢复数据闪回表闪回数据库利用“回收站”恢复被DROP的表 概要
1、闪回查询通常只能恢复几小时内的数据因为Undo表空间的大小和保留策略限制了旧数据版本的保留时间。 2、在进行闪回操作之前建议备份当前数据库或相关数据以防止意外情况导致数据丢失。 3、闪回功能不依赖于日志可以在线恢复无需关闭数据库操作简单且恢复速度快1
闪回查询恢复数据的主要方法包括
基于时间的闪回查询
使用SELECT * FROM 表名 AS OF TIMESTAMP(时间点)语句可以查询并恢复在指定时间点之前的数据状态。
例如要查询10分钟前的数据可以使用SELECT * FROM 表名 AS OF TIMESTAMP(SYSDATE-10/1440)。
1、基于时间区间来恢复恢复前5分钟数据前20分钟数据等
未更新前4
delete update insert更新后2 根据更新后的时间来确定数据要恢复的时间比如恢复5分钟前的数据、20分钟前的等等时间段
查询3分钟前的数据 语法
SELECT * FROM 表名 AS OF TIMESTAMP(SYSDATE-3/1440);此时查询到的数据为更新发生后前3分钟的数据相当于原来的数据未改变的数据。 实际工作中可以根据具体时间来恢复此时数据已经查到了原来的旧数据创建新表拷贝闪回查询的数据:
闪回查询前10分钟的数据并拷贝到新表test_old中
SQL create table test_old as select * from test1 as of timestamp(sysdate-10/1440);表已创建。SQL select * from test_old;NO NAME
---------- ----------1 aa2 bb3 cc4 dd闪回查询的数据已经拷贝到新表test_old中然后将原来的表test1表删除将test_old表名修改未test1整个闪回查询恢复数据流程到此恢复完成结束。
2、基于具体的时间来恢复20250107 17:15:43 、20250106 17:15:43
未更新前数据
未更新前数据库系统时间
此时的时间为表未发生任何变化的系统时间节点后期根据这个时间节点来恢复数据 更新表数据delete update insert
delete test_old where no2--删除表中数据
表中操作已经完成查询更新后的系统时间 select to_char(sysdate,yyyymmdd hh24:mi:ss) from dual -- 更新表后的时间20250107 17:17:33当表中完成更新得知更新前的系统时间和更新后的系统就可以根据具体时间来恢复数据 比如恢复到更新数据前系统的具体时间上面第一次获取的时间
select * from test_old as of timestamp to_date(20250107 17:59:28,yyyymmdd hh24:mi:ss) --恢复具体时间的数据此时可以看到更新后根据未更新前的系统时间来恢复了被更新的数据创建新表拷贝恢复的数据更新为原来的表整个恢复流程完成后期频繁的去更新只要知道具体的时间一定时间内都能正常恢复到为操作前的状态。 更新中…
基于scn闪回查询恢复数据
1、获取未操作前的scn值
select dbms_flashback.get_system_change_number from dual --获取当前的scn 27511490 此时scn值未任何操作时候的scn。 2、对表进行delete update insert更新 delete test_old where no5; 更新成功 3.获取更新后的 scn 此时更新操作前和操作后的值都获取到了可以更新scn数值区间进行闪回查询27511490- 27512132 4、根据scn闪回查询
语法 select * from test_old as of scn 数值 select * from test_old as of scn 27511490–根据scn的区间来一步一进行闪回查询 27511490- 27512132之间取值 此时根据更新前的scn闪回查询返回到了未操作前的状态然后新建立表拷贝闪回查询的数据进行恢复即可
create table test2_old as select * from test_old as of scn 27511490 此时将scn闪回查询的数据已经恢复到新表中可以对新表对象进行任何操作。
注意 1、如果只有操作后的scn可以根据scn数据值大小一个一个去测试知道闪回查询 2、如果有操作前后区间的scn值可以根据区间去一一测试直到闪回查询
···**闪回查询只要查看过去具体时间点的数据变化**··· 闪回表
如果表结构没有发生改变并且用户有flash any table权限可以使用ALTER TABLE 表名 ENABLE ROW MOVEMENT和FLASHBACK TABLE 表名 TO TIMESTAMP(时间点)语句来将整个表闪回到指定的时间点45。
闪回数据库
闪回数据库功能允许将整个数据库回滚到过去某个时间点但这通常用于更严重的灾难恢复场景并且需要配置恢复区(Flash Recovery Area)2。
利用“回收站”恢复被DROP的表
当使用DROP命令删除表时Oracle并不会立即清空表所占用的空间而是将表的信息放到一个虚拟的“回收站”中。在块未被重新使用之前可以通过查询user_tables视图或user_recyclebin来找到被删除的表并进行恢复