【新炬名師大講堂】使用ttTraceMon進行TimesTen故障分析
(本文轉自“NCN新炬團隊部落格”)
1.TraceMon介紹
TraceMon工具是TimesTen提供的一個底層的Debug工具,可以透過TraceMon跟蹤TimesTen的內部Trace詳細資訊,類似於Oracle的SYSDUMP;對於TimesTen來說,由於其執行在記憶體中的特點,不能像Oracle那樣 有詳細的記錄資訊,所有的資訊都是瞬間值,對於能重現的故障或者效能問題,使用TraceMon跟蹤分析,可以說是不二的選擇了。更多介紹可以參考官方文件《TimesTen Troubleshooting Guide》或者Oracle技術論壇。
2.使用注意事項
TraceMon是TimesTen提供的一個底層的Debug工具,既然是底層工具,那麼使用自然會存在一定的風險。
TraceMon最主要的風險在於對效能的消耗,特別是CPU的消耗最為嚴重,所以使用時需要非常小心,不建議對生產系統進行全庫的Trace,全庫Trace不單對效能消耗過大,日誌量也非常太大,不便於問題的分 析和定位在生產系統中使用建議請求Oracle的技術支援。
3.TraceMon功能介紹
TraceMon支援對大部分元件的跟蹤,具體的元件如下:
TT 7.0.x:
Trace> show
LATCH … 0
LOCK … 0
LOG … 0
LOGF … 0
TRACE … 0
API … 0
HEAP … 0
SM … 0
XACT … 0
EE … 0
CG … 0
SQL … 0
TEST … 0
FLOW … 0
PT … 0
ERR … 1
REPL … 0
OPT … 0
CKPT … 0
XA … 0
ORACON … 0
AGING … 0
PLOAD … 0
AUTOREFRESH … 0
TT 11.2.2新增:
ASYNCMV … 0
CGRID … 0
CGRIDC … 0
DBG0 … 0
DBG1 … 0
DEADLOCK … 0
IX … 0
IXGC … 0
LOB … 0
MEM … 0
PREP … 0
INTERRUPT … 0
其中對SQL/API/LOCK/ERR/AGING/AUTOREFRESH提供相應的使用文件說明。
1)SQL元件
SQL元件分為2、3、4、5四個等級:
Level 2:輸出為SQL命令的編譯(Preparing)過程。
Level 3:在Level 2的基礎上加上SQL命令執行(Executing)。
Level 4:在Level 3的基礎上加上命令共享池的相關編譯資訊(prepares not being done because the prepared command already exists in the pool),或者是SQL命令不在共享池內的重新編譯。Level 4 ttTraceMon 同時會輸出opening、fetching和closing.
Level 4:在Level 4的基礎上,同時輸出一些內部資訊,比如命令編號。
2)lock元件
Lock元件用於跟蹤應用鎖行為,為觀察死鎖或鎖等待;鎖跟蹤的資訊會產生大量正常鎖的資訊,這可能會使得跟蹤的資訊閱讀起來比較困難。lock元件分為1、2、3、4、6五個等級:
Level 1:輸出Trace期間監控到的死鎖。
Level 2:在Level 1的基礎上加上分配鎖失敗的原因。
Level 3:在Level 2的基礎上加上鎖等待(鎖分配或者未分配)。
Level 4:在Level 3的基礎上加上所有鎖的分配和釋放,鎖呼叫及死鎖檢測器的機制。
Level 6:在Level 4的基礎上加上迴圈遍歷。
3)API元件
API元件是用於跟蹤一些連線到Data Store、連線屬性變更及事務提交等,API分為1、2、3、4四個等級。
Level 1:所有回滾的事務,有subdaemon恢復異常中斷的應用程式連線。
Level 2:在Level 1的基礎上加上一些低空間條件。
Level 3:在Level 2的基礎上加上操作Data Store的建立、建立連線、斷開連線、checkpoint、backup和空間緊湊;提交或回滾的連線以及一些其他的操作。
Level 4:在Level 3的基礎上加上其他操作進行TimesTen的內部API級別。它不顯示大量的儲存管理器和索引操作內部完成。
4)Err元件
顯示所有直接驅動錯誤資訊,Err元件預設等級為Level 1,這個等級只會輸出一些致命的錯誤資訊。
Level 1:所有異常引起的錯誤資訊,比如事務超時;Level 2會輸出很多由TimesTen內部處理的錯誤資訊。
5)AGING元件
AGING元件主要用於跟蹤AGING的開始和結束,AGING期間多少資料被subdaemon刪除。AGING分為1、2、3、4四個等級。
Level 1:subdaemon啟動最近一次AGING的LRU演算法或time-based演算法;沒有達到閥值時,重複的執行LRU演算法老化;subdaemon停止LRU演算法或time-based演算法。
Level 2:在Level 1的基礎上加上Aging開始和結束,結束的原因資訊和共刪除的記錄數。
Level 3:在Level 2的基礎上加上每個Aging週期刪除的資料量的詳細資訊。
Level 4:在Level 3的基礎上加上加上aging 每次被subdaemon喚醒的資訊。
6)Autorefresh元件
Autorefresh元件用於獲取Cache Group重新整理程式相關操作資訊。Autorefresh分為1、2、3、4四個等級。
Level 1: 自動重新整理間隔彙總,啟動自動重新整理時間;每個間隔重新整理的記錄數;每個重新整理間隔根表重新整理的記錄數;從上次Cache Agent程式啟動至今共重新整理的記錄數;從上次Cache Agent程式啟動至今根表重新整理的 記錄 數;
Level 2:在Level 1的基礎上加上每個Cache Group啟動的時間;每個Cache Group重新整理的記錄數;每個Cache Group根表重新整理的記錄數;從上次Cache Agent啟動至今每個Cache Group重新整理的總記錄數;從上次 Cache Agent啟動至今每個Cache Group根表重新整理的總記錄數;每個Cache Group重新整理結束時間。
Level 3:在Level 2的基礎上加上Cache Group重新整理啟動時間,重新整理記錄數;從Cache Agent啟動重新整理記錄數;Cache Group重新整理結束時間。
Level 4:在Level 3的基礎上加上每個表的重新整理詳細資訊;每個表的自動重新整理啟動時間;自動重新整理的查詢語句;查詢語句在Oracle端執行的時間(單位為milliseconds),包括子表;查詢fetch在Oracle端執 行的時間(單位為milliseconds),包括子表;查詢結果在TimesTen的端應用的時間(單位為milliseconds),包括子表;自動重新整理結束時間;自動重新整理到哪個bookmark (logseq) 已經完成。
4.使用方法
TraceMon的使用方法很簡單,只需根據需求按照如下方法開啟Trace跟蹤,跟蹤完成後關閉即可;這裡比較複雜的是如何判斷跟蹤的型別及跟蹤的級別,這個需要結合應用故障型別及相關經驗綜合考慮,建議 請求Oracle的官方支援。
tttracemon rta_acc_d
—開啟Trace跟蹤
show
outfile /mdb/others/trace/alltrace01.txt ##確保日誌夠磁碟空間充足
flush
dump
connection all off;
level SQL 4
level lock 4
connection XX on; ##XX代表連線的Connection Id,多個Id採用多個
—-關閉Trace跟蹤
connection all off;
level SQL 0
level lock 0
outfile 0
以上的例子根據connection id進行跟蹤,如果不執行connection all off操作即是全庫跟蹤。
5.日誌分析
擷取Trace的輸出日誌如下:
22:13:34.805 2 SQL 4L 28C 5243172P Opening: SELECT BILL_SEQ FROM RTA_ONLINE_BILL WHERE USER_ID = :1_acctid AND BILL_MONTH = :2_billmonth ;
22:13:34.805 3 SQL 4L 28C 5243172P Fetching: SELECT BILL_SEQ FROM RTA_ONLINE_BILL WHERE USER_ID = :1_acctid AND BILL_MONTH = :2_billmonth ;
22:13:34.805 5 SQL 4L 28C 5243172P Closing: SELECT BILL_SEQ FROM RTA_ONLINE_BILL WHERE USER_ID = :1_acctid AND BILL_MONTH = :2_billmonth ;
日誌輸出可以分為7列:
第一列為時間串: 22:13:34.805
第二列為序列: 269
第三列為元件型別: SQL
第四列為抓取的等級,也就是該日誌屬於哪個級別: 2L
第五列為Connection Id號: 3C
第六列為程式號: ProcessId
第七列為操作(Operation): Preparing: SELECT BILL_SEQ FROM RTA_ONLINE_BILL WHERE USER_ID = :1_acctid AND BILL_MONTH = :2_billmonth ;
附:相關TraceMon故障分析的例子可以參考之前編寫的《使用TraceMon分析TimesTen應用超時問題》
created by Tony.Tang[TangYun]2015.02
—————————-End—————————————-
原文連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29960155/viewspace-1431501/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用ttTraceMon進行TimesTen故障分析
- 【新炬網路名師大講堂】理解TimesTen錯誤日誌資訊”waiting for latch”AI
- 【新炬網路名師大講堂】SOA套件介紹套件
- 【新炬網路名師大講堂】weblogic整合ejbWeb
- 【新炬網路名師大講堂】svn在linux下的使用Linux
- 【新炬網路名師大講堂】TimesTen記憶體碎片(高水位)回收步驟詳解記憶體
- 【新炬網路大師講堂】CMMI/敏捷方法入門敏捷
- 【新炬網路名師大講堂】總結和結論
- 【新炬網路名師大講堂】12c新特性:使用RMAN連線CDB
- 【新炬網路名師大講堂】關於LOG FILE SYNC的解惑
- 【新炬網路名師大講堂】Oracle Database 12c 新特性總結OracleDatabase
- 【新炬網路名師大講堂】TimesTen記憶體資料庫評估和計算表大小及碎片記憶體資料庫
- 【新炬網路名師大講堂】Data Guard–物理主備庫切換
- 【新炬網路名師大講堂】TUXEDO的配置最佳化之路一UX
- 【新炬網路名師大講堂】TUXEDO的配置最佳化之路二UX
- 【新炬網路名師大講堂】初識mysql的體系結構MySql
- 【新炬網路名師大講堂】cursor: pin S wait on X模擬AI
- 【新炬網路名師大講堂】Oracle中的回收站(Recycle Bin)Oracle
- 【新炬網路名師大講堂】clone oracle 12c pluggable databasesOracleDatabase
- 【新炬網路名師大講堂】關於IMSI/MSISDN/IMEI的介紹
- 【新炬網路名師大講堂】12c新特性:備份CDBs和PDBs
- 【新炬網路名師大講堂】Oracle 11g rac 刪除節點Oracle
- 【新炬網路名師大講堂】j2ee與weblogic簡介Web
- 【新炬網路名師大講堂】oracle application server之核心技術opmnOracleAPPServer
- 【新炬網路名師大講堂】GoldenGate的ADD SCHEMATRANDATA命令研究Go
- 【新炬網路名師大講堂】tomcat 環境下連線池洩露故障處理一例Tomcat
- 【新炬網路名師大講堂】RAC環境下SYSDATE返回錯誤時間
- 【新炬網路大師講堂】將過程成熟度引入研發文化
- 【新炬網路名師大講堂】AIX上的配置網路調優引數AI
- 【新炬網路名師大講堂】不同資料庫取前幾條記錄資料庫
- 【新炬網路名師大講堂】在AIX機器上使用xlc編譯c的動態庫AI編譯
- 【新炬網路大師講堂】敏捷性與更高CMMI級別的實踐敏捷
- 【新炬網路名師大講堂】MySQL複製與監控系列文章(1)——篇首MySql
- 【新炬網路名師大講堂】關於Oracle 12c Flex ASM特性的理解OracleFlexASM
- 【新炬網路名師大講堂】Oracle小知識- Oracle KILLED會話的釋放Oracle會話
- 【新炬網路名師大講堂】WAS控制檯資料來源資訊無故丟失
- 【新炬網路名師大講堂】有限條件下怎樣做好恢復演練
- 【新炬網路名師大講堂】執行計劃順序不符合一般規則