【OceanBase診斷調優】—— 轉儲錯誤(錯誤代碼 4138/ORA-01555)

當讀事務很長時,租戶進行轉儲會報 4138/ORA-01555 錯誤。本文介紹該錯誤的處理方法。

適用版本

OceanBase 數據庫 V2.X 及以后的版本

問題現象

當讀事務很長,租戶進行轉儲時會出現以下錯誤。

Oracle 租戶:
ORA-01555:snapshot too old
MySQL 租戶:
ERROR 4138 ( HY000 ): Request to read too old versioned data

對應錯誤碼,日志中會記錄以下信息,表示無法找到指定版本的歷史數據。

[2019-05-14 14:30:05.533606] WARN [STORAGE] get_inc_read_tables (ob_table_store.cpp:592) [98811][1313][YA4110AF40426-000588D011D3DED2] [lt=12] [dc=0] not table found for specified version((ret=-4138, major_sstable=0x7f9b8326a140, snapshot_version=1557815286383342, *this={this:0x7f9f4775f290, pkey:{tid:1110506744528557, partition_id:0, part_cnt:0}, table_id:1110506744528557, uptime:1557815401424782, table_count:2, start_pos:0, inc_pos:1, is_ready_for_read:true, replay_tables:[{table_type:1, pkey:{tid:1110506744528557, partition_id:0, part_cnt:0}, table_id:1110506744528557, trans_version_range:{multi_version_start:1557805624036243, base_version:0, snapshot_version:1557805624036243}, version:"41-0-0"}, {table_type:4, pkey:{tid:1110506744528557, partition_id:0, part_cnt:0}, table_id:1110506744528557, trans_version_range:{multi_version_start:1557815324038719, base_version:1557805624036243, snapshot_version:1557815324038719}, version:"0-0-0"}], [{i:0, type:1, partition_id:0, version:"41-0-0", version_range:{multi_version_start:1557805624036243, base_version:0, snapshot_version:1557805624036243}, ref:2}, {i:1, type:4, partition_id:0, version:"0-0-0", version_range:{multi_version_start:1557815324038719, base_version:1557805624036243, snapshot_version:1557815324038719}, ref:2}, ]}, *last_memtable={ObITable:{this:0x7f9ae6e669e0, key:{table_type:0, pkey:{tid:1110506744528557, partition_id:0, part_cnt:0}, table_id:1110506744528557, trans_version_range:{multi_version_start:1557815324038719, base_version:1557815324038719, snapshot_version:9223372036854775807}, version:"0-0-0"}, ref_cnt:2}, timestamp:1557815324045746, active_trx_count:0, state:0, max_schema_version:1557815227050056, write_ref_cnt:0, local_allocator:{ListHandle:{freeze_stat:1, id:62, clock:64975960024}, host:0x7fa2e58316f8, arena_handle:{allocated:376315264}}})

可能原因

OceanBase 數據庫轉儲的數據會保留多個版本的歷史數據行,您可以通過?undo_retention?來控制轉儲中保留的多版本數據范圍。undo_retention 默認為 0(單位為秒),表示僅保留當前最新版本的數據。

這些多版本信息可以用來構造一致性讀以及用于一系列的閃回,如果閃回請求的時間點在開啟?undo_retention?前,或者閃回請求的時間點距離現在的時間大于?undo_retention?的設置,則會出現該問題。

有關?undo_retention的詳細信息,參見《OceanBase 數據庫 參考指南》中的?系統變量?章節。

解決方式

可以通過調整?undo_retention?的值來緩解該問題。

obclient> SET GLOBAL undo_retention=7200;

該配置表示開啟多版本轉儲,并且轉儲文件保留 7200 秒以內的多版本行數據,這部分數據會在多次轉儲中保留。

注意

租戶開啟多版本轉儲后,大版本合并會保留對應增量轉儲文件,但 major SSTable 中不會存放多版本數據。避免對該參數設置過大,該參數過大時可能導致合并超時。

注意事項

多版本查詢的生效時間在設置?undo_retention?后,并不能立刻實現多版本回溯到?undo_retention?之內的任何時間。例如在時間點 T1 設置了?undo_retention=900s,此時并不能回溯任何 900s 內的版本;需要等到時間點 T2 = T1 + 900s 后,才可以查詢 T1~T2 的數據。這是由于多版本數據需要時間來填充。

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

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

相關文章

Keil調用跟蹤

調試時程序卡在一個位置,恰巧這個函數被很多地方調用,需要知道上一步在哪。 程序暫停后, 查看調用堆棧,點擊Keil菜單欄中的“View”,然后選擇“Call Stack”(調用堆棧)選項。這將顯示當前的調用…

市場活動系統搭建

精細差異化運營在今天的企業越來越普遍,運營驅動占據了業務經營的主導地位。各種營銷活動,幫助我們差異化運營、激發潛在客戶、帶動連帶消費、增加銷售額度、提升用戶增長、實現品牌宣傳。 天貓、京東上有各種各樣的促銷活動。如:滿減、滿返、…

算法day04

第一題 : 209. 長度最小的子數組 有上題可知,我們會采用雙指針和單調性的思路來解決 我們本題采用左右雙指針從數組的0位置同向前進,所以將此類模型稱為滑塊; 步驟思路如下: 步驟一: 定義所有雙指針都指向…

Prompt提示詞的技巧

Prompt提示詞的技巧 要讓GPT類模型產生最符合我們需求的輸出,我們需要精心設計和調整輸入的提示詞(Prompt)。 1、明確性: 確保你的提示詞清晰、具體。GPT類模型會根據你給出的信息來生成文本,因此,提供詳…

【實踐】使用vscode來debug go程序的嘗鮮

配置 首先,當然得配置好vscode 的go環境, 裝個go插件就基本滿足了 配置 launch.json, 可以配置多個環境的程序啟動參數(很友好) {"version": "0.2.0","configurations": [{"name": &…

ArrayList與LinkedList的區別

一、背景與現狀 在Java編程中,ArrayList和LinkedList都是實現List接口的重要類,用于存儲和操作動態大小的元素集合。兩者在Java集合框架中占據了核心地位,并被廣泛應用于各種軟件項目中。然而,盡管它們都提供了類似的功能&#x…

海外客戶開發渠道有哪些

海外客戶開發是一個多元化的過程,涉及線上與線下多個渠道。以下是一些有效的海外客戶開發渠道: 平臺電商: 利用國際B2B電商平臺,如阿里巴巴國際站、 Globalsources、Made-in-China等,這些平臺擁有龐大的國際買家流量&a…

STM32學習和實踐筆記(27):USART串口通信實驗程序

本實驗所要實現的功能是:STM32F1通過USART1實現與PC機對話,STM32F1的USART1收到PC機發來的數據后原封不動的返回給PC機顯示。同時使用D1指示燈不斷閃爍提示系統正常運行。程序框架如下: (1)初始化USART1,并…

linux 開發常用命令

一、查看 相關服務 1.查看 數據庫 相關服務 這里以mysql 和 redis 為例 (1)使用 ps 命令 執行命令會列出,“mysql”、“redis”名稱的進程 ps aux | grep redis 示例: rootspray:~# ps aux | grep mysql mysql 1609816 0.…

Flutter 中的 FilterChip 小部件:全面指南

Flutter 中的 FilterChip 小部件:全面指南 在 Flutter 中,FilterChip 是一種特殊類型的 Chip,用于呈現過濾選項。用戶可以通過點擊 FilterChip 來應用相應的過濾條件,這在需要對列表或集合進行篩選的場景中非常有用,如…

51單片機實現俄羅斯方塊游戲編程

一、設計要求 (1)利用51單片機,設計一款俄羅斯方塊游戲,完成硬件電路的開發和程序的編寫調試; (2)采用LCD12864液晶作為游戲運行界面; (3)利用按鍵輸入靈活…

Spring Boot集成dubbo快速入門Demo

1.什么是dubbo? Apache Dubbo 是一款微服務開發框架,它提供了 RPC通信 與 微服務治理 兩大關鍵能力。這意味著,使用 Dubbo 開發的微服務,將具備相互之間的遠程發現與通信能力, 同時利用 Dubbo 提供的豐富服務治理能力…

HTML飄落的花瓣

目錄 寫在前面 HTML???????簡介 完整代碼 代碼分析 系列推薦 寫在最后 寫在前面 本期小編給大家推薦HTML實現的飄落的花瓣,無需安裝軟件,直接下載即可打開~ HTML???????簡介 HTML(Hypertext Markup Language&#xff…

探索Playwright:Python下的Web自動化測試革命

在如今這個互聯網技術迅速發展的時代,web應用的質量直接關系著企業的聲譽和用戶的體驗。因此,自動化測試成為了保障軟件質量的重要手段之一。今天,我將帶大家詳細了解一款在測試領域大放異彩的神器——Playwright,并通過Python語言…

一覺醒來 AI科技圈發生的大小事兒 05月13日

📳博弈論讓 AI 更加正確、高效,LLM 與自己競爭 研究團隊設計了共識博弈,通過讓語言模型的生成器和判別器相互博弈來提高模型的準確性和內部一致性。這種方法不需要對基礎模型進行訓練或修改,可以在筆記本電腦上快速執行。研究結果…

基于微信小程序+JAVA Springboot 實現的【停車場小程序】app+后臺管理系統 (內附設計LW + PPT+ 源碼+ 演示視頻 下載)

項目名稱 項目名稱: 停車場微信小程序的設計與實現 在當前信息技術飛速發展的背景下,停車場微信小程序的開發成為了一個創新的解決方案,旨在提高停車場管理的效率和用戶的停車體驗。本項目通過深入分析現有停車場管理系統的不足&#xff0c…

內存屏障 - LINUX KERNEL MEMORY BARRIERS 上 與 下

內存屏障(Memory Barrier)是在計算機體系結構中使用的一種同步機制,用于確保在多線程或多核處理器環境中,對共享內存的操作按照預期順序進行。它們通過強制在特定點執行一些指令來規定內存訪問的順序,并防止內存亂序執…

弱網對抗的策略有哪些?

在弱網環境下,數據傳輸可能會面臨丟包、延遲、抖動等問題,因此采取合適的弱網對抗策略對于確保數據傳輸的穩定性和可靠性至關重要。以下是一些常見的弱網對抗策略: 數據壓縮:使用壓縮算法如Gzip、Brotli等對數據進行壓縮&#xf…

Linux-vi/vim

vi是一個文本編輯器,用于撰寫文檔或開發程序 vim是vi的增強版,功能一致,可視化效果更好一些,去鼠標化,編輯更加方便,可定制化 vim編輯器是一個模式化文本編輯工具 vim有三種模式 編輯模式、插入模式和末…

使用PageHelper分頁插件,發現獲取到的total總記錄數量不對,無法獲取到正確的total數量

目錄 1.1、錯誤描述 1.2、解決方案 1.1、錯誤描述 周一在工作中,寫了一個列表分頁的接口,其中使用的是PageHelper分頁依賴,原本想著挺簡單的,也就是使用PageHelper.startPage(pageNum, pageSize);方法就可以了,代碼…