`
T240178168
  • 浏览: 365584 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

flashback——oracle

阅读更多
oracle10g的回闪包括以下特性;
1〉oracle falshback Database. 特性允许oracle通过Flashback database语句,将数据库会滚到前一个时间点或者scn上,而不需要作时间点的恢复工作!
2〉oracle falshback table. 特性允许oracle通过flashback table语句,将表会滚到前一个时间点或者scn上。
3〉oracle falshback drop. 特性允许oracle把恢复drop掉的table或者索引。
4〉oracle falshback version query. 特性可以得到特定的表在某一个时间段内的任何修改记录!
5〉oracle falshback transaction query 特性可以限制用户在某一个事务级别上检查数据库的修改操作,适用于诊断问题、分析性能、审计事务。

1: flashback table tablename to befor drop;

此操作需要用户有以下的权限:
A:falshback any table的系统权限或者是某一个表的flashback权限。
B:有table的select、insert、delect、alter权限。
C:有table的row Movement权限
附:--关于scn的介绍:
SCN:system change numbers,oracle10g的每一个表都有ora_rowscn列!但是desc是看不到改列的。
可以通过select ora_rowscn from table 得到每一条结果集当前的SCN,scn_to_timestamp()将scn转换到timestamp;timestamp_to_scn()将timestamp转换到scn。

2:flashback table a to timestamp to_timestamp('2010-01-27 11:45:20','yyyy-mm-dd hh24:mi:ss');

执行闪回操作时可能会提示错误:


ORA-08189: cannot flashback the table because row movement is not enabled

解决方式:SQL> alter table a enable row movement;

Table altered.
这个命令的作用是,允许Oracle修改分配给行的rowid。在Oracle 中,插入一行时就会为它分配一个rowid,而且这一行永远拥有这个rowid。闪回表处理会对EMP 完成DELETE,并且重新插入行,这样就会为这些行分配一个新的rowid。要支持闪回就必须允许Oracle 执行这个操作
3:flashback table a to scn 1576479;


4:oracle falshback version query--闪回版本查询

select * from a as of scn 1577059;select * from a as of timestamp scn_to_timestamp(1577059);

5:oracle falshback Database:闪回数据库在10g 中Flashback又得到了相当大的增强,利用Recycle Bin(回收站)和Flash Recovery Area(闪回区)的特性实现快速恢复删除表(Flashback Table)或做数据库时间点恢复(Flashback Database)的功能。
    要使用flashback 的特性,必须启用自动撤销管理表空间,不仅是flashback query,也包括flashback table 和flashback database,而对于后两项还会有些其它的附加条件,比如flashback table 需要启用了recycle bin(回收站),flashback database 还要求必须启用了flashback area(闪回区)。
SQL> show parameter undo
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string      AUTO
undo_retention                       integer     10800
undo_tablespace                      string      UNDOTBS1
在一种情况下,undo 表空间能够确保undo 中的数据在undo_retention 指定时间过期前一定有效,就是为undo 表空间指定Retention Guarantee,指定之后,oracle 对于undo 表空间中未过期的undo 数据不会
覆盖,例如:
SQL> Alter tablespace undotbs1 retention guarantee;
如果想禁止undo 表空间retention guarantee,如例:
SQL> Alter tablespace undotbs1 retention noguarantee;
如果说flashback query 可用来恢复指定时间点的记录,flashback table 可用来恢复被删除或指定时间点的表,而flashback database,则直接提供一个数据库级别的恢复,可将数据库恢复到指定的时间点,相对于前两者,其粒度是最大的。

1、必备条件

A. 数据库启用了flashback database。
B. 数据库必须打开了flash recovery area,如果数据库是RAC,flash recovery area 必须位于共享存储中。
C. 数据库必须处于archivelog 模式。

2、操作示例

Flashback database 即可以在rman 中执行,也可以在sql*plus 中执行,其命令格式都是一样的,在这个示例中,我们所有操作都是在sql*plus 中执行。

A. 检查是否启动了flash recovery area:
SQL> show parameter db_recovery_file
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      /orahome/flash_recovery_area
db_recovery_file_dest_size           big integer 2G

B. 检查是否启用了归档
SQL> archive log list;

C. 检查是否启用了flashback database 和force_logging
SQL> select flashback_on,force_logging from v$database;
FLASHBACK_ON       FOR
------------------ ---
NO                 NO
如果未启用则先启用:
SQL> alter system set db_flashback_retention_target=1440 scope=both;   (单位是分钟,1440表示一天)
SQL> shutdown immediate;
SQL> startup mount exclusive;
SQL> alter database flashback on;
SQL> alter database force logging;
SQL> select flashback_on,force_logging from v$database;
FLASHBACK_ON       FOR
------------------ ---
YES                YES
SQL> alter database open;

D. 查询当前的scn
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
     248739

E. 模拟误删除操作
SQL> 做一些DML/DDL操作

F. 重新启动到mount 状态,然后执行恢复
SQL> conn /as sysdba
SQL> shutdown immediate
SQL> startup mount
SQL> flashback database to scn 248739;
提示:此处flashback database to timestamp 也是一样的,不过你需要估计好恢复到的时间点。

注意此处,在你执行完flashback database 命令之后,oracle 提供了两种方式让你修复数据库:
第一种直接 alter database open resetlogs 打开数据库,当然,指定scn 或者timestamp 时间点之后产生的数据统统丢失。
另一种方式是先执行 alter database open read only 命令以read-only 模式打开数据库,然后立刻通过逻辑导出的方式将误操作涉及表的数据导出,再执行recover database 命令以重新应用数据库产生的redo,将数据库修复到flashback database 操作前的状态,然后再通过逻辑导入的方式,将之前误操作的表重新导入,这样的话对现有数据的影响最小,不会有数据丢失。

G. 打开数据库
SQL> alter database open resetlogs;

H. 验证数据
SQL> 查询误操作的数据是否回到了从前
分享到:
评论

相关推荐

    《数据库系统原理与应用——Oracle版》-刘淳-电子教案

    《数据库系统原理与应用——Oracle版》是刘淳教授针对计算机专业学生和Oracle数据库爱好者编写的教材,旨在深入浅出地讲解数据库系统的基础理论和实际应用。本教程以Oracle数据库管理系统为实例,提供了丰富的教学...

    Oracle 10g的“数据闪回”机制——Oracle 10g系列专栏(一).pdf

    除了闪回删除,Oracle 10g还提供了其他数据闪回功能,如“闪回查询”(Flashback Query)。这项功能允许用户查看数据库的先前状态,即使数据已经被提交。通过使用闪回查询,DBA可以在短时间内找到并恢复已被删除的...

    Oracle.Database.11g.DBA手册.完整中文 (97M) part1/2

    基本信息 出版社: 清华大学出版社; 第1版 (2009年1月1日) 平装: 594页 语种: 简体中文 开本: 16 ... 使用最新的Oracle Database 11g工具——Oracle Total Recall和Oracle Flashback Data Archive等。

    Oracle.Database.11g.DBA手册.完整中文 (97M) part2/2

    基本信息 出版社: 清华大学出版社; 第1版 (2009年1月1日) 平装: 594页 语种: 简体中文 开本: 16 ... 使用最新的Oracle Database 11g工具——Oracle Total Recall和Oracle Flashback Data Archive等。

    用oracle10g的flashback闪回功能快速恢复oracle中被删除的表

    Oracle Database 10g 引入了一项非常强大的特性——Flashback,该特性使得数据库管理员(DBA)能够轻松地恢复误删除的数据表。在之前的版本中,如果误删了表,DBA需要通过繁琐的过程来恢复数据,比如使用表空间的时间...

    Oracle中有后悔药卖吗?Oracle中的回闪查询: Oracle 10g 回闪实验文档

    除了数据库级别的回闪外,Oracle 10g还支持表级别的回闪——**Oracle Flashback Table**。通过此功能,可以将单个表恢复到过去某个特定时间点的状态。这对于因误删除或更新数据而导致的问题非常有用。 ```sql -- 将...

    Oracle精髓(第4版)

    如何安装、运行、管理、监控、联网和调整Oracle——包括企业管理器(EM)以及Oracle自我调整和管理能力——以及如何使用Oracle安全、审计和依从性(本版中新增的——章内容)。多用户并发、数据仓库、分布式数据库、...

    oracle dba2的官方教材

    #### 一、Oracle Database 11g:数据库管理——课堂练习II - **版本信息**:本教材为Oracle Database 11g的官方教材,版本号为2.0,发布于2011年3月。此教材仅供个人自我学习使用,严禁分享文件。 - **版权声明**...

    Oracle 11g 从入门到精通——第十八章(视频教程)

    在本套Oracle 11g的视频教程中,我们将深入探讨Oracle数据库的闪回技术,这是一个强大的工具,用于恢复和管理数据库中的数据。闪回技术是Oracle数据库的一个关键特性,它允许用户“时光倒流”,回溯到数据库的某个...

    Oracle数据库进阶-高可用性、性能优化和备份恢复

    ### Oracle数据库进阶-高可用性、性能优化和备份恢复 #### 一、Oracle数据库高可用性 在当今的企业环境中,数据库系统的高可用性(High Availability, HA)至关重要。Oracle数据库提供了一系列强大的高可用性解决...

    oracle误删数据恢复

    当遇到这类情况时,Oracle提供了一种强大的数据恢复机制——回闪(Flashback)功能。通过回闪功能,用户可以在特定的时间点恢复已删除的数据。本文将详细介绍如何利用Oracle的回闪功能来恢复误删的数据。 ### 回闪...

    Oracle优化日记-一个金牌dba的故事

    他介绍了RAC(Real Application Clusters)、Data Guard、Flashback Technology等技术,这些都是确保Oracle数据库持续稳定运行的关键。 最后,书中的每个故事都以实际案例为背景,展示了金牌DBA如何在面对复杂问题...

    java.oracle数据库开发指南 国外经典教材

    《Java与Oracle数据库开发指南——国外经典教材》是一本深入探讨如何使用Java语言与Oracle数据库进行交互的权威著作。本书全面覆盖了Java编程与Oracle数据库管理的基础知识,旨在帮助开发者熟练掌握两者之间的协同...

    Oracle数据库误删除数据的不同恢复方法整理

    - **原理**:当使用`DROP`命令删除表后,Oracle并没有立即清除表占用的空间,而是将其放入了一个特殊的区域——回收站中,直到这些空间被新的数据覆盖。 - **查询回收站**:可以通过查询`USER_TABLES`视图或`USER_...

    PacktPub.Oracle.Data.Guard.11gR2.Administration.Beginners.Guide

    《PacktPub.Oracle.Data.Guard.11gR2.Administration.Beginners.Guide》是一本关于Oracle数据库灾难恢复与高可用解决方案——Oracle Data Guard的初学者指南书籍。本书详细介绍了Oracle Data Guard 11g R2的配置与...

    Oracle从回收站恢复删除的表

    在Oracle 10g及后续版本中,为了提供更高效的数据管理能力,引入了一个非常实用的功能——**回收站**(Recycle Bin)。这一特性使得数据库管理员能够在不慎删除表等数据库对象后,能够轻松地从回收站中恢复这些对象,...

    Oracle10g安装与升级

    在表空间方面,Oracle 10g 添加了一个新的系统表空间——SYSAUX。这个表空间是为了减轻SYSTEM表空间的负担而设计的,将一些原本独立的数据库组件转移到SYSAUX,从而改善性能并减少碎片。如果SYSAUX表空间不可用,...

    Oracle Database 10g:Administration Workshop I PPT版.zip

    首先,让我们深入了解一下"Less04_Instance_TB.ppt"——数据库实例这一部分。数据库实例是Oracle数据库的核心组成部分,它由共享内存结构(如系统全局区SGA和程序全局区PGA)和后台进程组成。实例启动时,会加载数据...

    oracle数据库恢复技术:RMAN与闪回技术

    当涉及到数据恢复时,Oracle提供了两种强大的工具——RMAN(Recovery Manager)和闪回技术,它们各自在不同的场景下发挥着至关重要的作用。本文将深入探讨这两种技术的核心概念、工作原理以及在实际操作中的应用。 ...

Global site tag (gtag.js) - Google Analytics