kingbase回收站与闪回查询


kingbase回收站与闪回查询依赖插件kdb_flashback

插件kdb_flashback

KingbaseES数据库默认将他添加到 kingbase.conf 文件的 shared_preload_libraries 中,重启数据库时自动加载。
在这里插入图片描述

开启回收站

1、设置回收站参数

01、编辑参数文件kingbase.conf再文件末尾添加参数
kdb_flashback.db_recyclebin=on
02、生效参数变更
sys_ctl reload -D 数据目录
03、查看参数已生效
show kdb_flashback.db_recyclebin ;
在这里插入图片描述

2、查看回收站并闪回表drop

–查看回收站
select * from recyclebin;
select * from sys_recyclebin ;
–查看对象视图
select oid,relname,relpages,reltuples,relkind from sys_class where relname like ‘bin%’;
–闪回表drop
flashback table tbin to before drop;
在这里插入图片描述

3、清理回收站

不同database的回收站是独立的
回收站不会被自动清理,回收站需用户定期维护,避免回收站膨胀,用户可以通过PURGE操作对回收站进行维护,PURGE操作分为删除回收站中一个指定表和清空回收站。清理回收站时,回收站视图recyclebin和系统表sys_recyclebin中相关对象将被清除。
清理回收站的某个表:purge table 表名;
清空回收站:purge recyclebin;
在这里插入图片描述
在这里插入图片描述
使用脚本定期检查清理回收站里指定droptime之前的表
自定义函数,周期性调用该函数,传入参数希望清理多久之前的回收站的表
例如
清理5分钟前被删除的表:select purge_rceyclebin_table(‘5 mins’);
清理5小时前被删除的表:select purge_rceyclebin_table(‘5 hours’);
清理5天前被删除的表:select purge_rceyclebin_table(‘5 days’);

CREATE OR REPLACE FUNCTION purge_rceyclebin_table(interval_time interval)
RETURNS VOID AS $$
DECLARE
    rec RECORD;
    dead_ratio NUMERIC;
BEGIN
    -- 获取需要处理的表列表
    FOR rec IN
        SELECT
            nspname AS schema_name,
            original_name AS table_name
        FROM
            sys_recyclebin
        WHERE
            droptime<now-interval_time
   LOOP
        RAISE NOTICE 'purge table : %.%', rec.schema_name, rec.table_name;
        EXECUTE format('purge table %I.%I', rec.schema_name, rec.table_name);
    END LOOP;
END;
$$ LANGUAGE plpgsql;

在这里插入图片描述
在这里插入图片描述

4、彻底删除表不进入回收站

drop table tbin purge;
在这里插入图片描述

闪回查询

能闪回查询的数据依赖于未被vacuum的记录,如果表上做了vacuum,死元组被清理了,就无法闪回了,所以不能保证可以闪回多久之前的数据

1、设置闪回查询参数

kdb_flashback.enable_flashback_query=on
track_commit_timestamp=on

2、闪回时间戳查询

select * from fb_example as of timestamp ‘2025-07-11 17:39:08’;
在这里插入图片描述

3、闪回CSN查询

通常CSN 方式进行闪回查询的时候,需要借助闪回版本查询确定合适的CSN 号
select versions_startscn, versions_endcsn, * from fb_example versions between csn minvalue and maxvalue;
select * from fb_example as of csn 65536000012;
在这里插入图片描述

4、闪回表到指定时间点

flashback table fb_example to csn 65536000012;
flashback table fb_example to timestamp ‘2025-07-11 17:50:20’;
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值