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…...
GraphQL系列 - 第1讲 GraphQL语法入门
目录 一、介绍GraphQL二、GraphQL基本使用方法三、Schema 定义语言 (SDL)3.1 类型定义1)对象类型2)标量类型3)枚举类型4)输入类型5)列表类型6)非空类型7)接口类型8)联合类型 3.2 查询…...
015:地理信息系统开发平台ArcGIS Engine10.2与ArcGIS SDK for the Microsoft .NET Framework安装教程
摘要:本文详细介绍地理信息系统开发平台ArcGIS Engine10.2与ArcGIS SDK for the Microsoft .NET Framework的安装流程。 一、软件介绍 ArcGIS Engine 10.2是由Esri公司开发的一款强大的GIS(地理信息系统)开发平台。该软件基于ArcGIS 10.2 fo…...
Android——显式/隐式Intent
概述 在Android中,Intent是各个组件之间信息通信的桥梁,它用于Android各组件的通信。 Intent 的组成部分 一、显式 Intent 第一种方式 Intent intent new Intent(this, ActFinishActivity.class);startActivity(intent);第二种方式 Intent intent …...
【鸿蒙HarmonyOS实战:通过华为应用市场上架测试版App实现HBuilder X打包的UniApp项目的app转hap教程(邀请码)方式教程详解】
鸿蒙HarmonyOS实战:通过华为应用市场上架测试版App实现HBuilder X打包的UniApp项目的app转hap教程(邀请码)方式详解 在使用uniapp打包的鸿蒙项目的过程中,由于生成的是app文件,而hdc传给鸿蒙HarmonyOS系统需要的是hap文…...
一篇文章入门傅里叶变换
文章目录 傅里叶变换欧拉公式傅里叶变换绕圈记录法质心记录法傅里叶变换公式第一步:旋转的表示第二步:缠绕的表示第三步:质心的表示最终步:整理积分限和系数 参考文献 傅里叶变换 在学习傅里叶变换之前,我们先来了解一…...
基于python的语音识别与蓝牙通信的温控系统
基于python的语音识别与蓝牙通信的温控系统毕设项目 大家好,我是陈辰学长,一名在 Java 圈辛勤劳作的码农。今日,要和大家分享的是一款基于python的语音识别与蓝牙通信的温控系统毕设项目。项目源码以及部署相关事宜,请联系陈辰学…...
Pandas Series学习
1.Series简介 Pandas Series类似表格的列(column),类似于一维数组,可以保存任何数据类型,具有标签(索引),使得数据在处理分析时更具灵活性。Series数据结构是非常有用的,…...
为什么要探索太空?这对我们有什么好处?
几个世纪以来,人类一直着迷于宇宙的奥秘,这驱使我们冒险离开地球,去探索太阳系之外的未知环境。在当今世界,我们为什么要进行太空探索之旅这个问题,远不止出于单纯的好奇。 归根结底,太空探索是一种必要之…...
uniapp开发【选择地址-省市区功能】,直接套用即可
一、效果展示 二、代码 <template><view><view class="user_info"><view class="item"...
3个模型的交互式多模型IMM,基于EKF的目标跟踪实例(附MATLAB代码)
文章目录 3个模型的IMM源代码运行结果代码介绍总结 3个模型的IMM 代码实现了基于 I M M IMM IMM(Interacting Multiple Model)算法的目标跟踪。它使用三种不同的运动模型(匀速直线运动、左转弯和右转弯)来预测目标的位置&#x…...
wordpress菜单导入导出/搜索排名优化公司
Plates 是原生 PHP 模板系统,非常容易使用和扩展,灵感来源于 Twig 模板引擎,包括现代化的模板语言功能。Plates 主要是为在编译模板语言中选择使用原生 PHP 模板的开发者提供的。Here is a simple example of how to use Plates. We will ass…...
什么网站有高端定制案例/福州seo网站排名
命令对应英文作用lslist查看当前文件夹下的内容pwdprint wrok directory查看当前所在文件夹cd [目录名]change directory切换文件夹touch [文件名]touch如果文件不存在,新建文件mkdir [目录名]make directory创建目录rm [文件名]remove删除指定的文件名clearclear清…...
制作竞拍网站/网站建设培训
1.明确学习目标 参加Java培训的目标可以是找一份相关的工作,亦或者是帮助自己目前工作进行提升,拿到更高的薪资。 Java培训后月薪过万是非常普遍的事,2-3年工作经验拿到月薪1万5在一线城市也很正常,能力出众的甚至能拿到2万甚至更…...
装修网线用几类/长春关键词优化报价
FFMPEG使用的是C99。而VC支持的是C89(不支持C99)。因此VC一般情况下是无法编译FFMPEG的源代码的。> C标准 c语言起源,C99 C11- https://baike.baidu.com/item/c%E8%AF%AD%E8%A8%80/105958?fraladdin C89标准和C99标准C11标准的区别- http…...
无锡网站推广公司/app制作公司
转载于:https://www.cnblogs.com/nkwy2012/p/7975808.html...
广东网站设计的公司/推广引流方法有哪些推广方法
今天为大家带来的内容比较实用,主要还是针对零基础的小伙伴,话不多说,直接开始码(本文内容用的是第一人称) 平常我都是直接执行 pip install 安装的第三方库,很多教程也是这么介绍的,一直以来我…...