当前位置:编程学习 > 网站相关 >>

12c In-Database Archiving

为准备12c ocp升级考试
12c建议把历史数据也放置到在线的数据库中,可参考12c的ILM和VLDB部分。
In-Database Archiving可以把表中的行标记为inactive,从而达到对此行进行archive的目的。
数据库可以对inactive的数据进行压缩,对于应用来说这些inactive的数据也是不可见的。通过此特性,在单个数据库中可以支持存储更长历史时长的数据
 
要启用此特性,我们在创建表时必须加上row archival,数据库会自动为新创建的表添加ORA_ARCHIVE_STATE隐藏列。
并且,数据库通过一个会话级参数row archival visibility来控制inactive的数据是否可见。如下
 
SQL> alter session set row archival visibility=active;
Session altered.
SQL> create table test2(id number,name varchar2(12)) row archival;
Table created.
SQL> desc test2
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                                                 NUMBER
 NAME                                               VARCHAR2(12)
SQL> insert into test2 values(1,'tom');
1 row created.
SQL> insert into test2 values(2,'mary');
1 row created.
SQL> commit;
Commit complete.
SQL> col column_name for a20
SQL> select column_name,hidden_column from user_tab_cols where table_name='TEST2';
COLUMN_NAME          HID
-------------------- ---
ORA_ARCHIVE_STATE    YES
ID                   NO
NAME                 NO
SQL> col ORA_ARCHIVE_STATE for a20
SQL> select id,ORA_ARCHIVE_STATE from test2;
        ID ORA_ARCHIVE_STATE
---------- --------------------
         1 0
         2 0
SQL> update test2 set ORA_ARCHIVE_STATE=1 where id=2;   
 ----Insert a value into ORA_ARCHIVE_STATE to set inactive
1 row updated.
SQL> select id,ORA_ARCHIVE_STATE from test2;
        ID ORA_ARCHIVE_STATE
---------- --------------------
         1 0
SQL> alter session set row archival visibility=all;
Session altered.
SQL> select id,ORA_ARCHIVE_STATE from test2;
        ID ORA_ARCHIVE_STATE
---------- --------------------
         1 0
         2 1
补充:综合编程 , 其他综合 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,