1、CPU接近100% nmon數據 8月5日在9:209:40之間,出現CPU接近100%的情況,特點表現為9:20左右CPU急劇攀升,在9:45左右又快速下降 2、原因分析結果總述 2.1 持續時間與恢復方式 此次CPU攀高時間持續約20分鐘,在無人工干預的情況下自動恢復 2.2 原因分析
1、CPU接近100% nmon數據
8月5日在9:20—9:40之間,出現CPU接近100%的情況,特點表現為9:20左右CPU急劇攀升,在9:45左右又快速下降
2、原因分析結果總述
2.1 持續時間與恢復方式
此次CPU攀高時間持續約20分鐘,在無人工干預的情況下自動恢復
2.2 原因分析總述:
經過分析,原因為:4條SQL語句ORACLE優化器對LB_T_XXXVIDER視圖、LB_T_XXXJECT_PROVIDER表、LA_XXCKAGE表的基數數據評估發生了巨大的差錯,導致選擇了錯誤的執行計劃,消耗大量的CPU資源
2.3 錯誤執行計劃估算數據與正確執行計劃估算數據對比
此處為選擇一條最嚴重的SQL語句為例,其它語句原因相同
錯誤執行計劃基數估算值 |
Execution Plan
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
正確執行計劃基數估算值 |
Execution Plan
|
說明上面統計信息與實際數據存在非常大的差異,是引起執行計劃錯誤的真正原因
2.4 錯誤執行計劃與正確執行計劃CPU資源消耗差異巨大對比
此處為選擇一條最嚴重的SQL語句為例,其它語句比例相近
SQL ID: bj75p9188y410
# |
Plan Hash Value |
Total Elapsed Time(ms) |
Executions |
1st Capture Snap ID |
Last Capture Snap ID |
1 |
3990363694 |
4,585,425 |
9 |
33676 |
33677 |
2 |
6178145 |
2,838 |
2 |
33677 |
33677 |
3 |
2354817963 |
1,461 |
1 |
33677 |
33677 |
錯誤執行計劃CPU消耗是最優執行計劃CPU消耗的348倍
2.5 問題自動修復原因
ORACLE11G 的新功能cardinality feedback可以在上次運行完成后,得到上一次運行的基數真正結果,智能的調整后面語句運行時的執行計劃,通過cardinality feedback功能得到準確基數數據后調整的執行計劃,會給出下面提示:
cardinality feedback used for this statement
3、數據庫時間與AWR快照對應信息
此在列出時間與AWR快照對應信息的原因為后續分析依賴時間與快照的關系,展示階段性數據
序號 |
snap_id |
BEGIN_INTERVAL_TIME |
END_INTERVAL_TIME |
1 |
33675 |
05-8月 -13 08.30.41.054 |
05-8月 -13 09.00.09.786 |
2 |
33676 |
05-8月 -13 09.00.09.786 |
05-8月 -13 09.30.10.502 |
3 |
33677 |
05-8月 -13 09.30.10.502 |
05-8月 -13 10.00.26.364 |
4 |
33678 |
05-8月 -13 10.00.26.364 |
05-8月 -13 10.30.18.791 |
5 |
33679 |
05-8月 -13 10.30.18.791 |
05-8月 -13 11.00.24.540 |
4、總體原因具體分析
8月5日9:00—10:00AWR報告分析
SQL ordered by CPU Time
|
分析:
(1) 上述標紅色語句共四條,其中第4條和第10條其實為同一條SQL語句
(2) 上述四條標紅色SQL語句分析為最消耗CPU資源的語句
(3) 上述四條標紅色SQL語句在出問題前都沒有運行,基本都集中在9:00以后開始運行
(4) 上述標紅色語句的問題有共同特性,都調用了LB_T_XXXVIDER視圖、LB_T_XXXJECT_PROVIDER表、LA_XXCKAGE
(5) 上述標紅色語句都是因為優化器對LB_T_XXXVIDER視圖、LB_T_XXXJECT_PROVIDER表、LA_XXCKAGE表的基數數據評估發生了巨大的差錯,導致選擇了錯誤的執行計劃,消耗大量的CPU資源,導致CPU接近100%
(6) 上述標紅色語句都是在幾次錯誤選擇后有效的利用了ORACLE11g的新特性cardinalityfeedback功能,最終得到準確的基數數據,自行修正了執行計劃
5、問題語句逐條剖析
5.1 第一條:SQL_ID:bj75p9188y410
SQL ID: bj75p9188y410
# |
Plan Hash Value |
Total Elapsed Time(ms) |
Executions |
1st Capture Snap ID |
Last Capture Snap ID |
1 |
3990363694 |
4,585,425 |
9 |
33676 |
33677 |
2 |
6178145 |
2,838 |
2 |
33677 |
33677 |
3 |
2354817963 |
1,461 |
1 |
33677 |
33677 |
分析:
(1)標紅色的為錯誤的執行計劃及其統計信息
(2)9:00—10:00之間,共發生9次錯誤的執行計劃
(3)在前面發生9次錯誤的執行計劃之后,由于ORACLE 11G的cardinality feedback新功能,最終得到準確的基數,在9:30-10:00之間,自動糾正了執行計劃
5.2 第二條:SQL_ID:gmfktzfsd6hj3
SQL ID: gmfktzfsd6hj3
# |
Plan Hash Value |
Total Elapsed Time(ms) |
Executions |
1st Capture Snap ID |
Last Capture Snap ID |
1 |
617277444 |
2,602,874 |
6 |
33677 |
33678 |
2 |
2335536944 |
2,725 |
2 |
33678 |
33678 |
3 |
687995303 |
1,437 |
1 |
33678 |
33678 |
分析:
(1)標紅色的為錯誤的執行計劃及其統計信息
(2)9:30—10:30之間,共發生6次錯誤的執行計劃
(3)在前面發生6次錯誤的執行計劃之后,由于ORACLE 11G的cardinality feedback新功能,最終得到準確的基數,在10:00-10:30之間,自動糾正了執行計劃
5.3 第三條:SQL_ID:1d44jc4at7xt6
SQL ID: 1d44jc4at7xt6
# |
Plan Hash Value |
Total Elapsed Time(ms) |
Executions |
1st Capture Snap ID |
Last Capture Snap ID |
1 |
3265929876 |
2,029,525 |
4 |
33676 |
33677 |
2 |
2949667951 |
19,116 |
13 |
33676 |
33677 |
3 |
1227972422 |
1,761 |
1 |
33676 |
33677 |
分析:
(1)標紅色的為錯誤的執行計劃及其統計信息
(2)9:00—10:00之間,共發生4次錯誤的執行計劃,其中
(3)在前面發生4次錯誤的執行計劃之后,由于ORACLE 11G的cardinality feedback新功能,最終得到準確的基數,在9:30-10:00之間,自動糾正了執行計劃
5.4 第四條:SQL_ID:fh86uz0ch9z9w
SQL ID: fh86uz0ch9z9w
# |
Plan Hash Value |
Total Elapsed Time(ms) |
Executions |
1st Capture Snap ID |
Last Capture Snap ID |
1 |
3265929876 |
1,247,089 |
4 |
33676 |
33681 |
2 |
2949667951 |
2,624 |
2 |
33681 |
33681 |
3 |
1227972422 |
1,291 |
1 |
33681 |
33681 |
分析:
(1)標紅色的為錯誤的執行計劃及其統計信息
(2)9:00—11:30之間,共發生4次錯誤的執行計劃,其中兩次發生在9:00-9:30間
(3)在前面發生4次錯誤的執行計劃之后,由于ORACLE 11G的cardinality feedback新功能,最終得到準確的基數,在11:00-11:30之間,自動糾正了執行計劃
6、引發執行計劃錯誤原因分析
6.1 表統計信息統計歷史
6.1.1 LB_T_XXXJECT_PROVIDER
序號 |
用戶名 |
表名 |
分析歷史時間 |
1 |
BIDPRO |
LB_T_XXXJECT_PROVIDER |
11-8月 -13 20.06.16.630512 |
2 |
BIDPRO |
LB_T_XXXJECT_PROVIDER |
03-8月 -13 20.22.23.332654 |
3 |
BIDPRO |
LB_T_XXXJECT_PROVIDER |
26-7月 -13 22.18.08.386638 |
在8月5日開標前,該表已經有10天未統計
6.1.2 LA_XXCKAGE
序號 |
用戶名 |
表名 |
分析歷史時間 |
1 |
BIDPRO |
LA_XXCKAGE |
15-8月 -13 20.01.28.232128 |
2 |
BIDPRO |
LA_XXCKAGE |
09-8月 -13 20.04.35.224700 |
3 |
BIDPRO |
LA_XXCKAGE |
26-7月 -13 20.08.49.666682 |
在8月5日開標前,該表已經有10天未統計
6.1.3 XXCC_SUPPLIER
序號 |
用戶名 |
表名 |
分析歷史時間 |
1 |
BIDPRO |
XXCC_SUPPLIER |
18-8月 -13 20.13.21.031834 |
2 |
BIDPRO |
XXCC_SUPPLIER |
10-8月 -13 20.07.04.740643 |
3 |
BIDPRO |
XXCC_SUPPLIER |
31-7月 -13 22.00.39.107474 |
4 |
BIDPRO |
XXCC_SUPPLIER |
22-7月 -13 22.01.26.170018 |
在8月5日開標前,該表已經有5天未統計
6.1.4 XXCC_SUPPLIER_CONTACT
序號 |
用戶名 |
表名 |
分析歷史時間 |
1 |
BIDPRO |
XXCC_SUPPLIER_CONTACT |
17-8月 -13 20.03.30.834585 |
2 |
BIDPRO |
XXCC_SUPPLIER_CONTACT |
09-8月 -13 22.03.30.402420 |
3 |
BIDPRO |
XXCC_SUPPLIER_CONTACT |
26-7月 -13 22.07.06.696581 |
在8月5日開標前,該表已經有10天未統計
6.2 表數據變化分析
6.2.1 8月5日前最后一次統計時間至8月5日時的block_changes數量
序號 |
表名 |
最后一次統計時間 |
block_changes |
1 |
LB_T_XXXJECT_PROVIDER |
26-7月 -13 22.18 |
158560 |
2 |
LA_XXCKAGE |
26-7月 -13 20.08 |
168224 |
3 |
XXCC_SUPPLIER |
31-7月 -13 22.00 |
608 |
4 |
XXCC_SUPPLIER_CONTACT |
26-7月 -13 22.07 |
576 |
6.3 錯誤執行計劃預估數據量與真正數據量差異對比
SQL_ID |
執行計劃對錯區分 |
對表的ROWS評估數 |
|||
XXCC_SUPPLIER_CONTACT |
XXCC_SUPPLIER |
LA_XXCKAGE |
LB_T_XXXJECT_PROVIDER |
||
bj75p9188y410 |
錯誤執行計劃 |
30058 |
1 |
1 |
1 |
正確執行計劃 |
10M |
26139 |
1 |
347 |
|
gmfktzfsd6hj3 |
錯誤執行計劃 |
30058 |
1 |
1 |
1 |
正確執行計劃 |
10M |
26139 |
1 |
347 |
|
1d44jc4at7xt6 |
錯誤執行計劃 |
30058 |
1 |
1 |
1 |
正確執行計劃 |
10M |
26139 |
1 |
347 |
|
fh86uz0ch9z9w |
錯誤執行計劃 |
30058 |
1 |
1 |
1 |
正確執行計劃 |
7763K |
26139 |
1 |
347 |
7、解決方案建議
建議對上述四條發生執行計劃錯誤的SQL語句,采用SQL_PROFILE對執行計劃進行固定,可以避免下次開標時出現同樣的問題
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com