Oracle 12c 数据库内归档

2014-11-24 17:34:10 · 作者: · 浏览: 0

现举例说明:


SQL> create table test(id int,name varchar2(10));
Table created.
SQL> alter table test ROW ARCHIVAL;
Table altered.
SQL> insert into test values(1,'col1');
1 row created.
SQL> insert into test values(2,'col2');
1 row created.
SQL> commit;



SQL> COL DATA_TYPE FOR A10
SQL> COL COLUMN_NAME FOR A20


SQL> SELECT COLUMN_NAME, DATA_TYPE, HIDDEN_COLUMN, CHAR_LENGTH FROM USER_TAB_COLS WHERE TABLE_NAME='TEST';


COLUMN_NAME DATA_TYPE HID CHAR_LENGTH
-------------------- ---------- --- -----------
ORA_ARCHIVE_STATE VARCHAR2 YES 4000
NAME VARCHAR2 NO 10
ID NUMBER NO 0


SQL> col ora_archive_state for a20


SQL> select id,name,ora_archive_state from test;



ID NAME ORA_ARCHIVE_STATE
---------- ---------- --------------------
1 col1 0
2 col2 0




默认情况下,ora_archive_state列的值为0,其意味着没有在数据库归档。


SQL> update test set ora_archive_state='1' where id=1;


1 row updated.


SQL> commit;


Commit complete.


SQL> select * from test;


ID NAME
---------- ----------
2 col2
可以看到,修改的那上数据已经看不到了。


SQL> ALTER SESSION SET ROW ARCHIVAL VISIBILITY = ALL;


Session altered.


SQL> select * from test;


ID NAME
---------- ----------
1 col1
2 col2
SQL> ALTER SESSION SET ROW ARCHIVAL VISIBILITY=active;


Session altered.


SQL> select * from test;


ID NAME
---------- ----------
2 col2


可以看到,不同的会话参数,显示结果不同。