oceanbase可以闪回delete、truncate等操作吗

【产品名称】oceanbase

【产品版本】3.1.3

【问题描述】oceanbase可以闪回drop操作,针对delete、truncate、update等误操作可以闪回吗。如果可以,如何操作

闪回查询(Flashback Query)允许用户查询某个历史版本的数据。OceanBase 数据库提供了如下语法进行查询:

  • Oracle 模式:
    AS OF SCN
     和 
    AS OF TIMESTAMP
  • MySQL 模式:
    AS OF SNAPSHOT

用户配置系统变量 

undo_retention
 后,可以使用 Flashback Query 查询当前时间 
T
 到 
T - undo_retention
 时间范围内的任意多版本。如果用户保留了 Restore Point,则可以查询 Restore Point 点对应的数据版本。此外,OceanBase 数据库还支持查询集群合并点的数据。


undo retension
 字面意思是 Undo 的保留位点,即从当前时间回溯多长时间的 Undo 日志是保留下来的。对于 OceanBase 数据库来说,是将该段时间的所有数据多版本保留下来。可以通过系统变量 
undo_retention
 进行设置,默认单位为秒。



OceanBase 支持回收站功能,通过回收站可以闪回已删除的表。默认回收站是开启的,回收站是否开启由租户变量 recyclebin 控制。

开启/关闭回收站的语法是:

set global recyclebin = ON | OFF ;

修改回收站的开启状态后,只对后续新连接会话生效。

1 个赞

以上操作在当前版本有具体示例吗, 比如查询某一时间版本具体语法, 查询某个restore_point的具体示例等,我这样执行是会报错:

SELECT * FROM test1 AS OF SNAPSHOT 1649382574148810;

SQL Error [1064] [42000]: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'SNAPSHOT 1649382574148810' at line 1

1 个赞

社区版不支持DML的闪回

1 个赞

根据undo_retention的配置查询某个时间点的数据也是不支持的,是吧?

社区版不支持DML的闪回 。再等等吧

不支持

应该还不支持

https://open.oceanbase.com/docs/observer-cn/V3.1.2/10000000000015947

社区版的话,目前好像还不支持。

666