首页 > 其他分享 >KingbaseES V8R6 运维案例 --flashback drop table

KingbaseES V8R6 运维案例 --flashback drop table

时间:2023-03-02 16:12:34浏览次数:46  
标签:sheet V8R6 运维 -- TABLE table flashback prod 回收站

一、KingbaseES V8R6 flashback drop table介绍

  • 使用FLASHBACK删除和恢复表
    删除表时,数据库不会立即删除与该表关联的空间。数据库重命名表,并将其和任何关联的对象放在回收站中,万一表被错误地删除,可以在稍后恢复。这个特性被称为FLASHBACK DROP, FLASHBACK TABLE语句用于恢复表。

  • 什么是回收站
    回收站实际上是一个数据字典表,包含关于被删除对象的信息。被删除的表和任何关联的对象(如索引、约束、嵌套表等)没有被删除,仍然会占用空间。

  • 用户可以使用以下语句查看回收站中的对象:
    SELECT * FROM RECYCLEBIN;
    开启回收站功能后,DROP TABLE 语句会将对象放入回收站。DROP TABLE若是开启了GUC参数:kdb_flashback.db_recyclebin=on,且未指定PURGE选项,则删除的表及其关联的索引、规则、触发器、约束等将被放到SYS_RECYCLEBIN系统表中。 它添加表及其关联对象,以便它们可以作为一个组数据一起进行恢复。在需要时可以将回收站中的表闪回到删除之前的状态。除了表本身,添加到回收站的关联对象可以包括以下类型的对象:
    嵌套表 LOB数据库字段 索引 约束(不包括外键约束) 触发器 聚簇

  • 启用和禁用回收站
    当回收站被启用时,被删除的表及其相关对象将被放入回收站。当回收站被禁用时,被删除的表及其相关对象不会被放入回收站,它们被彻底删除,您必须使用其他方法来恢复它们(例如从备份中恢复)。
    回收站功能默认关闭,可以通过下列命令查看是否开启回收站功能:
    show kdb_flashback.db_recyclebin;
    开启回收站功能,在登录数据库后执行以下命令即可
    alter system set kdb_flashback.db_recyclebin = on;

  • 从回收站恢复表
    开启了回收站参数后,如果不允许一个删除的表进回收站,需要在DROP语句后面加上PUGRE选项。flashback支持将一个已经删除到回收站中的表及相关对象闪回到删除之前状态。
    如果在当前schema下已经存在同名的表,则闪回失败,需要使用rename to选项指定一个新的表名。 成功闪回一个表后,回收站视图recyclebin和回收站系统表sys_recyclebin中对象将被清除。
    一个FLASHBACK命令:
    FLASHBACK TABLE TABLE_name TO BEFORE DROP;
    这个命令将在回收站中的TABLE_name闪回到闪回之前的状态:
    FLASHBACK TABLE TABLE_name TO BEFORE DROP RENAME TO newname;
    将回收站中的表闪回到一个新的表名:

二、kingbaseES V8R6 flashback drop table配置

1、配置kdb_flashback extension

[kingbase@node102 data]$ cat kingbase.conf |grep flashback
shared_preload_libraries = 'liboracle_parser, synonym, plsql, force_view, kdb_flashback,plugin_debugger, plsql_plugin_debugger, plsql_plprofiler, ora_commands,kdb_ora_expr, sepapower, dblink, sys_kwr, sys_ksh, sys_spacequota, sys_stat_statements, backtrace, kdb_utils_function, auto_bmr, sys_squeeze, src_restrict'

2、启用kdb_flashback功能

prod=# show kdb_flashback.db_recyclebin ;
 kdb_flashback.db_recyclebin
-----------------------------
 off
(1 row)

prod=# alter system set kdb_flashback.db_recyclebin=on;
prod=# select sys_reload_conf();
 sys_reload_conf
-----------------
 t
(1 row)

prod=# show kdb_flashback.db_recyclebin ;
 kdb_flashback.db_recyclebin
-----------------------------
 on
(1 row)

2 、查看回收站

prod=# SELECT * FROM RECYCLEBIN;
 oid | original_name | droptime | type
-----+---------------+----------+------
(0 rows)

3、drop table回收测试

# 查看表结构
prod=# \d ts
                  Table "public.ts"
 Column  |   Type   | Collation | Nullable | Default
---------+----------+-----------+----------+---------
 doc     | text     |           |          |
 doc_tsv | tsvector |           |          |
Indexes:
    "ts_doc_tsv_idx" gin (doc_tsv)

#删除表
prod=# drop table ts;
DROP TABLE

#查看回收站
prod=# SELECT * FROM RECYCLEBIN;
  oid  |    original_name     |           droptime            | type
-------+----------------------+-------------------------------+-------
 26787 | ts                   | 2022-12-12 16:56:43.140637+08 | TABLE
 26793 | ts_doc_tsv_idx       | 2022-12-12 16:56:43.140083+08 | INDEX
 26792 | pg_toast_26787_index | 2022-12-12 16:56:43.140591+08 | INDEX
(3 rows)
---如上所示,回收站中包括表自身还有索引等对象信息

#将表闪回
prod=# flashback table ts to  before drop rename to ts1;
FLASHBACK TABLE

prod=# \d
               List of relations
 Schema |        Name         | Type  | Owner
--------+---------------------+-------+--------
 public | sys_stat_statements | view  | system
 public | t1                  | table | system
 public | test1               | table | system
 public | ts1                 | table | system
(4 rows)

#表已经被闪回
prod=# select * from  ts1;
                          doc                           |                                            doc_tsv

--------------------------------------------------------+----------------------------------------------------------------------
--------------------------
 Can a sheet slitter slit sheets?                       | 'a':2 'can':1 'sheet':3 'sheets':6 'slit':5 'slitter':4
 How many sheets could a sheet slitter slit?            | 'a':5 'could':4 'how':1 'many':2 'sheet':6 'sheets':3 'slit':8 'slitt
er':7
 I slit a sheet, a sheet I slit.                        | 'a':3,5 'i':1,7 'sheet':4,6 'slit':2,8
 Upon a slitted sheet I sit.                            | 'a':2 'i':5 'sheet':4 'sit':6 'slitted':3 'upon':1
 Whoever slit the sheets is a good sheet slitter.       | 'a':6 'good':7 'is':5 'sheet':8 'sheets':4 'slit':2 'slitter':9 'the'
:3 'whoever':1
 I am a sheet slitter.                                  | 'a':3 'am':2 'i':1 'sheet':4 'slitter':5
 I slit sheets.                                         | 'i':1 'sheets':3 'slit':2
 I am the sleekest sheet slitter that ever slit sheets. | 'am':2 'ever':8 'i':1 'sheet':5 'sheets':10 'sleekest':4 'slit':9 'sl
itter':6 'that':7 'the':3
 She slits the sheet she sits on.                       | 'on':7 'she':1,5 'sheet':4 'sits':6 'slits':2 'the':3
(9 rows)

#回收站数据已经被闪回
prod=# SELECT * FROM RECYCLEBIN;
 oid | original_name | droptime | type
-----+---------------+----------+------
(0 rows)

4、drop table...purge测试

Tips:
在drop table时如果使用了purge参数,表将不会保留在回收站,注意此参数的风险。

prod=# drop table ts1 purge;
DROP TABLE

prod=# SELECT * FROM RECYCLEBIN;
 oid | original_name | droptime | type
-----+---------------+----------+------
(0 rows)

三、清理回收站

1、清理指定表

prod=# drop table t1;
DROP TABLE
prod=# SELECT * FROM RECYCLEBIN;
  oid  | original_name |           droptime            | type
-------+---------------+-------------------------------+-------
 35003 | t1            | 2022-12-19 10:53:31.035541+08 | TABLE
(1 row)

prod=# purge table t1;
PURGE
prod=# SELECT * FROM RECYCLEBIN;
 oid | original_name | droptime | type
-----+---------------+----------+------
(0 rows)

2、清理回收站所有对象

prod=# \d test1
               Table "public.test1"
 Column |  Type   | Collation | Nullable | Default
--------+---------+-----------+----------+---------
 id     | integer |           | not null |
 v_name | varchar |           |          |
Indexes:
    "test1_pkey" PRIMARY KEY, btree (id)
    "test1_name_ind" btree (v_name)

#删除表
prod=# drop table test1;
DROP TABLE

#查看回收站信息
prod=# SELECT * FROM RECYCLEBIN;
  oid  |    original_name     |           droptime            |    type
-------+----------------------+-------------------------------+------------
 16720 | test1                | 2022-12-19 10:47:20.672125+08 | TABLE
 26800 | test1_name_ind       | 2022-12-19 10:47:20.670681+08 | INDEX
 16726 | test1_pkey           | 2022-12-19 10:47:20.671065+08 | INDEX
 16725 | pg_toast_16720_index | 2022-12-19 10:47:20.672085+08 | INDEX
 16727 | test1_pkey           | 2022-12-19 10:47:20.671065+08 | CONSTRAINT
(5 rows)

#清理回收站
prod=# purge recyclebin;
PURGE

#查看回收站(对象已经清空)
prod=# SELECT * FROM RECYCLEBIN;
 oid | original_name | droptime | type
-----+---------------+----------+------
(0 rows)

四、总结
KingbaseES V8R6的kdb_flashback功能,可以通过回收站机制的将用户误删除(drop table)的表数据快速恢复,有效缩短数据库恢复的RTO。

标签:sheet,V8R6,运维,--,TABLE,table,flashback,prod,回收站
From: https://www.cnblogs.com/kingbase/p/16999950.html

相关文章

  • KingbaseES 的oracle兼容性参数
    KingbaseES用户可通过设置相关的数据库兼容参数,部分或全部启用Oracle兼容特性。常用的兼容性参数有以下这些:参数名称参数说明ora_forbid_func_polymorphism是......
  • HTML-CSS常用代码
    注释标签:对代码进行说明<!--单行注释,也可以对多行文字进行注释-->常用格式标签<b>加粗</b> <i>斜体</i> <u>下划线</u> <s>删除线</s> <p>段落标签</p> <hr>:分割线 <br>......
  • KingbaseES 配置 Hugepage
    前言大页的作用是为了提升内存管理的效率,减少内存管理资源消耗(节省pagetable的开销),特别是对于大内存的情况,同时,由于hugepage相对与4k的页面,它更不容易被交换出内存,因此,它......
  • 通过Container制作Image
    1.拉取tomcat镜像dockerpulltomcatdockerimage2.根据tomcat镜像创建一个tomcatcontainerdockerrun-d-it--nameyyb-tomcattomcatdockerps3.进入yyb-tomcat......
  • 旅游线路分页展示_类别id传递与旅游线路分页展示_分页数据展示_分析
    旅游线路分页展示_类别id传递 1.旅游线路的分页展示点击了不同的分类后,将来看到的旅游线路不一样的。通过分析数据库表结构,发现,旅游线路表和分类表时一个......
  • KingbaseES V8R6 集群运维系列 -- 命令行部署repmgr管理集群+switchover测试
    本次部署未使用securecmd/kbha工具,无需普通用户到root用户的互信。一、环境准备1、创建OS用户建立系统数据库安装用户组及用户,在所有的节点执行。root用户登陆服务器,创......
  • Spider实战系列-一次真实接单经历让我抓取了某东的数据
    抓取JD商品先说说起因吧,是因为有朋友找我一起合作抓取某东的商品数据,我做为一个刚入爬虫的新手,当然是不可能完整的拿下这个啦.这次爬虫要的是商品的详细数据,我的工作就......
  • 接口测试工具-Jmeter压力测试使用
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • DataEase 集成 CAS 实现用户单点登录
    场景介绍随着企业IT场景越来越复杂,应用平台不断增加,用户需要管理每个应用平台的登录信息;用户集中管理平台(如:“LDAP”)可以使用户在所有应用平台使用同一个用户名进行登录;而......
  • 1、MYSQL数据库介绍
    informationschema数据库不是磁盘数据库,是内存数据库,在数据库文件夹中看不到mysql数据库user表中有留空,代表匿名账户       status查看状态带linuxwin的表......