`
foreversunyao
  • 浏览: 214295 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

闪回数据库(Flashback Database)

    博客分类:
  • DB
阅读更多

http://ssuhvs.iteye.com/blog/642452

17.3  闪回数据库(Flashback Database) 
在设置闪回恢复区之后,就可以配置和启用闪回数据库的功能了。本节将详细介绍闪回数据库的配置和使用。 
17.3.1  闪回数据库概述 
闪回数据库能够使数据库迅速回滚到以前的某个时间点或者某个SCN(系统更改号)上。这对于数据库从逻辑错误中恢复特别有用,而且也是大多数逻辑损害时恢复数据库的最佳选择。该功能不基于撤销数据(undodata),而是基于闪回日志。 
Oracle系统为了使用数据库的闪回功能,特别创建了另外一组日志,就是Flashback_logs(闪回日志),记录数据库的闪回操作。 
使用闪回数据库恢复比使用传统的恢复方法要快得多,这是因为恢复不再受数据库大小的影响。也就是说,传统的恢复时间(MTTR)是由所需重建的数据文件的大小和所要应用的归档日志的大小决定的。而使用闪回数据库恢复,恢复时间是由恢复过程中需要备份的变化的数量决定的,而不是数据文件和归档日志的大小。 
闪回数据库的结构是由恢复写入器(RVWR)后台进程和闪回数据库日志组成的。 
如果要启用闪回数据库功能,RVWR 进程也要启动。 
闪回数据库日志是一种新的日志文件类型,它包括物理数据块先前的“图像”。 
闪回恢复区是闪回数据库的先决条件,因为RVWR进程要将闪回日志写入该区域中,所以在使用闪回数据库功能时,必须要启用该区。 
对于逻辑损害和用户的误操作,闪回数据库是不完全恢复的优秀替代。但是必须要指出的是,闪回数据库有其自身的局限性。 
l          使用闪回数据库恢复不能解决媒介故障。若要从媒介故障中恢复,仍然需要重建数据文件和恢复归档日志文件。 
l          截短数据文件(缩小数据文件到较小的尺寸),用闪回数据库不能恢复此类操作。 
l          如果控制文件已被重建,不能使用闪回数据库。 
l          不能完成删除一个表空间的恢复。 
l          最多只能将数据库恢复到在闪回日志中最早可用的那个SCN,并不能将数据库恢复到任意的SCN值。 
17.3.2  配置闪回数据库 
配置闪回恢复区以后,要启用闪回数据库功能,还需要进行进一步的配置,需要注意如下几点。 
l          配置闪回恢复区。 
l          数据库需要运行在归档模式下(Archivelog)。 
l          通过数据库参数DB_FLASHBACK_RETENTION_TARGET,来指定可以在多长时间内闪回数据库。该值以分钟为单位,默认值为1440(1天),更大的值对应更大的闪回恢复空间,类似于闪回数据库的基线。 
l          需要在MOUNT状态下使用ALTER DATABASE FLASHBACK ON 命令启动闪回数据库功能。 
下面我们通过具体的实例来演示如何启动闪回数据库功能。 
1.登录系统 
SQL> conn /as sysdba; 
Connected. 
SQL> show parameter db_recovery_file_dest; 
NAME                           TYPE          VALUE 
------------------------------------ ----------- ------------------------------ 
db_recovery_file_dest        string         /oratest/app/oracle/flash_recovery_area 
db_recovery_file_dest_size    big integer     2G 
SQL> 
SQL> show parameter flashback; 
NAME                                 TYPE        VALUE 
------------------------------------ ----------- ------------------------------ 
db_flashback_retention_target        integer     1440 
SQL> 
2.确认实例是否为归档模式(需要设置为归档模式下运行) 
SQL> archive log list; 
Database log mode              No Archive Mode 
Automatic archival             Disabled 
Archive destination            USE_DB_RECOVERY_FILE_DEST 
Oldest online log sequence     29 
Current log sequence           31 
SQL> 
当前的数据库处于非归档模式下。 
3.将数据库改为在归档模式下运行,并且打开flashback功能 
SQL> shutdown immediate; 
Database closed. 
Database dismounted. 
ORACLE instance shut down. 
SQL> startup mount; 
ORACLE instance started. 
Total System Global Area  418484224 bytes 
Fixed Size                  1300324 bytes 
Variable Size             310380700 bytes 
Database Buffers          100663296 bytes 
Redo Buffers                6139904 bytes 
Database mounted. 
SQL> alter database archivelog; 
Database altered. 
4.设置参数DB_FLASHBACK_RETENTION_TARGET为希望的值,该值的单位为分钟,本例设置为3天,1440×3=4320 
SQL>alter system set DB_FLASHBACK_RETENTION_TARGET=4320;(参照http://www.cuddletech.com/articles/oracle/node65.html,尽量看国外的教程,不会出现错误)

Database altered. 
5.启动闪回数据库,将数据库置为open状态 
SQL> alter database flashback on; 
Database altered. 
SQL> alter database open; 
Database altered. 
6.查看更改后的参数 
SQL> archive log list; 
Database log mode              Archive Mode 
Automatic archival             Enabled 
Archive destination            USE_DB_RECOVERY_FILE_DEST 
Oldest online log sequence     29 
Next log sequence to archive   31 
Current log sequence           31 
SQL> 
经过以上对数据库闪回功能的设置,Oracle 11g的flashback database功能可自动搜集数据,我们只要确保数据库是归档运行即可。所归档区由DB_RECOVERY_FILE_DEST参数指定。 
17.3.3  使用闪回数据库 
1.FLASHBACK DATABASE语法说明 
Oracle 11g的FLASHBACK命令可以对表级进行恢复,也可以对数据库级进行恢复。要对数据库级进行恢复,就要用到FLASHBACK DATABASE命令,它的语法如下: 
FLASHBACK  [STANDBY]  DATABASE <database> 
{ TO [ SCN | TIMESTAMP ] <exp> |TO BEFORE [ SCN |TIMESTAMP] <exp>} 
其中各项参数说明如下。 
l          STANDBY:指定恢复备用的数据库到某个SCN或者某个时间点上。如果没有备用数据库,则系统会返回一个错误。如果省略STANDBY子项,则数据库可能是主数据库,也可能是备用数据库。 
l          TO SCN <exp>:指定一个系统改变号SCN。 
l          TO BERORE SCN <exp>:恢复到之前的SCN。 
l          TO TIMESTATMP:需要恢复的时间表达式。 
l          TO BEFORE TIMESTAMP:恢复数据库到之前的时间表达式。 
用户可以从sysdate中得到系统的当前时间。 
当用户发出FLASHBACK DATABASE语句以后,数据库会首先检查所需要的归档文件与联机重建日志文件的可用性。如果可用,则会将数据库恢复到指定的SCN或者时间点上。 
在数据库中闪回数据库的总数和大小由DB_FLASHBACK_RETENTION_TARGET初始化参数控制。可通过查询V$FLASHBACK_DATABASE_LOG视图来确定能恢复到过去多远。 
如果数据库中所保留的数据不够执行恢复,可使用标准的恢复过程恢复到过去的某个时间点上。 
如果数据文件集没有保留足够的数据,则数据库会返回一个错误,在这种情况下,可先使数据文件脱机,然后再发出语句恢复剩余的部分。最后再用标准方法恢复这些脱机的数据文件。 
2.闪回数据库例子 
FLASHBACK语句既可以在SQL>下使用,也可以在RMAN>中使用,当然也可以在EM中使用,以下给出一个具体实例。 
下面的例子是使用闪回数据库完成到某个SCN的恢复。 
(1)首先,查询v$flashback_database_log视图以获得oldest_flashback_scn: 
C:\Documents and Settings\Administrator>sqlplus /nolog 
SQL*Plus: Release 11.1.0.6.0 - Production on 星期一 11月 19 07:12:38 2007 
Copyright (c) 1982, 2007, Oracle.  All rights reserved. 
SQL> conn /as sysdba; 
已连接。 
SQL> select oldest_flashback_scn,oldest_flashback_time from v$flashback_database_log; 
OLDEST_FLASHBACK_SCN OLDEST_FLASH 
-------------------- ---------------------------------------- 
5540916                    19-NOV-07   
(2)关闭数据库,并在mount模式下启动数据库: 
SQL> shutdown immediate; 
数据库已经关闭。 
已经卸载数据库。 
ORACLE 例程已经关闭。 
SQL> startup mount; 
ORACLE 例程已经启动。 
Total System Global Area  426852352 bytes 
Fixed Size                  1333648 bytes 
Variable Size             327157360 bytes 
Database Buffers           92274688 bytes 
Redo Buffers                6086656 bytes 
数据库装载完毕。 
SQL> 
(3)使用FLASHBACK DATABAE闪回数据库到SCN 5540916: 
SQL> flashback database to scn 5540916; 
Flashback complete. 
SQL> 
(4)用resetlogs选项打开数据库,因为要恢复到当前数据库之前的一个时刻: 
SQL> alter database open resetlogs; 
Database altered. 
SQL> 
17.3.4  与闪回数据库有关的视图 
在监控闪回数据库时,常用的有以下几个重要视图。 
l          V$DATABASE,用于显示闪回数据库是启动还是关闭,即闪回数据库是否被激活。 
l          V$ FLASHBACK_ DATABASE _LOG,可用于查看与闪回数据库有关的SCN、TIME、闪回数据库的时间及闪回数据的大小。 
l          V$FLASHBACK_DATABASE_STAT,显示闪回数据库日志的情况,可用来估算闪回数据库潜在的需求空间。

 

 

 

 

 

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

 

已连接。
18:07:02 SQL> flashback table t to timestamp to_timestamp('2008-08-13 17:00:00',
'yyyy-mm-dd hh24:mi:ss');
flashback table t to timestamp to_timestamp('2008-08-13 17:00:00','yyyy-mm-dd hh
24:mi:ss')
                *
第 1 行出现错误:
ORA-08189: 因为未启用行移动功能, 不能闪回表


18:08:32 SQL> alter table t enable row movement;

表已更改。

18:09:35 SQL> flashback table t to timestamp to_timestamp('2008-08-13 17:00:00',
'yyyy-mm-dd hh24:mi:ss');
flashback table t to timestamp to_timestamp('2008-08-13 17:00:00','yyyy-mm-dd hh
24:mi:ss')

分享到:
评论

相关推荐

    第16章Oracle闪回(Flashback)技术.pptx

    闪回数据库允许用户通过 Flashback Database 语句,使数据库迅速回滚到以前的某个时间点或某个 SCN 值时的状态。闪回数据库可以快速恢复数据库,减小管理开销。为了使用闪回数据库技术,必须启用撤销表空间自动管理...

    BLOG_Oracle_lhr_利用闪回数据库(flashback)修复Failover后的DG环境.pdf

    - **闪回数据库(Flashback Database)**: 允许整个数据库恢复到过去某个时间点的状态。 - **闪回表(Flashback Table)**: 允许表恢复到过去某个时间点的状态。 - **闪回查询(Flashback Query)**: 可以查询过去...

    Oracle闪回(Flashback)技术.pptx

    1. 闪回数据库(Flashback Database):允许用户通过Flashback Database语句,使数据库迅速地回滚到以前的某个时间点或某个 SCN(系统更改号)值时的状态。 2. 闪回丢弃(Flashback Drop):类似于操作系统的垃圾...

    oracle闪回数据库

    然后,可以通过SQL命令`ALTER DATABASE FLASHBACK ON`开启闪回数据库功能。 2. 设置保留目标:通过`ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET`命令设定闪回日志的保留时间,以小时为单位,确保在该时间段内...

    ORACLE flashback database测试

    ORACLE flashback database测试,主要进行ORACLE flashbackup 闪回整个数据库的实现。

    oracle flashback特性(闪回语句,闪回表,闪回数据库).doc

    Flashback Query 是 Oracle Flashback 特性中最基本的部分,它允许用户通过闪回查询来查看过去的数据状态。Flashback Query 通过使用多版本读一致性的 undo 表空间来读取操作前的记录数据。Flashback Query 有多种...

    Oracle 闪回特性 FLASHBACK &amp; RECYCLEBIN

    Flashback 系列是 Oracle 数据库中的一组功能强大且实用的闪回机制,旨在帮助数据库管理员和开发者快速恢复数据库中的各种对象,包括表、数据、事务等。Flashback 系列的功能可以追溯到 Oracle 9i 版本,并在后续...

    oracle 闪回 flashback

    Oracle 闪回(Flashback)技术是Oracle数据库提供的一种强大工具,主要用于数据恢复和时间点一致性查询。这一技术的核心在于Undo Segment,它记录了数据库中事务的撤销信息。Oracle 10g引入了多种闪回功能,包括...

    flashback闪回技术

    ### Flashback闪回技术 #### 一、概述 Flashback技术是Oracle数据库中一项重要的数据恢复工具,它基于Undo Segment中的内容实现,并受到UNDO_RETENTION参数的影响。要使用这项特性,用户必须启用自动撤销管理表...

    Oracle_FlashBack闪回技术

    闪回数据库(Flashback Database)是Oracle 10g及以后版本引入的功能,它可以将整个数据库恢复到过去某个时间点的状态。为了实现这一目标,Oracle利用了多种机制和技术。 ##### 3.1 Flashback Log - **定义**:闪回...

    Oracle数据库闪回专题.doc

    1. 闪回数据库(Flashback Database) 闪回数据库允许整个数据库在逻辑错误后迅速回滚到错误发生前的状态。这一特性避免了传统恢复方法中需要还原所有数据文件和长时间前滚的过程。例如,如果DBA意外删除了模式,只...

    Oracle 闪回,实验加解释

    通过本文对Oracle闪回技术的介绍,我们可以了解到如何设置和管理闪回恢复区,以及如何启用和禁用闪回数据库功能。这些步骤对于保障数据的安全性和提高数据库恢复能力具有重要意义。同时,我们也探讨了闪回恢复区中的...

    Oracle闪回操作

    Oracle 闪回操作是Oracle数据库提供的一种高级恢复技术,它允许用户恢复数据库、表或单个行至一个特定的时间点或系统改变号 (SCN)。这种功能在处理误操作,如误删数据、错误更新等场景时尤其有用,因为它可以避免...

    Oracle 10g数据库基础闪回技术.ppt

    - 闪回数据库(Flashback Database):整个数据库恢复到先前的时间点。 2. **闪回技术实现**: - 闪回查询、闪回版本查询和闪回事务查询主要依赖撤销表空间(Undo Tablespace),它存储了回滚信息。 - 闪回删除...

    Oracle 数据库应用:第17章 Oracle闪回技术.ppt

    闪回数据库:允许用户通过 flashback database 语句,使数据库迅速地回滚到以前的某个时间点或者 SCN 上,该功能不基于撤销数据,而是基于闪回日志。 闪回丢弃:类似于 OS 的垃圾桶,可以从中恢复被 drop 的表或...

    数据库闪回、表恢复、数据泵新特性

    - 首先,通过`ALTER DATABASE FLASHBACK ON`命令开启数据库的闪回功能。 - 接着,模拟一个误操作,例如创建用户、授予权限、创建表、切换日志并删除用户及所有相关对象。 - 当需要闪回时,将数据库启动到MOUNT...

Global site tag (gtag.js) - Google Analytics