ORACLE 10G中闪回汇总

1、查看当前SCN并且转换为时间
select scn_to_timestamp(dbms_flashback.get_system_change_number)  from dual;
select timestamp_to_scn(to_date('2013-08-2 10:01:00','yyyy-mm-dd hh24:mi:ss')) from dual;
2、开启和使用flashback database
--必须开启归档
--必须设置参数
  db_flashback_retention_target 
  db_recovery_file_dest               
  db_recovery_file_dest_size   --如果查过快速恢复区大小,FLASHBACK LOG会自动删除        
--mount节点设置开启FLASHBACK DATABASE ON
alter database flashback on;
 可以从v$FLASHBACK_DATABASE_LOG视图中获得OLDEST_FLASHBACK_SCN或者OLDEST_FLASHBACK_TIME,以确定FLASHBACK DATABASE能够恢复到最早的时刻。

然后mount,RMAN下执行
flashback database to scn=689316;
flashback database to time="04-9月-2008 11:05:00";
最后open resetlogs

如果视图恢复可恢复SCN以前的就会报错
starting media recovery
media recovery failed
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of flashback command at 08/02/2013 09:03:28
ORA-38729: Not enough flashback database log data to do FLASHBACK.

3、闪回表(flashback table)
FLASHBACK TABLE 

ALTER TABLE TEST enable row movement;
flashback table TEST to timestamp SYSDATE-1;
flashback table pp123 to timestamp (to_date('2013-08-2 10:01:00','yyyy-mm-dd hh24:mi:ss'));
flashback table pp123 to scn **

4、闪回drop的表(flashback drop)
--参数recyclebin 设置为on(默认)
--依赖于recyclebin

flashback table test_re to before drop; --索引会随着一起DROP到recyclebin
alter index "BIN$4u6QyIlxGzzgQAB/AQAl8Q==$0" rename to test; --重命令你的索引
flashback table "BIN$4u6QyIl7GzzgQAB/AQAl8Q==$0" to before drop;--如果有同名需要这样恢复
select * from "BIN$4u6QyImDGzzgQAB/AQAl8Q==$0";--你可以查看回收站
drop table test_re purge;--你可以手动避开回收站
purge user_recyclebin;--清理本OWNER下回收站
purge dba_recyclebin;--清理所有OWNER的回收站需要sysdba.
5、闪回查询

SELECT * FROM test
  AS OF TIMESTAMP TO_TIMESTAMP 
('2013-08-04 10:22:00', 'yyyy-mm-dd hh24:mi:ss') ;

6、FLASHBACK VERISON(注意UPDATE,DELETE会生成2行如下)
SELECT versions_startscn,
       versions_starttime,
       versions_endscn,
       versions_endtime,
       versions_xid,
       versions_operation,
       username
  FROM testll VERSIONS BETWEEN TIMESTAMP (to_date('2013-08-2 23:34:07','yyyy-mm-dd hh24:mi:ss')) AND sysdate
  where versions_startscn is not null or versions_endscn is not null;
 
VERSIONS_STARTSCN VERSIONS_STARTTIME                                                               VERSIONS_ENDSCN VERSIONS_ENDTIME                                                                 VERSIONS_XID     VERSIONS_OPERATION USERNAME
----------------- -------------------------------------------------------------------------------- --------------- -------------------------------------------------------------------------------- ---------------- ------------------ ------------------------------
         33860567 02-AUG-13 11.41.51 PM                                                                                                                                                             0D001300311D0000 U                  ooo
         33860342 02-AUG-13 11.36.17 PM                                                                                                                                                             0E0027002F1D0000 D                  SYSTEM
         33860309 02-AUG-13 11.35.07 PM                                                                                                                                                             0D001200311D0000 D                  SYS
                                                                                                          33860309 02-AUG-13 11.35.07 PM                                                                                                SYS
                                                                                                          33860342 02-AUG-13 11.36.17 PM                                                                                                SYSTEM
                                                                                                          33860567 02-AUG-13 11.41.51 PM                                                                                                PPZHU

VERSIONS_STARTSCN VERSIONS_STARTTIME                                                               VERSIONS_ENDSCN VERSIONS_ENDTIME                                                                 VERSIONS_XID     VERSIONS_OPERATION USERNAME
----------------- -------------------------------------------------------------------------------- --------------- -------------------------------------------------------------------------------- ---------------- ------------------ ------------------------------
         33861435 03-AUG-13 12.02.00 AM                                                                                                                                                             0F000000321D0000 I                  SYS
 
 
7、闪回事务(可以找到回退语句,但是查询相当慢,使用不当会影响生产系统性能))

SELECT xid, operation, start_scn,commit_scn, logon_user, undo_sql
     FROM flashback_transaction_query    WHERE xid = HEXTORAW('000200030000002D');

SELECT xid, logon_user FROM flashback_transaction_query
     WHERE xid IN (SELECT versions_xid FROM employees VERSIONS BETWEEN TIMESTAMP 
      TO_TIMESTAMP('2003-07-18 14:00:00', 'YYYY-MM-DD HH24:MI:SS') AND
      TO_TIMESTAMP('2003-07-18 17:00:00', 'YYYY-MM-DD HH24:MI:SS'));

时间: 2024-07-30 05:41:39

ORACLE 10G中闪回汇总的相关文章

如何在Oracle 10g中通过网络连接导入数据

历史上,Oracle的导入及导出功能曾采用磁盘文件作为卸载和再装载数据库的存储中介.对于较大的数据库这样"交换文件"的方式是个大问题.因为过大文件将会超过操作系统对文件大小的限制,使得导出不能实现. 一些有创新精神的数据管理员使用文件压缩功能,例如UNIX中的压缩功能,以获得交换文件的最大容量.后来版本中的导入及导出功能允许使用多种交换文件以减少限制. 在Oracle 10g中,Data Pump版的导入功能能从其他数据库实例中直接导入,从而完全删除交换文件. 第一步是定义一个数据库链

Oracle 10G 中的回收站

在Oracle 10G中,引入了一个回收站(Recycle Bin)的概念. 回收站,从原理上来说就是一个数据字典表,放置用户Drop掉的数据库对象信息.用户进行Drop操作的对象并没有被数据库删除,仍然会占用空间.除非是由于用户手工进行Purge或者因为存储空间不够而被数据库清掉.数据库有了这样的功能,能够减少很多不必要的麻烦.常常看到开发人员误把表删除,急急忙忙找DBA来想办法的情况,相信,随着10G的大范围应用,这种情形应该比较少见了. DBA管理上的相关信息可以从USER_recycle

Oracle 10G 中的"回收站"

oracle Oracle 10G 中的"回收站" by Fenng http://www.DBAnotes.net 在Oracle 10G中,引入了一个回收站(Recycle Bin)的概念. 回收站,从原理上来说就是一个数据字典表,放置用户Drop掉的数据库对象信息.用户进行Drop操作的对象并没有被数据库删除,仍然会占用空间.除非是由于用户手工进行Purge或者因为存储空间不够而被数据库清掉.数据库有了这样的功能,能够减少很多不必要的麻烦.常常看到开发人员误把表删除,急急忙忙找D

oracle 可以做闪回的操作有哪些

问题描述 请问下ORACLE可以做闪回的操作有哪些? 解决方案 闪回数据库闪回表(一种是删除表,一种是执行了错误的操作)闪回查询

Oracle 10g中的闪回查询操作实例

与Oracle 9i相比Oracle 10g的Flashback有了非常大的改进,在Orcle 10g之前,SMON_SCN_TIME由SMON来获取和记录信息的,每5分钟记录一次,从Oracle 10g开始,LGWR首先会在SGA中记录SCN与时间的映射关系(由于LGWR至少每3秒就会被激活一次,所以现在SMON_SCN_TIME能够支持大于3秒的闪回),SMON则定期检查SGA是否内存中的映射大于磁盘上的,如果有就刷新纪录到磁盘, 而且从普通的Flashback Query发展到了多种形式,

Oracle Database 10g:闪回版本查询

oracle 不需要设置,立即识别对行的所有更改 在 Oracle9i Database 中,我们看到它推出了以闪回查询形式表示的"时间机器".该特性允许 DBA 看到特定时间的列值,只要在还原段中提供该数据块此前镜像的拷贝即可.但是,闪回查询只提供某时刻数据的固定快照,而不是在两个时间点之间被更改数据的运行状态表示.某些应用程序,如涉及到外币管理的应用程序,可能需要了解一段时期内数值数据的变化,而不仅仅是两个时间点的数值.由于闪回版本查询特性,Oracle Database 10g

oracle 9i使用闪回查询恢复数据库误删问题_oracle

如果用户误删/更新了数据后,作为用户并没有什么直接的方法来进行恢复,他们必须求助DBA来对数据库进行恢复,到了Oracle9i,这一个难堪局面有所改善.Oracle 9i中提供了一项新的技术手段--闪回查询,用户使用闪回查询可以及时取得误操作前的数据,并可以针对错误进行相应的恢复措施,而这一切都无需DBA干预. 因为一时手贱,生产上的数据被我给delete掉了. 用的是delete语句,然后很迅速的还给commit了 下面这两个语句: ALTER TABLE tablename ENABLE r

Oracle 10g中过程PROCEDURE重建的增强

dcba上周有了一个新的发现,在Oracle10g中,当重建一个存储过程时,Oracle的行为和以前有所不同. 在Oracle9i中,即使一个完全相同的过程的重建,Oracle也需要重新编译过程,这个可以从LAST_DDL_TIME看出: [oracle@jumper oracle]$ sqlplus eygle/eygle SQL*Plus: Release 9.2.0.4.0 - Production on Sat Mar 31 17:52:55 2007 Copyright (c) 198

Oracle 10g中SCN与TimeStamp的相互转换

作为对于闪回操作(flashback)的一个增强,Oracle10g提供了函数对于SCN和时间戳进行相互转换. 首先通过dbms_flashback.get_system_change_number 可以获得系统当前的SCN值: SQL> col scn for 9999999999999 SQL> select dbms_flashback.get_system_change_number scn from dual; SCN -------------- 8908390522972 通过s