database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Tutorials 9303 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 9303
rowid 에 대한 이해
작성자
정재익(advance)
작성일
2002-01-06 13:44
조회수
6,226

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가 바뀐 이유나 용도 ...등에 관한 글을 올리도록 하겠습니다.

[Top]
No.
제목
작성자
작성일
조회
9327사용되지 않은 공간을 DEALLOCATE
정재익
2002-01-07
4673
9326CONNECT internal 시 패스워드를 물어 오는 문제 해결
정재익
2002-01-07
4960
9324ORA-1547 에러 발생의 원인
정재익
2002-01-07
4473
9303rowid 에 대한 이해
정재익
2002-01-06
6226
9302Imp-00020 Error
정재익
2002-01-06
5387
9301Export file 을 분리하여 얻는 방법
정재익
2002-01-06
5703
9286Windows NT 에서 Oracle 8i R2 (8.1.6) 설치 가이드 [1]
정재익
2002-01-05
5449
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다