摘要:除了在闪回特性使用它外,Oracle数据库还可以使用撤销数据执行这些操作:回滚活动的事务。通过使用闪回特性,可以使用撤销数据查询过去的数据,或者从逻辑损坏中进行恢复操作。

概述

前段时间在研究flashback的时候碰到了个小问题,无法开启flashback功能,报错:ORA-38706和ORA-38714,下面先介绍下flashback是什么,然后介绍下报错及解决方式。

「故障处理」生产环境开启闪回报错ORA-38706

flashback

Oracle Flashback技术是一组数据库特性,它可以让你查看数据库对象的过去状态,或者将数据库对象返回到以前的状态,而无需使用基于时间点的介质恢复。根据数据库的变化,闪回特性可以更快的回退不想要的变化,而且相比介质恢复,对数据库可用性产生的影响更小。

利用闪回特性,你能够:

1)执行回到过去的数据查询

2)执行显示对数据库更改的详细历史的元数据的查询

3)将表或行恢复到之前的时间点

4)自动追踪和归档事务数据的更改

5)当数据库保持在线状态时,回退事务和与它相关的事务

Oracle闪回特性利用自动撤销管理(Automatic Undo Management)系统来获得事务的元数据和历史数据。它依赖于撤销数据(UNDO Data),这些数据记录单个事务影响。例如,如果你运行一个Update语句来将工资从1000更改为1100,那么Oracle数据库将在撤销数据(Undo Data)中存储旧值1000。

撤销数据(Undo Data)是持久的,并能在数据库关闭时继续存在。通过使用闪回特性,可以使用撤销数据查询过去的数据,或者从逻辑损坏中进行恢复操作。除了在闪回特性使用它外,Oracle数据库还可以使用撤销数据执行这些操作:回滚活动的事务;使用数据库或进程恢复已经终止的事务;SQL查询中提供读一致性。

下面介绍下之前开闪回时碰到的报错。

报错

报错信息如下:

ORA-38706: Cannot turn on FLASHBACK DATABASE logging.ORA-38707: Media recovery is not enabled.
「故障处理」生产环境开启闪回报错ORA-38706

解决过程

检查发现是没有开启归档导致,如果不开启归档,是无法开启flashback的,因为闪回需要归档

「故障处理」生产环境开启闪回报错ORA-38706

开启归档后重新开启闪回就可以了。

这里大家可以看到开启闪回之前是需要开启归档的,但是为什么开闪回之前需要开启归档呢?这里其实还涉及到恢复时考虑的问题,后面再单独介绍吧。

后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~

「故障处理」生产环境开启闪回报错ORA-38706

相关文章