Oracle数据库闪回功能详解和相关命令总结

 更新时间:2023年07月24日 09:43:45   作者:学无止境的小一  
这篇文章主要给大家介绍了关于Oracle数据库闪回功能详解和相关命令总结的相关资料,闪回技术(Flashback),是Oracle提供的能使数据库整体或局部回到"过去"的闪回功能的总称,主要用于对抗人为错误,需要的朋友可以参考下

前言

今日看了Oracle原厂老师讲的数据库闪回技术的公开课,感觉受益匪浅。整理了一下关于数据库闪回功能的一些知识和相关测试,在此做下分享。

什么是闪回?

Oracle数据库闪回技术是一组独特而丰富的数据恢复解决方案,通过有选择地、有效地消除错误的影响,可以逆转人为错误。
查看数据的过去状态

可沿时间轴向前或向后闪回

协助用户进行错误分析和恢复

简单的命令行操作(或者DBMS_FLASHBACK包)

闪回时间与数据库大小无关

闪回支持不同级别的恢复,包括行、事务、表和整个数据库:

  • Flashback Database
  • Flashback Table
  • Flashback Drop
  • Flashback Transaction
  • Flashback Transaction Query
  • Flashback Query
  • Flashback Version Query

基于UNDO的闪回:闪回查询、闪回版本查询、闪回表

闪回查询技术

闪回查询某精确时间点
select * from table_name AS OF TIMESTAMP TO_TIMESTAMP('2023-02-23 13:14:00', 'YYYY-MM-DD HH24:MI:SS');
闪回查询到多久之前(例如 一分钟前)
select * from table_name AS OF TIMESTAMP sysdate-1/24/60;
闪回查询到指定scn
select * from table_name as of scn 55124124;

闪回版本查询技术

查看某一时间段内数据的变化

SELECT versions_startscn,
       versions_starttime,
       versions_endscn,
       versions_endtime,
       versions_xid,
       versions_operation,
       last_name,
       salary
  FROM employees VERSIONS BETWEEN TIMESTAMPTO_TIMESTAMP('2023-03-08 14:00:00', 'YYYY-MM-DD HH24:MI:SS') AND TO_TIMESTAMP('2023-03-08 17:00:00', 'YYYY-MM-DD HH24:MI:SS')
 WHERE first_name = 'John';

字段含义

  • VERSIONS_STARTSCN:数据版本被创建时的SCN
  • VERSIONS_STARTTIME:数据版本被创建时的时间戳
  • VERSIONS_ENDSCN:数据版本消逝时的SCN
  • VERSIONS_ENDTIME:数据版本消逝时的时间戳
  • VERSIONS_XID:数据版本被创建时的事务号
  • VERSIONS_OPERATION: 数据版本创建时的事务类型

闪回表技术

可以将表恢复到过去的指定时间点

开启行移动功能
alter table table_name enable row movement;
闪回表到指定时间点
flashback table table_name to timestamp to_timestamp('2023-02-23 13:14:00','yyyy-mm-dd hh24:mi:ss');
闪回表到多久之前
flashback table table_name to timestamp to sysdate-1/24/60;
闪回表到指定scn号
flashback table table_name to scn 3823947923;

FDA闪回数据归档技术

因为undo有保留时间限制,可以被覆盖,时间久远的数据无法通过undo进行闪回,此时可以利用闪回数据归档技术,根据时间限制将undo数据持久化在其他表空间上,不受undo的时间限制

闪回数据归档步骤:

  1. 创建一个供闪回数据库使用的表空间在该表空间
  2. 创建闪回数据归档,时间期限自定义
  3. 创建一个用户并授予DBA的角色
  4. 授予用户操作的必要权限登录
  5. 创建一个表启用闪回数据归档
  6. 执行查询来确定归档创建的对象
先创建普通表空间   然后在表空间中创建FDA
CREATE FLASHBACK ARCHIVE DEFAULT fla1 TABLESPACE tbs1QUOTA 10G RETENTION 1 YEAR;

基于Recyclebin(回收站)的闪回删除技术

闪回删除技术:

针对非system 表空间

适用于通过drop 操作和非purge 的方式删除的对象可以在recyclebin使用闪回删除操作还原删除的对象(包括相关索引,约束,触发器)

回收站(recycle bin)

通过数据字典视图快速查看:USER_RECYCLEBIN 和DBA_RECYCLEBIN。

删除的表在回收站中被重新命名

闪回被删除的表
flashback table table_name to before drop;

基于闪回数据库日志的闪回数据库技术

需开启数据库闪回日志

查看数据库是否开启闪回日志

select flashback_on from v$database;

开启闪回日志之前必须要设置闪回恢复区的路径和大小

show parameter recover

总结 

到此这篇关于Oracle数据库闪回功能详解和相关命令总结的文章就介绍到这了,更多相关Oracle闪回功能内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 关于sql脚本导入Oracle时重复生成check约束的问题解决

    关于sql脚本导入Oracle时重复生成check约束的问题解决

    这篇文章主要给大家介绍了关于sql脚本导入Oracle时重复生成check约束的问题解决方法,文中给出了详细的检查步骤,对大家理解和解决这个问题具有很好的帮助,需要的朋友们下面来一起看看吧。
    2017-05-05
  • oracle中创建序列及序列补零实例详解

    oracle中创建序列及序列补零实例详解

    这篇文章主要介绍了oracle中创建序列及序列补零实例详解的相关资料,需要的朋友可以参考下
    2017-03-03
  • oracle错误ORA-00054资源正忙解决办法

    oracle错误ORA-00054资源正忙解决办法

    ORA-00054是Oracle数据库中的一个常见错误,表示用户试图在正在被锁定的资源上执行不允许的操作,导致资源处于忙碌状态,下面这篇文章主要给大家介绍了关于oracle错误ORA-00054资源正忙的解决办法,需要的朋友可以参考下
    2024-01-01
  • Oracle中三种表连接算法的总结

    Oracle中三种表连接算法的总结

    Oracle有三种表连接技术,分别是嵌套连接、合并连接和哈希连接。以下就是对这三种表连接算法进行了详细的分析介绍,需要的朋友可以参考下
    2013-07-07
  • Oracle 批处理自动备份bat脚本语句的步骤详解

    Oracle 批处理自动备份bat脚本语句的步骤详解

    这篇文章主要介绍了Oracle 批处理自动备份bat脚本语句的步骤详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • Oracle数据库中的用户授权、取消权限方式

    Oracle数据库中的用户授权、取消权限方式

    Oracle数据库中的用户授权分为系统权限和对象权限,系统权限允许用户执行特定的系统级操作,如创建表或启动事务,对象权限针对特定数据库对象,如表、视图或过程,包括SELECT、INSERT、UPDATE和DELETE等,角色是一组权限的集合,可以简化权限管理
    2024-12-12
  • oracle 集合

    oracle 集合

    pl/sql预定义了在varray 和嵌套表实例上进行调用的方法。这些方法能在集合上执行一定的功能。
    2009-06-06
  • Oracle重建索引Shell脚本、SQL脚本分享

    Oracle重建索引Shell脚本、SQL脚本分享

    这篇文章主要介绍了Oracle重建索引Shell脚本、SQL脚本分享,索引是提高数据库查询性能的有力武器,定期重建索引是很有必要的事情,需要的朋友可以参考下
    2014-09-09
  • oracle中字符串连接符||使用

    oracle中字符串连接符||使用

    这篇文章主要介绍了oracle中字符串连接符||使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • Oracle 19c的参数sec_case_sensitive_logon与ORA-01017错误问题分析

    Oracle 19c的参数sec_case_sensitive_logon与ORA-01017错误问题分析

    这篇文章主要介绍了Oracle 19c的参数sec_case_sensitive_logon与ORA-01017错误,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04

最新评论