本文主要是介绍Oracle10gdbms_rowid包源码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
原 Oracle 10g dbms_rowid 包源码https://blog.csdn.net/tianlesoftware/article/details/6697761版权声明: https://blog.csdn.net/tianlesoftware/article/details/6697761
前几天Roger 的blog 更新了一篇文章,是DBMS_ROWID包的定义部分,Oracle 的包的都是用wrap 进行加密的。itpub上有人研究了unwrap,也公布了一些代码,可以实现unwrap。
关于wrap和unwrap,参考我的blog:
Oracle wrap 和 unwrap( 加密与解密) 说明
http://www.cndba.cn/Dave/article/1367
rowid在DB 维护中用的也是比较多。 了解ROWID 的相关函数,有助于工作。
Oracle Rowid 介绍
http://blog.csdn.net/tianlesoftware/article/details/5020718
Roger贴的那部分没有只有代码,没有注释,所以这里用Toad 把注释部分也拉出来了。贴一下。也可以直接用SQL 查看:
SQL>select text from dba_source where name='DBMS_ROWID';
/* Formatted on2011/8/18 11:26:49 (QP5 v5.163.1008.3004) */
CREATE OR REPLACE PACKAGE SYS.DBMS_ROWID
IS
------------
-- OVERVIEW
--
-- This package provides procedures to createROWIDs and to interpret
-- their contents
-- SECURITY
--
-- The execution privilege is granted to PUBLIC.Procedures in this
-- package run under the caller security.
----------------------------
----------------------------
-- ROWID TYPES:
--
-- RESTRICTED - Restricted ROWID
--
-- EXTENDED - Extended ROWID
--
rowid_type_restricted CONSTANT INTEGER := 0;
rowid_type_extended CONSTANT INTEGER := 1;
-- ROWID VERIFICATION RESULTS:
--
-- VALID - Valid ROWID
--
-- INVALID - Invalid ROWID
--
rowid_is_valid CONSTANT INTEGER := 0;
rowid_is_invalid CONSTANT INTEGER := 1;
-- OBJECT TYPES:
--
-- UNDEFINED - Object Number not defined (forrestricted ROWIDs)
--
rowid_object_undefined CONSTANT INTEGER := 0;
-- ROWID CONVERSION TYPES:
--
-- INTERNAL - convert to/from column of ROWIDtype
--
-- EXTERNAL - convert to/from string format
--
rowid_convert_internal CONSTANT INTEGER := 0;
rowid_convert_external CONSTANT INTEGER := 1;
-- EXCEPTIONS:
--
--ROWID_INVALID - invalid rowid format
--
--ROWID_BAD_BLOCK - block is beyond end of file
--
ROWID_INVALID EXCEPTION;
PRAGMA EXCEPTION_INIT (ROWID_INVALID, -1410);
ROWID_BAD_BLOCK EXCEPTION;
PRAGMA EXCEPTION_INIT (ROWID_BAD_BLOCK, -28516);
-- PROCEDURES AND FUNCTIONS:
--
--
--ROWID_CREATE constructs a ROWID from its constituents:
--
--rowid_type - type (restricted/extended)
--object_number - data object number (rowid_object_undefined for restricted)
--relative_fno - relative file number
--block_number - block number in this file
--file_number - file number in this block
--
FUNCTION rowid_create (rowid_type IN NUMBER,
object_number IN NUMBER,
relative_fno IN NUMBER,
block_number IN NUMBER,
ROW_NUMBER IN NUMBER)
RETURN ROWID;
PRAGMA RESTRICT_REFERENCES (rowid_create, WNDS, RNDS, WNPS, RNPS);
--
--ROWID_INFO breaks ROWID into its components and returns them:
--
--rowid_in - ROWID to be interpreted
--rowid_type - type (restricted/extended)
--object_number - data object number (rowid_object_undefined for restricted)
--relative_fno - relative file number
--block_number - block number in this file
-- file_number - file number in this block
--ts_type_in - type of tablespace which this row belongs to
-- 'BIGFILE' indicates BigfileTablespace
-- 'SMALLFILE' indicates Smallfile(traditional pre-10i) TS.
-- NOTE: These two are the onlyallowed values for this param
--
PROCEDURE rowid_info (rowid_in IN ROWID,
rowid_type OUT NUMBER,
object_number OUT NUMBER,
relative_fno OUT NUMBER,
block_number OUT NUMBER,
ROW_NUMBER OUT NUMBER,
ts_type_in IN VARCHAR2 DEFAULT 'SMALLFILE');
PRAGMA RESTRICT_REFERENCES (rowid_info, WNDS, RNDS, WNPS, RNPS);
--
--ROWID_TYPE returns the type of a ROWID (restricted/extended_nopart,..)
--
--row_id - ROWID to be interpreted
--
FUNCTION rowid_type (row_idIN ROWID)
RETURN NUMBER;
PRAGMA RESTRICT_REFERENCES (rowid_type, WNDS, RNDS, WNPS, RNPS);
--
--ROWID_OBJECT extracts the data object number from a ROWID.
--ROWID_OBJECT_UNDEFINED is returned for restricted rowids.
--
--row_id - ROWID to be interpreted
--
FUNCTION rowid_object (row_idIN ROWID)
RETURN NUMBER;
PRAGMA RESTRICT_REFERENCES (rowid_object, WNDS, RNDS, WNPS, RNPS);
--
--ROWID_RELATIVE_FNO extracts the relative file number from a ROWID.
--
--row_id - ROWID to be interpreted
--ts_type_in - type of tablespace which this row belongs to
--
FUNCTION rowid_relative_fno (row_id IN ROWID,
ts_type_in IN VARCHAR2 DEFAULT 'SMALLFILE')
RETURN NUMBER;
PRAGMA RESTRICT_REFERENCES (rowid_relative_fno, WNDS, RNDS, WNPS, RNPS);
--
--ROWID_BLOCK_NUMBER extracts the block number from a ROWID.
--
--row_id - ROWID to be interpreted
--ts_type_in - type of tablespace which this row belongs to
--
--
FUNCTION rowid_block_number (row_id IN ROWID,
ts_type_in IN VARCHAR2 DEFAULT 'SMALLFILE')
RETURN NUMBER;
PRAGMA RESTRICT_REFERENCES (rowid_block_number, WNDS, RNDS, WNPS, RNPS);
--
--ROWID_ROW_NUMBER extracts the row number from a ROWID.
--
--row_id - ROWID to be interpreted
--
FUNCTION rowid_row_number (row_id IN ROWID)
RETURN NUMBER;
PRAGMA RESTRICT_REFERENCES (rowid_row_number, WNDS, RNDS, WNPS, RNPS);
--
--ROWID_TO_ABSOLUTE_FNO extracts the relative file number from a ROWID,
--which addresses a row in a given table
--
--row_id - ROWID to be interpreted
--
--schema_name - name of the schema which contains the table
--
--object_name - table name
--
FUNCTION rowid_to_absolute_fno (row_id IN ROWID,
schema_name IN VARCHAR2,
object_name IN VARCHAR2)
RETURN NUMBER;
PRAGMA RESTRICT_REFERENCES (rowid_to_absolute_fno, WNDS, WNPS, RNPS);
--
--ROWID_TO_EXTENDED translates the restricted ROWID which addresses
-- arow in a given table to the extended format. Later, it may be removed
--from this package into a different place
--
--old_rowid - ROWID to be converted
--
--schema_name - name of the schema which contains the table (OPTIONAL)
--
--object_name - table name (OPTIONAL)
--
--conversion_type - rowid_convert_internal/external_convert_external
-- (whether old_rowid wasstored in a column of ROWID
-- type, or the characterstring)
--
FUNCTION rowid_to_extended (old_rowid IN ROWID,
schema_name IN VARCHAR2,
object_name IN VARCHAR2,
conversion_type IN INTEGER)
RETURN ROWID;
PRAGMA RESTRICT_REFERENCES (rowid_to_extended, WNDS, WNPS, RNPS);
--
--ROWID_TO_RESTRICTED translates the extnded ROWID into a restricted format
--
--old_rowid - ROWID to be converted
--
--conversion_type - internal/external (IN)
--
--conversion_type - rowid_convert_internal/external_convert_external
-- (whetherreturned rowid will be stored in a column of
-- ROWID type, or thecharacter string)
--
FUNCTION rowid_to_restricted (old_rowid IN ROWID,
conversion_type IN INTEGER)
RETURN ROWID;
PRAGMA RESTRICT_REFERENCES (rowid_to_restricted, WNDS, RNDS, WNPS, RNPS);
--
--ROWID_VERIFY verifies the ROWID. It returns rowid_valid or rowid_invalid
--value depending on whether a given ROWID is valid or not.
--
--rowid_in - ROWID to be verified
--
--schema_name - name of the schema which contains the table
--
--object_name - table name
--
--conversion_type - rowid_convert_internal/external_convert_external
-- (whether old_rowid wasstored in a column of ROWID
-- type, or the characterstring)
--
FUNCTION rowid_verify (rowid_in IN ROWID,
schema_name IN VARCHAR2,
object_name IN VARCHAR2,
conversion_type IN INTEGER)
RETURN NUMBER;
PRAGMA RESTRICT_REFERENCES (rowid_verify, WNDS, WNPS, RNPS);
END;
/
-------------------------------------------------------------------------------------------------------
QQ:492913789
Email:ahdba@qq.com
Blog: http://www.cndba.cn/dave
Weibo: http://weibo.com/tianlesoftware
Twitter: http://twitter.com/tianlesoftware
Facebook: http://www.facebook.com/tianlesoftware
Linkedin: http://cn.linkedin.com/in/tianlesoftware
DBA1 群:62697716(满); DBA2 群:62697977(满) DBA3 群:62697850(满)
DBA 超级群:63306533(满); DBA4 群: 83829929(满) DBA5群: 142216823(满)
DBA6 群:158654907(满) 聊天 群:40132017(满) 聊天2群:69087192(满)
--加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请https://img-blog.csdnimg.cn/20190217105710569.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTEwNzgxNDE=,size_16,color_FFFFFF,t_70《算法导论 第三版英文版》_高清中文版.pdf
https://pan.baidu.com/s/17D1kXU6dLdU0YwHM2cvNMw
《深度学习入门:基于Python的理论与实现》_高清中文版.pdf
https://pan.baidu.com/s/1IeVs35f3gX5r6eAdiRQw4A
《深入浅出数据分析》_高清中文版.pdf
https://pan.baidu.com/s/1GV-QNbtmjZqumDkk8s7z5w
《Python编程:从入门到实践》_高清中文版.pdf
https://pan.baidu.com/s/1GUNSg4mdpeOf1LC_MjXunQ
《Python科学计算》_高清中文版.pdf
https://pan.baidu.com/s/1-hDKhK-7rDDFll_UFpKmpw
这篇关于Oracle10gdbms_rowid包源码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!