PURGE
功能描述
使用PURGE语句可以实现如下功能:
- 从回收站中清理表或索引,并释放对象相关的全部空间。
- 清理回收站。
- 清理回收站中指定表空间的对象。
关于回收站功能的更多描述请参考备份恢复中的回收站。
注意事项
清除操作支持:清除表(PURGE TABLE)、清除索引(PURGE INDEX)、清空回收站(PURGE RECYCLEBIN)。
执行PURGE操作的权限要求如下:
- PURGE TABLE:用户必须是表的所有者,且用户必须拥有表所在模式的USAGE权限,系统管理员默认拥有此权限。
- PURGE INDEX:用户必须是索引的所有者,用户必须拥有索引所在模式的USAGE权限,系统管理员默认拥有此权限。
- PURGE RECYCLEBIN:普通用户只能清理回收站中当前用户拥有的对象,且用户必须拥有对象所在模式的USAGE权限,系统管理员默认可以清理回收站所有对象。
使用回收站功能需要用户设置以下两个GUC参数,它们均属于SIGHUP类型参数,请参考重设参数表1中对应的设置方法进行设置。
GUC参数enable_recyclebin需设置为on,表示启用回收站。
GUC参数recyclebin_retention_time用于设置回收站对象保留时间,超过该时间的回收站对象将被自动清理;单位为秒(s)。
语法格式
PURGE { TABLE [schema_name.]table_name
| INDEX index_name
| RECYCLEBIN
}
参数说明
[ schema_name. ]
模式名。
TABLE [ schema_name. ] table_name
清空回收站中指定的表。
INDEX index_name
清空回收站中指定的索引。
RECYCLEBIN
清空回收站中的所有对象。
示例
前置条件:开启回收站功能并设置回收站对象保留时间为10min(600s)。
ALTER SYSTEM SET enable_recyclebin TO on;
ALTER SYSTEM SET recyclebin_retention_time =600;
示例步骤:
1、创建表空间reason_table_space。
CREATE TABLESPACE REASON_TABLE_SPACE1 RELATIVE location 'tablespace/tsp_reason1';
2、在表空间创建表reason_t1。
CREATE TABLE reason_t1
(
r_reason_sk integer,
r_reason_id character(16),
r_reason_desc character(100)
) tablespace reason_table_space1;
3、在表空间创建表reason_t2。
CREATE TABLE reason_t2
(
r_reason_sk integer,
r_reason_id character(16),
r_reason_desc character(100)
) tablespace reason_table_space1;
4、在表空间创建表reason_t3。
CREATE TABLE reason_t3
(
r_reason_sk integer,
r_reason_id character(16),
r_reason_desc character(100)
) tablespace reason_table_space1;
5、对表reason_t1创建索引。
CREATE INDEX index_t1 on reason_t1(r_reason_id);
6、执行删除操作。
DROP TABLE reason_t1;
DROP TABLE reason_t2;
DROP TABLE reason_t3;
7、查看回收站。
SELECT rcyname,rcyoriginname,rcytablespace FROM GS_RECYCLEBIN;
返回结果为:
rcyname | rcyoriginname | rcytablespace
-----------------------+---------------+---------------
BIN$16409$2CEE988==$0 | reason_t1 | 16408
BIN$16412$2CF2188==$0 | reason_t2 | 16408
BIN$16415$2CF2EC8==$0 | reason_t3 | 16408
BIN$16418$2CF3EC8==$0 | index_t1 | 0
(4 rows)
8、PURGE清除表。
PURGE TABLE reason_t3;
9、查看回收站内容。
SELECT rcyname,rcyoriginname,rcytablespace FROM GS_RECYCLEBIN;
返回结果为:
rcyname | rcyoriginname | rcytablespace
-----------------------+---------------+---------------
BIN$16409$2CEE988==$0 | reason_t1 | 16408
BIN$16412$2CF2188==$0 | reason_t2 | 16408
BIN$16418$2CF3EC8==$0 | index_t1 | 0
(3 rows)
10、PURGE清除索引。
PURGE INDEX index_t1;
11、查看回收站内容。
SELECT rcyname,rcyoriginname,rcytablespace FROM GS_RECYCLEBIN;
返回结果为:
rcyname | rcyoriginname | rcytablespace
-----------------------+---------------+---------------
BIN$16409$2CEE988==$0 | reason_t1 | 16408
BIN$16412$2CF2188==$0 | reason_t2 | 16408
(2 rows)
12、PURGE清除回收站所有对象。
PURGE recyclebin;
13、查看回收站内容。
SELECT rcyname,rcyoriginname,rcytablespace FROM GS_RECYCLEBIN;
返回结果如下:
rcyname | rcyoriginname | rcytablespace
-----------------------+---------------+---------------
(0 rows)