ORACLE DBMS_ROWID包详解

这个包在11gR2中有11个函数或存储:

1. 根据给定参数返回一个rowid

--根据给定参数返回一个rowid
FUNCTION rowid_create(rowid_type    IN NUMBER,--rowid类型,0:restricted,1:extended
                      object_number IN NUMBER,--对象id
                      relative_fno  IN NUMBER,--关联文件
                      block_number  IN NUMBER,--数据块id
                      row_number    IN NUMBER)--行号
                      RETURN ROWID;

2. 根据rowid返回相关参数

--根据rowid返回相关参数
PROCEDURE rowid_info(rowid_in      IN  ROWID,--rowid
                     rowid_type    OUT NUMBER,--rowid类型
                     object_number OUT NUMBER,--对象id
                     relative_fno  OUT NUMBER,--相关文件
                     block_number  OUT NUMBER,--数据块id
                     row_number    OUT NUMBER,--行号
                     ts_type_in    IN VARCHAR2 DEFAULT ‘SMALLFILE‘);--表空间类型,BIGFILE:大文件表空间,SMALLFILE:传统表空间

3. 通过rowid返回rowid类型

--通过rowid返回rowid类型
function rowid_type(row_id IN rowid)--rowid
                        return number;

4. 通过rowid提取数据文件编号

--通过rowid提取数据文件编号
function rowid_object(row_id IN rowid)--rowid
                        return number;

5. 通过rowid提取相关文件编号

--通过rowid提取相关文件编号
FUNCTION rowid_relative_fno(row_id     IN ROWID,--rowid
                            ts_type_in IN VARCHAR2 DEFAULT ‘SMALLFILE‘)--表空间类型
  RETURN NUMBER;

6. 通过rowid提取数据块编号

--通过rowid提取数据块编号
FUNCTION rowid_block_number(row_id     IN ROWID,--rowid
                            ts_type_in IN VARCHAR2 DEFAULT ‘SMALLFILE‘)--表空间类型
  RETURN NUMBER;

7. 通过rowid提取行号

--通过rowid提取行号
function rowid_row_number(row_id IN rowid)--rowid
                        return number;

8. 通过rowid和给定表,提取相关文件编号

--通过rowid和给定表,提取相关文件编号
FUNCTION rowid_to_absolute_fno(row_id      IN ROWID,--rowid
                               schema_name IN VARCHAR2,--拥有者
                               object_name IN VARCHAR2) --对象名
                               RETURN NUMBER;

9. 转换一个restricted rowid为一个extended rowid

--转换一个restricted rowid为一个extended rowid.
--如果原始的rowid存储在列中,转换的 就是internal类型;
--如果原始的rowid是以字符串形式存储的,那转换的就是external类型
FUNCTION rowid_to_extended(old_rowid       IN ROWID,--rowid
                           schema_name     IN VARCHAR2,--拥有者
                           object_name     IN VARCHAR2,--对象名
                           conversion_type IN INTEGER)--转换类型,0:转换restricted internal rowid为extended格式
                                                      --转换类型,1:转换restricted external rowid为extended格式

10. 转换一个exteneded的rowid为一个restricted的rowid

--转换一个exteneded的rowid为一个restricted的rowid
--restricted的rowid格式为BBBBBBB.RRRR.FFFFF,
--BBBBBBB 代表block
--RRRR 代表在block中的行号,从0开始
--FFFFF 代表文件号。
--这个包可以使用rowid或者rowid转换类型(ROWID_CONVERT_INTERNAL (0)和ROWID_CONVERT_EXTERNAL (1))
FUNCTION rowid_to_restricted(old_rowid       IN ROWID,--rowid
                             conversion_type IN INTEGER)--rowid_convert_internal  := 0;
                                                        --rowid_convert_external  := 1;
                             RETURN ROWID;

11. 验证rowid 有效性

--验证rowid是否有效
FUNCTION rowid_verify(rowid_in        IN ROWID,--rowid
                      schema_name     IN VARCHAR2,--拥有者
                      object_name     IN VARCHAR2,--对象名
                      conversion_type IN INTEGER)--rowid_convert_internal := 0;
                                                 --rowid_convert_external := 1;
                      RETURN NUMBER;
时间: 2024-08-25 19:23:55

ORACLE DBMS_ROWID包详解的相关文章

ORACLE之UTL_FILE包详解

1 Utl_File包简介Oracle的UTL_FILE包用来实现对磁盘文件的I/O操作.(1)Oracle10g之前的版本需要指定utl_file包可以操作的目录.      方法:        1.alter system set utl_file_dir='e:/utl' scope=spfile;        2.在init.ora文件中,配置如下:UTL_FILE=E:/utl或者UTL_FILE_DIR=E:/utl;(2)Oracle10g之后的版本,只需要先创建一个路径即可.

Oracle 11g数据库详解(2015-1-18更新)

Oracle 11g数据库详解 整理者:高压锅 QQ:280604597 Email:[email protected] 大家有什么不明白的地方,或者想要详细了解的地方可以联系我,我会认真回复的 1   简介 数据库操作主要有以下几步: 1.  启动.停止数据库 2.  连接.断开数据库 3.  创建.修改.删除数据库用户 4.  表空间 5.  新建.修改.删除表 6.  查询.插入.修改.删除表数据 7.  新建.修改.删除视图 8.  新建.修改.删除存储过程 9.  新建.修改.删除触发

Oracle 11g数据库详解(2015-02-28更新)

Oracle 11g数据库详解 整理者:高压锅 QQ:280604597 Email:[email protected] 大家有什么不明白的地方,或者想要详细了解的地方可以联系我,我会认真回复的 1   简介 数据库操作主要有以下几步: 1.  启动.停止数据库 2.  连接.断开数据库 3.  创建.修改.删除数据库用户 4.  表空间 5.  新建.修改.删除表 6.  查询.插入.修改.删除表数据 7.  新建.修改.删除视图 8.  新建.修改.删除存储过程 9.  新建.修改.删除触发

oracle rac IP详解

rac环境下vip/public/private IP的区别 每个节点要2块网卡, 3个IP,虚拟IP或者叫做业务IP,单个网卡当掉可以"漂"到其他网卡是继续提供服务 在Oracle RAC环境下,每个节点都会有多个IP地址,分别为Public/Private/Vip,这三个IP到底有啥区别呢?分别用在那些场合呢?来看看老外的回答. 1. private IP address is used only for internal clustering processing (Cache

ORACLE物化视图详解

一.物化的一般用法物化视图是一种特殊的物理表,"物化"(Materialized)视图是相对普通视图而言的.普通视图是虚拟表,应用的局限性大,任何对视图的查询,oracle都实际上转换为视图SQL语句的查询.这样对整体查询性能的提高,并没有实质上的好处. 1.物化视图的类型ON DEMAND.ON COMMIT.二者的区别在于刷新方法的不同,ON DEMAND顾名思义,仅在该物化视图"需要"被刷新了,才进行刷新(REFRESH),即更新物化视图,以保证和基表数据的一

oracle HA 高可用性详解(之二,深入解析TAF,以及HA框架)

oracle HA 高可用性详解(之一,client.server端服务详解):http://write.blog.csdn.net/postedit 我们已经看到TAF是的Oracle的会话能够自动重新连接,需要说明的是,这个能力是基于OCI的,是OCI的一个功能,JDBC Thin Driver无效,因为这种驱动不是构建在OCI库上的. 虽然这个功能发起于RAC,但TAF并不局限于RAC,单实例.DG环境都可以享受这个好处.Oralce声称其TAF能够保证用户会话自动的转移到另一个实例上.这

oracle监听详解

典型的监听配置模板: 创建监听有多重方式:(1)netca (2)netmgr (3)手工编辑listener.ora文件等: 下面是一个监听配置的标准模板: 配置文件中的关键之解析: (1) PROTOCOL指的是监听接收链接的协议: (2) HOST是指的监听运行的主机或者IP地址: (3) PORT指的是监听运行的端口. (4) SID_NAME指的是监听服务的实例名. (5) GLOBAL_NAME指的是监听服务的服务名: (6) ORACLE_HOME指的是监听服务的$ORACLE_H

Oracle cursor_sharing 参数 详解

一. 官网的说明 http://download.oracle.com/docs/cd/E11882_01/server.112/e17110/initparams042.htm#REFRN10025 1.1 CURSOR_SHARING Property Description Parameter type String Syntax CURSOR_SHARING = { SIMILAR | EXACT | FORCE } Default value EXACT Modifiable ALTE

ORACLE用户PROFILE详解

ORACLE用户PROFILE详解   一.官网说明 Oraclerecommends that you use the Database Resource Manager rather than the SQLstatement to establish resource limits. The Database Resource Manager offers amore flexible means of managing and tracking resource use. Purpose