oracle 闪回技术

转载 2018年04月16日 23:21:56
1、闪回数据库到之前某时间点(在安装时需要开放闪回功能)
不支持表空间删除
select name from v$database;
--看是否打开闪回功能
select flashback_on,name from v$database;
select name from v$bgprocess where paddr<>'00' order by 1;


打开闪回功能
SQL> shutdown immediat
SQL> startup mount
SQL> alter database flashback on;
SQL> alter database open;
修改闪回时间(默认是一天1440)
SQL> alter system set db_flashback_retention_target=2880

RMAN> backup recovery files;--执行此程序,必须要有磁带
执行数据库闪回,必须是在mount,readonly状态
如果重建了控制文件,则修改控制文件以前的数据是不可以闪回的。
例子;
create table t2( a int);
insert into t2 values(1);
insert into t2 values(2);
insert into t2 values(5);
alter system switch logfile;
t2 10:35
insert into t2 values(100);
alter system switch logfile;
insert into t2 values(200);
闪回到某时间点
FLASHBACK DATABASE TO TIME = TO_DATE('2004-05-27 16:00:00','YYYY-MM-DD HH24:MI:SS');
FLASHBACK DATABASE   2  TO TIMESTAMP(SYSDATE-1/24);
查日志进程
select * from v$log;
恢复到某过程sequence为查询的sequence,THREAD
把状态置为mount状态
flashback database to sequence=58 thread=1;
打开数据库
alter database open resetlogs;

2、闪回drop表,数据(普通用户都可以操作)
原理:是把放到数据库回收站的对象,数据拉回来
凡不放回收站的对象都不能闪回.
SQL>create table t1(a int);
SQL>drop table t1;
闪回后,把删除的表,及索引都会恢复
SQL>flashback table t1 to before drop;
语法:FLASHBACK TABLE <table_name> TO BEFORE DROP [RENAME TO <new_name>]

可以用下面的命令或查询查看删除的表;
show recyclebin;
select * from recyclebin --where ORIGINAL_NAME='T1';
DBA的回收站
SELECT owner, original_name, object_name,
type, ts_name, droptime, related, space
FROM dba_recyclebin
WHERE can_undrop = 'YES';
用户回收站
SELECT original_name, object_name,
type, ts_name, droptime, related, space
FROM user_recyclebin
WHERE can_undrop = 'YES';

表实际不没有删除,只是改了一个名子,放到回收站了
索引名子依然没变。
a,用SYS用户删除的表不可以闪回。
conn / as sysdba
alter table cbsd.t1 move tablespace system;
drop table cbsd.t1;
则不可以闪回
b.索引,物化视图,删除后不可以闪回

3、闪回事务查询
alter table t1 enable row movement;
查询所有可以撤消的操作
SELECT versions_xid as xid,
versions_startscn,
versions_endscn,
versions_operation
FROM t1 VERSIONS between scn minvalue and maxvalue
WHERE a = 20;

撤消数据
update 3-->5 undo data
数据放在undo tablespace

sql>show parameter undo;
sql>select file_name from dba_data_files where tablespace_name='UNDOTBS1';
闪回数据:RVWR+闪回日志+归档日志
闪回现有表:undo tablespace
闪回删除表:表原来物理位置


4、闪回查询

使用带有AS OF子句的SELECT语句进行闪回查询。闪回查询获取之前的时间点的数据。

语句通过时间戳或SCN显示地引用过去的时间。返回在那个时间点当时已经提交的数据。

闪回查询的使用包括:

1. 恢复丢失的数据、撤销不正确的且已经提交的改变。例如,如果你错误地删除或更新了行并且提交了,可以立即撤销这个错误。

2. 比较当前的数据和早些时候的数据。例如,可以运行一个日报表,来显示数据从昨天到今天的变化。

可以比较单独的行;也可以查看行集合的交集和并集。

3. 查看事务数据在特定的时间的状态。例如,可以验证某一天的帐户余额。

4. 通过消除存储一些类型的临时数据所需要,简化应用程序的设计。Oracle允许你直接从数据库获取过去的数据。

5. 对过去的数据应用打包的应用,例如报告产生工具。

6. 为应用提供了错误改正的自我服务,允许用户undo和改变他们的错误。

示例A. 检查和还原过去的数据
假设12:30 PM发现员工Chung所对应的数据行被从employees表中删除了。并且你知道在9:30 AM时,Chung的数据在数据库中是正常的。可以使用闪回查询来查看在9:30 AM时表中的内容,来找到丢失的数据。如果需要,可以还原数据。

   employees

   TO_TIMESTAMP'2004-04-04 09:30:00' )WHERE='Chung'

--使用闪回查询还原丢失的行INSERTINTO(     employees

ASOFTIMESTAMP(,'YYYY-MM-DD HH:MI:SS'

WHERE='Chung');


Oracle闪回查询指导

1. 可以对每个表指定或省略AS OF子句,对不同的表指定不同的次数。

注意:如果一个表是闪回数据归档,并且指定了时间比它创建的时间还要早,则查询会返回0行,而不会引起错误。

2. 可以在查询中使用AS OF子句来执行DDL操作(例如创建和截断表),

也可以用来在和闪回查询相同的会话中执行DML操作(INSERTDELETE)。

3. 在影响数据库当前状态的DDL语句或DML语句中使用闪回查询的结果,

可以在INSERTCREATE TABLE AS SELECT语句中使用AS OF子句。

4. 如果在应用中,这种3秒钟的误差对于闪回查询是重要的,则使用SCN而不是时间戳。

5. 可以使用创建视图引用过的数据,即在视图定义的SELECT语句中使用AS OF子句。

如果指定一个相对时间,即从数据库主机的当前时间减去,则对于每个查询,时间要重新计算。

  hour_ago 

SELECT*FROMASOFTIMESTAMP(-INTERVAL'60'MINUTEINSERTINTO(   employees    SYSTIMESTAMP    ))MINUSSELECT*FROM);


Oracle闪回技术详解

Oracle的闪回技术提供了一组功能,可以访问过去某一时间的数据并从人为错误中恢复。闪回技术是Oracle 数据库独有的,支持任何级别的恢复,包括行、事务、表和数据库范围。使用闪回特性,您可以查询以前...
  • ghostliming
  • ghostliming
  • 2016-01-02 12:05:34
  • 1386

Oracle 10g中闪回数据库技术详解

Oracle 10g中闪回数据库技术详解 一、何时使用闪回技术   当 Oracle 数据库中发生了逻辑损坏时,如果您需要快速容易地恢复数据,就必须使用闪回技术。与发生人为错误的情况一样,很难标...
  • mengxiang209
  • mengxiang209
  • 2011-07-12 10:35:57
  • 1603

Oracle 12c 新特性之 PDB 级别闪回数据库

在Oracle Database 12.1中,闪回数据库操作仅限于 CDB ,Oracle Database 12.2支持 CDB 与 PDB 数据库的闪回。 PDB 的还原点种类: 1. n...
  • zhang123456456
  • zhang123456456
  • 2017-05-08 13:12:33
  • 347

oracle 闪回功能详解

Oracle的闪回技术提供了一组功能,可以访问过去某一时间的数据并从人为错误中恢复。闪回技术是Oracle 数据库独有的,支持任何级别的恢复,包括行、事务、表和数据库范围。使用闪回特性,您可以查询以前...
  • Heng_Ji
  • Heng_Ji
  • 2014-01-07 20:25:52
  • 18871

Oracle数据库闪回数据与表

 --闪回 --1.查看表历史时刻数据 select * from table_name  AS OF TIMESTAMP to_timestamp('20150501 00:00:0...
  • wensibo
  • wensibo
  • 2015-06-09 10:14:46
  • 961

Oracle闪回技术之一Oracle 11g 利用FlashTable (闪回表)恢复(用delete)误删的数据

闪回表,实际上就是将表中的数据快速恢复到过去的一个时间点或者系统改变号SCN上。实现表的闪回,需要用到撤销表空间相关的UNDO信息,通过SHOW PARAMETER UNDO命令就可以了解这些信息。用...
  • yaucyj
  • yaucyj
  • 2013-01-26 16:03:06
  • 8274

FlashBack总结之闪回数据库与闪回删除

闪回数据库的特性  Flashback Database 功能非常类似与RMAN的不完全恢复, 它可以把整个数据库回退到过去的某个时点的状态, 这个功能依赖于Flashback log 日志...
  • techsupporter
  • techsupporter
  • 2016-02-15 15:47:49
  • 2318

Oracle 六大闪回技术,flashback

Flashback 技术是以Undo segment中的内容为基础的, 因此受限于UNDO_RETENTON参数。 要使用flashback 的特性,必须启用自动撤销管理表空间。 在Oracle ...
  • demonson
  • demonson
  • 2014-10-14 09:35:44
  • 1772

oracle 闪回oracle 闪回oracle 闪回oracle 闪回

  • 2010年11月09日 21:34
  • 17KB
  • 下载
收藏助手
不良信息举报
您举报文章:oracle 闪回技术
举报原因:
原因补充:

(最多只允许输入30个字)