1. awr報告中sql statistis提供了哪些排序視圖
記錄了執行總和時間的TOP
SQL,注意是監控范圍內該SQL的執行時間總和,而不是單次SQL執行時間,Elapsed
Time=CPU
Time+Wait
Time
SQL
ordered
by
CPU
Time
記錄了執行佔CPU時間總和時間最長的TOP
SQL
SQL
ordered
by
User
I/O
Wait
Time
記錄IO等待
SQL
ordered
by
Gets
記錄了執行占總buffer
gets(邏輯IO)的TOP
SQL
SQL
ordered
by
Reads
SQL
ordered
by
Physical
Reads
(UnOptimized)
記錄了執行占磁碟物理讀(物理IO)的TOP
SQL
SQL
ordered
by
Executions
記錄了按照SQL的執行次數排序的TOP
SQL,該排序可以看出監控范圍內的SQL執行次數
SQL
ordered
by
Parse
Calls
記錄了SQL的軟解析次數的TOP
SQL
SQL
ordered
by
Sharable
Memory
記錄了SQL佔用library
cache的大小的TOP
SQL
SQL
ordered
by
Version
Count
記錄了SQL打開子游標的TOP
SQL
Complete
List
of
SQL
Text
記錄了集群的等待時間的TOP
SQL
2. 如何生成 AWR 報告
1.生成單實例 AWR 報告: @$ORACLE_HOME/rdbms/admin/awrrpt.sql 2.生成 Oracle RAC AWR 報告: @$ORACLE_HOME/rdbms/admin/awrgrpt.sql 3.生成 RAC 環境中特定資料庫實例的 AWR 報告: @$ORACLE_HOME/rdbms/admin/awrrpti.sql 4.生成 Oracle RAC 環境中多個資料庫實例的 AWR 報告的方法: @$ORACLE_HOME/rdbms/admin/awrgrpti.sql 5.生成 SQL 語句的 AWR 報告: @$ORACLE_HOME/rdbms/admin/awrsqrpt.sql 6.生成特定資料庫實例上某個 SQL 語句的 AWR 報告: @$ORACLE_HOME/rdbms/admin/awrsqrpi.sql --生成 AWR 時段對比報告 7.生成單實例 AWR 時段對比報告 @$ORACLE_HOME/rdbms/admin/awrddrpt.sql 9.生成 Oracle RAC AWR 時段對比報告 @$ORACLE_HOME/rdbms/admin/awrgdrpt.sql 10.生成特定資料庫實例的 AWR 時段對比報告 11.生成 Oracle RAC 環境下特定(多個)資料庫實例的 AWR 時段對比報告
3. 如何生成指定SQL語句的AWR報表
AWR是需要在運行Oracle的環境上,獲取資料庫的相關信息。 通過運行 $ORACLE_HOME/rdbms/admin 目錄中的 awrrpt.sql 腳本,AWR 的功能可以立即通過它從採集的統計數據和量度中生成的報表得到最好的說明。這個腳本從外觀和感覺上類似於 Statspack...
4. 請教awr報告中Sql mole
AWR是需要在運行Oracle的環境上,獲取資料庫的相關信息。
通過運行 $ORACLE_HOME/rdbms/admin 目錄中的
awrrpt.sql 腳本,AWR 的功能可以立即通過它從採集的統計數據和量度中生成的報表得到最好的說明。這個腳本從外觀和感覺上類似於
Statspack,它顯示所有的現有 AWR 快照並請求兩個特定的快照作為時間間隔邊界。它產生兩種類型的輸出:文本格式(類似於
Statspack 報表的文本格式但來自於 AWR 信息庫)和默認的 HTML
格式(擁有到部分和子部分的所有超鏈接),從而提供了非常用戶友好的報表。現在運行該腳本以查看報表,從而對 AWR 的功能有一個了解。
手動生成AWR快照號:
exec dbms_workload_repository.create_snapshot
用CRT軟體,使用Oracle登錄到伺服器上:
sqlplus /nolog
conn system/system
@$ORACLE_HOME/rdbms/admin/awrrpt.sql
選擇生成HTML格式。
然後會看到時間段和數字,選擇兩個數字及生產兩個數字之間的AWR報告
5. 如何生成Oracle AWR報告
oracle手工生成AWR報告方法記錄
AWR(Automatic Workload Repository)報告是DBA進行日常資料庫性能評定、問題SQL發現的重要手段。熟練掌握AWR報告,是做好開發、運維DBA工作的重要基本功。
1、 運行腳本
首先,准備一個目錄作為AWR生成報告的路徑。
[oracle@bspdev /]$ ls -l | grep test
drwxr-xr-x. 2 oracle oinstall 4096 Jun 21 13:01 test
[oracle@bspdev /]$ cd test
啟動sqlplus等開發工具,調用生成腳本。程序腳本一般保存在$ORACLE_HOME下的rdbms/admin中,名稱為awrrpt.sql。
[oracle@bspdev test]$ sqlplus /nolog
SQL*Plus: Release11.2.0.1.0 Proction on Tue Jun 21 13:04:44 2011
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> conn / as sysdba
Connected.
--調用腳本,生成文件
SQL> @?/rdbms/admin/awrrpt.sql
之後進入報告參數輸入模塊。
2、輸入報告參數
之後,要持續輸入一系列的報告參數。
ü 輸入生成報告類型,目前AWR提供txt和html兩種格式。需要確認生成格式,默認是html格式。
Current Instance
~~~~~~~~~~~~~~~~
DB Id DB Name Inst Num Instance
----------- ------------ -------- ------------
4143510747 ORA11G 1 ora11g
Specify the Report Type
~~~~~~~~~~~~~~~~~~~~~~~
Would you like an HTML report, or a plain text report?
Enter 'html' for an HTML report, or 'text' for plain text
Defaults to 'html'
ü 報告涉及天數范圍
啟動報告後,會顯示生成實例的名稱等基本信息。
默認情況下,AWR會將鏡像信息保留一個月。手工生成的時候,需要確認生成AWR報告的時間范圍。一般情況下,特別是生產環境下,我們通常設置1-7天也就夠用了。
Instances in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DB Id Inst Num DB Name Instance Host
------------ -------- ------------ ------------ ------------
* 4143510747 1 ORA11G ora11g bspdev.local
domain
Using 4143510747 for database Id
Using 1 for instance number
Specify the number of days of snapshots to choose from
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Entering the number of days (n) will result in the most recent
(n) days of snapshots being listed. Pressing without
specifying a number lists all completed snapshots.
Enter value for num_days:3
ü 輸入開始和結束的snapshot編號
輸入天數信息後,AWR生成代碼會將天數范圍內的snapshot鏡像點列出,供輸入選擇。
Listing the last 3 days of Completed Snapshots
Snap
Instance DB Name Snap Id Snap Started Level
------------ ------------ --------- ------------------ -----
ora11g ORA11G 1789 20 Jun 2011 13:01 1
1790 20 Jun 2011 14:00 1
1791 20 Jun 2011 15:00 1
1792 20 Jun 2011 16:00 1
(篇幅原因,有省略……)
1811 21 Jun 2011 11:00 1
1812 21 Jun 2011 12:00 1
1813 21 Jun 2011 13:00 1
Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
之後,我們需要根據列出的時間范圍,輸入開始和結束的snap編號。
Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enter value for begin_snap:1796
Begin Snapshot Id specified: 1796
Enter value for end_snap:1813
ü 確定報告名稱
最後就是確定生成報告的名稱。一般採用默認的名稱就可以了。
Specify the Report Name
~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is awrrpt_1_1796_1813.html. To use this name,
press to continue, otherwise enter an alternative.
Enter value for report_name:
之後輸出內容很多,此處不加以累述。最後提示報告生成成功。
Report written to awrrpt_1_1796_1813.html
於是,指定目錄上可以看到相應的報告文件。
[oracle@bspdev test]$ ls -l
total 508
-rw-r--r--. 1 oracle oinstall 515262 Jun 21 13:10 awrrpt_1_1796_1813.html
6. oracle awr報告怎麼分析一個sql的性能好壞
awr裡面只能初步判斷,判斷標准包括,執行次數,執行時間等。還要根據報告的等待事件等來確定是否要對sql進行調整。再往下就要自己對sql進行執行計劃分析,10046,10053事件的追蹤了。
7. 如何生成遠程資料庫的awr報告
* 定義:awr報告是oracle 10g下提供的一種性能收集和分析工具,它能提供一個時間段內整個系統資源使用情況的報告,通過這個報告,我們就可以了解一個系統的整個運行情況,這就像一個人全面的體檢報告。
如何分析:
* 在看awr報告的時候,我們並不需要知道所有性能指標的含義,就可以判斷出問題的所在,這些性能指標其實代表了oracle內部實現,對oracle理解的越深,在看awr報告的時候,對資料庫性能的判斷也會越准確
* 在看性能指標的時候,心裡先要明白,資料庫出現性能問題,一般都在三個地方,io,內存,cpu,這三個又是息息相關的(ps:我們先假設這個三個地方都沒有物理上的故障),當io負載增大時,肯定需要更多的內存來存放,同時也需要cpu花費更多的時間來過濾這些數據,相反,cpu時間花費多的話,有可能是解析sql語句,也可能是過濾太多的數據,到不一定是和io或內存有關系了
* 當我們把一條sql送到資料庫去執行的時候,我們要知道,什麼時候用到cpu,什麼時候用到內存,什麼時候用到io
1. cpu:解析sql語句,嘗試多個執行計劃,最後生成一個資料庫認為是比較好的執行計劃,不一定是最優的,因為關聯表太多的時候,資料庫並不會窮舉所有的執行計劃,這會消耗太多的時間,oracle怎麼就知道這條數據時你要,另一個就不是你要的呢,這是需要cpu來過濾的
2. 內存:sql語句和執行計劃都需要在內存保留一段時間,還有取到的數據,根據lru演算法也會盡量在內存中保留,在執行sql語句過程中,各種表之間的連接,排序等操作也要佔用內存
3. io:如果需要的數據在內存中沒有,則需要到磁碟中去取,就會用到物理io了,還有表之間的連接數據太多,以及排序等操作內存放不下的時候,也需要用到臨時表空間,也就用到物理io了
這里有一點說明的是,雖然oracle佔用了8G的內存,但pga一般只佔8G的20%,對於專用伺服器模式,每次執行sql語句,表數據的運算等操作,都在pga中進行的,也就是說只能用1.6G左右的內存,如果多個用戶都執行
多表關聯,而且表數據又多,再加上關聯不當的話,內存就成為瓶頸了,所有優化sql很重要的一點就是,減少邏輯讀和物理讀
如何生成awr報告:
* 1:登陸對應的資料庫伺服器
2:找到oracle磁碟空間(d:oracle\proct\10.2.0\db_1\RDBMS\Admin)
3:執行cmd-cd d:回車
4: cd d:oracle\proct\10.2.0\db_1\RDBMS\Admin 回車
5:sqlplus 用戶名/密碼@服務連接名(例:sqlplus carmot_esz_1/carmot@igrp)
6:執行@awrrpt.sql 回車
第一步輸入類型: html
第二步輸入天數: 天數自定義(如1,代表當天,如果2,代表今天和昨天。。。)
第三步輸入開始值與結束值:(你可以看到上面列出的數據,snap值)
這個值輸入開始,與結束
第四步輸入導出表的名稱:名稱自定義 回車
第五步,由程序自動導完。
第六:到d:oracle\proct\10.2.0\db_1\RDBMS\Admin 目錄下。找到剛才生成的文件。 XXXX.LST文件
具體分析過程:
* 在分析awr報告之前,首先要確定我們的系統是屬於oltp,還是olap(資料庫在安裝的時候,選擇的時候,會有一個選項,是選擇oltp,還是olap)
對於不同的系統,性能指標的側重點是不一樣的,比如,library hit和buffer hit,在olap系統中幾乎可以忽略這倆個性能指標,而在oltp系統中,這倆個指標就非常關鍵了
* 首先要看倆個時間
Elapsed: 240.00 (mins) 表明采樣時間是240分鍾,任何數據都要通過這個時間來衡量,離開了這個采樣時間,任何數據都毫無疑義
DB Time: 92,537.95 (mins) 表明用戶操作花費的時候,包括cpu時間喝等待時間,也許有人會覺得奇怪,為什麼在采樣的240分鍾過程中,用戶操作時間竟然有92537分鍾呢,遠遠超過了
采樣時間,原因是awr報告是一個數據的集合,比如在一分鍾之內,一個用戶等待了30秒,那麼10個用戶就等待了300秒,對於cpu的話,一個cpu處理了30秒,16個cpu就是4800秒,這些時間都是以累積的方式記錄在awr報告中的。
再看sessions,可以看出連接數非常多
* 為了對資料庫有個整體的認識,先看下面的性能指標
1. Buffer Nowait 說明在從內存取數據的時候,沒有經歷等待的比例,期望值是100%
2. Buffer Hit 說明從內存取數據的時候,buffer的命中率的比例,期望值是100%,但100%並不代表性能就好,因為這只是一個比例而已,舉個例子,執行一條 sql語句,# 執行計劃是需要取10000個數據塊,結果內存中還真有這10000個數據塊,那麼比例是100%,表面上看是性能最高的,還有一個執行計劃是需要500 個數據塊,內存中有250個,另外250個需要在物理磁碟中取,
這種情況下,buffer hit是50%,結果呢,第二個執行計劃性能才是最高的,所以說100%並不代表性能最好
3. Library Hit 說明sql在Shared Pool的命中率,期望值是100%
4. Execute to Parse 說明解析sql和執行sql之間的比例,越高越好,說明一次解析,到處執行,如果parse多,execute少的話,還會出現負數,因為計算公式是100*(1-parse/execute)
5. Parse CPU to Parse Elapsd 說明在解析sql語句過程中,cpu占整個的解析時間比例,,期望值是100%,說明沒有產生等待,需要說明的是,即使有硬解析,只要cpu沒有出現性能問題,也是可以容忍的,比較硬解析也有它的好處的
6. Redo NoWait 說明在產生日誌的時候,沒有產生等待,期望值是100%
7. Soft Parse 說明軟解析的比例,期望值是100%,有一點要說明的是,不要單方面的追求軟解析的高比例,而去綁定變數,要看性能的瓶頸在哪裡
8. Latch Hit 說明latch的命中率,期望值是100%,latch類似鎖,是一種內存鎖,但只會產生等待,不會產生阻塞,和lock還是有區別的,latch是在並發的情況下產生的
9. Non-Parse CPU 說明非解析cpu的比例,越高越好,用100減去這個比例,可以看出解析sql所花費的cpu,100-99.30=0.7,說明花費在解析sql上的cpu很少
* 結合Time Model Statistics
可以看出,在整個sql執行時間(sql execute elapsed time)時間為5552019秒中,解析時間(parse time elapsed)用了36秒,硬解析時間(hard parse elapsed time)用了34秒雖然硬解析時間佔了整個解析時間的絕大部分,但解析時間是花的很少的,所以可以判斷出,sql的解析沒有成為性能的瓶頸,進一步推測,sql在獲取數據的過程中遇到了瓶 頸
* 繼續看Top 5 Timed Events,從這里可以看出等待時間在前五位的是什麼事件,基本上就可以判斷出性能瓶頸在什麼地方
1. buffer busy waits 說明在獲取數據的過程中,頻繁的產生等待事件,很有可能產生了熱點塊,也就是說,很多會話都去讀取同樣的數據塊,這一事件等待了5627394次,總共等待了5322924秒,平均等待時間為946毫秒,而且頻率也是最高的,有95.9%,等待類別是並發
這里有一個概念:oracle操作的最小單位是塊,當一個會話要修改這個塊中的一條記錄,會讀取整個塊,如果另一個會話要修改的數據也正好在這個塊中,雖然這倆個
2. 會話修改的記錄不一樣,也會產生等待direct path write temp和direct path read temp 說明用到了臨時表空間,那我們再看一下Tablespace IO Stats
各項指標都是非常高的,再根據上面的In-memory Sort是100%,沒有產生磁碟排序,也就在排序的時候沒有用到臨時表空間,進一步推測,多個session,每個session執行的sql語句中多表關聯,產生了很多中間數據,pga內存中放不下,
用到了臨時表空間,也有可能是用到了lob欄位,在用lob欄位的時候,也會用到臨時表
* 繼續看SQL Statistics
根據buffer busy waits等待次數,時間,頻率都是最高的,我們重點看邏輯讀,物理讀,和執行時間最長的sql,把排在前幾位的拿出來優化
優化的原則為降低物理讀,邏輯讀,sql語句中的子操作執行次數盡量少,在看oracle估計出來的執行計劃是看不出子操作的執行次數的,要看運行時的執行計劃
* 有興趣的話還可以看一下Segment Statistics
列出了用到的索引和表的使用情況,從這里也能看出索引和表的使用頻率
* 也可以看一下Load Profile
裡面列出了每秒,每個事務所產生的日誌,邏輯讀和物理讀等指標
8. 如何生成awr報告
1.生成單實例 AWR 報告:@$ORACLE_HOME/rdbms/admin/awrrpt.sql2.生成 Oracle RAC AWR 報告:@$ORACLE_HOME/rdbms/admin/awrgrpt.sql3.生成 RAC 環境中特定資料庫實例的 AWR 報告:@$ORACLE_HOME/rdbms/admin/awrrpti.sql4.生成 Oracle RAC 環境中多個資料庫實例的 AWR 報告的方法:@$ORACLE_HOME/rdbms/admin/awrgrpti.sql5.生成 SQL 語句的 AWR 報告:@$ORACLE_HOME/rdbms/admin/awrsqrpt.sql6.生成特定資料庫實例上某個 SQL 語句的 AWR 報告:@$ORACLE_HOME/rdbms/admin/awrsqrpi.sql--生成 AWR 時段對比報告7.生成單實例 AWR 時段對比報告@$ORACLE_HOME/rdbms/admin/awrddrpt.sql8.生成 Oracle RAC AWR 時段對比報告@$ORACLE_HOME/rdbms/admin/awrgdrpt.sql9.生成特定資料庫實例的 AWR 時段對比報告@$ORACLE_HOME/rdbms/admin/awrddrpi.sql10.生成 Oracle RAC 環境下特定(多個)資料庫實例的 AWR 時段對比報告@$ORACLE_HOME/rdbms/admin/awrgdrpi.sql來源: 51cto 作者:Oracle小混子
9. 如何獲取oracle awr 報告
1 登錄Oracle用戶
最後很多人都會注意到在 SSH 下輸入命令,一旦輸入錯誤,沒辦法使用 Background 按鍵.這是因為sqlplus編碼格式的原因.可以使用 ctrl+Background 的方式一次刪兩個字元...將就著用
4 之後生成的文件以 文件名+.lst 的方式生成了.直接用瀏覽器打開就行了.
5 如果使用了資料庫集群,那麼任意哪個伺服器上都能取到完整的AWR報告,因為數據是在集群中的.
10. pl/sql 中 怎麼生成awr報告
AWR報告的原理是基於Oracle資料庫的定時鏡像功能。默認情況下,Oracle資料庫後台進程會以一定間隔(一小時)收集系統當前狀態鏡像,並且保存在資料庫中。
生成AWR報告時,只需要指定進行分析的時間段(開始鏡像編號和結束鏡像編號),就可以生成該時間段的性能分析情況。AWR鏡像保存在資料庫中的時間為一個月左右。