`
xitonga
  • 浏览: 598150 次
文章分类
社区版块
存档分类
最新评论

oracle闪回数据库详解

 
阅读更多

--- 说明闪回数据库

--- 使用闪回表将表内容还原到过去的特定时间点

--- 从删除表中进行恢复

--- 使用闪回查询查看截止到任一时间点的数据库内容

--- 使用闪回版本查询查看某一行在一段时间内的各个版本

--- 使用闪回事务查询查看事务处理历史记录或行


优点

闪回技术由于只能处理更改数据,所以从根本上改变了恢复技术。使用这个技术时,从错误中恢复花费的时间等于制造错误所花费的时间。当闪回技术使用时,它与介质恢复相比,在易用性、可用性和还原时间方面有明显的优势。


闪回数据库使用闪回日志执行闪回。闪回删除使用回收站。其他所有功能都使用还原数据。



闪回数据库 -----这个功能可撤销导致逻辑数据损坏的更改

就是当出现逻辑错误时,能够将整个数据库回退到出错前的那个时间点上,

闪回数据库的日志文件不是由传统的Log Writer (LGWR)进程写入,而是由一个称为RecoVery WRiter (RVWR)的新进程写入,闪回日志文件由RCWR进程在恢复区中自动创建和维护。

[oracle@tyger ~]$ ps -ef|grep rvwr|grep -v grep
oracle 8414 1 0 14:33 ? 00:00:00 ora_rvwr_ORCL

可以使用闪回数据库的场景包括

1. 用户截断了表(trucate)

2. 系统管理员误删除了用户

3. 用户错误的执行了某个批处理任务,或者该批处理任务的脚本编写错误,使得多个表的数据发生混乱,我们无法采用闪回表的方式进行恢复

实现闪回数据库的基础是闪回日志,只要我们配置了闪回数据库,就会自动创建闪回日志。这时,只要数据库里的数据发生变化,oracle就会将数据被修改前的旧值保存在闪回日志里,当我们需要闪回数据库时,oracle就会读取闪回日志里的记录,并应用到数据库上,从而将数据库回退到历史的某个时间点上。


闪回数据库:减少还原时间

闪回数据库比使用还原文件和重做日志文件的传统时间点恢复的速度要更快。随着数据库规模的增加,通过还原所有数据文件来执行传统的时间点恢复所需的时间长度变得不太现实。使用闪回数据库时,因为不要需要还原数据文件,所以恢复数据库的时间与需要回退的更改数目(而不是数据库大小)成比例。

闪回数据库是通过使用一类被称为闪回数据库日志的日志文件来实施的。oracle数据库会定期将数据块的“前像”记录在闪回数据库日志中。为了快速将数据文件更改回退到捕获闪回日志的时间(就在所需目标时间之前),可以重用块前像。然后,应用重做日志文件中的更改来填充间隔。在快速恢复区中会自动创建和管理闪回数据库日志。

在不能使用闪回数据库功能的情况下,必须使用不完全恢复操作将数据库返回到特定时间。闪回数据库操作完成后,可在只读模式下打开数据库,验证是否使用了正确的目标时间或系统更改号(SCN)。如果没有,可以再次闪回数据库,或者通过执行恢复操作来前滚数据库。因此,要撤销闪回数据库操作,必须向前恢复数据库。

注:闪回保留目标并不能绝对保证闪回可用。如果闪回恢复区中必须存在的文件需要占用空间,可能会自动删除闪回日志。

闪回数据库操作完成后,必须使用以下一种方法打开数据库:

· 在只读模式下验证是否使用了正确的目标时间或SCN

· 使用RESETLOGS 参数才允许进行更新

闪回数据库限制:(不能使用闪回数据库)

· 已还原或重新创建了控制文件

· 已删除了表空间

· 已收缩了数据文件

不能使用闪回数据库恢复自闪回目标时间以来已删除的数据文件。

删除的数据文件会添加到控制文件中且标记为脱机,但是不会闪回。

闪回数据库不能闪回自闪回目标时间以来已收缩的数据文件,这种数据文件必须先脱机,才能执行闪回操作。


实验1:启用闪回数据库


1. 设置闪回恢复区保留时间3天

SYS@ORCL>show parameter flashback


NAME TYPE VALUE
------------------------------------ -------------------------------- ------------------------------
db_flashback_retention_target integer 1440 //db_flashback_retention_target 用于定义一个时间上限 单位是分钟

SYS@ORCL>alter system set db_flashback_retention_target=4320;

SYS@ORCL>show parameter flashback


NAME TYPE VALUE
------------------------------------ -------------------------------- ------------------------------
db_flashback_retention_target integer 4320


2. 查看当前闪回状态,未开启闪回,开启闪回(mount状态开启闪回)

SYS@ORCL>select flashback_on from v$database;


FLASHBACK_ON
------------------
NO


SYS@ORCL>alter database flashback on;
alter database flashback on
*
ERROR at line 1:
ORA-38759: Database must be mounted by only one instance and not open.

SYS@ORCL>shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS@ORCL>startup mount;
ORACLE instance started.

Total System Global Area 314572800 bytes
Fixed Size 1219160 bytes
Variable Size 121636264 bytes
Database Buffers 188743680 bytes
Redo Buffers 2973696 bytes
Database mounted.

3. 开启闪回,必须在归档模式下开启

SYS@ORCL>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

SYS@ORCL>alter database flashback on;


Database altered.

4. 打开数据库,查看闪回状态

SYS@ORCL>alter database open;


Database altered.


SYS@ORCL>select flashback_on from v$database;


FLASHBACK_ON
------------------
YES


SYS@ORCL>


实验2:闪回数据库用途 -----实验参考eygle 的循序渐进oracle

SYS@ORCL>conn tyger/tyger
Connected.
TYGER@ORCL>select count(*) from tyger;


COUNT(*)
----------
1


TYGER@ORCL>select count(*) from test;


COUNT(*)
----------
14


TYGER@ORCL>alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';


Session altered.


TYGER@ORCL>select sysdate from dual;


SYSDATE
-------------------
2014-03-11 15:47:14


TYGER@ORCL>truncate table tyger;


Table truncated.


TYGER@ORCL>select sysdate from dual;


SYSDATE
-------------------
2014-03-11 15:47:38


TYGER@ORCL>truncate table test;


Table truncated.


TYGER@ORCL>select sysdate from dual;


SYSDATE
-------------------
2014-03-11 15:48:03

闪回需要在Mount状态下进行,可以指定Timestamp/SCN/Sequence进行闪回。

首先将数据库闪回到第一时间点,以Redo only的方式打开数据库:

SYS@ORCL>startup mount;
ORACLE instance started.


Total System Global Area 314572800 bytes
Fixed Size 1219160 bytes
Variable Size 130024872 bytes
Database Buffers 180355072 bytes
Redo Buffers 2973696 bytes
Database mounted.
SYS@ORCL>flashback database to timestamp
2 to_timestamp('2014-03-11 15:47:14','yyyy-mm-dd hh24:mi:ss');


Flashback complete.


SYS@ORCL>alter database open read only; //以read only原因:如果数据恢复的不够理想,可以关闭数据库继续进行恢复


Database altered.


SYS@ORCL>select count(*) from tyger.tyger;


COUNT(*)
----------
1


SYS@ORCL>select count(*) from tyger.test;


COUNT(*)
----------
14


数据恢复不理想,继续进行恢复 ---前提:以redo only打开数据库

SYS@ORCL>startup mount;
ORACLE instance started.


Total System Global Area 314572800 bytes
Fixed Size 1219160 bytes
Variable Size 130024872 bytes
Database Buffers 180355072 bytes
Redo Buffers 2973696 bytes
Database mounted.
SYS@ORCL>flashback database to timestamp
2 to_timestamp('2014-03-11 15:47:38','yyyy-mm-dd hh24:mi:ss');


Flashback complete.


SYS@ORCL>alter database open read only;


Database altered.


SYS@ORCL>select count(*) from tyger.tyger;


COUNT(*)
----------
0


SYS@ORCL>select count(*) from tyger.test;


COUNT(*)
----------
14

如果数据恢复确认完成,就可以以resetlogs打开数据库,恢复工作 ------重置日志,不能再flashback至resetlogs之前的时间点

SYS@ORCL>alter database open resetlogs;


Database altered.




oracle闪回表详解:http://blog.csdn.net/wanghui5767260/article/details/21084031

分享到:
评论

相关推荐

    Oracle闪回技术详解

    Oracle 闪回技术详解 Oracle闪回技术是Oracle强大数据库备份恢复机制的一部分,在数据库发生逻辑错误的时候,闪回技术能提供快速且最小损失的恢复。闪回技术旨在快速恢复逻辑错误,对于物理损坏或是介质丢失的错误...

    ORACLE实例与数据库详解.doc

    Oracle数据库系统是由两个核心组成部分构成:Oracle实例(Instance)和数据库(Database)。理解它们之间的关系对于有效管理和维护Oracle环境至关重要。 1. **Oracle实例**:实例是操作系统中的进程集合,这些进程...

    oracle10g数据库详解.ppt

    oracle10g数据库详解

    Oracle数据库闪回技术详解.pdf

    Oracle数据库闪回技术详解.pdf

    Oracle数据库闪回技术详解.docx

    Oracle数据库的闪回技术是一种强大的数据恢复机制,主要用于处理逻辑错误,而非物理损坏或介质丢失。这一技术的核心在于撤销段,它是保存事务修改数据前原始信息的地方,为闪回操作提供必要的历史数据。 撤销段...

    Oracle数据库Sql语句详解大全

    Oracle数据库Sql语句详解大全,提供给大家快速查询复习哦!

    Oracle 19c数据库安装详解.pdf

    Oracle 19c 数据库安装详解 Oracle 19c 数据库安装是数据库管理员或开发者需要掌握的重要技能。以下是 Oracle 19c 数据库安装的详细步骤和相关知识点。 数据库下载 在开始安装 Oracle 19c 数据库之前,需要从 ...

    Oracle大型数据库系统在AIXUNIX上的实战详解.part1

    实践上,AIX、HP-UX等平台运行Oracle数据库,是诸多大中型系统的典型配置方式——用户得益于Al×等UNIX的坚固支撑,受惠于Oracle可用性保证! AIX UNIX是一套复杂的UNIX系统,Oracle复杂度不在其右,这点毫无疑问! ...

    ORACLE数据库-TNS协议分析详解

    ORACLE数据库-TNS协议分析详解ORACLE数据库-TNS协议分析详解ORACLE数据库-TNS协议分析详解ORACLE数据库-TNS协议分析详解

    Oracle10g数据库优化详解

    本文档是我使用Oracle多年后在数据库优化方面的总结,希望对初学者带来便利!

    Oracle数据库技术实用详解

    《Oracle数据库技术实用详解:教你如何成为10g OCP》这本书是专为那些希望深入理解Oracle 10g并取得Oracle Certified Professional(OCP)认证的学习者而设计的。OCP认证是Oracle公司对数据库管理员专业技能的认可,...

    个人经验总结:Oracle数据库SCN号详解

    Oracle数据库SCN号详解 系统检查点scn) 数据文件检查点(v$datafile) 数据文件终止scn) 数据文件中存放的检查点 启动scn

    ORACLE 11G数据库安装详解

    Oracle 11g数据库安装详解是一项重要的技术任务,尤其对于那些需要管理或开发基于Oracle数据库的应用程序的人来说。本文将详细阐述Oracle 11g数据库在服务器端和客户端的安装过程。 1. 服务器端安装 Oracle 11g...

    ORACLE数据库技术实用详解

    资源名称:ORACLE数据库技术实用详解资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    Oracle 闪回技术详细介绍及总结

    Oracle闪回技术详解,这里整理了4种闪回技术,对Oracle 闪回技术做一个整理总结。  概述:  闪回技术是Oracle强大数据库备份恢复机制的一部分,在数据库发生逻辑错误的时候,闪回技术能提供快速且最小损失的恢复...

    Oracle数据库技术详解.pptx

    "Oracle数据库技术详解" Oracle数据库技术详解(1) 了解Oracle数据库版本 Oracle数据库技术详解课程目标:了解Oracle数据库版本,了解数据库体系结构,掌握如何创建一个实例,掌握Oracle网络配置,掌握Oracle...

    Oracle数据库优化详解

    Oracle数据库优化经典之作,全文集合了经验丰富的DBA对于Oracle数据库优化的真知灼见,让很多人受益匪浅,Oracle数据库自9i版本以后,10g,11g版本推荐使用CBO优化器,所以,本文主要结合一系列实例,详细讲解如何在...

Global site tag (gtag.js) - Google Analytics