国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Oracle-數(shù)據(jù)庫性能變慢問題分析

這篇具有很好參考價值的文章主要介紹了Oracle-數(shù)據(jù)庫性能變慢問題分析。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

問題背景:

????????應用運維報障說最近兩天業(yè)務數(shù)據(jù)入庫和表查詢都變得很慢,需要排查一下數(shù)據(jù)庫的性能問題

問題分析:

????????登錄到服務器上,通過TOP命令快速看了一下,服務器整體的CPU使用%usr不算特別高,但%wa IO等待很高,懷疑有可能是數(shù)據(jù)庫存在大量的IO操作語句導致服務器IO負載升高

????????查詢數(shù)據(jù)庫的負載dbtime時間,可以看到數(shù)據(jù)庫的負載明顯變高,平常只有幾百的dbtime值,從2024年1月1日13點左右之后開始飆升,最高達到7000+

Oracle-數(shù)據(jù)庫性能變慢問題分析,數(shù)據(jù)庫,oracle,dba,運維,問題分析

????????對比1月1日13點前后的等待事件情況,發(fā)現(xiàn)13點之后的IO等待事件db file sequential read以及direct path read等待事件明顯多了幾個數(shù)量級,等待事件的類型與看到的服務器IO等待負載升高匹配,可以確認數(shù)據(jù)庫肯定存在大量的IO操作

select event,count(*)
from DBA_HIST_ACTIVE_SESS_HISTORY a
where  to_char(sample_time,'yyyymmdd hh24:mi:ss')>='20240101 13:00:00'
and to_char(sample_time,'yyyymmdd hh24:mi:ss')<='20240102 16:00:00'
group by event 
order by 2;

????????正常時間段

?文章來源地址http://www.zghlxwxcb.cn/news/detail-807003.html

Oracle-數(shù)據(jù)庫性能變慢問題分析,數(shù)據(jù)庫,oracle,dba,運維,問題分析

????????性能緩慢,IO等待高時間段

?

Oracle-數(shù)據(jù)庫性能變慢問題分析,數(shù)據(jù)庫,oracle,dba,運維,問題分析

????????進一步查看IO等待事件db file sequential read以及direct path?read每小時的增長趨勢,可以看到在13點之后,IO等待事件出現(xiàn)了顯著的增長

select to_char(sample_time,'yyyymmdd hh24'),event,count(*)
from DBA_HIST_ACTIVE_SESS_HISTORY a
where   event in('direct path read','db file sequential read')
group by to_char(sample_time,'yyyymmdd hh24'),event
order by 1;

?

Oracle-數(shù)據(jù)庫性能變慢問題分析,數(shù)據(jù)庫,oracle,dba,運維,問題分析

????????分析IO等待事件引發(fā)的sql語句,可以看到TOP主要有4條語句sql:8aq5bt0k6jb4d、3s559a2uc2xk0、3nd18t4tmv0mz、25dy6q436ch3k

select sql_id,count(*)
from DBA_HIST_ACTIVE_SESS_HISTORY a
where  to_char(sample_time,'yyyymmdd hh24:mi:ss')>='20240101 13:00:00'
and to_char(sample_time,'yyyymmdd hh24:mi:ss')<='20240102 16:00:00'
and event in ('db file sequential read','direct path read')
having count(*)>50000
group by sql_id 
order by 2;

?

Oracle-數(shù)據(jù)庫性能變慢問題分析,數(shù)據(jù)庫,oracle,dba,運維,問題分析

????????分析第一條SQL:8aq5bt0k6jb4d

????????查看語句的執(zhí)行計劃,可以看到語句的執(zhí)行計劃發(fā)生了改變,在1月1日13點生成了一個高消耗的執(zhí)行計劃,執(zhí)行次數(shù)628次,平均消耗時間6583秒,邏輯讀和物理讀次數(shù)都很高平均100W+,而正常的執(zhí)行計劃執(zhí)行時間都在10秒以內(nèi),,物理讀次數(shù)在1000次以內(nèi)

????????從執(zhí)行計劃的生成時間與數(shù)據(jù)庫負載變高時間一致以及語句的邏輯讀和物理讀消耗,基本可以確認數(shù)據(jù)庫的性能緩慢與這個語句有關

?

Oracle-數(shù)據(jù)庫性能變慢問題分析,數(shù)據(jù)庫,oracle,dba,運維,問題分析

Oracle-數(shù)據(jù)庫性能變慢問題分析,數(shù)據(jù)庫,oracle,dba,運維,問題分析

????????分析語句的高消耗執(zhí)行計劃,語句里面唯一的大表TAB_MR,大小157628MB,作為了nested loop的驅(qū)動表,并且執(zhí)行的路徑是全表分區(qū)范圍掃描

?

Oracle-數(shù)據(jù)庫性能變慢問題分析,數(shù)據(jù)庫,oracle,dba,運維,問題分析

?

Oracle-數(shù)據(jù)庫性能變慢問題分析,數(shù)據(jù)庫,oracle,dba,運維,問題分析

????????表TAB_MR根據(jù)時間條件t.syn_time查詢數(shù)據(jù)

?

Oracle-數(shù)據(jù)庫性能變慢問題分析,數(shù)據(jù)庫,oracle,dba,運維,問題分析

????????跟正常的執(zhí)行計劃對比,可以看到正常的執(zhí)行計劃是使用到了分區(qū)本地索引IDX_TAB_MR_SYN_TIME,而不是全表分區(qū)范圍掃描

?

Oracle-數(shù)據(jù)庫性能變慢問題分析,數(shù)據(jù)庫,oracle,dba,運維,問題分析

????????檢查分區(qū)表以及索引的統(tǒng)計信息,都發(fā)現(xiàn)1月份之后的統(tǒng)計信息與實際表的數(shù)據(jù)差異很大,實際一天的分區(qū)有幾十萬的數(shù)據(jù)

--查看分區(qū)表的統(tǒng)計信息
select table_owner, table_name, partition_name, AVG_ROW_LEN ,num_rows, blocks*8/1024 size_m,last_analyzed
from dba_tab_partitions where table_name='SALES_LIST'
--查看索引的統(tǒng)計信息
select owner,index_name,PARTITION_NAME,SUBPARTITION_NAME,LEAF_BLOCKS,DISTINCT_KEYS,LAST_ANALYZED
from dba_ind_statistics
where table_owner='TEST' and table_name='SALES_LIST';

?

Oracle-數(shù)據(jù)庫性能變慢問題分析,數(shù)據(jù)庫,oracle,dba,運維,問題分析

????????查看語句傳入的綁定變量值,發(fā)現(xiàn)傳入的都是查詢最新1月份的數(shù)據(jù),可以判斷執(zhí)行計劃選錯執(zhí)行路徑的原因為統(tǒng)計信息的不準確導致優(yōu)化器估算出現(xiàn)錯誤,選擇了全表掃描的路徑

?

Oracle-數(shù)據(jù)庫性能變慢問題分析,數(shù)據(jù)庫,oracle,dba,運維,問題分析

????????分析第二條SQL:3sruu5v9gtysg

????????語句是一條正常的普通insert語句,執(zhí)行計劃沒有可以分析的,查看語句的執(zhí)行消耗變化情況,可以看到在13點之后,語句的IO_WAIT等待時間變得很高,可以判斷語句應該是受到系統(tǒng)負載IO變慢所影響的

?

Oracle-數(shù)據(jù)庫性能變慢問題分析,數(shù)據(jù)庫,oracle,dba,運維,問題分析

????????分析第三條SQL:3sruu5v9gtysg

????????跟第二條語句類似,在執(zhí)行計劃沒有變化的情況下,語句的IO_WAIT等待時間變得很高,語句同樣也是受到系統(tǒng)負載IO變慢所影響的

?

Oracle-數(shù)據(jù)庫性能變慢問題分析,數(shù)據(jù)庫,oracle,dba,運維,問題分析

????????分析第四條SQL:3sruu5v9gtysg

????????查看語句的執(zhí)行計劃,可以看到語句的執(zhí)行計劃也發(fā)生了改變,在1月1日13點生成了一個高消耗的執(zhí)行計劃,執(zhí)行次數(shù)7149次,平均消耗時間7.374秒,物理讀和邏輯讀比起正常的執(zhí)行計劃消耗都增長了很多,而正常的執(zhí)行計劃執(zhí)行時間都在0.0005秒以內(nèi),平均只有10次的邏輯讀

Oracle-數(shù)據(jù)庫性能變慢問題分析,數(shù)據(jù)庫,oracle,dba,運維,問題分析

????????查看語句的執(zhí)行計劃,跟第一條語句是同一張表語句TAB_MR,同樣的問題,優(yōu)化器選錯了執(zhí)行的路徑進行全表單分區(qū)范圍掃描

Oracle-數(shù)據(jù)庫性能變慢問題分析,數(shù)據(jù)庫,oracle,dba,運維,問題分析

????????分析完這4條TOP SQL可以對問題做個總結(jié)了,數(shù)據(jù)庫從2024年1月1日13點左右負載明顯升高,主要的負載為IO操作,IO操作負載升高的原因為大表TAB_MR的2024年1月份之后的分區(qū)統(tǒng)計信息不準確,導致涉及1月份數(shù)據(jù)的查詢SQL生成了錯誤的高消耗全表分區(qū)掃描執(zhí)行計劃,產(chǎn)生了大量的物理讀以及邏輯讀,最終引發(fā)了整個數(shù)據(jù)庫的性能下降,業(yè)務數(shù)據(jù)入庫和表查詢都變慢

問題解決:

????????對大表TAB_MR1月份的分區(qū)單獨收集統(tǒng)計信息后,語句的執(zhí)行計劃恢復了正常,數(shù)據(jù)庫的IO負載也降下來、

其他問題:

????????最后還有一個問題就是關于統(tǒng)計信息收集的,數(shù)據(jù)庫是有開啟默認的自動統(tǒng)計信息收集的,單個分區(qū)的數(shù)據(jù)變化量也超過了10%,為什么表的統(tǒng)計信息到1月2號還沒有更新

?

Oracle-數(shù)據(jù)庫性能變慢問題分析,數(shù)據(jù)庫,oracle,dba,運維,問題分析

?

Oracle-數(shù)據(jù)庫性能變慢問題分析,數(shù)據(jù)庫,oracle,dba,運維,問題分析

????????查看統(tǒng)計信息job的執(zhí)行記錄,可以看到2024年1月1日的統(tǒng)計信息收集在晚上22點有正常的開始執(zhí)行,但是最后統(tǒng)計信息收集的job由于4個小時的執(zhí)行窗口時間已到,job被迫暫停了(REASON="Stop job called because associated window was closed"),也就是任務有跑,但沒收集完成

????????注:周一到周五默認統(tǒng)計信息收集窗口4個小時,周六周日默認統(tǒng)計信息收集窗口20個小時

????????通常統(tǒng)計信息沒有在4個小時窗口執(zhí)行完成的可能原因有1 數(shù)據(jù)庫要收集的表數(shù)據(jù)量過大 2 數(shù)據(jù)庫的性能出現(xiàn)問題,導致收集緩慢 3 統(tǒng)計信息收集的并行度不合理,導致收集速度過慢 4 Oracle的bug,結(jié)合統(tǒng)計信息收集的歷史完成時間都在2小時以內(nèi)以及收集時間段存在IO負載高的問題,判斷統(tǒng)計信息收集還是受到數(shù)據(jù)庫的性能下降所影響

?

Oracle-數(shù)據(jù)庫性能變慢問題分析,數(shù)據(jù)庫,oracle,dba,運維,問題分析

?

?

?

?

?

?

?

?

到了這里,關于Oracle-數(shù)據(jù)庫性能變慢問題分析的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • oracle19c容器數(shù)據(jù)庫rman備份特性-----性能優(yōu)化(三)

    oracle19c容器數(shù)據(jù)庫rman備份特性-----性能優(yōu)化(三)

    目錄 冗余備份片 1.備份的時候指定 2.rman配置中設定 歸檔備份(將備份集保留) 二級備份(將備份文件保留) 1.備份閃回恢復區(qū)的恢復文件 2.備份所有恢復文件 recovery catalog database 1.創(chuàng)建recovery catalog 2.創(chuàng)建VPC ?data recovery advisor 備份 如果一個數(shù)據(jù)文件很大,可以設置多通道并

    2024年02月01日
    瀏覽(27)
  • 使用免費負載生成器swingbench對oracle數(shù)據(jù)庫進行壓力測試(測試Oracle的功能或評估性能)

    使用免費負載生成器swingbench對oracle數(shù)據(jù)庫進行壓力測試(測試Oracle的功能或評估性能)

    Swingbench 是一個免費負載生成器(和基準測試),旨在對 Oracle 數(shù)據(jù)庫 進行壓力測試。目前最新版本 Swingbench 2.6。 SwingBench 由負載生成器,協(xié)調(diào)器和集群概述組成。該軟件可以生成負載 并繪制交易/響應時間圖表。 Swingbench 可用于演示和測試技術,例如實際應用程序集群,在線

    2024年02月10日
    瀏覽(31)
  • 數(shù)據(jù)庫問題記錄(粗略版)oracle、mysql等主流數(shù)據(jù)庫通用

    數(shù)據(jù)庫問題記錄(粗略版)oracle、mysql等主流數(shù)據(jù)庫通用

    1. ORA-00918:未明確定義列 該問題情況大致為:select 所取列名錯誤、重復等問題。 2. “select * from temp where 1=0; ”的含義 布爾值為FALSE,只返回表結(jié)構,不返回數(shù)據(jù)。 舉一反三: select * from temp where 10 , 布爾值為TRUE,返回所有數(shù)據(jù)記錄; select * from temp where 1=0, 暫不清楚是何

    2024年02月07日
    瀏覽(19)
  • 使用Apache Doris自動同步整個 MySQL/Oracle 數(shù)據(jù)庫進行數(shù)據(jù)分析

    使用Apache Doris自動同步整個 MySQL/Oracle 數(shù)據(jù)庫進行數(shù)據(jù)分析

    Flink-Doris-Connector 1.4.0 允許用戶一步將包含數(shù)千個表的整個數(shù)據(jù)庫(MySQL或Oracle )攝取到Apache Doris(一種實時分析數(shù)據(jù)庫)中。 通過內(nèi)置的Flink CDC,連接器可以直接將上游源的表模式和數(shù)據(jù)同步到Apache Doris,這意味著用戶不再需要編寫DataStream程序或在Doris中預先創(chuàng)建映射表。

    2024年02月09日
    瀏覽(21)
  • 解決Oracle數(shù)據(jù)庫中日期格式不識別的問題

    在數(shù)據(jù)庫開發(fā)中,我們經(jīng)常需要處理日期和時間數(shù)據(jù)。當我們在Oracle數(shù)據(jù)庫中執(zhí)行UPDATE語句時,可能會遇到ORA-01821錯誤,該錯誤表示提供的日期格式無法被數(shù)據(jù)庫識別。本文將介紹如何解決Oracle數(shù)據(jù)庫中日期格式不識別的問題。 問題分析: ORA-01821錯誤是由于提供的日期字符

    2024年02月09日
    瀏覽(20)
  • Python從Oracle數(shù)據(jù)庫中獲取數(shù)據(jù)——fetchall(),fetchone(),fetchmany()函數(shù)功能分析

    Python從Oracle數(shù)據(jù)庫中獲取數(shù)據(jù)——fetchall(),fetchone(),fetchmany()函數(shù)功能分析

    Python從Oracle數(shù)據(jù)庫中獲取數(shù)據(jù)——fetchall(),fetchone(),fetchmany()函數(shù)功能分析 1、fetchall()函數(shù),它的返回值是多個元組,即返回多個行記錄,如果沒有結(jié)果,返回的是() 2、fetchone()函數(shù),它的返回值是單個的元組,也就是一行記錄,如果沒有結(jié)果,那就會返回None,每次向后抓取一條記錄 3、

    2024年02月15日
    瀏覽(25)
  • Oracle數(shù)據(jù)庫出現(xiàn)WARNING: too many parse errors告警的分析思路

    Oracle數(shù)據(jù)庫出現(xiàn)WARNING: too many parse errors告警的分析思路

    Oracle數(shù)據(jù)庫的告警日志中出WARNING: too many parse errors這些告警信息的話,如果遇到這個問題,我們應該如何分析呢? 下面簡單聊一下如何分析這個錯誤。該告警信息其實是12.2版本中的一個特性增強。在以前的Oracle版本中,數(shù)據(jù)庫出現(xiàn)了解析錯誤時,數(shù)據(jù)庫的alert日志中不會有任

    2024年04月23日
    瀏覽(32)
  • flink cdc同步Oracle數(shù)據(jù)庫資料到Doris問題集錦

    java.lang.NoClassDefFoundError: org/apache/flink/shaded/guava18/com/google/common/util/concurrent/ThreadFactoryBuilder at com.ververica.cdc.debezium.DebeziumSourceFunction.open(DebeziumSourceFunction.java:218) ~[flink-connector-debezium-2.2.0.jar:2.2.0] at org.apache.flink.api.common.functions.util.FunctionUtils.openFunction(FunctionUtils.java:34) ~[flink-co

    2024年02月16日
    瀏覽(22)
  • 【Oracle】收集Oracle數(shù)據(jù)庫內(nèi)存相關的信息

    【Oracle】收集Oracle數(shù)據(jù)庫內(nèi)存相關的信息

    【聲明】文章僅供學習交流,觀點代表個人,與任何公司無關。 編輯|SQL和數(shù)據(jù)庫技術(ID:SQLplusDB) Oracle數(shù)據(jù)庫包含多個內(nèi)存區(qū)域,每個區(qū)域都包含多個子組件。 Oracle Database Memory Structures 根據(jù)具體問題的需要,可以通過如下命令收集Oracle數(shù)據(jù)庫內(nèi)存相關的信息。 例: 注:SET

    2024年01月21日
    瀏覽(30)
  • Oracle數(shù)據(jù)庫面試題 精選 Oracle 面試題

    1.解釋冷備份和熱備份的不同點以及各自的優(yōu)點 冷備份 發(fā)生在數(shù)據(jù)庫已經(jīng)正常關閉的情況下,將關鍵性文件拷貝到另外位置的一種說法。適用于所有模式的數(shù)據(jù)庫。 優(yōu)點 1. 是非??焖俚膫浞莘椒ǎㄖ恍杩截愇募?2. 容易歸檔(簡單拷貝即可) 3. 容易恢復到某個時間點上(只

    2024年02月05日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包