又好久沒(méi)有寫(xiě)簡(jiǎn)書(shū)了,難道說(shuō)真的上了年紀(jì)墮落了嗎?前陣子呢好不容易過(guò)了個(gè)人生的分水嶺,歪打正著,入了運(yùn)維的坑,也不知道這次入坑會(huì)多久。沒(méi)有DBA,只能自己先湊合著用了。運(yùn)維過(guò)程中,經(jīng)常會(huì)發(fā)生數(shù)據(jù)庫(kù)莫名增高問(wèn)題,其實(shí)都是研發(fā)沒(méi)寫(xiě)好啦,用下面的命令可以幫助研發(fā)定位出來(lái)有問(wèn)題的SQL語(yǔ)句,以促進(jìn)優(yōu)化吧。
如何查詢CPU耗用時(shí)長(zhǎng)較多的語(yǔ)句
SELECT * FROM (select b.username "用戶ID",
a.FIRST_LOAD_TIME "執(zhí)行開(kāi)始時(shí)間",
a.EXECUTIONS "執(zhí)行次數(shù)",
a.DISK_READS "物理讀(磁盤(pán)讀?。?,
a.buffer_gets "邏輯讀(內(nèi)存讀取)",
(a.CPU_TIME/1000000) "cpu耗時(shí)(秒)",
round(a.ELAPSED_TIME / 1000000, 2) "總執(zhí)行時(shí)間(秒)",
round(a.ELAPSED_TIME / 1000000 / EXECUTIONS, 2) "平均執(zhí)行時(shí)間(秒)",
a.INVALIDATIONS "無(wú)效次數(shù)",
a.ROWS_PROCESSED "語(yǔ)句返回的列總數(shù)",
a.sql_fulltext "sql"
FROM v$sqlarea a
left join all_users b
on a.PARSING_USER_ID = b.user_id
--時(shí)間選擇區(qū)
where a.FIRST_LOAD_TIME between '2019-03-25/09:35:00' and
'2019-03-25/09:39:00'
--被除數(shù)可能為0
and a.EXECUTIONS>0
--系統(tǒng)性能分析去除
and instr(a.sql_fulltext,'v$')=0
order BY (a.ELAPSED_TIME/a.EXECUTIONS) DESC )where ROWNUM<=30
除此之外呢,還經(jīng)常會(huì)有提供一下數(shù)據(jù)庫(kù)數(shù)據(jù)量的需求,這樣一行代碼查一下就好了。
數(shù)據(jù)量查詢
Select round (sum (bytes) /1024/1024/1024,2) ||'GB'
from dba_data_files;
在DBA這塊還真是小白白,用到好用的會(huì)繼續(xù)更新記錄,以備不時(shí)之需。
嗯,技能只能一點(diǎn)兒一點(diǎn)兒攢了。