表使用的数据块在事务未提交及提交且强制刷新缓冲池的block scn及obj变化之系列一...

背景

  为了了解下块清除及延迟清除的相关概念,故有此文。

结论

1,如果当前DML使用数据块的事务未提交,且数据块之前被其它表对象使用过,则数据块会保存之前表的信息
  这个信息主要为表的对象seg
2,数据块只要新表使用了它,且新表产生的事务已提交,即会除掉这前表对象的信息,或者说新表的事务未提交,旧表的信息仍会存储在数据块上
3,数据块的SCN在事务未提交,提交,强制刷新缓冲池全是一直在变化的  
4,而数据块上面存储的表对象则只要除掉了旧表对象后,则无其后其它新表使用这个数据块,数据块上面的表对象信息一直不变


测试思路



测试

数据库版本


创建测试表并插入1条记录不提交
SQL> create table t_defer(a int);


Table created.


SQL> select object_name,object_id from user_objects where object_name='T_DEFER';


OBJECT_NAME                                         OBJECT_ID
-------------------------------------------------- ----------
T_DEFER                                                 74433


SQL> insert into t_defer values(1);


1 row created.


转储数据块并查看


--下述测试仅列举有价值的内容,无关内容不再累述
select DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID),DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) from t_defer;


DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID) DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)
------------------------------------ ------------------------------------
                                   4                                98966


SQL> alter session set tracefile_identifier='session1_uncommit';


Session altered.


SQL> alter system dump datafile 4 block 98966;


System altered.


[oracle@seconary ~]$ cd /oracle/diag/rdbms/guowang/guowang/trace/
[oracle@seconary trace]$ ll -l *session1_uncommit*






[oracle@seconary trace]$ more guowang_ora_26519_session1_uncommit.trc|grep 74433
  dbwrid: 0 obj: 74433 objn: 74433 tsn: 4 afn: 4 hint: f


数据块的scn为0x0000.00b3db1a
[oracle@seconary trace]$ more guowang_ora_26519_session1_uncommit.trc|grep scn
scn: 0x0000.00b3db1a seq: 0x01 flg: 0x06 tail: 0xdb1a0601


可见这个数据块还存储着表对象t_checkpoint的信息
[oracle@seconary trace]$ more guowang_ora_26519_session1_uncommit.trc|grep seg
 seg/obj: 0x12223  csc: 0x00.b3d915  itc: 2  flg: E  typ: 1 - DATA
[oracle@seconary trace]$ 


SQL> select to_number('12223','xxxxx') from dual;


TO_NUMBER('12223','XXXXX')
--------------------------
                     74275


SQL> select object_name,object_id from user_objects where object_id=74275;


OBJECT_NAME                                         OBJECT_ID
-------------------------------------------------- ----------
T_CHECKPOINT                                            74275




提交事务,再看数据块
SQL> commit;


Commit complete.


这下数据块存储全是表t_defer的信息,已无之前t_checkpoint表的信息
  dbwrid: 0 obj: 74433 objn: 74433 tsn: 4 afn: 4 hint: f
  obj-flags: object_ckpt_list
  ckptq: [0xda728b60,0xda728b60] fileq: [0xda7259c0,0xda7259c0] objq: [0xd2735530,0xd2735530]
 seg/obj: 0x122c1  csc: 0x00.1788a32  itc: 2  flg: E  typ: 1 - DATA


 SQL> select to_number('122c1','xxxxxx') from dual;


TO_NUMBER('122C1','XXXXXX')
---------------------------
                      74433


数据块scn为0x0000.01788a32,发现已经变化了
scn: 0x0000.01788a32 seq: 0x03 flg: 0x04 tail: 0x8a320603




强制刷新缓冲池,再看数据块
SQL> alter system flush buffer_cache;


System altered.


可见数据块scn已发生变化
scn: 0x0000.01795cea seq: 0x01 flg: 0x06 tail: 0x5cea0601


表对象未发生变化
seg/obj: 0x122c1  csc: 0x00.1788a32  itc: 2  flg: E  typ: 1 - DATA

个人简介


8年oracle从业经验,具备丰富的oracle技能,目前在国内北京某专业oracle服务公司从事高级技术顾问。
服务过的客户:
中国电信
中国移动
中国联通
中国电通
国家电网
四川达州商业银行
湖南老百姓大药房
山西省公安厅
中国邮政
北京302医院     
河北廊坊新奥集团公司

 项目经验:
中国电信3G项目AAA系统数据库部署及优化
      中国联通4G数据库性能分析与优化
中国联通CRM数据库性能优化
中国移动10086电商平台数据库部署及优化
湖南老百姓大药房ERR数据库sql优化项目
四川达州商业银行TCBS核心业务系统数据库模型设计和RAC部署及优化
四川达州商业银行TCBS核心业务系统后端批处理存储过程功能模块编写及优化
北京高铁信号监控系统RAC数据库部署及优化
河南宇通客车数据库性能优化
中国电信电商平台核心采购模块表模型设计及优化
中国邮政储蓄系统数据库性能优化及sql优化
北京302医院数据库迁移实施
河北廊坊新奥data guard部署及优化
山西公安厅身份证审计数据库系统故障评估
国家电网上海灾备项目4 node rac+adg 
       贵州移动crm及客服数据库性能优化项目
       贵州移动crm及客服务数据库sql审核项目
       深圳穆迪软件有限公司数据库性能优化项目

联系方式:
手机:18201115468
qq   :   305076427
qq微博: wisdomone1
新浪微博:wisdomone9
qq群:275813900    
itpub博客名称:wisdomone1    http://blog.itpub.net/9240380/


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9240380/viewspace-1815354/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9240380/viewspace-1815354/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值