OceanBase 回收站机制详解

OceanBase 回收站机制详解

在 OceanBase 数据库中,回收站机制用于在执行 DROPTRUNCATE 等操作后,临时保存被删除的对象,以便在需要时进行恢复。以下是对回收站机制的详细说明:

1. 不同租户对回收站的访问权限

SYS 租户

  • 权限范围:除了管理自身的数据库、表和索引的回收站对象外,还可以查看和管理系统内所有租户的回收站对象。
  • 主要职责:负责整个系统的回收站管理,包括清理和恢复所有租户的回收站对象。

MySQL 模式的用户租户

  • 权限范围:可以查看和管理其所属租户的数据库、表和索引的回收站对象。
  • 管理对象:数据库(Database)、表(Table)、索引(Index)。

Oracle 模式的用户租户

  • 权限范围:只能查看和管理其所属租户的表和索引的回收站对象。
  • 管理对象:表(Table)、索引(Index)。
  • 注意事项:无法查看和管理数据库级别的回收站对象。

2. 回收站的启用与关闭

系统变量

在 OceanBase 中,有两个与回收站相关的系统变量,用于控制回收站的功能:

  1. recyclebin

    • 作用:控制回收站功能的开启或关闭。
    • 默认值OFF,表示默认情况下回收站功能关闭。
    • 设置方法
      • Global 级别(全局)
        SET GLOBAL recyclebin = ON;
        
      • Session 级别(会话)
        SET SESSION recyclebin = ON;
        
  2. ob_enable_truncate_flashback

    • 作用:控制 TRUNCATE TABLE 操作是否将对象放入回收站。
    • 默认值OFF,表示默认情况下 TRUNCATE TABLE 不会将对象放入回收站。
    • 设置方法
      • Global 级别
        SET GLOBAL ob_enable_truncate_flashback = ON;
        
      • Session 级别
        SET SESSION ob_enable_truncate_flashback = ON;
        

启用与关闭示例

-- 全局启用回收站功能
SET GLOBAL recyclebin = ON;-- 会话级别启用 TRUNCATE TABLE 放入回收站
SET SESSION ob_enable_truncate_flashback = ON;

3. 对象进入回收站的条件

  • 进入回收站的操作

    • DROP 操作:当执行 DROP TABLEDROP INDEXDROP DATABASE 等操作时,根据回收站设置,相关对象可能进入回收站。
    • TRUNCATE TABLE 操作
      • 默认行为:由于 ob_enable_truncate_flashback 默认值为 OFFTRUNCATE TABLE 操作不会将表放入回收站。
      • 启用后:当 ob_enable_truncate_flashback 设置为 ON,执行 TRUNCATE TABLE 操作的表将进入回收站。
  • 对象类型

    • 表(Table)
      • DROP 操作:删除的表会进入回收站(recyclebinON 时)。
      • TRUNCATE 操作:需要将 ob_enable_truncate_flashback 设置为 ON,表才会进入回收站。
    • 索引(Index)
      • 直接删除:执行 DROP INDEX,索引不会进入回收站。
      • 关联删除:删除表时,表上的索引会随主表一起进入回收站。
    • 数据库(Database)(仅限 MySQL 模式):
      • 删除的数据库会进入回收站(recyclebinON 时)。

4. 回收站对象的限制

  • 无法进行的操作
    • 查询和 DML 操作:不能对回收站中的对象执行查询、插入、更新或删除等操作。
  • 允许的操作
    • DDL 操作:仅限于 PURGE(清除)和 FLASHBACK(恢复)命令。

5. 清理回收站

  • 清理方式
    • 指定对象清理:可以清理特定的索引、表或数据库。
    • 整体清理:可以清空整个回收站。
  • 清理命令
    • 清理特定表
      PURGE TABLE table_name;
      
    • 清理特定索引
      PURGE INDEX index_name;
      
    • 清理数据库(仅 MySQL 模式)
      PURGE DATABASE database_name;
      
    • 清空回收站
      PURGE RECYCLEBIN;
      

6. 不同模式下的回收站管理

模式索引(Index)表(Table)数据库(Database)租户(Tenant)
MySQL支持支持支持支持(仅 SYS)
Oracle支持支持不支持不支持
  • 说明
    • MySQL 模式:支持清理和恢复索引、表和数据库对象。
    • Oracle 模式:仅支持清理和恢复索引和表对象,不支持数据库级别的操作。

7. 回收站对象的管理注意事项

  • 索引的特殊处理
    • 直接删除:使用 DROP INDEX 删除的索引不会进入回收站。
    • 随表删除:删除表时,表上的索引会一同进入回收站。
  • 操作限制
    • 查询和 DML 禁止:无法对回收站中的对象执行查询或数据操作。
    • DDL 操作限制:只能执行 PURGEFLASHBACK 命令。
  • 管理权限
    • SYS 租户:可以管理所有租户的回收站对象。
    • 普通租户:只能管理自身租户的回收站对象。

8. 使用 FLASHBACK 命令恢复对象

  • 功能:恢复回收站中的数据库和表对象。
  • 权限要求:只有租户的管理员用户才能执行 FLASHBACK 命令。
  • 恢复规则
    • 名称冲突:恢复时可以指定新名称,避免与现有对象重名。
    • 恢复范围
      • MySQL 模式:可以恢复数据库、表和索引(索引随表恢复)。
      • Oracle 模式:只能恢复表和索引(索引随表恢复),不能恢复数据库。
    • 索引恢复:恢复表时,其关联的索引会自动恢复,不能单独恢复索引。

FLASHBACK 命令的使用限制

  • 恢复顺序
    • 必须遵循对象的从属关系,先恢复数据库,再恢复表。
    • 示例
      -- 恢复数据库
      FLASHBACK DATABASE database_name TO BEFORE DROP;-- 恢复表
      FLASHBACK TABLE table_name TO BEFORE DROP;
      
  • 索引恢复
    • 无法单独恢复索引。
    • 恢复表时,表上的索引会随之恢复。
  • 表组关系
    • 表组未删除:如果表进入回收站前所属的表组未被删除,恢复后表仍属于该表组。
    • 表组已删除:如果表组已被删除,恢复表后将不再隶属于任何表组。

9. 注意事项

  • 命名注意
    • 恢复对象时,指定的新名称不能与现有对象重名。
  • 权限控制
    • 普通用户只能操作自己权限范围内的回收站对象。
    • SYS 租户具有最高权限,可管理所有回收站对象。
  • 空间占用
    • 回收站中的对象占用存储空间,建议定期清理不需要的对象。

10. 示例操作

恢复表

-- 恢复已删除的表
FLASHBACK TABLE table_name TO BEFORE DROP;-- 恢复已删除的表并重命名
FLASHBACK TABLE table_name TO BEFORE DROP RENAME TO new_table_name;

清理回收站

-- 清理特定的索引
PURGE INDEX index_name;-- 清理特定的表
PURGE TABLE table_name;-- 清理整个回收站
PURGE RECYCLEBIN;

11. 回收站功能的配置与影响

recyclebin 系统变量

  • 控制回收站功能的开启或关闭
  • 默认值OFF,表示回收站功能默认关闭。
  • 影响范围
    • recyclebin 设置为 OFF 时,执行 DROP 操作的对象不会进入回收站,直接被删除。
    • 设置为 ON 后,执行 DROP 操作的对象将进入回收站,可供恢复。

ob_enable_truncate_flashback 系统变量

  • 控制 TRUNCATE TABLE 操作是否将表放入回收站
  • 默认值OFF,表示默认情况下,TRUNCATE TABLE 操作不会将表放入回收站,表数据直接被清空且无法恢复。
  • 影响范围
    • ob_enable_truncate_flashback 设置为 ON 时,TRUNCATE TABLE 操作的表将进入回收站,可以使用 FLASHBACK 命令进行恢复。

配置示例

-- 全局启用回收站功能和 TRUNCATE TABLE 的闪回
SET GLOBAL recyclebin = ON;
SET GLOBAL ob_enable_truncate_flashback = ON;-- 会话级别设置
SET SESSION recyclebin = ON;
SET SESSION ob_enable_truncate_flashback = ON;

注意事项

  • 性能影响

    • 启用回收站功能可能会增加系统的存储开销,因为被删除的对象会占用存储空间。
    • 频繁的 DROPTRUNCATE 操作建议定期清理回收站,以释放空间。
  • 数据安全性

    • 在关键业务场景下,建议开启回收站功能,防止误操作导致的数据丢失。

12. 总结

通过合理配置 recyclebinob_enable_truncate_flashback 系统变量,可以灵活控制回收站的行为,满足不同业务场景的需求。

  • 启用回收站

    • 防止误删除操作带来的数据丢失。
    • 提供数据恢复的可能性。
  • 关闭回收站

    • 减少存储空间的占用。
    • 提高系统的删除效率。

记住在执行 FLASHBACKPURGE 等操作时,要遵循对象的从属关系和权限要求,确保数据库的稳定和安全。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/58601.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

day05-Filebeat扩展

Filebeat对接ES加密集群 #查看集群状态 [09:22:25 rootelk1:~]#curl 10.0.0.91:9200/_cat/nodes -u elastic:1234561.编写配置文件 [09:52:06 rootelk3:/etc/filebeat]#vim 12-log-to-es_tls.yamlfilebeat.inputs: - type: logpaths:- /var/log/nginx/access.log*json.keys_un…

常见寄存器

常见寄存器及其可见性 数据寄存器(Data Register,DR) 可见性:对系统程序员可见,对应用程序员透明。功能:用于保存从存储器中读取的数据,以及运算器生成的结果。作用:作为CPU和主存、…

Vue全栈开发旅游网项目(3)-Vue路由配置

1. 配置路由 1.1 导入路由工具 文件地址:src\router\index.js import { createRouter, createWebHistory } from vue-router//导入配置路由的工具 import HomeView from ../views/HomeView.vue//导入组件const router createRouter({//创建路由对象history: cre…

代随(136):图论dfs——邻接矩阵

题干&#xff1a; 代码&#xff1a; #include <iostream> #include <vector> using namespace std;vector<vector<int>>res; vector<int>path;void dfs(vector<vector<int>>&graph, int x, int n) {if(x n){res.push_back(pat…

Docker Compose部署Powerjob

整个工具的代码都在Gitee或者Github地址内 gitee&#xff1a;solomon-parent: 这个项目主要是总结了工作上遇到的问题以及学习一些框架用于整合例如:rabbitMq、reids、Mqtt、S3协议的文件服务器、mongodb github&#xff1a;GitHub - ZeroNing/solomon-parent: 这个项目主要是…

精选录屏软件大赏:满足不同场景需求的录制利器

现在是互联网的世界&#xff0c;所以很多时候学习、工作我们都离不开电脑。在我们通过互联网查看网课、开网络会议的时候是不是会因为速度太快而来不及记录&#xff1f;那我推荐使用一些windows录屏软件来记录所有重点&#xff0c;方便我们后期复盘。 1.FOXIT录屏大师 链接&a…

【python】OpenCV—findContours(4.5)

文章目录 1、功能描述2、原理分析3、代码实现4、效果展示5、完整代码6、参考 1、功能描述 输入图片&#xff0c;计算出图片中的目标到相机间的距离 2、原理分析 用最简单的三角形相似性 已知参数&#xff0c;物体的宽度 W W W&#xff0c;物体到相机的距离 D D D&#xff0…

【华为HCIP实战课程二十八】中间到中间系统协议IS-IS邻居关系排错,网络工程师

一、ISIS邻居关系条件 1、同一层次(比如Level-2路由器不能和Level-1路由器形成邻居关系) 2、同一区域(L1必须同一区域) 3、同一网段 R1和R2之间分别配置如下IP地址和掩码: R1 的接口S1/0/0掩码为/24 R2的接口S1/0/0配置成掩码/28: 此时R1和R2依然可以建立ISIS邻居关系…

springcloud网关和熔断配置

Spring Cloud Gateway 可以与 Spring Cloud Circuit Breaker 结合使用&#xff0c;以实现熔断功能。熔断机制用于防止因后端服务故障导致整个系统的崩溃&#xff0c;增强系统的稳定性和可用性。以下是 Spring Cloud Gateway 的熔断原理详解及示例。 一、熔断原理 熔断的基本思…

文件操作和 IO(一):文件基础知识 文件系统操作 => File类

目录 1. 什么是文件 1.1 概念 1.2 硬盘, 内存, 寄存器之间的区别 1.3 机械硬盘和固态硬盘 2. 文件路径 2.1 绝对路径 2.2 相对路径 3. 文件分类 4. File 类 4.1 属性 4.2 构造方法 4.3 方法 1. 什么是文件 1.1 概念 狭义上的文件: 保存在硬盘上的文件广义的上的文…

编程小白如何成为大神

成为编程大神的过程需要时间、耐心和实践。以下是一些适合大学新生的入门攻略&#xff1a; 1. 确定学习目标 选择语言&#xff1a;选择一门编程语言作为起点&#xff0c;如 Python、Java 或 JavaScript。Python 是初学者的热门选择&#xff0c;因为其语法简洁易懂。设定目标&…

Flutter Color 大调整,需适配迁移,颜色不再是 0-255,而是 0-1.0,支持更大色域

在之前的 3.10 里&#xff0c; Flutter 的 Impeller 在 iOS 上支持了 P3 广色域图像渲染&#xff0c;但是当时也仅仅是当具有广色域图像或渐变时&#xff0c;Impeller 才会在 iOS 上显示 P3 的广色域的颜色&#xff0c;而如果你使用的是 Color API&#xff0c;会发现使用的还是…

git入门教程10:git性能优化

一、配置优化 使用SSH协议&#xff1a; 相比HTTP/HTTPS协议&#xff0c;SSH协议在网络传输中更高效&#xff0c;且支持更安全的认证方式。确保你的远程仓库URL使用的是SSH协议&#xff0c;例如&#xff1a;git clone gitgithub.com:username/repo.git。 调整Git缓冲区大小&…

RabbitMQ怎么保障消息的可靠性

RabbitMQ消息可靠性是系统中确保消息不丢失、无重复的重要手段。对于RabbitMQ的消息而言&#xff0c;我们主要从三部分讨论&#xff0c;分别是生产者&#xff0c;broker端&#xff0c;消费者这三大模块来进行讲解 一、生产者端的消息可靠性 1. 消息确认机制&#xff08;Publis…

web自动化测试平台开发之核心执行器

web自动化测试平台开发之核心执行器 一、如何从自动化框架到核心执行器二、核心执行器框架逻辑梳理三、核心执行器利用命令驱动执行 一、如何从自动化框架到核心执行器 脚本:底层用了三个内容:pythonpytestselenium&#xff0c;线性脚本&#xff0c;只是单纯的把功能测试用例转…

Rust 力扣 - 2090. 半径为 k 的子数组平均值

文章目录 题目描述题解思路题解代码题解链接 题目描述 题解思路 半径为 k 的子数组平均值 等价于 子数组长度为2 * k 1的总和 除于 2 * k 1 我们遍历长度为2 * k 1的窗口&#xff0c;我们只需要记录窗口内的平均值即可 题解代码 impl Solution {pub fn get_averages(num…

直接内存、死锁、方法句柄

直接内存 1. 不是虚拟机运行时数据区的一部分&#xff0c;也不是《Java虚拟机规范》中定义的内存区域 2. 直接内存是在Java堆外、直接向系统申请的内存区间 3. 来源于NIO,通过存在堆中的DirectByteBuffer操作Native内存 4. 通常&#xff0c;访问直接内存的速度会优于Java堆&am…

芯片校正LDO电压

芯片校正LDO电压 一、校正LDO的作用二、LDO的校正参数三、参数校正示例 一、校正LDO的作用 在集成电路设计中&#xff0c;校正低压差线性稳压器&#xff08;LDO&#xff09;的主要作用是为内部电路提供稳定、干净的工作电压。这有助于抑制电源噪声&#xff0c;并在输入电压变化…

Java开发中如何配合MySQL实现读写分离?

引言 在现代应用程序中,数据库的性能和可扩展性是至关重要的。随着数据量的增加,单一的数据库实例可能无法满足高并发读写请求的需求。 为了提高系统的性能和可用性,读写分离成为了一种常见的解决方案。 本文将详细探讨如何在Java开发中实现MySQL的读写分离,包括其原理、…

Hive SQL 和 SQL 的区别总结(持续更新中.....)

一、区别 1 Join 时&#xff0c;on. 条件&#xff1b; SQL支持不等值连接&#xff0c;Hive SQL 只支持等值连接。 二、区别2 SQL支持From 前嵌套子查询&#xff0c;Hive SQL 不支持&#xff1b;