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…...

IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...

业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...

基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...

九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...

算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
Go语言多线程问题
打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...