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
--------------------------------------------------------------------------------
BBsql