KingbaseES数据库闪回技术讲解

闪回内容简介

01  闪回技术讲解

02  drop闪回恢复

0闪回表的类型

04  闪回注意事项

一、闪回概述

闪回主要是为快速的恢复数据,查询历史数据提供了很大的便捷方法

二、闪回技术实现的原理

我们先了解一下Oracle的闪回原理,闪回查询主要是根据Undo表空间数据进行多版本查询,针对v$x$动态性能视图无效,但对DBA_ALL_USER_是有效的

闪回表就是对表的数据做回退,回退到之前的某个时间点,其利用的是undo的历史数据,与

undo_retention设置有关,默认是1440分钟(1天),允许用户查询过去某个时间点的数据,用

以重构由于意外删除或更改的数据,数据不会变化。

注:了解一下Oracle在开启闪回的步骤

1、开启归档,数据库需要设置在mount状态

2、设置一个闪回区,用来存放与闪回相关的信息

3、开启flashback功能,alter database flashback on;

4、查看闪回是否已经开启 select flashback_on from v$database;

三、Kingbase数据库开启闪回步骤

1、KES开启闪回必要条件

插件 shared_preload_libraries =‘…kdb_flashback'

编辑 kingbase.conf 配文件

配置 kdb_flashback.db_recyclebin=on

2、检查是否开启闪回

alter system set kdb_flashback.db_recyclebin=on;

select sys_reload_conf();

show kdb_flashback.db_recyclebin ;

打开闪回开关

四、闪回功能测试

1、表drop闪回恢复

1.创建测试表

create table mytest(id int,name text);

2.在表中添加数据

insert into mytest select generate_series(1,1000),md5(random());

3.删除表

drop table mytest ;

   

4.在回收站查看删除的表

select * from recyclebin;

注:recyclebin是一个视图,基础表是sys_recyclebin,测试可以用drop view recyclebin删除这个视图,误删!!!

5.闪回表

flashback table mytest to before drop;

6.验证数据是否完整

select * from mytest limit 2;

五、闪回表的类型

主要介绍数据库中与表相关的数据库对象,在闪回过程中的一些变化,及注意的一些点

1、测试truncate表,之后不能进行闪回

 truncate table mytest ;

注:truncate的实质是在不修改数据块的情况下,通过修改segment headerdata_object_idhwmextent map等信息来实现清空表的目的

2、恢复索引名称

当我们drop table之后,通过闪回表恢复表数据之后,表上的索引也会跟随恢复,但是需要重新命名index

通过 alter index ... rename to ind_test;   语句重新修改索引名称

3、测试视图

create view mytest_view as select * from mytest;  对基础表的drop影响了视图的查询

4、测试物化视图

drop table mytest cascade; 加上cascade选项删除相关的数据库对象

drop materialized view mytest_view ;

5、重建相关的视图

create view mytest_view as select * from mytest;

create materialized view mv_test as select * from mytest;  

6、序列表

create table mytest_seq(id serial,name varchar(200));  会显示序列信息

7、表的同义词 

create public synonym tt100 for mytest;  drop表会将表的同义词删除,通过闪回恢复同义词数据

8、分区表

drop分区表的时候,将删除所有的表分区,通过闪回恢复分区表数据

1.创建分区

CREATE TABLE ft_q (

  d1 int,

  d2 char(10),

  d3 date

)

PARTITION BY RANGE (d3)

(

PARTITION ft_q  VALUES less than(to_date('2022-7-01'))  ,

PARTITION ft_q2  VALUES less than(to_date('2022-8-01'))  ,

PARTITION ft_q3  VALUES less than(to_date('2022-9-01')));

2.添加数据

insert into ft_q values(1,'aaa','2022-01-02');

insert into ft_q values(1,'bbb','2022-07-02');

insert into ft_q values(1,'ccc','2022-08-02');

3.闪回表恢复分区表数据

drop table ft_q;

flashback table ft_q to before drop;  在回收站中可以看到分区表ft_q所有分区信息

六、回收站

1、清空回收站 recyclebin

使用 purge recyclebin; 可以清空回收站记录的信息,Purge recyclebin 操作之后,不能再继续

闪回需要的表

2、回收站原理

回收站 recyclebin是一个视图

\sv+ recyclebin  可以查看到关联的系统表

3、外部表

只是一个查询连接而已

drop foreign table test_tt;  回收站并没有记录外部表的相关信息

七、闪回注意事项

1、TruncateDDL操作,新增/删除结构无法做闪回

2、在Purge recyclebin 操作之后,不能再继续闪回需要的表

3、表DROP,对应的物化视图会被彻底删除,物化视图不会存放在recyclebin

八、闪回常用语句

1、

开启闪回功能

kdb_flashback.db_recyclebin=on

2、

闪回表语句

flashback table mytest to before drop;

3、

修改索引名称

通过 alter index ... rename to ind_test;   语句重新修改索引名称

4、

清空回收站

purge recyclebin;

闪回讲解完成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值