AWR是需要在運(yùn)行Oracle的環(huán)境上,獲取數(shù)據(jù)庫(kù)的相關(guān)信息。
創(chuàng)新互聯(lián)主營(yíng)環(huán)縣網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,重慶App定制開發(fā),環(huán)縣h5重慶小程序開發(fā)公司搭建,環(huán)縣網(wǎng)站營(yíng)銷推廣歡迎環(huán)縣等地區(qū)企業(yè)咨詢
通過運(yùn)行 $ORACLE_HOME/rdbms/admin 目錄中的 awrrpt.sql 腳本,AWR 的功能可以立即通過它從采集的統(tǒng)計(jì)數(shù)據(jù)和量度中生成的報(bào)表得到最好的說明。這個(gè)腳本從外觀和感覺上類似于 Statspack,它顯示所有的現(xiàn)有 AWR 快照并請(qǐng)求兩個(gè)特定的快照作為時(shí)間間隔邊界。它產(chǎn)生兩種類型的輸出:文本格式(類似于 Statspack 報(bào)表的文本格式但來自于 AWR 信息庫(kù))和默認(rèn)的 HTML 格式(擁有到部分和子部分的所有超鏈接),從而提供了非常用戶友好的報(bào)表?,F(xiàn)在運(yùn)行該腳本以查看報(bào)表,從而對(duì) AWR 的功能有一個(gè)了解。
手動(dòng)生成AWR快照號(hào):
exec dbms_workload_repository.create_snapshot
用CRT軟件,使用Oracle登錄到服務(wù)器上:
sqlplus /nolog
conn system/system
@$ORACLE_HOME/rdbms/admin/awrrpt.sql
你通過一個(gè)模糊查詢like '%表名字%',就能查到存儲(chǔ)過程名。
select distinct name from USER_SOURCE where type = 'PROCEDURE' and text like '%TABLE_A%'
這樣應(yīng)該能查到你的這個(gè)表涉及到的存儲(chǔ)過程了。
Oracle awr報(bào)告可以生成兩種格式的文件,一個(gè)是html,一個(gè)是text。
text在linux可以用cat/more/tail命令查看,windows雙擊就行了。
html也可以這么看,但是還是copy出來到windows機(jī)器上看。
如何看懂Oracle數(shù)據(jù)庫(kù)AWR報(bào)告
先看數(shù)據(jù)庫(kù)環(huán)境,版本,壓力大小等
然后分析命中率,首先你要懂命中率什么意思然后定一個(gè)閥值,達(dá)到這個(gè)閥值有可能會(huì)有哪些問題,然后向下找出證據(jù)
最后也是最重要的是 等待事件,弄清楚每個(gè)等待事件的意義,然后向下找證據(jù)
事件下面基本可以看作證據(jù),來證明你對(duì)命中率和等待事件的分析。
所以第一:你要會(huì)分析出問題。
第二:要知道AWR都收集哪些數(shù)據(jù),對(duì)你的分析來佐證!
這種問題要回答好要求知識(shí)比較全面。
1 從操作系統(tǒng)層次上看
看CPU 內(nèi)存 swqp(交換分區(qū))等使用率
2 從磁盤上看
主要看磁盤讀寫??梢杂胐d測(cè)磁盤讀寫的速度 也可以在業(yè)務(wù)高峰期檢測(cè)磁盤的速率。
3 從數(shù)據(jù)庫(kù)本身來看。
先要看數(shù)據(jù)庫(kù)各個(gè)參數(shù)的值 。 如sga的大小,process的大小,redo日志的個(gè)數(shù)與大小等這些關(guān)系到性能的參數(shù)是否設(shè)置合理。
長(zhǎng)期觀察的方式就是看各個(gè)時(shí)期的AWR報(bào)告。里面有各種性能指標(biāo),以及按執(zhí)行時(shí)間或資源排列的sql ,以及各種等待時(shí)間的排名。從這里面可以掌握數(shù)據(jù)庫(kù)的長(zhǎng)期的性能變化。
即時(shí)觀察的方式就是利用各種sql 查詢 數(shù)據(jù)庫(kù)在當(dāng)前時(shí)間的各個(gè)性能指標(biāo)(AWR報(bào)告里面的各種指標(biāo)也都是通過sql查詢出來的)
還有對(duì)數(shù)據(jù)庫(kù)整體的一個(gè)檢查:
如 表的大小,表是否需要分區(qū)而沒有分區(qū),索引是否創(chuàng)建,索引是否失效,開發(fā)人員寫的sql是否正確使用到了索引,頻繁使用的sql是否有綁定變量,有頻繁大批量增刪改的表是否存在高水位。。。
額 總之,這個(gè)話題涉及的知識(shí)非常多,盡可能多的學(xué)習(xí)一些東西,祝你好運(yùn)。
方法一、
select * from v$log a where a.THREAD# = 1 ;
set line 200
select b.SEQUENCE#, b.FIRST_TIME,a.SEQUENCE#,a.FIRST_TIME,round(((a.FIRST_TIME-b.FIRST_TIME)*24)*60,2) from v$log_history a, v$log_history b where a.SEQUENCE#=b.SEQUENCE#+1 and b.THREAD#=1 order by a.SEQUENCE# desc;
方法二、
set line 200
select sequence#,first_time,nexttime,round(((first_time-nexttime)*24)*60,2) diff from (select sequence#,first_time,lag(first_time) over(order by sequence#) nexttime from v$log_history where thread#=1) order by sequence# desc;