久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

oracle中10046事件怎么用

138次閱讀
沒有評論

共計 3409 個字符,預計需要花費 9 分鐘才能閱讀完成。

這篇文章主要介紹 oracle 中 10046 事件怎么用,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

10046 的 定義

  sql_trace/10046 事件是 oracle 提供的用于進行 sql 跟蹤的手段,其內容包括 sql 的解析過程、sql 的執行計劃、綁定變量的使用、會話發生的等待事件。

10046 生成語句方法:

SQL   alter session set events 10046 trace name
context forever,level 12

現在隨便查詢一個什么,如:

select * from
dba_users where rownum 20

查看 trace 文件

SQL
select * from v$diag_info;

里面有個 Default Trace File

 1 Default Trace File

/u01/app/oracle/diag/rdbms/prod1/PROD1/trace/PROD1_ora_28613.trc

10g 的話,show parameter dump; 找 udump

10046 級別

目的:獲取 sql、pl_sql 等相關語句的執行情況解析

10046 級別:共 4 個級別 分別為 0、1、4、8、12

  10046 事件是 SQL_TRACE 的擴展,被戲稱為 吃了興奮劑的 SQL_TRACE

  有效的追蹤級別:

  ① 0 級:SQL_TRACE=FASLE

  ② 1 級:SQL_TRACE=TRUE,這是缺省級別

  ③ 4 級:1 級 + 綁定變量

  ④ 8 級:4 級 + 等待事件

  ⑤ 12 級:4 級 + 8 級

tkprof:oracle 內置的針對跟蹤文件格式化的一種工具

alter session set
events 10046 trace name context forever, level 12   – 當前會話啟用跟蹤

alter session set
events 10046 trace name context off  
– 關閉當前會話跟蹤

select sid,serial#,username from v$session where username is not
null;  – 查詢 sid 和 serial

execute
dbms_system.set_ev(sid,serial#,10046,12,  
– 在當前會話對其它會話進行跟蹤

execute
dbms_system.set_ev(sid,serial#,10046,0,  
– 在當前會話關閉其它會話跟蹤

tkprof 常用參數

tkprof  回車查看一下幫助  
就知道怎么用了   tkprof 解析源追蹤文件   解析完成的文件  

filename 由 SQL trace 產生的輸入跟蹤文件

explain SQL 語句的 explain plain

recoed 創建非遞歸 SQL 語句的 SQL 腳本

waits 記錄等待事件的匯總

SORT 根據一個或多個項目提供分類數據,如 PRSCPU(CPU 時間分析)、PRSELA(已用時間分析)等

table 定義表的名稱,TKPROF 實用程序暫時將執行計劃放入該表中

sys 啟用或禁用由 sys 給出的一組 SQL 語句

PRINT 僅列出指定數量的 SQL 語句,而不是所有的 SQL 語句

insert 創建存儲跟蹤數據庫信息的腳本

與 10046 相關的兩個參數:

show
parameter max_dump_file_size;

對 trace 文件的大小限制

show
parameter timed_statistics;

對重要信息的收集是否開啟

10046 怎么看?

tkprof 文件都包含以下內容:

sql 語句

分析 執行 獲取調用的次數

被處理的行數

所使用 CPU 的秒數

所使用的 IO

庫高速緩存未命中

可選的執行計劃

行源 操作列表

一個報告,總結分析了在跟蹤文件中有多少相似和完全不同的語句,如果同樣的語句,parse 列總是一個大值,說明沒有用上綁定變量

count    =
number of times OCI procedure was executed。OCI 為 oracle 的調用接口,提供了一組可對 ORACLE 數據庫進行存取的接口子例程(函數),通過在第三代程序設計語言(如 C 語言)中進行調用可達到存取 ORACLE 數據庫的目的。

cpu      =
cpu time in seconds executing  以秒為單位的

elapsed  = elapsed
time in seconds executing 以秒為單位的消耗時間

disk     =
number of physical reads of buffers from disk 物理讀

query    =
number of buffers gotten for consistent read 為了一致性讀獲得的空間。

在一致性讀模式下,所有 parse、execute、fetch 所獲得的 buffer 的數量。一致性模式的 buffer 是用于給一個長時間運行的事務提供一個一致性讀的快照,緩存實際上在頭部存儲了狀態。

current  = number of
buffers gotten in current mode (usually for update) 數據庫塊命中的次數,通常是為了 update

在 current 模式下所獲得的 buffer 的數量。一般在 current 模式下執行 insert、update、delete 操作都會獲取 buffer。

rows     =
number of rows processed by the fetch or execute call 每一種調用類型所處理的行的總數

還有這些:

Misses in library cache during parse:發生在解析的硬解析數量,如果是軟解析則 Misses in library cache during parse 將為 0

Misses in library cache during execute:發生在執行調用階段的硬解析數量。如果在執行調用時沒有硬解析發生,Misses in library cache during execute 這一行將不存在。

重點參考:http://czmmiao.iteye.com/blog/1493765

分析下面一段代碼:

SQL ID: 00fqk94bdzqnj Plan Hash:
644658511

select sid,serial#,username

from

 v$session where username is not null

call  count① 
cpu  elapsed  disk 
query  current  rows

——- ——  ——– ———- ———- ———-
———-  ———-

Parse  1 
0.01  0.01  0  0  0  0

Execute  1 
0.00  0.00  0  0  0  0

Fetch  2 
0.00  0.00  0  0  0  2

——- ——  ——– ———- ———- ———-
———-  ———-

total  4 
0.01  0.01  0②  0  0  2

Misses in library cache during parse: 1

Optimizer mode: ALL_ROWS

Parsing user id: SYS

Number of plan statistics captured: 1

①假設 count 這列,fetch 部分執行了 17324 次,獲得的 rows 行數是 259806,兩者相除,就可以得出一次獲取,能夠獲取多少行記錄,一次獲得 15 行數據,懷疑是用了數組取操作。

②理論上,elapsed time=CPU time+disk time,即如果 elapsed time 為 1.85,CPU 為 1.82,那么 disk 可能就是 3。但是也可能是有等待事件,把大量時間花在了等待事件上。

③可以通過磁盤 IO 所占邏輯 IO 的比例,disk/query+current 來判斷磁盤 IO 的情況,太大的話有可能是 db_buffer_size 過小,當然這也跟 SQL 的具體特性有關

④query+current/rows
平均每行所需的 block 數,太大的話(超過 20)SQL 語句效率太低,數據過于分散,可以考慮重組對象

⑤通過 SQL ID:
06nvwn223659v Plan Hash: 0 標識出一個新的 SQL 分析,會發現很多是系統自己的 SQL,直接不用看

以上是“oracle 中 10046 事件怎么用”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注丸趣 TV 行業資訊頻道!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-24發表,共計3409字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 蛟河市| 谢通门县| 夏邑县| 天镇县| 纳雍县| 永清县| 绥芬河市| 河北省| 平利县| 宁陵县| 盐城市| 吴忠市| 潢川县| 民丰县| 金门县| 神木县| 纳雍县| 舒兰市| 汝阳县| 黄平县| 宜兴市| 合江县| 长顺县| 额尔古纳市| 崇礼县| 买车| 尤溪县| 鄢陵县| 绵阳市| 焦作市| 临清市| 凌云县| 西安市| 成武县| 启东市| 志丹县| 孝昌县| 仙居县| 南开区| 易门县| 丹东市|