oracle 性能優化 07_診斷事件

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

一、診斷事件
? ? 診斷事件無官方技術文檔支持,使用存在風險,慎用。使用診斷事件可以獲取問題更多的信息,調整系統運行
特性,啟用某些內部功能。用于系統故障的診斷。跟蹤應用,改變系統運行模式。
1.DUMP分析
? ? immediate dump:
? ? alter session set events 'immediate trace name <dump> level <n>' # n標示trace詳細程度
?? ? ? ?alter session set events 'immediate trace name controlf level 10';
?? ?on-error dump:通常在參數文件中設置
?? ?event = "<error> trace name errorstack level <n>" # error ORA-XXX,n詳細程度
?? ? ? ?event = "60 trace name errorstack level 1" # 發生ORA-60錯誤時,產生1級信息
?? ?變更運行特性:通常參數文件中設置
? ? event = "<event> trace name context forever, level <level>" #<event>指明要變更的特性
? ? event = "<event> trace name context forever, level <level>":參數,會話,系統級
?? ?alter {session|system} set events '<event> trace name context forever, level <n>';
? ? tree dump:分析索引的結構和變化
?? ?ALTER session set events 'immediate trace name treedump level <OBJECT_ID>'; ?#<OBJECT_ID>索引的ID
?? ?SELECT object_id,object_name FROM user_objects WHERE object_name LIKE 'IDX_%';?
參考資料:
http://blog.itpub.net/28507395/viewspace-1328056
http://blog.itpub.net/758322/viewspace-683573
2.常見故障
? ? 實例或進程crash
? ? 進程hang住
? ? ? ? 分系統級和應用級,進程等待某資源無法獲得,通過等待性能視圖,hanganalyze
? ? 非正常循環loop
? ? 系統性能低
? ? looping:等待某個事件
? ? 應用性能分析工具:event 10046 tkprof
二、常見事件分析
1、sql_trace: 將SQL執行的整個過程輸出到一個trace文件中,我們可以讀這個trace 文件來了解在這個SQL執行過程中
? ? ? ? ? ?Oracle 都做了哪些操作。
使用過程:
a.設置trace文件標識,或使用語句查(如10053)
b.可以通過語句和參數文件設置
? ? alter session set sql_trace=true; ?#會話級
?? ?alter database set sql_trace=true; ?#實例級
?? ?參數文件中配置sql_trace
c.執行相關SQL語句
d.關閉trace
? ? alter session[database] set sql_trace=false;
?? ?sqlplus退出后自動關閉sql_trace;
e、利用oracle工具TKPROF格式化查看trace文件
? ? tkprof 工具只能用在處理SQL_TRACE和10046事件產生的trace,其他事件如10053不能處理。
參數介紹:
? ? sys #默認值為yes,輸出文件中是否包含以SYS用戶運行的sql語句。
? ? record #指定分析輸出記錄所有非遞歸sql文件如:record=c:\test.log,用tkprof格式化后
? ? ? ? ? ? 大體了解跟蹤非遞歸SQL。有助于我們重演SQL語句(綁定變量的不可以)。
? ? aggregate #指定tkprof是否將同樣文本內容的sql聚合處理,參數為默認為no。
? ? sort #用來指定tkprof輸出文件里sql語句的排序,默認是按照執行的先后順序排序,參數最
?? ? ? ? ?經常用的方式sort=prsela,exeela,fchela,這三個值加起來就是響應時間,即按照響應
?? ??? ? ?時間排序。
? ? print #搭配sort一起使用,用來指定tkprof輸出sql語句的數量。如輸出一個跟蹤文件里響
?? ? ? ? ? 應時間排前十的SQL,sort=prsela,exeela,fchela print=10。
? ? explain #參數是為每一個SQL提供一個執行計劃。使用的方法是explain=用戶名/密碼
? ? wait #指定輸出文件是否包含等待事件,默認是包含的。一般都取默認值。?? ?
查找Trace文件:
? ? 默認開啟的環境下找會話的Trace文件,找到會話號,通過會話號,找到對應的trace文件
?? ? ? ?select sid from v$mystat where rownum=1;
? ? ? ? select username,sid,serial#,paddr from v$session where username='SYSTEM';
? ? ? ? select spid from v$process where addr = (select paddr from v$session where sid=139);
?? ? ? ?然后去udump目錄找到對應的Trace文件;
?? ?跟蹤其他用戶,查到用戶的spid,利用dbms_system.set_sql_trace_in_session(129,55,true)包 ?
?? ? ? ?exec dbms_system.set_sql_trace_in_session(129,55,true); ?#129 sid,55 serial#
?? ??? ?會話執行相關SQL
?? ??? ?exec dbms_system.set_sql_trace_in_session(129,55,false); ?
TKPROF工具使用過程:
? ? tkprof ?/u01/app/oracle/admin/ipemsdb/udump/ipemsdb_ora_17914.trc ??
?? ?/u01/app/17914.trc.txt ?aggregate=yes sys=no waits=yes sort=prsela,
?? ?exeela,fchela record=/u01/app/17914.sql
Trace文件結構解析:
?? ?服務器執行的SQL語句;
?? ?語句跟蹤統計信息;
?? ?行源操作過程;
?? ?匯總統計信息
統計信息各列說明:
CALL #每次SQL語句的處理都分成三個部分。
Parse #這步將SQL語句轉換成執行計劃,檢查是否有正確的授權和所需要的對象是否存在。
Execute #這步是真正的由Oracle來執行語句。包括修改數據,和確定選擇的記錄。
Fetch #返回查詢語句中所獲得的記錄,這步只有select語句會被執行。
COUNT #這個語句被parse、execute、fetch的次數。
CPU ?#這個語句對于所有的parse、execute、fetch所消耗的cpu的時間,以秒為單位。
ELAPSED #這個語句所有消耗在parse、execute、fetch的總的時間。
DISK #物理讀取塊的數量。
QUERY #在一致性讀模式下,所有parse、execute、fetch所獲得的buffer的數量。
CURRENT #在current模式下所獲得的buffer的數量。
ROWS #所有SQL語句返回的記錄數目,但是不包括子查詢中返回的記錄數目。對于select語句,返
? ? ? 回記錄是在fetch這步,對于insert、update、delete操作,返回記錄則是在execute這步。?? ?
參考資料:http://ylw6006.blog.51cto.com/470441/895017/?? ?

2、10046事件: 跟蹤會話執行的SQL語句,等待事件,通過TDPROF格式化trace
使用過程:
a.事件的4個級別:
? ? 1 ?- 啟用標準的SQL_TRACE功能,等價于sql_trace
? ? 4 ?- Level 1 加上綁定值(bind values)
? ? 8 ?- Level 1 + 等待事件跟蹤
? ? 12 - Level 1 + Level 4 + Level 8
b.啟動10046事件
? ? alter session[system] set events ‘10046 trace name context forever, level 12’; --當前會話
?? ?exec dbms_monitor.session_trace_enable(267,996,waits=>true,binds=>true); --其他會話 SID,SERIAL#
c.執行相關SQL
d.關閉10046事件
? ? alter session set events ‘10046 trace name context off’; --當前會話
?? ?exec dbms_monitor.session_trace_disable(267,996); --其他會話
對于通過DBLINK執行的SQL語句無法進行跟蹤和獲取執行計劃。
SID,SERIAL可以從v$session中查詢
? ? select SID,SERIAL# from v$session where sid =(select sid from v$mystat where rownum=1);
參考資料:http://blog.csdn.net/tianlesoftware/article/details/5857023
TRCA工具:
http://blog.csdn.net/tianlesoftware/article/details/7246542

3、10053事件:跟蹤CBO產生執行計劃,解決執行計劃失真問題,CBO優化器依賴分析數據,適用于特定的SQL
使用過程:
a.確定當前trace文件
? ? 默認即當前會話的SPID對應trace,可以手動設置trace文件標識
?? ?alter session set tracefile_identifier='10053_event';
? ? 可通過如下sql查詢trace文件路徑
? ? SELECT ? ? ?d.VALUE
? ? ? ? ? ? ?|| '/'
? ? ? ? ? ? ?|| LOWER (RTRIM (i.INSTANCE, CHR (0)))
? ? ? ? ? ? ?|| '_ora_'
? ? ? ? ? ? ?|| p.spid
? ? ? ? ? ? ?|| '.trc'
? ? ? ? ? ? ? ? AS "trace_file_name"
? ? ? FROM ? (SELECT ? p.spid
? ? ? ? ? ? ? ? FROM ? v$mystat m, v$session s, v$process p
? ? ? ? ? ? ? ?WHERE ? m.statistic# = 1 AND s.SID = m.SID AND p.addr = s.paddr) p,
? ? ? ? ? ? ?(SELECT ? t.INSTANCE
? ? ? ? ? ? ? ? FROM ? v$thread t, v$parameter v
? ? ? ? ? ? ? ?WHERE ? v.NAME = 'thread'
? ? ? ? ? ? ? ? ? ? ? ?AND (v.VALUE = 0 OR t.thread# = TO_NUMBER (v.VALUE))) i,
? ? ? ? ? ? ?(SELECT ? VALUE
? ? ? ? ? ? ? ? FROM ? v$parameter
? ? ? ? ? ? ? ?WHERE ? NAME = 'user_dump_dest') d;?? ?
b.啟動10053事件
? ? ALTER SESSION SET EVENTS='10053 trace name context forever, level 1[2]';
c.執行sql
? ? select * from all_tables where table_name='T';?? ?
d.關閉10053事件
? ? ALTER SESSION SET EVENTS '10053 trace name context off';
e.查看trace文件
? ? 在udump目錄下含有tracefile_identifier的trace文件。?? ?
參考資料:http://blog.csdn.net/tianlesoftware/article/details/5859027?? ?
?? ?
4、oradebug:
? ? oradebug help #查看命令幫助信息
使用過程:
a.追蹤進程
? ? 系統的進程ID,使用oradebug setospid id;
?? ?Oracle ID,使用oradebug setorapid id;
b.查詢進程號
? ? select a.username,a.sid ,a.serial#,b.spid ?from v$session a,v$process b, v$mystat c ?
? ? where a.paddr=b.addr ?and a.sid=c.sid and rownum<2;
?? ?select pid,spid,username from v$process; #pid oracle_id,spid os_id
c.獲得系統狀態信息,使用spid
? ?oradebug setospid 27028
? ?oradebug unlimit
? ?oradebug dump systemstate 10
? ?oradebug TRACEFILE_NAME
? ?oradebug close_trace
d.獲得某進程信息
? ?oradebug dump processstate 10
e.獲得進程錯誤信息
? ?oradebug dump errorstack 3;
參考資料:http://blog.csdn.net/tianlesoftware/article/details/6525628

5、HANGANALYZE:用于分析hang住而產生嚴重的性能問題
使用過程
a.單實例
? ? oradebug hanganalyze 3;
b.rac環境使用
? ? ALTER SESSION SET EVENTS 'immediate trace name HANGANALYZE level <level>';
參考資料:
http://blog.csdn.net/tianlesoftware/article/details/6321961
http://blog.itpub.net/12020513/viewspace-615165

6、10060事件:分析SQL的斷語,用于執行計劃的分析

7、分析事例:block dump分析段碎片:
set autotrace on;查看consistent gets,比較表中的數據和對象視圖中數據是否一致,block dump查看是否空塊多,
alter system dump datafile 5 block 13;
alter table ...move解決

轉載于:https://my.oschina.net/peakfang/blog/2245913

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/389489.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/389489.shtml
英文地址,請注明出處:http://en.pswp.cn/news/389489.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Tensorflow框架:卷積神經網絡實戰--Cifar訓練集

Cifar-10數據集包含10類共60000張32*32的彩色圖片&#xff0c;每類6000張圖。包括50000張訓練圖片和 10000張測試圖片 代碼分為數據處理部分和卷積網絡訓練部分&#xff1a; 數據處理部分&#xff1a; #該文件負責讀取Cifar-10數據并對其進行數據增強預處理 import os impo…

計算機科學速成課36:自然語言處理

詞性 短語結構規則 分析樹 語音識別 譜圖 快速傅里葉變換 音素 語音合成 轉載于:https://www.cnblogs.com/davidliu2018/p/9149252.html

linux內存初始化初期內存分配器——memblock

2019獨角獸企業重金招聘Python工程師標準>>> 1.1.1 memblock 系統初始化的時候buddy系統&#xff0c;slab分配器等并沒有被初始化好,當需要執行一些內存管理、內存分配的任務&#xff0c;就引入了一種內存管理器bootmem分配器。 當buddy系統和slab分配器初始化好后&…

數據科學學習心得_學習數據科學

數據科學學習心得蘋果 | GOOGLE | 現貨 | 其他 (APPLE | GOOGLE | SPOTIFY | OTHERS) Editor’s note: The Towards Data Science podcast’s “Climbing the Data Science Ladder” series is hosted by Jeremie Harris. Jeremie helps run a data science mentorship startup…

Keras框架:Alexnet網絡代碼實現

網絡思想&#xff1a; 1、一張原始圖片被resize到(224,224,3)&#xff1b; 2、使用步長為4x4&#xff0c;大小為11的卷積核對圖像進行卷積&#xff0c;輸出的特征層為96層&#xff0c; 輸出的shape為(55,55,96)&#xff1b; 3、使用步長為2的最大池化層進行池化&#xff0c;此時…

PHP對象傳遞方式

<?phpheader(content-type:text/html;charsetutf-8);class Person{public $name;public $age;}$p1 new Person;$p1->name 金角大王;$p1->age 400;//這個地方&#xff0c;到底怎樣?$p2 $p1;$p2->name 銀角大王;echo <pre>;echo p1 name . $p1->n…

微軟Azure CDN現已普遍可用

微軟宣布Azure CDN一般可用&#xff08;GA&#xff09;&#xff0c;客戶現在可以從微軟的全球CDN網絡提供內容。最新版本是對去年五月份發布的公眾預覽版的跟進。\\今年5月&#xff0c;微軟與Verizon和Akamai一起推出了原生CDN產品。現在推出了GA版本&#xff0c;根據發布博文所…

數據科學生命周期_數據科學項目生命周期第1部分

數據科學生命周期This is series of how to developed data science project.這是如何開發數據科學項目的系列。 This is part 1.這是第1部分。 All the Life-cycle In A Data Science Projects-1. Data Analysis and visualization.2. Feature Engineering.3. Feature Selec…

Keras框架:VGG網絡代碼實現

VGG概念&#xff1a; VGG之所以經典&#xff0c;在于它首次將深度學習做得非常“深”&#xff0c;達 到了16-19層&#xff0c;同時&#xff0c;它用了非常“小”的卷積核&#xff08;3X3&#xff09;。 網絡框架&#xff1a; VGG的結構&#xff1a; 1、一張原始圖片被resize…

Django筆記1

內容整理1.創建django工程django-admin startproject 工程名2.創建APPcd 工程名python manage.py startapp cmdb3.靜態文件project.settings.pySTATICFILES_dirs {os.path.join(BASE_DIR, static),}4.模板路徑DIRS > [os.path.join(BASE_DIR, templates),]5.settings中mid…

BZOJ 2003 [Hnoi2010]Matrix 矩陣

題目鏈接 https://www.lydsy.com/JudgeOnline/problem.php?id2003 題解 考慮搜索。 確定了第一行和第一列&#xff0c;那么就確定了整個矩陣&#xff0c;因此搜索的范圍可以降到399個位置。 首先搜索第一行&#xff0c;顯然每個不是第一行第一列的位置都可以由三個位置唯一確定…

Keras框架:resent50代碼實現

Residual net概念 概念&#xff1a; Residual net(殘差網絡)&#xff1a;將靠前若干層的某一層數據輸出直接跳過多層引入到后面數據層的輸入 部分。 殘差神經單元&#xff1a;假定某段神經網絡的輸入是x&#xff0c;期望輸出是H(x)&#xff0c;如果我們直接將輸入x傳到輸出作…

MySQL數據庫的回滾失敗(JAVA)

這幾天在學習MySQL數據的知識&#xff0c;有一個小測試&#xff0c;用來測試數據庫的提交和回滾。 剛開始的時候真的沒把這個當回事&#xff0c;按照正常的步驟來講的話&#xff0c;如下所示&#xff0c;加載驅動&#xff0c;獲取數據庫的連接&#xff0c;并且把數據庫的自動提…

條件概率分布_條件概率

條件概率分布If you’re currently in the job market or looking to switch careers, you’ve probably noticed an increase in popularity of Data Science jobs. In 2019, LinkedIn ranked “data scientist” the №1 most promising job in the U.S. based on job openin…

MP實戰系列(十七)之樂觀鎖插件

聲明&#xff0c;目前只是僅僅針對3.0以下版本&#xff0c;2.0以上版本。 意圖&#xff1a; 當要更新一條記錄的時候&#xff0c;希望這條記錄沒有被別人更新 樂觀鎖實現方式&#xff1a; 取出記錄時&#xff0c;獲取當前version 更新時&#xff0c;帶上這個version 執行更新時…

二叉樹刪除節點,(查找二叉樹最大值節點)

從根節點往下分別查找左子樹和右子樹的最大節點&#xff0c;再比較左子樹&#xff0c;右子樹&#xff0c;根節點的大小得到結果&#xff0c;在得到左子樹和右子樹最大節點的過程相似&#xff0c;因此可以采用遞歸的 //樹節點結構 public class TreeNode { TreeNode left;…

Tensorflow框架:InceptionV3網絡概念及實現

卷積神經網絡遷移學習-Inception ? 有論文依據表明可以保留訓練好的inception模型中所有卷積層的參數&#xff0c;只替換最后一層全連接層。在最后 這一層全連接層之前的網絡稱為瓶頸層。 ? 原理&#xff1a;在訓練好的inception模型中&#xff0c;因為將瓶頸層的輸出再通過…

View詳解(4)

在上文中我們簡單介紹了Canvas#drawCircle()的使用方式&#xff0c;以及Paint#setStyle(),Paint#setStrokeWidth(),Paint#setColor()等相關函數&#xff0c;不知道小伙伴們了解了多少&#xff1f;那么是不是所有的圖形都能通過圓來描述呢&#xff1f;當然不行&#xff0c;那么熟…

成為一名真正的數據科學家有多困難

Data Science and Machine Learning are hard sports to play. It’s difficult enough to motivate yourself to sit down and learn some maths, let alone to becoming an expert on the matter.數據科學和機器學習是一項艱巨的運動。 激勵自己坐下來學習一些數學知識是非常…

Ubuntu 裝機軟件

Ubuntu16.04 軟件商店閃退打不開 sudo apt-get updatesudo apt-get dist-upgrade# 應該執行一下更新就好&#xff0c;不需要重新安裝軟件中心 sudo apt-get install –reinstall software-center Ubuntu16.04 深度美化 https://www.jianshu.com/p/4bd2d9b1af41 Ubuntu18.04 美化…