`
njliuqi
  • 浏览: 10350 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

oracle flashback

阅读更多
官方说明文档 http://www.oracle.com/technology/global/cn/deploy/availability/htdocs/Flashback_Overview.htm

1. Overview of Flashback Features
Oracle Database has a group of features, known collectively as flashback, that provide ways to view past states of database objects or to return database objects to a previous state without using point-in-time media recovery.

You can use flashback features of the database to do the following:

      Perform queries that return past data.
   
      Perform queries that return metadata that shows a detailed history of changes to the database.

      Recover tables or rows to a previous point in time.

Flashback features use the Automatic Undo Management system to obtain metadata and historical data for transactions. They rely on undo data, which are records of the effects of individual transactions. For example, if a user executes an UPDATE statement to change a salary from 1000 to 1100, then Oracle would store the value 1000 in the undo data.

Undo data is persistent and survives a database shutdown. By using flashback features, you can employ undo data to query past data or recover from logical corruptions. Besides using it in flashback operations, Oracle Database uses undo data to perform the following actions:

      Roll back active transactions

      Recover terminated transactions by using database or process recovery

      Provide read consistency for SQL queries
2. Views
V$RECOVERY_FILE_DEST

DBA_RECYCLEBIN

3. Parameters
.db_recovery_file_dest            --闪回文件保存路径

.db_recovery_file_dest_size       --闪回文件大小

.db_flashback_retention_target    --控制flashback log的保留时间的参数
4. options
SQl>select flashback_on from v$database;

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

SQL>shutdown immediate;

SQL>startup mount;

SQL>alter database flashback on;     --开启闪回

SQL>alter tablespace <tablespace_name> flashbackup on;  --开启针对某一tablespace的闪回

SQL>alter database open;

SQL>alter database flashback off;    --关闭闪回
4.1. flashback database(闪回数据库)
对应flashback database来说,一般用来处理误删除了user或者一些错误的数据操作

example

SQL>drop user *** cascade;
SQL>shutdown abort;
SQL>startup mount;         --Signifies that the database can only be mounted and opened by the current instance (it
                                      cannot be opened simultaneously by multiple instances). Cannot be used with SHARED, PARALLEL,
                                      or NOMOUNT. If no mounting option is specified, EXCLUSIVE is assigned by default.
SQL>flashback database to timestamp(to_date(’2009-05-13 00:35:50′, ‘yyyy-mm-dd hh24:mi:ss’));
SQL>alter database open read only;

--如果不正确,还可以执行
SQL>shutdown abort
SQL>startup mount;
SQL>recover database until time '2009-05-13:00:40:00';
SQL>alter database open read only;

--最后
SQL>shutdown abort;
SQL>startup mount;
SQL>flashback database to timestamp to_timestamp('2009-05-13 00:37:00','yyyy-mm-dd hh24:mi:ss');
SQL>alter database open read only;
SQL>shutdown abort;
SQL>alter database open resetlogs;

SQL>flashback database to scn 5342420;     --闪回到某一SCN号状态

SQL>alter database open resetlogs;

4.2. flashback drop(闪回删除)
用来恢复被误drop掉的表的恢复,同时还能恢复所有索引以及触发器的授权。此外,唯一约束、主键约束与非空约束也将被恢复。外键约束则不可以恢复。

SQL>flashback table 'table name' to before drop

SQL>flashback table <table_name> to before drop rename to <new_name>

注:用户要有falshback any table的系统权限或者是某一个表的flashback权限。有table的row Movement权限

4.2.1. example
SQL>create user dropper identified by dropper;
SQL>grant resource,connect to dropper;
SQL>conn dropper/dropper
SQL>create table names(vname varchar2(10));
SQL>create index name_idx on names(vname);
SQL>alter table names add (constraint name_u unique(vname));
SQL>insert into names values('john');
SQL>commit;

SQL>select object_name,object_type from user_objects;
OBJECT_NAME      OBJECT_TYPE
-----------------------------------------------
NAMES            TABLE
NAME_IDX         INDEX

--drop table
SQL>drop table names;
SQL> select object_name,object_type from user_objects;

OBJECT_NAME                     OBJECT_TYPE
-----------------------------------------------------------------------------
BIN$lcoRJePGDObgQKjAgrAcMg==$0  TABLE

BIN$lcoRJePFDObgQKjAgrAcMg==$0  INDEX

--查询回收站
SQL>select object_name,original_name,type from user_recyclebin;

OBJECT_NAME                    ORIGINAL_NAME                    TYPE
------------------------------ -------------------------------- -------------------------

BIN$lcoRJePFDObgQKjAgrAcMg==$0 NAME_IDX                         INDEX

BIN$lcoRJePGDObgQKjAgrAcMg==$0 NAMES                            TABLE

SQL>flashback table names to before drop;

--重命名索引
SQL>alter index "BIN$lcoRJePFDObgQKjAgrAcMg==$0" rename to name_idex;
--重命名约束
SQL>alter table names rename constraint "*********************" to name_u;

--重新查询user_objects 确认恢复正确

4.2.2. example 2
如果误操作删除多表(存在外键约束),需要一起恢复
SQL>flashback table emp,dept to timestamp to_timestamp();
4.3. flashback table(闪回表更新)
SQL>alter table 'tablename' enable row movement;

SQL>flashback table 'tablename' to timestamp to_date((’2009-05-13 00:35:50′, ‘yyyy-mm-dd hh24:mi:ss’));

注:这里是利用undo表做恢复的基准,所以有关undo的参数undo_management和undo_retention对这个有影响

4.4. flashback query(闪回查询)
--视图

--需要权限 SELECT ANY TRANSACTION

SQL>DESC FLASHBACK_TRANSACTION_QUERY

--参数

UNDO_RETENTION

SQL>conn scott/tiger
SQL>create table rates(
  2>CURRENCY VARCHAR2(4),
  3>RATE     NUMBER(15,10));

SQL>insert into rates values ('EURO',1.1012);
SQL>commit;
SQL>update rates set rate = 1.1014;
SQL>commit;
SQL>update rates set rate = 1.1013;
SQL>commit;
SQL>delete rates;
SQL>commit;
SQL>insert into rates values ('EURO',1.1016);
SQL>commit;
SQL>update rates set rate = 1.1011;
SQL>commit;

SQL> select versions_startscn,versions_endscn,versions_starttime , versions_endtime, versions_xid,
  2  versions_operation, rate
  3  from rates versions between timestamp minvalue and maxvalue
  4  order by VERSIONS_STARTTIME
  5  ;

VERSIONS_STARTTIME     VERSIONS_ENDTIME        VERSIONS_XID         V       RATE

---------------------------------------------------------------------------
24-NOV-10 11.05.40 AM  24-NOV-10 11.06.48 AM   0600120039010000     I     1.1012

24-NOV-10 11.06.48 AM  24-NOV-10 11.07.16 AM   02001B0035010000     U     1.1014

24-NOV-10 11.07.16 AM  24-NOV-10 11.07.22 AM   050002004F010000     U     1.1013

24-NOV-10 11.07.22 AM                          0600070039010000     D     1.1013

24-NOV-10 11.07.28 AM  24-NOV-10 11.07.34 AM   08000C0033010000     I     1.1016

24-NOV-10 11.07.34 AM                          090026005F010000     U     1.1011

6 rows selected.

SQL>SELECT UNDO_SQL
  2>FROM FLASHBACK_TRANSACTION_QUERY
  3>WHERE XID = '0600070039010000';

--需要找出某一时刻的精确rate值
SQL> select rate,versions_starttime,versions_endtime
  2  from rates 
  3  versions between timestamp to_date('2010-11-24 11:07:26','yyyy-mm-dd hh24:mi:ss')
  4  and to_date('2010-11-24 11:07:27','yyyy-mm-dd hh24:mi:ss');

SQl>select rate, versions_starttime, versions_endtime
 2>from rates versions
 3>between scn *** and *****;

--使用MAXVALUE or MINVALUE 可以显示一段时间的变更
SQL> select rate,versions_starttime,versions_endtime
  2  from rates 
  3  versions between timestamp to_date('2010-11-24 11:07:26','yyyy-mm-dd hh24:mi:ss')
  4  and maxvalue;
4.5. 回收站管理
--视图

user_recyclebin

dba_recyclebin



SQL>show recyclebin;

SQL>selecct owner,original_name,type,droptime,can_undrop,space from dba_recyclebin;
分享到:
评论

相关推荐

    oracle flashback技术总结

    ### Oracle Flashback 技术详解 #### 一、概述 Oracle Flashback 技术是一种能够帮助用户恢复数据库至某一特定时间点的技术。该技术利用了Undo Segment中的数据,因此受到`UNDO_RETENTION`参数的影响。为了启用...

    ORACLE flashback database测试

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

    Oracle Flashback技术

    Oracle Flashback技术是Oracle数据库提供的一种强大的数据恢复和时间旅行功能,它允许用户查看和恢复到数据库的某个历史状态,而无需依赖传统的备份和恢复过程。这一特性在处理误删除、错误更新或需要查看历史数据时...

    Oracle Flashback 实验

    Oracle Flashback 是Oracle数据库提供的一种强大功能,它允许用户恢复数据库到某个时间点或事务的状态,从而有效地处理误操作,如意外删除、更新或插入的数据。在Oracle 10g及以后的版本中,Flashback技术包括了多种...

    ORACLE FLASHBACK综述.pdf

    ORACLE FLASHBACK 综述 Oracle Flashback 是 Oracle 数据库中的一种功能,允许用户快速地恢复数据库到以前的状态,从而避免了由于操作失误或用户错误带来的问题。下面是 Oracle Flashback 的知识点。 1. Oracle ...

    Oracle Flashback技術介紹

    在Oracle 10g中,Flashback技术不仅增强了原有的Flashback Query功能,还新增了诸如Flashback Database、Flashback Table、Flashback Drop、Flashback Version Query和Flashback Transaction Query等功能。...

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

    Oracle Flashback 特性 Oracle Flashback 是 Oracle 数据库中的一种功能强大的特性,可以让用户快速地恢复到过去的某个时间点,查看过去的数据状态,或者是回滚到某个特定的事务状态。Flashback 特性可以分为三个...

    Oracle Flashback 技术总结

    Oracle Flashback技术是Oracle数据库提供的一种强大的数据恢复和历史数据查询功能,它允许用户恢复到数据库的某个历史状态,或者查询过去的某个时刻的数据。这项技术的核心是基于Undo Segment中的信息,Undo Segment...

    oracle flashback闪回技术

    Oracle Flashback技术是数据库管理系统中的一种高级特性,它允许用户恢复到数据库的某个历史状态,无需进行复杂的备份和恢复操作。这项技术主要基于事务日志和快照来实现,为数据库管理员提供了极大的便利,尤其在...

    Oracle Flashback在医院数据恢复中的应用.pdf

    Oracle Flashback技术是Oracle数据库提供的一种高级数据恢复机制,它允许用户恢复到数据库的某个历史状态,无需回滚日志或还原备份。在医院数据恢复中,这一特性尤为重要,因为医院业务的连续性和数据完整性至关重要...

    Oracle Flashback技术总结

    ### Oracle Flashback技术详解 #### 一、概述 Oracle Flashback技术是一种强大的数据恢复机制,它可以帮助用户在遇到数据丢失或损坏的情况下恢复到之前的某个时间点。这项技术基于Undo Segment中的内容,允许用户...

    Oracle_Flashback_技术_总结.pdf

    在Oracle 10g中,Flashback技术包含了多个组件,如Flashback Database、Flashback Drop、Flashback Query(包括Flashback Query、Flashback Version Query和Flashback Transaction Query)以及Flashback Table。...

    Oracle_Flashback家族

    这一技术在Oracle 10g版本中得到了极大的增强和发展,形成了一个完整的“Flashback家族”,其中包括Flashback Database、Flashback Drop、Flashback Query(进一步细分为Flashback Query、Flashback Version Query、...

    oracle中FLASHBACK

    FLASHBACK DATABASE flashback data1base闪回到过去的某一时刻 闪回点之后的所有工作都将丢失 必须使用resetlogs创建新的场景并打开数据库(一旦resetlogs之后,将不能再闪回至resetlogs之前的时间点) .......

    flashback——oracle

    "Oracle-Flashback-技术-总结.txt"和"oracle_10g_flashback(数据恢复).txt"以及"oracle_10g_flashback.txt"这三份文档可能提供了一个全面的概述,包括Flashback日志、闪回数据库(Flashback Database)、闪回事务...

    oracle 10g flashback(数据恢复)

    ### Oracle 10g Flashback 数据恢复功能详解 Oracle 10g 引入了强大的 Flashback 技术,这是一系列旨在帮助管理员和开发者在出现数据丢失或损坏时能够快速恢复数据的功能集合。该技术从 Oracle 9i 开始引入,并在 ...

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

    "Oracle 闪回(Flashback)技术" Oracle 闪回(Flashback)技术是 Oracle 数据库提供的一系列人为错误更正技术,用于快速恢复逻辑误操作。闪回技术从 Oracle 9i 版本开始,逐步发展到 Oracle 11g 版本,成为数据库...

    oracle11g flashback archive 资料整理

    Oracle 11g Flashback Archive 资料整理 Oracle Flashback Archive 是 Oracle 11g 中的一项新特性,旨在提供有针对性数据表的可控时间闪回功能。Flashback Archive 可以实现对特定数据表的闪回,保留不同时间的数据...

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

    Oracle 10g引入了一系列回闪(Flashback)技术,旨在提供一种快速恢复数据库至特定时间点的能力,而无需传统的备份和恢复过程。这些技术允许数据库管理员轻松地撤消数据更改或恢复到特定的时间点,为误操作提供了...

    Oracle 闪回特性 FLASHBACK &amp; RECYCLEBIN

    Oracle 闪回特性 FLASHBACK & RECYCLEBIN Flashback 系列是 Oracle 数据库中的一组功能强大且实用的闪回机制,旨在帮助数据库管理员和开发者快速恢复数据库中的各种对象,包括表、数据、事务等。Flashback 系列的...

Global site tag (gtag.js) - Google Analytics