ITPub博客

首页 > 数据库 > Oracle > dbms_rowid的使用

dbms_rowid的使用

原创 Oracle 作者:宋祖强 时间:2016-01-19 16:31:23 0 删除 编辑

select rowid,
       dbms_rowid.rowid_object(rowid)  object_id,
       dbms_rowid.rowid_relative_fno(rowid)  file_id,
       dbms_rowid.rowid_block_number(rowid)  block_id,
       dbms_rowid.rowid_row_number(rowid)  num
from test 
where rownum <= 5;




SQL> desc dbms_rowid 
FUNCTION ROWID_BLOCK_NUMBER RETURNS NUMBER                           //--返回该ROWID所在的BLOCK号
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 ROW_ID                         ROWID                   IN
 TS_TYPE_IN                     VARCHAR2                IN     DEFAULT
FUNCTION ROWID_CREATE RETURNS ROWID                                          //--输入相应信息后自己创建一个ROWID并返回,主要用于测试比对
 Argument Name                  Type                    In/Out Default?  
 ------------------------------ ----------------------- ------ --------
 ROWID_TYPE                     NUMBER                  IN
 OBJECT_NUMBER                  NUMBER                  IN
 RELATIVE_FNO                   NUMBER                  IN
 BLOCK_NUMBER                   NUMBER                  IN
 ROW_NUMBER                     NUMBER                  IN
PROCEDURE ROWID_INFO                                                                     // --返回ROWID确定的各种信息
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 ROWID_IN                       ROWID                   IN
 ROWID_TYPE                     NUMBER                  OUT
 OBJECT_NUMBER                  NUMBER                  OUT
 RELATIVE_FNO                   NUMBER                  OUT
 BLOCK_NUMBER                   NUMBER                  OUT
 ROW_NUMBER                     NUMBER                  OUT
 TS_TYPE_IN                     VARCHAR2                IN     DEFAULT
FUNCTION ROWID_OBJECT RETURNS NUMBER                                              //--返回该ROWID对应的OBJECT的OBJ#
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 ROW_ID                         ROWID                   IN
FUNCTION ROWID_RELATIVE_FNO RETURNS NUMBER                                   //--返回该ROWID对应的对应文件号
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 ROW_ID                         ROWID                   IN
 TS_TYPE_IN                     VARCHAR2                IN     DEFAULT
FUNCTION ROWID_ROW_NUMBER RETURNS NUMBER                                   //--返回该行数据在BLOCK中的相对位置
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 ROW_ID                         ROWID                   IN
FUNCTION ROWID_TO_ABSOLUTE_FNO RETURNS NUMBER                           // --返回相关的完全数据文件号
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 ROW_ID                         ROWID                   IN
 SCHEMA_NAME                    VARCHAR2                IN
 OBJECT_NAME                    VARCHAR2                IN
FUNCTION ROWID_TO_EXTENDED RETURNS ROWID                                     //--将restricted类型的ROWID修改为extended
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 OLD_ROWID                      ROWID                   IN
 SCHEMA_NAME                    VARCHAR2                IN
 OBJECT_NAME                    VARCHAR2                IN
 CONVERSION_TYPE                NUMBER(38)              IN
FUNCTION ROWID_TO_RESTRICTED RETURNS ROWID                                //--将extended类型的ROWID修改为restricted
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 OLD_ROWID                      ROWID                   IN
 CONVERSION_TYPE                NUMBER(38)              IN
FUNCTION ROWID_TYPE RETURNS NUMBER                                               //--返回ROWID类型(restricted or extended)   
 Argument Name                  Type                    In/Out Default?                         //rowid_type_restricted constant integer := 0;
 ------------------------------ ----------------------- ------ --------                           //rowid_type_extended   constant integer := 1;
 ROW_ID                         ROWID                   IN                       
FUNCTION ROWID_VERIFY RETURNS NUMBER                                             // --查看是否可以对ROWID的类型进行修改
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 ROWID_IN                       ROWID                   IN
 SCHEMA_NAME                    VARCHAR2                IN
 OBJECT_NAME                    VARCHAR2                IN
 CONVERSION_TYPE                NUMBER(38)              IN


SQL> select rowid,
  2         dbms_rowid.rowid_object(rowid)  object_id,
  3         dbms_rowid.rowid_relative_fno(rowid)  file_id,
  4         dbms_rowid.rowid_block_number(rowid)  block_id,
  5         dbms_rowid.rowid_row_number(rowid)  num
  6  from emp where rownum <=4;


ROWID               OBJECT_ID    FILE_ID   BLOCK_ID        NUM
------------------ ---------- ---------- ---------- ----------
AAAO/9AAEAAACr0AAA      61437          4      10996          0
AAAO/9AAEAAACr0AAB      61437          4      10996          1
AAAO/9AAEAAACr0AAC      61437          4      10996          2
AAAO/9AAEAAACr0AAD      61437          4      10996          3

SQL> 
SQL> select dbms_rowid.rowid_type('AAAO/9AAEAAACr0AAD') from dual;

DBMS_ROWID.ROWID_TYPE('AAAO/9AAEAAACR0AAD')
-------------------------------------------
                                          1


SQL>  select dbms_rowid.rowid_block_number('AAAO/9AAEAAACr0AAD') from dual;

DBMS_ROWID.ROWID_BLOCK_NUMBER('AAAO/9AAEAAACR0AAD')
---------------------------------------------------
                                              10996



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29289867/viewspace-1979112/,如需转载,请注明出处,否则将追究法律责任。

下一篇: oracle shrink
请登录后发表评论 登录
全部评论

注册时间:2014-08-13

  • 博文量
    176
  • 访问量
    277182