SQL> @ver
BANNER CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production 0
SQL> create table t as select rownum id ,'test' name from dual connect by level<=1e3;
Table created.
SQL> select count(*) from t;
COUNT(*)
----------
1000
SQL> select object_name,object_id,data_object_id from dba_objects where wner=user and object_name='T';
OBJECT_NAME OBJECT_ID DATA_OBJECT_ID
-------------------- ---------- --------------
T 92958 92958
SQL> select col#,name,segcol#,intcol# from sys.col$ where obj#=92958;
COL# NAME SEGCOL# INTCOL#
---------- -------------------- ---------- ----------
1 ID 1 1
2 NAME 2 2
SQL> alter table t row archival;
Table altered.
SQL> select object_name,object_id,data_object_id from dba_objects where wner=user and object_name='T';
OBJECT_NAME OBJECT_ID DATA_OBJECT_ID
-------------------- ---------- --------------
T 92958 92958
SQL> select col#,name,segcol#,intcol# from sys.col$ where obj#=92958;
COL# NAME SEGCOL# INTCOL#
---------- -------------------- ---------- ----------
1 ID 1 1
2 NAME 2 2
0 SYS_NC00003$ 3 3
0 ORA_ARCHIVE_STATE 4 4
SQL> select table_name,column_name,data_type from dba_tab_cols where wner=user and table_name='T';
TABLE_NAME COLUMN_NAME DATA_TYPE
---------- -------------------- ----------
T ORA_ARCHIVE_STATE VARCHAR2
T SYS_NC00003$ RAW
T NAME CHAR
T ID NUMBER
SQL> select column_name,data_default from dba_tab_cols where wner=user and table_name='T' and column_name in ('SYS_NC00003$','ORA_ARCHIVE_STATE');
COLUMN_NAME DATA_DEFAULT
-------------------- --------------------
SYS_NC00003$
ORA_ARCHIVE_STATE 0--可以看出ORA_ARCHIVE_STATE的缺省值就是0.
SQL> column ora_archive_state format a10
SQL> select SYS_NC00003$,ora_archive_state,id,name from t where rownum<=5;
SYS_NC00003$ ORA_ARCHIV ID NAME
-------------------- ---------- ---------- --------------------
0 1 test
0 2 test
0 3 test
0 4 test
0 5 test
SQL> update t set ORA_ARCHIVE_STATE=DBMS_ILM.ARCHIVESTATENAME(1) where id <=5;
5 rows updated.
SQL> commit ;
Commit complete.
SQL> select count(*) from t;
COUNT(*)
----------
995--仅仅看到995行,比原来少了5条记录。要想看到全部记录
SQL> select count(*) from t;
COUNT(*)
----------
1000
SQL> select rowid ,SYS_NC00003$,ora_archive_state,id,name from t where rownum<=6;
ROWID SYS_NC00003$ ORA_ARCHIV ID NAME
------------------ -------------------- ---------- ---------- --------------------
AAAWseAAJAAAACrAAA 01 1 1 test
AAAWseAAJAAAACrAAB 01 1 2 test
AAAWseAAJAAAACrAAC 01 1 3 test
AAAWseAAJAAAACrAAD 01 1 4 test
AAAWseAAJAAAACrAAE 01 1 5 test
AAAWseAAJAAAACrAAF 0 6 test
SQL> @lookup_rowid AAAWseAAJAAAACrAAA
OBJECT FILE BLOCK ROW DBA
---------- ---------- ---------- ---------- --------------------
92958 9 171 0 9,171
SQL> alter system dump datafile 9 block 171;
System altered.
SQL> select dump(6,16) from dual ;
DUMP(6,16)
-----------------
Typ=2 Len=2: c1,7
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-768755/ ,如需转载,请注明出处,否则将追究法律责任。