闪回笔记

原创 2012年03月24日 22:43:54

1.1 配制参数
行级闪回需要配制以下两个参数
undo_management = auto 只有设置成auto才能查询到表更新记录
undo_retention =900 设置表更新记录时间,单位为秒,只有在这个时间内的操作才能被闪回,10G第二版默认为900秒,9i为3600秒.

1.2 行级闪回查询
行级闪回查询有以下三种

--行级闪回查询
select a, b, c, versions_xid, versions_starttime, versions_endtime,
versions_startscn,versions_endscn,versions_operation
from test versions between timestamp minvalue and maxvalue
where c=12;
--行级闪回查询,查询一段时间内的变更,注意开始时间和结束时间之差小于undo_retention设置的值,否则会提示"ORA-30052: 下限快照表达式无效"
select a, b, c, versions_xid, versions_starttime, versions_endtime,
versions_startscn,versions_endscn,versions_operation
from test versions between timestamp
to_date('2008-09-23 16:09:00','yyyy-mm-dd hh24:mi:ss')
and to_date('2008-09-23 16:45:00','yyyy-mm-dd hh24:mi:ss')
where c=12;

--行级闪回查询,根据scn值查询
select a, b, c, versions_xid, versions_starttime, versions_endtime,
versions_startscn,versions_endscn,versions_operation
from test versions between scn 339493 and 339635
where c=12;
/* 其中test的表结构如下
create table TEST
(
A VARCHAR2(20),
B VARCHAR2(40),
C NUMBER
)
*/

--versions_xid更改该行的事务标识符
--versions_startscn和versions_endscn 该时刻系统更改号
--versions_starttime和versions_endtime 该数据的起如时间和结束时间
--versions_operation 表示执行了什么样操作 I表示insert,U表示update,D表示delete

以下功能还可以根据当前系统scn查打以前scn的数据
select dbms_flashback.get_system_change_number from dual; --查询当前系统更改号
然后根据当前系统scn推算到以前scn,根据以前scn查询当时表里的数据
select * from test as of scn 404030; --查询系统更必号404030表test时候的数据.


1.3 闪回数据
闪回数据有两种,根据查询找出反操作语句闪回,第二种是把整个表直接闪回到时某个间点.

a. 根据反操作语句闪回
用视图flashback_transaction_query查询出反操作语句,如下
--查询返回该条语句
select undo_sql from flashback_transaction_query where xidin('0800170073000000');

UNDO_SQL
--------------------------------------------------------------------------------

insertinto"TEST"."TEST"("A","B","C")values ('11','111','11');


其中undo_sql就是返回原来的sql语句,注意视图flashback_transaction_query只有dba才能查询.

只要执行undo_sql 语句就返回到之前的状态了.

b.整个表直接闪回到时间点

利用如下语句执行闪回到时间点,如下
flashback table test to timestamp to_timestamp
('2008-09-23 17:40:52','YYYY-MM-DD HH24:MI:SS');
--在执行以上语句前,要把表启用行移动功能.开启表行移动功能,语句如下
alter table test enable row movement;
--关闭行移动功能
alter table test disable row movement;

2.表级闪回
oracle从10G开始支持表级闪回,表删除掉后,不直接删除,而是像windows操作系统一下放到回收站里.如果需要,可以从回收站还原.

a.查看当前用户下回收站中的内容
SQL> show recyclebin
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ -------------------------------

TMP_DPBIN$FhcMyJIhS2241b3ALdHD/Q==$0 TABLE 2008-09-17:11:08:46

也可以从以下视图查询回收站内容.

select* from dba_recyclebin;
select * from user_recyclebin;

b.恢复被删除的表

SQL>flashback table tmp_dp to before drop;

闪回完成。

内回完成后,查询回收站

SQL>show recyclebin
SQL>
刚才回收站的内容已经清空.

c.清空回收站

purgetable TMP_DP; --指定删除某些特定对象
purge recyclebin; --删除当前用户在回收站的内容
purge dba_recyclebin; --以SYSDBA身份可以清除所有回收站对象
purge index ind_test_01; --删除索引
purge tablespace users; --清除某个表空间的所有回收站对象
purge tablespace users user scott;--删除回收站内users表空间下的scott用户的数据库对像

d.彻底删除表
drop table test purge --彻底删除表test不放入回收站.


3.数据库级闪回

--查询数据库是否启动了数据库闪回功能
select name,log_mode,open_mode,flashback_on from v$database;

--没有启动,先关闭,在启动到mount状态下
shutdown immediate;
startup mount;

--开启数据闪回功能
alter database flashback on;
闪回到以前时间,或以前的scn,可以通过以下语句查询.

select* from v$flashback_database_log;

列oldest_flashback_tiem 闪回最早时间点.
列oledst_flashback_scn闪回最早scn.

把数据关闭掉,启动到mount状态
shutdown immediate;
startup mount;


通过以下语句闪回到以前数据

--闪回到以前时间点
flashback database to timestamp to_date('2008-9-26 10:59:17','yyyy-mm-ddhh24:mi:ss');
--闪回到以前scn
flashback database to scn 405493;

最后需要用resetlogs或用noresetlogs打开数据库.

alter database openresetlogs;


电脑开机左上角只有一个减号一直在闪的解决方案

前段时间想在我的电脑上装一个Ubuntu双系统,所以在某个磁盘上压缩了40G的空间作为Ubuntu的安装空间。如下图: 然后我又为这个未分配的空间分配了驱动器号 然后重启过后就变成这样了。。。...
  • u011514810
  • u011514810
  • 2016年05月05日 22:36
  • 5303

苹果笔记本开机出现闪烁的问号文件夹解决方法

*苹果笔记本开机出现闪烁的问号文件夹解决方法 如果出现这种情况,这就意味着你的Mac无法找到自身的系统软件* 这个问题有两种情况: **一、 如果问号只出现几秒钟,然后继续启动。** 这时候需要...
  • qq_36172505
  • qq_36172505
  • 2017年04月10日 19:25
  • 16221

网易闪电邮的安全弱点及密码找回

家父换电脑后忘记邮箱密码了,之前一直用网易闪电邮收邮件…… 感觉一般的...
  • gy_jk
  • gy_jk
  • 2014年07月09日 15:54
  • 13154

DAVE Oracle 闪回 学习笔记

  • 2017年02月27日 14:21
  • 3.24MB
  • 下载

Oracle 11g学习笔记--查询闪回

如果错误的提交了修改操作,并想查看被修改行原来的值,可以使用查询闪回。然后如果需要,就可以使用查询闪回的结果将这些行手工改回原来的值;另外,查询闪回可根据一个时间值或系统变更号(scn)进行;数据库使...
  • E_xiake
  • E_xiake
  • 2016年10月18日 17:02
  • 199

Oracle 培训笔记 9.4 闪回

1、准备环境 1.1 还原一个干净的数据库 1.2 创建一个用户 create tablespace tbs datafile 'E:\oracle\product\10.2.0\o...
  • jzy23682891
  • jzy23682891
  • 2011年09月04日 22:39
  • 320

Oracle OCP笔记(31)使用闪回功能

Oracle OCP笔记(31)使用闪回功能     Oracle的闪回功能受到3个数据库结构之一的支持: 撤消数据、闪回恢复区和回收站。     撤消表空间中的撤销数据不仅支持事务回滚,...
  • gyming
  • gyming
  • 2016年07月16日 09:11
  • 3390

读书笔记整理十一:使用闪回和LogMiner

读书笔记整理十一:使用闪回和LogMiner 闪回数据归档比较 闪回数据归档技术与闪回数据库的比较: ? 使用闪回数据归档可以访问任意时间点的数据,而不会实际更改当前数据。这与闪回 数据库相反...
  • skybluehao
  • skybluehao
  • 2012年08月05日 21:14
  • 1015

Oracle9i使用闪回操作

  • 2008年05月01日 20:13
  • 4KB
  • 下载

Oracle闪回特性

  • 2011年09月13日 22:15
  • 62KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:闪回笔记
举报原因:
原因补充:

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