`
无量
  • 浏览: 1146210 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Oracle-闪回

阅读更多
工作中对数据库的操作经常有误操作,最近研究学习下了oracle提供的各种闪回功能,总结成笔记
1.闪回删除(表级--drop)
    当误drop某张表时,可以进行闪回删除操作,恢复删除这张表之前的状态

   
flashback table tbinstext to before drop

2.闪回表(行级--insert、update、delete)
(一个时间戳对应一个scn点)
方法一:闪回到scn点处
    当对一个表进行了错误的增删改等操作,可以进行闪回表操作,恢复增删改之前的数据状态
    --1.查询某一时间点的时间戳,对应的SCN码,(SCN系统改变号)

   
select timestamp_to_scn(to_timestamp('2014-05-19 19:46:00','yyyy-mm-dd hh24:mi:ss:ff')) SCN from dual;

    --2.要闪回哪张表,对该表开启行移动,如表tbinstext
   
alter table tbinstext enable row movement;

    --3.执行闪回表操作,恢复表到对应的时间戳状态
   
flashback table tbinstext to scn 23405704;

方法二:直接返回到表在某一个时间戳的状态
--1.要闪回哪张表,对该表开启行移动,如表tbinstext

   
alter table tbinstext enable row movement;

    --2.执行闪回表操作,恢复表到对应的时间戳状态
   
flashback table tbinstext to timestamp to_timestamp('2014-05-19 19:46:00','yyyy-mm-dd hh24:mi:ss:ff');

3.闪回查询
    想要查询某个时间点,某个表中的数据
   
select * from tbinstext as of timestamp to_timestamp('2014-05-24 16:45:00','yyyy-mm-dd hh24:mi:ss') 
      where deal_serial_no='';

4.闪回版本查询
    可以查询两个时间点或两个scn之间的所有行的所有版本
    方法一:查询最大时间戳和最小时间戳之间的所有版本

     
select deal_serial_no,--表tbinstext中的字段
	       			 user_id,       --表tbinstext中的字段
	             versions_operation 操作,
	             versions_starttime 起始时间,
	             versions_endtime   结束时间,
	             versions_xid       事务号
	      from tbinstext versions between timestamp minvalue and maxvalue
	      order by 1;

  方法二:查询两个时间戳之间的所以版本
 
select deal_serial_no,
		           user_id,
		           versions_operation 操作,
		           versions_starttime 起始时间,
		           versions_endtime   结束时间,
		           versions_xid       事务号
		    from tbinstext versions between timestamp to_timestamp('2014-05-25 12:00:00', 'yyyy-mm-dd hh24:mi:ss') 
		                         and to_timestamp('2014-05-25 12:12:00', 'yyyy-mm-dd hh24:mi:ss');

方法三:查询两个scn之间的所有版本
 
select deal_serial_no,
               user_id,
               versions_operation 操作,
               versions_starttime 起始时间,
               versions_endtime   结束时间,
               versions_xid       事务号
        from tbinstext versions between scn 23746725 and 23747089;



5.闪回事务(事务级--transation)
flashback_transaction_query视图,存放了所有事务的操作,可以根据事务id进行闪回事务查询,
得到undo_sql,执行undo_sql,来恢复这个事务造成的更改
--1.进行闪回版本查询,得到要闪回的事务id

select deal_serialno, user_id, versions_operation 操作, versions_starttime 起始时间,
                     versions_endtime 结束时间, versions_xid 事务号
    from tbinstext
    versions between timestamp minvalue and maxvalue order by 事务号;

   
    --2.通过xid,查询flashback_transaction_query,得到undo_sql
select operation,undo_sql
	  from flashback_transaction_query
		where xid='03001E0093250000';

--3.执行获取到的undo_sql,来恢复错误事务造成的更改

6.闪回数据库(数据库级)
--1.用sqlplus登录(以管理员权限登录,只有管理员才有权限闪回数据库)
 
SQL>sqlplus sys/hs123 as sysdba

 
--2.配置闪回数据库(闪回数据库,要在归档模式,独占模式下装载数据库,才能执行闪回)
  --确定实例是否为归档模式
 SQL>archive log list;

  数据库日志模式       非归档模式
  自动存档          禁用
  存档终点          USE_DB_RECOVERY_FILE_DEST
  最早的联机日志序列    1171
  当前的日志序列        1173
 
  --将数据库改为归档模式下运行,设为独占模式启动,并启用闪回功能
  --要先关闭数据库,才能配置闪回数据库配置
 
SQL>shutdown immediate;

  数据库已经关闭
  数据库已经卸载
  ORACLE例程已经关闭
 
  --以mount和exclusive模式启动
 
SQL>startup mount exclusive;

  ORACLE例程已经启动
  Total System Global Area 293601280 bytes
  Fixed Size                 1248600 bytes
  Variable Size             88081064 bytes
  Database Buffers         197132288 bytes
  数据库装载完毕
 
  --改为归档模式
 
SQL>alter database archivelog;

  数据库已经更改
 
  --设置参数DB_FLASHBACK_RETENTION_TARGET为希望的值,改值的单位为分钟
  本例设置为3天,1440*3=4320
 
SQL>alter system set db_flashback_retention_target=4320 scope=both;

  系统已经更改
 
  --启动闪回数据哭
 
SQL>alter database flashback on;

  数据库已更改
 
  --将数据库设置为open状态
 
SQL>alter database open;

  数据库已更改
 
  --查看更改后的参数
 SQL>archive log list;

  数据库日志模式          归档模式
  自动存档             启用
  存档终点            USE_DB_RECOVERY_FILE_DEST
  最早的联机日志序列    1171
  下一个存档日志序列    1173
  当前日志序列          1173
 
 
2.闪回数据库
--关闭数据库
SQL>shutdown immediate


--在mount模式下启动数据库
SQL>startup mount


--使用flashback database命令闪回数据
SQL>flashback database to scn 23752574;

或者
SQL>
flashback database to timestamp to_timestamp('2014-05-25 14:30:00','yyyy-mm-dd hh24:mi:ss');


--用resetlogs选项打开数据库,因为要恢复到当前数据库之前的一个时刻
SQL>alter database open resetlogs;

分享到:
评论

相关推荐

    Oracle-Oracle闪回技术与系统调优.ppt

    Oracle闪回技术是Oracle数据库系统中一种强大的恢复和调试工具,它允许用户撤销数据库的逻辑错误,如误删除、误修改等。Oracle自9i版本引入闪回查询,随后在10g和11g中逐步扩展和完善,形成了包括闪回数据库、闪回表...

    《Oracle10G-闪回技术》实验手册.doc

    Oracle 10G 的闪回技术是数据库管理系统中一项强大的恢复功能,它使得DBA能够轻松地恢复误删除或误更新的数据,极大地简化了数据库管理的工作。本实验手册重点介绍了Oracle 10G及以后版本的主要闪回技术,并强调其...

    Oracle-10g数据库基础教程之闪回技术.pptx

    这一技术在Oracle 9i中初步引入,到了Oracle 10g得到了进一步增强,包括闪回查询、闪回版本查询、闪回事务查询、闪回表、闪回删除和闪回数据库等多种功能。 **14.1 闪回技术概述** - **闪回基本概念**:Oracle 9i...

    ORACLE闪回技术恢复指南

    ### ORACLE闪回技术恢复指南 #### 引言 本文旨在详细介绍Oracle闪回技术的各种应用场景与操作步骤,帮助读者理解并掌握如何利用Oracle闪回功能有效地进行数据恢复。Oracle闪回技术是一项强大的特性,能够在无需...

    Oracle9i使用闪回操作

    #### 一、Oracle闪回技术概述 Oracle闪回技术是一种非常实用的功能,它允许用户在不依赖备份的情况下恢复数据。这项技术尤其适用于那些因误删除或更新而导致的数据丢失情况。Oracle 9i版本引入了闪回技术,为用户...

    oracle闪回技术

    Oracle 闪回技术是Oracle数据库提供的一种强大的数据恢复机制,它允许用户恢复到数据库的某个历史状态,而无需依赖传统的备份和恢复过程。这一技术基于Oracle的多版本并发控制(MVCC)机制,使得数据库能够记录和...

    Oracle闪回技术详解

    Oracle闪回技术是Oracle强大数据库备份恢复机制的一部分,在数据库发生逻辑错误的时候,闪回技术能提供快速且最小损失的恢复。闪回技术旨在快速恢复逻辑错误,对于物理损坏或是介质丢失的错误,闪回技术就回天乏术了...

    PostgreSQL & Oracle-备份恢复技术大比拼

    闪回技术是一种用于快速恢复数据库到某一时间点的高级特性,Oracle闪回查询、闪回表、闪回事务、闪回删除等特性提供了一种非传统备份恢复解决方案。Oracle数据库的闪回技术是其一大亮点,能够减少因误操作带来的数据...

    Oracle-11g-R2-RAC-with-ASM存储迁移-手记.docx

    8.迁移数据库参数文件:在迁移过程中,需要在线修改数据库参数文件,包括归档路径、闪回等参数的修改。 9.删除旧磁盘组:在迁移完成后,需要删除旧磁盘组,以释放存储资源。 10.观察期和执行数据库备份:在迁移...

    Oracle闪回特性

    Oracle闪回特性是Oracle数据库提供的一种强大的数据恢复和时间旅行功能,它允许用户查看和恢复到数据库的某个历史状态,而无需依赖传统的备份和恢复过程。这一特性在故障排查、误操作恢复以及历史数据分析等方面有着...

    Oracle 10g数据库基础闪回技术.ppt

    Oracle 10g数据库的闪回技术是一种强大的数据恢复工具,它允许用户撤销数据库到一个先前的状态,以修复错误或恢复丢失的数据。这项技术在9i版本中初步引入,但在10g中得到了显著增强,增加了多种闪回操作类型。 1. ...

    oracle 闪回oracle 闪回oracle 闪回oracle 闪回

    标题和描述中反复提及的“Oracle闪回”(Flashback)功能是Oracle数据库管理系统中一项极为重要的特性,它为数据库管理员提供了恢复数据到特定时间点的能力,而无需进行完全的数据库恢复过程。以下是对Oracle闪回...

    oracle_闪回15分钟前的数据操作写法

    Oracle闪回技术主要包括以下几种类型:闪回查询(Flashback Query)、闪回表(Flashback Table)、闪回事务查询(Flashback Transaction Query)、闪回数据库(Flashback Database)和闪回删除(Flashback Drop)。...

    oracle闪回数据库

    Oracle闪回数据库是一种高效的数据恢复技术,它允许管理员迅速恢复数据库至某一特定时间点,而无需执行完整的数据库恢复过程。这种技术显著提高了数据恢复的速度和便捷性,特别适合处理逻辑错误,例如用户误操作导致...

    Oracle闪回操作

    Oracle 闪回操作是Oracle数据库提供的一种高级恢复技术,它允许用户恢复数据库、表或单个行至一个特定的时间点或系统改变号 (SCN)。这种功能在处理误操作,如误删数据、错误更新等场景时尤其有用,因为它可以避免...

    oracle回闪表中的数据

    【Oracle 回闪表数据详解】 Oracle数据库的回闪技术是一项强大的功能,它允许数据库管理员(DBA)恢复数据到过去的某个特定时间点,而无需完全恢复整个数据库。在Oracle 10g及更高版本中,回闪表是这项技术的一个...

    Oracle 闪回,实验加解释

    通过本文对Oracle闪回技术的介绍,我们可以了解到如何设置和管理闪回恢复区,以及如何启用和禁用闪回数据库功能。这些步骤对于保障数据的安全性和提高数据库恢复能力具有重要意义。同时,我们也探讨了闪回恢复区中的...

    oracle 闪回查询

    Oracle 闪回查询 Oracle 闪回查询是 Oracle 9i 中引入的一项新特性,用于恢复误删数据或错误的 DML 操作。它利用 Oracle 的多版本读一致性特性,通过 undo 机制提供所需的前镜像中的数据。用户可以通过指定时间点或...

Global site tag (gtag.js) - Google Analytics