ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 查看数据库表对象的对应块信息

查看数据库表对象的对应块信息

原创 Linux操作系统 作者:great_li 时间:2011-06-06 12:35:51 0 删除 编辑

在使用BBED修改数据块,或者其他情况,需要查看数据库对象对应的物理文件及数据块时,可使用dbms_rowid函数进行查询。测试:

首先我这有一张10行的表

SQL> desc lzl
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 PHONE_NUMBER                                       VARCHAR2(20)
 MANAGER_ID                                         NUMBER(6)

SQL> select * from lzl;

PHONE_NUMBER         MANAGER_ID
-------------------- ----------
650.507.9833                124
650.507.9833                124
650.507.9833                124
650.507.9844                124
515.123.4444                101
515.123.5555                100
603.123.6666                201
515.123.7777                101
515.123.8888                101
515.123.8080                101

10 rows selected.

比如我要查询manager_id为201这行记录的存储信息。

SQL> select dbms_rowid.rowid_block_number(rowid),dbms_rowid.rowid_relative_fno(rowid) from lzl where manager_id=201;

DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID)
------------------------------------ ------------------------------------
                               79002                                    1
1号数据文件的79002块。

用BBED查看是否是这个数据。将bbed指向该块,dump:

…………………………………………略

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 002c0002 0c353135 2e313233
 2e383038 3003c202 022c0002 0c353135 2e313233 2e383838 3803c202 022c0002
 0c353135 2e313233 2e373737 3703c202 022c0002 0c363033 2e313233 2e363636
 3603c203 022c0002 0c353135 2e313233 2e353535 3502c202 2c00020c 3531352e
 3132332e 34343434 03c20202 2c00020c 3635302e 3530372e 39383434 03c20219
 2c00020c 3635302e 3530372e 39383333 03c20219 2c00020c 3635302e 3530372e
 39383333 03c20219 2c00020c 3635302e 3530372e 39383333 03c20219 0106c286
SQL> select dump('6666',1016) from dual;

DUMP('6666',1016)
-----------------------------------------------
Typ=96 Len=4 CharacterSet=US7ASCII: 36,36,36,36

字符类型的6666的16进制码为36363636.

在bbed中find /c 6666

BBED> find /c 6666
 File: /u01/oradata/test/system01.dbf (1)
 Block: 79002            Offsets: 8061 to 8191           Dba:0x0041349a
------------------------------------------------------------------------
 36363636 03c20302 2c00020c 3531352e 3132332e 35353535 02c2022c 00020c35
 31352e31 32332e34 34343403 c202022c 00020c36 35302e35 30372e39 38343403
 c202192c 00020c36 35302e35 30372e39 38333303 c202192c 00020c36 35302e35
 30372e39 38333303 c202192c 00020c36 35302e35 30372e39 38333303 c2021901
 06c286

在偏移量8061处。

 

 

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7969839/viewspace-697219/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-03-27

  • 博文量
    59
  • 访问量
    75616