1.AWR報告
1.1 awr是什么?
它是關注於數據庫整體性能狀況,類比於我們去醫院看病的體檢報告,只是用一些指標對數據庫做了一個判斷。
1.2awr怎么獲取
awr報告的獲取有兩種方式:
一、直接獲取
命令:"@?/rdbms/admin/awrrpt.sql"
上圖可看出:當前使用的數據庫實例是orcl,然后輸入需要離最近天數的數據庫的數據,直接按回車是將數據庫所有的信息
上圖所示就是查看的上次我數據庫運行的一天的snapid以及started時間
然后再進行輸入對應的上面的開始斷點和結束斷點
此時就生成了名字為awrrpt_1_265_269.html的html格式的文本文件,文件生成路徑在當前路徑(你進入sqlplus操作時的當前路徑);默認如下圖:
打開這個文件的內容如下:
內容很多,可以自行進行操作
對於awr生成的報告主要關注以下五個核心點:
一、load profile
load_profile(系統指示性能的總參數,例如:每秒產生的事務數,正常情況200上下,超一千表示非常繁忙,對應的Redo size中每個事務產生的日志長度也可以在一定程度上看出是 每次分別提交還是批量提交)
我這個是自己本子上的oracle很久沒使用過了,如需實驗可以在網上找資料這個應該很多,在這里主要想說明的是對於這個指標我們的關注點
二、efficiency percentages(命中率指標)
這里指的是SGA區的命中率,如果在oltp中低於90%,可能存在未使用綁定變量
可以參照這個網址進行查看:http://blog.itpub.net/23002319/viewspace-1328016/
三、top 5 events(可以清楚的看到當前系統受阻塞影響最大的前五個事件)
主要看的是,前五個時間中暫用的db時間
四、SQL Statistics
這里面可以看到對應的每個sql的詳細信息,可以根據每個sql的執行時長,最簡單的方法就是直接優化那些執行時間最長的sql
五、segment_statistics
這個可以清楚的對於繁忙的sql落在那個段表進行很好的定位和判斷,從而進行優化
二、命令獲取
select output from table(dbms_workload_repository.awr_report_html
(v_dbid, v_instance_number,v_min_snap_id,v_max_snap_id
));
對應的參數含義如下:
v_dbid:數據庫主機標識符(可通過select sys_guid() from dual獲取
v_instance_number:標識實例
V_min_snap_id:設置的初始斷點時間(斷點之間的范圍可以通過輸入命令后,在輸入num_day時直接回車,通過查看snapid可以確定直接需要的時間段之間的awr報告)
V_min_snap_id:設置的初始斷點時間(斷點之間的范圍可以通過輸入命令后,在輸入num_day時直接回車,通過查看snapid可以確定直接需要的時間段之間的awr報告)
生成的報告文件都在啟動sql/plus時的當前路徑下
二、ASH報告
ASH是針對數據庫中的等待事件與那些Sql具體對應,相對於awr更加的具體
ash的獲取同樣有兩種方式:
1.直接獲取
"@?/rdbms/admin/ashrpt.sql"
按照提示對應的格式輸入對應需要取樣的開始時間和結束時間即可生成
ash表需要關注的點:
就是看sql的執行和那些等待事件向關聯:sql text和event
2.命令獲取
select output from table(dbms_workload_repository.ash_report_html(dbid,inst_num,l_btime,l_etime));
三、ADDM
Oracle給出的一些建議:包含整體的建議和局部的建議
報告的獲取:
直接獲取:"@?/rdbms/admin/addmrpt.sql"
四、AWRDD
針對不同時段的性能的一個比對報告:比如比較今天9點到10點和昨天9點到10點的的loadfile的數據,可以根據這個來判斷是否在這個時間段有什么特別的事情發生
獲取命令:@?/rdbms/admin/awrddrpt.sql
五、AWRSQ
具體某個Sql的執行計划,相對於之前的報告可以看到更多更細的東西,可以保存多個執行。
直接獲取命令:@?/rdbms/admin/awrsqrpt.sql