Oracle Database 12C新特性 In-Database Archiving数据库内归档(二)

2015-07-20 12:04:23 · 作者: · 浏览: 47
TATE FROM employees_indbarch;


EMPLOYEE_ID ORA_ARCHIVE_STATE


----------- ------------------


? ? ? 251 0


? ? ? 252 20


SQL> desc employees_indbarch


Name? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Null?? ? Type


----------------------------------------- -------- ----------------------------


EMPLOYEE_ID? ? ? ? ? ? ? ? ? ? ? ? ? ? ? NOT NULL NUMBER(6)


FIRST_NAME? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? VARCHAR2(20)


LAST_NAME? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? NOT NULL VARCHAR2(25)


EMAIL? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? NOT NULL VARCHAR2(25)


PHONE_NUMBER? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? VARCHAR2(20)


HIRE_DATE? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? NOT NULL DATE


JOB_ID? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? NOT NULL VARCHAR2(10)


SALARY? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? NUMBER(8,2)


COMMISSION_PCT? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? NUMBER(2,2)


MANAGER_ID? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? NUMBER(6)


DEPARTMENT_ID? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? NUMBER(4)


1* select COLUMN_NAME,COLUMN_ID,DATA_TYPE from dba_tab_cols where table_name=upper('employees_indbarch')


SQL> /


COLUMN_NAME? ? ? ? ? COLUMN_ID DATA_TYPE


-------------------- --------- --------------------


DEPARTMENT_ID? ? ? ? ? ? ? 11 NUMBER


MANAGER_ID? ? ? ? ? ? ? ? ? 10 NUMBER


COMMISSION_PCT? ? ? ? ? ? ? 9 NUMBER


SALARY? ? ? ? ? ? ? ? ? ? ? 8 NUMBER


JOB_ID? ? ? ? ? ? ? ? ? ? ? 7 VARCHAR2


HIRE_DATE? ? ? ? ? ? ? ? ? ? 6 DATE


PHONE_NUMBER? ? ? ? ? ? ? ? 5 VARCHAR2


EMAIL? ? ? ? ? ? ? ? ? ? ? ? 4 VARCHAR2


LAST_NAME? ? ? ? ? ? ? ? ? ? 3 VARCHAR2


FIRST_NAME? ? ? ? ? ? ? ? ? 2 VARCHAR2


EMPLOYEE_ID? ? ? ? ? ? ? ? ? 1 NUMBER


ORA_ARCHIVE_STATE? ? ? ? ? ? ? VARCHAR2


SQL> select dump(ORA_ARCHIVE_STATE,16),dump(EMPLOYEE_ID,16),dbms_rowid.rowid_block_number(rowid),dbms_rowid.rowid_relative_fno(rowid)? from employees_indbarch;


DUMP(ORA_ARCHIVE_STA DUMP(EMPLOYEE_ID,16) DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID)


-------------------- -------------------- ------------------------------------ ------------------------------------


Typ=1 Len=1: 30? ? ? Typ=2 Len=3: c2,3,34? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 109465? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1


Typ=1 Len=2: 32,30? Typ=2 Len=3: c2,3,35? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 109465? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1


? ? ? SQL> alter system flush buffer_cache;


System altered.


SQL> alter system dump datafile 1 block 109465;


System altered.


tl: 73 fb: --H-FL-- lb: 0x0? cc: 12


col? 0: [ 1]? 30


col? 1: [ 3]? c2 03 34


col? 2: [ 5]? 53 63 6f 74 74


col? 3: [ 5]? 54 69 67 65 72


col? 4: [23]


73 63 6f 74 74 2e 74 69 67 65 72 40 65 78 61 6d 70 6c 65 2e 63 6f 6d


col? 5: *NULL*


col? 6: [ 7]? 78 6d 05 15 01 01 01


col? 7: [ 7]? 49 54 5f 50 52 4f 47?


col? 8: [ 2]? c3 06


col? 9: *NULL*


col 10: [ 3]? c2 02 04


col 11: [ 2]? c1 3d


tab 0, row 1, @0x1ecc


tl: 70 fb: --H-FL-- lb: 0x2? cc: 12


col? 0: [ 2]? 32 30


col? 1: [ 3]? c2 03 35


col? 2: [ 4]? 4a 61 6e 65


col? 3: [ 4]? 4c 69 6f 6e


col? 4: [21]


6a 61 6e 65 2e 6c 69 6f 6e 40 65 78 61 6d 70 6c 65 2e 63 6f 6d


col? 5: *NULL*


col? 6: [ 7]? 78 6d 06 0b 01 01 01


col? 7: [ 7]? 49 54 5f 50 52 4f 47


col? 8: [ 2]? c3 06


col? 9: *NULL*


col 10: [ 3]? c2 02 04?


col 11: [ 2]? c1 3d


可以看到这里 ORA_ARCHIVE_STATE是实际存放在块里的row piece上的第一个字段,类型为varchar2(4000);
?In-Database Archiving的限制:


§? ILM is not supported with OLTP table compression for in-database archiving. Segment-level ILM and compression is supported if partitioned on the ORA_ARCHIVE_STATE column.


ORA_ARCHIVE_STATE相关:


/* constants specifying ROW ARCHIVAL state */
?archive_state_active constant varchar2(1) := ‘0’;
archive_state_archived constant varchar2(1) := ‘1’;


/*
?* description – Given a value for the ORA_ARCHIVE_STATE column this
?* function returns the mapping for the value.
?*
?* value – “0”, “1” or other values from the ORA_ARCHIVE_STATE column of
?* a row archival enabled table
?* returns either “archive_state_active