Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2839211
  • 博文数量: 599
  • 博客积分: 16398
  • 博客等级: 上将
  • 技术积分: 6875
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-30 12:04
个人简介

WINDOWS下的程序员出身,偶尔也写一些linux平台下小程序, 后转行数据库行业,专注于ORACLE和DB2的运维和优化。 同时也是ios移动开发者。欢迎志同道合的朋友一起研究技术。 数据库技术交流群:58308065,23618606

文章分类

全部博文(599)

文章存档

2014年(12)

2013年(56)

2012年(199)

2011年(105)

2010年(128)

2009年(99)

分类: Oracle

2012-05-28 14:58:55

 
今天一个朋友想DUMP数据块查看ITL槽数,但是DUMP的时候老是DUMP不出来东西。
 
我找了半天才找出来原因:
 
SQL> select dbms_rowid.rowid_relative_fno(rowid) file#,
  2        dbms_rowid.rowid_object(rowid) object#,
  3      dbms_rowid.rowid_block_number(rowid) block#,rowid,O__NUM, O__ST
  4      from dbtest.ab_testgbs where rownum<=10
  5      /
     FILE#    OBJECT#     BLOCK# ROWID              O__NUM                          O__ST
---------- ---------- ---------- ------------------ -------------------------- ----------
       984    6195708     313441 AAXon8APYAABMhhAAZ quIAh1032gPa6                    2001
       984    6195708     313441 AAXon8APYAABMhhAAa quIAh1032gPa7                    2001
       990    6195708     112263 AAXon8APeAAAbaHAAH quIAh1032gPaG                    2001
       990    6195708     112263 AAXon8APeAAAbaHAAI quIAh1032gPaH                    2001
       990    6195708     112263 AAXon8APeAAAbaHAAJ quIAh1032gPaI                    2001
       990    6195708     112263 AAXon8APeAAAbaHAAK quIAh1032gPaJ                    2001
       990    6195708     110044 AAXon8APeAAAa3cAAX quIAh1032gPaQ                    2001
       990    6195708     110044 AAXon8APeAAAa3cAAY quIAh1032gPaR                    2001
       990    6195708     110044 AAXon8APeAAAa3cAAZ quIAh1032gPaS                    2001
       990    6195708     110044 AAXon8APeAAAa3cAAa quIAh1032gPaT                    2001
 
10 rows selected.
 
朋友通过上面查询出来的文件号和BLOCK进行:
 
ALTER SYSTEM DUMP DATAFILE 990 BLOCK 110044.
 
但是DUMP之后却得不到相应的结果。
 
其实DUMP时候指定的文件号是绝对文件号,而DBMA_ROWID.ROWID_RELATIVE_FNO查询出来的是相对文件号。
这2个文件号不一定就一样。
 
绝对文件号在整个数据库唯一的
相对文件号只在表空间唯一,就是说每个表空间都有自己的相对文件号;相对文件号对于整个数据库来说是不唯一的;
恰好在我们的环境中,这2个文件号就不一样,如下:
 
SQL> select tablespace_name,file_id,relative_fno from dba_data_files where relative_fno in (990,984);
TABLESPACE_NAME                                                 FILE_ID RELATIVE_FNO
------------------------------------------------------------ ---------- ------------
dbtest_INDEX_P201504                                              984          984
dbtest_INDEX_P201702                                              990          990
dbtest_DATA_P201201                                              2007          984
dbtest_DATA_P201201                                              2013          990
 
绝对文件号990和2013的相对文件号都是990,实际我们的数据只是存放到了表空间
dbtest_DATA_P201201 中,DUMP的时候我们需要指定文件2013。
 
SQL> oradebug setmypid;

Statement processed.

SQL> alter system dump datafile 2013 block 110044;
 
System altered.
SQL> oradebug tracefile_name

/u01/oracle/admin/testdb/udump/testdb_ora_5251946.trc
 
  Block header dump:  0xf781addc
 Object id on Block? Y
 seg/obj: 0x5e89fc  csc: 0x849.3723495a  itc: 2  flg: E  typ: 1 - DATA
     brn: 0  bdba: 0xf781ab89 ver: 0x01 opc: 0
     inc: 0  exflg: 0
 
 Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0114.01a.000416df  0x0d877d6c.150f.13  --U-    3  fsc 0x0000.37234f42
0x02   0x014f.021.00052ce6  0x08cad027.18cf.44  C---    0  scn 0x0849.3722f668
 
data_block_dump,data header at 0x11043e064
阅读(1349) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~