ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle datafile 与 object的关系

oracle datafile 与 object的关系

原创 Linux操作系统 作者:aaqwsh 时间:2012-12-27 14:17:52 0 删除 编辑

有时候为了检查物理备库是否正常,我们一般open read only 打开,然后去查询一些对象。这个比较直观,然后如果想知道某些datafile是否正常,可以查询对应file上的对象(当然还有一些常规方法dbv、VALIDATE DATAFILE),那怎么知道datafile 与 object的关系呢,通过 v$bh可以大概看出来:


通过v$bh得到一些object:

SQL>  select file#,block#,class#,status,xnc,objd from v$bh where ts#=6 and file#=53;
 
     FILE#     BLOCK#     CLASS# STATUS            XNC       OBJD
---------- ---------- ---------- ---------- ---------- ----------
        53      29073          0 free                0      20798
        53      14928          0 free                0      22287
        53      22151          0 free                0      23840
        53      14352          0 free                0      22287
        53      16216          0 free                0      22287
        53      17936          0 free                0      22287
        53      31882          0 free                0      24140
        53      32581          0 free                0      24140
        53      16627          0 free                0      22287
        53      10370          0 free                0      22287
        53      22774          0 free                0      23840

165 rows selected.


通过dump block得到一些具体的对象记录:

alter system dump datafile 53 block 14352;


 seg/obj: 0x570f  csc: 0x0f.6c721bd0  itc: 2  flg: E  typ: 1 - DATA   ----> 0x570f 转为十进制为 22287
     brn: 0  bdba: 0xd402883 ver: 0x01 opc: 0
     inc: 0  exflg: 0

tab 0, row 0, @0x1f29
tl: 111 fb: --H-FL-- lb: 0x0  cc: 10
col  0: [ 2]  c1 02
col  1: [ 5]  c4 07 24 24 0f
col  2: [ 5]  c4 13 60 37 63

 

还原dump数据(可参考http://space.itpub.net/758322/viewspace-751219 oracle 数据类型转换)

SQL> declare n number;
  2      begin
  3       dbms_stats.convert_raw_value('c40724240f',n);
  4      dbms_output.put_line(n);
  5      end;
  6  /
 
6353514
 
PL/SQL procedure successfully completed
 
SQL>
SQL> declare n number;
  2      begin
  3       dbms_stats.convert_raw_value('c413603763',n);
  4      dbms_output.put_line(n);
  5      end;
  6  /
 
18955498
 
PL/SQL procedure successfully completed

 

验证,可通过相应记录的rowid转换得到:

SQL> select object_name from dba_objects where object_id=22287;
 
OBJECT_NAME
--------------------------------------------------------------------------------
AAAAAA


SQL> select dbms_rowid.rowid_object(rowid) obj,
  2         dbms_rowid.rowid_relative_fno(rowid) "file"
  3    from AAAAAA a
  4   where a.product_id = 6353514
  5     and a.pic_id = 18955498;
 
       OBJ       file
---------- ----------
     22287         53

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

上一篇: 盘点2012年
下一篇: Mysql Binary Log (1)
请登录后发表评论 登录
全部评论

注册时间:2010-11-24

  • 博文量
    132
  • 访问量
    261386