All about rowid in Oracle Database 11g

WBOY
풀어 주다: 2016-06-07 15:01:57
원래의
1186명이 탐색했습니다.

SQL select t.rowid,t.* from scott.test t; ROWID DEPTNO DNAME LOC ------------------ ---------- -------------- ------------- AAAPtpAAEAAAADbAAA 10 ACCOUNTING NEW YORK AAAPtpAAEAAAADbAAB 20 RESEARCH DALLAS AAAPtpAAEAAAADbAAC 30 SALES CHICAGO

SQL> select t.rowid,t.* from scott.test t;

ROWID                  DEPTNO DNAME          LOC
------------------ ---------- -------------- -------------
AAAPtpAAEAAAADbAAA         10 ACCOUNTING     NEW YORK
AAAPtpAAEAAAADbAAB         20 RESEARCH       DALLAS
AAAPtpAAEAAAADbAAC         30 SALES          CHICAGO
AAAPtpAAEAAAADbAAD         40 OPERATIONS     BOSTON
rowid(AAAPtpAAEAAAADbAAD)详解
AAAPtp  --object#
AAE     --file#
AAAADb  --block#
AAD     --row#

SQL> select rowid ,
  2  substr(rowid,1,6) "OBJECT#",
  3  substr(rowid,7,3) "FILE#",
  4  substr(rowid,10,6) "BLOCK#",
  5  substr(rowid,16,3) "ROW#"
  6  from scott.test;

ROWID              OBJECT#                  FILE#        BLOCK#                   ROW#
------------------ ------------------------ ------------ ------------------------ ------------
AAAPtpAAEAAAADbAAA AAAPtp                   AAE          AAAADb                   AAA
AAAPtpAAEAAAADbAAB AAAPtp                   AAE          AAAADb                   AAB
AAAPtpAAEAAAADbAAC AAAPtp                   AAE          AAAADb                   AAC
AAAPtpAAEAAAADbAAD AAAPtp                   AAE          AAAADb                   AAD


转换 rowid 的 object#

SQL> select DBMS_ROWID.ROWID_OBJECT('AAAPtpAAEAAAADbAAD') from dual
  2  union all
  3  select object_id  from dba_objects where object_name = 'TEST' AND owner='SCOTT';

DBMS_ROWID.ROWID_OBJECT('AAAPTPAAEAAAADBAAD')
---------------------------------------------
                                        64361
                                        64361

转换 rowid 的 file# (相对文件编号)

SQL> select DBMS_ROWID.ROWID_RELATIVE_FNO('AAAPtpAAEAAAADbAAD') from dual
  2  union all
  3  select a.file_id from dba_data_files a,dba_segments b where b.SEGMENT_NAME ='TEST' and b.owner='SCOTT' and a.tablespace_name=b.tablespace_name;

DBMS_ROWID.ROWID_RELATIVE_FNO('AAAPTPAAEAAAADBAAD')
---------------------------------------------------
                                                  4
                                                  4
                                                  
转换 rowid 的 block#
                                                  
SQL> select dbms_rowid.rowid_block_number('AAAPtpAAEAAAADbAAD') from dual;

DBMS_ROWID.ROWID_BLOCK_NUMBER('AAAPTPAAEAAAADBAAD')
---------------------------------------------------
                                                219
                                                
转换 rowid 的 row#

SQL>  select DBMS_ROWID.ROWID_ROW_NUMBER(rowid) from scott.test;

DBMS_ROWID.ROWID_ROW_NUMBER(ROWID)
----------------------------------
                                 0
                                 1
                                 2
                                 3


转换 rowid 的绝对文件编号

SQL> select DBMS_ROWID.ROWID_TO_ABSOLUTE_FNO('AAAPtpAAEAAAADbAAD','SCOTT','TEST') from scott.test;

DBMS_ROWID.ROWID_TO_ABSOLUTE_FNO('AAAPTPAAEAAAADBAAD','SCOTT','TEST')
---------------------------------------------------------------------
                                                                    4
                                                                    4
                                                                    4

                                                                    4


<p><span></span></p><p><span><span>作者:xiangsir</span></span></p><p><span></span></p><p><span><span>QQ:444367417</span></span></p><p><span><span>MSN:xiangsir@hotmail.com</span></span></p>
로그인 후 복사


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿