数据块转储及RDBA的转换

很多时候我们在进行进一步研究时需要转储(dump)Oracle的数据块,以研究其内容,Oracle提供了很好的方式,我们通过以下例子简单说明一下:

[oracle@jumper udump]$ sqlplus "/ as sysdba"

SQL*Plus: Release 9.2.0.3.0 - Production on Tue Aug 31 17:01:27 2004

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

Connected to:

Oracle9i Enterprise Edition Release 9.2.0.3.0 - Production

With the Partitioning, OLAP and Oracle Data Mining options

JServer Release 9.2.0.3.0 - Production

SQL> select rowid,deptno,dname,loc from scott.dept;

ROWID DEPTNO DNAME LOC

------------------ ---------- -------------- -------------

AAADZ7AABAAAGK6AAA 10 ACCOUNTING NEW YORK

AAADZ7AABAAAGK6AAB 20 RESEARCH DALLAS

AAADZ7AABAAAGK6AAC 30 SALES CHICAGO

AAADZ7AABAAAGK6AAD 40 OPERATIONS BOSTON

SQL> select file_id,block_id,blocks from dba_extents where segment_name='DEPT';

FILE_ID BLOCK_ID BLOCKS

---------- ---------- ----------

1 25273 8

SQL> alter system dump datafile 1 block min 25273 block max 25274;

System altered.

SQL> !

[oracle@jumper udump]$ ls -l

total 4

-rw-r----- 1 oracle dba 3142 Aug 31 17:04 hsjf_ora_13674.trc

[oracle@jumper udump]$ more hsjf_ora_13674.trc

/opt/oracle/admin/hsjf/udump/hsjf_ora_13674.trc

Oracle9i Enterprise Edition Release 9.2.0.3.0 - Production

With the Partitioning, OLAP and Oracle Data Mining options

JServer Release 9.2.0.3.0 - Production

ORACLE_HOME = /opt/oracle/product/9.2.0

System name: Linux

Node name: jumper.hurray.com.cn

Release: 2.4.18-14

Version: #1 Wed Sep 4 13:35:50 EDT 2002

Machine: i686

Instance name: hsjf

Redo thread mounted by this instance: 1

Oracle process number: 9

Unix process pid: 13674, image: oracle@jumper.hurray.com.cn (TNS V1-V3)

*** 2004-08-31 17:04:27.820

*** SESSION ID:(8.3523) 2004-08-31 17:04:27.819

Start dump data blocks tsn: 0 file#: 1 minblk 25273 maxblk 25274

buffer tsn: 0 rdba: 0x004062b9 (1/25273)

scn: 0x0000.0057c70d seq: 0x01 flg: 0x04 tail: 0xc70d1001

frmt: 0x02 chkval: 0x12e3 type: 0x10=DATA SEGMENT HEADER - UNLIMITED

Extent Control Header

-----------------------------------------------------------------

Extent Header:: spare1: 0 spare2: 0 #extents: 1 #blocks: 7

last map 0x00000000 #maps: 0 offset: 4128

Highwater:: 0x004062bb ext#: 0 blk#: 1 ext size: 7

#blocks in seg. hdr's freelists: 1

#blocks below: 1

mapblk 0x00000000 offset: 0

Unlocked

Map Header:: next 0x00000000 #extents: 1 obj#: 13947 flag: 0x40000000

Extent Map

-----------------------------------------------------------------

0x004062ba length: 7

nfl = 1, nfb = 1 typ = 1 nxf = 0 ccnt = 1

SEG LST:: flg: USED lhd: 0x004062ba ltl: 0x004062ba

buffer tsn: 0rdba: 0x004062ba (1/25274)

scn: 0x0000.0131909b seq: 0x07 flg: 0x04 tail: 0x909b0607

frmt: 0x02 chkval: 0xa8e7 type: 0x06=trans data

Block header dump: 0x004062ba

Object id on Block? Y

seg/obj: 0x367b csc: 0x00.131909a itc: 2 flg: O typ: 1 - DATA

fsl: 0 fnx: 0x0 ver: 0x01

Itl Xid Uba Flag Lck Scn/Fsc

0x01 0x0001.02a.000003f3 0x0080000b.0188.08 C--- 0 scn 0x0000.0057c70e

0x02 0x0000.000.00000000 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000

data_block_dump,data header at 0xadb505c

===============

tsiz: 0x1fa0

hsiz: 0x1a

pbl: 0x0adb505c

bdba: 0x004062ba

76543210

flag=--------

ntab=1

nrow=4

frre=-1

fsbo=0x1a

fseo=0x1f44

avsp=0x1f2a

tosp=0x1f2a

0xe:pti[0] nrow=4 offs=0

0x12:pri[0] offs=0x1f86

0x14:pri[1] offs=0x1f70

0x16:pri[2] offs=0x1f5c

0x18:pri[3] offs=0x1f44

block_row_dump:

tab 0, row 0, @0x1f86

tl: 26 fb: --H-FL-- lb: 0x0 cc: 3

col 0: [ 2] c1 0b

col 1: [10] 41 43 43 4f 55 4e 54 49 4e 47

col 2: [ 8] 4e 45 57 20 59 4f 52 4b

tab 0, row 1, @0x1f70

tl: 22 fb: --H-FL-- lb: 0x0 cc: 3

col 0: [ 2] c1 15

col 1: [ 8] 52 45 53 45 41 52 43 48

col 2: [ 6] 44 41 4c 4c 41 53

tab 0, row 2, @0x1f5c

tl: 20 fb: --H-FL-- lb: 0x0 cc: 3

col 0: [ 2] c1 1f

col 1: [ 5] 53 41 4c 45 53

col 2: [ 7] 43 48 49 43 41 47 4f

tab 0, row 3, @0x1f44

tl: 24 fb: --H-FL-- lb: 0x0 cc: 3

col 0: [ 2] c1 29

col 1: [10] 4f 50 45 52 41 54 49 4f 4e 53

col 2: [ 6] 42 4f 53 54 4f 4e

end_of_block_dump

End dump data blocks tsn: 0 file#: 1 minblk 25273 maxblk 25274

很多人经常提出的一个问题是,rdba是如何转换的?

rdba: 0x004062ba (1/25274)

我们通过这个例子介绍一下.

rdba从Oracle6->Oracle7->Oracle8发生了三次改变:

在Oracle6中,rdba由6位2进制数表示,也就是说数据块最多只能有2^6=64个数据文件(去掉全0和全1, 实际上最多只能代表62个文件)

在Oracle7中,rdba中的文件号增加为10位,为了向后兼容,从Block号的高位拿出4位作为文件号的高位.这样从6->7的Rowid无需发生变化.

而数据文件的个数理论上则扩展到了1022个(去掉全0和全1),在Oracle7中,rowid格式为:BBBBBBBB.RRRR.FFFF

在Oracle8中,文件号仍然用10位表示,只是不再需要置换,为了向后兼容,同时引入了相对文件号(rfile#),所以从Oracle7到Oracle8,Rowid仍然无需发生变化.

在Oracle8i中,Oracle引入了dataobj#,rowid的格式变为:OOOOOOFFFBBBBBBSSS,Oracle通过dataobj#进一步向上定为表空间等,从而使每个表空间

的数据文件数量理论上可以达到1022个

举例说明如下:

在Oracle6中:

比如: file 8, block 56892

26位block号==56892

vv vvvvvvvv vvvvvvvv vvvvvvvv

00100000 00000000 11011110 00111100

^^^^^^

6位文件号==8

在Oracle7中:

比如:File 255, block 56892

11111100 11000000 11011110 00111100

F C C 0 D E 3 C

\_____/\___/\_______________________/

| | |

| | Block = 0xDE3C = 56892

\_____________

| \

V V

0011 111111 = 0xFF = 255 --注意这里高位和低位要置换才能得出正确的file#

在Oracle8中:

比如:File 255, block 56892

11111100 11000000 11011110 00111100

F C C 0 D E 3 C

\_____/\___/\_______________________/

| | |

| | Block = 0xDE3C = 56892

\_____________

| \

V V

0011 1111 0011 = 03F3 = 1011 --这就是相对文件号

对于我们测试中的例子:

rdba: 0x004062ba (1/25274)

也就是:0000 0000 0100 0000 0110 0010 1011 1010

前10位为rfile#: 0000 0000 01 = 1

后22位为Block#:00 0000 0110 0010 1011 1010 = 25274

By eygle on 2004-08-31 09:58 |

Comments (0) |

Internal | 42 |

oracle+块头csc,数据块转储及RDBA的转换相关推荐

  1. oracle去掉0x00,ORACLE数据块转储及RDBA的转换

    本文打包下载地址:下载地址一:下载地址二 很多时候我们在进行进一步研究时需要转储(dump)Oracle的数据块,以研究其内容,Oracle提供了很好的方式,我们通过以下例子简单说明一下: [orac ...

  2. Oracle 摘去数据块的面纱

    Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F 00018000h 6 A2 0 0 0c 0 80 3 8b 61 15 0 0 0 3 4 type frmt spa ...

  3. oracle对数据块的存取,简单了解数据在Oracle文件中的存储

    2010-02-13 目的: 1. 了解数据块转储 2. 简单认证数据在ORACLE文件的存储 测试环境: VM+Win2003+Oracle11g DB_BLOCK_SIZE 8k C:\Docum ...

  4. Oracle的逻辑结构(表空间、段、区间、块)——Oracle数据块(一)

    Oracle 的逻辑结构 ( 表空间.段.区间.块 ) --块 Oracle 存储数据的最小单位是数据块.Oracle 管理 数据库 数据文件的存储空间被称为数据块,一个数据块是数据库使用的最小数据单 ...

  5. Oracle数据块原理深入剖析

    数据块(Oracle Data Blocks),本文简称为"块",是Oracle最小的存储单位,Oracle数据存放在"块"中.一个块占用一定的磁盘空间.特别注 ...

  6. Oracle BBED单个数据文件跳过所有归档恢复

    场景描述: 数据库利用备份进行恢复时,需要执行restore+recover,restore利用备份片恢复数据文件,recover是进行归档日志应用到最新状态,当我们所有归档日志丢失时,可以利用bbe ...

  7. 解析oracle的dump文件,读懂数据块dump文件信息

    尊重作者著作,转自http://blog.csdn.net/guoyjoe/article/details/8567076 -------------------------------------- ...

  8. oracle数据块dump信息,从数据块的dump信息能看出什么

    本帖最后由 zcs0237 于 2013-6-13 16:57 编辑 a.本文搜集大量网友文章编写而成 b.为节省篇幅,部分输出结果做了精简 c.感谢对本帖补充.建议.错误更正 d.推荐网站: === ...

  9. oracle数据块格式小结

    Oracle数据块可分为三层  更细化 Cache layer--20字节,包含DBA.块类型.块格式.SCN:数据块被读取时进行完整性检查,确保没有损坏或fracture,即块更新信息只有部分被写入 ...

最新文章

  1. 设置上传文件的最大大小
  2. Oracle 权限介绍及管理
  3. moead算法流程步骤_数据聚类(一)常见聚类算法的基本原理[图解]
  4. ABP vNext微服务架构详细教程——项目部署
  5. 早上发现还是问题不断
  6. js事件冒泡和事件捕获的区别
  7. 德乐Derler T-1series 120G SSD固态硬盘不认盘修复/开卡一例(SM2258XT主控),SM2259XT2可参考
  8. Vue项目实战之电商后台管理系统(三) 用户管理模块
  9. 函数与反函数的图像性质
  10. linux脚本判断奇数偶数,Bash Shell -- 奇数 偶数 之和计算
  11. 如何隐藏PickerView的两条线
  12. SICP练习1.17
  13. Swoole vs Workman
  14. 极客日报:微信正式宣布开放外部链接;iPhone13预购开启导致苹果官网崩了;特斯拉将向车主提供新版 FSD
  15. Python代码篇-单例模式(五种实现单利方式)
  16. 学校计算机社团目标,电脑社团活动计划
  17. android关闭背光
  18. A non-optional actual argument must be present when invoking a procedure with an explicit interface
  19. linux系统查看主板cpu,Linux下使用lm_sensors查看主板和CPU温度
  20. Transformer五部曲

热门文章

  1. zoom:1是什么意思
  2. Python学习笔记(八)
  3. Mac OS X 使用命令sed替换tab
  4. 增加ESXI中虚拟机CENTOS系统分区容量
  5. 通过NFS实现简单的文件共享
  6. 夏季编辑系统的联想感觉
  7. python app模块_pythonWeb框架创建app模块以及虚拟环境管理工具
  8. php 提交的数据覆盖,如何高效的做数据覆盖操作
  9. matlab批量储存变量_科协五分钟|用Matlab工具包处理音频信号
  10. ASP.NET MVC – HTML 帮助器简介