热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

详解Oracle数据库备份恢复闪回机制,值得收藏!

概述Oracle9i开始支持闪回,Oracle10g开始全面支持闪回功能,Oracle11g有所完善,为我们快速的恢复数据,查询历史数据提供了很大的便捷方法闪回设置

概述Oracle 9i 开始支持闪回,Oracle10g开始全面支持闪回功能,Oracle11g有所完善,为我们快速的恢复数据,查询历史数据提供了很大的便捷方法闪回设置

今天主要对Oracle常用闪回使用做些详细介绍,其中对于不常用的事务和版本闪回,这里就不多做介绍了闪回设置

01Oracle闪回概述这里用表格来说明

详解Oracle数据库备份恢复---闪回机制<strong>闪回设置</strong>,值得收藏!

02Oracle闪回使用详解1、闪回开启

(1)开启闪回必要条件

a.开启归档日志

SQL> archive log list; ##如未开启闪回设置,在mount状态执行alter database archivelog;b.设置合理的闪回区

db_recovery_file_dest:指定闪回恢复区的位置

db_recovery_file_dest_size:指定闪回恢复区的可用空间大小

db_flashback_retention_target:指定数据库可以回退的时间闪回设置,单位为分钟,默认1440分钟(1天),实际取决于闪回区大小

(2)检查是否开启闪回

SQL> select flashback_on from v$database;详解Oracle数据库备份恢复---闪回机制<strong>闪回设置</strong>,值得收藏!

(3)开启闪回

a.开启归档

mount状态:alter database archivelog;b.设置闪回区

SQL> alter system set db_recovery_file_dest='/home/U01/app/oracle/fast_recovery_area' scope=both;SQL> alter system set db_recovery_file_dest_size=60G scope=both;SQL> alter system set db_flashback_retention_target=4320 scope=both;c.开启flashback (10g在mount开启)

SQL> alter database flashback on;详解Oracle数据库备份恢复---闪回机制<strong>闪回设置</strong>,值得收藏!

(4)确定闪回开启

SQL> select flashback_on from v$database;2、闪回使用

(1)闪回查询

闪回查询主要是根据Undo表空间数据进行多版本查询闪回设置,针对v$和x$动态性能视图无效,但对DBA_、ALL_、USER_是有效的

a.闪回查询

允许用户查询过去某个时间点的数据,用以重构由于意外删除或更改的数据,数据不会变化闪回设置

SQL> select * from scott.dept;SQL> delete from scott.dept where deptno=40;SQL> commit;SQL> select * from scott.dept as of timestamp sysdate-10/1440;SQL> select * from scott.dept as of timestamp to_timestamp('2019-05-18 12:30:00','yyyy-mm-dd hh24:mi:ss');详解Oracle数据库备份恢复---闪回机制<strong>闪回设置</strong>,值得收藏!

b.闪回版本查询

用于查询行级数据库随时间变化的方法

c.闪回事务查询

用于提供查看事务级别数据库变化的方法

(2)闪回表(update/insert/delete)

闪回表就是对表的数据做回退,回退到之前的某个时间点,其利用的是undo的历史数据,与undo_retention设置有关,默认是14400分钟(1天)闪回设置。同样,sys用户表空间不支持闪回表,要想表闪回,需要允许表启动行迁移。

闪回表示例:

SQL> flashback table scott.dept to timestamp to_timestamp('2019-05-18 12:30:00','yyyy-mm-dd hh24:mi:ss');SQL> select row_movement from dba_tables where table_name='DEPT' and owner='SCOTT';详解Oracle数据库备份恢复---闪回机制<strong>闪回设置</strong>,值得收藏!

SQL> alter table scott.dept enable row movement; SQL> flashback table scott.dept to timestamp to_timestamp('2019-05-18 12:30:00','yyyy-mm-dd hh24:mi:ss');SQL> select * from scott.dept;SQL> alter table scott.dept disable row movement;详解Oracle数据库备份恢复---闪回机制<strong>闪回设置</strong>,值得收藏!

(3)闪回DROP(drop table)

当一个表被drop掉,表会被放入recyclebin回收站,可通过回收站做表的闪回闪回设置。表上的索引、约束等同样会被恢复。不支持sys/system用户表空间对象,可通过alter system set recyclebin=off;关闭回收站功能

即使不开始flashback,只要开启了recyclebin,那么就可以闪回DROP表闪回设置

但如果连续覆盖,就需要指定恢复的表名,如果已经存在表,则需要恢复重命名闪回设置

(4)闪回数据库(truncate/多表数据变更)

数据库闪回必须在mounted状态下进行闪回设置,基于快照的可以再open下进行闪回库

闪回数据库主要是将数据库还原值过去的某个时间点或SCN闪回设置,用于数据库出现逻辑错误时,需要open database resetlogs

a.全库闪回

闪回整个数据库到XX个时间点

b.快照闪回

针对主库和备库都可以创建闪回快照点闪回设置,然后恢复到指定的快照点,但主库一旦恢复到快照点,备库的同步则需要重新同步

c.闪回snapshot standby

此功能在11GR2非常实用闪回设置,可自动创建闪回点、开启闪回日志,可完成线上数据测试后,然后做数据库闪回恢复主备关系

(5)闪回归档(增加、修改、重命名、删除表的列、truncate表、修改表的约束、以及修改分区表的分区规范)

03闪回语句1、闪回数据库

FLASHBACK DATABASE TO TIMESTAMP to_timestamp('2019-05-18 12:30:00','yyyy-mm-dd HH24:MI:SS');flashback database to scn 16813234;2、闪回DROP

其中table_name可以是删除表名称闪回设置,也可以是别名

flashback table table_name to before drop;flashback table table_name to before drop rename to table_name_new;3、闪回表

flashback table table_name to scn scn_number;flashback table table_name to timestamp to_timestamp('2019-05-18 12:30:00','yyyy-mm-dd HH24:MI:SS');4、闪回查询

select * from table_name as of timestamp to_timestamp('2019-05-18 12:30:00','yyyy-mm-dd HH24:MI:SS');select * from scott.dept as of scn 16801523;5、闪回快照

create restore point before_20190518 guarantee flashback database;flashback database to restore point before_20190518 ;闪回这块的内容还是比较多的闪回设置,后面我在单独整一个excel文档分享下吧,后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~

详解Oracle数据库备份恢复---闪回机制<strong>闪回设置</strong>,值得收藏!


推荐阅读
  • DAO(Data Access Object)模式是一种用于抽象和封装所有对数据库或其他持久化机制访问的方法,它通过提供一个统一的接口来隐藏底层数据访问的复杂性。 ... [详细]
  • oracle c3p0 dword 60,web_day10 dbcp c3p0 dbutils
    createdatabasemydbcharactersetutf8;alertdatabasemydbcharactersetutf8;1.自定义连接池为了不去经常创建连接和释放 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • 在深入掌握Spring框架的事务管理之前,了解其背后的数据库事务基础至关重要。Spring的事务管理功能虽然强大且灵活,但其核心依赖于数据库自身的事务处理机制。因此,熟悉数据库事务的基本概念和特性是必不可少的。这包括事务的ACID属性、隔离级别以及常见的事务管理策略等。通过这些基础知识的学习,可以更好地理解和应用Spring中的事务管理配置。 ... [详细]
  • 在Android应用开发中,实现与MySQL数据库的连接是一项重要的技术任务。本文详细介绍了Android连接MySQL数据库的操作流程和技术要点。首先,Android平台提供了SQLiteOpenHelper类作为数据库辅助工具,用于创建或打开数据库。开发者可以通过继承并扩展该类,实现对数据库的初始化和版本管理。此外,文章还探讨了使用第三方库如Retrofit或Volley进行网络请求,以及如何通过JSON格式交换数据,确保与MySQL服务器的高效通信。 ... [详细]
  • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
    大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 在使用 Cacti 进行监控时,发现已运行的转码机未产生流量,导致 Cacti 监控界面显示该转码机处于宕机状态。进一步检查 Cacti 日志,发现数据库中存在 SQL 查询失败的问题,错误代码为 145。此问题可能是由于数据库表损坏或索引失效所致,建议对相关表进行修复操作以恢复监控功能。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 在本文中,我们将探讨如何在Docker环境中高效地管理和利用数据库。首先,需要安装Docker Desktop以确保本地环境准备就绪。接下来,可以从Docker Hub中选择合适的数据库镜像,并通过简单的命令将其拉取到本地。此外,我们还将介绍如何配置和优化这些数据库容器,以实现最佳性能和安全性。 ... [详细]
  • 本文详细介绍了在 Oracle 数据库中使用 MyBatis 实现增删改查操作的方法。针对查询操作,文章解释了如何通过创建字段映射来处理数据库字段风格与 Java 对象之间的差异,确保查询结果能够正确映射到持久层对象。此外,还探讨了插入、更新和删除操作的具体实现及其最佳实践,帮助开发者高效地管理和操作 Oracle 数据库中的数据。 ... [详细]
  • 在将Excel数据导入MySQL数据库的过程中,如何确保不会生成重复记录?本文介绍了一种方法,通过PHP脚本检查数据库中是否存在相同的“Code”字段值,从而避免重复记录的产生。该方法不仅提高了数据导入的准确性,还增强了系统的健壮性。 ... [详细]
  • 针对MySQL Undo空间满载及Oracle Undo表空间溢出的问题,本文详细探讨了其原因与解决策略。首先,通过启动SQL*Plus并以SYS用户身份登录数据库,查询当前数据库的UNDO表空间名称,确认当前状态。接着,分析导致Undo空间满载的常见原因,如长时间运行的事务、频繁的更新操作等,并提出相应的解决方案,包括调整Undo表空间大小、优化事务管理、定期清理历史数据等。最后,结合实际案例,提供具体的实施步骤和注意事项,帮助DBA有效应对这些问题。 ... [详细]
author-avatar
呀yuan-
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有