- 浏览: 326653 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (224)
- Java (34)
- Test (3)
- Linux/Unix (32)
- Windows (8)
- Oracle (78)
- Oracle Backup & Recovery (3)
- SqlServer (1)
- Database (3)
- Open Source (2)
- Server Management (1)
- Apache ActiveMQ (1)
- IBM WebSphere MQ (7)
- IBM WAS (15)
- 其它 (11)
- UML (1)
- Tools (1)
- Reference (0)
- Spring (11)
- Hibernate (5)
- VBScript (3)
- Network (1)
- Securities (2)
- Maven (6)
- logging (2)
- Web (1)
- AWS (3)
最新评论
DBMS_ROWID包允许我们使用PL/SQL程序或SQL语句创建rowids和获取rowid的信息。例如可以通过其找到数据对象编号,数据文件编号,包含数据行的数据块编号及数据块中的数据行。该包从Oracle 8.X开始可用。
DBMS_ROWID的几个子函数程序:
1、ROWID_BLOCK_NUMBER函数(该函数返回输入ROWID的数据块编号)
语法:
DBMS_ROWID.ROWID_BLOCK_NUMBER(
row_id IN ROWID,
ts_type_in IN VARCHAR2 DEFAULT
'SMAILLFILE')
返回值是number类型。
参数:
row_id:被转换的rowid。
ts_type_in:数据行所在表空间类型,默认是SMALLFILE,即小数据文件表空间。
举例:
SQL> select dbms_rowid.rowid_block_number(rowid,'smallfile')
block_id from emp where rownum <=3;
BLOCK_ID
----------
30
30
30
2、ROWID_CREATE函数(返回一个基于单独行的rowid)
语法:
DBMS_ROWID.ROWID_CREATE (
rowid_type IN
NUMBER,
object_number IN NUMBER,
relative_fno IN
NUMBER,
block_number IN NUMBER,
row_number IN NUMBER)
参数:
rowid_type:rowid类型(restricted或者extended)。设置rowid_type为0时,代表restricted ROWID(此时,将忽略参数object_number):设置rowid_type为1时,代表extended ROWID。
object_number:数据对象编号(仅restricted类型rowid可用)。
relative_fno:所在数据文件编号。
block_number:该数据文件中的数据块编号。
row_number:在该块中的行编号。
举例:
创建restricted ROWID
SQL> select dbms_rowid.rowid_create(0,9999,12,1000,13) from dual;
DBMS_ROWID.ROWID_C
------------------
000003E8.000D.000C
创建extended ROWID
SQL> select dbms_rowid.rowid_create(1,9999,12,1000,13) from dual;
DBMS_ROWID.ROWID_C
------------------
AAACcPAAMAAAAPoAAN
3、ROWID_INFO过程(该过程返回一个ROWID的相关信息,包括类型和ROWID的一些其他部分,注意:这时一个存储过程,不能在SQL语句中使用)
语法:
DBMS_ROWID.ROWID_INFO (
rowid_in
IN ROWID, --输入参数
ts_type_in
IN VARCHAR2 DEFAULT 'SMALLFILE', --输入参数
rowid_type
OUT NUMBER,
--out代表输出参数
object_number OUT NUMBER,
relative_fno
OUT NUMBER,
block_number OUT NUMBER,
row_number OUT
NUMBER);
参数:
rowid_in:ROWID to be
interpreted. This determines if the ROWID is a restricted (0) or extended (1)
ROWID.
ts_type_in:The type of
the tablespace (bigfile/smallfile) to which the row belongs.
rowid_type:Returns type
(restricted/extended).
object_number:Returns data
object number (rowid_object_undefined for restricted).
relative_fno:Returns
relative file number.
block_number:Returns block
number in this file.
row_number:Returns row
number in this block.
举例:
SQL> set serverout on
SQL> declare
2 my_rowid rowid;
3 rowid_type number;
4 object_number number;
5 relative_fno number;
6 block_number number;
7 row_number number;
8 begin
9 my_rowid :=dbms_rowid.rowid_create(1, 6877,1,23722,0);
10 dbms_rowid.rowid_info(my_rowid, rowid_type, object_number,
11 relative_fno, block_number,
row_number);
12 dbms_output.put_line('ROWID: ' ||
my_rowid);
13 dbms_output.put_line('Object#: '
|| object_number);
14 dbms_output.put_line('RelFile#: ' ||
relative_fno);
15
dbms_output.put_line('Block#: ' ||
block_number);
16
dbms_output.put_line('Row#: '
|| row_number);
17 end;
18 /
ROWID: AAABrdAABAAAFyqAAA
Object#: 6877
RelFile#: 1
Block#: 23722
Row#: 0
PL/SQL procedure successfully completed.
4、ROWID_OBJECT函数(该函数返回扩展ROWID的数据对象编号,如果输入的ROWID类型为restricted,则该函数返回值为0)
语法:
DBMS_ROWID.ROWID_OBJECT (rowid_id IN ROWID)
举例:
SQL> select dbms_rowid.rowid_object(ROWID) from
T1;
DBMS_ROWID.ROWID_OBJECT(ROWID)
------------------------------
12949
12949
5、ROWID_RELATIVE_FNO函数(该函数根据输入的ROWID值,返回其所在数据文件编号)
语法:
DBMS_ROWID.ROWID_RELATIVE_FNO (
rowid_id IN ROWID,
ts_type_in IN VARCHAR2 DEFAULT
'SMALLFILE')
RETURN NUMBER;
举例:
SQL> select dbms_rowid.rowid_relative_fno(ROWID) FILE# from T1;
FILE#
----------
6
6
5、ROWID_ROW_NUMBER函数(该函数根据输入的ROWID提取出行(row)号)
语法:
DBMS_ROWID.ROWID_ROW_NUMBER (row_id IN ROWID)
RETURN NUMBER;
举例:
SQL> select dbms_rowid.rowid_row_number(ROWID) ROW_NUM from T1;
ROW_NUM
----------
0
1
6、ROWID_TO_ABSOLUTE_FNO函数(从输入的ROWID中提取出其所在完全文件号)
语法:
DBMS_ROWID.ROWID_TO_ABSOLUTE_FNO (
row_id IN ROWID,
schema_name IN VARCHAR2,
object_name IN VARCHAR2)
RETURN NUMBER;
举例:
SQL> select dbms_rowid.rowid_to_absolute_fno(rowid,'LIGLE','T1') FROM
T1;
DBMS_ROWID.ROWID_TO_ABSOLUTE_FNO(ROWID,'LIGLE','T1')
----------------------------------------------------
6
6
7、ROWID_TYPE函数(返回ROWID的类型,返回0代表restricted ROWID;返回1代表extended ROWID)
语法:
DBMS_ROWID.ROWID_TYPE (
rowid_id IN ROWID)
RETURN NUMBER;
举例:
SQL> select dbms_rowid.rowid_type(rowid) from t1;
DBMS_ROWID.ROWID_TYPE(ROWID)
----------------------------
1
1
还有几个函数,用时查下文档就可以了,都比较简单。
发表评论
-
DBCP连接池介绍
2018-09-12 13:17 454目前 DBCP 有两个版本分别是 1.3 和 1.4。 D ... -
Update两表(多表)关联update -- 被修改值由另一个表运算而来
2016-10-22 00:50 974UPDATE trd_sess A SET A.r ... -
GV$LOCKED_OBJECT
2016-09-27 01:21 1110SELECT OBJECT_NAME, MACHINE, ... -
v$sql v$sqlarea v$sqltext v$sql_plan
2015-08-13 16:55 802v$sqltext存储的是完整的SQL,SQL被分割 SQ ... -
Oracle performance tuning
2015-08-10 17:47 597db block get+consistent gets ... -
JDBC driver 的类型 Type 1 Type2 Type3 Type4
2014-06-12 16:01 849在网上下载jdbc驱动程序,常看见type4字样,开始以为是 ... -
undo segment behavior
2014-04-04 19:04 775FAQ – Automatic Undo Managemen ... -
Connect to Oracle DB - Java
2014-04-04 15:14 711import java.sql.*; public ... -
Dataguard网络优化调整
2014-03-31 16:02 955Dataguard网络优化调整 Datagu ... -
Production error ORA-01001, ORA-03120, ORA-01460
2014-03-19 20:38 977ORA-01001: invalid cursor OR ... -
Oracle 常见的33个等待事件
2014-03-12 15:42 4052一. 等待事件的相关知识: 1.1 等待事件主要可以 ... -
WBFC on Exadata
2014-02-27 14:57 8561. "Should we turn on Sto ... -
Oracle dump files
2014-02-27 12:58 658audit_file_dest = C:\ ... -
Adaptive Log File Sync
2014-02-26 19:52 1053Adaptive Log File sync was int ... -
ORA-39046: Metadata remap REMAP_TABLESPACE has already been specified.
2014-01-22 16:01 6699Import: Release 10.2.0.4.0 - 6 ... -
EXPDP – ORA-39142: incompatible version number 3.1
2014-01-22 12:25 1656Using EXPDP export a schema in ... -
Oracle 11g Real Time SQL Monitoring
2014-01-20 17:01 777http://kerryosborne.oracle-guy ... -
java.sql.SQLException: ORA-01001: invalid cursor
2013-12-20 13:59 3779There are three parameters tha ... -
ORA-01013 user requested cancel of current operation
2013-12-20 13:34 2405今天我碰到的case就是timeout引起的。 T ... -
Cannot run sqlplus on Linux with EOF
2013-12-20 11:02 843今天碰到个小问题,记下来,在linux上,不可以run fi ...
相关推荐
Oracle数据库系统提供了强大的XML处理能力,这主要体现在其内置的几个PL/SQL包上,如DBMS_XMLDOM、DBMS_XMLPARSER和DBMS_XMLQUERY。这些包为开发者提供了处理XML文档的一整套工具,使得在数据库环境中进行XML数据的...
Oracle 数据库中使用 dbms_stats 包手动收集统计信息 在 Oracle 数据库中,dbms_stats 包提供了一种手动收集统计信息的方式,包括基于表、用户和索引的统计信息。通过使用 dbms_stats 包,我们可以手动收集统计信息...
Oracle数据库系统中,`DBMS_LOB`是一个重要的PL/SQL包,专门用于处理大型对象(LOBs,Large Object)。LOBs是Oracle提供的一种数据类型,用于存储大量数据,如文本、图像、音频或视频文件等。这个包包含了各种过程和...
### DBMS_STATS.GATHER_TABLE_STATS详解 #### 一、概述 `DBMS_STATS.GATHER_TABLE_STATS` 是 Oracle 数据库中的一个重要过程,主要用于收集表、列和索引的统计信息,这些统计信息对于优化器选择合适的执行计划至关...
标题中的问题“ORACLE SYS.DBMS_REGISTRY_SYS has errors”指的是在Oracle数据库系统中,系统包BODY `SYS.DBMS_REGISTRY_SYS` 出现错误,导致了一系列的PL/SQL调用失败。这种错误通常与数据库的元数据注册功能有关,...
### DBMS_OBFUSCATION_TOOLKIT:Oracle 数据库中的加密与解密工具包 DBMS_OBFUSCATION_TOOLKIT是Oracle数据库提供的一种用于数据加密解密的强大工具包,自Oracle 8i版本开始引入。它支持多种加密算法,如DES、...
### 如何禁用及回收Java的授权:dbms_java 授权管理详解 #### 一、引言 在Oracle数据库环境中,`dbms_java`包提供了一系列功能强大的工具,用于管理和控制Java应用程序的安全性。这对于那些在Oracle环境中部署了...
在Oracle数据库系统中,`DBMS_RANDOM`是一个非常实用的包,它提供了生成随机数和随机字符串的功能。这个包在各种场景下都有广泛的应用,比如在测试数据的生成、模拟随机行为或者创建伪随机数据时。我们将深入探讨`...
### Oracle DBMS_SQL 使用详解 #### 一、概述 在Oracle数据库中,`DBMS_SQL`包是一个功能强大的工具,用于执行动态SQL语句。它提供了处理动态SQL语句的能力,使得开发人员能够灵活地构建和执行SQL语句,而不需要...
支持ArcGIS10.2版本的PostgreSQL_DBMS_for_windows_922,ESRI官方原版资源。
DBMS_LOCK是Oracle数据库系统中的一个内置包,用于在用户会话之间实现锁的管理,以确保并发操作的安全性和数据一致性。这篇博文深入探讨了DBMS_LOCK的功能、使用方法以及在实际应用中的重要性。 首先,我们要理解...
在Oracle数据库系统中,DBMS_SQL是一个非常重要的包,它提供了动态执行SQL语句的功能,这对于开发复杂的数据库应用或者需要在运行时构建SQL语句的情况非常有用。DBMS_SQL允许我们处理那些在编译时未知的SQL语句,极...
DBMS_REDEFINITION.CAN_REDEF_TABLE 函数可以判断某个表能否进行在线重定义,参数包括 UNAME 表示用户名称、TNAME 表示表名称、OPTIONS_FLAG 表示重定义表的方式,默认为主键方式重定义方式,可以是主键方式或 ROWID...
在这个项目中,"DBMS_c.rar" 提供了一个使用 C 语言实现的简单 DBMS 框架,名为 "DBMS_c",特别强调了用 C 语言来构建数据库系统的能力。C 语言以其高效和灵活性著称,这使得它成为编写底层系统软件的理想选择,尽管...
"DBMS.rar_dbms_dbms_java_dbms_java_plus"这个标题暗示了我们关注的焦点:使用Java实现对DBMS(特别是Oracle数据库)的操作,并且具有类似SQL*PLUS的功能。SQL*PLUS是Oracle公司提供的一个命令行工具,用于执行SQL...
### DBMS_JOB包创建Oracle定时任务详解 在Oracle数据库中,`DBMS_JOB`包提供了一种机制,用于创建和管理后台作业(Job),这些作业可以在特定的时间或按一定的时间间隔执行。这对于需要定期执行的任务非常有用,...
然而,当出现错误“ORA-04063: package body 'SYS.DBMS_REGISTRY_SYS' has errors”时,表明`DBMS_STATS`包或与其相关的`SYS.DBMS_REGISTRY_SYS`包体存在错误,这可能对数据库性能和正常操作造成影响。 **问题症状*...
1. `xplan.package.sql` - 这可能是一个创建或调整DBMS_XPLAN包的脚本,包含定义函数和过程的源代码,用户可以使用这些函数和过程来获取执行计划信息。 2. `xplan.display_awr.sql` - AWR(Automatic Workload ...