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 flashbackup 闪回整个数据库的实现。
### Oracle Flashback 技术详解 #### 一、概述 Oracle Flashback 技术是一种能够帮助用户恢复数据库至某一特定时间点的技术。该技术利用了Undo Segment中的数据,因此受到`UNDO_RETENTION`参数的影响。为了启用...
要使用 Oracle Flashback 功能,需要配置两个参数:DB_RECOVER_FILE_DEST 和 DB_RECOVER_FILE_DEST_SIZE,这两个参数确定了前滚日志的存放地点与该恢复区的大小。在创建数据库的时候,Oracle 将自动创建恢复区,但是...
在使用Oracle Flashback技术时,RMAN可以帮助我们执行闪回数据库、闪回数据归档等高级操作。例如,`RESTORE`和`RECOVER`命令可以用于恢复备份的数据文件,而`FLASHBACK DATABASE`则可以恢复到特定的时间点。 通过...
### Oracle Flashback技术详解 #### 一、Oracle Flashback 技术概述 Oracle Flashback技术是一种高级特性,它为数据库管理员提供了恢复数据的能力,而无需进行传统的不完整恢复过程。这项技术自Oracle 9i引入以来...
在Oracle 10g中,Flashback技术包含了多个组件,如Flashback Database、Flashback Drop、Flashback Query(包括Flashback Query、Flashback Version Query和Flashback Transaction Query)以及Flashback Table。...
Oracle Flashback技术是Oracle数据库提供的一种强大的数据恢复和历史数据查询功能,它允许用户恢复到数据库的某个历史状态,或者查询过去的某个时刻的数据。这项技术的核心是基于Undo Segment中的信息,Undo Segment...
通过上述介绍,我们可以看到Oracle的Flashback闪回技术为数据恢复提供了一种灵活高效的方法。正确设置undo保留时间和合理使用DBMS_FLASHBACK包可以帮助我们更好地管理和恢复数据。同时,理解和掌握timestamp与SCN...
Flashback Query 通过使用多版本读一致性的 undo 表空间来读取操作前的记录数据。Flashback Query 有多种查询方式,包括 as of timestamp 和 as of scn 两种。 1. as of timestamp 查询方式 该方式可以恢复到某个...
在使用 Flashback 系列时,需要了解每种功能的实现原理和使用方法,例如 Flashback Query 的实现基于 MVCC 机制,Flashback Exp 的实现基于 FDBL 机制等。同时,也需要了解 RECYCLEBIN 机制的使用方法和配置方式。 ...
在提供的"恢复oracle中用plsql误删除drop掉的表.txt"文件中,可能详细介绍了如何使用PL/SQL来执行上述的Flashback操作。通常,当表被误删除后,如果没有启用Recyclebin或者表已被回收站清理,可能需要依赖RMAN...
"Oracle_FlashBack恢复数据.pdf"文件可能涵盖了使用`FLASHBACK QUERY`和`FLASHBACK TRANSACTION`等不同方法来恢复特定的数据行或事务。这些功能允许我们基于时间点或者事务ID来恢复数据,极大地增强了数据安全性和可...
通过启用这一特性,Oracle可以自动管理撤销数据的生命周期,从而简化了Flashback操作的配置和使用。 #### 三、Flashback技术分类 ##### 1. Flashback Database - **功能**:Flashback Database类似于RMAN的不完全...
Oracle Flashback技术是Oracle数据库提供的一种高级数据恢复机制,它允许用户恢复到数据库的某个历史状态,无需回滚日志或还原备份。在医院数据恢复中,这一特性尤为重要,因为医院业务的连续性和数据完整性至关重要...
"Oracle 闪回(Flashback)技术" Oracle 闪回(Flashback)技术是 Oracle 数据库提供的一系列人为错误更正技术,用于快速恢复逻辑误操作。闪回技术从 Oracle 9i 版本开始,逐步发展到 Oracle 11g 版本,成为数据库...
FLASHBACK DATABASE flashback data1base闪回到过去的某一时刻 闪回点之后的所有工作都将丢失 必须使用resetlogs创建新的场景并打开数据库(一旦resetlogs之后,将不能再闪回至resetlogs之前的时间点) .......
### Oracle Flashback 家族详解 #### 一、概述 Oracle Flashback 技术是一种强大的数据恢复机制,它允许用户将数据库、表甚至是查询结果回滚到过去某个时间点的状态,而无需传统的备份和恢复过程。这一技术在...
**Oracle Flashback Version Query** 提供了一种查询表在特定时间段内所有版本的方法。这意味着用户不仅可以查看当前的表数据,还可以查看在过去某一时刻的数据。这对于审计、数据分析和问题诊断非常有用。 示例...
Oracle 闪回(Flashback)技术是Oracle数据库提供的一种强大工具,主要用于数据恢复和时间点一致性查询。这一技术的核心在于Undo Segment,它记录了数据库中事务的撤销信息。Oracle 10g引入了多种闪回功能,包括...