`
ijavagos
  • 浏览: 1199216 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Oracle rdba和 dba 说明

 
阅读更多

. DB(Data block)

From: http://www.orafaq.com/wiki/Data_block

A data block is the smallest unit of storage in an Oracle database. Every database has a default block size (specified when the database is created), although blocks in different tablespaces may have different block sizes.

An extent consist of one or more contiguous Oracle data blocks. A block determines the finest level of granularity of where data can be stored. One data block corresponds to a specific number of bytes of physical space on disk.

Information about data blocks can be retrieved from the data dictionary views USER_SEGMENTS and USER_EXTENTS. These views show how many blocks are allocated for database object and how many blocks are available(free) in a segment/extent.

1.1 Dumping data blocks

Start by getting the file and block number to dump. Example:

SQL> SELECT

2 dbms_rowid.rowid_relative_fno(rowid) REL_FNO,

3 dbms_rowid.rowid_block_number(rowid) BLOCKNO,

4 dbms_rowid.rowid_row_number(rowid) ROWNO,

5 empno, ename

6 FROM emp WHERE empno = 7369;

REL_FNO BLOCKNO ROWNO EMPNO ENAME

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

4 20 0 7369 SMITH

Dump the block:

SQL> alter system dump datafile 4 block 20;

System altered.

Look for the newly created dump file in your UDUMP directory.

-- dump 多个blocks

Use the following syntax to dump multiple blocks:

ALTER SYSTEM dump datafile <file_id> block min <block_id> block max <block_id+blocks-1>;

1.2 Analyzing data block dumps

From the above block dump:

block_row_dump:

tab 0, row 0, @0x1d49

tl: 38 fb: --H-FL-- lb: 0x0 cc: 8

col 0: [ 3] c2 4a 46

col 1: [ 5] 53 4d 49 54 48

col 2: [ 5] 43 4c 45 52 4b

col 3: [ 3] c2 50 03

col 4: [ 7] 77 b4 0c 11 01 01 01

col 5: [ 2] c2 09

col 6: *NULL*

col 7: [ 2] c1 15

Converting back to table values:

Col 0 (EMPNO)

SQL> SELECT utl_raw.cast_to_number(replace('c2 4a 46',' ')) value FROM dual;

VALUE

----------

7369

Col 2 (ENAME) - simply convert the hex values to ascii - 53 4d 49 54 48 -> SMITH. Alternatively:

SQL> SELECT utl_raw.cast_to_varchar2(replace('53 4d 49 54 48',' ')) value FROM dual;

VALUE

---------

SMITH

. DBAData Block Address

Fromhttp://www.orafaq.com/wiki/Data_block_address

A Data Block Address (DBA) is the address of an Oracle data block for access purposes.

DBA一般指绝对数据块地址. rowid用来表示一行的物理地址,一行唯一确定一个rowid,并且在使用中一般不会改变,除非rowid之后在行的物理位置发生改变的情况下才会发生变化。在rowid 中,就有一段是来表示DBA的。有关rowid的内容,参考我的Blog

Oracle Rowid 介绍

http://blog.csdn.net/tianlesoftware/archive/2009/12/16/5020718.aspx

2.1 Find the DBA for a given row

Start by getting the file and block number of the row. Example:

SQL> SELECT

2 dbms_rowid.rowid_relative_fno(rowid) REL_FNO,

3 dbms_rowid.rowid_block_number(rowid) BLOCKNO,

4 empno, ename

5 FROM emp WHERE empno = 7369;

REL_FNO BLOCKNO EMPNO ENAME

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

4 20 7369 SMITH

2.2 convert the file and block numbers to a DBA address:

SQL> variable dba varchar2(30)

SQL> exec :dba := dbms_utility.make_data_block_address(4, 20);

PL/SQL procedure successfully completed.

SQL> print dba

DBA

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

16777236

2.3 Convert a DBA back to file and block numbers

Example:

SQL> SELECT dbms_utility.data_block_address_block(16777236) "BLOCK",

2 dbms_utility.data_block_address_file(16777236) "FILE"

3 FROM dual;

BLOCK FILE

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

20 4

. RDBATablespace relative database block address

在讲RDBA 之前,要先了解下rowid的组成。 关于rowid的内容,参考我的blog

Oracle Rowid 介绍

http://blog.csdn.net/tianlesoftware/archive/2009/12/16/5020718.aspx

RDBA是相对数据块地址,是数据字典(表空间及一些对象定义)所在块的地址。

oracle 8以后,rowid的存储空间扩大到了10个字节(32bit object#+10bit rfile#+22bit block#+16bit row#)rdba就是rowid中的rfile#+block#

SYS@anqing1(rac1)> SELECT

rowid,

dbms_rowid.rowid_relative_fno(rowid) REL_FNO,

dbms_rowid.rowid_block_number(rowid) BLOCKNO,

dbms_rowid.rowid_row_number(rowid) ROWNO,

empno, ename

FROM scott.emp WHERE empno = 7521;

ROWID REL_FNO BLOCKNO ROWNO EMPNO ENAME

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

AAAMfMAAEAAAAAgAAA 4 32 0 7369 SMITH

rowid = AAAMfMAAEAAAAAgAAA

BlockNo= 4

rowno =0

把这个block dumptrace:

SYS@anqing1(rac1)> alter system dump datafile 4 block 32;

System altered.

查看当前的trace 文件位置:

SYS@anqing1(rac1)> oradebug setmypid;

Statement processed.

SYS@anqing1(rac1)> oradebug tracefile_name

/u01/app/oracle/admin/anqing/udump/anqing1_ora_19997.trc

查看trace file

[oracle@rac1 ~]$ cat /u01/app/oracle/admin/anqing/udump/anqing1_ora_19997.trc

*** 2011-06-07 11:02:30.023

Start dump data blocks tsn: 4 file#: 4 minblk 32 maxblk 32

buffer tsn: 4 rdba: 0x01000020 (4/32) -- rdba 的值

scn: 0x0000.0006bfdb seq: 0x10 flg: 0x06 tail: 0xbfdb0610

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

Hex dump of block: st=0, typ_found=1

Dump of memory from 0x0ED09400 to 0x0ED0B400

ED09400 0000A206 01000020 0006BFDB 06100000 [.... ...........]

ED09410 000026A0 00180001 0000C7CC 0006BFD9 [.&..............]

.....

ED094A0 00000000 00000000 00000000 00000000 [................]

Repeat 465 times

ED0B1C0 00000000 08012C00 2350C203 4C494D06 [.....,....P#.MIL]

ED0B1D0 0552454C 52454C43 4EC2034B B6770753 [LER.CLERK..NS.w.]

....

ED0B3E0 05485449 52454C43 50C2034B B4770703 [ITH.CLERK..P..w.]

ED0B3F0 0101110C 09C20201 15C102FF BFDB0610 [................]

Block header dump: 0x01000020

Object id on Block? Y

seg/obj: 0xc7cc csc: 0x00.6bfd9 itc: 2 flg: E typ: 1 - DATA

brn: 0 bdba: 0x1000019 ver: 0x01 opc: 0

inc: 0 exflg: 0

Itl Xid Uba Flag Lck Scn/Fsc

0x01 0x0003.011.000000f2 0x00805794.00c8.49 --U- 14 fsc 0x0000.0006bfdb

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

data_block_dump,data header at 0xed09464

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

tsiz: 0x1f98

hsiz: 0x2e

pbl: 0x0ed09464

bdba: 0x01000020

76543210

flag=--------

ntab=1

nrow=14

frre=-1

fsbo=0x2e

fseo=0x1d61

avsp=0x1d33

tosp=0x1d33

0xe:pti[0] nrow=14 offs=0 -- 该块中保存了14条记录。从row 0row 13

0x12:pri[0] offs=0x1f72

0x14:pri[1] offs=0x1f47

0x16:pri[2] offs=0x1f1c

0x18:pri[3] offs=0x1ef3

0x1a:pri[4] offs=0x1ec6

0x1c:pri[5] offs=0x1e9d

0x1e:pri[6] offs=0x1e74

0x20:pri[7] offs=0x1e4c

0x22:pri[8] offs=0x1e26

0x24:pri[9] offs=0x1dfb

0x26:pri[10] offs=0x1dd5

0x28:pri[11] offs=0x1daf

0x2a:pri[12] offs=0x1d88

0x2c:pri[13] offs=0x1d61

block_row_dump:

tab 0, row 0, @0x1f72

tl: 38 fb: --H-FL-- lb: 0x1 cc: 8

col 0: [ 3] c2 4a 46

col 1: [ 5] 53 4d 49 54 48

col 2: [ 5] 43 4c 45 52 4b

col 3: [ 3] c2 50 03

col 4: [ 7] 77 b4 0c 11 01 01 01

col 5: [ 2] c2 09

col 6: *NULL*

col 7: [ 2] c1 15

tab 0, row 1, @0x1f47

tl: 43 fb: --H-FL-- lb: 0x1 cc: 8

col 0: [ 3] c2 4b 64

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

col 2: [ 8] 53 41 4c 45 53 4d 41 4e

col 3: [ 3] c2 4d 63

col 4: [ 7] 77 b5 02 14 01 01 01

col 5: [ 2] c2 11

col 6: [ 2] c2 04

col 7: [ 2] c1 1f

tab 0, row 2, @0x1f1c

tl: 43 fb: --H-FL-- lb: 0x1 cc: 8

col 0: [ 3] c2 4c 16

col 1: [ 4] 57 41 52 44

col 2: [ 8] 53 41 4c 45 53 4d 41 4e

col 3: [ 3] c2 4d 63

col 4: [ 7] 77 b5 02 16 01 01 01

col 5: [ 3] c2 0d 33

col 6: [ 2] c2 06

col 7: [ 2] c1 1f

tab 0, row 3, @0x1ef3

...

tab 0, row 13, @0x1d61

tl: 39 fb: --H-FL-- lb: 0x1 cc: 8

col 0: [ 3] c2 50 23

col 1: [ 6] 4d 49 4c 4c 45 52

col 2: [ 5] 43 4c 45 52 4b

col 3: [ 3] c2 4e 53

col 4: [ 7] 77 b6 01 17 01 01 01

col 5: [ 2] c2 0e

col 6: *NULL*

col 7: [ 2] c1 0b

end_of_block_dump

End dump data blocks tsn: 4 file#: 4 minblk 32 maxblk 32

[oracle@rac1 ~]$

/* Formatted on 2011/6/7 11:27:10 (QP5 v5.163.1008.3004) */

SELECT DBMS_UTILITY.data_block_address_file (

TO_NUMBER (LTRIM ('0x01000020', '0x'), 'xxxxxxxx'))

AS file_no,

DBMS_UTILITY.data_block_address_block (

TO_NUMBER (LTRIM ('0x01000020', '0x'), 'xxxxxxxx'))

AS block_no

FROM DUAL;

FILE_NO BLOCK_NO

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

4 32

这个和我们之前在rowid里查看的一致。

刚才说了,在32这个块里保存了14row记录,我们继续查询一下我们where=7521 那条:

tab 0, row 13, @0x1d61

SYS@anqing1(rac1)> select DBMS_UTILITY.data_block_address_block (TO_NUMBER (LTRIM ('0x1d61', '0x'),'xxxxxxxx')) as block_no from dual;

BLOCK_NO

----------

7521

我们查询的那条row记录在最后一条。

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

Blog http://blog.csdn.net/tianlesoftware

Email: dvd.dba@gmail.com

DBA1 群:62697716(); DBA2 群:62697977() DBA3 群:62697850()

DBA 超级群:63306533(); DBA4 群: 83829929 DBA5群: 142216823

DBA6 群:158654907 聊天 群:40132017 聊天2群:69087192

--加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请

分享到:
评论

相关推荐

    oracle truncate恢复

    下面举例说明如何用ODU恢复被Truncate掉的表。 1. 建立测试的表DB_JJ_INFO_TEMP。 SQL&gt; connect pdata/test 已连接。 SQL&gt; create table DB_JJ_INFO_TEMP as select * from dba_objects; SQL&gt; truncate table DB_JJ_...

    oracle恢复工具-FY_Recover_Data

    它是利用Oracle表扫描机制、数据嫁接机制恢复TRUNCATE或者损坏数据的工具包,这个包是由行内有影响力的DBA大师黄炜先生通过PLSQL编写的,再这里再次感谢他的无私技术分享。Fy_Recover_Data去本文附近中下载 好了,...

    多队列(queues)网卡DMA收包方式.pdf

    每个队列都有三个寄存器:Receive Descriptor Base Address(RDBA)、Receive Descriptor Length(RDLEN)和Receive Descriptor Control(RXDCTL)。其中,RDBA寄存器用于存储队列的descriptor ring的物理地址,...

    前端三剑客(html+css+js)加vue部分基础运用2

    前端三剑客(html+css+js)加vue部分基础运用2

    aiohttp-3.9.4-cp311-cp311-musllinux_1_1_aarch64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    029-微信小程序-大好商城.zip

    029-微信小程序-大好商城.zip

    高分项目,基于Unity3D开发实现的情绪模拟游戏,内含完整源码+资源+unitypackage

    高分项目,基于Unity3D开发实现的情绪模拟游戏,内含完整源码+资源+unitypackage 模拟市民是情绪化的生物,而他们的情绪被心情指数牵动着。游戏中的互动能够带给模拟市民不同的心情指数,例如刷牙可能感到薄荷般的清新,置卫生于不顾则会觉得肮脏。各种心情指数都有相关的情绪强度,模拟市民当前的情绪,取决于他们拥有的心情指数。

    cryptography-1.9-cp36-cp36m-win_amd64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    JavaScript 使用技巧.md

    JavaScript 是一种广泛使用的编程语言,主要用于网页开发,但也可以用于服务器端(如 Node.js)和各种其他环境。以下是一些 JavaScript 的使用技巧: 1. **使用模板字符串**: 使用反引号(```)可以创建模板字符串,这使得在字符串中嵌入变量或表达式变得更加容易。 ``` const name = "Kimi"; console.log(`Hello, ${name}!`); ``` 2. **箭头函数**: 使用箭头函数可以简化函数的编写,并且它们没有自己的 `this` 值。 ``` const add = (a, b) => a + b; ``` 3. **解构赋值**: 使用解构赋值可以快速从数组或对象中提取值并赋给变量。 ``` const [a, b] = [1, 2]; const { x, y } = { x: 1, y: 2 }; ``` 4. **使用 `const` 和 `let`**: 尽量使用 `const` 来声明只读变量,使用 `let` 来声明可变变

    aiohttp-3.7.1-cp36-cp36m-manylinux2014_x86_64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    025-微信小程序-兵马俑小程序(含语音画册与实时导览).zip

    025-微信小程序-兵马俑小程序(含语音画册与实时导览).zip

    基于java+深度学习开发的农作物病虫害识别+APP软件+源码+项目解析+数据+模型训练+数据库(毕业设计&课程设计&项目开发)

    基于java+深度学习开发的农作物病虫害识别+APP软件+源码+项目解析+数据+模型训练+数据库,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于java+深度学习开发的农作物病虫害识别+APP软件+源码+项目解析+数据+模型训练+数据库,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 项目简介: 将Deep Learning图像识别技术和地图相册的实时全景结合融入app,让我们的app可以独自识别出相应病害。用户一旦遇到作物病害问题,可以直接拿出手机打开我们的「智农有道」并对植株叶片或者果实进行拍照,通过训练好的模型,app会自动匹配出相似度最高的疾病,对应详情和解决方法也会相应展示给用户,让用户更快速的诊断病害并找到解决防治方案。

    aiohttp-3.9.0b1-cp311-cp311-musllinux_1_1_aarch64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    基于微信小程序的校园兼职系统(源码)

    基于微信小程序的校园兼职系统(源码)

    160套-2G-Web网站项目-HTML5源码合集-涵盖多行业网站(商业&科技&培训&商城&课设&毕设&网页简历等模板).7z

    HTML网站模板凭借其高度的灵活性和易用性,成为前端开发者的得力助手。这些模板通常预先设计好了页面的布局和样式,开发者可以直接在此基础上进行内容的填充和功能的开发,大大节省了从0到1的时间成本。同时,优质的HTML模板会经过多次的兼容性测试,确保在不同浏览器和设备上都能呈现出良好的视觉效果,提升了用户体验。你是否正在为网站项目寻找灵感与起点?现在,我们为你精心准备了160套、总容量高达2G的Web网站项目HTML5源码合集!无论你是需要搭建商业、科技、培训、商城类网站,还是用于课程设计、毕业设计、网页简历等,这里都能找到心仪的模板。每一套模板都经过精心设计和优化,让你轻松打造专业、美观的网站。快来查看这份宝藏资源,让你的项目事半功倍吧!

    《低成本开放式架构跌倒检测系统作为无线传感器网络实现》matlab代码.rar

    1.版本:matlab2014/2019a/2021a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    cryptography-2.3.1-cp34-cp34m-win_amd64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    毕设项目:基于CTP和Qt的可视化期货监控系统.zip

    该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

    RV1126 LVGL移植

    RV1126 LVGL移植

    aiohttp-3.8.0-cp39-cp39-musllinux_1_1_ppc64le.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

Global site tag (gtag.js) - Google Analytics