关于oracle闪回数据归档的总结

Flashback Data Archive闪回数据归档概述:
一句话就是undo的长期保存
     我们知道关系型数据库要保证一致性,例如A用户update一条数据,未提交,此时为保证一致性B用户是看不到A更改后的数据的,那么此时B用户需要从undo表空间里面查看数据的前镜像,如果找不到前镜像就会报错,非常经典的ora-01555快照过旧的错误,还有就是闪回表和闪回查询也要依靠UNDO表空间记录的回滚信息,
然而undo表空间里面的数据是循环复写的,具体循环复写的规则请见http://blog.itpub.net/29654823/viewspace-2106256/ ,这样时间久了,所以经常在做回闪查询时,我们会因为找不到undo block而收到1555错误, 由此11G里面引入了Flashback Data Archive ,他用于存储数据的所有改变,时间由你自己设定,消耗的是更多的磁盘空间,现在来看下这个特性。
 
一:创建闪回数据归档
1)创建管理闪回数据归档的用户
SQL>create user FR_ADMIN identified by oracle;
2)用sys用户赋予FR_ADMIN需要的权限
SQL> grant create session,FLASHBACK ARCHIVE ADMINISTER to fr_admin;
SQL> grant CREATE FLASHBACK ARCHIVE to fr_admin;
3)创建闪回数据归档使用的表空间
SQL> create tablespace fratbs datafile '/u01/app/oracle/oradata/PROD1/fratbs01.dbf' size 1g autoextend on next 2m ;
4)创建闪回数据归档fra1,并保留一年,配额1g;
SQL>create flashback archive fra1 tablespace fratbs   quota 1g retention 1 year;
SQL>drop flashback archive fra1 ;   ##删除数据归档
5)开启某张表的闪回数据归档,
SQL>alter table tablename   flashback archive;  ## 这样就会使用默认的闪回数据归档
或者:
SQL>alter table tablename  flashback archive fra1;  
取消对于数据表的闪回归档可以使用如下命令:
SQL>alter table table_name no flashback archive;

二:闪回数据归档的管理:
SQL> alter flashback archive fra1 set default;   ##注意需要sys用户操作
Flashback archive altered. 
SQL> alter flashback archive fra1 add tablespace fratbs   ; --添加表空间 
Flashback archive altered. 
SQL> alter flashback archive  fra1 remove tablespace fratbs   ;--删除表空间 
Flashback archive altered.  
SQL> alter flashback archive fra1 modify tablespace fratbs   quota 2048M;--添加配额 
Flashback archive altered.   
SQL> alter flashback archive fra1 modify retention 3 year; 
Flashback archive altered.   
SQL> alter flashback archive fra1 purge all;  -- 清除所有 
Flashback archive altered. 
SQL> alter flashback archive fra1 purge before timestamp (systimestamp - interval '2' day);--清除2天前的 
Flashback archive altered. 
SQL> alter flashback archive fra1 purge before scn 123344;  
Flashback archive altered.

三:闪回数据归档的限制
 
在使用闪回归档的过程中有某些限制。对于已经启用闪回的表,不能使用DDL命令drop column(11r2可以drop column),但可以add column命令。删除属于一个启用了闪回数据归档的表列的唯一方法是首先关闭闪回归档功能。但是,这样会删除所有闪回归档数据。
下面这些是11GR2之前不支持的,
1、ALTER TABLE:
Drops, renames, or modifies a column (11GR2是可以的)
Performs partition or subpartition operations
Converts a LONG column to a LOB column
Includes an UPGRADE TABLE clause, with or without an INCLUDING DATA clause
2、 DROP TABLE
3、TRUNCATE TABLE (11GR2是可以的)
4、RENAME TABLE (11GR2也是可以的)

四:监控闪回数据归档

1、查哪些表已经启用了闪回数据归档
SQL> select * from dba_flashback_archive_tables;
 TABLE_NAME  OWNER_NAME  FLASHBACK_ARCHIVE_NAME  ARCHIVE_TABLE_NAME     STATUS
----------- -----------  ----------------------  ----------------  -------------
T1          GYJ          FLASH1                SYS_FBA_HIST_17877         ENABLED
 2、查数据库中所有的闪回数据归档
SQL> select flashback_archive_name,retention_in_days from dba_flashback_archive;
 
FLASHBACK_ARCHIVE_NAME                             RETENTION_IN_DAYS
-------------------------------------------------- -----------------
FLASH1                                                          1095
 3、查有关闪回数据归档所使用的表空间的信息
 SQL>  select flashback_archive_name,tablespace_name,quota_in_mb from dba_flashback_archive_ts;
FLASHBACK_ARCHIVE_NAME        TABLESPACE_NAME                QUOTA_IN_MB
---------------------------- ----------------------- ----------------------------------
FLASH1                          FLASH_TBS1                                     2048

心得:
关于oracle11g的这个新特性,由于它有诸多的限制,以及必然带来的性能问题,导致生产环境很少使用,并且生产环境很少存在要闪回某张表到很长时间之前的需求,如果非得恢复到很长时间之前,可以使用数据泵(生产环境一般都是rman+expdp备份的)。












本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。

ORACLE 死锁分析过程 - 2016-09-23 18:09:05

ORACLE 死锁分析 关于死锁一般3种处理方式 1、事前预测 2、资源分级 3、事后检测释放 我知道的ORACLE MYSQL都是采用第三种在行锁级别上的话。 这里分析一个ORACLE死锁,首先一个死锁肯定会生成一个TRACE文件,这里会记录很多信息如: Deadlock graph:                        ---------Blocker(s)--------  ---------Waiter(s)--------- Resource Name          process
传输表空间综述: 不论是数据字典管理的表空间还是本地管理的表空间,都可以使用传输表空间技术;从9i开始传输表空间不需要在源数据库和目标数据库之间具有同样的DB_BLOCK_SIZE块大小;使用传输表空间迁移数据比使用数据导入导出工具迁移数据的速度要快,这是因为传输表空间只是复制包含实际数据的数据文件到目标数据库的指定位置,而使用数据导入导出工具将传输表空间对象的元数据到目标数据库。 我们知道oracle利用imp/impdp传输表空间transport_tablespace需要满足以下条件: 1.字符集相

在线重定义的补充测试 - 2016-09-22 17:09:04

    在很多时候,我们都是需要保持业务的可持续性,尽管说DDL的过程持续时间很短,但是在线业务出现,就会阻塞DML,导致业务访问中断,事务收到影响,所以在有些场景下,高可用的需求可能比性能的需求优先级还要高一些。     比如一个分区表,突然发现分区的规则存在一些问题,如果需要重新规划分区,部署,可能对于在线业务影响较大,能不能平滑的过渡到重新规划的分区模式下。     比如一个普通表,随着数据量的增加发现已经存在一些管理瓶颈,比如历史数据的清理比较麻烦,想改为分区表的方式     比如一个表需要添加若干

oracle手动删除数据库 - 2016-09-21 14:09:23

有时候,无法使用图形界面时,我们需要手动删除数据库,具体操作步骤如下: 一、手动删除文件系统数据库    1.停止监听,防止有新的连接产生,同时,在数据库配置了em的,也需要停止        $ lsnrctl stop listener_name        $ emctl stop dbconsole    2.获得数据文件,日志文件及控制文件的相关信息,包含归档              $ sqlplus /as sysdba        SQLshow parameter control
  【 技巧 】如何让普通用户可以杀掉自己用户的会话   1    BLOG 文档结构图     2    前言部分   2.1    导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识, ~O(∩_∩)O~ : ①  如何让普通用户可以杀掉自己用户的会话(重点)     Tips : ①  本文在 itpub ( http://blog.itpub.net/26736162 )、博客园 ( http://www.cnblogs.com/lhrbest )

聊聊Data Guard中的DG Broker - 2016-09-20 18:09:07

    DG Broker是Oracle为Data Guard维护提供的一个很不错的工具,从我的实际使用来看,早期的版本中似乎大家都还是存在一定的思维定式,认为手工维护已经足够了。这个工具就不那么需要了,我们完全可以脱离开这些工具来直观的使用命令行的方式来维护,这个观点也没错,不过从与时俱进的角度来看,本来能够让你更轻松的一个工具,如果不用实在是太可惜了。     DG Broker在数据库端需要启用一个后台进程dmon来维护,这个后台进程启动,需要设置dg_broker_start为true即可,如果要停
报名缘起   去年年底,崔老师发微信说12c OCM可以提上日程了。先不说那不菲的考试费用,单一个C(loud)就够我冷静一下了。最近几次参加线下分享活动,很多主题都离不开Cloud,听得云里雾里的。我问了一下自己,我可以吗?要不再等等吧。   过完年后,几个小伙伴蠢蠢欲动,看着朋友圈有朋友晒出的12c战袍还蛮帅的,走,报名去! 12c OCM考试号称“史上最难”   Oracle于2015年正式推出12c OCM升级考试,和以往的10g、11g OCM不同的是,12c OCM考试还要求考生每场达到最低分
  【 等待事件 】等待事件系列( 3+4 ) --System IO (控制文件) + 日志类等待   1    BLOG 文档结构图     2    前言部分   2.1    导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识, ~O(∩_∩)O~ : ①  控制文件类等待 ② 日志类等待   2.2    相关参考文章链接 【推荐】 等待事件系列(1)--User I/O类型(下) http://blog.itpub.net/26736162/v
今儿需要部署一个Oracle环境,为了简单些,选择了Oracle提供的Linux版本介质:OracleLinux-R6-U2-Server-x86_64-dvd.iso,在安装的过程中碰见了几个常见的问题,简要记录下,便于日后查找。 问题1:无法登陆图形界面   按照正常流程安装后,默认是没有安装图形界面的,因此进入的是命令行界面,若不用静默安装或克隆安装,则必须需要图形界面。于是按照常规做如下操作:  (1) 修改/etc/inittab中id:3:initdefault的3为5。  (2) start

【函数】wm_concat包的订制 - 2016-09-20 14:09:39

  【 函数 】 wm_concat 包的订制   1    BLOG 文档结构图     2    前言部分   2.1    导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识, ~O(∩_∩)O~ : ①  利用系统包创建 WM_CONCAT 函数 (重点) ② ORA-00904: "wm_concat":invalid identifier 错误解决 ③  订制自己的 WM_CONCAT 函数 ④  listagg 分析函数的使用 ⑤ ORA-0