11G新特性:FLASHBACK ARCHIVE

11G新特性:FLASHBACK ARCHIVE

闪回数据归档(FLASHBACK ARCHIVE)与UNDO表空间是没有任何关系的,并且与flashback logs(开启数据库闪回生成的日志)也无关。

闪回数据归档需要单独为其创建相应的表空间(falshback tablespace)用于保存对指定表修改的历史数据。

下面演示针对DML操作的闪回查询

创建FLASHBACK ARCHIVE

SQL> create flashback archive default tbs_archive01
2 tablespace tbs_ht02
3 retention 1 day;
Flashback archive created.

查询ligle.t01表数据

SQL> col owner for a10
SQL> col object_name for a20
SQL> col object_type for a20
SQL> select owner,object_id,object_name,object_type from ligle.t01 where owner='SCOTT'
OWNER OBJECT_ID OBJECT_NAME OBJECT_TYPE
---------- ---------- --------------------
-------------------
SCOTT 75334 PK_DEPT INDEX
SCOTT 75333 DEPT TABLE
SCOTT 75335 EMP TABLE
SCOTT 75336 PK_EMP INDEX
SCOTT 75337 BONUS TABLE
SCOTT 75338 SALGRADE TABLE
删除一条数据

SQL> delete from t01 where object_id=75334;
1 row deleted.
SQL> commit;
Commit complete.

再次查询ligle.t01表数据

SQL> select owner,object_id,object_name,object_type from ligle.t01 where owner='SCOTT';
OWNER OBJECT_ID OBJECT_NAME OBJECT_TYPE
---------- ---------- -------------------- --------------------
SCOTT 75333 DEPT TABLE
SCOTT 75335 EMP TABLE
SCOTT 75336 PK_EMP INDEX
SCOTT 75337 BONUS TABLE
SCOTT 75338 SALGRADE TABLE

可以发现OBJECT_ID75334的数据已被删除。

通过FLASHBACK ARCHIVE查询过去某时刻该表的数据:

SQL> select owner,object_id,object_name,object_type from t01 as of timestamp (systimestamp-interval '10' minute) where owner='SCOTT';
OWNER OBJECT_ID OBJECT_NAME OBJECT_TYPE
---------- ---------- -------------------- --------------------
SCOTT 75334 PK_DEPT INDEX
SCOTT 75333 DEPT TABLE
SCOTT 75335 EMP TABLE
SCOTT 75336 PK_EMP INDEX
SCOTT 75337 BONUS TABLE
SCOTT 75338 SALGRADE TABLE
6 rows selected.

我们知道,在Oracle 11g以前,通过闪回查询也可以查出过去某时刻的数据状态(该方法的前提是UNDO表空间必须还存在该表被修改时的undo数据,否则将会报ORA-01555),那么比较细心的朋友会发现,在上面的闪回归档查询中是不是也是用的UNDO数据呢?

可以通过切换当前的undo表空间来实验下:

SQL> conn /as sysdba
SQL> create undo tablespace UNDOTBS2 datafile '/soft/oradata/horizon/undotbs02.dbf' size 10M;
SQL> alter system set undo_tablespace='UNDOTBS2';
SQL> conn ligle/ligle

Connected.
SQL> select owner,object_id,object_name,object_type from t01 as of timestamp (systimestamp-interval '20' minute) where owner='SCOTT';
OWNER OBJECT_ID OBJECT_NAME OBJECT_TYPE
---------- ---------- -------------------- --------------------
SCOTT 75334 PK_DEPT INDEX
SCOTT 75333 DEPT TABLE
SCOTT 75335 EMP TABLE
SCOTT 75336 PK_EMP INDEX
SCOTT 75337 BONUS TABLE
SCOTT 75338 SALGRADE TABLE

至此,可以明白,在当前UNDO表空间已被切换的情况下,依然可以查询到过去某时刻的表数据状态,所以可以证明FLASHBACK ARCHIVEUNDO表空间是没有关系的。

通过FLASHBACK ARCHIVE恢复表数据到某时刻:

SQL> alter table t01 enable row movement;
Table altered.
SQL> flashback table t01 to timestamp (systimestamp - interval '40' minute);
Flashback complete.
SQL> select owner,object_id,object_name,object_type from t01 where owner='SCOTT';
OWNER OBJECT_ID OBJECT_NAME OBJECT_TYPE
---------- ---------- -------------------- --------------------
SCOTT 75333 DEPT TABLE
SCOTT 75335 EMP TABLE
SCOTT 75336 PK_EMP INDEX
SCOTT 75337 BONUS TABLE
SCOTT 75338 SALGRADE TABLE
SCOTT 75334 PK_DEPT INDEX
6 rows selected.

通过创建FLASHBACK ARCHIVE表空间来存储指定表的变更历史数据,避免了对UNDO表空间的过度依赖。

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25834554/viewspace-1056794/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/25834554/viewspace-1056794/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值