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
补充:综合编程 , 其他综合 ,