FlashBack-SCN-TIMESTAMP
一、基于时间(as of timestamp)的flashback
1、创建表
create table flash_tab(id,vl) as
select rownum,oname from ( select substr(object_name,1,1) oname from all_objects
group by substr(object_name,1,1) order by 1)
where rownum<=20;
2、查询表内容
SQL> select * from flash_tab;
ID VL
---------- --
1 /
2 A
3 B
4 C
5 D
6 E
7 F
8 G
9 H
10 I
11 J
12 K
13 L
14 M
15 N
16 O
17 P
18 Q
19 R
20 S
20 rows selected
3、删除表数据.
SQL> delete flash_tab where id<10;
9 rows deleted
SQL> select * from flash_tab;
ID VL
---------- --
10 I
11 J
12 K
13 L
14 M
15 N
16 O
17 P
18 Q
19 R
20 S
11 rows selected
4、执行Flashbach Query
SQL> select * from flash_tab as of timestamp sysdate-2/1440;
ID VL
---------- --
1 /
2 A
3 B
4 C
5 D
6 E
7 F
8 G
9 H
10 I
11 J
12 K
13 L
14 M
15 N
16 O
17 P
18 Q
19 R
20 S
20 rows selected
===============
说明:
AS OF TIMESTAMP表示基于时间
SYSDATE-2/1440表示当前系统时间两分钟之前;1440表示60分*24小时
5、将删除的记录恢复
insert into flash_tab
select * from flash_tab as of timestamp sysdate-2/1440
where id<10;
commit;
SQL> select * from flash_tab;
ID VL
---------- --
10 I
11 J
12 K
13 L
14 M
15 N
16 O
17 P
18 Q
19 R
20 S
1 /
2 A
3 B
4 C
5 D
6 E
7 F
8 G
9 H
20 rows selected
二、基于SCN(as of scn)的flashback
scn值的查询可使用dbms_flashback.get_system_change_number函数;或是从v$database视图中查询current_scn值。
1、授权scott用户具有查询scn值的权限
SQL> grant execute on dbms_flashback to scott;
授权成功。
SQL> grant select on v_$database to scott;
授权成功。
2、 查询当前scn值
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
1564606
SQL> select current_scn from v$database; --不同时间点查询的scn值不一致
CURRENT_SCN
-----------
1564631
3、查询指定scn值时对象中的记录
SQL> select * from flash_tab as of scn 1564606;
ID VL
---------- --
10 I
11 J
12 K
13 L
14 M
15 N
16 O
17 P
18 Q
19 R
20 S
1 /
2 A
3 B
4 C
5 D
6 E
7 F
8 G
9 H
20 rows selected
4、删除对象修改
SQL> delete from flash_tab;
20 rows deleted
SQL> commit;
Commit complete
5、执行flashback as of scn恢复数据
SQL> select * from flash_tab;
ID VL
---------- --
SQL> select * from flash_tab as of scn 1564606;
ID VL
---------- --
10 I
11 J
12 K
13 L
14 M
15 N
16 O
17 P
18 Q
19 R
20 S
1 /
2 A
3 B
4 C
5 D
6 E
7 F
8 G
9 H
20 rows selected
SQL> insert into flash_tab select * from flash_tab as of scn 1564606;
20 rows inserted
SQL> select * from flash_tab;
ID VL
---------- --
10 I
11 J
12 K
13 L
14 M
15 N
16 O
17 P
18 Q
19 R
20 S
1 /
2 A
3 B
4 C
5 D
6 E
7 F
8 G
9 H
20 rows selected
============================
说明:
SCN会比TIMESTAMP更精确。事实上timestamp同样是被转换成SCN。因为oracle是通过SCN来标记操作而不是时间。
每个时间点都对应一个SCN值。在10g中,系统平均每隔3秒产生一次系统时间与SCN的匹配存入sys.SMO_SCN_TIME表中。SCN和TIMESTAMP也可相互转换。
SQL> DESC SMON_SCN_TIME;
Name Type Nullable Default Comments
------------ --------- -------- ------------------------------- --------
THREAD NUMBER Y
TIME_MP NUMBER Y
TIME_DP DATE Y
SCN_WRP NUMBER Y
SCN_BAS NUMBER Y
NUM_MAPPINGS NUMBER Y
TIM_SCN_MAP RAW(1200) Y
SCN NUMBER Y 0
ORIG_THREAD NUMBER Y 0 /* for downgrade */
SQL> select timestamp_to_scn(sysdate) from dual;
TIMESTAMP_TO_SCN(SYSDATE)
-------------------------
1569124
SQL> select to_char(scn_to_timestamp(1569124),'YYYY-MM-DD HH24:MI:SS') from dual; --时间可精确到毫秒
TO_CHAR(SCN_TO_TIMESTAMP(15691
------------------------------
2015-01-05 22:55:00
FlashBack-SCN-TIMESTAMP的更多相关文章
- 【转】FlashBack总结之闪回查询与闪回表
本文主要介绍利用UNDO表空间的闪回技术,主要包括:闪回表,闪回版本查询,闪回事务查询,闪回查询.这些闪回技术实现从回滚段中读取表中一定时间内操作过的数据,可用来进行数据比对,或者修正意外提交造成的错 ...
- [terry笔记]Flashback
flashback 闪回,主要功能有两个:闪回查询(flashback query).闪回恢复(flashback table/database) 开启闪回flashback功能(归档下才可开启数据库 ...
- Flashback Version Query、Flashback Transaction Query快速闪回细粒度数据
Flashback Version Query 闪回版本查询 使用Flashback Version Query 返回在指定时间间隔或SCN间隔内的所有版本,一次commit命令就会创建一个版本. ...
- Flashback version/Transaction Query,FlashbackTable
Flashback version Query相对于Flashback Query 只能看到某一点的对象状态, Oracle 10g引入的Flashback Version Query可以看到过去某个 ...
- Oracle 六闪回技术,flashback
Flashback 技术基于Undo segment基于内容的, 因此,限制UNDO_RETENTON参数. 要使用flashback 特征,您必须启用自己主动撤销管理表空间. 在Oracle 11g ...
- FlashBack 闪回
[学习目标] Flashback Database 功能非常类似与RMAN的不完全恢复,它可以把整个数据库回退到 过去的某个时点的状态,这个功能依赖于Flashback log日志.比RMAN 更快速 ...
- oracle flashback data archive闪回数据归档天坑之XID重用导致闪回查询数据重复
我们有个系统使用了Oracle flashback data archive闪回数据归档特性来作为基于时间点的恢复机制,在频繁插入.更新期间发现SYS_FBA_HIST_NNNN表中的XID被两个事务 ...
- Oracle安全之 Oracle 11g flashback技术详解
Oracle11g提供的闪回技术用于对抗人为错误,主要有以下7种技术组成: 闪回查询-(闪回时间查询.闪回版本查询): 闪回数据归档: 闪回事务查询: 闪回事务: 闪回表: 闪回删表: 闪回数据库. ...
- Oracle Flashback(flashback table或drop)
在Oracle 10g中,Flash back家族分为以下成员:Flashback DatabaseFlashback DropFlashback TableFlashback Query(分Flas ...
- ora flashback详解
使用oracle数据库时,难免会碰到一些问题. 例:1.如何回滚已经commit了的数据 2.如何查询已经被覆盖掉的数据[update],或者被delete了的数据 3.如何将数据恢复到某个时间点 我 ...
随机推荐
- linux用户创建删除以及文件权限查看修改
一. 1.查看用户 命令如下:whoami 2.创建用户 创建用户命令:sudo adduser hello 超级用户是 root 删除用户名命令:sudo deluser hello --remov ...
- 使用DataReader读取数据
List<User> allUsers = new List<User>(); SqlConnection conn = new SqlConnection(连接字符串); S ...
- 数据结构c++语言描述——最大堆(MaxHeap)
一.最大堆的插入 图9-3a 给出了一个具有5个元素的最大堆.由于堆是完全二叉树,当加入一个元素形成6元素堆时,其结构必如9-3b 所示.如果插入元素的值为1,则插入后该元素成为2的左孩子,相反,若新 ...
- 关于arm-linux-gcc的安装与配置
在嵌入式开发中我们经常会用到arm-linux-gcc来编译我们的应用程序.作为arm-linux-gcc的入门,我们先看看如何安装arm-linux-gcc. 安装arm-linux-gcc还是比较 ...
- VS2015预览版中的C#6.0 新功能(三)
VS2015预览版中的C#6.0 新功能(一) VS2015预览版中的C#6.0 新功能(二) Using static 使用using StaticClass,你可以访问StaticClass类里的 ...
- css 梯形标签页
html 代码 略 css : nav > a{ position: relative; display: inline_block; padding: .3em 1em 0; } nav &g ...
- (转) c++ 迭代器
原地址:http://www.cnblogs.com/marchtea/archive/2012/02/27/2370068.html 前言: 以下的内容为我阅读c++沉思录18,19,20章的笔记以 ...
- Python读写Json文件
一个小例子,使用Json配置文件 # -*- coding: utf-8 -*- import json import time def store(data): with open('data.js ...
- Flask的session——关于写扩展所学习到的
这两天端午节.趁着端午节没事干,写了个flask的扩展--flask-RedisSession 在flask中使用该扩展可以让你借助redis数据库轻松获得server-side session. 这 ...
- 思维导图MindManager基础教程
Mindjet MindManager是由美国Mindjet公司开发的一款优秀的思维导图和知识管理软件,能够帮助你将想法和灵感以清晰的树桩形式记录下来,这对梳理工作计划和规划很有帮助. 思维导图(Mi ...