【oracle】rowid转换rdba,rdba转换为file#block#
来源:互联网 发布:希洛·皮特 知乎 编辑:程序博客网 时间:2024/05/17 23:36
************************************************************************ ****原文:blog.csdn.net/clark_xu 徐长亮的专栏************************************************************************ -- 1 rowid和rdba的转换
--数据的存储属性rowid
--数据文件file#
--数据库对象obj#
--数据块号:block_no#
--表中行号
--物理rowid和逻辑rowid
--索引使用逻辑rowid
--其他类型使用物理rowid
--rowid伪列
select rowid,id,time from rangetable;
--因为rowid唯一标示一条记录,所以索引存储rowid值;通过索引中,找到rowid;
--新的base64编码。32bit obj#,10bit rfile#,22bit block#,16bit row#
--因此每个表空间最大1022个文件,每个数据文件最大4M=4000个block
--每个block中的行数最大65536行;
--通过dbms_rowid来转换rowid的信息
create or replace function get_rowid(l_rowid in varchar2)
return varchar2
is
ls_my_rowid varchar2(200);
rowid_type number;
object_number number;
relative_fno number;
block_number number;
row_number number;
begin
dbms_rowid.rowid_info(l_rowid,rowid_type,object_number,relative_fno,block_number,row_number);
ls_my_rowid:='Object# is :'
||to_char(object_number)||chr(10)||
'relative_fno is :'
||to_char(relative_fno)||chr(10)||
'block_number is :'
||to_char(block_number)||chr(10)||
'row number is :'
||to_char(row_number)||chr(10);
return ls_my_rowid;
end;
select rowid,a.* from dept a;
select get_rowid('AAAMfNAAEAAAAAQAAA') row_id from dual;
2 RDBA转换为file#,block#
--转储system的表空间
alter session set events 'immediate trace name FILE_HDRS level 10'
--查看udummp文件dba地址
写了一个简单的函数,用来从RDBA中转换file#和block#出来:
CREATE OR REPLACE FUNCTION getbfno (p_dba IN VARCHAR2)
RETURN VARCHAR2
IS
l_str VARCHAR2 (255) DEFAULT NULL;
l_fno VARCHAR2 (15);
l_bno VARCHAR2 (15);
BEGIN
l_fno :=
DBMS_UTILITY.data_block_address_file (TO_NUMBER(LTRIM (p_dba, '0x'), 'xxxxxxxx'));
l_bno :=
DBMS_UTILITY.data_block_address_block (TO_NUMBER (LTRIM (p_dba, '0x'), 'xxxxxxxx'));
l_str :=
'datafile# is:'
|| l_fno
|| CHR (10)
|| 'datablock is:'
|| l_bno
|| CHR (10)
|| 'dump command:alter system dump datafile '
|| l_fno
|| ' block '
|| l_bno
|| ';';
RETURN l_str;
END;
select getbfno('0x00400179') bfno from dual;
- 【oracle】rowid转换rdba,rdba转换为file#block#
- Oracle ROWID与RDBA
- ORACLE数据块转储及RDBA的转换
- oracle的rowid和rdba庖丁解牛
- 数据块转储及RDBA的转换
- 数据块转储及RDBA的转换
- oracle的rowid和rdba庖丁解牛(不错,desc 包)
- 如何将rdba转换成数据文件的地址
- Oracle rdba和 dba 说明
- Oracle rdba和 dba 说明
- Oracle get DBA and RDBA
- Oracle rdba和 dba 说明
- DBA RDBA
- rowid+rdba+dba+db_files+maxdatafiles系统的介绍
- ROWID的含义与块地址rdba深入分析
- ROWID的含义与块地址rdba深入分析
- 将Oracle中rowid转换为java可用类型
- InputStream转换为File
- 有效分清并执行迭代设计与计划设计
- 2015年第四周项目一:三角形类的构造函数(2)
- 大数据可视化工具Echarts-(1)引入Echarts
- 简析手游七日留存率下降原因。
- Android 实践Activity与Service通信
- 【oracle】rowid转换rdba,rdba转换为file#block#
- “互联网+”来了,中国茶产业需要“三加两减”|| 原创首发
- Java构造和解析Json数据的两种方法详解一
- 第四周项目四 ——指向数组成员的指针(试用指针)
- 罗杰“炮轰”尹虹,陶瓷电商互联网将到来得很快,很彻底!
- C#程序性能提升篇2 类型(字段类型、class和struct)的错误定义所影响性能浅析
- Android开发学习笔记之 获得Android 可使用内存
- Java构造和解析Json数据的两种方法详解二
- windows server 2008 r2 x64 enterprise service pack1中aspjpeg.dll安装