Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2895990
  • 博文数量: 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

2013-03-24 00:16:13

上周一个朋友数据库启动不了,开始问题还不是很复杂,最后经过一系列的恢复后,出现了ORA-00704错误。
而导致ORA-00704错误的根本原因是访问OBJ$的时候,ORACLE需要回滚段中的数据,而访问回滚段的时候出现了
ORA-01555错误。


Fri Mar 22 19:54:06 2013
SMON: enabling cache recovery
Fri Mar 22 19:54:07 2013
ORA-01555 caused by SQL statement below (SQL ID: 4krwuz0ctqxdt, SCN: 0x0000.16240fbf):
Fri Mar 22 19:54:07 2013
select ctime, mtime, stime from obj$ where obj# = :1
Fri Mar 22 19:54:07 2013
Errors in file /u01/oracle/admin/db001/udump/db001_ora_2113.trc:
ORA-00704: bootstrap process failure
ORA-00704: bootstrap process failure
ORA-00604: error occurred at recursive SQL level 1
ORA-01555: snapshot too old: rollback segment number 11 with name "_SYSSMU11$" too small
Error 704 happened during db open, shutting down database
USER: terminating instance due to error 704
Instance terminated by USER, pid = 2113
ORA-1092 signalled during: ALTER DATABASE OPEN...




下面是10046事件内容:


PARSING IN CURSOR #5 len=52 dep=1 uid=0 oct=3 lid=0 tim=35856777108 hv=429618617 ad='9e8c99e0'
select ctime, mtime, stime from obj$ where obj# = :1
END OF STMT
PARSE #5:c=0,e=260,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,tim=35856777106
BINDS #5:
kkscoacd
 Bind#0
  oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00
  oacflg=08 fl2=0001 frm=00 csi=00 siz=24 off=0
  kxsbbbfp=9fffffffbf3d7fc0  bln=22  avl=02  flg=05
  value=28
EXEC #5:c=0,e=548,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,tim=35856777735
WAIT #5: nam='db file sequential read' ela= 79 file#=1 block#=218 blocks=1 obj#=-1 tim=35856777933
WAIT #5: nam='db file sequential read' ela= 69 file#=1 block#=219 blocks=1 obj#=-1 tim=35856778059
WAIT #5: nam='db file sequential read' ela= 64 file#=1 block#=122 blocks=1 obj#=-1 tim=35856778172
WAIT #5: nam='row cache lock' ela= 80 cache id=3 mode=0 request=3 obj#=-1 tim=35856778296
=====================
PARSING IN CURSOR #6 len=142 dep=2 uid=0 oct=3 lid=0 tim=35856779096 hv=361892850 ad='9e8c9070'
select /*+ rule */ name,file#,block#,status$,user#,undosqn,xactsqn,scnbas,scnwrp,DECODE(inst#,0,NULL,inst#),ts#,spare1 from undo$ where us#=:1
END OF STMT
PARSE #6:c=0,e=746,p=0,cr=0,cu=0,mis=1,r=0,dep=2,og=3,tim=35856779092
BINDS #6:
kkscoacd
 Bind#0
  oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00
  oacflg=08 fl2=0001 frm=00 csi=00 siz=24 off=0
  kxsbbbfp=9fffffffbf31fbd0  bln=22  avl=02  flg=05
  value=11
EXEC #6:c=0,e=1180,p=0,cr=0,cu=0,mis=1,r=0,dep=2,og=3,tim=35856780477
WAIT #6: nam='db file sequential read' ela= 72 file#=1 block#=202 blocks=1 obj#=-1 tim=35856780631
WAIT #6: nam='db file sequential read' ela= 66 file#=1 block#=106 blocks=1 obj#=-1 tim=35856780773
FETCH #6:c=0,e=310,p=2,cr=2,cu=0,mis=0,r=1,dep=2,og=3,tim=35856780829
STAT #6 id=1 cnt=1 pid=0 pos=1 obj=15 op='TABLE ACCESS BY INDEX ROWID UNDO$ (cr=2 pr=2 pw=0 time=310 us)'
STAT #6 id=2 cnt=1 pid=1 pos=1 obj=34 op='INDEX UNIQUE SCAN I_UNDO1 (cr=1 pr=1 pw=0 time=170 us)'
WAIT #5: nam='db file sequential read' ela= 72 file#=4 block#=2151 blocks=1 obj#=-1 tim=35856781170
FETCH #5:c=0,e=3617,p=6,cr=6,cu=0,mis=0,r=0,dep=1,og=4,tim=35856781376
ORA-00704: bootstrap process failure
ORA-00704: bootstrap process failure
ORA-00604: error occurred at recursive SQL level 1
ORA-01555: snapshot too old: rollback segment number 11 with name "_SYSSMU11$" too small
EXEC #1:c=100000,e=3397744,p=299,cr=65,cu=0,mis=0,r=0,dep=0,og=1,tim=35857765711
ERROR #1:err=1092 tim=3671835






设置隐含参数_currpution_rollback_segments 参数及其10513事件都不行。
个人感觉这个可以通过修改obj$块上的事务提交状态来屏蔽对回滚段的访问来解决。
遗憾的是当时太忙及其服务器上的BBED编译不了,没捞着搞这个案例。




不过下面介绍这种方法的修改步骤:


SQL> desc x                                                                       
 Name                                      Null?    Type                          
 ----------------------------------------- -------- ----------------------------  
 ID                                                 NUMBER(38)                    
 NAME                                               VARCHAR2(20)                  
                                                                                  
SQL> select * from x;                                                             
                                                                                  
no rows selected                                                                  
                                                                                  
SQL> insert into x select object_id,object_name from all_objects where rownum<=10;
                                                                                  
10 rows created.                                                                  
                                                                                  
SQL> commit;                                                                      
                                                                                  
Commit complete.                     


                                                                                                                                                            
SQL> select dbms_rowid.rowid_relative_fno(rowid) file#,dbms_rowid.rowid_block_number(rowid) block#  from x;
                                                                                                               
   FILE#    BLOCK#                                                                                          
---------- ----------                                                                                          
         4       1820                                                                                          
         4       1820                                                                                          
         4       1820                                                                                          
         4       1820                                                                                          
         4       1820                                                                                          
         4       1820                                                                                          
         4       1820                                                                                          
         4       1820                                                                                          
         4       1820                                                                                          
         4       1820                                                                                          
                                                                                                               
10 rows selected.                      
                   
SQL> select * from x;                                                               
                                                                                                                                              
        ID NAME                                                       
---------- --------------------                                       
        20 ICOL$                                                      
        46 I_USER1                                                    
        28 CON$                                                       
        15 UNDO$                                                      
        29 C_COBJ#                                                    
         3 I_OBJ#                                                     
        25 PROXY_ROLE_DATA$                                           
        41 I_IND1                                                     
        54 I_CDEF2                                                    
        40 I_OBJ5                                                     
                                                                      
10 rows selected.      




然后再打开一个SESSION 2,进行如下更新操作:


[oracle@db2server ~]$ sqlplus / as sysdba


SQL*Plus: Release 11.2.0.3.0 Production on Thu Mar 21 04:40:18 2013


Copyright (c) 1982, 2011, Oracle.  All rights reserved.




Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options


SQL> conn test/test
Connected.
SQL> update x set name='abc';


10 rows updated.


SQL>         
                   
          
由于没有提交,因此对于其他的SESSION 是看不到更新后的结果的。




                                               
然后再重新打开一个SESSION 3,进行如下操作:


SQL> alter system checkpoint; --检查点的目的是将更新后的结果刷新到磁盘上。


System altered.


                                                                      
SQL>  alter system dump datafile 4 block 1820;                        
                                                                      
System altered.                                                       
                                                                      
SQL> oradebug setmypid                                                
Statement processed.                                                  
SQL> oradebug tracefile_name                                          
/u01/app/oracle/diag/rdbms/huateng/huateng/trace/huateng_ora_12994.trc




从跟踪文件中我们可以找到如下信息:




Block header dump:  0x0100071c
 Object id on Block? Y
 seg/obj: 0x12e56  csc: 0x00.3318b8  itc: 2  flg: E  typ: 1 - DATA
     brn: 0  bdba: 0x1000718 ver: 0x01 opc: 0
     inc: 0  exflg: 0


 Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x000a.007.0000048f  0x00c007fa.017f.06  C---    0  scn 0x0000.0033190d
0x02   0x0005.019.0000051e  0x00c02099.013f.01  ----   10  fsc 0x0027.00000000


上面显示我们LCK了10条记录,并且使用的2号ITL事务槽。


关于事务的状态如下:


TRANSACTION_COMMITED = 0×08;
TRANSACTION_UPBOUND = 0×02;
TRANSACTION_ACTIVE = 0×01;


我们仅仅需要将事务的状态改成TRANSACTION_COMMITED就可以。


此外DUMP文件中我们也可以看到相应的NAME列也被改为了abc了。


SQL> select dump('abc',16) from dual;


DUMP('ABC',16)
----------------------
Typ=96 Len=3: 61,62,63




block_row_dump:
tab 0, row 0, @0x1e0c
tl: 10 fb: --H-FL-- lb: 0x2  cc: 2
col  0: [ 2]  c1 15
col  1: [ 3]  61 62 63
tab 0, row 1, @0x1e02
tl: 10 fb: --H-FL-- lb: 0x2  cc: 2
col  0: [ 2]  c1 2f
col  1: [ 3]  61 62 63
tab 0, row 2, @0x1df8
tl: 10 fb: --H-FL-- lb: 0x2  cc: 2
col  0: [ 2]  c1 1d
col  1: [ 3]  61 62 63
tab 0, row 3, @0x1dee
tl: 10 fb: --H-FL-- lb: 0x2  cc: 2
col  0: [ 2]  c1 10
col  1: [ 3]  61 62 63
tab 0, row 4, @0x1de4
tl: 10 fb: --H-FL-- lb: 0x2  cc: 2
col  0: [ 2]  c1 1e
col  1: [ 3]  61 62 63
tab 0, row 5, @0x1dda
tl: 10 fb: --H-FL-- lb: 0x2  cc: 2
col  0: [ 2]  c1 04
col  1: [ 3]  61 62 63
tab 0, row 6, @0x1dd0
tl: 10 fb: --H-FL-- lb: 0x2  cc: 2
col  0: [ 2]  c1 1a
col  1: [ 3]  61 62 63
tab 0, row 7, @0x1dc6
tl: 10 fb: --H-FL-- lb: 0x2  cc: 2
col  0: [ 2]  c1 2a
col  1: [ 3]  61 62 63
tab 0, row 8, @0x1dbc
tl: 10 fb: --H-FL-- lb: 0x2  cc: 2
col  0: [ 2]  c1 37
col  1: [ 3]  61 62 63
tab 0, row 9, @0x1db2
tl: 10 fb: --H-FL-- lb: 0x2  cc: 2
col  0: [ 2]  c1 29
col  1: [ 3]  61 62 63
end_of_block_dump
End dump data blocks tsn: 4 file#: 4 minblk 1820 maxblk 1820                  
         
在BBED修改文件之前,先进行一次FLUSH BUFFER_CACHE的操作。


SQL>  alter system flush buffer_cache;


System altered.


这个操作的目的是为了将内存中的BLOCK 1820刷出去,下次读取将会发现物理读取,从而可以读取到我们修改后的内容。
否则ORACLE不会进行物理读,也就是看不到我们采用BBED修改后的结果。




下面是BBED修改文件的部分:




[oracle@db2server huateng]$ bbed filename=/u01/app/oracle/oradata/huateng/users01.dbf password=blockedit mode=edit


BBED: Release 2.0.0.0.0 - Limited Production on Thu Mar 21 04:41:11 2013


Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.


************* !!! For Oracle Internal Use only !!! ***************


BBED> set block 1820
        BLOCK#          1820


BBED> p ktbbh.ktbbhitl
struct ktbbhitl[0], 24 bytes                @44      
   struct ktbitxid, 8 bytes                 @44      
      ub2 kxidusn                           @44       0x000a
      ub2 kxidslt                           @46       0x0007
      ub4 kxidsqn                           @48       0x0000048f
   struct ktbituba, 8 bytes                 @52      
      ub4 kubadba                           @52       0x00c007fa
      ub2 kubaseq                           @56       0x017f
      ub1 kubarec                           @58       0x06
   ub2 ktbitflg                             @60       0x8000 (KTBFCOM)
   union _ktbitun, 2 bytes                  @62      
      sb2 _ktbitfsc                         @62       0
      ub2 _ktbitwrp                         @62       0x0000
   ub4 ktbitbas                             @64       0x0033190d
struct ktbbhitl[1], 24 bytes                @68      
   struct ktbitxid, 8 bytes                 @68      
      ub2 kxidusn                           @68       0x0005
      ub2 kxidslt                           @70       0x0019
      ub4 kxidsqn                           @72       0x0000051e
   struct ktbituba, 8 bytes                 @76      
      ub4 kubadba                           @76       0x00c02099
      ub2 kubaseq                           @80       0x013f
      ub1 kubarec                           @82       0x01
   ub2 ktbitflg                             @84       0x000a (NONE) <---这里需要修改为0x8000
   union _ktbitun, 2 bytes                  @86      
      sb2 _ktbitfsc                         @86       39
      ub2 _ktbitwrp                         @86       0x0027
   ub4 ktbitbas                             @88       0x00000000


BBED>  m /x 0080 offset 84 <--LINUX平台字节序是little的
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
 File: /u01/app/oracle/oradata/huateng/users01.dbf (0)
 Block: 1820             Offsets:   84 to  595           Dba:0x00000000
------------------------------------------------------------------------
 00802700 00000000 00000000 00000000 00010a00 ffff2600 b21de71e 0e1f0000 
 0a000c1e 021ef81d ee1de41d da1dd01d c61dbc1d b21d4e10 7e10ae10 de100e11 
 3e116e11 9e11ce11 fe112e12 5e128e12 be12ee12 26135f13 9613cd13 01143614 
 67149814 c814ff14 33156915 a115d915 0d164316 7c16b416 ec162417 5517840e 
 9f0b270f 8417b517 f10ee517 00082b0e 1618fc0c 3908630d 300df90d d20c6d0c 
 6b0b080b a50ad80a 3a0bd50b bb0e4218 c70d3a0c 070c970d 5a0e710a 0d0ada09 
 400a9e0c a9094309 0d09da08 7b09a408 71086e18 9b18ce18 fc182c19 5e199519 
 bf19ef19 1b1a491a 751aa21a d41a081b 401b6f1b a81bd21b 001c331c 6c1c991c 
 c81cf51c 201d4f1d 7e1dab1d e41d1b1e 501e861e bf1ef61e 281fa819 dd19111a 
 3f1a751a 970caa1a d91a051b 3a1b6a1b 9c1bd51b 0c1c3b1c 6c1ca11c da1c0f1d 
 481d811d b51ded1d 251e5a1e 911ec11e f31e5f0c 2c1f831b 991baf1b c51bdb1b 
 f11b071c 1d000000 40cf1400 51018014 6a617661 782f6a6d 732f436f 6e6e6563 
 74696f6e 02c102ff ffff02c1 1e018004 c3062d59 00000040 cf140050 0180166a 
 61766178 2f6a6d73 2f44656c 69766572 794d6f64 6502c102 ffffff02 c11e0180 
 04c3062d 58000000 40cf1400 4f018015 6a617661 782f6a6d 732f4465 7374696e 
 6174696f 6e02c102 ffffff02 c11e0180 04c3062d 57000000 40cf1400 4e018016 


 <32 bytes per line>


BBED> p ktbbh.ktbbhitl
struct ktbbhitl[0], 24 bytes                @44      
   struct ktbitxid, 8 bytes                 @44      
      ub2 kxidusn                           @44       0x000a
      ub2 kxidslt                           @46       0x0007
      ub4 kxidsqn                           @48       0x0000048f
   struct ktbituba, 8 bytes                 @52      
      ub4 kubadba                           @52       0x00c007fa
      ub2 kubaseq                           @56       0x017f
      ub1 kubarec                           @58       0x06
   ub2 ktbitflg                             @60       0x8000 (KTBFCOM)
   union _ktbitun, 2 bytes                  @62      
      sb2 _ktbitfsc                         @62       0
      ub2 _ktbitwrp                         @62       0x0000
   ub4 ktbitbas                             @64       0x0033190d
struct ktbbhitl[1], 24 bytes                @68      
   struct ktbitxid, 8 bytes                 @68      
      ub2 kxidusn                           @68       0x0005
      ub2 kxidslt                           @70       0x0019
      ub4 kxidsqn                           @72       0x0000051e
   struct ktbituba, 8 bytes                 @76      
      ub4 kubadba                           @76       0x00c02099
      ub2 kubaseq                           @80       0x013f
      ub1 kubarec                           @82       0x01
   ub2 ktbitflg                             @84       0x8000 (KTBFCOM)   <--修改后的结果
   union _ktbitun, 2 bytes                  @86      
      sb2 _ktbitfsc                         @86       39
      ub2 _ktbitwrp                         @86       0x0027
   ub4 ktbitbas                             @88       0x00000000


BBED> sum apply
Check value for File 0, Block 1820:
current = 0x95c2, required = 0x95c2


BBED> exit




修改之后,打开一个SESSION 查询表结果发现还是修改前的结果:




SQL> select * from x;


        ID NAME
---------- --------------------
        20 ICOL$
        46 I_USER1
        28 CON$
        15 UNDO$
        29 C_COBJ#
         3 I_OBJ#
        25 PROXY_ROLE_DATA$
        41 I_IND1
        54 I_CDEF2
        40 I_OBJ5


10 rows selected.




SQL> alter system dump datafile 4 block 1820;


System altered.


BLOCK DUMP后的结果如下:


Block header dump:  0x0100071c
 Object id on Block? Y
 seg/obj: 0x12e56  csc: 0x00.3318b8  itc: 2  flg: E  typ: 1 - DATA
     brn: 0  bdba: 0x1000718 ver: 0x01 opc: 0
     inc: 0  exflg: 0
 
 Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x000a.007.0000048f  0x00c007fa.017f.06  C---    0  scn 0x0000.0033190d
0x02   0x0005.019.0000051e  0x00c02099.013f.01  C---    0  scn 0x0027.00000000
bdba: 0x0100071c
data_block_dump,data header at 0x9e4264


2 号 ITL事务槽的事务状态已经修改为COMMIT的了,最后发现需要将Scn/Fsc中的27修改为0才行。




[oracle@db2server huateng]$ bbed filename=/u01/app/oracle/oradata/huateng/users01.dbf password=blockedit mode=edit


BBED: Release 2.0.0.0.0 - Limited Production on Thu Mar 21 04:43:11 2013


Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.


************* !!! For Oracle Internal Use only !!! ***************


BBED> set block 1820
        BLOCK#          1820


BBED> p ktbbh.ktbbhitl
struct ktbbhitl[0], 24 bytes                @44      
   struct ktbitxid, 8 bytes                 @44      
      ub2 kxidusn                           @44       0x000a
      ub2 kxidslt                           @46       0x0007
      ub4 kxidsqn                           @48       0x0000048f
   struct ktbituba, 8 bytes                 @52      
      ub4 kubadba                           @52       0x00c007fa
      ub2 kubaseq                           @56       0x017f
      ub1 kubarec                           @58       0x06
   ub2 ktbitflg                             @60       0x8000 (KTBFCOM)
   union _ktbitun, 2 bytes                  @62      
      sb2 _ktbitfsc                         @62       0
      ub2 _ktbitwrp                         @62       0x0000
   ub4 ktbitbas                             @64       0x0033190d
struct ktbbhitl[1], 24 bytes                @68      
   struct ktbitxid, 8 bytes                 @68      
      ub2 kxidusn                           @68       0x0005
      ub2 kxidslt                           @70       0x0019
      ub4 kxidsqn                           @72       0x0000051e
   struct ktbituba, 8 bytes                 @76      
      ub4 kubadba                           @76       0x00c02099
      ub2 kubaseq                           @80       0x013f
      ub1 kubarec                           @82       0x01
   ub2 ktbitflg                             @84       0x8000 (KTBFCOM)
   union _ktbitun, 2 bytes                  @86      
      sb2 _ktbitfsc                         @86       39
      ub2 _ktbitwrp                         @86       0x0027   <---这里修改为0
   ub4 ktbitbas                             @88       0x00000000


BBED> m /x 0000 offset 86
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
 File: /u01/app/oracle/oradata/huateng/users01.dbf (0)
 Block: 1820             Offsets:   86 to  597           Dba:0x00000000
------------------------------------------------------------------------
 00000000 00000000 00000000 00000001 0a00ffff 2600b21d e71e0e1f 00000a00 
 0c1e021e f81dee1d e41dda1d d01dc61d bc1db21d 4e107e10 ae10de10 0e113e11 
 6e119e11 ce11fe11 2e125e12 8e12be12 ee122613 5f139613 cd130114 36146714 
 9814c814 ff143315 6915a115 d9150d16 43167c16 b416ec16 24175517 840e9f0b 
 270f8417 b517f10e e5170008 2b0e1618 fc0c3908 630d300d f90dd20c 6d0c6b0b 
 080ba50a d80a3a0b d50bbb0e 4218c70d 3a0c070c 970d5a0e 710a0d0a da09400a 
 9e0ca909 43090d09 da087b09 a4087108 6e189b18 ce18fc18 2c195e19 9519bf19 
 ef191b1a 491a751a a21ad41a 081b401b 6f1ba81b d21b001c 331c6c1c 991cc81c 
 f51c201d 4f1d7e1d ab1de41d 1b1e501e 861ebf1e f61e281f a819dd19 111a3f1a 
 751a970c aa1ad91a 051b3a1b 6a1b9c1b d51b0c1c 3b1c6c1c a11cda1c 0f1d481d 
 811db51d ed1d251e 5a1e911e c11ef31e 5f0c2c1f 831b991b af1bc51b db1bf11b 
 071c1d00 000040cf 14005101 80146a61 7661782f 6a6d732f 436f6e6e 65637469 
 6f6e02c1 02ffffff 02c11e01 8004c306 2d590000 0040cf14 00500180 166a6176 
 61782f6a 6d732f44 656c6976 6572794d 6f646502 c102ffff ff02c11e 018004c3 
 062d5800 000040cf 14004f01 80156a61 7661782f 6a6d732f 44657374 696e6174 
 696f6e02 c102ffff ff02c11e 018004c3 062d5700 000040cf 14004e01 80166a61 


 <32 bytes per line>




BBED> p ktbbh.ktbbhitl
struct ktbbhitl[0], 24 bytes                @44      
   struct ktbitxid, 8 bytes                 @44      
      ub2 kxidusn                           @44       0x000a
      ub2 kxidslt                           @46       0x0007
      ub4 kxidsqn                           @48       0x0000048f
   struct ktbituba, 8 bytes                 @52      
      ub4 kubadba                           @52       0x00c007fa
      ub2 kubaseq                           @56       0x017f
      ub1 kubarec                           @58       0x06
   ub2 ktbitflg                             @60       0x8000 (KTBFCOM)
   union _ktbitun, 2 bytes                  @62      
      sb2 _ktbitfsc                         @62       0
      ub2 _ktbitwrp                         @62       0x0000
   ub4 ktbitbas                             @64       0x0033190d
struct ktbbhitl[1], 24 bytes                @68      
   struct ktbitxid, 8 bytes                 @68      
      ub2 kxidusn                           @68       0x0005
      ub2 kxidslt                           @70       0x0019
      ub4 kxidsqn                           @72       0x0000051e
   struct ktbituba, 8 bytes                 @76      
      ub4 kubadba                           @76       0x00c02099
      ub2 kubaseq                           @80       0x013f
      ub1 kubarec                           @82       0x01
   ub2 ktbitflg                             @84       0x8000 (KTBFCOM)
   union _ktbitun, 2 bytes                  @86      
      sb2 _ktbitfsc                         @86       0
      ub2 _ktbitwrp                         @86       0x0000       <--------------修改后的结果
   ub4 ktbitbas                             @88       0x00000000




BBED> sum apply
Check value for File 0, Block 1820:
current = 0x95e5, required = 0x95e5


BBED> verify
DBVERIFY - Verification starting
FILE = /u01/app/oracle/oradata/huateng/users01.dbf
BLOCK = 1820


Block Checking: DBA = 16779036, Block Type = KTB-managed data block
data header at 0x198264
kdbchk: row locked by non-existent transaction
        table=0   slot=0
        lockid=2   ktbbhitc=2
Block 1820 failed with check code 6101


DBVERIFY - Verification complete


Total Blocks Examined         : 1
Total Blocks Processed (Data) : 1
Total Blocks Failing   (Data) : 1
Total Blocks Processed (Index): 0
Total Blocks Failing   (Index): 0
Total Blocks Empty            : 0
Total Blocks Marked Corrupt   : 0
Total Blocks Influx           : 0
Message 531 not found;  product=RDBMS; facility=BBED




BBED> 




重新查询即可看到事务已经被修改为提交:
         
[oracle@db2server ~]$ sqlplus / as sysdba


SQL*Plus: Release 11.2.0.3.0 Production on Thu Mar 21 04:44:26 2013


Copyright (c) 1982, 2011, Oracle.  All rights reserved.




Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options


SQL> select * from Test.x;


        ID NAME
---------- --------------------
        20 abc
        46 abc
        28 abc
        15 abc
        29 abc
         3 abc
        25 abc
        41 abc
        54 abc
        40 abc


10 rows selected.                  
                  
                  
                  
                  
                  
                  
                  
阅读(3805) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~