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.如何将数据恢复到某个时间点 我 ...
随机推荐
- Swift之贪婪的UIButton
一.内容概要 按钮是所有UI体系中非常重要的组件,在iOS中按钮UIButton的使用也非常灵活,本文将从以下几点介绍UIButton的使用(基于Swift2.0): 1.UIButton基础 2.U ...
- XMLHttpRequest发送请求
*open(method,url,async) *send(string)//在使用get请求的时候,是没有主体的,所有的信息都会拼在url当中,所以使用send的时候括号里的string可以为空!如 ...
- SQL中的delete和TRUNCATE的用法
TRUNCATE TABLE 表名 删除表中的所有行,而不记录单个行删除操作. 语法 TRUNCATE TABLE name 参数 name 是要截断的表的名称或要删除其全部行的表的名称. 注释 TR ...
- ios属性和成员变量写在.h文件和.m文件中 区别?
1 其实是一样的.在.m文件上只能.m文件内部的才能访问的这个变量,如果在.h文件中,其他的文件也可以访问到这个变量. 2 写.h文件里边可以和其他的类进行交互,写.m里边只是在本类中使用! 3 ...
- ios禁用多按钮同时点下的效果
只需要把那些不能同时点下的按钮或者视图设置一下即可. [view setExclusiveTouch:YES]; 避免view上多个button同时按下,则可设置每个button的setExclusi ...
- SQLSERVER和sybase的差异
sybase sqlserver *= left join =* right join
- shell中的数学运算
shell中要进行数学运算通常有3中方法: expr命令 比如 expr 1 + 6就会返回7,使用expr的缺点就是碰到乘法运算,或者加括号(因为它们在shell中有其他意义),需要使用转义,比如: ...
- HttpServletResponse HttpServletRequest RequestDispatcher
HttpServletResponse HttpServletRequest RequestDispatcher 07. 五 / J2EE / 没有评论 一.以字节为单位向客户端发送中文数据1.服 ...
- java的LinkedList的用法
http://blog.chinabyte.com/blog.php?do-showone-uid-135325-itemid-454704-type-blog.html 总结下,LinkedList ...
- linux crontab运行
Linux在相应用户下,用crontab -l 命令可以查看该用户定时执行的任务. 1- $>crontab -l 无内容. 则表示没有指定用户执行对应用户下的crontab文件. 2- $&g ...