zoukankan      html  css  js  c++  java
  • 测试APPEND INSERT是否产生UNDO信息的过程


    D:>sqlplus test/test
    SQL*Plus: Release 11.1.0.6.0 - Production on 星期三 06月 29 19:46:41 2016
    Copyright (c) 1982, 2007, Oracle.  All rights reserved.


    连接到:
    Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
    SQL>
    SQL> commit;  --提交
    提交完成。
    SQL> alter system flush buffer_cache;  --清缓冲
    系统已更改。
    SQL> get undo5
      1  select n.name,v.value from v$sesstat v,v$statname n
      2  where v.statistic#=n.statistic#
      3  and n.name in('undo change vector size','redo size','DBWR undo block writes','redo blocks written')
      4* and v.sid=(select distinct sid from v$mystat) 
      --获取当前会话的('undo change vector size','redo size','DBWR undo block writes','redoblocks written'
    SQL> colu name for a30
    SQL> /
    NAME                                VALUE
    ------------------------------ ----------
    DBWR undo block writes                  0
    redo size                               0
    redo blocks written                     0
    undo change vector size                 0
    SQL> get undo_redo
      1  select * from v$sysstat where name in('DBWR undo block writes',
      2*                                       'redo blocks written')
    --获取当前系统的'DBWR undo block writes','redoblocks written'
    SQL> /
    STATISTIC# NAME                                CLASS      VALUE    STAT_ID
    ---------- ------------------------------ ---------- ---------- ----------
            75 DBWR undo block writes                  8        214  111270822
           139 redo blocks written                     2       3183 2391431605
    SQL>  insert /*+ append*/ into &tab_new select * from &tab_old;   --执行direct path INSERT
    输入 tab_new 的值:  bb
    输入 tab_old 的值:  aa
    原值    1:  insert /*+ append*/ into &tab_new select * from &tab_old
    新值    1:  insert /*+ append*/ into bb select * from aa
    已创建4行。
    SQL>  select XIDUSN,xidslot,xidsqn,ubafil,ubablk,ubasqn,ubarec,USED_UBLK
      2     from v$transaction;  --获取当前事务回滚段
        XIDUSN    XIDSLOT     XIDSQN     UBAFIL     UBABLK     UBASQN     UBAREC
    ---------- ---------- ---------- ---------- ---------- ---------- ----------
     USED_UBLK
    ----------
             7          4        196          0          0          0          0
             1


    SQL>  select name from v$rollname where usn=&usnn;   --获取当前事务回滚段名
    输入 usnn 的值:  7
    原值    1:  select name from v$rollname where usn=&usnn
    新值    1:  select name from v$rollname where usn=7
    NAME
    ------------------------------
    _SYSSMU7$
    SQL>  alter system dump undo header "&un";    --导出当前事务提交前回滚段头信息
    输入 un 的值:  _SYSSMU7$
    原值    1:  alter system dump undo header "&un"
    新值    1:  alter system dump undo header "_SYSSMU7$"
    系统已更改。
    SQL> COMMIT;  --提交事务
    提交完成。
    SQL> ALTER SYSTEM FLUSH BUFFER_CACHE;  --刷新缓冲
    系统已更改。
    SQL> ALTER SYSTEM FLUSH BUFFER_CACHE;  --刷新缓冲
    系统已更改。
    SQL> GET UNDO5
      1  select n.name,v.value from v$sesstat v,v$statname n
      2  where v.statistic#=n.statistic#
      3  and n.name in('undo change vector size','redo size','DBWR undo block writes','redo blocks written')
      4* and v.sid=(select distinct sid from v$mystat)
    --获取事务执行并提交后的'undo change vector size','redo size','DBWR undo block writes','redo blocks written'信息
    SQL> /
    NAME                                VALUE
    ------------------------------ ----------
    DBWR undo block writes                  0
    redo size                            4264
    redo blocks written                     0
    undo change vector size              1064
    --注意:事务执行前undo change vector size:0,执行direct path INSERT后,其值:1064,前后差值:1064
    SQL> GET UNDO_REDO
      1  select * from v$sysstat where name in('DBWR undo block writes',
      2*                                       'redo blocks written')
    --获取当前系统DBWR undo block writes','redo blocks written'信息
    SQL> /
    STATISTIC# NAME                                CLASS      VALUE    STAT_ID
    ---------- ------------------------------ ---------- ---------- ----------
            75 DBWR undo block writes                  8        216  111270822
           139 redo blocks written                     2       3195 2391431605
    --注意:事务执行前DBWR undo block writes:214 ,执行direct path INSERT后,其值:216,前后差值:2
    SQL>  alter system dump undo header "&un";    --事务提交后再次导出事务使用回滚段头信息
    输入 un 的值:  _SYSSMU7$
    原值    1:  alter system dump undo header "&un"
    新值    1:  alter system dump undo header "_SYSSMU7$"
    系统已更改。
    SQL> ALTER SYSTEM DUMP DATAFILE 2 BLOCK MIN 5391 BLOCK MAX 5393; 
    --由导出事务提交后回滚段头信息确定,事务提交后xid对应的回滚段数据文件及块号:0x00801510 -->对应文件号(二进制前十位):2 块号(二进制后22位):5392
    系统已更改。
    SQL> select object_name from dba_objects where object_id=13697;  --由导出回滚段块中,相应事务XID对应的undo信息中,objn=13697,获取此UNDO信息对应的数据库对象为表BB,这正是我们在其上执行direct path INSERT操作的表;
    OBJECT_NAME
    --------------------------------------------------------------------------------
    BB

  • 相关阅读:
    element ui 修改默认样式
    npm ERR! Cannot read property 'match' of undefined 错误处理
    Each record in table should have a unique `key` prop,or set `rowKey` to an unique primary key.
    (转)教你怎么理解正则表达式之零宽断言(环视)
    (转)通过扩展让ASP.NET Web API支持JSONP
    (转)走进AngularJs(六) 服务
    (转)在ASP.NET MVC3 中利用Jsonp跨域访问
    (转)DataTable与结构不同实体类之间的转换
    (转)深入理解最强桌面地图控件GMAP.NET --- 百度地图
    (转)打造一套UI与后台并重.net通用权限管理系统
  • 原文地址:https://www.cnblogs.com/lhdz_bj/p/9077120.html
Copyright © 2011-2022 走看看