中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

10046 事件 與 10053 事件

發布時間:2020-08-07 07:17:04 來源:ITPUB博客 閱讀:176 作者:kunlunzhiying 欄目:建站服務器

有同學一直向Maclean反應希望做一期10046 SQL trace的教程, 正好這幾天有空 我們就理一理。

為什么我們要使用10046 trace?

10046 trace幫助我們解析 一條/多條SQL、PL/SQL語句的運行狀態 ,這些狀態包括 :Parse/Fetch/Execute三個階段中遇到的等待事件、消耗的物理和邏輯讀、CPU時間、執行計劃等等。

即10046 為我們揭示了 一條/多條SQL 的運行情況, 對于 以點入手的 SQL調優是很好的輔助工具,特別是在 10g之前沒有ASH的情況下。 但整體系統調優 不是10046 所擅長的, 10046 是 性能調優的起釘器 , AWR是性能調優 的錘子。

10046還能幫助我們分析 一些 DDL維護命令的內部工作原理, RMAN、Data Pump Expdp/Impdp等工具的緩慢問題等, 是研究 oracle 數據庫原理的 居家旅行必備良品。

10046 和SQL TRACE的區別?

10046 比 SQL_TRACE參數提供更多的控制選項, 更詳細的內容輸出, 一般Maclean只用10046 而不用sql_trace

10046 和10053 的區別?

10053 是最常用的Oracle 優化器optimizer 跟蹤trace, 10053 可以作為我們解析 優化器為什么選擇某個執行計劃,其中的理由的輔助工具,但并不告訴我們這個執行計劃 到底運行地如何。

而10046 并不解釋 optimizer優化器的工作, 但它同樣說明了在SQL解析parse階段所遇到的等待事件和所消耗的CPU等資源,以及Execute執行和Fetch階段的各項指標。

簡而言之10046 告訴我們SQL(執行計劃)運行地如何, 10053告訴我們 優化器為什么為這個SQL選擇某個執行計劃。

10046 TRACE的LEVEL:

不同的Level 對應不同的跟蹤級別

  • 1 啟用標準的SQL_TRACE功能 ( 默認) 包含了 SQL語句、響應時間、服務時間、處理的行數,物理讀和寫的數目、執行計劃以及其他一些額外信息。 到版本10.2中 執行計劃寫入到 trace 的條件是僅當相關游標 已經關閉時, 且與之相關的執行統計信息是所有執行次數的總和數據。 到版本11.1中僅在每次游標的第一次執行后將執行計劃寫入到trace , 執行統計信息僅僅和這第一次執行相關
  • 4 比level 1時多出 綁定變量的 trace
  • 8 比level 1多出等待事件,特別對于9i中指出 latch free等待事件很有用,對于分析全表掃描和索引掃描也很有用
  • 12 比level 1 多出 綁定變量和 等待事件
  • 16 在11g中為每一次執行生成STAT信息,僅在11.1之后可用
  • 32 比level 1少執行計劃
  • 64 和level 1 相比 在第一次執行后還可能生成執行計劃信息 ; 條件是某個游標在前一次執行的前提下 運行耗時變長了一分鐘。僅在 11.2.0.2中可用
  • Level 28 (4 + 8 + 16) 代表 同時啟用 level 4 、level 8、level 16
  • level 68 ( 64 + 4 ) 代表 同時啟用 level 64、level 4

設置的方法如下:

session 級別: alter session set events ’10046 trace name context forever,level X’;

system 級別 : alter system set events ’10046 trace name context forever,level X’;

針對非本會話的 某一個進程設置,如果你知道他的SPID 操作系統進程號

oradebug setospid SPID;

oradebug event 10046 trace name context forever, level X;

例如:

[oracle@vrh8 ~]$ ps -ef|grep LOCAL oracle 12421 12420 0 Aug21 ? 00:00:00 oracleG10R25 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) oracle 12522 12521 0 Aug21 ? 00:00:00 oracleG10R25 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) oracle 12533 1 0 Aug21 ? 00:00:00 oracleG10R25 (LOCAL=NO) oracle 15354 15353 0 Aug21 ? 00:00:08 oracleG10R25 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) oracle 15419 15418 0 Aug21 ? 00:00:11 oracleG10R25 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) oracle 16219 16218 0 Aug21 ? 00:00:00 oracleG10R25 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) oracle 17098 17097 0 03:12 ? 00:00:00 oracleG10R25 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) 要跟蹤 17098 這個進程 SQL> oradebug event 10046 trace name context forever, level 28; Statement processed. 從 sid 定位到 SPID 或者 ORAPID 的 查詢如下: SQL> select distinct sid from v$mystat; SID ---------- 141 SQL> select spid,pid from v$Process where addr=(select paddr from v$session where sid=141); SPID PID ------------ ---------- 17196 24 select spid,pid from v$Process where addr=(select paddr from v$session where sid=&SID) 如果只知道 ORA的PID 那么也可以 oradebug setorapid 24; oradebug event 10046 trace name context forever, level 28;
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

龙游县| 永春县| 任丘市| 新津县| 志丹县| 碌曲县| 怀来县| 石嘴山市| 富川| 隆德县| 隆回县| 嘉祥县| 南宫市| 金阳县| 嫩江县| 晴隆县| 武安市| 开封县| 山丹县| 铜陵市| 临邑县| 临夏县| 新民市| 韶山市| 赤水市| 鹤庆县| 德令哈市| 通化市| 芮城县| 平陆县| 望江县| 招远市| 余江县| 平潭县| 万载县| 建昌县| 手机| 三穗县| 平阴县| 宁武县| 美姑县|