Oracle闪回技术提供了一组功能用来查看数据的过去状态并且支持数据按时间返回到之前的状态不用对数据库从备份中执行大量的还原操作或者执行按时间点恢复。在大部分情况下闪回功能非常有效破坏性比介质恢复小。

Oracle的大部分闪回功能是在逻辑层面进行操作,查看和维护数据库对象,比如:

Oracle 闪回查询:指定目标时间对数据库运行查询来查看在指定时间点的数据结果。为了从一个不想要生效的改变中对表进行恢复,用户可以选择错误之前的时间并运行查询来检索丢失或改变的记录。

Oracle闪回版本查询:能查看在指定时间间隔内一个或多个表中已经存在记录的所有版本。还可以检索行记录不同版本的元数据,包括开始时间,结束时间,操作和创建这个版本的事务ID。这个功能可以用来恢复丢失的数据和查看表的改变。

Oracle闪回事务查询:能查看由单个事务所产生的改变或者在一个时间周期内所有事务的改变。

Oracle闪回表:将一个表返回到之前某个时间点的状态。当数据库处于联机状态时也能还原表数据。只撤消特定表的改变。

Oracle闪回删除:是dorp table的反操作

闪回表,闪回查询,闪回事务查询和闪回版本查询都依赖于undo数据,记录对Oracle数据库每一个更新的影响。undo的主要作用主要是用于SQL查询的一致性读与事务的回滚,这些undo信息包括了重构过去时间点数据所需要的信息。

闪回删除是建立在回收站机制上的,Oracle会将删除的数据库对象保留到因为要分配新空间而不得不覆盖原来使用的空间为止。

注意:逻辑层面的闪回功能不依赖于RMAN。

在物理层面,Oracle闪回数据库提供了一种对数据库执行按时间点恢复的替代方法。如果数据文件已经包含了所不期待的改变,那么使用闪回数据库能使用当前的数据文件将它的内容还原到过去时间点所处的状态。而结果就是按时间点恢复一样,但其操作速度更快因为它不需要从备份中还原数据文件,比介质恢复应用的重做要少很多。

闪回数据库使用闪回日志来访问数据块的之前版本,它的一些信息与归档重做日志一样。闪回数据库要求你对数据库设置了闪回区,因为闪回日志只能存储在这里。闪回日志缺省情况下是没启用的。闪回日志所使用的空间由数据库自动管理,在闪回区会让空间使用保持平衡。

注意:闪回数据库被集成到RMAN中,在执行闪回数据库时可以自动从备份中检索的任何归档重做日志,它也能使用SQL*Plus来执行,但在这种情况下你必须保证它所要应用的归档日志都在磁盘上。

如果闪回区没有分配足够的空间,那么闪回日志因为备份和归档日志文件可能会被删除。数据库按时间点恢复可以达到与闪回数据库同样的效果,将数据库的内容返回到过去的时间点。

Oracle数据库有联机重做日志,这个日志是记录对数据库所做的修改,比如插入,删除,更新数据等,对这些操作都会记录在联机重做日志里。一般数据库至少要有2个联机重做日志组。当一个联机重做日志组被写满的时候,就会发生日志切换,这时联机重做日志组2成为当前使用的日志,当联机重做日志组2写满的时候,又会发生日志切换,去写联机重做日志组1,就这样反复进行。

如果数据库处于非归档模式,联机日志在切换时就会丢弃. 而在归档模式下,当发生日志切换的时候,被切换的日志会进行归档。比如,当前在使用联机重做日志1,当1写满的时候,发生日志切换,开始写联机重做日志2,这时联机重做日志1的内容会被拷贝到另外一个指定的目录下。这个目录叫做归档目录,拷贝的文件叫归档重做日志。

数据库使用归档方式运行时才可以进行灾难性恢复。

1.归档日志模式和非归档日志模式的区别

非归档模式只能做冷备份,并且恢复时只能做完全备份.最近一次完全备份到系统出错期间的数据不能恢复.

归档模式可以做热备份,并且可以做增量备份,可以做部分恢复.

用ARCHIVE LOG LIST 可以查看当前模式状态是归档模式还是非归档模式.

当前数据库没有启动归档

SQL> archive log list

Database log mode No Archive Mode

Automatic archival Disabled

Archive destination USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence 191

Current log sequence 193

从上面的信息可以知道归档目标为USE_DB_RECOVERY_FILE_DEST,这说归档日志将会存储到闪回区这里之所以归档目录为是因为当没有设置其它归档目录时log_archive_dest_10会隐式的使用USE_DB_RECOVERY_FILE_DEST来存储归档重做日志

SQL> show parameter log_archive_dest

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

log_archive_dest string

log_archive_dest_1 string

log_archive_dest_10 string

log_archive_dest_2 string

log_archive_dest_3 string

log_archive_dest_4 string

log_archive_dest_5 string

log_archive_dest_6 string

log_archive_dest_7 string

log_archive_dest_8 string

log_archive_dest_9 string

log_archive_dest_state_1 string enable

log_archive_dest_state_10 string enable

log_archive_dest_state_2 string enable

log_archive_dest_state_3 string enable

log_archive_dest_state_4 string enable

log_archive_dest_state_5 string enable

log_archive_dest_state_6 string enable

log_archive_dest_state_7 string enable

log_archive_dest_state_8 string enable

log_archive_dest_state_9 string enable

从上面的信息可以看到当前数据库没有设置任何归档目录,下面来设置归档目录

SQL> alter system set log_archive_dest_1='location=/u02' scope=both;

System altered.

再来查看归档重做日志存储的目录

SQL> archive log list

Database log mode No Archive Mode

Automatic archival Disabled

Archive destination /u02

Oldest online log sequence 191

Current log sequence 193

可以看到现在数据库显示的归档日志目录为我们所指定的/u02

下面来启用闪回

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup mount

ORACLE instance started.

Total System Global Area 327155712 bytes

Fixed Size 1273516 bytes

Variable Size 138412372 bytes

Database Buffers 184549376 bytes

Redo Buffers 2920448 bytes

Database mounted.

SQL> archive log list

Database log mode No Archive Mode

Automatic archival Disabled

Archive destination /u02

Oldest online log sequence 191

Current log sequence 193

SQL> show parameter db_recovery_file

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

db_recovery_file_dest string /u01/app/oracle/flash_recovery

_area

db_recovery_file_dest_size big integer 2G

SQL> alter database force logging;

Database altered.

SQL> alter database flashback on;

alter database flashback on

*

ERROR at line 1:

ORA-38706: Cannot turn on FLASHBACK DATABASE logging.

ORA-38707: Media recovery is not enabled.

现在虽然我们设置了db_recovery_file_dest与db_recovery_file_dest_size,强制数据库记录日志,但数据库没有启用归档是不能雇用闪回的,下面启用归档。

SQL> alter database archivelog;

Database altered.

再次启用闪回

SQL> alter database flashback on;

Database altered.

当启用闪回就不能使用log_archive_dest与log_archive_duplex_dest参数来指定归档日志目录。而是必须使用log_archive_dest_n

SQL> alter system set log_archive_dest='location=/u01' scope=both;

alter system set log_archive_dest='location=/u01' scope=both

*

ERROR at line 1:

ORA-02097: parameter cannot be modified because specified value is invalid

ORA-16018: cannot use LOG_ARCHIVE_DEST with LOG_ARCHIVE_DEST_n or

DB_RECOVERY_FILE_DEST

SQL> alter system set log_archive_duplex_dest='location=/u01' scope=both;

alter system set log_archive_duplex_dest='location=/u01' scope=both

*

ERROR at line 1:

ORA-02097: parameter cannot be modified because specified value is invalid

ORA-16018: cannot use LOG_ARCHIVE_DUPLEX_DEST with LOG_ARCHIVE_DEST_n or

DB_RECOVERY_FILE_DEST

从上面的错误信息确实可以看到当启用闪回后确实不能使用log_archive_dest与log_archive_duplex_dest参数来指定归档日志目录

oracle闪回区和归档的关系,闪回与归档参数的设置相关推荐

  1. oracle闪回区满了,一次快速闪回区满导致数据库不能启动的解决过程

    一.事件背景描述:一个测试系统的数据库由于磁盘空间满了,清理了磁盘空间的,等待很久系统没有相应,因此通过shutdown immediate命令重新启动数据库,但是数据库一直关闭不了,所以通过shut ...

  2. oracle闪回 分区,Oracle 闪回区(Oracle Flash recovery area)

    闪回区已经有了好几载的岁月了,在10g的时候就被推出一直延续到现在.Oracle闪回区是为RMAN准备的,尽管抛开它我们可以同样完成数据库备份恢复的相关工作,Oracle依旧强烈推荐使用且它让其成为R ...

  3. oracle11g创建闪回分区多大,Oracle闪回区大小预估

    一个朋友问如何设置Oracle闪回区大小,有什么依据没有. 查证官方文档,有如下描述 For example, if you intend to setDB_FLASHBACK_RETENTION_T ...

  4. oracle11g闪回默认路径,ORACLE11G开启数据库闪回

    准备: 首先必须按照完毕Oracle11g数据库产品及数据库:其次当前数据库的闪回是关闭的. 开始实验: 检查数据库的闪回状态(我这是关闭的) SQL> select FLASHBACK_ON ...

  5. oracle rac 快速闪回区 路径,oracle 10g rac配置闪回恢复区 开启归档

    DBCA创建数据库的时候,默认是不使用flash_recovery_area,不开启归档的. 本文以2个节点的rac为例,所阐述的内容是在新建数据库后,如何设置闪回恢复区,如何开启归档,设置归档路径. ...

  6. oracle闪回空间满的原因,处理Oracle数据库闪回区空间满的问题

    处理Oracle数据库闪回区空间满的问题 作者:赵全文  网名:guestart 今天早上一到单位,发现EMCC上有一台数据库服务器的概览页面出现黄色报警, 查询alert_orcl13.log发现如 ...

  7. Oracle闪回区满(ORA-16014)

    一台老的测试AIX服务器,没人理过,最近一看Oracle闪回满了.清理了下. Version: Oracle 10gR2 for AIX 现象: SQL> alter database open ...

  8. oracle 查看闪回大小,闪回区大小出现警告解决

    ORA-19815: 警告: db_recovery_file_dest_size 字节 (共 2147483648 字节) 已使用 99.88%, 尚有 2554880 字节可用. ******** ...

  9. oracle闪回空间使用率,oracle闪回区满了解决方案

    oracle如果开启了闪回,当闪回区的磁盘空间被占满了时数据库会挂掉,重启也会报错(not archived, no available destinations),下面我来介绍一下oracle闪回区 ...

最新文章

  1. 作业五—个人项目-小学四则运算 “软件”之升级版1
  2. 幂法的c语言程序例子,数值分析之幂法及反幂法C语言程序实例.doc
  3. C++程序设计方法3:强制类型转换
  4. 查找两个字符串a,b中的最长公共子串
  5. iOS-基于TCP连接Scoket-服务端
  6. startActivityForResult用法详解
  7. Hadoop中的问题–何时无法交付?
  8. 解密阿里云七武器之高性能消息服务ONS
  9. linux sybase 自动备份,Linux平台下Sybase数据库备份方法分析.doc
  10. excel文件存入mysql_解析excel文件并将数据导入到数据库中
  11. 程序员常用编程工具: VS Code,那些你不得不知道的小知识!
  12. android 字体倒影,Android笔记:图片倒影、ReflectionImage
  13. BGD-py实现学习【1】[转载]
  14. 计算机应用数学,计算机应用数学.PDF
  15. 半导体Led Driver IC失效分析
  16. win10 mac的clover双系统后 win10时间不同步问题
  17. python计算球体体积_鬼斧神工:求n维球的体积
  18. php批量处理图片大小,wps如何批量处理图片大小
  19. 关于Excel显示“文件已损坏,无法打开”的解决办法
  20. ELF中的.data段和.bss段

热门文章

  1. (C语言) 给出年,月,日,计算该日是该年的第几天
  2. 电脑硬盘丢了文件怎么办
  3. 数据结构(一)线性存储结构
  4. 【数学建模】国赛真题分析 2014A题 嫦娥三号软着陆轨道设计与控制策略
  5. linux ls分页命令,Linux常用命令之ls
  6. 宇宙间最伟大的程序员 Ray Ozzie
  7. 【智能制造】制造业智能变革之道;转型之路—人工智能
  8. 图新地球CAD精准导入影像图,有无坐标系投影信息均适用
  9. 特征值特征矩阵与二次型(数学一)
  10. Android Studio Bumblebee Patch 2 下载地址