【OceanBase诊断调优】—— 转储错误(错误代码 4138/ORA-01555)

2024-05-14 12:20

本文主要是介绍【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 的数据。这是由于多版本数据需要时间来填充。

这篇关于【OceanBase诊断调优】—— 转储错误(错误代码 4138/ORA-01555)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/988735

相关文章

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

JVM内存调优原则及几种JVM内存调优方法

JVM内存调优原则及几种JVM内存调优方法 1、堆大小设置。 2、回收器选择。   1、在对JVM内存调优的时候不能只看操作系统级别Java进程所占用的内存,这个数值不能准确的反应堆内存的真实占用情况,因为GC过后这个值是不会变化的,因此内存调优的时候要更多地使用JDK提供的内存查看工具,比如JConsole和Java VisualVM。   2、对JVM内存的系统级的调优主要的目的是减少

JVM 常见异常及内存诊断

栈内存溢出 栈内存大小设置:-Xss size 默认除了window以外的所有操作系统默认情况大小为 1MB,window 的默认大小依赖于虚拟机内存。 栈帧过多导致栈内存溢出 下述示例代码,由于递归深度没有限制且没有设置出口,每次方法的调用都会产生一个栈帧导致了创建的栈帧过多,而导致内存溢出(StackOverflowError)。 示例代码: 运行结果: 栈帧过大导致栈内存

【经验交流】修复系统事件查看器启动不能时出现的4201错误

方法1,取得『%SystemRoot%\LogFiles』文件夹和『%SystemRoot%\System32\wbem』文件夹的权限(包括这两个文件夹的所有子文件夹的权限),简单点说,就是使你当前的帐户拥有这两个文件夹以及它们的子文件夹的绝对控制权限。这是最简单的方法,不少老外说,这样一弄,倒是解决了问题。不过对我的系统,没用; 方法2,以不带网络的安全模式启动,运行命令行,输入“ne

ora-01017 ora-02063 database link,oracle11.2g通过dblink连接oracle11.2g

错误图示: 问题解决 All database links, whether public or private, need username/password of the remote/target database. Public db links are accessible by all accounts on the local database, while private

SQL2005 性能监视器计数器错误解决方法

【系统环境】 windows 2003 +sql2005 【问题状况】 用户在不正当删除SQL2005后会造成SQL2005 性能监视器计数器错误,如下图 【解决办法】 1、在 “开始” --> “运行”中输入 regedit,开启注册表编辑器,定位到 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVer

ssm 之事务管理出现错误

JDBC Connection will not be managed by Spring 项目采用的是分布式架构,分别有controller,service,solr三个服务器,之间通过dubbo进行调用,经过测试发现事务配置完以后不能通过spring进行管理,其中两条insert和一条update语句都执行完毕,异常并没有使得事务进行回滚,通过调取debug日志发现“JDBC Conn

Unstructured cannot write mode RGBA as JPEG 错误解决

Unstructured cannot write mode RGBA as JPEG 错误解决 0. 错误详细1. 解决方法 0. 错误详细 Image Extraction Error: Skipping the failed imageTraceback (most recent call last):File "/root/miniconda3/envs/learn-y

收藏:解决 pip install 出现 error: subprocess-exited-with-error 错误的方法

在使用 pip 安装 Python 包时,有时候会遇到 error: subprocess-exited-with-error 错误。这种错误通常是由于 setuptools 版本问题引起的。本文将介绍如何解决这一问题 当你使用 pip install 安装某个 Python 包时,如果 setuptools 版本过高或过低,可能会导致安装过程出错,并出现类似以下错误信息:error: subpr

插件:清理maven错误缓存.bat

插件:https://pan.baidu.com/s/1nHIxHoo1C4MvFlW7QbZe5Q?pwd=7zenhttps://pan.baidu.com/s/1nHIxHoo1C4MvFlW7QbZe5Q?pwd=7zen没错误缓存时: 有错误缓存时: