数据类型的存储方式
SQL> select rowid,a from test;
ROWID A
------------------ ----------
AAAMitAABAAAO+qAAA 1
SQL> select object_id from dba_objects where object_name='TEST';
OBJECT_ID
----------
51373
SQL> select segment_name,file_id,block_id from dba_extents where segment_name='TEST';
SEGMENT_NAME
--------------------------------------------------------------------------------
FILE_ID BLOCK_ID
---------- ----------
TEST
1 61353
索引列号,长度,值。其中6个字节的为ROWID号,将其转换为二进制,算法结果为:
前10 bit代表了file_id
中22 bit代表了block_id
后16 bit代表了row_id;
00 40 ef aa 00 00转换成2进制为
000000000100000011101111101010100000000000000000
取中间22bit转换十进制为block_id 61354.即指向test存放的block_id.
0000001110111110101010=61354
c102=193,2=1
row#0[8020] flag: ------, lock: 2, len=12
col 0; len 2; (2): c1 02
col 1; len 6; (6): 00 40 ef aa 00 00
index
SQL> select dump(a),a from test;
DUMP(A)
--------------------------------------------------------------------------------
A
----------
Typ=2 Len=2: 193,2
1
SQL> select ename,dump(ename,17) "dump" from emp;
ENAME dump
---------- --------------------------------------------------------------------------------
SMITH Typ=1 Len=5: S,M,I,T,H
ALLEN Typ=1 Len=5: A,L,L,E,N
WARD Typ=1 Len=4: W,A,R,D
JONES Typ=1 Len=5: J,O,N,E,S
MARTIN Typ=1 Len=6: M,A,R,T,I,N
BLAKE Typ=1 Len=5: B,L,A,K,E
CLARK Typ=1 Len=5: C,L,A,R,K
SCOTT Typ=1 Len=5: S,C,O,T,T
KING Typ=1 Len=4: K,I,N,G
TURNER Typ=1 Len=6: T,U,R,N,E,R
ADAMS Typ=1 Len=5: A,D,A,M,S
JAMES Typ=1 Len=5: J,A,M,E,S
FORD Typ=1 Len=4: F,O,R,D
MILLER Typ=1 Len=6: M,I,L,L,E,R
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7301064/viewspace-545371/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/7301064/viewspace-545371/