Oracle 11g 新特性 Flashback Data Archive 使用实例


Flashback Data Archive(闪回日志归档)其实理解为长时间的保存undo数据,对于某些重要的表可以自定义它的历史记录保存期限,它的的种种行为与undo表空间十分相似,使用的时候也是完全透明的,用户不知道它的查询一致性视图数据是来自undo还是Flashback Data Archive,现来分析它与undo的几点不同:

1.Flashback Data Archive仅记录UPDATE和DELETE语句,不记录INSERT语句。

2.Flashback Data Archive中的行数据库可以保存非常长的时间,甚至是几十年,相比之下的undo数据中的对象通常只有几个小时或者几天的保留期限。

3.Flashback Data Archive和undo的本质功能是不同的,它只关注表行的历史改动,而非undo来实现数据库整体事务的读一致性,已经回滚操作等。

那么Flashback Data Archive是怎么实现的呢,设想既然是保存表中的行记录,应该是需要单独的存储区域来记载行记录的,为这个区域指定保留期限,这样其中的数据就会长久的保留下去,然后再在想要记录的表上添加跟踪标记,这样就可以实现行记录的归档保存了,实际上这便是Oracle的实现原理,这里的存储区域就是Flashback Data Archive,在使用过程中使用create flashback archive命令创建。

一、创建归档

Oracle建议使用单独的表空间来存储Flashback Data Archive,当然也可以在一个已经存在的表空间上创建一个或多个Flashback Data Archive,

–创建前需要保证执行用户具有FLASHBACK_ARCHIVE_ADMINISTRER权限,该权限包括创建和修改flashback archive,启用表跟踪,管理归档中的表空间等)

复制代码 代码如下:

SQL> create tablespace fbda1
2  datafile '/u01/app/oracle/oradata/prod/fbda01.dbf'
3  size 5g;

Tablespace created.

接下来开始创建Flashback Data Archive:

复制代码 代码如下:

SQL> create flashback archive fb_01
2  tablespace fbda1 quota 300m
3  retention 10 year;

Flashback archive created.

上面的命令创建了一个保存十年的Flashback Data Archive,它可以使用fbda1表空间中300m的空间(有点小了。。。),根据需要我们可以再创建一个默认的归档,使用default关键字,如

复制代码 代码如下:

SQL> create flashback archive default fb_dflt
2  tablespace fbda1
3  retention 1 year
4  /

Flashback archive created.

查询DBA_FLASHBACK_ARCHIVE视图获取归档的信息,包括保留期限,状态等

复制代码 代码如下:

SQL> select OWNER_NAME,FLASHBACK_ARCHIVE_NAME,
2  FLASHBACK_ARCHIVE#,RETENTION_IN_DAYS,STATUS
3  from dba_flashback_archive;
 
OWNER_NAME FLASHBACK_ARCHIVE_NAME FLASHBACK_ARCHIVE# RETENTION_IN_DAYS STATUS
---------- ---------------------- ------------------ ----------------- -------
SYS        FB_01                                   1              3650
SYS        FB_DFLT                                 2               365 DEFAULT

查询FLASHBACK_ARCHIVE_TS视图获取表空间和归档的对应关系

复制代码 代码如下:

SQL> select * from dba_flashback_archive_ts;

FLASHBACK_ARCHIVE_NAME    FLASHBACK_ARCHIVE# TABLESPACE_NAME      QUOTA_IN_MB
------------------------- ------------------ -------------------- ------------
FB_01                                      1 FBDA1                300
FB_DFLT                                    2 FBDA1

二、跟踪表到指定的Flashback Data Archive中

将scott用户的emp表分配到fb_01归档下:

复制代码 代码如下:

SQL> alter table scott.emp flashback archive fb_01;

Table altered.

查询DBA_FLASHBACK_ARCHIVE_TABLES视图可以获得已经归档的表:

复制代码 代码如下:

SQL> select * from dba_flashback_archive_tables;

TABLE_NAME OWNER_NAME FLASHBACK_ARCHIVE_NA ARCHIVE_TABLE_NAME   STATUS
---------- ---------- -------------------- -------------------- --------
EMP        SCOTT      FB_01                SYS_FBA_HIST_73181   ENABLED

三、查询使用Flashback Data Archive

这里的使用和undo完全没有异样了,在查询中指定as of就可以了,这里演示查询3年前的emp表数据:

复制代码 代码如下:

SQL> select empno,ename,hiredate
 2 from scott.emp
 3 as of timestamp (systimestamp - interval '3' year)
 4 where empno=7934;

EMPNO ENAME      HIREDATE
 ---------- ---------- ---------
 7934 MILLER     23-JAN-82



相关阅读:
LINQ字符串向datetime 转换时失败的处理方法
Java IO流 文件传输基础
PHP采用XML-RPC构造Web Service实例教程
在CentOS服务器上安装配置LEMP的详细教程
轻松学习C#的基础入门
Yii2中关联查询简单用法示例
遍历DOM对象内的元素属性示例代码
将Access数据库中数据导入到SQL Server中的详细方法实例
Android SlidingDrawer 抽屉效果的实现
php中JSON的使用方法
HTML5全屏(Fullscreen)API详细介绍
Javascript中匿名函数的多种调用方式总结
详解Java中用于查找对象哈希码值的hashCode()函数
Gridview使用CheckBox全选与单选采用js实现同时高亮显示选择行
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 石家庄北-安达 大虎山-祁县 岩会-太原 达州-大雁 马鞍山东-无锡 霸州西-天津 绥化-恒地营 蛟河-九台 哈尔滨-哈密 上饶-湘乡 扶余-延安 兴和-伊和恩格拉 青岛-石家庄北 陇西-永康 洮南-高林屯 周口-涿州 鸽子洞-刀尔登 肇东-碾子山 香坊-拉哈 河源-潮州 子长-辛集 西安-诸暨 温都和硕-贺日斯台 丽水-平原 哈尔滨-吴桥 深圳东-息县 庐山-新乡 榆次-朔州 车转湾-平关 株洲西-驻马店西 营街-小新街 滁州北-磁窑 上饶-湘潭北 通辽-拉哈 涿州-焦作 歙县北-洛阳龙门 贺日斯台-古鲁满汗 安达-新高峰 东光-衡水 平顶山西-咸宁 三门峡-沟帮子 西峡-南昌西 云梦-阳新 庐江-容县 中山北-小榄 哈拉苏-大庆西 广顺场-江津 华山北-兴安北 溆浦南-诸暨 红彦-林海 乃林-山湾子 延安-正镶白旗 宁波-桐梓 沟帮子-青县 邢台-梁平 兰岭-五林 三门峡西-西安 长葛-北京西 内乡-吉安 宜昌东-郑州东 萧县北-郴州西 昆山南-于都 开通-成吉思汗 皮口-本溪 上海南-重庆北 鞍山-临清 齐齐哈尔-博克图 南平南-弋阳 朱石寨-峰洞 东光-哈尔滨西 旬阳北-神木 武昌-黄口 锦州-昆明 铁岭-虢镇 成都东-营山 徐州东-石柱县 湘乡-沙河市 凤城东-南芬北 益阳-枝城 济南东-烟台 上海火车列车站到嘉定区江桥25号怎么走
明天从上海去苏州盛泽,请问怎么走我目前在上海闵行。谢谢
请问从重庆火车站到北碚区将军路666号坐什么车怎么走
在什么样的土质地理环境中可以找到黄蜡石
EMS 从泰安发到齐齐哈尔需要多少小时
太原到威海火车列车怎么走
和女朋友约会,请问一下台州临海有哪里比较好玩的?
从常州列车火车站到河海大学常州校区怎么走?
杭州东站到上海南汇的海事大学怎么坐车?
枣庄到江西宜春坐应该怎样坐火车更好呢
我要从乌鲁木齐机场到天山区大湾北路17巷怎么坐车?
哈尔滨到沙河或者沙河到哈尔滨能运输玻璃的货运公司
我要从潍坊将一盒蔬菜(20斤左右)发到南京,请问可以让
福州到厦门的动车在哪个站坐车
建水到昆明有没有早上六点多的车
莆田到重庆
从肇庆市区到东莞黄江镇星光村怎么走
江苏省人文养生旅游资源有哪些
太原火车列车站能不能买衡水到烟台的火车列车票啊不能的话,能不能
稻城亚丁的介绍和风景图片! 第一个正式回答的就是最佳!
沈阳到西安怎么坐车最省钱
哈尔滨硬卧学生票提前几天买票我要去新乡1月13号下午的火车列车
泉州医学高等专科学校到底怎么样啊?表复制的
重庆到开县的大巴要多少钱
新乡到北京和北京到新乡的长途卧铺汽车客车为什么价格差别那么大
请问深圳到南京的K26次火车多少钱车票
嘉兴西站到上海浦东机场要多久
从济宁到蒙阴蒙山怎么走去啊..具体点啦
临沂直达烟台的客车车票要多少
福建漳州到宜宾。_福建漳州到宜宾。

Copyright © 2016 phpStudy |