SYS_FBA_为前缀表如何服务于Flashback Data Archive

php中文网
发布: 2016-06-07 15:21:48
原创
1323人浏览过

undo里的before-image受系统负荷等因素的影响保留时间较短有的时候无法完全满足flashback query、flashback version query等闪回

undo里的before-image受系统负荷等因素的影响保留时间较短有的时候无法完全满足flashback query、flashback version query等闪回查询较早前数据的功能要求,flashback data archive的引入正是为了解决这个问题,将before image从undo定时归档到archive table。
数据库里如果创建了flashback data archive,那么后台进程fbda(flashback data archiver process)就会启动,alert.log也会有下面的输出:
sun may 17 13:35:18 2015
starting background process fbda
sun may 17 13:35:18 2015
fbda started with pid=35, os id=12257378

可以在create table的同时启用flashback archive功能,也可以在建完表之后通过Alter table .. flashback archive ...打开flashback archive功能。
当表里的数据块被修改时before image在写入到undo的同时,会在undo block里打上标记,表明这个undo block需要被归档到flashback data archive,这个归档过程就是由FBDA进程完成的,在完成归档之前这个undo block是不能被其他transaction重用的。把undo block归档到flashback data archive的过程是异步进行的,所以对transaction的性能影响可以忽略不计,FBDA每5分钟扫描一次等待被归档的undo block,并将其写入到flashback data archive,随后把该undo block标记为可以重用,如果在系统的修改量较大时扫描的间隔会小于5分钟,具体由Oracle自己控制。

在flashback data archive的技术实现过程中,SYS_FBT_为前缀的表起到了不小的作用,通过下面的实验了解一下

/////////////Part 1. SYS_FBA_表基本介绍////////////////

###数据库已有一个名为FBA0516_1的flashback archive,quota为300M,存放在TS0512_1表空间,FBA0516_1里目前尚未存放任何表的历史数据
SYS@tstdb1-SQL> select * from DBA_FLASHBACK_ARCHIVE;

OWNER_NAME FLASHBACK_ FLASHBACK_ARCHIVE# RETENTION_IN_DAYS CREATE_TIME                        LAST_PURGE_TIME                    STATUS
---------- ---------- ------------------ ----------------- ----------------------------------- ----------------------------------- -------
SYS        FBA0516_1                  1                1 16-MAY-15 11.46.01.000000000 AM    16-MAY-15 11.46.01.000000000 AM

SYS@tstdb1-SQL> select * from DBA_FLASHBACK_ARCHIVE_TS;

FLASHBACK_ FLASHBACK_ARCHIVE# TABLESPACE_NAME                QUOTA_IN_MB
---------- ------------------ ------------------------------ ----------------------------------------
FBA0516_1                  1 TS0512_1                      300

SYS@tstdb1-SQL> select * from DBA_FLASHBACK_ARCHIVE_TABLES;

no rows selected

###创建测试表
create table t0516_5 (id number,c2 varchar2(3)) flashback archive fba0516_1;

col object_name format a20
set linesize 100
select object_name,created,object_id from dba_objects where object_name='T0516_5';
OBJECT_NAME          CREATED            OBJECT_ID
-------------------- ----------------- ----------
T0516_5              20150516 20:45:54      36945

火龙果写作
火龙果写作

用火龙果,轻松写作,通过校对、改写、扩展等功能实现高质量内容生产。

火龙果写作 277
查看详情 火龙果写作

---T0516_5对应的archive table是SYS_FBA_HIST_36937,但我们在dba_tables还没有查到SYS_FBA_HIST_36937
col OWNER_NAME format a10
set numwidth 4
col FLASHBACK_ARCHIVE_NAME format a10
col create_time format a35
col last_purge_time format a35
set linesize 140
select * from DBA_FLASHBACK_ARCHIVE_TABLES;
TABLE_NAME                    OWNER_NAME FLASHBACK_ ARCHIVE_TABLE_NAME                                    STATUS
------------------------------ ---------- ---------- ----------------------------------------------------- -------------
T0516_5                        SCOTT      FBA0516_1  SYS_FBA_HIST_36945                                    ENABLED

select owner,table_name,partitioned from dba_tables where table_name like '%36945';

no rows selected

根据官方的说法后台进程FBDA会每隔5分钟检测一次是否有新的archive table要创建,这里等待超过了10分钟也未见SYS_FBA_HIST_36937表创建出来,下面进行一些DML操作后再观察
---插入若干数据
insert into t0516_5 values(1,'AAA');
insert into t0516_5 values(2,'BBB');
insert into t0516_5 values(3,'CCC');
commit;

SCOTT@tstdb1-SQL> select sysdate from dual;

SYSDATE
-----------------
20150516 20:47:06

---没有马上查询到SYS_FBA开头的表,直到20150516 20:50:19,SYS_FBA才被创建出来,与上次的insert操作的时间相隔SCOTT@tstdb1-SQL> select owner,table_name,partitioned from dba_tables where table_name like '%36945';

no rows selected

。。。。等待片刻

SCOTT@tstdb1-SQL> select owner,table_name,partitioned from dba_tables where table_name like '%36945';

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号