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.如何将数据恢复到某个时间点 我 ...
随机推荐
- 【软件技巧】Sublime Text为不同语法定义不同高亮
Sublime Text默认的语法高亮已经非常美丽了,可是对于个别语言还是有些不爽. 默认高亮规则叫Monokai,能够从Preferences->Settings - Default中看到: ...
- java中数据流的简单介绍
java中的I/O操作主要是基于数据流进行操作的,数据流表示了字符或者字节的流动序列. java.io是数据流操作的主要软件包 java.nio是对块传输进行的支持 数据流基本概念 “流是磁盘或其它外 ...
- 无法登陆mysql服务器
解决 .#2002 无法登录 MySQL 服务器 将config.sample.inc.php复制成config.inc.php 出现这个错误,表示没有连接到数据库.修改config.inc.php文 ...
- IoC容器Autofac正篇之简单实例
先上一段代码. namespace ConsoleApplication3 { class Program { static void Main(string[] args) { ContainerB ...
- access数据库的连接字符串以及数据库操作类
<!--access数据库连接方式--> <add name="QYTangConnectionString" connectionString="Pr ...
- 【转载】ADO.NET与ROM的比较(1):ADO.NET实现CRUD
[转载]ADO.NET与ROM的比较(1):ADO.NET实现CRUD 转自周公 说明:个人感觉在Java领域大型开发都离不了ORM的身影,所谓的SSH就是Spring+Struts+Hiberna ...
- stl学习之字符串
其实string也是stl里面的内容,记录几点自己不常用的内容 1.at方法(比[]会判断是否越位) 2. int copy(char *s, int n, int pos=0) const; 把当前 ...
- 2015.4.2-SQL 简单语句(一)
1.创建一个student表 create table student_masen( sno char(4) not null primarykey sname nchar(10) not null ...
- [ofbiz]设置任务计划(job),提示service_item已经传递
问题描述:设置任务计划(job),提示service_item已经传递 解决办法: 红色框内不要填写,就可以了."已经传递"是翻译的不准确,应该是"已过时",所 ...
- jquery插件编写
/*(function($) { $.fn.accordion = function(options) { var settings = $.extend({}, {open: false}, opt ...