设为首页 收藏本站
查看: 735|回复: 0

[经验分享] oracle 11g新特性Flashback data archive

[复制链接]

尚未签到

发表于 2016-7-27 10:20:04 | 显示全部楼层 |阅读模式
1. 什么是flashback data archive

Flashback data archive是oracle 11g中引入的一个新特性。Flashback archive是一个新的数据库对象,用于存储一个或多表的历史数据。Flashback archive是一个逻辑对象,概念上类似于表空间。实际上flashback archive可以看作是存储一个或多个表的所有事务变化的逻辑空间。



2. flashback data archive的实现原理

从9i开始,Oracle就提供了表的flashback query功能,使用户可以查询表上过去某一时刻的数据或一段时间内数据的变化情况。flashback query实际上是利用UNDO信息来获得过去的数据。由于UNDO空间是循环使用的,事务的前映像不可能永久保存,因此flashback query只能支持过去一段时间内的数据查询,这个时间与UNDO_RETENTION相关。

Flashback data archive相比flashback query则更进了一步。Flashback data archive不再直接使用UNDO信息获得历史数据,而是把历史数据保存在一个track table里。Oracle新增加了一个后台进程fbda,此进程每隔一段时间(通常是5分钟)把UNDO中的历史数据信息加到track table里。如果表上开启了flashback archive功能,则Oracle先给事务产生的UNDO信息做标记,直到被标记的UNDO信息加到track table后,此UNDO空间才能被重用。

Flashback data archive采用压缩方式存储历史数据,以减小空间占用。同时flashback data archive采用range分区方式对track table表进行分区。track table表上没有索引,用户可根据需要对track table增加索引。

2.2 Altering a Flashback Data Archive
With the ALTER FLASHBACK ARCHIVE statement, you can:
-- 使用alter flashback archive 可以修改如下内容:
(1)Change the retention time of a Flashback Data Archive
(2)Purge some or all of its data
(3)Add, modify, and remove tablespaces

Note:
Removing all tablespaces of a Flashback Data Archive causes an error.
If you are logged on as SYSDBA, you can also use the ALTER FLASHBACK ARCHIVE statement to make a specific file the default Flashback Data Archive for the system.
-- 不能移除Flashback Data Archive里的所有表空间。 否则报错。 如果用sysdba 登陆,可以修改默认的Flashback archive。

示例:
2.2.1 将Flashback Data Archive 修改为default FA

先用我们具有flashback archive administer 权限的用户试试:
SQL> conn dvd/dvd;
Connected.
SQL> alter flashback archive fla1 set default;
alter flashback archive fla1 set default
*
ERROR at line 1:
ORA-55611: No privilege to manage default Flashback Archive

报错,没有权限,用sysdba 测试成功:
SQL> conn / as sysdba;
Connected.
SQL> alter flashback archive fla1 set default;

Flashback archive altered.

注意一点,只能有一个默认的Flashback archive.

SQL> select flashback_archive_name name, status from dba_flashback_archive;
NAME STATUS
---------- -------
FLA1 DEFAULT
FLA2

当前默认的Flashback Archive 是FLA1,我们将默认改成FLA2,在查看:
SQL> alter flashback archive fla2 set default;
Flashback archive altered.

SQL> select flashback_archive_name name, status from dba_flashback_archive;
NAME STATUS
---------- -------
FLA1
FLA2 DEFAULT

2.2.2 为已经存在的Flashback Archive 添加表空间,并指定配额

SQL> alter flashback archive fla1 add tablespace fda3 quota 20M;
Flashback archive altered.

2.2.3 为已经存在的Flashback Archive 添加表空间,不指定配额,即需要多少用多少空间

SQL> alter flashback archive fla1 add tablespace fda4;
Flashback archive altered.

2.2.4 修改已经存在的Flashback Archive的配额
SQL> alter flashback archive fla1 modify tablespace fda1 quota 20m;
Flashback archive altered.

2.2.5 修改配额不受限制
SQL> alter flashback archive fla1 modify tablespace fda1;
Flashback archive altered.

2.2.6 修改Flashback Archive 的retention time
SQL> alter flashback archive fla1 modify retention 2 year;
Flashback archive altered.

SQL> alter flashback archive fla1 modify retention 1 month;
Flashback archive altered.

SQL> alter flashback archive fla1 modify retention 2 month;
Flashback archive altered.

SQL> alter flashback archive fla1 modify retention 2 day;
Flashback archive altered.

SQL> alter flashback archive fla1 modify retention 1 day;
Flashback archive altered.

2.2.7 将表空间从Flashback Archive中移除

SQL> alter flashback archive fla1 remove tablespace fda4;
Flashback archive altered.

-- 注意,这里移除的仅仅是Flashback Archive中的信息,表空间不会被删除。

2.2.8 清空Flashback Archive中的所有历史记录

SQL> alter flashback archive fla1 purge all;
Flashback archive altered.

2.2.9 清空Flashback Archive 中超过1天的历史数据
SQL> alter flashback archive fla1 purge before timestamp (systimestamp - interval '1' day);
Flashback archive altered.

2.2.10 清空Flashback Archive 中指定SCN 之前的所有历史数据
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1315755078

SQL> alter flashback archive fla1 purge before scn 1315755078;
Flashback archive altered.

2.5.1 创建table,使用默认的Flashback Data Archive 来存储历史数据
SQL> create table 安庆 (id number) flashback archive;
Table created.

2.5.2 创建table,使用指定的Flashback Data Archive 来存储历史数据

SQL> create table 怀宁 (id number) flashback archive fla1;
Table created.

2.5.3 对表启用Flashback archive,并使用默认的Flashback archive。

SQL> alter table dave flashback archive;
Table altered.

2.5.4 禁用表的Flashback Archive
SQL> alter table dave no flashback archive;
Table altered.

2.5.5 对table 启用Flashback archive,并指定Flashaback Archive 区。
SQL> alter table dave flashback archive fla1;
Table altered.


DDL Statements on Tables Enabled for Flashback Data Archive
Flashback Data Archive supports many DDL statements, including some that alter the table definition or move data. For example:
--启动Flashback Data Archive的表支持以下的DDL 操作
(1)ALTER TABLE statement that does any of the following:
1)Adds, drops, renames, or modifies a column
2)Adds, drops, or renames a constraint
3)Drops or truncates a partition or subpartition operation
(2)TRUNCATE TABLE statement
(3)RENAME statement that renames a table

Some DDL statements cause error ORA-55610 when used on a table enabled for Flashback Data Archive. For example:
-- 启动Flashback Data Archive的表上的一些DDL 操作可能触发ORA-55610的错误,这些DDL 如下:
(1)ALTER TABLE statement that includes an UPGRADE TABLE clause, with or without an INCLUDING DATA clause
(3)ALTER TABLE statement that moves or exchanges a partition or subpartition operation
(3)DROP TABLE statement

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-250108-1-1.html 上篇帖子: oracle中job的interval设置方法 下篇帖子: Oracle 11g 数据库对象-序列
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表