OceanBase 回收站机制详解
OceanBase 回收站机制详解
在 OceanBase 数据库中,回收站机制用于在执行 DROP 或 TRUNCATE 等操作后,临时保存被删除的对象,以便在需要时进行恢复。以下是对回收站机制的详细说明:
1. 不同租户对回收站的访问权限
SYS 租户
- 权限范围:除了管理自身的数据库、表和索引的回收站对象外,还可以查看和管理系统内所有租户的回收站对象。
- 主要职责:负责整个系统的回收站管理,包括清理和恢复所有租户的回收站对象。
MySQL 模式的用户租户
- 权限范围:可以查看和管理其所属租户的数据库、表和索引的回收站对象。
- 管理对象:数据库(Database)、表(Table)、索引(Index)。
Oracle 模式的用户租户
- 权限范围:只能查看和管理其所属租户的表和索引的回收站对象。
- 管理对象:表(Table)、索引(Index)。
- 注意事项:无法查看和管理数据库级别的回收站对象。
2. 回收站的启用与关闭
系统变量
在 OceanBase 中,有两个与回收站相关的系统变量,用于控制回收站的功能:
-
recyclebin- 作用:控制回收站功能的开启或关闭。
- 默认值:
OFF,表示默认情况下回收站功能关闭。 - 设置方法:
- Global 级别(全局):
SET GLOBAL recyclebin = ON; - Session 级别(会话):
SET SESSION recyclebin = ON;
- Global 级别(全局):
-
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;
- Global 级别:
- 作用:控制
启用与关闭示例
-- 全局启用回收站功能
SET GLOBAL recyclebin = ON;-- 会话级别启用 TRUNCATE TABLE 放入回收站
SET SESSION ob_enable_truncate_flashback = ON;
3. 对象进入回收站的条件
-
进入回收站的操作:
DROP操作:当执行DROP TABLE、DROP INDEX、DROP DATABASE等操作时,根据回收站设置,相关对象可能进入回收站。TRUNCATE TABLE操作:- 默认行为:由于
ob_enable_truncate_flashback默认值为OFF,TRUNCATE TABLE操作不会将表放入回收站。 - 启用后:当
ob_enable_truncate_flashback设置为ON,执行TRUNCATE TABLE操作的表将进入回收站。
- 默认行为:由于
-
对象类型:
- 表(Table):
- DROP 操作:删除的表会进入回收站(
recyclebin为ON时)。 - TRUNCATE 操作:需要将
ob_enable_truncate_flashback设置为ON,表才会进入回收站。
- DROP 操作:删除的表会进入回收站(
- 索引(Index):
- 直接删除:执行
DROP INDEX,索引不会进入回收站。 - 关联删除:删除表时,表上的索引会随主表一起进入回收站。
- 直接删除:执行
- 数据库(Database)(仅限 MySQL 模式):
- 删除的数据库会进入回收站(
recyclebin为ON时)。
- 删除的数据库会进入回收站(
- 表(Table):
4. 回收站对象的限制
- 无法进行的操作:
- 查询和 DML 操作:不能对回收站中的对象执行查询、插入、更新或删除等操作。
- 允许的操作:
- DDL 操作:仅限于
PURGE(清除)和FLASHBACK(恢复)命令。
- DDL 操作:仅限于
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 操作限制:只能执行
PURGE和FLASHBACK命令。
- 管理权限:
- 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;
注意事项
-
性能影响:
- 启用回收站功能可能会增加系统的存储开销,因为被删除的对象会占用存储空间。
- 频繁的
DROP和TRUNCATE操作建议定期清理回收站,以释放空间。
-
数据安全性:
- 在关键业务场景下,建议开启回收站功能,防止误操作导致的数据丢失。
12. 总结
通过合理配置 recyclebin 和 ob_enable_truncate_flashback 系统变量,可以灵活控制回收站的行为,满足不同业务场景的需求。
-
启用回收站:
- 防止误删除操作带来的数据丢失。
- 提供数据恢复的可能性。
-
关闭回收站:
- 减少存储空间的占用。
- 提高系统的删除效率。
记住在执行 FLASHBACK 和 PURGE 等操作时,要遵循对象的从属关系和权限要求,确保数据库的稳定和安全。
相关文章:
OceanBase 回收站机制详解
OceanBase 回收站机制详解 在 OceanBase 数据库中,回收站机制用于在执行 DROP 或 TRUNCATE 等操作后,临时保存被删除的对象,以便在需要时进行恢复。以下是对回收站机制的详细说明: 1. 不同租户对回收站的访问权限 SYS 租户 权…...
Java特工队:潜入京东,高效获取商品详情的绝密行动
在这个由代码和逻辑编织的电商世界里,京东商品详情就像是被锁在高塔中的神秘卷轴,等待着勇敢的Java特工队成员去解救。今天,我们要讲述的是如何装备你的Java代码装备,化身为一名编程界的特工,潜入京东的API网络&#x…...
车易泊相机 —— 智能车位管理的得力助手
在当今社会,停车问题日益成为城市管理和人们日常生活中的一大难题。寻找车位耗费时间、车位被非法占用、停车管理效率低下等问题层出不穷。然而,车易泊相机的出现,为车位管理带来了全新的解决方案。 一、车易泊相机的强大功能 车易泊相机是一…...
C++初阶(七)--类和对象(4)
目录 编辑 一、再谈构造函数 1.构造函数体赋值 2.初始化列表 二、类型转换 1.隐式类型转换 2.explicit关键字 3.类类型之间的对象隐式转换 三、static成员函数 1.概念 2.特性 3.面试题: 四、友元函数 1.基本介绍 2.回顾: 3.友元类&am…...
Python 爬虫的寻宝大冒险:如何捕获 API 数据的宝藏
在这个信息爆炸的数字时代,数据就像是隐藏在网络深处的宝藏,等待着勇敢的探险家去发现。今天,我们要讲述的是如何成为一名 Python 爬虫探险家,装备你的代码工具,深入 API 的迷宫,捕获那些珍贵的数据宝藏。 …...
电力物联网环境下的售电研究
泛在电力物联网打破了传统能源网络的壁垒,形成了能源共享、信息互通、数据开放的能源物联网。泛在电力物联网环境下,可再生能源接入更为容易。更加开放的能源接人、更加丰富的信息获取以及更加智能的电力设备,促进了电力市场的进一步开放。 …...
Oracle视频基础1.1.4练习
1.1.4 dbb,ddabcPMON,SMON,LGWR,CKPT,DBWna5,b4,c2,d3,e1ad,a,c,b,eOracle instance,Oracle databaseSGA,background processcontrol file,data file,online redo file 以下是一篇关于 Oracle 基础习题 1.1.4 的博客: Oracle 基础习题解析:1.1.4 本篇文…...
【水下生物数据集】 水下生物识别 深度学习 目标检测 机器视觉 yolo(含数据集)
一、背景意义 随着全球海洋生态环境的日益变化,水下生物的监测和保护变得愈发重要。水下生物种类繁多,包括螃蟹、鱼类、水母、虾、小鱼和海星等,它们在海洋生态系统中扮演着关键角色。传统的水下生物监测方法通常依赖于人工观察,效…...
【宠物狗狗数据集】 犬类品种识别 宠物狗检测 深度学习 目标检测(含数据集)
一、背景意义 随着人们对宠物狗的喜爱日益增加,犬种的多样性也逐渐受到重视。狗狗不仅是家庭的好伴侣,更在多个领域中发挥着重要作用,如导盲、搜救、疗愈等。因此,准确识别和分类各种犬种显得尤为重要。传统的犬种识别方法往往依赖…...
C语言中的数组并非指针:深入理解数组和指针的区别
前言 在C语言中,数组和指针是两个非常重要的概念,它们在很多方面有着紧密的联系,但也存在显著的区别。尽管数组名有时可以像指针那样使用,但它们本质上并不是一回事。理解这些差异对于编写正确和高效的代码至关重要。本文将深入探…...
Topaz Video AI for Mac 视频无损放大软件安装教程【保姆级,操作简单轻松上手】
Mac分享吧 文章目录 Topaz Video AI for Mac 视频无损放大软件 安装完成,软件打开效果一、Topaz Video AI 视频无损放大软件 Mac电脑版——v5.3.5⚠️注意事项:1️⃣:下载软件2️⃣:安装软件,将安装包从左侧拖入右侧文…...
虚函数和纯虚函数是 C++ 中实现多态性的关键概念
虚函数(Virtual Function) 定义:虚函数是在基类中使用 virtual 关键字声明的函数,目的是允许派生类重写该函数。用途:通过虚函数,基类指针或引用可以调用派生类中重写的函数,从而实现动态多态性…...
计算机网络IP地址分类,子网掩码,子网划分复习资料
IP 地址的概念 IP 地址是独立于硬件地址的逻辑地址,它是由软件提供的地址。 IP 地址是网络层地址。 IP 编址方案和分类 IP 地址由 32 位二进制数构成,分为前缀(网络地址)和后缀(主机地址) 同一网段中每台计算机的 IP 地址是唯一的网络地址的分配全球…...
LINUX下使用SQLite查看.db数据库文件
目录 1. 安装 SQLite 对于 Debian/Ubuntu 系统: 2.安装完成后操作 打开 SQLite 命令行工具并连接到数据库文件 查看表结构 查询表中的数据 执行其他 SQL 操作 3. 退出 SQLite 命令行工具 4. 使用图形化工具(可选) 总结 在 Linux 环…...
基于uniapp微信小程序的校园二手书交易系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...
性能测试中的操作系统参数优化
目录 以下是一些针对性能测试的操作系统优化建议 关闭不必要的服务和程序: 更新系统和驱动程序: 优化电源管理设置: 调整内存配置: 网络配置优化: 磁盘I/O优化: 内核参数调整: 安全软件…...
rabbitmq高级特性(2)TTL、死信/延迟队列、事务与消息分发
目录 1.TTL 1.1.设置消息过期时间 1.2.设置队列过期时间 2.死信队列 2.1.介绍 2.2.演示 3.延迟队列 3.1.模拟实现延迟队列 3.2.延迟队列插件 4.事务与消息分发 4.1.事务 4.2.消息分发 1.TTL 所谓的ttl,就是过期时间。对于rabbitmq,可以设置…...
了解一下,RN中怎么加载 threejs的
在React Native(RN)中加载和使用Three.js,一个流行的3D图形库,通常需要一些额外的步骤,因为Three.js主要是为Web浏览器设计的,而React Native则使用原生的渲染引擎。不过,有一些方法可以在React…...
笔记整理—linux驱动开发部分(1)驱动梗概
驱动可以分为广义上的和狭义上的驱动。广义上的驱动是用于操作硬件的代码,而狭义上的驱动为基于内核系统之上让硬件去被操作的逻辑方法。 linux体系架构: 1.分层思想 :在OS中间还会有许多层。 : 2.驱动的上面是系统调用(API&…...
金融领域中的敏感性分析和期权价值计算相关的操作
代码主要进行了金融领域中的敏感性分析和期权价值计算相关的操作。首先通过一系列方程求解S3和S2的值,然后基于这些值以及给定的参数计算一些中间变量(a1、a2、a3、b1、b2、b3),最后利用多元正态分布函数(mvncdf)和一元正态分布函数(normcdf)计算期权价值C、净现值(NP…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
Qemu arm操作系统开发环境
使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...
【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验
Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...
【SpringBoot自动化部署】
SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...
Modbus RTU与Modbus TCP详解指南
目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...
