19_深入解析Oracle undo原理(3)_ktuxe詳解
1 問題描述
Oracle 資料庫活動事務異常中斷後,資料庫會進入事務恢復狀態,通過查詢x$ktuxe表可以檢查事務恢復資訊和事務恢復進度。
2 解釋x$ktuxe 表
ktuxe(Kernel Transaction Undo tranXaction Entry) 表示資料庫中的事務表,是undo 段頭塊中的一部分,由儲存事務資訊的一組事務槽組成。
3 詳解x$ktuxe 欄位含義
x$ktuxe 包含以下欄位,
SYS@source>desc x$ktuxe; Name Null? Type ----------------------------------------- -------- ---------------------------- ADDR RAW(8) INDX NUMBER INST_ID NUMBER KTUXEUSN NUMBER KTUXESLT NUMBER KTUXESQN NUMBER KTUXERDBF NUMBER KTUXERDBB NUMBER KTUXESCNB NUMBER KTUXESCNW NUMBER KTUXESTA VARCHAR2(16) KTUXECFL VARCHAR2(24) KTUXEUEL NUMBER KTUXEDDBF NUMBER KTUXEDDBB NUMBER KTUXEPUSN NUMBER KTUXEPSLT NUMBER KTUXEPSQN NUMBER KTUXESIZ NUMBER 接下來我們通過實驗的方式觀察以上表核心欄位的含義: 【測試指令碼】 create table system.test_undo27 as select * from dba_objects; begin for i in 1..50 loop insert into system.test_undo27 select * from dba_objects; commit; end loop; end; / delete from system.test_undo27; 【v$transaction】 select addr,xidusn, xidslot, xidsqn, ubafil, ubablk, ubasqn, ubarec, used_ublk, used_urec from v$transaction;
【x$ktuxe 資訊】
select * from x$ktuxe where ktuxesta='ACTIVE';
【KTUXEUEL 欄位驗證】
4 dump undo header
oradebug setmypid
alter system dump undo header '_SYSSMU2$';
oradebug close_trace
oradebug tracefile_name
index: Slot number
STA (State)
0 Idle
1 Collecting
2 Prepared
3 Committed
4 Heuristic Abort (forced rollback)
5 Heuristic Commit (forced commit)
6 Heuristic Damage (forced mixed)
7 Try again later
9 Inactive, no local Tx
10 Active, begin local Tx
11 Pdml Prepared
12 Pdml Committed
13 For in-doubt use onl
DBA : Rollback DBA, undo bk to start the rollback
5 事務恢復
SYS@source>select spid from v$process where addr=(select paddr from v$session where sid=(select sid from v$mystat where rownum < 2)); SPID ------------------------------------ 48510 kill -9 48510 ----查詢DEAD狀態事務 select ADDR,KTUXEUSN,KTUXESLT,KTUXESQN,KTUXESIZ from x$ktuxe where KTUXECFL ='DEAD'; ADDR KTUXEUSN KTUXESLT KTUXESQN KTUXESIZ ---------------- ---------- ---------- ---------- ---------- 00007F74EC119E30 2 4 315 59699 ---計算DEAD事務恢復完成需要時間(秒) declare t_start number; t_end number; begin select ktuxesiz into t_start from x$ktuxe where KTUXEUSN = 2 and KTUXESLT = 4; dbms_lock.sleep(60); select ktuxesiz into t_end from x$ktuxe where KTUXEUSN = 2 and KTUXESLT = 4; dbms_output.put_line('Time Need Sec:' || round(t_end / (t_start - t_end), 2)); end; /
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31442014/viewspace-2680394/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 20_深入解析Oracle undo原理(4)_ktuxc詳解OracleUX
- 17_深入解析Oracle undo原理(1)_transactionOracle
- 18_深入解析Oracle undo原理(2)_undo表空間使用率100%問題處理Oracle
- 深入解析 oracle drop table內部原理Oracle
- ThreadLocal原理深入解析thread
- Oracle Redo and UndoOracle Redo
- 深入詳細瞭解synchronized底層原理synchronized
- 深入 Redis 主從複製的原理詳解Redis
- 深入詳解Redis 主從複製的原理!Redis
- 從ReentrantLock詳解AQS原理原始碼解析ReentrantLockAQS原始碼
- Java集合詳解(三):LinkedList原理解析Java
- Java集合詳解(五):Hashtable原理解析Java
- Java集合詳解(二):ArrayList原理解析Java
- Java集合詳解(三):HashMap原理解析JavaHashMap
- InnoDB undo log原理
- ORACLE 資料塊格式深入解析Oracle
- oracle undo分配規則Oracle
- Oracle OCP(48):UNDO TABLESPACEOracle
- oracle的redo和undoOracle
- 深入解析 ResNet:實現與原理
- 深入解析vue響應式原理Vue
- 深入理解MYSQL undo redoMySql
- Flutter完整開發實戰詳解(六、 深入Widget原理)Flutter
- XtraBackup工具詳解 Part 3 XtraBackup工作原理
- 深入解析Vue中的computed工作原理Vue
- 深入原始碼解析 tapable 實現原理原始碼
- Oracle常見UNDO等待事件Oracle事件
- 關於oracle中的undoOracle
- 【REDO】Oracle redo undo 學習Oracle Redo
- 深入瞭解Synchronized原理synchronized
- Flutter完整開發實戰詳解(九、 深入繪製原理)Flutter
- Flutter完整開發實戰詳解(七、 深入佈局原理)Flutter
- 深入詳解Java反射機制與底層實現原理?Java反射
- 深入詳解Mybatis的架構原理與6大核心流程MyBatis架構
- 13_深入解析Oracle資料庫bootstrapOracle資料庫boot
- 14_深入解析Oracle table cluster結構Oracle
- 深入解析和定製Oracle優化工具Oracle優化
- 【恩墨學院】深入剖析 - Oracle SCN機制詳細解讀Oracle