Oracle的数据恢复——Flashback用法汇总
/*
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用法汇总的更多相关文章
- Oracle中group by用法
Oracle中group by用法 在select 语句中可以使用group by 子句将行划分成较小的组,一旦使用分组后select操作的对象变为各个分组后的数据,使用聚组函数返回的是每一个组的汇总 ...
- Oracle to_date()函数的用法
Oracle to_date()函数的用法 to_date()是Oracle数据库函数的代表函数之一,下文对Oracle to_date()函数的几种用法作了详细的介绍说明,供您参考学习. 在Orac ...
- Oracle 中 decode 函数用法
Oracle 中 decode 函数用法 含义解释:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:IF 条件=值1 THEN RETURN(翻译 ...
- Oracle trunc()函数的用法
Oracle trunc()函数的用法 /**************日期********************/1.select trunc(sysdate) from dual --2013-0 ...
- oracle之to_char,to_date用法
[转载自]http://www.jb51.net/article/45591.htm 这篇文章主要介绍了oracle中to_date详细用法示例,包括期和字符转换函数用法.字符串和时间互转.求某天是星 ...
- oracle获取本月第一天和最后一天及Oracle trunc()函数的用法
select to_char(trunc(add_months(last_day(sysdate), -1) + 1), 'yyyy-mm-dd') "本月第一天", to_cha ...
- oracle正则表达式regexp_like的用法详解
oracle正则表达式regexp_like的用法详解 /*ORACLE中的支持正则表达式的函数主要有下面四个:1,REGEXP_LIKE :与LIKE的功能相似2,REGEXP_INSTR :与IN ...
- oracle中to_date详细用法示例(oracle日期格式转换)
这篇文章主要介绍了oracle中to_date详细用法示例,包括期和字符转换函数用法.字符串和时间互转.求某天是星期几.两个日期间的天数.月份差等用法 TO_DATE格式(以时间:2007-11-02 ...
- Oracle trunc()函数的用法--来着心静禅定ing
1.TRUNC(for dates) TRUNC函数为指定元素而截去的日期值. 其具体的语法格式如下: TRUNC(date[,fmt]) 其中: date 一个日期值 fmt 日期格式,该日期将由指 ...
随机推荐
- sql2005镜像实现
-- =========================================== -- 无论是主体服务器.镜像服务器, 还是见证服务器 -- 除特别说明外,均需要保证下面的操作 ...
- Ceph的状态错误
使用命令检查ceph集群的监控状态,得到 [root@node1 ~]# ceph -s cluster c4898b1c-7ac1-406d-bb5d-d3c7980de438 health HEA ...
- UIImageView(转)
UIImageView,顾名思义,是用来放置图片的.使用Interface Builder设计界面时,当然可以直接将控件拖进去并设置相关属性,这就不说了,这里讲的是用代码. 1.创建一个UIImage ...
- Ubuntu 13.10 64位 无法 安装 ia32-libs 解决办法
安装新立德软件包管理器:打开终端,输入以下命令:sudo apt-get install synaptic 打开新立德软件包管理器,选择“设置>软件库” 选择“其他软件 > 添加” 在AP ...
- html 复习
通过几次修改网页的经历,发现相关基础知识之薄弱,不得不再次花时间复习一遍.希望这是最后一次. 一 通用声明 HTML5 <!DOCTYPE html> HTML 4.01 <!DOC ...
- webApi FileReader
https://developer.mozilla.org/en-US/docs/Web/API/FileReader https://github.com/node-file-api/FileRea ...
- 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.7.Slider控件
默认slider的安装启用 为slider自定义风格 修改配置选项 创建一个垂直的slider 设置最大最小值,和默认值 启用多个 手柄 和 范围 slider内置的回调事件 slider的方法 这个 ...
- bootstrap 列表 表格 表单 复选 单选 多选 输入框组
一.列表 ul li 二.表格 table (http://www.runoob.com/bootstrap/bootstrap-tables.html) 1. 基本表格 <table cla ...
- HDU 1014:Uniform Generator
Uniform Generator Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- TCP/IP通信实现
网络层的IP协议提供不可靠通信服务.TCP协议则解决了分组的重传和排序问题. TCP通信特征 : 1)全双工,同时发送和接收数据 2)只支持两个端口之间的通信 3)基于字节流.对端无法知道报文的边界. ...