热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

还原点和闪回数据库

闪回数据库和还原点是两种与数据恢复相关的功能,它们用来替代按时间点恢复来撤消对数据库的改变。闪回数据库能让你将整个数据库

闪回数据库和还原点是两种与数据恢复相关的功能,它们用来替代按时间点恢复来撤消对数据库的改变。闪回数据库能让你将整个数据库

闪回数据库和还原点是两种与数据恢复相关的功能,它们用来替代按时间点恢复来撤消对数据库的改变。闪回数据库能让你将整个数据库进行回滚,使用指定时间窗口来撤消对数据库的改变。这类似于数据库的按时间点恢复。

还原点提供了与闪回数据库相关的能力它是另一种恢复操作。受保护的还原点,在特定的情况下,提供了闪回数据库完整的功能,允许你选择一个SCN并强制要求闪回数据库对这个SCN是可用的。

还原点和闪回数据库可以单独使用也可以一起使用。在这两种情况下,RMAN的flashback database命令或者flashback database语句实际上将数据库还原到一个指定的SCN所对应的状态,例如:

flashback database to restore point 'before_upgrade';
flashback databasae to scn 202381;

闪回数据库
闪回数据库,可以通过RMAN的flashback database命令和SQL*Plus的flashback database语句来完成。能够将数据库快速的从逻辑数据错误或用户错误中进行恢复。

它类似于传统的按时间点恢复一样,能够将数据库还原到过去某个时间点的状态。闪回数据库比按时间点恢复来快很多,因为闪回数据库不需要从备份中还原数据文件和从归档重做日志文件中应用相应的改变。

闪回数据库能被用来撤消对数据库不需要的改变。而数据文件完好无损。这包括将数据库还原到之前数据库化身对应的状态。这将撤消open resetlogs操作。

闪回数据库使用它自己的日志机制,它会在闪回区中创建闪回日志。只有在闪回日志是可用时才能使用闪回数据库。因此如果要使用这个功能就必须对数据库进行设置让其创建相关的闪回日志。

为了启用闪回数据库,需要设置闪回区和设置闪回保留策略目标来指定能够将数据库还原到过去某个时间点。

从启用闪回数据库开始,在定期的时间间隔内,数据库将会把每个数据文件中发生改变的数据块复制到闪回日志中。这些数据块镜像以后可用来重构数据文件的内容。

当数据库使用闪回数据库将数据库还原到过去的某些目标时间点时,,自从还原时间点开始发生改变的每个数据块将从闪回日志中复制目标时间点对应的数据块。然后应用自数据块被复制到闪回日志时间点开始的重做日志。

注意:在整个时间跨度对于闪回日志相应的重做日志必须都是可用的。

闪回数据库窗口
在一定范围SCN之间有足够的闪回日志数据来支持flashback database命令这就叫闪回数据库窗口。如果闪回区的空间太小,通过设置保留策略当为了给新生成的闪回日志文件分配空间可能会删除过期的闪回日志。根据闪回区的大小,必须被保留的其它备份和需要的闪回日志数据,这可能造成闪回数据库窗口比闪回保留目标的时间要短。

注意:闪回保留目标是一个目标,不是一个绝对受保护能执行闪回数据库的目标。

如果闪回区的大小不能存储为了满足保留策略所需要的闪回日志和其它文件,比如归档重做日志和其它备份。那么为了存储其它文件从最早的SCN开始的闪回日志可能因为空间问题而被删除。

闪回数据库窗口不能对可用闪回日志中的最早SCN进行向前的扩展。闪回日志不能备份到闪回区之外的目录。因此为了增加可用的闪回日志来满足闪回数据窗口,所以要给闪回区可用的最大存储空间。

这里也有一些操作比如删除表空间或收缩数据文件,这些是不能通过闪回数据进行撤消的。在这些操作执行之后,闪回窗口就会立即从这些操作之后重新计算。

如果因为闪回数据库窗口不满足flashback database的要求,按时间点恢复可以最大程度的完成相似的任务。

使用受保护的还原点是唯一能保证你使用闪回数据库能将数据库还原点指定时间点或闪回窗口的方法。

正常还原点
通过指定时间点或SCN来作为还原点的名称来创建还原点,在执行有restore point子句的命令时使用这种标签或别名来指定SCN。

如果可能对你执行的任何操作执行撤消,那么可以创建一个正常的还原点。还原点名称和SCN会被记录到控制文件中。如果后面需要使用闪回数据库,闪回表或按时间点恢复,可以使用还原点名称来指示这个目标时间来代替一个时间表达式或SCN。在可能被撤消的操作执行前定义一个正常的还原点来消除需要手工记录SCN的需要,或在执行闪回查询时查找正确的SCN的需要。

正常还原点是非常轻量级的。控制文件可以包含上千个正常还原点而不会影响数据库的性能。正常还原点最终从控制文件中移除,而不是手工删除,那么它们将不再需要进行维护。

支持还原点的命令
在下面的上下文中还原点用来指定目标SCN:
1.RMAN的recover database和flashback database命令

2.SQL*Plus中的flashback database语句

注意:通常来说,受保护的还原点可以在任何使用正常还原点的操作中作为SCN的别名来使用。除非另有说明,否则正常还原点的使用方法也适用于受保护的还原点。

受保护的还原点
与正常还原点一样,受保护的还原点在恢复操作中也能作为SCN的别名。然而,它们也对闪回数据库提供了特定的功能。

在一个特定的SCN创建一个受保护的还原点可以强制通过执行闪回数据库能将数据库还原到这个SCN所处的状态,即使数据库没有启用闪回日志也能保证。如果闪回日志被启用,创建受保护的还原点强制闪回日志保留策略能满足将数据库闪回到创建受保护还原点后的任意时间点。

受保护还原点能用于将整个数据库还原到一个已知的状态良好的时间点,前提条件是闪回区有足够的空间来存储闪回日志。使用闪回数据库,受nologging操作影响的直接路径插入也能使用受保护的还原点来进行还原操作。

受保护的还原点替代存储快照
在实践中,受保护的还原点能够有效地替代存储快照,它通常用来在一些危险操作之前来保护数据库,比如大范围的更新,应用程序打补丁,或者升级。与创建快照或复制数据库再进行这些操作的相比,可以创建一个受保护的还原点然后执行这些危险操作,只要确只保留必要的闪回日志就行。

闪回数据库和受保护还原点的日志
闪回数据库和受保护还原点的日志是基于在改变应用前被捕获的数据块镜像,因此这些镜像能用来在执行flashback database命令时将数据文件还原到之前时间点所对应的状态。

正常闪回日志和受保护还原点的日志的主要差别就是日志是否会因为闪回区可用空间的压力而被删除。这些差别影响日志可用空间的使用和数据库的性能。

是否对闪回数据库,受保护的还原点启用日志都依赖于你的恢复目标,以及对性能的影响和这些功能对空间的使用。

推荐阅读
  • 配置PHPStudy环境并使用DVWA进行Web安全测试
    本文详细介绍了如何在PHPStudy环境下配置DVWA( Damn Vulnerable Web Application ),并利用该平台进行SQL注入和XSS攻击的练习。通过此过程,读者可以熟悉常见的Web漏洞及其利用方法。 ... [详细]
  • 本文详细介绍如何使用 Apache Spark 执行基本任务,包括启动 Spark Shell、运行示例程序以及编写简单的 WordCount 程序。同时提供了参数配置的注意事项和优化建议。 ... [详细]
  • 在寻找轻量级Ruby Web框架的过程中,您可能会遇到Sinatra和Ramaze。两者都以简洁、轻便著称,但它们之间存在一些关键区别。本文将探讨这些差异,并提供详细的分析,帮助您做出最佳选择。 ... [详细]
  • 本文介绍了两款提高Android开发效率的插件:Lombok和SQLScout。Lombok可以帮助开发者自动处理实体类的Getter和Setter方法,使代码更加简洁;而SQLScout则提供了直观的SQLite数据库查看功能,极大地简化了数据库调试过程。 ... [详细]
  • 当unique验证运到图片上传时
    2019独角兽企业重金招聘Python工程师标准model:public$imageFile;publicfunctionrules(){return[[[na ... [详细]
  • MySQL Debug 模式的实现与应用
    本文详细介绍了如何启用和使用 MySQL 的调试模式,包括编译选项、环境变量配置以及调试信息的解析。通过实际案例展示了如何利用调试模式解决客户端无法连接服务器的问题。 ... [详细]
  • 解决MacOS Catalina升级后VMware Fusion黑屏问题的详细指南
    本文深入探讨了如何在MacOS Catalina升级后解决VMware Fusion黑屏的问题。通过详细的步骤和代码示例,帮助用户快速恢复虚拟机的正常运行,并提供了额外的安全建议。适用于希望提升工作效率或学习新技术的读者。 ... [详细]
  • 本文介绍如何通过SQL查询来统计不同职位类型的员工当前薪资的平均值,并将结果按照平均薪资升序排列。 ... [详细]
  • 如何在SQL Server 2008中通过Profiler跟踪特定数据库及获取客户端信息
    本文介绍如何利用SQL Server Profiler工具来监控特定数据库的操作,并获取执行这些操作的客户端计算机名和账户名。步骤包括创建新的跟踪、配置跟踪属性以及设置列筛选器以精确过滤数据。 ... [详细]
  • 如何从python读取sql[mysql基础教程]
    从python读取sql的方法:1、利用python内置的open函数读入sql文件;2、利用第三方库pymysql中的connect函数连接mysql服务器;3、利用第三方库pa ... [详细]
  • 本文探讨了如何使用pg-promise库在PostgreSQL中高效地批量插入多条记录,包括通过事务和单一查询两种方法。 ... [详细]
  • MySQL 'Too Many Connections' 错误处理及优化方案
    本文详细介绍了如何诊断和解决MySQL数据库中出现的‘Too Many Connections’错误,包括查看当前连接状态、调整配置文件以及优化应用代码等方法。 ... [详细]
  • 本文详细介绍了MySQL中的存储过程,包括其定义、优势与劣势,并提供了创建、调用及删除存储过程的具体示例,旨在帮助开发者更好地利用这一数据库特性。 ... [详细]
  • 最新计算机专业原创毕业设计参考选题都有源码+数据库是近期作品ling取参考你的选题刚好在下面有,有时间看到机会给您发1ssm资源循环利用2springboot校园考勤系统3ssm防 ... [详细]
  • 请看|间隔时间_Postgresql 主从复制 ... [详细]
author-avatar
厉害了
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有