VastbaseG100

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

Menu

回收站

功能描述

Vastbase G100支持通过回收站机制还原回收站中记录的表的物理文件。即从回收站中闪回已经TRUNCATE或者DROP的表对象,将数据恢复到错误操作前。

使用回收站功能需要用户设置以下两个GUC参数,它们均属于SIGHUP类型参数,请参考重设参数表1中对应的设置方法进行设置。

  • GUC参数enable_recyclebin需设置为on,表示启用回收站。

  • GUC参数recyclebin_retention_time用于设置回收站对象保留时间,超过该时间的回收站对象将被自动清理;单位为秒(s)。

注意事项

  • 闪回drop/truncate支持ASTORE和USTORE存储引擎。

  • 执行闪回DROP需要用户具有如下权限:

    • 用户必须具有垃圾对象所在schema的create和usage权限。

    • 用户必须是schema的所有者或者是垃圾对象的所有者。

  • 执行闪回TRUNCATE需要用户具有如下权限:

    • 用户必须具有垃圾对象所在schema的create和usage权限;

    • 用户必须是schema的所有者或者是垃圾对象的所有者;

    • 用户必须具有垃圾对象的TRUNCATE权限。

  • 恢复DROP表时,只恢复基表名,其他子对象名均保持回收站对象名。用户可根据需要,执行DDL命令手工调整子对象名。

  • 不适用闪回drop/truncate功能的场景或表:

    • 系统处于维护态(参数xc_maintenance_mode设置为on)或升级场景;

    • 多对象删除场景:DROP/TRUNCATE TABLE命令同时指定多个对象;

    • 系统表、列存表、内存表、DFS表、全局临时表、本地临时表、UNLOGGED表、序列表、hashbucket表。

    • 闪回点和当前点之间执行过修改表结构或影响物理结构的语句,将会导致闪回失败。

  • 回收站中对象名称(rcyname)以BIN$开头,在数据库系统中是唯一的名称,命名方式如下:

    BIN${unique_id}${oid}==$0
    

    其中各参数含义如下:

    • unique_id为最多16字符唯一标识。

    • oid为对象标识符。

语法格式

  • 从回收站中恢复被DROP的表:

    { TIMECAPSULE | FLASHBACK } TABLE { table_name } TO BEFORE DROP [RENAME TO new_tablename]
    
  • 从回收站中恢复被TRUNCATE的表:

    { TIMECAPSULE | FLASHBACK } TABLE { table_name } TO BEFORE TRUNCATE
    
  • 清空回收站中的指定对象或者所有对象:

    PURGE { TABLE [ schema_name. ] table_name | RECYCLEBIN }
    

参数说明

  • TIMECAPSULE | FLASHBACK

    表示使用闪回功能。

    在进行基于回收站机制的闪回功能时,TIMECAPSULE和FLASHBACK是完全等价的。

  • table_name

    进行闪回操作的对象名称。可以是用户创建表时指定的表名,也可以是对象删除时数据库分配的系统生成名称(rcyname)。

    回收站中系统生成的对象名称是唯一的。因此,如果指定系统生成名称,可以从系统表GS_RECYCLEBIN中查到。支持使用如下语句查看回收站中的内容:

    select * from gs_recyclebin;
    
  • TO BEFORE DROP

    使用这个子句检索回收站中已删除的表及其子对象。

    如果闪回时指定了用户指定的表名称,且回收站中包含多个同名的对象,那么数据库会检索回收站中最近移动的对象。如果想要检索更早版本的表,建议用户指定表的系统生成名称进行恢复。

  • RENAME TO

    为从回收站中检索的表指定一个新名称。

  • TO BEFORE TRUNCATE

    闪回到TRUNCATE之前。

  • PURGE TABLE [ schema_name. ] table_name

    清空回收站中指定的表。

  • PURGE RECYCLEBIN

    表示清空回收站中的所有对象。

示例

从回收站中恢复内容的示例参见:闪回恢复->闪回DROP/TRUNCATE的示例

1、清除回收站所有对象:

PURGE recyclebin;

2、查看回收站内容:

SELECT rcyname,rcyoriginname,rcytablespace FROM GS_RECYCLEBIN;

返回结果如下,表示已经清空了回收站对象。

        rcyname        | rcyoriginname | rcytablespace 
-----------------------+---------------+---------------
(0 rows)