Oracle19C低版本一天遭遇兩BUG(ORA-04031/ORA-600)

昨天幫朋友看一個系統異常卡頓的案例,在這里分享給大家

環境:Exadata X8M? 數據庫版本19.11

1.系統報錯信息

表象為系統卡頓,頁面無法刷出,登陸到主機上看到節點1 系統等待存在大量的?cursor: pin S wait on X等待

查看兩個節點的alert log 看到有大量的ORA-04031報錯?

2025-04-15T14:43:53.522183+08:00
Errors in file /u01/app/oracle/diag/rdbms/test1/test11/trace/test11_m000_342669.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-01000: maximum open cursors exceeded
2025-04-15T14:44:50.515707+08:00
DDE: Problem Key 'ORA 4031' was completely flood controlled (0x6)
Further messages for this problem key will be suppressed for up to 10 minutes
2025-04-15T14:46:29.968518+08:00
Errors in file /u01/app/oracle/diag/rdbms/test1/test11/trace/test11_mz08_287162.trc:
ORA-04031: unable to allocate 12312 bytes of shared memory ("shared pool","unknown object","KKSSP^2798","kglseshtTable")
2025-04-15T14:46:30.005517+08:00
Process MZ08 died, see its trace filetrace file信息
Trace file /u01/app/oracle/diag/rdbms/test1/test11/trace/test11_mz08_287162.trc
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.11.0.0.0
*** 2025-04-15T14:46:29.968405+08:00 (CDB$ROOT(1))
<error barrier> at 0x7ffceea153e8 placed ksv.c@7147
ORA-04031: unable to allocate 12312 bytes of shared memory ("shared pool","unknown object","KKSSP^2798","kglseshtTable")
OPIRIP: Uncaught error 447. Error stack:*** 2025-04-15T14:46:29.969405+08:00
ORA-00447: fatal error in background process
ORA-04031: unable to allocate 12312 bytes of shared memory ("shared pool","unknown object","KKSSP^2798","kglseshtTable")

MOS新加AI搜索能力

ORA-04031涉及到的bug非常多,遇到這類問題 優先查MOS,這里簡單介紹一下MOS新推出的 AI搜索能力,可以根據你提供的報錯 比較精準的給出搜索結果,并根據相關性將引用的文檔列出來,這個功能非常好

根據AI的提示 簡單翻譯一下

請注意:服務提供的信息可能存在不準確之處,應進行獨立驗證。本解答適用于:Oracle Database - Enterprise Edition - 版本19.3.0.0.0至19.14.0.0.0

錯誤消息ORA-04031: unable to allocate 12312 bytes of shared memory ("shared pool","unknown object","KKSSP^2798","kglseshtTable")表明數據庫無法從共享池分配所需的共享內存。

根據《數據庫錯誤消息》文檔,該錯誤的成因是所需共享內存超過了當前可用量。

解決方案如下:

  1. 增加初始化參數SGA_TARGET、MEMORY_SIZE或MEMORY_TARGET的值

  2. 若無法增加上述參數,則降低DB_CACHE_SIZE的值(如已設置)

  3. 若未使用SGA_TARGET、MEMORY_SIZE或MEMORY_TARGET,則增加對應內存池的大小:

    • 共享池不足時增加SHARED_POOL_SIZE

    • IMC堆不足時增加INMEMORY_SIZE

另一份相關文檔《ORA-04031: unable to allocate 12312 bytes of shared memory ("shared pool","unknown object","KKSSP^1489","kglseshtTable")》提供了更具體的錯誤分析。

該錯誤由產品缺陷引起,已在未公開的Bug 33647820中記錄。解決方案為:

  1. 應用19.15或更高版本的補丁集(該問題已標記為修復)

  2. 或應用適用于您版本和平臺的補丁33647820(如存在)

檢查補丁沖突請使用My Oracle Support (MOS)的Patch Planner工具。若對應平臺和版本無可用補丁,請聯系Oracle技術支持申請修復。

2.原因

很明顯這個報錯是因為觸發了一個為 unpublished 的Bug ,根據文檔?ORA-04031: unable to allocate 12312 bytes of shared memory ("shared pool","unknown object","KKSSP^1489","kglseshtTable") (Doc ID 2923103.1)

這個報錯和文檔中的描述完全一致,大概猜測是數據庫實例運行太久 造成的share pool imbalance,該問題在19.15被解決,19.15之前版本BUG還是挺多的,如果有條件可以考慮升級到19.20+

話說Exadata穩定性還是非常強大的,這臺機器從入場至今1387天(接近四年了),沒有重啟過,出問題這個實例也沒有重啟過, 如果不是這次遭遇BUG 應該還能跑很久。

3.解決方案

根據以上MOS的信息,有一下幾種處理方式

緊急處理方式,強制刷新share pool

alter system flush shared_pool;

或者重啟數據庫?很多內存相關的bug可以通過重啟數據庫來解決,畢竟打補丁現在來不及;我這里選擇的處理方案是輪流重啟兩個節點;

然而因為這個實例已經運行了太久 shutdown用了好長時間,并有大量pid 都需要手動kill,一下報出幾百個PID,還好現在AI比較強大直接將這部分log丟給deepseek,讓它把pid篩選出來就好了。

PDBPRO(6):Active process 279643 user 'grid' program 'oracle@test.com.cn', waiting for 'SQL*Net message from client'
PDBPRO(6):
PDBPRO(6):Active process 124660 user 'grid' program 'oracle@test.com.cn', waiting for 'SQL*Net message from client'
PDBPRO(6):
PDBPRO(6):Active process 246421 user 'grid' program 'oracle@test.com.cn', waiting for 'SQL*Net message from client'
PDBPRO(6):
PDBPRO(6):Active process 224818 user 'grid' program 'oracle@test.com.cn', waiting for 'read by other session'
PDBPRO(6):
PDBPRO(6):Active process 124650 user 'grid' program 'oracle@test.com.cn', waiting for 'SQL*Net message from client'
PDBPRO(6):

4.重啟再遇到BUG

節點2重啟正常,但是在節點1重啟時發現只能mount 無法OPEN 關鍵部分報錯如下

ALTER DATABASE OPEN /* db agent *//* {0:4:346} */2025-04-15T19:47:52.586367+08:00
CTWR started with pid=89, OS id=33744
Errors in file /u01/app/oracle/diag/rdbms/test1/test11/trace/test11_ctwr_33744.trc  (incident=246935) (PDBNAME=CDB$ROOT):
ORA-04031: unable to allocate 52011112 bytes of shared memory ("large pool","unknown object","large pool","CTWR dba buffer")
Incident details in: /u01/app/oracle/diag/rdbms/test1/test11/incident/incdir_246935/test11_ctwr_33744_i246935.trc
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.
2025-04-15T19:47:53.513579+08:00
ORA-04031 heap dump being written to trace file /u01/app/oracle/diag/rdbms/test1/test11/incident/incdir_246935/test11_ctwr_33744_i246935.trc
2025-04-15T19:47:54.106979+08:00
Errors in file /u01/app/oracle/diag/rdbms/test1/test11/trace/test11_ctwr_33744.trc  (incident=246936) (PDBNAME=CDB$ROOT):
ORA-00600: internal error code, arguments: [krcpasb_initial_alloc_failure], [3250176], [], [], [], [], [], [], [], [], [], []
ORA-04031: unable to allocate 52011112 bytes of shared memory ("large pool","unknown object","large pool","CTWR dba buffer")
Incident details in: /u01/app/oracle/diag/rdbms/test1/test11/incident/incdir_246936/test11_ctwr_33744_i246936.trc
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.
2025-04-15T19:47:54.598420+08:00
Errors in file /u01/app/oracle/diag/rdbms/test1/test11/trace/test11_ctwr_33744.trc:
ORA-00600: internal error code, arguments: [krcpasb_initial_alloc_failure], [3250176], [], [], [], [], [], [], [], [], [], []
ORA-04031: unable to allocate 52011112 bytes of shared memory ("large pool","unknown object","large pool","CTWR dba buffer")
2025-04-15T19:47:54.598589+08:00
The change tracking error 600.
2025-04-15T19:47:54.598742+08:00
Stopping background process CTWR
2025-04-15T19:47:54.599120+08:00
Errors in file /u01/app/oracle/diag/rdbms/test1/test11/trace/test11_ctwr_33744.trc:
ORA-00600: internal error code, arguments: [krcpasb_initial_alloc_failure], [3250176], [], [], [], [], [], [], [], [], [], []
ORA-04031: unable to allocate 52011112 bytes of shared memory ("large pool","unknown object","large pool","CTWR dba buffer")
2025-04-15T19:47:54.600494+08:00
Dumping diagnostic data in directory=[cdmp_20250415194754], requested by (instance=1, osid=33744 (CTWR)), summary=[incident=246936].
Errors in file /u01/app/oracle/diag/rdbms/test1/test11/trace/test11_ctwr_33744.trc  (incident=246937) (PDBNAME=CDB$ROOT):
ORA-487 [] [] [] [] [] [] [] [] [] [] [] []
Incident details in: /u01/app/oracle/diag/rdbms/test1/test11/incident/incdir_246937/test11_ctwr_33744_i246937.trc

錯誤發生在啟動?CTWR(Change Tracking Writer)進程時,最終導致?實例終止(instance crash)

?4.1 CTWR 進程啟動失敗

CTWR?是 Change Tracking Writer,用于實現?增量備份變更跟蹤(Block Change Tracking)?功能。它啟動時嘗試在?large pool?中分配大塊內存失敗,引發了 ORA-4031:

"large pool", "CTWR dba buffer"

4.2 ORA-00600 + ORA-4031 的組合說明這是一個嚴重的系統級錯誤?

  • ORA-00600?[krcpasb_initial_alloc_failure]?是?內部內存分配失敗

  • 錯誤位置在 Oracle kernel 模塊?krcp*?系列,屬于 change tracking 內部模塊

  • 后續的?進程中止、系統狀態轉儲、實例終止?都是級聯故障結果

4.3是否命中 Oracle 官方 Bug?

查MOS 很快找到和這個報錯和BUG??Bug 32428097?高度一致!

Bug 32428097 - ORA-600 [krcpasb_initial_alloc_failure] during CTWR startup

說明

  • Oracle 19.x 在使用 change tracking 時,CTWR 在啟動期間分配內存失敗,觸發 ORA-04031 + ORA-00600 + 實例崩潰。

  • 這是 Oracle 確認的回歸問題(Regression Bug)在19.13修復。

  • 常見于:

    • 大量數據變更(如恢復、測試環境還原)

    • large pool 不足

    • 某些版本升級后首次啟用 change tracking

4.4解決方案

暫時關閉block change track

ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;

5.總結

截止至2025年4月16日 Oracle19C已經更新至19.27,我認為至少在未來五年內,19c仍然會是主力版本;當然拉如果沒有遭遇BUG,理論上可以不打補丁的,但是為了系統的穩定,仍然建議將19C升級至19.20+ (保守點19.15+)

附錄oracle各版本支持時間線。

參考文檔:

ORA-04031: unable to allocate 12312 bytes of shared memory ("shared pool","unknown object","KKSSP^1489","kglseshtTable") (Doc ID 2923103.1)

Bug 32428097 - BCT: CTWR crashes during "_bct_public_dba_buffer_size" reset with ORA-00600 [krcpasb_initial_alloc_failure] & ORA-4031 (Doc ID 32428097.8)

Release Schedule of Current Database Releases (Doc ID 742060.1)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/77409.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/77409.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/77409.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2025年Q1數據安全政策、規范、標準以及報告匯總共92份(附下載)

一、政策演進趨勢分析 &#xff08;一&#xff09;國家級政策新動向 數據要素市場建設 數據流通安全治理方案&#xff08;重點解析數據確權與交易規則&#xff09; 公共數據授權運營規范&#xff08;創新性提出分級授權機制&#xff09; 新興技術安全規范 人工智能安全標準…

ERR_PNPM_DLX_NO_BIN No binaries found in tailwindcss

場景復現&#xff1a; 最近在vue3項目中安裝了tailwindcss&#xff0c;但是它默認幫我安裝的版本是4XX的&#xff0c;導致我執行 npx tailwindcss init -p報錯了。 解決方案&#xff1a; 更改tailwindcss的版本為3 pnpm add -D tailwindcss3再次執行生成tailwindcss的初始…

第 4 篇:Motion 拖拽與手勢動畫(交互篇)—— 打造直覺化交互體驗

Framer Motion 的拖拽與手勢系統讓實現復雜交互變得異常簡單。本文將深入解析核心 API&#xff0c;并通過實戰案例演示如何創造自然流暢的交互體驗。 &#x1f9f2; 拖拽動畫基礎 1. 啟用拖拽 使用 drag 屬性即可開啟拖拽能力。支持的值有&#xff1a;true&#xff08;全方向…

CF148D Bag of mice

題目傳送門 思路 狀態設計 設 d p i , j dp_{i, j} dpi,j? 表示袋中有 i i i 個白鼠和 j j j 個黑鼠時&#xff0c; A A A 能贏的概率。 狀態轉移 現在考慮抓鼠情況&#xff1a; A A A 抓到白鼠&#xff1a;直接判 A A A 贏&#xff0c;概率是 i i j \frac{i}{i j}…

BT1120 BT656驅動相關代碼示例

前些年做視頻輸出項目的時候用過bt1120 tx與rx模塊&#xff0c;現將部分代碼進行記錄整理。代碼功能正常&#xff0c;可正常應用。 1. rx部分&#xff1a; /****************************************************************************** Copyright (C) 2021,All rights …

服務器簡介(含硬件外觀接口介紹)

服務器&#xff08;Server&#xff09;是指提供資源、服務、數據或應用程序的計算機系統或設備。它通常比普通的個人計算機更強大、更可靠&#xff0c;能夠長時間無間斷運行&#xff0c;支持多個用戶或客戶端的請求。簡單來說&#xff0c;服務器就是專門用來存儲、管理和提供數…

SQL-exists和in核心區別?、 性能對比?、適用場景?

EXISTS和IN的基本區別。IN用于檢查某個值是否在子查詢返回的結果集中,而EXISTS用于檢查子 查詢是否至少返回了一行數據。通常來說,EXISTS在子查詢結果集較大時表現更好,因為一旦找 到匹配項就會停止搜索,而IN則需要遍歷整個結果集。 在 SQL 中,EXISTS 和 IN 都可以用于…

煥活身心,解鎖健康養生新方式

健康養生是一門科學&#xff0c;更是一種生活智慧。從日常點滴做起&#xff0c;才能筑牢健康根基。? 飲食上&#xff0c;應遵循 “食物多樣&#xff0c;谷類為主” 原則。多攝入新鮮蔬果&#xff0c;它們富含維生素與膳食纖維&#xff0c;有助于增強免疫力&#xff1b;選擇全…

QT+Cmake+mingw32-make編譯64位的zlib-1.3.1源碼成功過程

由于開源的軟件zlib庫是很多相關庫libpng等基礎庫&#xff0c;因此掌握使用mingw編譯器來編譯zlib源碼的步驟十分重要。本文主要是通過圖文模式講解完整的qtcmakezlib源碼搭建和測試過程&#xff0c;為后續的其他源碼編譯環境搭建做基礎準備。 詳細步驟如下&#xff1a; 1、下…

健身會員管理系統(ssh+jsp+mysql8.x)含運行文檔

健身會員管理系統(sshjspmysql8.x) 對健身房的健身器材、會員、教練、辦卡、會員健身情況進行管理&#xff0c;可根據會員號或器材進行搜索&#xff0c;查看會員健身情況或器材使用情況。

【langchain4j】Springboot如何接入大模型以及實戰開發-AI問答助手(一)

langchain4j介紹 官網地址&#xff1a;https://docs.langchain4j.dev/get-started langchain4j可以說是java和spring的關系&#xff0c;spring讓我們開發java應用非常簡單&#xff0c;那么langchain4j對應的就是java開發ai的 “Spring” 他集成了AI應用的多種場景&#xff0c…

平均池化(Average Pooling)

1. 定義與作用?? ??平均池化??是一種下采樣操作&#xff0c;通過對輸入區域的數值取??平均值??來壓縮數據空間維度。其核心作用包括&#xff1a; ??降低計算量??&#xff1a;減少特征圖尺寸&#xff0c;提升模型效率。??保留整體特征??&#xff1a;平滑局部…

【dify實戰】chatflow結合deepseek實現基于自然語言的數據庫問答、Echarts可視化展示、Excel報表下載

dify結合deepseek實現基于自然語言的數據庫問答、Echarts可視化展示、Excel報表下載 觀看視頻&#xff0c;您將學會 在dify下如何快速的構建一個chatflow&#xff0c;來完成數據分析工作&#xff1b;如何在AI的回復中展示可視化的圖表&#xff1b;如何在AI 的回復中加入Excel報…

加一:從簡單問題到復雜邊界的深度思考

加一&#xff1a;從簡單問題到復雜邊界的深度思考 引言 在算法世界里&#xff0c;有些問題看似簡單&#xff0c;實則暗藏玄機&#xff0c;其中“加一”問題就是一個典型例子。所謂“加一”&#xff0c;通常指的是給一個由數字組成的數組表示的整數加一&#xff0c;這聽起來簡…

PointCore——利用局部全局特征的高效無監督點云異常檢測器論文與算法解讀

概述 三維點云異常檢測旨在從訓練集中檢測出異常數據點&#xff0c;是工業檢測、自動駕駛等眾多應用的基礎。然而&#xff0c;現有的點云異常檢測方法通常采用多個特征存儲庫來充分保留局部和全局特征表示&#xff0c;這帶來了高昂的計算成本以及特征之間的不匹配問題。為解決…

桌面應用UI開發方案

一、基于 Web 技術的跨平臺方案 Electron Python/Go 特點&#xff1a; 技術棧&#xff1a;前端使用 HTML/CSS/JS&#xff0c;后端通過 Node.js 集成 Python/Go 模塊或服務。 跨平臺&#xff1a;支持 Windows、macOS、Linux 桌面端&#xff0c;適合開發桌面應用。 生態成熟&…

redis 配置日志和數據存儲位置

Redis配置日志和數據存儲位置 介紹 Redis是一個開源的高性能鍵值存儲數據庫&#xff0c;常用于緩存、消息隊列和實時分析等場景。在使用Redis時&#xff0c;我們需要配置日志和數據存儲位置&#xff0c;以便更好地管理和監控Redis的運行狀態。本文將介紹如何配置Redis的日志和數…

OSI七層網絡模型詳解

OSI七層網絡模型詳解 OSI&#xff08;開放系統互連&#xff09;模型是國際標準化組織&#xff08;ISO&#xff09;提出的網絡通信框架&#xff0c;旨在規范不同系統間的通信。它分為七層&#xff0c;每層承擔特定功能&#xff0c;協同實現端到端的數據傳輸。 1. 物理層&#x…

Springboot 學習 之 logback-spring.xml 日志打印

文章目錄 1. property2. springProperty3. appender4. logger4.1. 通過包路徑控制日志4.2. 通過類名控制日志4.3. 按自定義 Logger 名稱控制日志 5. root6. springProfile SpringBoot 項目中可以通過自定義 logback-spring.xml 中各項配置&#xff0c;實現日志的打印控制 1. p…

Gradle與Idea整合

文章目錄 1. Groovy 簡介2. Groovy 安裝[非必須]3. 在idea中創建java工程 1. Groovy 簡介 在某種程度上&#xff0c;Groovy可以被視為Java的一種腳本化改良版,Groovy也是運行在JVM上&#xff0c;它可以很好地與Java代碼及其相關庫進行交互操作。它是一種成熟的面向對象編程語言…