前言

之前的测试因为时间跨度较大,导致观察结果不够准确,而且修改也没有成功,这里重新新建一张表进行测试

1
2
3
4
5
6
7
8
select * from v$version;
BANNER
----------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE	11.2.0.4.0	Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production

创建测试表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
create table test_01 (id number, name varchar2(20));
insert into test_01 values (1, 'AA');
insert into test_01 values (2, 'BB');
insert into test_01 values (3, 'CC');
insert into test_01 values (4, 'DD');
commit;

select dbms_rowid.rowid_relative_fno(rowid) file_id, dbms_rowid.rowid_block_number(rowid) block_id, id, name from test_01;
FILE_ID | BLOCK_ID | ID | NAME
------------------------------
5       | 157      | 1  | AA  
5       | 157      | 2  | BB  
5       | 157      | 3  | CC  
5       | 157      | 4  | DD  

session1 修改数据不提交

1
2
3
4
5
6
7
8
9
10
11
12
update test_01 set name = 'FF' where id < 3;

select dbms_rowid.rowid_relative_fno(rowid) file_id, dbms_rowid.rowid_block_number(rowid) block_id, id, name from test_01;

   FILE_ID   BLOCK_ID         ID NAME
---------- ---------- ---------- --------------------
         5        157          1 FF
         5        157          2 FF
         5        157          3 CC
         5        157          4 DD

Elapsed: 00:00:00.01

session2 查看数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
select dbms_rowid.rowid_relative_fno(rowid) file_id, dbms_rowid.rowid_block_number(rowid) block_id, id, name from test_01;

   FILE_ID   BLOCK_ID         ID NAME
---------- ---------- ---------- --------------------
         5        157          1 AA
         5        157          2 BB
         5        157          3 CC
         5        157          4 DD

Elapsed: 00:00:00.00

select dump('FF',16),dump('AA',16),dump('BB',16) from dual;
DUMP('FF',16)       | DUMP('AA',16)       | DUMP('BB',16)      
---------------------------------------------------------------
Typ=96 Len=2: 46,46 | Typ=96 Len=2: 41,41 | Typ=96 Len=2: 42,42

bbed 修改 block 信息

session2 dump trace

1
2
3
alter system dump datafile 5 block 157;
select tracefile from v$process where addr in (select paddr from v$session where sid in (select sid from v$mystat));
cat  /u01/app/oracle/diag/rdbms/darkdb/darkdb/trace/darkdb_ora_6176.trc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
┌─[oracle@oracle11g]─[~]
└──╼ $ cat  /u01/app/oracle/diag/rdbms/darkdb/darkdb/trace/darkdb_ora_6176.trc
Trace file /u01/app/oracle/diag/rdbms/darkdb/darkdb/trace/darkdb_ora_6176.trc
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORACLE_HOME = /u01/app/oracle/product/11.2.0/db
System name:    Linux
Node name:      oracle11g
Release:        5.4.17-2102.201.3.el7uek.x86_64
Version:        #2 SMP Fri Apr 23 09:05:55 PDT 2021
Machine:        x86_64
Instance name: darkdb
Redo thread mounted by this instance: 1
Oracle process number: 29
Unix process pid: 6176, image: oracle@oracle11g (TNS V1-V3)


*** 2025-03-27 08:27:15.254
*** SESSION ID:(763.33) 2025-03-27 08:27:15.254
*** CLIENT ID:() 2025-03-27 08:27:15.254
*** SERVICE NAME:(SYS$USERS) 2025-03-27 08:27:15.254
*** MODULE NAME:(SQL*Plus) 2025-03-27 08:27:15.254
*** ACTION NAME:() 2025-03-27 08:27:15.254
 
Start dump data blocks tsn: 6 file#:5 minblk 157 maxblk 157
Block dump from cache:
Dump of buffer cache at level 4 for tsn=6 rdba=20971677
BH (0x15efc9778) file#: 5 rdba: 0x0140009d (5/157) class: 1 ba: 0x15ea6a000
  set: 10 pool: 3 bsz: 8192 bsi: 0 sflg: 2 pwc: 104,19
  dbwrid: 0 obj: 96170 objn: 96170 tsn: 6 afn: 5 hint: f
  hash: [0x15efa3ce8,0x18beefd88] lru: [0x15efc99a0,0x15efc9730]
  ckptq: [NULL] fileq: [NULL] objq: [NULL] objaq: [NULL]
  st: CR md: NULL tch: 1
  cr: [scn: 0x0.22e301],[xid: 0x7.1f.ba3],[uba: 0xc0064b.e5.a],[cls: 0x0.22e301],[sfl: 0x0],[lc: 0x0.22e301]
  flags: only_sequential_access
BH (0x15efa3c30) file#: 5 rdba: 0x0140009d (5/157) class: 1 ba: 0x15e68c000
  set: 9 pool: 3 bsz: 8192 bsi: 0 sflg: 2 pwc: 83,19
  dbwrid: 0 obj: 96170 objn: 96170 tsn: 6 afn: 5 hint: f
  hash: [0x15ef7e7b8,0x15efc9830] lru: [0x15efa3e58,0x15efa3be8]
  ckptq: [NULL] fileq: [NULL] objq: [NULL] objaq: [NULL]
  st: CR md: NULL tch: 1
  cr: [scn: 0x0.22e206],[xid: 0x7.1f.ba3],[uba: 0xc0064b.e5.a],[cls: 0x0.22e206],[sfl: 0x0],[lc: 0x0.22e206]
  flags: only_sequential_access
BH (0x15ef7e700) file#: 5 rdba: 0x0140009d (5/157) class: 1 ba: 0x15e2b8000
  set: 12 pool: 3 bsz: 8192 bsi: 0 sflg: 2 pwc: 86,28
  dbwrid: 0 obj: 96170 objn: 96170 tsn: 6 afn: 5 hint: f
  hash: [0x15ef7eb60,0x15efa3ce8] lru: [0x15ef7e928,0x15ef7e6b8]
  ckptq: [NULL] fileq: [NULL] objq: [0x15ef7f580,0x177f2a2f0] objaq: [0x15ef7f590,0x177f2a2e0]
  st: XCURRENT md: NULL fpin: 'ktspbwh2: ktspfmdb' tch: 2
  flags: block_written_once redo_since_read
  LRBA: [0x0.0.0] LSCN: [0x0.0] HSCN: [0xffff.ffffffff] HSUB: [1]
BH (0x15ef7eaa8) file#: 5 rdba: 0x0140009d (5/157) class: 1 ba: 0x15e2be000
  set: 12 pool: 3 bsz: 8192 bsi: 0 sflg: 2 pwc: 86,28
  dbwrid: 0 obj: 96170 objn: 96170 tsn: 6 afn: 5 hint: f
  hash: [0x18beefd88,0x15ef7e7b8] lru: [0x1873441c8,0x12ff7f900]
  lru-flags: moved_to_tail
  ckptq: [NULL] fileq: [NULL] objq: [NULL] objaq: [NULL]
  st: CR md: NULL fpin: 'ktspbwh2: ktspfmdb' tch: 1
  cr: [scn: 0x0.22e1e3],[xid: 0xfffe.ffff.0],[uba: 0x0.0.0],[cls: 0x0.22e1e3],[sfl: 0x1],[lc: 0x0.22e15f]
  flags: block_written_once redo_since_read
Block dump from disk:
buffer tsn: 6 rdba: 0x0140009d (5/157)
scn: 0x0000.0022e301 seq: 0x01 flg: 0x04 tail: 0xe3010601
frmt: 0x02 chkval: 0xb51c type: 0x06=trans data
Hex dump of block: st=0, typ_found=1
Dump of memory from 0x00007F8E38975A00 to 0x00007F8E38977A00
7F8E38975A00 0000A206 0140009D 0022E301 04010000  [......@...".....]
7F8E38975A10 0000B51C 00000001 000177AA 0022E301  [.........w....".]
7F8E38975A20 00000000 00320002 01400098 00010006  [......2...@.....]
7F8E38975A30 00000DC1 00C00277 001100D6 00008000  [....w...........]
7F8E38975A40 0022E15F 001F0007 00000BA3 00C0064B  [_.".........K...]
7F8E38975A50 000A00E5 00000002 00000000 00000000  [................]
7F8E38975A60 00000000 00040100 001AFFFF 1F5A1F74  [............t.Z.]
7F8E38975A70 00001F5A 1F8F0004 1F7D1F86 00001F74  [Z.........}.t...]
7F8E38975A80 00000000 00000000 00000000 00000000  [................]
        Repeat 500 times
7F8E389779D0 00000000 00000000 0202002C 440205C1  [........,......D]
7F8E389779E0 02002C44 0204C102 022C4343 03C10202  [D,......CC,.....]
7F8E389779F0 2C464602 C1020202 46460202 E3010601  [.FF,......FF....]
Block header dump:  0x0140009d
 Object id on Block? Y
 seg/obj: 0x177aa  csc: 0x00.22e301  itc: 2  flg: E  typ: 1 - DATA
     brn: 0  bdba: 0x1400098 ver: 0x01 opc: 0
     inc: 0  exflg: 0

 Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0006.001.00000dc1  0x00c00277.00d6.11  C---    0  scn 0x0000.0022e15f
0x02   0x0007.01f.00000ba3  0x00c0064b.00e5.0a  ----    2  fsc 0x0000.00000000 ## 这里可以看到两行数据存在锁,还未提交
bdba: 0x0140009d
data_block_dump,data header at 0x7f8e38975a64
===============
tsiz: 0x1f98
hsiz: 0x1a
pbl: 0x7f8e38975a64
     76543210
flag=--------
ntab=1
nrow=4
frre=-1
fsbo=0x1a
fseo=0x1f74
avsp=0x1f5a
tosp=0x1f5a
0xe:pti[0]      nrow=4  offs=0
0x12:pri[0]     offs=0x1f8f
0x14:pri[1]     offs=0x1f86
0x16:pri[2]     offs=0x1f7d
0x18:pri[3]     offs=0x1f74
block_row_dump:
tab 0, row 0, @0x1f8f
tl: 9 fb: --H-FL-- lb: 0x2  cc: 2
col  0: [ 2]  c1 02
col  1: [ 2]  46 46
tab 0, row 1, @0x1f86
tl: 9 fb: --H-FL-- lb: 0x2  cc: 2
col  0: [ 2]  c1 03
col  1: [ 2]  46 46
tab 0, row 2, @0x1f7d
tl: 9 fb: --H-FL-- lb: 0x0  cc: 2
col  0: [ 2]  c1 04
col  1: [ 2]  43 43
tab 0, row 3, @0x1f74
tl: 9 fb: --H-FL-- lb: 0x0  cc: 2
col  0: [ 2]  c1 05
col  1: [ 2]  44 44
end_of_block_dump
End dump data blocks tsn: 6 file#: 5 minblk 157 maxblk 157

session3 bbed 修改 block 信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
set filename '/oradata/darkdb/data01.dbf'
set file 5
set block 157
set count 8192
BBED> dump
 File: /oradata/darkdb/data01.dbf (5)
 Block: 157              Offsets:    0 to 8191           Dba:0x0140009d
------------------------------------------------------------------------
 06a20000 9d004001 01e32200 00000104 1cb50000 01000000 aa770100 01e32200 
 00000000 02003200 98004001 06000100 c10d0000 7702c000 d6001100 00800000 
 5fe12200 07001f00 a30b0000 4b06c000 e5000a00 02000000 00000000 00000000 
 00000000 00010400 ffff1a00 741f5a1f 5a1f0000 04008f1f 861f7d1f 741f0000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
........
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 2c000202 c1050244
 442c0002 02c10402 43432c02 0202c103 02[4646]2c 020202c1 0202[4646] 010601e3 ## 这里的 4646 是 FF 的16进制,修改之前的数据 AA(4141)和 BB(4242)已经不存在了

 <32 bytes per line>

BBED> set count 200
        COUNT           200

BBED> find /x 4b06c0
 File: /oradata/darkdb/data01.dbf (5)
 Block: 157              Offsets:   76 to  275           Dba:0x0140009d
------------------------------------------------------------------------
 4b06c000 e5000a00 02000000 00000000 00000000 00000000 00010400 ffff1a00
 741f5a1f 5a1f0000 04008f1f 861f7d1f 741f0000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000

 <32 bytes per line>

BBED> find /x e5000a
 File: /oradata/darkdb/data01.dbf (5)
 Block: 157              Offsets:   80 to  279           Dba:0x0140009d
------------------------------------------------------------------------
 e5000a00 02000000 00000000 00000000 00000000 00010400 ffff1a00 741f5a1f
 5a1f0000 04008f1f 861f7d1f 741f0000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000

 <32 bytes per line>

BBED> set mode edit
        MODE            Edit

BBED> modify /x 00800000 offset 84
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
 File: /oradata/darkdb/data01.dbf (5)
 Block: 157              Offsets:   84 to  283           Dba:0x0140009d
------------------------------------------------------------------------
 00800000 00000000 00000000 00000000 00010400 ffff1a00 741f5a1f 5a1f0000
 04008f1f 861f7d1f 741f0000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000

 <32 bytes per line>

BBED> show offset
        OFFSET          84

## 这里修改的 scn 比上一个 Itl 对应的 scn(0022e15f 注意大小端,Linux intel 一般都是小端) 大一些就行
BBED> modify /x 6fe122 offset 88
 File: /oradata/darkdb/data01.dbf (5)
 Block: 157              Offsets:   88 to  287           Dba:0x0140009d
------------------------------------------------------------------------
 6fe12200 00000000 00000000 00010400 ffff1a00 741f5a1f 5a1f0000 04008f1f
 861f7d1f 741f0000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000

 <32 bytes per line>

BBED> sum apply
Check value for File 5, Block 157:
current = 0xd453, required = 0xd453

BBED> set block 157
        BLOCK#          157

BBED> dump
 File: /oradata/darkdb/data01.dbf (5)
 Block: 157              Offsets:    0 to  199           Dba:0x0140009d
------------------------------------------------------------------------
 06a20000 9d004001 01e32200 00000104 53d40000 01000000 aa770100 01e32200
 00000000 02003200 98004001 06000100 c10d0000 7702c000 d6001100 00800000
 5fe12200 07001f00 a30b0000 4b06c000 e5000a00 00800000 6fe12200 00000000
 00000000 00010400 ffff1a00 741f5a1f 5a1f0000 04008f1f 861f7d1f 741f0000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000

 <32 bytes per line>

BBED> dump offset 8000
 File: /oradata/darkdb/data01.dbf (5)
 Block: 157              Offsets: 8000 to 8191           Dba:0x0140009d
------------------------------------------------------------------------
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 2c000202 c1050244
 442c0002 02c10402 43432c02 0202c103 0246462c 020202c1 02024646 010601e3

 <32 bytes per line>

BBED>

session2 查看数据

1
2
3
4
5
6
7
8
9
10
alter system flush buffer_cache;
alter system checkpoint;
select * from test_01;
ID | NAME
---------
1  | AA  
2  | BB  
3  | CC  
4  | DD  

尝试修改之后还是无法通过其他会话查看到数据

bbed 修改 undo block 信息

通过 bbed 直接修改 block 无法生效,再次尝试修改 undo block 信息

查看 rollsegment 信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
select * from v$rollname;
USN | NAME                 
---------------------------
0   | SYSTEM               
1   | _SYSSMU1_3724004606$ 
2   | _SYSSMU2_2996391332$ 
3   | _SYSSMU3_1723003836$ 
4   | _SYSSMU4_1254879796$ 
5   | _SYSSMU5_898567397$  
6   | _SYSSMU6_1263032392$ 
7   | _SYSSMU7_2070203016$ 
8   | _SYSSMU8_517538920$  
9   | _SYSSMU9_1650507775$ 
10  | _SYSSMU10_1197734989$


select header_file, header_block, blocks  from dba_segments where segment_name = (select name from v$rollname where usn = 7);
HEADER_FILE | HEADER_BLOCK | BLOCKS
-----------------------------------
3           | 224          | 272   


select extent_id, file_id, block_id, blocks from dba_extents where segment_name = (select name from v$rollname where usn = 7);
EXTENT_ID | FILE_ID | BLOCK_ID | BLOCKS
---------------------------------------
0         | 3       | 224      | 8     
1         | 3       | 232      | 8     
2         | 3       | 1536     | 128   
3         | 3       | 3328     | 128   

alter system dump datafile 3 block 224;
select tracefile from v$process where addr in (select paddr from v$session where sid in (select sid from v$mystat));
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
┌─[oracle@oracle11g]─[~]
└──╼ $ cat /u01/app/oracle/diag/rdbms/darkdb/darkdb/trace/darkdb_ora_13110.trc
Trace file /u01/app/oracle/diag/rdbms/darkdb/darkdb/trace/darkdb_ora_13110.trc
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORACLE_HOME = /u01/app/oracle/product/11.2.0/db
System name:    Linux
Node name:      oracle11g
Release:        5.4.17-2102.201.3.el7uek.x86_64
Version:        #2 SMP Fri Apr 23 09:05:55 PDT 2021
Machine:        x86_64
Instance name: darkdb
Redo thread mounted by this instance: 1
Oracle process number: 29
Unix process pid: 13110, image: oracle@oracle11g (TNS V1-V3)


*** 2025-03-27 09:46:46.850
*** SESSION ID:(763.35) 2025-03-27 09:46:46.850
*** CLIENT ID:() 2025-03-27 09:46:46.850
*** SERVICE NAME:(SYS$USERS) 2025-03-27 09:46:46.850
*** MODULE NAME:(SQL*Plus) 2025-03-27 09:46:46.850
*** ACTION NAME:() 2025-03-27 09:46:46.850

Start dump data blocks tsn: 2 file#:3 minblk 224 maxblk 224
Block dump from cache:
Dump of buffer cache at level 4 for tsn=2 rdba=12583136
BH (0x15ef78a60) file#: 3 rdba: 0x00c000e0 (3/224) class: 29 ba: 0x15e220000
  set: 12 pool: 3 bsz: 8192 bsi: 0 sflg: 2 pwc: 0,15
  dbwrid: 0 obj: -1 objn: 0 tsn: 2 afn: 3 hint: f
  hash: [0x15ef962c0,0x1898c4020] lru: [0x15ffd6b40,0x15ffdfc48]
  ckptq: [NULL] fileq: [NULL] objq: [0x15ffd6b68,0x15ffdca78] objaq: [0x15ffd6b78,0x15ffdca88]
  st: XCURRENT md: NULL fpin: 'ktuwh117: ktugus:kturec' tch: 10
  flags:
  LRBA: [0x0.0.0] LSCN: [0x0.0] HSCN: [0xffff.ffffffff] HSUB: [65535]
BH (0x15ef96208) file#: 3 rdba: 0x00c000e0 (3/224) class: 29 ba: 0x15e526000
  set: 9 pool: 3 bsz: 8192 bsi: 0 sflg: 2 pwc: 0,15
  dbwrid: 0 obj: -1 objn: 0 tsn: 2 afn: 3 hint: f
  hash: [0x131faddc8,0x15ef78b18] lru: [0x15efa93a8,0x187342cd8]
  lru-flags: on_auxiliary_list
  ckptq: [NULL] fileq: [NULL] objq: [NULL] objaq: [NULL]
  st: FREE md: NULL fpin: 'ktuwh05: ktugct' tch: 0 lfb: 33
  flags:
BH (0x131fadd10) file#: 3 rdba: 0x00c000e0 (3/224) class: 29 ba: 0x131794000
  set: 11 pool: 3 bsz: 8192 bsi: 0 sflg: 2 pwc: 0,15
  dbwrid: 0 obj: -1 objn: -1 tsn: 2 afn: 3 hint: f
  hash: [0x1898c4020,0x15ef962c0] lru: [0x131f90178,0x12ef84f88]
  lru-flags: on_auxiliary_list
  ckptq: [NULL] fileq: [NULL] objq: [NULL] objaq: [NULL]
  st: FREE md: NULL tch: 0 lfb: 33
  flags:
Block dump from disk:
buffer tsn: 2 rdba: 0x00c000e0 (3/224)
scn: 0x0000.0022e1e9 seq: 0x01 flg: 0x04 tail: 0xe1e92601
frmt: 0x02 chkval: 0xc3f6 type: 0x26=KTU SMU HEADER BLOCK
Hex dump of block: st=0, typ_found=1
Dump of memory from 0x00007F9FD62A5A00 to 0x00007F9FD62A7A00
7F9FD62A5A00 0000A226 00C000E0 0022E1E9 04010000  [&.........".....]
7F9FD62A5A10 0000C3F6 00000000 00000000 00000000  [................]
7F9FD62A5A20 00000000 00000004 0000010F 00000FF0  [................]
7F9FD62A5A30 00000002 0000004B 00000080 00C0064B  [....K.......K...]
7F9FD62A5A40 00000000 00000002 00000000 00000000  [................]
7F9FD62A5A50 00000000 00000000 00000000 00000004  [................]
7F9FD62A5A60 00000000 00000000 40000000 00C000E1  [...........@....]
7F9FD62A5A70 00000007 00C000E8 00000008 00C00600  [................]
7F9FD62A5A80 00000080 00C00D00 00000080 00000000  [................]
7F9FD62A5A90 00000000 00000000 00000000 00000000  [................]
        Repeat 246 times
7F9FD62A6A00 00000000 67E40866 67E40866 67E40866  [....f..gf..gf..g]
7F9FD62A6A10 67E40866 67E37BC2 67CAE719 67CAE719  [f..g.{.g...g...g]
7F9FD62A6A20 67CAE719 67CAE719 67CAE719 67CAE719  [...g...g...g...g]
        Repeat 20 times
7F9FD62A6B70 67CAE719 67321E8F 67321E8F 67321E8F  [...g..2g..2g..2g]
7F9FD62A6B80 67321E8F 67321E8F 67321E8F 67321E8F  [..2g..2g..2g..2g]
7F9FD62A6B90 67321E8F 67321E8F 67321E8F 00000000  [..2g..2g..2g....]
7F9FD62A6BA0 00000000 00000000 00000000 00000000  [................]
        Repeat 98 times
7F9FD62A71D0 0022DCB1 00000000 00C0064B 000A00E5  [..".....K.......]
7F9FD62A71E0 00E50001 00000000 00000000 0020000D  [.............. .]
7F9FD62A71F0 0001B000 00000068 7FFFFFFE 00000000  [....h...........]
7F9FD62A7200 000900E5 1A280002 00000000 003500E5  [......(.......5.]
7F9FD62A7210 028C0002 00000000 002C00E5 0D620002  [..........,...b.]
7F9FD62A7220 00000000 000100DB 1F840002 00000000  [................]
7F9FD62A7230 00000000 00000000 00000C2C 00C0064B  [........,...K...]
7F9FD62A7240 0022DDDE 00000000 00160009 00000000  [..".............]
7F9FD62A7250 00000000 00000000 00000001 67E48132  [............2..g]
7F9FD62A7260 00000BA5 00C0064A 0022DD75 00000000  [....J...u.".....]
7F9FD62A7270 00100009 00000000 00000000 00000000  [................]
7F9FD62A7280 00000001 67E48132 00000C35 00C0064A  [....2..g5...J...]
7F9FD62A7290 0022DDA5 00000000 00130009 00000000  [..".............]
7F9FD62A72A0 00000000 00000000 00000001 67E48132  [............2..g]
7F9FD62A72B0 00000C3A 00C00644 0022DCC1 00000000  [:...D.....".....]
7F9FD62A72C0 00120009 00000000 00000000 00000000  [................]
7F9FD62A72D0 00000001 67E48132 00000C39 00C0064A  [....2..g9...J...]
7F9FD62A72E0 0022DD2B 00000000 00050009 00000000  [+.".............]
7F9FD62A72F0 00000000 00000000 00000001 67E48132  [............2..g]
7F9FD62A7300 00000BD4 00C0064A 0022DD35 00000000  [....J...5.".....]
7F9FD62A7310 001A0009 00000000 00000000 00000000  [................]
7F9FD62A7320 00000001 67E48132 00000BF9 00C0064A  [....2..g....J...]
7F9FD62A7330 0022DCD8 00000000 00170009 00000000  [..".............]
7F9FD62A7340 00000000 00000000 00000001 67E48132  [............2..g]
7F9FD62A7350 00000C3B 00C0064B 0022DDCF 00000000  [;...K.....".....]
7F9FD62A7360 00000009 00000000 00000000 00000000  [................]
7F9FD62A7370 00000001 67E48132 00000BFC 00C0064A  [....2..g....J...]
7F9FD62A7380 0022DDA0 00000000 000E0009 00000000  [..".............]
7F9FD62A7390 00000000 00000000 00000001 67E48132  [............2..g]
7F9FD62A73A0 00000C39 00C0064A 0022DD53 00000000  [9...J...S.".....]
7F9FD62A73B0 00110009 00000000 00000000 00000000  [................]
7F9FD62A73C0 00000001 67E48132 00000BF9 00C0064A  [....2..g....J...]
7F9FD62A73D0 0022DD28 00000000 00040009 00000000  [(.".............]
7F9FD62A73E0 00000000 00000000 00000001 67E48132  [............2..g]
7F9FD62A73F0 00000C14 00C0064A 0022DD71 00000000  [....J...q.".....]
7F9FD62A7400 00010009 00000000 00000000 00000000  [................]
7F9FD62A7410 00000001 67E48132 00000C1B 00C0064A  [....2..g....J...]
7F9FD62A7420 0022DD45 00000000 00090009 00000000  [E.".............]
7F9FD62A7430 00000000 00000000 00000001 67E48132  [............2..g]
7F9FD62A7440 00000C39 00C00644 0022DCB9 00000000  [9...D.....".....]
7F9FD62A7450 00030009 00000000 00000000 00000000  [................]
7F9FD62A7460 00000001 67E48132 00000B9C 00C0064A  [....2..g....J...]
7F9FD62A7470 0022DDA2 00000000 00020009 00000000  [..".............]
7F9FD62A7480 00000000 00000000 00000001 67E48132  [............2..g]
7F9FD62A7490 00000C29 00C0064B 0022DDC5 00000000  [)...K.....".....]
7F9FD62A74A0 00070009 00000000 00000000 00000000  [................]
7F9FD62A74B0 00000001 67E48132 00000BE2 00C0064A  [....2..g....J...]
7F9FD62A74C0 0022DD7D 00000000 00210009 00000000  [}.".......!.....]
7F9FD62A74D0 00000000 00000000 00000001 67E48132  [............2..g]
7F9FD62A74E0 00000BB8 00C0064A 0022DD5D 00000000  [....J...].".....]
7F9FD62A74F0 000B0009 00000000 00000000 00000000  [................]
7F9FD62A7500 00000001 67E48132 00000C35 00C0064A  [....2..g5...J...]
7F9FD62A7510 0022DCC4 00000000 001E0009 00000000  [..".............]
7F9FD62A7520 00000000 00000000 00000001 67E48132  [............2..g]
7F9FD62A7530 00000C17 00C0064B 0022DDAC 00000000  [....K.....".....]
7F9FD62A7540 00150009 00000000 00000000 00000000  [................]
7F9FD62A7550 00000001 67E48132 00000BF6 00C0064A  [....2..g....J...]
7F9FD62A7560 0022DD93 00000000 001B0009 00000000  [..".............]
7F9FD62A7570 00000000 00000000 00000001 67E48132  [............2..g]
7F9FD62A7580 00000B9D 00C0064B 0022DDB1 00000000  [....K.....".....]
7F9FD62A7590 000F0009 00000000 00000000 00000000  [................]
7F9FD62A75A0 00000001 67E48132 00000C3A 00C0064B  [....2..g:...K...]
7F9FD62A75B0 0022DE64 00000000 00180009 00000000  [d.".............]
7F9FD62A75C0 00000000 00000000 00000001 67E4825E  [............^..g]
7F9FD62A75D0 00000C38 00C0064A 0022DCE6 00000000  [8...J.....".....]
7F9FD62A75E0 001D0009 00000000 00000000 00000000  [................]
7F9FD62A75F0 00000001 67E48132 00000BBD 00C0064B  [....2..g....K...]
7F9FD62A7600 0022DF48 00000000 00200009 00000000  [H."....... .....]
7F9FD62A7610 00000000 00000000 00000001 67E484B7  [...............g]
7F9FD62A7620 00000B99 00C0064A 0022DCF0 00000000  [....J.....".....]
7F9FD62A7630 001C0009 00000000 00000000 00000000  [................]
7F9FD62A7640 00000001 67E48132 00000BB0 00C0064A  [....2..g....J...]
7F9FD62A7650 0022DD3A 00000000 000C0009 00000000  [:.".............]
7F9FD62A7660 00000000 00000000 00000001 67E48132  [............2..g]
7F9FD62A7670 00000BD6 00C0064A 0022DD98 00000000  [....J.....".....]
7F9FD62A7680 00080009 00000000 00000000 00000000  [................]
7F9FD62A7690 00000001 67E48132 00000C39 00C0064A  [....2..g9...J...]
7F9FD62A76A0 0022DD05 00000000 000A0009 00000000  [..".............]
7F9FD62A76B0 00000000 00000000 00000001 67E48132  [............2..g]
7F9FD62A76C0 00000B98 00C0064A 0022DCEE 00000000  [....J.....".....]
7F9FD62A76D0 00190009 00000000 00000000 00000000  [................]
7F9FD62A76E0 00000001 67E48132 00000C38 00C0064A  [....2..g8...J...]
7F9FD62A76F0 0022DCC9 00000000 00060009 00000000  [..".............]
7F9FD62A7700 00000000 00000000 00000001 67E48132  [............2..g]
7F9FD62A7710 00000BA3 00C0064B 0022E15F 00000000  [....K..._.".....]
7F9FD62A7720 0002800A 00000000 00000000 00000000  [................]
7F9FD62A7730 00000001 00000000 00000C1D 00C0064B  [............K...]
7F9FD62A7740 0022E0FF 00000000 FFFF0009 00000000  [..".............]
7F9FD62A7750 00000000 00000000 00000001 67E48967  [............g..g]
7F9FD62A7760 00000C19 00C0064A 0022DD8C 00000000  [....J.....".....]
7F9FD62A7770 00140009 00000000 00000000 00000000  [................]
7F9FD62A7780 00000001 67E48132 00000007 00000000  [....2..g........]
7F9FD62A7790 00000000 00000000 00000000 00000000  [................]
        Repeat 36 times
7F9FD62A79E0 00000000 00000100 00C70040 00400000  [........@.....@.]
7F9FD62A79F0 010000C7 02C10280 2911C203 E1E92601  [...........).&..]
  Extent Control Header
  -----------------------------------------------------------------
  Extent Header:: spare1: 0      spare2: 0      #extents: 4      #blocks: 271
                  last map  0x00000000  #maps: 0      offset: 4080
      Highwater::  0x00c0064b  ext#: 2      blk#: 75     ext size: 128
  #blocks in seg. hdr's freelists: 0
  #blocks below: 0
  mapblk  0x00000000  offset: 2
                   Unlocked
     Map Header:: next  0x00000000  #extents: 4    obj#: 0      flag: 0x40000000
  Extent Map
  -----------------------------------------------------------------
   0x00c000e1  length: 7
   0x00c000e8  length: 8
   0x00c00600  length: 128
   0x00c00d00  length: 128

 Retention Table
  -----------------------------------------------------------
 Extent Number:0  Commit Time: 1742997606
 Extent Number:1  Commit Time: 1742997606
 Extent Number:2  Commit Time: 1742997606
 Extent Number:3  Commit Time: 1742997606

  TRN CTL:: seq: 0x00e5 chd: 0x000d ctl: 0x0020 inc: 0x00000000 nfb: 0x0000
            mgc: 0xb000 xts: 0x0068 flg: 0x0001 opt: 2147483646 (0x7ffffffe)
            uba: 0x00c0064b.00e5.0a scn: 0x0000.0022dcb1
Version: 0x01
  FREE BLOCK POOL::
    uba: 0x00000000.00e5.09 ext: 0x2  spc: 0x1a28
    uba: 0x00000000.00e5.35 ext: 0x2  spc: 0x28c
    uba: 0x00000000.00e5.2c ext: 0x2  spc: 0xd62
    uba: 0x00000000.00db.01 ext: 0x2  spc: 0x1f84
    uba: 0x00000000.0000.00 ext: 0x0  spc: 0x0
  TRN TBL::

  index  state cflags  wrap#    uel         scn            dba            parent-xid    nub     stmt_num    cmt
  ------------------------------------------------------------------------------------------------
   0x00    9    0x00  0x0c2c  0x0016  0x0000.0022ddde  0x00c0064b  0x0000.000.00000000  0x00000001   0x00000000  1743028530
   0x01    9    0x00  0x0ba5  0x0010  0x0000.0022dd75  0x00c0064a  0x0000.000.00000000  0x00000001   0x00000000  1743028530
   0x02    9    0x00  0x0c35  0x0013  0x0000.0022dda5  0x00c0064a  0x0000.000.00000000  0x00000001   0x00000000  1743028530
   0x03    9    0x00  0x0c3a  0x0012  0x0000.0022dcc1  0x00c00644  0x0000.000.00000000  0x00000001   0x00000000  1743028530
   0x04    9    0x00  0x0c39  0x0005  0x0000.0022dd2b  0x00c0064a  0x0000.000.00000000  0x00000001   0x00000000  1743028530
   0x05    9    0x00  0x0bd4  0x001a  0x0000.0022dd35  0x00c0064a  0x0000.000.00000000  0x00000001   0x00000000  1743028530
   0x06    9    0x00  0x0bf9  0x0017  0x0000.0022dcd8  0x00c0064a  0x0000.000.00000000  0x00000001   0x00000000  1743028530
   0x07    9    0x00  0x0c3b  0x0000  0x0000.0022ddcf  0x00c0064b  0x0000.000.00000000  0x00000001   0x00000000  1743028530
   0x08    9    0x00  0x0bfc  0x000e  0x0000.0022dda0  0x00c0064a  0x0000.000.00000000  0x00000001   0x00000000  1743028530
   0x09    9    0x00  0x0c39  0x0011  0x0000.0022dd53  0x00c0064a  0x0000.000.00000000  0x00000001   0x00000000  1743028530
   0x0a    9    0x00  0x0bf9  0x0004  0x0000.0022dd28  0x00c0064a  0x0000.000.00000000  0x00000001   0x00000000  1743028530
   0x0b    9    0x00  0x0c14  0x0001  0x0000.0022dd71  0x00c0064a  0x0000.000.00000000  0x00000001   0x00000000  1743028530
   0x0c    9    0x00  0x0c1b  0x0009  0x0000.0022dd45  0x00c0064a  0x0000.000.00000000  0x00000001   0x00000000  1743028530
   0x0d    9    0x00  0x0c39  0x0003  0x0000.0022dcb9  0x00c00644  0x0000.000.00000000  0x00000001   0x00000000  1743028530
   0x0e    9    0x00  0x0b9c  0x0002  0x0000.0022dda2  0x00c0064a  0x0000.000.00000000  0x00000001   0x00000000  1743028530
   0x0f    9    0x00  0x0c29  0x0007  0x0000.0022ddc5  0x00c0064b  0x0000.000.00000000  0x00000001   0x00000000  1743028530
   0x10    9    0x00  0x0be2  0x0021  0x0000.0022dd7d  0x00c0064a  0x0000.000.00000000  0x00000001   0x00000000  1743028530
   0x11    9    0x00  0x0bb8  0x000b  0x0000.0022dd5d  0x00c0064a  0x0000.000.00000000  0x00000001   0x00000000  1743028530
   0x12    9    0x00  0x0c35  0x001e  0x0000.0022dcc4  0x00c0064a  0x0000.000.00000000  0x00000001   0x00000000  1743028530
   0x13    9    0x00  0x0c17  0x0015  0x0000.0022ddac  0x00c0064b  0x0000.000.00000000  0x00000001   0x00000000  1743028530
   0x14    9    0x00  0x0bf6  0x001b  0x0000.0022dd93  0x00c0064a  0x0000.000.00000000  0x00000001   0x00000000  1743028530
   0x15    9    0x00  0x0b9d  0x000f  0x0000.0022ddb1  0x00c0064b  0x0000.000.00000000  0x00000001   0x00000000  1743028530
   0x16    9    0x00  0x0c3a  0x0018  0x0000.0022de64  0x00c0064b  0x0000.000.00000000  0x00000001   0x00000000  1743028830
   0x17    9    0x00  0x0c38  0x001d  0x0000.0022dce6  0x00c0064a  0x0000.000.00000000  0x00000001   0x00000000  1743028530
   0x18    9    0x00  0x0bbd  0x0020  0x0000.0022df48  0x00c0064b  0x0000.000.00000000  0x00000001   0x00000000  1743029431
   0x19    9    0x00  0x0b99  0x001c  0x0000.0022dcf0  0x00c0064a  0x0000.000.00000000  0x00000001   0x00000000  1743028530
   0x1a    9    0x00  0x0bb0  0x000c  0x0000.0022dd3a  0x00c0064a  0x0000.000.00000000  0x00000001   0x00000000  1743028530
   0x1b    9    0x00  0x0bd6  0x0008  0x0000.0022dd98  0x00c0064a  0x0000.000.00000000  0x00000001   0x00000000  1743028530
   0x1c    9    0x00  0x0c39  0x000a  0x0000.0022dd05  0x00c0064a  0x0000.000.00000000  0x00000001   0x00000000  1743028530
   0x1d    9    0x00  0x0b98  0x0019  0x0000.0022dcee  0x00c0064a  0x0000.000.00000000  0x00000001   0x00000000  1743028530
   0x1e    9    0x00  0x0c38  0x0006  0x0000.0022dcc9  0x00c0064a  0x0000.000.00000000  0x00000001   0x00000000  1743028530
   0x1f   10    0x80  0x0ba3  0x0002  0x0000.0022e15f  0x00c0064b  0x0000.000.00000000  0x00000001   0x00000000  0 ## 可以看到这一行的 state 与其他的不同,这个就是我们还未提交的事务,通过对比 Xid 和 Uba 也能看出来,我们需要修改的就是 state 和 cmt 的值,cmt 不能为 0 ,scn 表示这个事务开始时的 scn ,这个可以不用修改
   0x20    9    0x00  0x0c1d  0xffff  0x0000.0022e0ff  0x00c0064b  0x0000.000.00000000  0x00000001   0x00000000  1743030631
   0x21    9    0x00  0x0c19  0x0014  0x0000.0022dd8c  0x00c0064a  0x0000.000.00000000  0x00000001   0x00000000  1743028530
  EXT TRN CTL::
  usn: 7
  sp1:0x00000000 sp2:0x00000000 sp3:0x00000000 sp4:0x00000000
  sp5:0x00000000 sp6:0x7f9f00000000 sp7:0x00000000 sp8:0x00000000
  EXT TRN TBL::
  index  extflag    extHash    extSpare1   extSpare2
  ---------------------------------------------------
   0x00  0x00000000 0x00000000 0x00000000  0x00000000
   0x01  0x00000000 0x00000000 0x00000000  0x00000000
   0x02  0x00000000 0x00000000 0x00000000  0x00000000
   0x03  0x00000000 0x00000000 0x00000000  0x00000000
   0x04  0x00000000 0x00000000 0x00000000  0x00000000
   0x05  0x00000000 0x00000000 0x00000000  0x00000000
   0x06  0x00000000 0x00000000 0x00000000  0x00000000
   0x07  0x00000000 0x00000000 0x00000000  0x00000000
   0x08  0x00000000 0x00000000 0x00000000  0x00000000
   0x09  0x00000000 0x00000000 0x00000000  0x00000000
   0x0a  0x00000000 0x00000000 0x00000000  0x00000000
   0x0b  0x00000000 0x00000000 0x00000000  0x00000000
   0x0c  0x00000000 0x00000000 0x00000000  0x00000000
   0x0d  0x00000000 0x00000000 0x00000000  0x00000000
   0x0e  0x00000000 0x00000000 0x00000000  0x00000000
   0x0f  0x00000000 0x00000000 0x00000000  0x00000000
   0x10  0x00000000 0x00000000 0x00000000  0x00000000
   0x11  0x00000000 0x00000000 0x00000000  0x00000000
   0x12  0x00000000 0x00000000 0x00000000  0x00000000
   0x13  0x00000000 0x00000000 0x00000000  0x00000000
   0x14  0x00000000 0x00000000 0x00000000  0x00000000
   0x15  0x00000000 0x00000000 0x00000000  0x00000000
   0x16  0x00000000 0x00000000 0x00000000  0x00000000
   0x17  0x00000000 0x00000000 0x00000000  0x00000000
   0x18  0x00000000 0x00000000 0x00000000  0x00000000
   0x19  0x00000000 0x00000000 0x00000000  0x00000000
   0x1a  0x00000000 0x00000000 0x00000000  0x00000000
   0x1b  0x00000000 0x00000000 0x00000000  0x00000000
   0x1c  0x00000000 0x00000000 0x00000000  0x00000000
   0x1d  0x00000000 0x00000000 0x00000000  0x00000000
   0x1e  0x00000000 0x00000000 0x00000000  0x00000000
   0x1f  0x00000000 0x00000000 0x00000000  0x00000000
   0x20  0x00000000 0x00000000 0x00000000  0x00000000
   0x21  0x00000000 0x00000000 0x00000000  0x00000000
End dump data blocks tsn: 2 file#: 3 minblk 224 maxblk 224
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
set filename '/oradata/darkdb/undotbs01.dbf'

        FILENAME        /oradata/darkdb/undotbs01.dbf

set file 3
        FILE#           3

BBED>
set block 224
        BLOCK#          224

BBED>
set count 8192
        COUNT           8192

BBED>
BBED> show all
        FILE#           3
        BLOCK#          224
        OFFSET          0
        DBA             0x00c000e0 (12583136 3,224)
        FILENAME        /oradata/darkdb/undotbs01.dbf
        BIFILE          bifile.bbd
        LISTFILE        /home/oracle/filelist.bbed
        BLOCKSIZE       8192
        MODE            Edit
        EDIT            Unrecoverable
        IBASE           Dec
        OBASE           Dec
        WIDTH           80
        COUNT           8192
        LOGFILE         log.bbd
        SPOOL           No

BBED> set count 200
        COUNT           200

BBED> dump offset 0
 File: /oradata/darkdb/undotbs01.dbf (3)
 Block: 224              Offsets:    0 to  199           Dba:0x00c000e0
------------------------------------------------------------------------
 26a20000 e000c000 e9e12200 00000104 f6c30000 00000000 00000000 00000000
 00000000 04000000 0f010000 f00f0000 02000000 4b000000 80000000 4b06c000
 00000000 02000000 00000000 00000000 00000000 00000000 00000000 04000000
 00000000 00000000 00000040 e100c000 07000000 e800c000 08000000 0006c000
 80000000 000dc000 80000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000

 <32 bytes per line>

BBED> dump offset 8000
 File: /oradata/darkdb/undotbs01.dbf (3)
 Block: 224              Offsets: 8000 to 8191           Dba:0x00c000e0
------------------------------------------------------------------------
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00010000 4000c700 00004000 c7000001 8002c102 03c21129 0126e9e1

 <32 bytes per line>

BBED>

## 通过查看上一行 0x1e 的 scn(0022dcc9 -> 小端 c9dc2200) 来定位 0x1f 的位置,Dba 可能又重复的,然后修改 state 和 cmt 的值
## lscpu | grep -i endian
BBED> set count 200
        COUNT           200

BBED>
BBED>
BBED> set offset 0
        OFFSET          0

BBED> find /x c9dc22 
 File: /oradata/darkdb/undotbs01.dbf (3)
 Block: 224              Offsets: 7408 to 7607           Dba:0x00c000e0
------------------------------------------------------------------------
 c9dc2200 00000000 [09]000600 00000000 00000000 00000000 01000000 3281e467 ## state 9 ,上一行的 scn 距离下一行的 scn 40 字节 = 7408 + 4*10 
 a30b0000 4b06c000 [5fe12200] 00000000 [0a]800200 00000000 00000000 00000000 ## 这个就是 0x1f 对应的 scn,我们需要把 scn 的值修改为通过 bbed 修改之后的 datafile block 中的 scn 的值。BBED> modify /x 6fe122 offset 88。 0a 就是 state 10 对应的十六进制,可以看出 提交标志在 scn 的后面
 01000000 00000000 1d0c0000 4b06c000 [ffe02200] 00000000 [09]00ffff 00000000 ## 0022e1ff -> ffe12200 下一行的 scn
 00000000 00000000 01000000 6789e467 190c0000 4a06c000 8cdd2200 00000000
 09001400 00000000 00000000 00000000 01000000 3281e467 07000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000

 <32 bytes per line>

BBED>
## 找到对应的位置之后,需要将提交标志 oa -> 09 ,然后 scn 修改为 datafile block 中的 scn

BBED> set offset 7448
        OFFSET          7448

BBED> dump
 File: /oradata/darkdb/undotbs01.dbf (3)
 Block: 224              Offsets: 7448 to 7647           Dba:0x00c000e0
------------------------------------------------------------------------
 5fe12200 00000000 0a800200 00000000 00000000 00000000 01000000 00000000
 1d0c0000 4b06c000 ffe02200 00000000 0900ffff 00000000 00000000 00000000
 01000000 6789e467 190c0000 4a06c000 8cdd2200 00000000 09001400 00000000
 00000000 00000000 01000000 3281e467 07000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000

 <32 bytes per line>

BBED>
## 修改提交标志和 scn 的值
BBED> show offset 
        OFFSET          7448

BBED> modify /x 6fe122
 File: /oradata/darkdb/undotbs01.dbf (3)
 Block: 224              Offsets: 7448 to 7647           Dba:0x00c000e0
------------------------------------------------------------------------
 6fe12200 00000000 0a800200 00000000 00000000 00000000 01000000 00000000
 1d0c0000 4b06c000 ffe02200 00000000 0900ffff 00000000 00000000 00000000
 01000000 6789e467 190c0000 4a06c000 8cdd2200 00000000 09001400 00000000
 00000000 00000000 01000000 3281e467 07000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000

 <32 bytes per line>

BBED> modify /x 09 offset 7456
 File: /oradata/darkdb/undotbs01.dbf (3)
 Block: 224              Offsets: 7456 to 7655           Dba:0x00c000e0
------------------------------------------------------------------------
 09800200 00000000 00000000 00000000 01000000 00000000 1d0c0000 4b06c000
 ffe02200 00000000 0900ffff 00000000 00000000 00000000 01000000 6789e467
 190c0000 4a06c000 8cdd2200 00000000 09001400 00000000 00000000 00000000
 01000000 3281e467 07000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000

 <32 bytes per line>

BBED> set offset 7448
        OFFSET          7448

BBED> dump
 File: /oradata/darkdb/undotbs01.dbf (3)
 Block: 224              Offsets: 7448 to 7647           Dba:0x00c000e0
------------------------------------------------------------------------
 6fe12200 00000000 09800200 00000000 00000000 00000000 01000000 [00000000] ## cmt
 1d0c0000 4b06c000 [ffe02200] 00000000 0900ffff 00000000 00000000 00000000 ## 下一行的 scn
 01000000 [6789e467] 190c0000 4a06c000 8cdd2200 00000000 09001400 00000000 ## 下一行的 cmt ,scn 和 cmt 结尾距离 8*4=32 字节
 00000000 00000000 01000000 3281e467 07000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000

 <32 bytes per line>

BBED>
## 修改 cmt 为非零值,可以直接修改为下一行的 cmt 1743030631(67E4 8967 -> 6789 e467),挑一个不为零的值就行
# set offset 7448+32=7480
BBED> modify /x 6789e467 offset 7480
 File: /oradata/darkdb/undotbs01.dbf (3)
 Block: 224              Offsets: 7480 to 7679           Dba:0x00c000e0
------------------------------------------------------------------------
 6789e467 4b06c000 ffe02200 00000000 0900ffff 00000000 00000000 00000000
 01000000 6789e467 190c0000 4a06c000 8cdd2200 00000000 09001400 00000000
 00000000 00000000 01000000 3281e467 07000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000

 <32 bytes per line>

BBED> set offset 7448
        OFFSET          7448

BBED> dump
 File: /oradata/darkdb/undotbs01.dbf (3)
 Block: 224              Offsets: 7448 to 7647           Dba:0x00c000e0
------------------------------------------------------------------------
 6fe12200 00000000 09800200 00000000 00000000 00000000 01000000 00000000
 [6789e467] 4b06c000 ffe02200 00000000 0900ffff 00000000 00000000 00000000 ## 从这里看出来修改错了,位置应该是 7480 -4 
 01000000 6789e467 190c0000 4a06c000 8cdd2200 00000000 09001400 00000000
 00000000 00000000 01000000 3281e467 07000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000

 <32 bytes per line>

BBED>
## 将 offset 7480 的值还原,然后重新修改 offset 7476 的值
# modify /x 1d0c0000 offset 7480
# modify /x 6789e467 offset 7476

BBED> modify /x 1d0c0000 offset 7480
 File: /oradata/darkdb/undotbs01.dbf (3)
 Block: 224              Offsets: 7480 to 7679           Dba:0x00c000e0
------------------------------------------------------------------------
 1d0c0000 4b06c000 ffe02200 00000000 0900ffff 00000000 00000000 00000000
 01000000 6789e467 190c0000 4a06c000 8cdd2200 00000000 09001400 00000000
 00000000 00000000 01000000 3281e467 07000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000

 <32 bytes per line>

BBED> modify /x 6789e467 offset 7476
 File: /oradata/darkdb/undotbs01.dbf (3)
 Block: 224              Offsets: 7476 to 7675           Dba:0x00c000e0
------------------------------------------------------------------------
 6789e467 1d0c0000 4b06c000 ffe02200 00000000 0900ffff 00000000 00000000
 00000000 01000000 6789e467 190c0000 4a06c000 8cdd2200 00000000 09001400
 00000000 00000000 00000000 01000000 3281e467 07000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000

 <32 bytes per line>

BBED> set offset 7448
        OFFSET          7448

BBED> dump
 File: /oradata/darkdb/undotbs01.dbf (3)
 Block: 224              Offsets: 7448 to 7647           Dba:0x00c000e0
------------------------------------------------------------------------
 6fe12200 00000000 09800200 00000000 00000000 00000000 01000000 6789e467
 1d0c0000 4b06c000 ffe02200 00000000 0900ffff 00000000 00000000 00000000
 01000000 6789e467 190c0000 4a06c000 8cdd2200 00000000 09001400 00000000
 00000000 00000000 01000000 3281e467 07000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
 00000000 00000000

 <32 bytes per line>

查看测试表的数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
-- 在原始的 session2 中还是无法查看到未提交的数据,即便新登录的session也没法查看
select * from test_01;
ID | NAME
---------
1  | AA  
2  | BB  
3  | CC  
4  | DD  

-- 退出所有 session, session1 不提交直接退出之后重新连接 session 可以查看到原本 session1 中未提交的数据
WXJ@darkdb 2269,17520 SQL> select * from test_01;

        ID NAME
---------- --------------------
         1 FF
         2 FF
         3 CC
         4 DD

Elapsed: 00:00:00.00

可能是因为结果缓存?还是什么什么原因,本来准备重启实例试试,退出所有session之后重新连接的session就可以查看到未提交的数据了 😂

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
## 查看 alter 日志也没有什么动作,此时 2025-03-27 11:22
Thu Mar 27 06:20:59 2025
Warning: VKTM detected a time drift.
Time drifts can result in an unexpected behavior such as time-outs. Please check trace file for more details.
Thu Mar 27 06:25:53 2025
Starting background process SMCO
Thu Mar 27 06:25:53 2025
SMCO started with pid=20, OS id=3215
Thu Mar 27 07:14:08 2025
create table test_01 (id number, name varchar2(20))
Thu Mar 27 09:28:58 2025
ALTER SYSTEM: Flushing buffer cache
Thu Mar 27 09:29:18 2025
ALTER SYSTEM: Flushing buffer cache
Thu Mar 27 09:29:22 2025
ALTER SYSTEM: Flushing buffer cache
(END)

检查新生成的 trace 文件,也是有一个新的 mmon 进程,但是没有什么有用的信息,只是一些状态信息,和本次测试无关,查看mos 是一个 bug

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
ls -lrt
-rw-r-----  1 oracle oinstall      81 Mar 27 09:46 darkdb_ora_13110.trm
-rw-r-----  1 oracle oinstall   18432 Mar 27 09:46 darkdb_ora_13110.trc
-rw-r-----  1 oracle oinstall     807 Mar 27 11:22 darkdb_mmon_2879.trm
-rw-r-----  1 oracle oinstall    8302 Mar 27 11:22 darkdb_mmon_2879.trc
┌─[oracle@oracle11g]─[/u01/app/oracle/diag/rdbms/darkdb/darkdb/trace]
└──╼ $ wc -l darkdb_mmon_2879.trc
166 darkdb_mmon_2879.trc
┌─[oracle@oracle11g]─[/u01/app/oracle/diag/rdbms/darkdb/darkdb/trace]
└──╼ $ cat darkdb_mmon_2879.trc
Trace file /u01/app/oracle/diag/rdbms/darkdb/darkdb/trace/darkdb_mmon_2879.trc
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORACLE_HOME = /u01/app/oracle/product/11.2.0/db
System name:    Linux
Node name:      oracle11g
Release:        5.4.17-2102.201.3.el7uek.x86_64
Version:        #2 SMP Fri Apr 23 09:05:55 PDT 2021
Machine:        x86_64
Instance name: darkdb
Redo thread mounted by this instance: 1
Oracle process number: 15
Unix process pid: 2879, image: oracle@oracle11g (MMON)


*** 2025-03-27 06:20:23.727
*** SESSION ID:(2273.1) 2025-03-27 06:20:23.727
*** CLIENT ID:() 2025-03-27 06:20:23.727
*** SERVICE NAME:(SYS$BACKGROUND) 2025-03-27 06:20:23.727
*** MODULE NAME:() 2025-03-27 06:20:23.727
*** ACTION NAME:() 2025-03-27 06:20:23.727

minact-scn master-status: grec-scn:0x0000.0022da35 gmin-scn:0x0000.0022da35 gcalc-scn:0x0000.0022da35

*** 2025-03-27 06:20:27.193
***ket_aba_spawn: unable to schedule MMON Slave, error 100

*** 2025-03-27 06:25:23.639

*** 2025-03-27 10:16:56.859
minact-scn master-status: grec-scn:0x0000.002309ea gmin-scn:0x0000.0022e15f gcalc-scn:0x0000.002309ea
minact-scn master-status: grec-scn:0x0000.00230a27 gmin-scn:0x0000.0022e15f gcalc-scn:0x0000.00230a27

*** 2025-03-27 10:26:58.999
minact-scn master-status: grec-scn:0x0000.00230aaa gmin-scn:0x0000.0022e15f gcalc-scn:0x0000.00230aaa

*** 2025-03-27 10:32:01.274
minact-scn master-status: grec-scn:0x0000.00230b30 gmin-scn:0x0000.0022e15f gcalc-scn:0x0000.00230b30
minact-scn master-status: grec-scn:0x0000.00230b75 gmin-scn:0x0000.0022e15f gcalc-scn:0x0000.00230b75

*** 2025-03-27 10:42:05.819
minact-scn master-status: grec-scn:0x0000.00230bf2 gmin-scn:0x0000.0022e15f gcalc-scn:0x0000.00230bf2

*** 2025-03-27 10:47:06.721
minact-scn master-status: grec-scn:0x0000.00230c78 gmin-scn:0x0000.0022e15f gcalc-scn:0x0000.00230c78
minact-scn master-status: grec-scn:0x0000.00230cb6 gmin-scn:0x0000.0022e15f gcalc-scn:0x0000.00230cb6

*** 2025-03-27 10:57:10.409
minact-scn master-status: grec-scn:0x0000.00230d3b gmin-scn:0x0000.0022e15f gcalc-scn:0x0000.00230d3b

*** 2025-03-27 11:02:12.153
minact-scn master-status: grec-scn:0x0000.00230e0f gmin-scn:0x0000.0022e15f gcalc-scn:0x0000.00230e0f
minact-scn master-status: grec-scn:0x0000.00230e53 gmin-scn:0x0000.0022e15f gcalc-scn:0x0000.00230e53

*** 2025-03-27 11:12:16.124
minact-scn master-status: grec-scn:0x0000.00230f2e gmin-scn:0x0000.0022e15f gcalc-scn:0x0000.00230f2e

*** 2025-03-27 11:17:18.587
minact-scn master-status: grec-scn:0x0000.00230fb0 gmin-scn:0x0000.00230fb0 gcalc-scn:0x0000.00230fb0
minact-scn master-status: grec-scn:0x0000.00230fea gmin-scn:0x0000.00230fea gcalc-scn:0x0000.00230fea
┌─[oracle@oracle11g]─[/u01/app/oracle/diag/rdbms/darkdb/darkdb/trace]
└──╼ $

总结

主要 offset,修改之后记得 sum apply,如果修改 datafile block 没有效果,需要修改 undo block,可能需要刷新 cache 才能看见变化