VastbaseG100

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

Menu

回收站

功能描述

回收站功能,用户通过该功能可以从回收站中闪回TRUNCATE或DROP的表对象,将数据恢复到错误操作前,大大提高了用户数据的可靠性。

语法格式

  • 清空回收站中指定对象。

    PURGE { TABLE table_name | RECYCLEBIN }
    
  • 从回收站中恢复对象。

    FLASHBACK TABLE [ schema_name. ] table_name [, [ schema_name. ] table_name ]...
    TO BEFORE { DROP [ RENAME TO table_newname ]  |  TRUNCATE }
    

参数说明

  • table_name:要清空的回收站中,表名称可以是dba_recyclebin中的object_name,也可以是original_name。

  • schema_name:回收站中要闪回表的模式名,默认为回收站模式名称。

  • table_name:回收站中要闪回的表,可以一次性闪回多个表,表与表之间使用逗号分隔。

  • table_newname:重命名的表名称。

注意事项

  • 回收站功能相关参数:

    • enable_recyclebin:
    • on:启用回收站功能。
    • off:关闭回收站功能。

    • recyclebin_retention_time:设置回收站对象保留时间,超过该时间的回收站对象将被自动清理,默认为900秒。

  • 回收站中对象名称修改为以BIN$开头,在数据库中唯一的名称,命名方式如下:

    BIN${databasId}{classId}{objId}${XLogRecPtr}==$0
    

参数说明:

  • databasId:数据库oid。
  • classId:pg_class的class id。
  • objId:对象的oid。
  • XLogRecPtr:XLog当前可用的位置。

  • 系统视图及同义词。

    • dba_recyclebin:保存数据库中所有回收站的信息。
    • user_recyclebin:保存当前用户的回收站信息,可使用同义词recyclebin访问。

示例

1、配置参数文件:postgresql.conf增加参数配置并重启数据库。

enable_recyclebin=on
recyclebin_retention_time=900

2、创建一个表part_test,并创建索引插入数据。

CREATE TABLE part_test
 (
   c1 int,
 c2 text
 ) partition by range (c1)
 (
   partition p1 values less than (1000),
   partition p2 values less than (2000),
   partition p3 values less than (3000),
   partition p4 values less than (4000),
   partition p5 values less than (5000)
 );
create index il_part_test on part_test(c1) local;
create index ig_part_test on part_test(c2) global;
insert into part_test values (1, 'test01');

3、删除表part_test。

drop table part_test;

4、查询回收站。

select OBJECT_NAME,OPERATION from dba_recyclebin order by OBJECT_NAME;

结果返回如下:

     object_name     | operation
-----------------------------+-----------
 BIN$400E4EBA13C$43BBC10==$0 | DROP
 BIN$400E4EBA154$43BCE58==$0 | DROP
 BIN$400E4EBA15A$43BC418==$0 | DROP
(3 rows)

5、从回收站中恢复表part_test。

flashback table part_test to before drop;

当显示如下信息,则表示执行成功。

TimeCapsule Table

6、查询数据验证。

select * from part_test;

结果返回如下:

c1 |  c2
----+--------
 1 | test01
(1 row)

7、清空回收站。

purge recyclebin;