回收站
功能描述
回收站功能,用户通过该功能可以从回收站中闪回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;