VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

闪回/闪回查询

功能描述

在使用表的过程中,可能会出现误删,或者误改数据,此时闪回查询可以通过语句找回INSERT,UPDATE,DELETE操作之前的数据,看到修改表数据前或者删除数据前的数据装填,支持指定时间的闪回查询操作。

注意事项

  • track_commit_timestamp设置为on。

  • autovacuum设置为off。

  • 数据表truncate后无法闪回。

  • 闪回时间点的数据没有被autocacuum回收。

使用步骤

1、修改postgresql.conf,添加参数max_flashback_time,开启闪回功能,并重启数据库。

例如设置max_flashback_time=60,即最多允许闪回至60秒之内。
vim postgresql.conf
vb_ctl reatart

2、开启自动提交。

\set AUTOCOMMIT on
\echo :AUTOCOMMIT

3、创建测试表并查询表中数据。

create table t_a (col1 int, col2 char(20),col3 char(20));
insert into t_a values(1,'aa','a1');
insert into t_a values(2,'bb','b1');
insert into t_a values(3,'cc','c1');
SELECT * FROM t_a;

返回结果为:

 col1 |         col2         |         col3         
------+----------------------+----------------------
    1 | aa                   | a1                  
    2 | bb                   | b1                  
    3 | cc                   | c1                  
(3 rows)

4、修改表中的数据并查询结果。

select pg_sleep(17);
insert into t_a values (4,'dd','d4');
SELECT * FROM t_a;

返回结果为:

col1 |         col2         |         col3         
------+----------------------+----------------------
    1 | aa                   | a1                  
    2 | bb                   | b1                  
    3 | cc                   | c1                  
    4 | dd                   | d4                  
(4 rows)

5、进行闪回查询。

select *  from t_a FLASHBACK(15);
 col1 |         col2         |         col3         
------+----------------------+----------------------
    1 | aa                   | a1                  
    2 | bb                   | b1                  
    3 | cc                   | c1                  
(3 rows)

6、将表闪回至15秒之前。

select pg_flashback('t_a',15);
select *  from t_a;
 col1 |         col2         |         col3         
------+----------------------+----------------------
    1 | aa                   | a1                  
    2 | bb                   | b1                  
    3 | cc                   | c1                  
(3 rows)