행위

오라클 ROWID 구조

DB CAFE

thumb_up 추천메뉴 바로가기


1 오라클 ROWID 구조[편집]

record_voice_over

  1. 데이터파일 번호, 블록번호,로우 번호 와 같은 위치정보를 포함한다.
  2. 테이블 레코드를 찾아가는데 필요한 주소 정보.
  3. 테이블에 실제 저장되어있지는 않음. 가상(pseudo) 컬럼.


1.1 제한 rowid 포맷 정보[편집]

notifications_active 제한 ROWID 포맷
  1. 데이터파일 번호(4자리) : 로우가 속한 데이터파일 번호로서, 데이터베이스 내에서 유일한 값
  2. 블록번호(8자리) : 해당 로우가 저장된 데이터 블록 번호이며,(테이블스페이스가 아니라) 데이터파일 내에서의 상대적 번호
  3. 로우번호(4자리) : 블록 내에서 각 로우에 붙여진 일련번호로서, 0부터시작

SQL> select rowid, empno, ename from emp;

ROWID                   EMPNO ENAME
------------------ ---------- ----------
AAAR3sAAEAAAACXAAA       7369 SMITH
AAAR3sAAEAAAACXAAB       7499 ALLEN
AAAR3sAAEAAAACXAAC       7521 WARD

1.2 확장 rowid 포맷[편집]

notifications_active 확장 ROWID 포맷
  1. 데이터 오브젝트번호(6자리) : 데이터베이스 세그먼트를 식별하기 위해 사용되는 데이터 오브젝트 번호
  2. 데이터파일 번호(3자리) : 로우가 속한 데이터파일 번호(테이블스페이스 내에서 상대적인 파일번호)
  3. 블록 번호(6자리) : 해당 로우가 저장된 데이터 블록 번호이며,(테이블스페이스가 아니라) 데이터파일 내에서의 상대적 번호
  4. 로우번호(3자리) : 블록 내에서 각 로우에 붙여진 일련번호로서, 0부터시작

SQL> select rowid extended_format
  2   , dbms_rowid.rowid_to_restricted(rowid, 0) r_f
  3   , dbms_rowid.rowid_object(rowid) object
  4   , dbms_rowid.rowid_relative_fno(rowid) file_no
  5   , dbms_rowid.rowid_block_number(rowid) block_no
  6   , dbms_rowid.rowid_row_number(rowid) row_nillruJer
  7   from emp e
  8   where empno = 7369;

EXTENDED_FORMAT    R_F                    OBJECT    FILE_NO   BLOCK_NO ROW_NILLRUJER
------------------ ------------------ ---------- ---------- ---------- -------------
AAAR3sAAEAAAACXAAA 00000097.0000.0004      73196          4        151             0

1.2.1 출력된 rowid 포맷이 어느 타입에 속하는지 확인[편집]

SQL> select dbms_rowid.rowid_type( 'AAAR3sAAEAAAACXAAA' ) extended_format
          , dbms_rowid.rowid_type ('00000097.0000.0004') restricted_format
      from dual;

EXTENDED_FORMAT RESTRICTED_FORMAT
--------------- -----------------
              1                 0

1.2.2 데이터파일번호를 이용해서 오브젝트와 데이터파일에 대한 정보를 조회[편집]

  • 오브젝트 정보 조회
select object_id, 
       owner, 
       object_name, 
       subobject_name
from dba_objects
where data_object_id ='73196'

OBJECT_ID  OWNER                          OBJECT_NAME      SUBOBJECT_NAME                
---------- ------------------------------ ---------------- ------------------------------
73196      SCOTT                          EMP
  • 데이터파일에 정보 조회
select file_id, file_name, tablespace_name 
from dba_data_files
where relative_fno =4;

FILE_ID    FILE_NAME                                   TABLESPACE_NAME               
---------- ------------------------------------------  --------------------
4          C:\APP\BSHMAN\ORADATA\ORCL\USERS01.DBF      USERS