Oracle SQL調(diào)優(yōu)系列之定位生產(chǎn)性能問題方法

Oracle SQL調(diào)優(yōu)系列之定位生產(chǎn)性能問題方法

1双絮、AWR整體分析

場景:最近遇到緊急生產(chǎn)問題采记,因為數(shù)據(jù)庫鎖表導(dǎo)致業(yè)務(wù)功能不能正常使用,對于這種緊急問題嘀倒,首先要安穩(wěn)心態(tài),然后合理分析問題局冰,可以先從整體出發(fā)测蘑,拿下Oracle AWR報告,進行整體分析康二,需要找出是因為cpu問題帮寻,還是具體哪里的程序?qū)е碌?/p>

2、JVM命令進行監(jiān)控

從整體不能定位到問題赠摇,還是需要配合JVM的調(diào)優(yōu)命令進行排查問題固逗,監(jiān)控是否出現(xiàn)oom的情況?

// 監(jiān)控進程信息
[www@localhost ~]$ top
// 查找具體的線程情況
[www@localhost ~]$ top -H -p PID
// 查看進程id
[www@localhost ~]$ jps -l
//根據(jù)jps拿到的PID獲取堆信息藕帜,然后使用gcviewer等等工具進行分析
[www@localhost ~]$ jmap -dump:format=b,file=heap.hprof PID
// 直接查看程序堆信息
[www@localhost ~]$ jmap -heap PID
// 查看棧信息烫罩,看看是否有程序死鎖的情況
[www@localhost ~]$ jstack PID

gc監(jiān)控工具:MAT、gcviewer洽故,也可以通過在線網(wǎng)站進行分析https://gceasy.io/

3贝攒、拿到鎖表sql

ok,程序排查沒問題时甚,從sql方面進行排查

  • 查看是否有鎖表
SELECT object_name, machine, s.sid, s.serial#
FROM gv$locked_object l, dba_objects o, gv$session s
WHERE l.object_id = o.object_id
AND l.session_id = s.sid;   
  • 釋放數(shù)據(jù)表鎖
// 釋放SESSION SQL:
alter system kill session 'sid, serial#';
ALTER system kill session '23, 1647';

  • 查看具體的鎖表sql
   
   select l.session_id sid, 
       s.serial#, 
       l.locked_mode, 
       l.oracle_username, 
       s.user#, 
       l.os_user_name, 
       s.machine, 
       s.terminal, 
       a.sql_text, 
       a.action 
  from v$sqlarea a, v$session s, v$locked_object l 
where l.session_id = s.sid 
   and s.prev_sql_addr = a.address 
order by sid, s.serial#;

4隘弊、修改數(shù)據(jù)庫連接數(shù)

ps:當(dāng)然鎖表也有可能是連接數(shù)不夠

  • 查看當(dāng)前的數(shù)據(jù)庫連接數(shù)
select count(*) from v$process ; 
  • 查看數(shù)據(jù)庫允許的最大連接數(shù)
select value from v$parameter where name ='processes';
  • 查看當(dāng)前的session連接數(shù)
select count(*) from v$session
  • 查看當(dāng)前并發(fā)連接數(shù)
select count(*) from v$session where status='ACTIVE';
  • 修改數(shù)據(jù)最大連接數(shù)
alter system set processes = 500 scope = spfile; 
  • 重啟關(guān)閉數(shù)據(jù)庫
--關(guān)閉數(shù)據(jù)庫
shutdown immediate; 
--重啟數(shù)據(jù)庫
startup; 

5、定位慢sql

ok荒适,鎖表問題如果可以定位到梨熙,也要順便排查一下哪些慢SQL,在拖系統(tǒng)性能

  • 先查詢哪些用戶在使用
select osuser, a.username, cpu_time/executions/1000000||'s', b.sql_text, machine
from v$session a, v$sqlarea b
where a.sql_address =b.address
order by cpu_time/executions desc; 

拿出慢sql:

SELECT SQL_TEXT,
       SQL_FULLTEXT,
       ELAPSED_TIME,
       DISK_READS,
       BUFFER_GETS,
       EXECUTIONS,
       Round(ELAPSED_TIME / EXECUTIONS ,2),
       ROUND(DISK_READS / EXECUTIONS, 2),
       ROUND(BUFFER_GETS / EXECUTIONS , 2),
       ROUND((BUFFER_GETS - DISK_READS) / BUFFER_GETS, 2) 
  FROM V$SQLAREA 
 WHERE EXECUTIONS > 0
   AND BUFFER_GETS > 0
   AND (BUFFER_GETS - DISK_READS) / BUFFER_GETS < 0.8
   ORDER BY Round(ELAPSED_TIME / EXECUTIONS ,2) desc;

然后解釋一下這些意義:
Round(ELAPSED_TIME / EXECUTIONS ,2):求每個游標執(zhí)行SQL需要的時間
ROUND(DISK_READS / EXECUTIONS, 2):求每個游標執(zhí)行SQL需要讀磁盤的次數(shù)
ROUND(BUFFER_GETS / EXECUTIONS , 2):求每個游標執(zhí)行SQL需要讀內(nèi)存的次數(shù)
ROUND((BUFFER_GETS - DISK_READS) / BUFFER_GETS, 2) :SQL命中率

然后和同事找到一個問題刀诬,發(fā)現(xiàn)一個業(yè)務(wù)邏輯里主鍵的生成是用數(shù)字加上事務(wù)控制生成的咽扇,在這種情況表就經(jīng)常出現(xiàn)被鎖表的情況

結(jié)合druid的監(jiān)控,然后在阿里druid框架的官網(wǎng)找到如下的wikihttps://github.com/alibaba/druid/wiki/%E8%BF%9E%E6%8E%A5%E6%B3%84%E6%BC%8F%E7%9B%91%E6%B5%8B

在這里插入圖片描述

發(fā)現(xiàn)公司性能這個監(jiān)控被開起來了,所以一個是因為程序問題质欲,加上框架的使用不當(dāng)树埠,導(dǎo)致的。ok嘶伟,性能問題是一個很花時間的問題怎憋,本博客只進行一些簡單的分享,僅供參考

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末九昧,一起剝皮案震驚了整個濱河市绊袋,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌耽装,老刑警劉巖愤炸,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異掉奄,居然都是意外死亡规个,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門姓建,熙熙樓的掌柜王于貴愁眉苦臉地迎上來诞仓,“玉大人,你說我怎么就攤上這事速兔∈茫” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵涣狗,是天一觀的道長谍婉。 經(jīng)常有香客問我,道長镀钓,這世上最難降的妖魔是什么穗熬? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮丁溅,結(jié)果婚禮上唤蔗,老公的妹妹穿的比我還像新娘。我一直安慰自己窟赏,他們只是感情好妓柜,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著涯穷,像睡著了一般棍掐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上求豫,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天塌衰,我揣著相機與錄音诉稍,去河邊找鬼蝠嘉。 笑死最疆,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蚤告。 我是一名探鬼主播努酸,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼杜恰!你這毒婦竟也來了获诈?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤心褐,失蹤者是張志新(化名)和其女友劉穎舔涎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體逗爹,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡亡嫌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了掘而。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挟冠。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖袍睡,靈堂內(nèi)的尸體忽然破棺而出知染,到底是詐尸還是另有隱情,我是刑警寧澤斑胜,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布控淡,位于F島的核電站,受9級特大地震影響止潘,放射性物質(zhì)發(fā)生泄漏掺炭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一覆山、第九天 我趴在偏房一處隱蔽的房頂上張望竹伸。 院中可真熱鬧,春花似錦簇宽、人聲如沸勋篓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽譬嚣。三九已至,卻和暖如春钞它,著一層夾襖步出監(jiān)牢的瞬間拜银,已是汗流浹背殊鞭。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留尼桶,地道東北人操灿。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像泵督,于是被迫代替她去往敵國和親趾盐。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容