登录模块加载中...
会员投稿 投稿指南 今天是:
打印本页 | 关闭窗口 | 双击滚屏 您的位置首页>>网页制作学习园地>>数据库类>>ORACLE>>Oracle 事务表实验
Oracle 事务表实验
来源: ‖ 作者: ‖ 点击: ‖ 时间:12-10-16 16:05:43 ‖ 【 】‖ 我要投稿

回滚段头中,有一项非常重要的信息,就是事务表。对事务表频繁的访问,可能会造成回滚段头的争用。了解什么样的操作会访问事务表,对于了解回滚段头争用的原因非常重要。下面我们来做一些实验来验证一下,什么样的操作才会访问事务表。
   
    首 先简单介绍一个视图,备份x$bh.对这个视图我想大家都有一定的了解,bh即buffer header 的简写。在buffer  header中有 一个TCH 列,表示块被访问的次数。我们通过他来验证事务表什么时候被访问。需要注意的是。TCH列每3秒,才会重新计算一次,3秒之内无论访问某一个 块多少次。TCH列只会增加1.
   
    在会话A开启一个事务后:
   
    步骤一:通过v$transaction视图找到XID
   
    SQL> select xidusn,ubablk,ubafil from v$transaction;
   
    XIDUSN     UBABLK     UBAFIL
   
    ---------- ---------- ----------
   
    13         97          5
   
    步骤二:通过回滚段编号,可得知事务所占回滚段名,并用此查找事务头块号,文件号
   
    SQL> select header_block,header_file from dba_segments where segment_name='_SYSSMU13$';
   
    HEADER_BLOCK HEADER_FILE
   
    ------------ -----------
   
    41           5
   
    步骤三:查看x$bh视图中,TCH值的增加。
   
    SQL> select addr,tch from x$bh where dbarfil=5 and dbablk=41;
   
    ADDR            TCH
   
    -------- ----------
   
    080B5208         41
   
    步骤四:查找完TCH后,马上执行要测试的命令(会话B),
   
    SQL> select * from jj_3;
   
    ID NA
   
    ---------- --
   
    1 aa
   
    2 aa
   
    3 aa
   
    4 aa
   
    5 CN
   
    步骤五:再次查看x$bh视图
   
    SQL> select addr,tch from x$bh where dbarfil=5 and dbablk=41;
   
    ADDR            TCH
   
    -------- ----------
   
    080B5208         42
   
    注意:步骤三四五应尽快完成。避免oracle的其他内部操作影响测试结果。(

|<< << < 1 2 3 > >> >>|
加入收藏:  加入收藏夹  | 发送给好友:  发送给好友
责任编辑:admin
  • 上一篇:Oracle体系结构前必掌握的2个概念
  • 下一篇:无
  • 相关文章列表
    请文明参与讨论,禁止漫骂攻击。  
    网友评论