ORACLE 11G 闪回数据归档
而在oracle 11g中,又推出了一个新特性:闪回数据归档。这一特性通过将变化数据另外存储到创建的闪回归档区中,这样就可以为闪回归档区单独设置存储策略,使之可以闪回到指定时间之前不影响undo策略。
闪回数据归档是一个新的数据库对象,其中保留一个或多个表的历史数据。并具有自己的数据存储保留和清洗策略。数据库将buffer cache中的原始数据写到undo表空间中作为undo数据,11g中一个新的后台进程叫FBDA将收集和写这些原始数据到闪回数据归档区用于另外创建一份所有表数据的历史。为了启用闪回归档,必须用flashback data archive子句创建一张表或使用alter table语句为存在的表启用归档。有以下一些原则:
1:闪回数据归档和表之间是一对多的关系。
2:在一个数据库中可以使用多个闪回数据归档以满足不同期限的数据保留策略。
3:可以指定一个闪回归档只针对一个表空间。
4:新的后台进程FBDA从buffer cache收集原始数据记录在闪回归档指定表空间里。
5:oracle自动清洗过期的闪回归档数据。
一旦为一张表启用了归档,会为该表创建一个内部历史表,这个历史表将具有原始表的所有列,还有一些时间戳列。这个历史表用于跟踪事务改变。当对要归档的表进行update、delete时,那么在提交之前,内部历史表会有该事务和undo记录。一个insert操作不会在历史表中也插入一条记录。FBDA后台进程在系统设定的时间间隔被唤醒,默认是5分钟。后台进程拷贝被标记的事务的undo数据到历史表。所以当你更新一个表时,历史表中并不是马上就体现更改。如果数据库中产生大量undo数据,那么系统会自动调整FBDA的休眠时间以满足历史表的记录。直到FBDA后台进程完全记录undo数据到历史表,数据库将不会重用被标记为归档的undo记录。一旦FBDA后台进程完全将相应的undo数据写入历史表,undo记录所用的空间才变得可回收。
SQL> insert into hr.departments
values (300,'New Department',200,1700);
1 row created.
SQL> commit;
Commit complete.
SQL>
SQL> update departments
set department_name='Last Department'
where department_id=300;
1 row updated.
SQL> commit;
SQL> delete from hr.departments where department_id=300;
1 row deleted.
SQL> commit;
Commit complete.
SQL>
SQL> select department_id, department_name, manager_id, location_id
from hr.SYS_FBA_HIST_70308;
DEPT_ID DEPT_NAME MANAGER_ID LOCATION_ID
------- ---------------- ----------- ------------
300 New Department 200 1700
300 Last Department 200 1700
SQL> select * from dba_sys_privs where privilege like '%FLASH%';
GRANTEE PRIVILEGE ADM
------------------ ----------------------------- --------
SYS FLASHBACK ANY TABLE NO
DBA FLASHBACK ANY TABLE YES
DBA FLASHBACK ARCHIVE ADMINISTER YES
Grant succeeded.
闪回归档名字;
闪回归档是不是缺省归档;
闪回归档主表空间名;
闪回归档主表空间限额;
闪回归档保留策略;
tablespace flash_tbs1
retention 4 year;
也可以同时使用quota和retention:
tablespace flash_tbs1
quota 2000m
retention 4 year;
你必须分配给闪回归档的空间数量取决于闪回事务的数量和闪回保留期。在闪回归档归档使用到限额之前,或者没有使用quota子句的表空间用满之前,oracle会生成一个空间告警。这给你一定的时间清洗老数据或增加限额或增加表空间容量。
也可以通过如下语句删除闪回归档:
SQL> drop flashback archive flash1;
三:改变闪回归档:
SQL> alter flashback archive flash1
set default; # makes flash1 the default archive
SQL> alter flashback archive flash1
add tablespace flash_tbs1 # adds space to the flashback archive
SQL> alter flashback archive flash1
modify tablespace
flash_tbs1 quota 10G; # changes the quota for the archive
SQL> alter flashback archive flash1
modify retention 2 year; # changes the archive retention time
add tablespace flash_tbs2;
SQL> alter flashback tablespace flash1
remove tablespace flash_tbs2;
一个闪回归档所管理的所有表均具有相同的保留时间。
虽然闪回归档数据是自动被清洗的,但是你也可以手工进行清洗。
purge all; # purges all archived data
SQL> alter flashback archive flash1
purge before
timestamp (systimestamp – interval '2' day);
# purges data older than 2 days
SQL> alter flashback archive flash1
purge before scn 123456; # purges all data before the
specified scn
四:启用和禁用闪回归档
为了使表启用闪回归档日志,必须具有flashback archive object权限。当然DBA角色自动包含这些权限。
name varchar2(30),
address varchar2(50))
flashback archive fla4;
也可以如下指定已经存在的表:
SQL> alter table employees
flashback archive fla1;
如果你指定了缺省闪回归档,那么你也可以只使用flashback archive子句,而不指定闪回归档名。这时,表就使用缺省闪回归档作为表的闪回归档区。
可以通过如下查询来查看哪些表使用了闪回归档:
SQL> select * from dba_flashback_archive_tables;
TABLE_NAME OWNER FLASHBACK_ARCH_NAME ARCH_TABLE_NAM
----------- ------ ------------------- -------------------
EMPLOYEES HR FLASH1 SYS_FBA_HIST_70313
在能够使用闪回归档之前,你必须首先设置缺省闪回归档。如下查询查看缺省闪回归档:
dba_flashback_archive;
FLASHBACK_ARCHIVE_NAME STATUS
---------------------- ------
FLASH1 DEFAULT
SQL> alter table employees
no flashback archive;
如果想删除闪回启用的表的一列,唯一的方法是关闭表的闪回归档。
TABLE_NAME OWNER FLASHBACK_ARCHIVE ARCHIVE_TABLE_NAME
--------- ------- ------------------ --------------------
EMPLOYEES HR FLASH1 SYS_FBA_HIST_70313
from dba_flashback_archive;
FLASHBACK_ARCHIVE_NAME RETENTION_IN_DAYS
----------------------- -----------------
FLASH1 365
3:查看闪回归档表空间信息:
from dba_flashback_archive_ts;
FLASHBACK_ARCHIVE _NAME TABLESPACE_NAME QUOTA_IN_MB
------------------------ --------------- -----------
FLASH1 FLASH1 80
举例:
可以使用闪回归档实现很多有用的功能,比如访问历史数据,审计,恢复数据等。
1:创建一个表空间:
2:创建默认闪回归档区:
alter flashback archive flash1 set default;
3:使表支持闪回归档:
5:使用as of 子句来查询历史数据。
-------------------
2012-04-17 11:28:53
fzs@ORCL11>
fzs@ORCL11> select count(*) from big_table;
----------
20000
----------
100000
SQL> select salary from hr.employees where
last_name='Zlotkey';
SALARY
------------
10500
SQL> update hr.employees set salary=salary+50000
where last_name='Zlotkey';
1 row updated.
SQL> commit;
Commit complete.
将值改为原有值,采用如下方法:
(select salary from hr.employees
as of timestamp (systimestamp - interval '60' minute);
where last_name='Zlotkey')
where last_name='Zlotkey';
1 row updated.
SQL> commit;
Commit complete.
SQL>
systimestamp – interval '7' day #过去7天前
systimestamp – interval '12' month #过去12个月前
产生数据变化报告:
versions between timestamp
to_timestamp ('2007-01-01 00:00:00', 'YYYY-MM-DD HH23:MI:SS')
and maxvalue
where name ='ALAPATI';
ORACLE 11G 闪回数据归档相关推荐
- oracle 11g Flashback Data Archive(闪回数据归档)
Flashback Data Archive(闪回数据归档) UNDO表空间记录的回滚信息虽然可以提供回闪查询,但时间久了,这些信息会被覆盖掉,其实只要事务一提交,他们就变成可覆盖的对象了,所以经常在 ...
- oracle闪回数据归档,oracle 11g Flashback Data Archive(闪回数据归档)
Oracle 11G提供了丰富的回闪查询功能,对于人为的错误操作,历史数据订正,操作流程记录等有非常大的帮助,下面就来详细介绍下这个特性 回闪查询的原理: Oracle中有UNDO表空间,用来存放数据 ...
- oracle 11g 闪回功能,Oracle 11g开启闪回功能Flashback
在Oracle的建库过程中,通常会提示是否开启闪回并指定闪回恢复区大小,我一般会选择不开启.这样,如果需要使用闪回功能,就需要 在Oracle的建库过程中,通常会提示是否开启闪回并指定闪回恢复区大小, ...
- ORACLE 各种闪回操作
1.Flashback Database(利用闪回日志恢复) Oracle Flashback Database特性允许通过SQL语句Flashback Database语句,让数据库前滚到当前的前一 ...
- oracle之三闪回flashback
闪回 flashback 5.1 flashback 的功能:1)利用undo data回溯或撤销提交的数据,2)flashback log 使database 可以恢复到过去某个时间点,可以作为不完 ...
- Oracle 数据库闪回
Oracle 数据库闪回 一.闪回技术的7个特性 二.Oracle 数据库的4种SCN 1.系统检查点 SCN 2.数据文件 SCN 3.结束 SCN 4.数据文件头 SCN 三.闪回操作 1.查询闪 ...
- oracle flashback6,【oracle】闪回flashback-11g-flashback data Archive
Flashback data Archive 1.说明 Flashback data archive在它的有效期内将保存事物改变的信息. FDA包含一个或者多个表空间,我们可以创建多个FDA,当以sy ...
- oracle数据库归档闪回,[Oracle]Oracle的闪回归档
Oracle的闪回归档 场景需求,由于管理数据库的一些核心表,在实施初期会有人为误删除的问题.Oracle 11gR2提供了闪回归档的特性,可以保证不用RMAN来恢复误删除的数据.实践如下: 1.创建 ...
- Oracle的闪回特性之恢复truncate删除表的数据
/* 2008/06/06 *环境:Windows XP +Oracle10.2.0.1 *循序渐进oracle--数据库管理.优化与备份恢复 *循序渐进oracle第8章:Oracle的闪回特性之恢 ...
最新文章
- 解决Win8.1系统LYNC共享PPT提示“演示文稿遇到问题”
- 常用Python代码
- 同学你好,听说你想学习做硬件?
- R-CNN detection 运行问题及办法
- python split函数 空格_python上手--10行代码读懂红楼梦
- 参数变化_风机盘管参数变化对性能造成的影响
- 第一届大数据科学与工程国际会议(2016)征文通知
- 千兆网线8根线定义图_网线水晶头如何制作及怎么测试?
- 仿lisp运算 java_华为机试题:仿LISP
- “北京链安”近日更名为“中科链安”
- MongoDB密码设置(基于windows)
- VS Tips (Basic part)
- ubuntu键盘突然失灵怎么办?
- mysql partition赋权_Mysql的赋权
- BeanUtilsVo.copyProperties源码分析
- 服务器中“U”代表什么?1U、2U、3U、4U有多高?
- 疫情数据可视化01---中国疫情时间序列数据整理(截至7月30号)
- 2021-07-31-DJ-009 Django模板页面的继承与定制,一个Base.html,仿制漂亮的效果
- BZOJ4408:[FJOI2016]神秘数
- 使用ashx文件响应来自JQuery的JSON请求