Oracle 中的rowid
来源:互联网 发布:最近火的女声网络歌曲 编辑:程序博客网 时间:2024/06/06 17:58
Oracle中的每个表都有一个rowid,它是一个18位字符组成字符串,例:AAANgBAABAAAO/KAAA.它包含的字符串由A-Z,a-z,0-9,+,/这些字符组成.是64进制.
其中A-Z对应0-25,a-z对应26-51,0-9对应52-61,+对应62,/对应63.
这个18位的字符串分成4段分别表示不同的意思(6,3,6,3),1-6位表示对象数据ID(段编号),7-9位代表数据文件编号,10-15位代表数据块编号,16-18代表在数据块中的行.
假设建立下面一个表:
create table tb(id int,name varchar2(10))
insert into tb values(1,'a')
insert into tb values(2,'b')
通过select rowid,id from tb得到:
AAANgBAABAAAO/KAAA 1
AAANgBAABAAAO/KAAB 2
以AAANgB AAB AAAO/K AAA 为例,
AAANgB为表tb的id,
通过select * from all_objects where object_name='TB' 看到 object_id为55297,
计算AAANgB的10进制的值为:select 13*64*64+32*64+1 from dual 得到的值也为55297.
AAB为数据文件的编号:1,代表dba_data_files的file_id,通过select * from dba_data_files可以看到对应的数据文件信息.
AAAO/K代表块的编号:61386,通过 select 14*64*64 +63*64 + 10 from dual计算得到
行的编号是:0,上面两行是邻接的,仅仅行号不同.
通过下面的sql可以查看这个数据块是不是加载到了数据缓冲区:select * from v$bh where block#=61386 and file#=1
知道了块号之后,可以dump这个块在内存(数据缓冲区)中的内容: alter system dump datafile 1 block 61386
知道了块号之后,可以dump这个块在数据文件中的内容:
alter system dump datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF' block 61386
(由于Oracle的写数据到数据文件并不一定在commit后就完成,可以通过ALTER SYSTEM checkpoint强制将数据有数据缓冲区写入数据文件)
然后在udump文件夹下的trace文件中可以看到dump的内容.
Oracle中的一个package dbms_rowid里直接提供了函数来得到块号,行号
dbms_rowid.rowid_object:对象编号
dbms_rowid.rowid_relative_fno:文件编号
dbms_rowid.rowid_block_number:块号
dbms_rowid.rowid_row_number:行号
例:select rowid,id,dbms_rowid.rowid_block_number(rowid) from tb
推荐看http://www.itpub.net/thread-912812-1-1.html有非常详细的见解。
- Oracle中的Rowid
- ORACLE数据库中的ROWID
- Oracle中的rownum、rowid
- Oracle 中的rowid
- oracle中的外部rowid
- oracle中的ROWID列
- Oracle中的Rowid
- ORACLE中的ROWID
- Oracle中的rowid学习
- oracle中的rowid
- Oracle 中的rowid
- Oracle 中的rowid
- ORACLE中的rowid用法
- oracle中的ROWID与分页
- oracle 10g中的ROWID
- Oracle中的rownum和rowid
- Oracle中的ROWNUM和ROWID
- oracle 表中的rowid是什么意思
- wave file format
- navy T生活语录总结-(实时更新)
- PDP 11/40 机器: Unix V6 运行的硬件平台
- code of java1
- incompatible integer to pointer conversion assigning to
- Oracle 中的rowid
- 谷歌免费CDN加速Google PageSpeed Service申请和使用教程
- Lucene入门学习
- Orchard menu
- 马云说的到底对不对,京东到底行不行?
- 快准好的genymotion
- Linux命令行抓包及包解析工具tshark(wireshark)使用实例解析
- NYOJ 石子合并(一)经典区间DP
- 单链表的C语言简单实现