用Flashback功能恢复表中数据

这里只罗列出利用Oracle 9i R2的flashback功能来恢复一下某表中的数据的步骤,其实很简单。

首先如果数据库在归档模式下,我们可以通过查询v$archived_log视图来查看各个归档日志所属的检查点:

select name,first_change#,next_change#,first_time from v$archived_log;

通过包dbms_flashback.get_system_change_number来获得数据库的SCN号,当然如果你的数据库是10g的话,还可以查看v$database中的字段current_scn.select dbms_flashback.get_system_change_number from dual;
select count(*) from student 看看我们的表中的数据有多少。
create table student_recovery
as
select * from student where 1=0

来创建恢复表的结构。

开始我们的闪回查询:

选择一个前面的SCN进行向前恢复

select count(*) from student as of scn 3154835

尝试多个scn来获得我们所期望的结构

最后通过:

insert into student_recovery select * from student as of scn3154835 commit;

来恢复我们表中的数据。

还有一点需要我们注意的是什么呢?

就是smon_scn_time这个表,这个表记录了Oracle数据库的系统表,用以进行辅助的恢复等功能。这个表在9iR2的时候是每5分钟刷新一次,而且smon_scn_time会记录5天的数据,也就是1440行记录,因此在Oracle9iR2中,表属性修改时间和flashback时间差至少应为5分钟,否则会报ora-01466的错误。

时间: 2024-12-03 08:53:16

用Flashback功能恢复表中数据的相关文章

SQL表中数据按条件批量导出多个Excel文件

SQL Server表中数据按条件批量导出为多个Excel文件是本文我们主要要介绍的内容,在一次SQL Server数据库的操作中,需要将某个有数十万行数据的表按类别导出为xls文件,每个类别一个xls.将数据表中的数据导出并保存为xls简单,用 SSIS或者查询出来之后另存为都可以.但是,这个表中的分类有数百个,如果一个个用SSIS或者查询另存为的话,工作量巨大.前思后想,想到了用 while循环查询,并用bcp导出的方法. 下面是相关代码: --声明需要的变量 declare @sql va

对Excel表中数据一对多查询的方法

  对Excel表中数据一对多查询的方法          举个例子,如下图,左侧A1:C10是一份学员名单表,现在需要根据F1单元格的"EH图班"这个指定的条件,在F2:F10单元格区域中,提取该班级全部学员名单. 今天说一个函数查询方面的方法:Index+Small. F2单元格输入以下数组公式,按住Ctrl+Shift键不放,再按回车键,然后向下填充: =INDEX(B:B,SMALL(IF(A$1:A$10=F$1,ROW($1:$10),4^8),ROW(A1))),&quo

批量查找替换多个Excel工作表中数据的方法

  批量查找替换多个Excel工作表中数据的设置步骤 1.按 2.在文本框内分别输入查找内容和替换内容. 3.单击[选项]按钮打开查找和替换的详细选项,将[范围]从默认的[工作表]改为[工作簿]. 4.单击[全部替换]按钮,弹出提示对话框后单击[确定]按钮.关闭[查找和替换]对话框. 这样瞬间就可以一次性搞定多个工作表数据的查找与替换啦,既快捷又准确!

sql server 2008如何根据一个表中数据去查询另一个表的数据?

问题描述 sql server 2008如何根据一个表中数据去查询另一个表的数据? 现在我有三个表,表A有11列,其中有一列用来记录员工的id,一列是记录类型的Id,现在我要查询出表A的所有数据,但同时我要通过员工的id去查询出表B的员工名,通过类型的id,去查询出表C中的类型详情,最后我要得到的数据就是表A中除了员工id和类型id的数据外的9列数据,加上表B的员工名和表C的类型详情,请问这样的SQL语句要如何写? 解决方案 用一个表的数据更新另一个表Sql ServerSQL server中将

c# sql 逼近 插值-C# textbox输入一数字与SQL表中数据对比找到最相邻的两个进行插值

问题描述 C# textbox输入一数字与SQL表中数据对比找到最相邻的两个进行插值 数据表中存储有实测的距离跟对应高度的一系列数据,我现在想实现这一功能:在textbox上输入一距离,判断这一数据位于数据表中的哪两个数据区间中,然后进行插值计算出这一距离对应的高度.求详细代码程序.高分悬赏. 其中表名 tb_GaoCheng_ZS. 解决方案 C#中textbox中只允许输入数字和小数点? 解决方案二: select top 1 距离,高度 from tb_GaoCheng_ZS where

paradox数据库建立的table表中数据可以求和吗?谢谢

问题描述 paradox数据库建立的table表中数据可以求和吗?谢谢 如题paradox数据库建立的table表中数据可以求和吗?谢谢

sql-频繁查询一张不会变(很少变)的表,有什么办法提高效率,表中数据较多,大约千万条以上

问题描述 频繁查询一张不会变(很少变)的表,有什么办法提高效率,表中数据较多,大约千万条以上 如题,对于频繁查询一张不会变(很少变)的表,有什么办法提高效率,即使变了,也不需要即时数据,就像缓存一样定期更新一下都行,表中数据较多,大约千万条级别,求思路,对SQL只了解皮毛 解决方案 看你怎么查询,是统计还是取得某个条件的数据,还是根据id找某个数据. 可以采用的方式,索引,创建冗余的临时表和临时字段,存储过程 解决方案二: 另外,sql server 2014/2016数据库,支持内存表,只要你

jsp-java 中JSP 实现把excel表中数据导入到mysql数据库中的表中的具体实现方法

问题描述 java 中JSP 实现把excel表中数据导入到mysql数据库中的表中的具体实现方法 java 中JSP 实现把excel表中数据导入到mysql数据库中的表中的具体实现方法 解决方案 参考:http://blog.csdn.net/casilin/article/details/5750773 解决方案二: 楼主幸苦了!!谢谢分享!!! 解决方案三: jsp导excel到mysql数据库 http://wenku.it168.com/d_000468232.shtml

sql server 2000-Sql server2000表中数据每增加1条进行提示

问题描述 Sql server2000表中数据每增加1条进行提示 我想实现的就是,当一个表中的数据新增一条记录时,就发出一种提示或标记,我的程序获取这个标记后就能执行其它操作了.数据库是sql server2000 解决方案 select @@identity 最近一次向具有identity属性(即自增列)的表插入数据时对应的自增列的值,是系统定义的全局变量 解决方案二: INSERT INTO [OOXX] () VALUES () SELECT @@IDENTITY AS [newid] 解