【ASK_ORACLE】因process用盡導致的rac重啟的解決方法
說明
上週末一個重要系統出現了問題導致rac重啟,影響了業務,因此記錄一下解決過程。
環境
搭建平臺:VMware Workstation
OS:RHEL 6.10
Grid&DB:Oracle 11.2.0.4
問題描述
上週末下午資料庫的會話數突增,導致資料庫節點一程式數滿了,應用新的會話連線節點1報錯,alert日誌中出現大量的ORA-00020報錯,直到30分鐘後節點一例項重啟,隨後資料庫恢復正常。在這期間影響了多筆重要業務。
分析過程
alert日誌顯示最大程式數用盡,出現ORA-00020的反覆報錯,此時資料庫已經發生阻塞,導致節點一例項process用盡。
ASH發現16:21開始1#會話突增,16:22開始2#例項突增:可以看出是1#節點先出現問題,隨後導致2#例項的會話數突增。
發現16:21:02開始出現等待enq: US – contention,16:21:12 1#出現12個ens: US等待,隨後出現enq: SV -contention:
注:
enq: US – contention是事務出現undo segment不夠時需要申請新的undo segment產生的阻塞
enq: SV – contention是獲取sequence number而產生的阻塞
檢視對應的SQL ID發現都是DML操作:
檢視awr報告:
1. 發現相關SQL和兩個sequence有關,於是檢視這些sequence的定義後發現了兩個問題:
(1)有order關鍵字,會導致RAC環境操作進行2個節點的同步處理
(2)Cache過小
因此enq: US – contention和enq: SV – contention等待是相關關聯的,enq: US 阻塞會導致包含sequence nextval的DML無法提交,導致sequence更新cache失敗;而enq: SV -contention阻塞也可能導致sequence更新慢,DML操作緩慢。
2. AWR發現故障之前最大併發事務100左右,因此ONLINE的undo segment可能在100左右,但是故障時兩個問題SQL的確出現了接近200的併發session,並且二節點當時也有少量併發sql。同時檢視兩個節點的歷史最大會話數在2千多
綜上分析,本次故障原因是突增的併發DML語句,導致online undo segment不夠,當online擴充套件undo段時產生阻塞,並且相關問題SQL的sequence使用order模式,會導致順序同步爭用,跨節點操作更嚴重。
解決方法
1、按關閉自動undo管理,並設定足夠的online回滾段:
alter system set "_rollback_segment_count"=3000;
alter system set "_undo_autotune"=FALSE;
2、 修改sequence cache到10000,取消order,減少資料字典更新頻率及同步:
alter sequence XXX1_SEQ_S cache 10000 noorder;
alter sequence XXX2_SEQ_S cache 10000 noorder;
3、為避免跨例項同步,使應用連線同一個例項
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69992972/viewspace-2932474/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle RAC啟動因CTSS導致的異常Oracle
- 【ASK_ORACLE】RAC節點自動重啟但日誌裡未報錯的原因和解決方法Oracle
- eclipse: workspace出錯導致無法啟用的解決Eclipse
- MySQL 5.6因為OOM導致資料庫重啟MySqlOOM資料庫
- 【ASK_ORACLE】導致ora-29740報錯的可能原因和對應的解決方案Oracle
- mstar因裝置讀不到導致,待機重啟問題
- 解決一次gitlab因異常關機導致啟動失敗Gitlab
- 新增display:none;導致盒子被擠下去的解決方法None
- 【ASK_ORACLE】Oracle RAC報錯“ipc send timeout”的原因以及解決辦法Oracle
- IIS應用程式回收導致應用中Hangfire等後臺任務無法正常啟動工作的解決方法
- 記php-fpm重啟導致的一個bugPHP
- 神奇的DEBUG:因為異常導致MongoDB容器無法啟動MongoDB
- ORACLE RAC 11.2.0.4 ASM加盤導致叢集重啟之ASM sga設定過小OracleASM
- 多路徑配置問題和ACFS啟用原因導致rac二節點不能正常啟動
- nginx重啟報找不到nginx.pid的解決方法Nginx
- CAS導致的ABA問題及解決
- win10應用程式無法啟動,因為應用程式的並行配置不正確的解決方法Win10並行
- go 協程操作map導致的資料競爭及解決方法Go
- 記一次 Mac 意外重啟導致的 Homestead 問題Mac
- 伺服器自動重啟的原因及解決方法-VeCloud伺服器Cloud
- [譯] RxJS: 避免因濫用 switchMap 而導致錯誤JS
- 不同Node版本導致的Date建構函式問題及解決方法函式
- 解決NSTimer迴圈引用導致記憶體洩漏的六種方法記憶體
- Dynamics CRM the field cannot be deleted because it is used in one or more process的解決方法delete
- Linux下php-fpm程式過多導致記憶體耗盡問題解決LinuxPHP記憶體
- 【ASK_ORACLE】Oracle 12.2 Bug導致網路卡出現故障後RAC庫未向TCP註冊本地VIP監聽OracleTCP
- Win10系統下因DistributedCOM錯誤1001導致電腦自動重啟怎麼辦Win10
- win10重啟後會開啟之前沒關的網頁解決方法Win10網頁
- ECS記憶體佔用高導致wordpress資料庫經常掛掉的兩種解決方法記憶體資料庫
- 克隆虛擬機器導致Linux無法啟動網路卡的分析與解決虛擬機Linux
- Linux 新增新硬碟無法識別[無需重啟]的解決方法Linux硬碟
- win10系統提示遇到錯誤需要重啟的解決方法Win10
- [學習筆記]解決因C#8.0的語言特性導致EFCore實體型別對映的錯誤筆記C#型別
- canvas因為圖片資源不在同一域名下而導致的跨域汙染畫布的解決辦法Canvas跨域
- 製作的Fedora啟動U盤無法引導系統的解決方法
- crond不斷喚起sendmail導致資源耗盡的排查AI
- Raid5兩塊硬碟離線導致伺服器癱瘓的解決方法AI硬碟伺服器
- Windows啟動谷歌瀏覽器Chrome失敗(應用程式無法啟動,因為應用程式的並行配置不正確)解決方法Windows谷歌瀏覽器Chrome並行