您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > Oracle Flashback 技术 总结
OracleFlashback技术总结分类:OracleBasicKnowledge2009-10-1521:4120104人阅读评论(25)收藏举报oraclearchivesqldatabasetable数据库目录(?)[-]1.Flashback1.闪回恢复区FlashbackRecoveryArea1.设置闪回恢复区2.取消闪回恢复区3.闪回恢复区的内容4.闪回恢复区的一些限制5.闪回恢复区的空间管理6.FlashRecoveryArea空间不足导致DB不能打开或hang住处理方法7.FlashRecoveryArea的备份2.FlashbackDatabase1.FlashbackDatabase说明2.FlashbackDatabase架构3.启用FlashbackDatabase步骤1.配置FlashRecoveryArea2.启动flashbackdatabase4.FlashbackDatabase操作示例1.检查是否启动了flashrecoveryarea2.检查是否启用了归档3.检查是否启用了flashbackdatabase4.查询当前的scn5.查询当前的时间6.删除表A7.重启DB到mount8.执行恢复分timestamp或者SCN两种9.打开数据库5.和FlashbackDatabase相关的3个视图1.Vdatabase2.Vflashback_database_log3.Vflashback_database_stat6.FlashbackDrop1.TablespaceRecycleBin2.FlashbackDrop实例操作7.FlashbackQuery1.FlashbackQuery1.多版本读一致性2.Asoftimestamp的示例3.Asofscn示例4.SCN与timestamp关系5.FlashbackQuery函数存储过程包触发器等对象2.FlashbackversionQuery3.FlashbackTransactionQuery8.FlashbackTable9.OracleFlashbackDataArchive1.FlashbackDataArchive说明2.FlashbackDataArchive的相关操作1.CreatingaFlashbackDataArchive2.AlteringaFlashbackDataArchive3.DroppingaFlashbackDataArchive4.SpecifyingtheDefaultFlashbackDataArchive5.EnablingandDisablingFlashbackDataArchive6.DDLStatementsonTablesEnabledforFlashbackDataArchive3.一个用FlashbackDataArchive恢复数据的测试写在前面:2009年的时候结合网上的资料整理了下Flashback的用法。2011年5月份起,把我这几年来的整理的资料又重新进行了一个整理,暂定为《DavidDaiOracle学习手册》,等第一版整理完会免费上传到网络。对Flashback这块又重新整理了一下。这个比之前的版本要完整很多,内容上也要更加严谨一些。所以对这块先更新到blog上来。以方便大家对Oracle的学习。Dave2011-6-192.4FlashbackFlashback技术是以Undosegment中的内容为基础的,因此受限于UNDO_RETENTON参数。要使用flashback的特性,必须启用自动撤销管理表空间。在Oracle11g里又出了一个新特性:OracleFlashbackDataArchive.FDA通过将变化数据另外存储到创建的闪回归档区(FlashbackArchive)中,以和undo区别开来,这样就可以为闪回归档区单独设置存储策略,使之可以闪回到指定时间之前的旧数据而不影响undo策略。在Oracle10g中,Flashback家族分为以下成员:FlashbackDatabase,FlashbackDrop,FlashbackQuery(分FlashbackQuery,FlashbackVersionQuery,FlashbackTransactionQuery三种)和FlashbackTable。2.4.1闪回恢复区(FlashbackRecoveryArea)在oracle9i中引入flashback查询,以便能在需要的时候查到过去某个时刻的一致性数据,依赖于undo表空间存储的信息来闪回查询以前的版本,当然这个受限于undo表空间的大小,以及保留策略。如果undo被覆盖了就不能进行查询。oracle10g中增强了闪回查询的功能,并且提供了将整个数据库回退到过去某个时刻的能力,这是通过引入一种新的flashbacklog实现的。flashbacklog有点类似redolog,只不过redolog将数据库往前滚,flashbacklog则将数据库往后滚。为了保存管理和备份恢复相关的文件,oracle10g提供了一个叫做闪回恢复区(Flashbackrecoveryarea),这个区域默认创建在oracle_base目录下。可以将所有恢复相关的文件,比如flashbacklog,archivelog,backupset等,放到这个区域集中管理。2.4.1.1.设置闪回恢复区闪回恢复区主要通过3个初始化参数来设置和管理:db_recovery_file_dest:指定闪回恢复区的位置db_recovery_file_dest_size:指定闪回恢复区的可用空间大小db_flashback_retention_target:指定数据库可以回退的时间,单位为分钟,默认1440分钟,也就是一天。当然,实际上可回退的时间还决定于闪回恢复区的大小,因为里面保存了回退所需要的flashlog。所以这个参数要和db_recovery_file_dest_size配合修改。SQLALTERSYSTEMSETdb_recovery_file_dest_size=3gSCOPE=BOTH;Systemaltered.SQLALTERSYSTEMSETdb_recovery_file_dest='D:/app/Administrator/flash_recovery_area'SCOPE=BOTH;Systemaltered.SQLshowparameterdb_recovery_file_destNAMETYPEVALUE-----------------------------------------------------------------------------db_recovery_file_deststringD:/app/Administrator/flash_recovery_areadb_recovery_file_dest_sizebiginteger3852MSQLshowparameterdb_flashbackNAMETYPEVALUE-----------------------------------------------------------------------------db_flashback_retention_targetinteger1440我们看到db_flashback_retention_target默认是1440分钟,即24小时,需要注意的是该参数虽然未直接指定flashrecoveryarea大小,但却受其制约,举个例子假如数据库每天有10%左右的数据变动的话,如果该初始化参数值设置为1440,则flashrecoveryarea的大小至少要是当前数据库实际容量的10%,如果该初始化参数设置为2880,则flashrecoveryarea的大小就至少是数据库所占容量的20%。修改该参数:SQLaltersystemsetdb_flashback_retention_target=2880scope=both;2.4.1.2取消闪回恢复区将db_recovery_file_dest参数设置为空,可以停用闪回恢复区。如果已经启用flashbackdatabase,则不能取消闪回恢复区。SQLaltersystemsetdb_recovery_file_dest='';altersystemsetdb_recovery_file_dest=''*第1行出现错误:ORA-02097:无法修改参数,因为指定的值无效ORA-38775:无法禁用恢复区-闪回数据库已启用SQLshutdownimmediate数据库已经关闭。已经卸载数据库。ORACLE例程已经关闭。SQLstartupmount;ORACLE例程已经启动。TotalSystemGlobalArea849530880bytesFixedSize1377896bytesVariableSize637536664bytesDatabaseBuffers205520896bytesRedoBuffers5095424bytes数据库装载完毕。SQLalterdatabaseflashbackoff;数据库已更改。SQLalterdatabaseopen;数据库已更改。SQLaltersystemsetdb_recovery_file_dest='';系统已更改。SQLshowparameterdb_recovery_file_destNAMETYPEVALUE-----------------------------------------------------------------------------db_recovery_file_deststringdb_recovery_file_dest_sizebiginteger3852MSQL注意:(1)DB_RECOVERY_FILE_DEST_SIZE只有在DB_RECOVERY_FILE_DEST清空之后才可以清空。(2)初始化参数db_recovery_file_dest_size的设定有一点点需要注意的地方:文件的第0块和操作系统数据块头的空间大小不包含在内,该参数并不代表实际占用的空间大小。如果空间被压缩、镜像、RAID的话,该参数的值意义是不一样的2.4.1.3闪回恢复区的内容所有和恢复相关的文件都可以存放到闪回恢复区SQLselectfile_typefromv$flash_recovery_area_usage;FILE_TYPE--------------------CONTROLFILEREDOLOGARCHIVEDLOGBACKUPPIECEIMAGECOPYFLASHBACKLOGFOREIGNARCHIVEDLOG已选择7行。上面视图中查询的结果列出的所有类型的文件,都可以利用闪回恢复区来存放、管理。在一些10g的动态视图里(V$CONTROLFILE,V$LOGFILE,V$ARCHIVED_LOG,V$DATAFILE_COPY等)的新的列IS_RECOVERY_DEST_FILE,指明相关的文件是否在恢复区内。/*Formattedon2010/8/130:04:22(QP5v5.115.810.9015)*/SELECTrecid,blocks,is_recovery_dest_fileFROMv$archived_logWHERErecid5;RECIDBLOCKSIS_-----------------------114141NO252NO37NO4138NOSQL2.4.1.4闪回恢复区的一些限制如果设置了闪回恢复区,则log_archive_dest和log_archive_duplex_dest将不可用。SQLaltersystemsetlog_archive_dest='e:/';altersystemse
本文标题:Oracle Flashback 技术 总结
链接地址:https://www.777doc.com/doc-3883744 .html