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…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
