暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

分布式数据库学习Note89:OceanBase社区版中,如何使用闪回查询多数据库版本?

本节主要介绍 OceanBase 数据库的闪回查询多数据库版本的示例和使用限制。

OceanBase 数据库提供了记录级别的闪回查询(Flashback Query)功能,该功能允许用户获取某个历史版本的数据。社区版 OceanBase 数据库支持通过 AS OF SNAPSHOT 语法来查询。

闪回查询支持的方式

OceanBase 数据库当前支持通过以下方式来进行闪回查询:

  • 设置租户级配置项 undo_retention

    当用户设置 undo_retention 后,即可使用闪回查询功能查询当前时间 T 到 T - undo_retention 时间范围内的任意多版本数据。

    本节主要介绍如何通过设置租户级配置项 undo_retention 来进行闪回查询。

注意事项

使用租户级配置项 undo_retention 进行闪回查询时,需要注意以下事项:

  • 假设 undo_retention 设置的时间为 T0,设置后对 T0 之前的数据不起作用,对 T0 之后的数据才起作用。

  • 如果被查询的表已经被删除进了回收站,则需要先将该表从回收站中恢复。

    闪回表的相关操作请参见 闪回回收站对象

  • 假设当前时间为 T,设置 undo_retention 变量后,如果在 T - undo_retention 时间段内有 DDL 操作,系统会用最新的数据字典解释表的数据。对于 DDL 操作发生前产生的数据,被删除的列的数据将变成删除状态,新添加列的数据则设为 Default 值。

设置租户级配置项

在通过租户级配置项 undo_retention 进行闪回查询前,需要先修改 undo_retention 的值。undo_retention 的默认值为 1800,单位为秒。

  1. 租户管理员登录到对应的租户。

  2. 执行以下语句,修改租户级配置项 undo_retention 的值。

    示例如下:

    obclient> ALTER SYSTEM SET undo_retention=900;
    

    更多租户级配置项 undo_retention 的说明信息请参见 undo_retention

闪回查询

假设,当前 undo_retention 变量设置的值为 900,用户有一个表 table1

通过 AS OF SNAPSHOT指定历史时间并闪回查询单表在该历史时间点的状态的数据的示例如下:

obclient> SELECT * FROM table1 AS OF SNAPSHOT 1582807800000000;

其中,1582807800000000 为时间戳,需要您根据待查询的时间自行转换,单位为微秒。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论