ora_flashback自我笔记

文章介绍了Oracle数据库中用于数据恢复的闪回查询功能,对比了asoftimestamp和asofscn两种方法。asoftimestamp方便使用,但可能因时间点不一致导致问题,适合单表恢复;asofscn确保约束一致性,适用于有主外键约束的多表恢复。系统限制asoftimestamp只能回溯最近5天的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、as of timestamp

1、创建

create table admin.zcjcs as select * from view_yy_xjsjsc;

drop table admin.zcjcs;

2、准备

select * from admin.zcjcs; --191 行

select * from admin.zcjcs where 分局ID > 100; --98 行

3、删除、闪回

delete from admin.zcjcs where 分局ID > 100;

select * from admin.zcjcs; --93 行

select * from admin.zcjcs as of timestamp sysdate-5/1440; --191 行

insert into admin.zcjcs

select *

from admin.zcjcs as of timestamp to_timestamp('2023-03-06 16:40:00', 'YYYY-MM-DD hh24:mi:ss')

where 分局ID > 100;

select * from admin.zcjcs; --191 行

4、备注

如上述示例中所表示的,as of timestamp 的确非常易用,

但是在某些情况下,我们建议使用 as of scn 的方式执行 flashback query,

比如需要对多个相互有主外键约束的表进行恢复时,如果使用 as of timestamp 的方式,

可能会由于时间点不统一的缘故造成数据选择或插入失败,

通过 scn 方式则能够确保记录的约束一致性。

==============================================================

二、As of scn

1、创建、查当前数据库scn号

create table admin.zcjcs as select * from admin.view_yy_xjsjsc;

select * from admin.zcjcs;

SELECT dbms_flashback.get_system_change_number FROM dual;

SELECT CURRENT_SCN FROM V$DATABASE;

2、删除、查删除前数据

select * from admin.zcjcs where 分局ID > 100;

select * from admin.zcjcs as of scn 26754747920858 where 分局ID > 100;

select * from admin.zcjcs as of scn 26754747920859 where 分局ID > 100;

delete from admin.zcjcs where 分局ID > 100;

3、插入

insert into admin.zcjcs

select *

from admin.zcjcs as of scn 26754747920858

where 分局ID > 100;

4、备注

Oracle 在内部都是使用 scn,即使你指定的是 as of timestamp,也会将其转换成 scn,

系统时间标记与 scn 之间存在一张表,

即 SYS.SMON_SCN_TIME

每隔 5 分钟,系统产生一次系统时间标记与 scn 的匹配并存入表,

该表中记录了最近 1440 个系统时间标记与 scn 的匹配记录,

由于该表只维护了最近的1440 条记录,

因此如果使用 as of timestamp 的方式则只能 flashback 最近 5 天内的数据

(假设系统是在持续不断运行并无中断或关机重启之类操作的话)。

5、查看 SCN 和 timestamp 之间的对应关系

select scn,to_char(time_dp,'yyyy-mm-dd hh24:mi:ss')from sys.smon_scn_time;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值