oracle 11g Flashback Data Archive(闪回数据归档)
oracle 11g Flashback Data Archive(闪回数据归档)
Flashback Data Archive(闪回数据归档)
UNDO表空间记录的回滚信息虽然可以提供回闪查询,但时间久了,这些信息会被覆盖掉,其实只要事务一提交,他们就变成可覆盖的对象了,所以经常在做回闪查询时,我们会因为找不到undo block而收到1555错误,11G里面引入了Flashback Data Archive ,他用于存储数据的所有改变,时间由你自己设定,消耗的是更多的磁盘空间,现在来看下这个特性。
一、创建闪回数据归档
1、为了创建闪回数据归档,必须拥有DBA角色或拥有系统权限flashback archive administer。
sys@MYDB> select * from dba_sys_privs where privilege like '%FLASH%'; GRANTEE PRIVILEGE ADM ------------------------------ ---------------------------------------- --- SYS FLASHBACK ANY TABLE NO DBA FLASHBACK ANY TABLE YES SYS FLASHBACK ARCHIVE ADMINISTER NO DBA FLASHBACK ARCHIVE ADMINISTER YES sys@MYDB> grant flashback archive administer to gyj; Grant succeeded.
2、创建表空间
sys@MYDB> create tablespace flash_tbs1 datafile '/u01/app/oracle/oradata/mydb/flash_tbs1.dbf' size 20480M; Tablespace created.
3、创建闪回归档
sys@MYDB> create flashback archive flash1 tablespace flash_tbs1 quota 1024M retention 5 year;
Flashback archive created.
二、更改闪回数据归档
sys@MYDB> alter flashback archive flash1 set default; Flashback archive altered. sys@MYDB> alter flashback archive flash1 add tablespace tp1; --添加表空间 Flashback archive altered. sys@MYDB> alter flashback archive flash1 remove tablespace tp1;--删除表空间 Flashback archive altered. sys@MYDB> alter flashback archive flash1 modify tablespace flash_tbs1 quota 2048M;--添加配额 Flashback archive altered. sys@MYDB> alter flashback archive flash1 modify retention 3 year; Flashback archive altered. sys@MYDB> alter flashback archive flash1 purge all; -- 清除所有 Flashback archive altered. sys@MYDB> alter flashback archive flash1 purge before timestamp (systimestamp - interval '2' day);--清除2天前的 Flashback archive altered. sys@MYDB> alter flashback archive flash1 purge before scn 123344; Flashback archive altered.
三、启用和禁用闪回数据归档
1、在建表的同时就启用表的闪回日志
gyj@MYDB> create table t1(id int,name varchar2(10)) flashback archive flash1;
Table created.
2、也可以在建表后,再启用表的闪回日志
alter table t1 flashback archive;--为表启用闪回数据归档,没指定表示使用数据库默认的
alter table t1 flashback archive flash1; ;--为表启用闪回数据归档,指定在特定的闪回数据归档中存储表的变化
3、数据库将把T1表的数据归档到默认的闪回数据归档中
gyj@MYDB> 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
4、在使用闪回数据归档前,必须设置默认闪回数据归档
gyj@MYDB> select flashback_archive_name,status from dba_flashback_archive;
FLASHBACK_ARCHIVE_NAME STATUS ------------------------------------
FLASH1 DEFAULT
5、禁用闪回数据归档
gyj@MYDB> alter table t1 no flashback archive;
Table altered.
四、闪回数据归档的限制
在使用闪回归档的过程中有某些限制。对于已经启用闪回的表,不能使用DDL命令drop column(11r2可以drop column),但可以add column命令。删除属于一个启用了闪回数据归档的表列的唯一方法是首先关闭闪回归档功能。但是,这样会删除所有闪回归档数据。
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也是可以的)
gyj@MYDB> select * from v$version; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production gyj@MYDB> alter table t1 drop column name; Table altered. gyj@MYDB> alter table t1 add(name varchar2(100)); Table altered. gyj@MYDB> alter table t1 rename to t10; Table altered. gyj@MYDB> truncate table t10; Table truncated. gyj@MYDB> drop table t10; drop table t10 * ERROR at line 1: ORA-55610: Invalid DDL statement on history-tracked table gyj@MYDB> alter table t10 no flashback archive; Table altered. gyj@MYDB> drop table t10; Table dropped.
五、监控认回数据归档
1、查哪些表已经启用了闪回数据归档
gyj@MYDB> 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、查数据库中所有的闪回数据归档
gyj@MYDB> select flashback_archive_name,retention_in_days from dba_flashback_archive;
FLASHBACK_ARCHIVE_NAME RETENTION_IN_DAYS
-------------------------------------------------- -----------------
FLASH1 1095
3、查有关闪回数据归档所使用的表空间的信息
gyj@MYDB> select flashback_archive_name,tablespace_name,quota_in_mb from
- 更多Oracle疑问解答:
- 运行exp备份oracle数据库提示oracle-12154错误
- 有没有,生产Oracle Rman 备份脚本的工具啊!
- 初学orcle,希望有大大帮忙解说一下详细步骤,从登录oracle到创建表的过程
- oracle语句问题:一张user表,三个字段,id,name,time,插入记录比如:张三2007,李四2008,张三2011
- 如何写一个ORACLE触发器同步两个表中的数据?
- oracle 如何查看一个服务器上有多少个数据库.
- oracle 创建包的时候错误 求解
- oracle 重复列的问题
- oracle 中如何查处2星期前的数据
- 请教oracle数据库安装中的问题
- 请问谁能提供给我标准的oracle ERP的数据库表结构并详细说明各表主要的作用?
- 安装oracle遇到的问题 invalid entry CRC (expected 0x3e12e795 but got 0x9db0e9fd)
- 我的是ORACLE 10G,在RMAN中如何按指定的时间恢复数据文件啊?
- oracle为什么没有自动增长列
- oracle快捷键都有哪些啊?