人大金仓数据库KingbaseES中闪回截断表

金仓数据库KingbaseES中闪回截断表

关键字:

KingbaseES、闪回、FLASHBACK TABLE、truncate;人大金仓;KingbaseES

前提条件

闪回truncate可以恢复误操作或意外被进行truncate的表,从回收站中恢复被truncate的表的物理数据,闪回truncate基于回收站机制,通过还原回收站中记录的表的物理文件,实现已truncate表的恢复。

开启或关闭回收站的参数名称为kdb_flashback.db_recyclebin,参数为bool类型,参数级别为pgc_sighup。根据时间戳或CSN返回时,需要将配置文件kingbase.conf中的track_commit_timestamp参数改为on,并且需要重新初始化数据库使其生效。

闪回truncate实例

首先,查询回收站功能是否开启:

test=# show kdb_flashback.db_recyclebin;

kdb_flashback.db_recyclebin

-----------------------------

on

(1 row)

开启时,可用FLASHBACK TABLE table_name TO BEFREO TRUNCATE 闪回被截断的表,闪回被TRUNCATE的普通表时,使用方法如下:

create table bftr(a int);

insert into bftr values(1), (2), (3), (4);

truncate table bftr;

flashback table bftr to before truncate;

同时,可以支持闪回被TRUNCATE的分区表,使用方法如下:

create table range_range1(

a int, b int

)partition by range(a)

subpartition by range(a)

subpartition template(

subpartition sub1 values less than(3),

subpartition sub2 values less than(7),

subpartition sub3 values less than(12)

)(

partition ch1 values less than(5),

partition ch2 values less than(10),

partition ch3 values less than(15)

);

insert into range_range1 values (1),(3),(6),(9);

truncate table range_range1;

flashback table range_range1 to before truncate;

flashback table to before truncate只是普通表和分区表,其他都不支持。

需要注意的是,在truncate表之后,出现ddl语句,表结构被改变,是不支持再进行闪回truncate的,例如:

truncate table trddl;

create unique index idxunique on trddl(d);

flashback table trddl to before truncate; --- should report error

总结

通过利用KingbaseES的闪回被截断表的功能,我们可以有效恢复表中数据,可以帮助在意外操作或错误删除表时进行快速恢复,提高数据库的可用性。

参考资料

提供该题目相关内容在产品手册中可以系统学习的位置,例如:

《KingbaseES SQL语言参考手册》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值