返回首页

gbase数据、南大通用产品文档:GBase8cTIMECAPSULE TABLE

更新日期:2024年09月11日

功能描述
在人为操作或应用程序错误时,
使用TIMECAPSULE TABLE 语句恢复可将表恢复到一
个早期状态。
表可以闪回到过去的时间点,这依赖于系统中保存的旧版本数据。此外GBase 8c 数据
库不能恢复到通过DDL 操作改变了表结构的早期状态。
注意事项
TIMECAPSULE TABLE 语句的用法主要分为两大类:闪回旧版本数据和从回收站中闪
回。
TO TIMECAPSULE 和TO CSN 能够将表闪回到过去的某个版本。
回收站记录了DROP 和TRUNCATE 的对象数据。TO BEFORE DROP 和TO BEFORE
TRUNCATE 就是从回收站中闪回。
不支持闪回表的对象类型:系统表、列存表、内存表、DFS 表、全局临时表、本地临
时表、UNLOGGED 表、序列表、hashbucket 表。
闪回点和当前点之间,
执行过修改表结构或影响物理存储的语句
(DDL、
DCL、
VACUUM
FULL),闪回失败。
执行闪回删除需要用户具有如下权限:用户必须具有垃圾对象所在schema 的create 和
usage 权限,并且用户必须是schema 的所有者或者是垃圾对象的所有者。

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
1264
执行闪回TRUNCATE 需要用户具有如下权限:用户必须具有垃圾对象所在schema 的
create 和usage 权限,
并且用户必须是schema 的所有者或者是垃圾对象的所有者,
另外用户
必须具有垃圾对象的TRUNCATE 权限。
不适用闪回drop/truncate 功能的场景或表:
回收站关闭场景:enable_recyclebin = off;
系统处于维护态(xc_maintenance_mode = on)或升级场景;
多对象删除场景:DROP/TRUNCATE TABLE 命令同时指定多个对象;
系统表、列存表、内存表、DFS 表、全局临时表、本地临时表、UNLOGGED 表、序列
表、hashbucket 表。
语法格式
支持回收站闪回,支持从旧版本闪回。
TIMECAPSULE TABLE [ schema.]table_name TO {CSN expr | TIMESTAMP expr | BEFORE
{ DROP [RENAME TO table_name] | TRUNCATE } }
支持闪回查询,查询指定CSN 点或者指定时间点表的内容
IMECAPSULE{ TIMESTAMP | CSN } expression。
参数说明

schema_name
指定模式包含的表。如果缺省,则为当前模式。

table_name
指定表名。

TO CSN
指定要返回表的时间点对应的事务提交序列号(CSN)。expr 必须计算一个数字,代表
有效的CSN。

TO TIMESTAMP

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
1265
指定要返回表的时间点对应的时间戳。expr 必须计算一个过去有效的时间戳(使用
TO_TIMESTAMP 函数将字符串转换为时间类型)
。表将被闪回到指定时间戳大约3 秒内的
时间点。
说明:闪回点过旧时,因旧版本被回收导致无法获取旧版本,会导致闪回失败并
报错:Restore point too old。

TO BEFORE DROP
使用这个子句检索回收站中已删除的表及其子对象。
你可以指定原始用户指定的表的名称,或对象删除时数据库分配的系统生成名称。
回收站中系统生成的对象名称是唯一的。因此,如果指定系统生成名称,
那么数据库检
索指定的对象。使用“select * from gs_recyclebin;”语句查看回收站中的内容。
如果指定了用户指定的名称,
且如果回收站中包含多个该名称的对象,
然后数据库检索
回收站中最近移动的对象。如果想要检索更早版本的表,你可以这样做:
指定你想要检索的表的系统生成名称。
执行TIMECAPSULE TABLE … TO BEFORE DROP 语句,直到你要检索的表。
恢复DROP 表时,只恢复基表名,其他子对象名均保持回收站对象名。用户可根据需
要,执行DDL 命令手工调整子对象名。
回收站对象不支持DML、DCL、DDL 等写操作,不支持DQL 查询操作(后续支持)。
recyclebin_retention_time 配置参数用于设置回收站对象保留时间,
超过该时间的回收站
对象将被自动清理。

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

TRUNCATE
闪回到TRUNCATE 之前。

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
1266
示例
-- 删除表tpcds.reason_t2
DROP TABLE IF EXISTS tpcds.reason_t2;
-- 创建表tpcds.reason_t2
gbase=#CREATE TABLE tpcds.reason_t2
(
r_reason_sk
integer,
r_reason_id
character(16),
r_reason_desc
character(100)
);
--向表tpcds.reason_t2 中插入记录
gbase=# INSERT INTO tpcds.reason_t2 VALUES (1, 'AA', 'reason1'),(2, 'AB',
'reason2'),(3, 'AC', 'reason3');
INSERT 0 3
--清空tpcds.reason_t2 表中的数据
gbase=# TRUNCATE TABLE tpcds.reason_t2;
--查询tpcds.reason_t2 表中的数据
gbase=# select * from tpcds.reason_t2;
r_reason_sk | r_reason_id | r_reason_desc
-------------+-------------+---------------
(0 rows)
--执行闪回TRUNCATE
gbase=# TIMECAPSULE TABLE tpcds.reason_t2 to BEFORE TRUNCATE;
gbase=# select * from tpcds.reason_t2;
r_reason_sk |
r_reason_id
|
r_reason_desc
-------------+------------------+--------------------------------------------
----------------------------------------------------------
1 | AA
| reason1
2 | AB
| reason2
3 | AC
| reason3
(3 rows)
--删除表tpcds.reason_t2
gbase=# DROP TABLE tpcds.reason_t2;
--执行闪回DROP
gbase=# TIMECAPSULE TABLE tpcds.reason_t2 to BEFORE DROP;
TimeCapsule Table

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
1267

背景信息
GBase 8c 部署成功后,在数据库运行的过程中,会遇到各种问题及异常状态。GBase 8c
提供了gs_basebackup 工具做基础的物理备份。
gs_basebackup 的实现目标是对服务器数据库
文件的二进制进行拷贝,其实现原理使用了复制协议。远程执行gs_basebackup 时,需要使
用系统管理员账户。gs_basebackup 当前支持热备份模式和压缩格式备份模式。

gs_basebackup 仅支持主机和备机的全量备份,不支持增量。

gs_basebackup 当前支持热备份模式和压缩格式备份模式。

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
206

若打开增量检测点功能且打开双写,gs_basebackup 也会备份双写文件。

gs_basebackup 在备份包含绝对路径的表空间时,如果在同一台机器上进行备份,
可以通过tablespace-mapping 重定向表空间路径或使用归档模式进行备份。

若pg_xlog 目录为软链接,备份时将不会建立软链接,会直接将数据备份到目的路
径的pg_xlog 目录下。

备份过程中收回用户备份权限,可能导致备份失败或者备份数据不可用。

如果因为网络临时故障等原因导致Server 端无法应答,gs_basebackup 将在最长等
待120 秒后退出。

缺省情况下,在 admin() 和 task() 函数中指定参数大小的单位是 KB。您可指定其他单
位。
您可使用下列 admin() 和 task() 函数参数大小的单位:
记号
相当的单位
B
字节
K
KB(缺省)
M
MB
G
GB
T
TB
P
PB
忽略这些字符的字母大小写。
忽略在同一参数中分隔大小规范和单位缩写的空格。例如,规范 "128M" 与 "128 m"都解
释为 128 MB。

GBase 8s 管理员参考
南大通用数据技术股份有限公司 - 672 -
当省略大小参数时,或者根据配置参数的设置,如未设置参数则或者根据系统缺省大小,
应用对象的缺省大小。例如,存储空间有 100 MB 的缺省大小。