ROWID structure(V7,V8)
1. rowid 란
. Disk상에서 하나의 row에 대한 Physical location을 나타내는 internal한
address임.
. 하나의 row를 access하는 가장 빠른 방법
. Table내에서 row를 위한 unique한 식별자 이다.
(특징)
1) delete 나 reinsert를 할경우(export & import) row의 rowid는 바뀐다.
(location변경)
2) rowid를 delete하면 이 row의 rowid는 후에 새로운 row에 reassign하여
사용됨.
3) select를 통해 rowid pseudocolumn을 볼 수 있고 where절에서도 사용
할 수 있지만 이 pseudo column의 값이 DB에 실제로 저장되는 것은 아님.
4) 따라서 rowid는 insert,update,delete를 할 수는 없다.
2. New rowid format(6 --> 10bytes) Version 8 부터 적용
. DBA(Data Block Address) 내의
absolute file num(DB내에서 unique) -->
relative file num(tablespace내에서 unique)
. Data object number추가
(object생성시 object_id와 함께 같은 값의 data_object_id생성)
dba_object에서 확인할 수 있다.
한 partition table인 경우 각 partition 마다의 object_id는 다른 값을 가진다.
partition을 move하거나 truncate시 data_object_id는 변한다.
(object_id는 안변함)
Select * from dba_objects where object_name=’SALES’;
--------------------------------------------------------------------------
object_name subobject_name object_id data_object_id object_type
--------------------------------------------------------------------------
SALES P1 2844 2844 Table Partition
SALES P2 2845 2845 Table Partition
--------------------------------------------------------------------------
3. Oracle7 Rowid
1) Internal format : 6bytes(DBA(4) + row no(2))
2) rowid pseudocolumn : bbbbbbbb.rrrr.ffff(18자리)
3) rowid pseudocolumn -> internal format :
select dump(chartorowid(‘rowid pseudo column value’) from dual;
-> len=6: 4,0,0,1,0,0
> 00000100 00000000 0-0 0-1
file no = 1, block no=1
-> Oracle6 는 6bits를 file no로 사용
Oracle7 에서는 6 + 4bits 로 사용
4. Oracle8 이후 Rowid
1) Internal format : 10bytes(data object no(4) + DBA(4) + row no(2))
2) rowid pseudocolumn : oooooofffbbbbbbsss(18자리)
3) rowid pseudocolumn -> internal format :
select dump(chartorowid(‘rowid pseudo column value’) from dual;
-> len=10: 0,0,11,36,0,64,0,1,0,0
> 0-0 0-0 00001011 00100100 => 2852 (object)
-> file no = 1, block no=1
위의 3,4 항의 Rowid에 대한 부분은 이해 하기 어려우실 수 도 있고 사실 설명을 통해서 이해가 되어야 하는 부분이고 어찌 보면 몰라도 될 수가 있는 부분이니 참고 하시기 바랍니다.
일 단 이번 글도 여기 까지 기술을 하고 좀더 관심이 있는 분이 많으시면 Rowid가 바뀐 이유나 용도 ...등에 관한 글을 올리도록 하겠습니다.
|