当前位置:  数据库>oracle

Oracle闪回技术

    来源: 互联网  发布时间:2017-05-30

    本文导语: 在Oracle 9i中引入了flashback查询,flashback query实际上是利用UNDO信息来获得过去的数据。由于UNDO空间是循环使用的,事务的前映像不可能永久保存,因此flashback query只能支持过去一段时间内的数据查询,这个时间与undo_retention相关...

在Oracle 9i中引入了flashback查询,flashback query实际上是利用UNDO信息来获得过去的数据。由于UNDO空间是循环使用的,事务的前映像不可能永久保存,因此flashback query只能支持过去一段时间内的数据查询,这个时间与undo_retention相关,undo_retention默认设置900s

下面我们来看下flashback查询恢复数据的例子:

1、创建用户fly
SQL> create user fly identified by fly;
User created.
SQL> grant dba,connect,resource to fly;
Grant succeeded.
2、创建表和索引
SQL> conn fly/fly
Connected.
SQL> create table fly as select * from dba_objects;
Table created.
SQL> create index idx_fly on fly(object_id);
Index created.
SQL> select count(1) from fly;
COUNT(1)
----------
78193
3、更改会话时间显示格式
SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
Session altered.
SQL> select sysdate from dual;
SYSDATE
-------------------
2013-12-05 21:19:52
4、假设误删除删除数据并提交了,如下所示:
SQL> delete from fly where rownum commit;
Commit complete.
5、可考虑如下方法恢复数据,优先使用flashback
5.1 flashback
5.2 imp/impdp
5.3 rman
5.4 logminer
6、通过flashback技术来闪回查询表被删除前的时间点的数据,并保存为一张临时表
SQL> create table fly_tmp_1205 as select * from fly as of timestamp to_timestamp('2013-12-05 21:19:52','yyyy-mm-dd hh24:mi:ss');
Table created.
SQL> select count(*) from fly_tmp_1205;
COUNT(*)
----------
78193
如果只是大概记得是几分钟前被delete的,假设当前时间数据被删除了11分钟左右的话:
SQL> select count(1) from fly as of timestamp sysdate-11/1440;
COUNT(1)
----------
78193


在Oracle 10g中,增强了闪回查询功能,并且提供了将整个数据库回退到过去某个时刻的能力,这个功能
是通过flashback log实现的。flashback log有点类似redo log,只不过redo log将数据库往前滚,flashback log
则将数据库往后滚。为了保存管理和备份恢复相关的文件,oracle10g提供了一个叫做闪回恢复,这个区域默认创建在ORACLE_BASE目录下。可以将所有恢复相关的文件,比如flashback log,archive log,
backup set等,放到这个区域集中管理。

到了Oracle 11g,闪回又出了一个新特性:Oracle Flashback Data Archive. FDA通过将变化数据存储到另外创建的闪回归档区(Flashback Archive)中,和undo区别开来,这样就可以为闪回归档区单独设置存储策略,也可以闪回到指定时间之前的旧数据而不影响undo策略,就是减少对undo的依赖性。 因为在一个很忙的系统,undo保
存的时间是很有限的。 但通过FDA,我们就要灵活很多了。

Flashback技术可以细分以下4种:
Flashback Database,需要开启闪回功能,默认不开启闪回功能,生产库一般不开启闪回功能
Flashback Drop,需要开启回收站,默认开启
Flashback Query(分Flashback Query, Flashback Version Query, Flashback Transaction Query 三种), 基于undo信息
Flashback Table。 用的不多,其原理也是基于undo信息,一般恢复数据使用flashback query来代替flashback table
123456789101112 如何查看闪回恢复区里包含的内容
SQL> select file_type from v$flash_recovery_area_usage;
FILE_TYPE
--------------------
CONTROL FILE
REDO LOG
ARCHIVED LOG
BACKUP PIECE
IMAGE COPY
FLASHBACK LOG
FOREIGN ARCHIVED LOG
7 rows selected.

从Oracle 10g开始,在一些动态性能视图里面,如 V$CONTROLFILE, V$LOGFILE, V$ARCHIVED_LOG, V$DATAFILE_COPY 等都新增加了一列:IS_RECOVERY_DEST_FILE ,指明相关的文件是否在恢复区内。
12345678 SQL> select recid,is_recovery_dest_file from v$archived_log where recid show parameter db_recovery
NAME                                TYPE      VALUE
-----------------------------------------------------------------------------
db_recovery_file_dest              string        /home/oracle/flash_recovery_area
db_recovery_file_dest_size    big integer  2G
SQL> alter system set db_recovery_file_dest_size=8G scope=both;
System altered.
SQL> alter system set db_recovery_file_dest='/u01/app/oracle/flash_recovery_area';
System altered.
SQL> show parameter db_recovery
NAME                                TYPE      VALUE
-----------------------------------------------------------------------------
db_recovery_file_dest              string          /u01/app/oracle/flash_recovery _area
db_recovery_file_dest_size        big integer  8G

说明:
设置闪回恢复区后,如果没有设置过log_archive_dest_n参数,则归档日志默认是保存到该区域的。我们需要
注意闪回恢复区空间的使用率,如果闪回恢复区满了,就没地方放归档了,数据库会hang住,实际上,oracle是通
过隐式的设置log_archive_dest_10='location=USE_DB_RECOVERY_FILE_DEST'来实现的。多个数据库的闪回恢
复区可以指定到同一个位置,但是db_name不能一样,或者db_unique_name不一样。RAC的闪回恢复区必须位于
共享磁盘上,能被所有实例访问。

生产环境,一般建议更改归档路径到非闪回恢复区
SQL>alter system set  log_archive_dest_1='location=/archivelog';

更多详情见请继续阅读下一页的精彩内容:

相关阅读:

Oracle 11g flashback Data Archive(闪回数据归档)

Oracle flashback闪回机制

flashback table快速恢复误删除的数据

Oracle 备份恢复:flashback闪回

[Oracle]闪回flashback功能的使用


    
 
 

您可能感兴趣的文章:

  • Oracle 10g和Oracle 11g网格技术介绍
  • Oracle数据库技术(38)
  • Oracle 数据库(oracle Database)性能调优技术详解
  • Oracle数据库技术(37)
  • Oracle 12c的九大最新技术特性介绍
  • 聘请JSP/BEA/Oracle辅导老师解决技术问题
  • oracle远程复制及异地容灾的技术解决方案
  • 如何从Oracle技术支持获得更多
  • 详解如何应用改变跟踪技术加速Oracle递增备份
  • Oracle公司的据中心很大部分采用开源技术
  • Oracle注射技术——Oracle+nc注射
  • Oracle如何致力于增强Linux技术
  • 基于Oracle的面向对象技术入门基础简析开发者网络Oracle
  • 入侵Oracle数据库能用到的技术
  • Oracle三种上载文件技术
  • Oracle新技术对Linux的影响
  • Oracle数据库重复数据删除技术的四大优势
  • Oracle的数据字典技术简析
  • Oracle数据库常见技术问题解答篇
  • 详解Oracle分布式系统数据复制技术
  • Oracle技术平台助力数字化城市管理进程
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • ORACLE日期相关操作
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • ORACLE数据库常用字段数据类型介绍
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • ORACLE中DBMS_RANDOM随机数生成包
  • Linux系统下Oracle的启动与Oracle监听的启动
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • 网间Oracle的连接,远程连接Oracle服务器??
  • 请教:.profile中:if [ -d /opt/oracle/db01/app/oracle/product/9.2.0 ]是什么意思?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,