1. 主機cpu和內存負載都不高
2. 檢查mmon進程運行狀態正常
3. 檢查snapshot保留時間和快照間隔設置正常,發現DBA_HIST_ACTIVE_SESS_HISTOR有數據,但是沒有生成snapshot保留時間和快照間隔:
DBA_HIST_ACTIVE_SESS_HISTOR數據:
4. 檢查數據庫日志,發現以下錯誤
節點1 flush AWR相關數據,有個wait event: enq: WF – contention,節點2有個wait event: not in wait,通過SessId,Ser# 可以查詢到執行的問題sql和執行計劃:
▼▼▼
SQL_ID 82h7w3w07k63z, child number 0
-------------------------------------
insert into wrh$_sql_bind_metadata (snap_id, dbid, sql_id, name,
position, dup_position, datatype, datatype_string, character_sid,
precision, scale, max_length) SELECT /*+ ordered use_nl(bnd) index(bnd
sql_id) */ :lah_snap_id, :dbid, bnd.sql_id, name, position,
dup_position, datatype, datatype_string, character_sid,
precision, scale, max_length FROM x$kewrattrnew new,
x$kewrsqlidtab tab, v$sql_bind_capture bnd WHERE
new.str1_kewrattr = tab.sqlid_kewrsie AND tab.sqlid_kewrsie
= bnd.sql_id AND tab.childaddr_kewrsie = bnd.child_address
Plan hash value: 4222011306
-----------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)|
-----------------------------------------------------------------------------------
| 0 | INSERT STATEMENT | | | | 1 (100)|
| 1 | LOAD TABLE CONVENTIONAL | | | | |
| 2 | NESTED LOOPS | | 1 | 217 | 0 (0)|
|*3 | HASH JOIN | | 1 | 48 | 0 (0)|
| 4 | FIXED TABLE FULL | X$KEWRATTRNEW | 1 | 34 | |
| 5 | FIXED TABLE FULL | X$KEWRSQLIDTAB | 1 | 14 | |
|*6 | FIXED TABLE FIXED INDEX| X$KQLFBC (ind:2) | 1 | 169 | 0 (0)|
-----------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
3 - access("NEW"."STR1_KEWRATTR"="TAB"."SQLID_KEWRSIE")
6 - filter(("INST_ID"=USERENV(INSTANCE) AND
"TAB"."SQLID_KEWRSIE"="KQLFBC_SQLID" AND
"TAB"."CHILDADDR_KEWRSIE"="KQLFBC_CADD"))
文檔建議收集FIXED TABLE(X$KEWRATTRNEW ,X$KEWRSQLIDTAB)統計信息,收集完統計信息,問題依舊存在,沒有解決。
注意:FIXED TABLE(FIXED TABLE),存在過多過期SQL父游標,收集該表統計信息會hang住,詳見Bug 22733141 awr snapshots not created, gathering stats on x$kqlfbc hangs。
▼▼▼
exec dbms_stats.gather_table_stats(SYS, X$KEWRATTRNEW);
exec dbms_stats.gather_table_stats(SYS, X$KEWRSQLIDTAB);
文檔建議的刷新shared_pool,因為是生產環境,沒有嘗試操作。
最終選擇業務停機維護時段,重新啟動數據庫釋放X$KQLFBC表數據,暫時問題解決,開始生成新的awr報告。
填充AWR wrh$_sql_bind_metadata 表來自X$KQLFBC table,如果X$KQLFBC 中的過期的SQL父游標過多,就導致X$KQLFBC查詢緩慢,而導致AWR后臺進程m00* 進程因超時而掛起,通過跳過收集與該表相關的數據,避免該問題。
▼▼▼
alter system set "_awr_disabled_flush_tables" = wrh$_sql_bind_metadata;
更多精彩干貨分享
點擊下方名片關注
IT那活兒
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129885.html
摘要:表示用戶操作花費的時間,包括時間和等待事件。當內存中排序空間不足時,使用臨時表空間進行排序,這個是內存排序對總排序的百分比。過低說明有大量排序在臨時表空間進行。要確保,否則存在嚴重的性能問題,比如綁定等會影響該參數。 Oracle中的AWR,全稱為Automatic Workload Repository,自動負載信息庫。它收集關于特定數據庫的操作統計信息和其他統計信息,Oracle以...
閱讀 1346·2023-01-11 13:20
閱讀 1684·2023-01-11 13:20
閱讀 1132·2023-01-11 13:20
閱讀 1858·2023-01-11 13:20
閱讀 4100·2023-01-11 13:20
閱讀 2704·2023-01-11 13:20
閱讀 1385·2023-01-11 13:20
閱讀 3597·2023-01-11 13:20