首页 > 数据库 >成为MySQL DBA后,再看ORACLE数据库(十一、闪回技术)

成为MySQL DBA后,再看ORACLE数据库(十一、闪回技术)

时间:2024-06-19 22:58:47浏览次数:16  
标签:闪回 DBA 恢复 数据库 事务 查询 MySQL 某个

前文说到ORACLE通过undo实现数据的多版本模型,同样的道理ORACLE还通过undo实现了闪回查询的特性,本文将总结ORACLE的几种闪回技术。闪回技术是Oracle数据库独有的特性,支持各级恢复,包括行、事务、表、表空间和数据库范围。采用闪回技术,可以针对行级和事务级发生过变化的数据进行恢复,减少了数据恢复的时间,而且操作简单,通过SQL语句就可以实现数据的恢复,大大提升了数据库恢复的效率。按照闪回的原理ORACLE的闪回技术可以分为以下三类:

1.基于undo表空间:闪回查询、闪回版本查询、闪回事务查询、闪回表;

2.基于回收站(Recycle Bin):闪回删除;

3.基于闪回恢复区(Flash Recovery Area)中的闪回日志:闪回数据库;

一、闪回查询(Flashback Query)

闪回查询是指查询过去某个时间点或某个SCN值对应的表中的数据信息,即可以从回滚段中读取一定时间内对表进行操作的数据,从而恢复错误的DML操作。闪回查询的语句和实验步骤如下所示,可以通过scn或时间点闪回查询到过去某个时间的数据。

select * from xxx as of scn|timestamp xxx;

 

二、闪回版本查询(Flashback Version Query)

闪回版本查询是指查询过去某个时间段或某个SCN段内表中数据的变化情况。通过以下SQL可以看到表中ID,ADDR两列的数据随着事务的变化情况。

select versions_xid,versions_operation,versions_startscn,versions_endscn from xxx versions between scn minvalue and maxvalue;

三、闪回事务查询(Flashback Transaction Query)

闪回事务查询是指查看某个事务或所有事务在过去一段时间对数据进行的修改。通常需要先通过闪回版本查询获取事务的xid号,然后再通过闪回事务查询获取undo_sql,这样就可以执行undo_sql对已提交的事务进行撤销。使用闪回事务查询需要开启补充日志,并且给应用用户授予select any transaction权限。

select undo_sql from flashback_transaction_query where xid='versions_xid';

四、闪回表(Flashback TABLE)

闪回表是指将表恢复到过去的某个时间点或某个SCN值时的状态。闪回表的前提是需要先对表开启行迁移alter table enable row movement。闪回表可以直接将表恢复到过去的状态,所以应该谨慎操作,生产环境最好先通过闪回查询确认好数据再进行闪回操作。

flashback table xxxx to scn|timestamp

五、闪回删除(Flashback DROP)

闪回删除是指将已经删除的表及表上的索引恢复到删除前的状态,但索引名不会恢复到删除前的状态。闪回删除是基于回收站完成的,据库每个用户都有一个回收站,但这个回收站并不实际开辟空间(只是个逻辑标记),当drop table时(非 purge),原来的表所使用的段中的数据并没有真正的删除,实际上是以回收站方式重命名。该段所在表空间不足时,回收站中的信息会被自动清除。

flashback table xxx to before drop;

 

六、闪回数据库(Flashback Database)

闪回数据库是指将数据库恢复到过去某个时间点或某个SCN值时的状态。当数据库发生逻辑错误比如误删除用户时,可以快速将数据库恢复到过去的某个时间点从而找回被删除的用户。当数据库开启了闪回,发生变化的数据块会不断从数据库缓冲区缓存中复制到闪回缓冲区,然后,称为恢复写入器(Recovery Writer)的后台进程会将这些数据刷新到磁盘中的闪回日志文件中。闪回的过程,是一个提取闪回日志,然后将之前某个时间点的块映像复制回数据文件的过程,由于只需要物理地恢复变化的数据块,所以这个过程非常快。除了需要闪回日志,还需要重做日志来完成闪回到一致的数据库版本,因此数据库要处于归档模式。由于是相当于数据库的不完整恢复,闪回点之后的所有工作就丢失了,所以只能以resetlogs模式打开数据库重置redo log。闪回数据库的前提是需要先配置好快速恢复区,并在mount状态开启闪回数据库。

闪回数据库的语法和实验如下所示,展示了如何通过闪回数据库到具体的SCN从而找回了被删除的用户。

flashback database to scn|timestamp xxx;

 

标签:闪回,DBA,恢复,数据库,事务,查询,MySQL,某个
From: https://www.cnblogs.com/coygfly/p/18254614

相关文章

  • MySQL备份与恢复
    目录1.数据库备份的分类1.1数据备份的重要性1.2数据库备份的分类1.3常见的备份方法2.MySQL完全备份与恢复2.1MySQL完全备份2.2数据库完全备份分类2.3MySQL物理冷备份及恢复2.4mysqldump进行逻辑备份2.4.1mysqldump备份数据库2.4.2mysqldump备份数据表3.......
  • MySQL入门操作 10.0
    本文仅仅为了加强个人记忆,如果要学习建议点击链接去原文学习,参考学习文章:原文链接:https://blog.csdn.net/YRB20/article/details/117999665 触发器:注意上述格式中的on,触发器是作用在相应的表上,要设定自己所需要的表; 示例写法: 与创建存储过程相同,都是要使用:delimiter$$......
  • Linux部署Mysql(服务器)
     远程服务器:CentOS7.6(本地VM也一样)连接:XShell7与Xftp7 1. 下载tar包与准备工作查看系统的glibc版本:(我的是2.17)rpm-qa|grepglibc 官网下载对应的Mysqltar包:https://dev.mysql.com/downloads/mysql/ #查找与mysql相关的软件包......
  • 1950 Springboot汽修技能点评系统idea开发mysql数据库APP应用java编程计算机网页源码m
    一、源码特点 springboot汽修技能点评系统是一套完善的信息系统,结合springboot框架和bootstrap完成本系统,对理解JSPjava编程开发语言有帮助系统采用springboot框架(MVC模式开发),系统具有完整的源代码和数据库,系统主要采用B/S模式开发。前段主要技术bootstrap.cssjquery......
  • MySQL 查询数据库响应时长详解
    前言作为一名测试工程师,在性能测试中,查询数据库的响应时长是一个重要指标。MySQL提供了多种方法来监控和优化查询性能。本文将详细介绍如何使用MySQL的内置功能和工具来查询数据库响应时长,并分享一些性能优化的技巧。启用查询日志开启慢查询日志慢查询日志用于记录执......
  • linux中搭建mysql服务
    下载mysql安装包wgethttps://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz解压压缩包tar-xvfmysql-5.7.27-linux-glibc2.12-x86_64.tar.gz#移动文件夹mvmysql-5.7.27-linux-glibc2.12-x86_64/usr/local/mysqlmysql用......
  • MYSQL最左匹配原则及其底层逻辑
    目录前言一、最左匹配原则示例1.导入测试数据-索引(a,b,c)2.全值匹配查询3.连续匹配查询​编辑4.不连续匹配查询三、底层原理详解1.MYSQL优化器2.最左匹配原理前言最左优先,以最左边的为起点任何连续的索引都能匹配上。同时遇到范围查询(>、<、between、like)就会......
  • MySql入门操作集 6.0
    索引与完整性: 就是键之类的,通过键进行索引;看上图存在四种类型:nollnullprimarykeyuniqueforeignkey  对于键的设定可以在创建表的时候就添加相应的键:记得主键只设定一个作为索引吧好像;一般不设定实际意义,只是给他做一个标记作用用于索引其他的书写格式: 使......
  • mysql-connector-java 驱动jar包下載
    地址MySQL::MySQLDownloads,点击网址,进入mysql官网首页,我们点击downloads(下载)然后将页面往下拉,点击如图所画的选择,进入点击Connector/J,表示的java语言连接的数据库驱动器,如果是Python则选择下面Python为后缀的Connector,同理其他语言则选择对应的即可。因为我用的是Java,......
  • MYSQL 数字(Aggregate)函数
    目录1、AVG()2、MAX()3、MIN()4、SUM()5、COUNT()6、LIMIT()1、AVG()解释:返回数值列(字段)的平均值。语法格式:SELECTAVG(column_name)FROMtable_name中文注释:select AVG(数值列/字段)from表名;用法:SELECTAVG(column_name)FROMtable_name2、MAX()解......