測試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
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8484829/viewspace-2122424/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 不同insert操作產生的undo的測試
- oracle dml產生undo的區別小測試Oracle
- CTAS和insert append的一個測試APP
- 資料新聞的生產過程–資訊圖
- 分享一個批量產生隨機測試資料的MySQL儲存過程隨機MySql儲存過程
- oracle redo日誌產生量測試及比較2_insertOracle Redo
- insert /*+ append */ into 與insert into 的區別APP
- oracle的undo的工作過程Oracle
- Oracle中undo 如何產生RedoOracle
- ORACLE儲存過程中建立子過程的測試!Oracle儲存過程
- 哪種DML操作產生undo多
- 軟體效能測試有哪些測試過程?
- 軟體測試、自動化測試極容易產生的誤區
- 產生隨機密碼的sql儲存過程隨機密碼SQL儲存過程
- insert append需要注意的問題APP
- insert /*+ append */直接路徑插入APP
- insert 中append 用法詳解APP
- 系統測試-從研發到測試過程
- Redis快速產生測試資料的三種方法Redis
- mysql的DDL操作對業務產生影響測試MySql
- 我的測試儲存過程程式碼儲存過程
- 測繪地理資訊賦能新質生產力
- 軟體測試面試過程解析面試
- impdp操作產生大量UNDO的原因及解決方法
- 【Mysql】兩條insert 語句產生的死鎖MySql
- 關於insert /* append */的幾點註記APP
- 關於insert /*+ append*/ 各種insert插入速度比較APP
- nologging和insert /*+append*/APP
- Append與Direct-Path Insert(一)APP
- Append與Direct-Path Insert(二)APP
- 直接路徑插入 -- insert /*+append*/ into [zt]APP
- 直接insert與儲存過程insert效能區別儲存過程
- 11g append 和常規insert在logging FORCE_LOGGING產生redo量差異APP
- 策劃入門(九)遊戲測試方案的產生(轉)遊戲
- 滲透測試對app安全測試實戰過程分享APP
- 電商APP測試過程中遇到的問題APP
- 軟體測試過程中的度量與分析
- 軟體測試過程的持續改進