`

Oracle的Flashback用法汇总

阅读更多
from:http://blog.chinaunix.net/uid-74941-id-3180228.html

/*

11g的flashbackup 分好几种,分别用途不一样。

A.flashback database 闪回数据库,简单理解就是把数据库闪回到某个以前的时间点,

能恢复到的最早的SCN, 取决与Flashback Log中记录的最早SCN

B.flashback drop 回收数据库表,用于表误drop后恢复。类似Windows的回收站。

C.flashback query 闪回表记录,用于数据表记录的恢复

D.falshabck Table 闪回数据库表,

后两个是重点,下面说明。

*/

– A.flashback database相关

/*

1.默认情况数据库的flashback database是关闭,可以在mount exclusive状态下打开。

在设置了闪回恢复区后,可以启动闪回数据库功能。

*/

–1.检查是否启动了flash recovery area

show parameter db_recovery_file

–2.检查是否启用了归档

archive log list;

–3.flashback database 默认是关闭的,查看方法

select flashback_on from v$database;

–4.查询当前的scn

SELECT CURRENT_SCN FROM V$DATABASE;

–5.查询当前的时间

select to_char(sysdate,’yy-mm-dd hh24:mi:ss’) time from dual;

–6.查看SCN 和 timestamp 之间的对应关系:

select scn,to_char(time_dp,’yyyy-mm-dd hh24:mi:ss’)from sys.smon_scn_time;

–7.恢复到时间点,或者恢复到SCN

flashback database to timestamp to_timestamp(’09-10-14 14:37:05′,’yy-mm-dd hh24:mi:ss’);

flashback database to scn 947921;

– B. flashback table 恢复误drop表

drop table sphsy.login_table;

select * from flash_table;

–purge table sphsy.login_table;清空回收站

flashback table sphsy.login_table to before drop;

select * from sphsy.login_table;

– C. flashback query 实现行级恢复

/*

flashback查询用于获取先前时间点的表行级数据。当使用flashback查询时,

需要在表名后指定as of timestamp子句或as of SCN子句,其中as of timestamp用于指定早期时间点,

而as of SCN用于指定早期的SCN值,示例如下:

*/

– 1.查原始记录 ,区间内有62 行

select *

from sphsy.login_table a

where a.id > 201204171078

and a.id < 201204171141

order by a.id ;

– 2.晚于区间的有 3016

select program,count(*)

from sphsy.login_table a

where a.id >= 201204171141

group by program ;

–3. 删除

delete from sphsy.login_table a

where a.id > 201204171078

and a.id < 201204171141

–4.利用闪回特性查到区间内,有62行

select * from sphsy.login_table

as of timestamp to_timestamp(’2012-04-17 17:20:30′,’YYYY-MM-DD HH24:MI:SS’)

where id > 201204171078

and id < 201204171141

– 5.不利用闪回特性,直接查询发现没有

select * from sphsy.login_table

where id > 201204171078

and id < 201204171141

– 6.进行数据恢复

– 禁止表上的触发器

alter trigger sphsy.T_INS_LOGIN_TABLE disable ;

– 恢复数据

insert into sphsy.login_table

select * from sphsy.login_table

as of timestamp to_timestamp(’2012-04-17 17:20:30′,’YYYY-MM-DD HH24:MI:SS’)

where id > 201204171078

and id < 201204171141

– 恢复触发器

alter trigger sphsy.T_INS_LOGIN_TABLE enable ;

– 7.晚于区间的数据回来了3130 = 3016 +62 + 后来的数据。实现了区间恢复误删除。

select program,count(*)

from sphsy.login_table a

where a.id >= 201204171078

group by program ;

– D. flashback table 恢复表到先前状态

/*

flashback查询可以用于恢复被误删除的表行数据,但是用户在表上执行了其他的DML语句误操作(insert或update),则不能直接使用flashback查询将表数据恢复到先前时间点,从oracle10g开始,使用flashback table语句可以将表恢复到先前时间点,通过使用该特征,可以避免执行基于时间点的不完全恢复,注意如果要在某个表上使用flashback table特征,则要求必须具有以下条件:

a.用户必须具有flashback any table系统权限或flashback对象权限

b.用户必修在表上具有select insert delete和alter权限

c.必须合理设置初始化参数undo_retention,以确保UNDO信息保留足够时间

d.必须激活行移动特征:alter table table_name enable row movement;

*/

– 1.查原始记录 ,区间内有62 行

select *

from sphsy.login_table a

where a.id > 201204171078

and a.id < 201204171141

order by a.id ;

– 2.晚于区间的有 3074

select count(*)

from sphsy.login_table a

where a.id >= 201204171141;

–3. 删除 ,先记下时间点,2012-04-17 17:43:46

select to_char(sysdate,’YYYY-MM-DD HH24:MI:SS’) from dual ;

delete from sphsy.login_table a

where a.id > 201204171078

and a.id < 201204171141

– 4.删除之后表 sphysy.login_table继续有修改 ,行3082

select count(*)

from sphsy.login_table a

where a.id >= 201204171141;

–5.激活行移动特征

alter table sphsy.login_table enable row movement

–6.利用闪回特性,直接恢复到删除时间点前

flashback table sphsy.login_table to timestamp to_timestamp(’2012-04-17 17:43:46′,’YYYY-MM-DD HH24:MI:SS’);

– 7.晚于区间的数据 回到了3080 ,说明时间点之后的修改丢失。

select count(*)

from sphsy.login_table a

where a.id >= 201204171141

– 8.往前推1分,恢复到删除之前,删除的62条也回来了。

flashback table sphsy.login_table to timestamp to_timestamp(’2012-04-17 17:40:46′,’YYYY-MM-DD HH24:MI:SS’);

– 62 行

select count(*)

from sphsy.login_table a

where a.id > 201204171078

and a.id < 201204171141

– 删除之后的数据为3074,代表还有修改丢失。

select count(*)

from sphsy.login_table a

where a.id >= 201204171141

/*

总结:方法C,方法D均可以用数据恢复。

方法C安全,恢复麻烦。方法D简单,有可能数据丢失。

*/

分享到:
评论

相关推荐

    ORACLE flashback database测试

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

    oracle flashback技术总结

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

    ORACLE FLASHBACK综述.pdf

    要使用 Oracle Flashback 功能,需要配置两个参数:DB_RECOVER_FILE_DEST 和 DB_RECOVER_FILE_DEST_SIZE,这两个参数确定了前滚日志的存放地点与该恢复区的大小。在创建数据库的时候,Oracle 将自动创建恢复区,但是...

    Oracle Flashback技术

    在使用Oracle Flashback技术时,RMAN可以帮助我们执行闪回数据库、闪回数据归档等高级操作。例如,`RESTORE`和`RECOVER`命令可以用于恢复备份的数据文件,而`FLASHBACK DATABASE`则可以恢复到特定的时间点。 通过...

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

    oracle中关于flashback闪回的介绍

    通过上述介绍,我们可以看到Oracle的Flashback闪回技术为数据恢复提供了一种灵活高效的方法。正确设置undo保留时间和合理使用DBMS_FLASHBACK包可以帮助我们更好地管理和恢复数据。同时,理解和掌握timestamp与SCN...

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

    Flashback Query 通过使用多版本读一致性的 undo 表空间来读取操作前的记录数据。Flashback Query 有多种查询方式,包括 as of timestamp 和 as of scn 两种。 1. as of timestamp 查询方式 该方式可以恢复到某个...

    Oracle 闪回特性 FLASHBACK &amp; RECYCLEBIN

    在使用 Flashback 系列时,需要了解每种功能的实现原理和使用方法,例如 Flashback Query 的实现基于 MVCC 机制,Flashback Exp 的实现基于 FDBL 机制等。同时,也需要了解 RECYCLEBIN 机制的使用方法和配置方式。 ...

    oracle flashback闪回技术

    在提供的"恢复oracle中用plsql误删除drop掉的表.txt"文件中,可能详细介绍了如何使用PL/SQL来执行上述的Flashback操作。通常,当表被误删除后,如果没有启用Recyclebin或者表已被回收站清理,可能需要依赖RMAN...

    flashback——oracle

    "Oracle_FlashBack恢复数据.pdf"文件可能涵盖了使用`FLASHBACK QUERY`和`FLASHBACK TRANSACTION`等不同方法来恢复特定的数据行或事务。这些功能允许我们基于时间点或者事务ID来恢复数据,极大地增强了数据安全性和可...

    Oracle Flashback技术总结

    通过启用这一特性,Oracle可以自动管理撤销数据的生命周期,从而简化了Flashback操作的配置和使用。 #### 三、Flashback技术分类 ##### 1. Flashback Database - **功能**:Flashback Database类似于RMAN的不完全...

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

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

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

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

    oracle中FLASHBACK

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

    Oracle_Flashback家族

    ### Oracle Flashback 家族详解 #### 一、概述 Oracle Flashback 技术是一种强大的数据恢复机制,它允许用户将数据库、表甚至是查询结果回滚到过去某个时间点的状态,而无需传统的备份和恢复过程。这一技术在...

    oracle 10g flashback(数据恢复)

    **Oracle Flashback Version Query** 提供了一种查询表在特定时间段内所有版本的方法。这意味着用户不仅可以查看当前的表数据,还可以查看在过去某一时刻的数据。这对于审计、数据分析和问题诊断非常有用。 示例...

    oracle 闪回 flashback

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

Global site tag (gtag.js) - Google Analytics