有客户通过delete误删了sys.seg$表的数据,重启数据库,发现数据库不能正常启动。
删除命令:delete from sys.seg$ t where ts#=2;
通过dump删除标识
tab 2, row 21, @0x151b
tl: 4 fb: -CHDFL-- lb: 0x2 cc: 0 cki: 21
tab 2, row 22, @0x14e9
tl: 4 fb: -CHDFL-- lb: 0x2 cc: 0 cki: 22
tab 2, row 23, @0x14b7
tl: 4 fb: -CHDFL-- lb: 0x2 cc: 0 cki: 23
对比正常时:
tab 2, row 21, @0x151b
tl: 50 fb: -CH-FL-- lb: 0x0 cc: 16 cki: 21
col 0: [ 2] c1 0b
col 1: [ 2] c1 09
col 2: [ 2] c1 02
col 3: [ 2] c1 11
col 4: [ 2] c1 03
col 5: [ 4] c3 04 1c 42
col 6: [ 2] c1 09
col 7: [ 1] 80
col 8: [ 1] 80
col 9: [ 1] 80
col 10: [ 1] 80
col 11: [ 1] 80
col 12: [ 1] 80
col 13: [ 1] 80
col 14: [ 2] c1 02
col 15: [ 5] c4 05 14 2c 08
tab 2, row 22, @0x14e9
tl: 50 fb: -CH-FL-- lb: 0x0 cc: 16 cki: 22
在bbed中查看:
正常数据:
flag@6355: 0x6c (KDRHFL, KDRHFF, KDRHFH, KDRHFC)
删除数据
rowdata[398] @5095
flag@5095: 0x7c (KDRHFL, KDRHFF, KDRHFD, KDRHFH, KDRHFC)
lock@5096: 0x02
cols@5097: 0
ckix@5098: 29
先验证是否有删除记录:
x /rnc *kdbr[0]
。。。。
x /rnc *kdbr[69]
跟普通表所在行不一样,存数据的是row 30,没有数据
BBED> x /rnc *kdbr[30]
rowdata[900] @5597
flag@5597: 0xac (KDRHFL, KDRHFF, KDRHFH, KDRHFK)
lock@5598: 0x00
cols@5599: 3
kref@5600: 1
hrid@5602:0x004000c7.1e
nrid@5608:0x004000c7.1e
col 0[2] @5616: 2
col 1[2] @5619: ??
col 2[3] @5622: .I
位置65,才是放数据的:
BBED> x /rnccntnnn *kdbr[65]
rowdata[348] @5045
flag@5045: 0x7c (KDRHFL, KDRHFF, KDRHFD, KDRHFH, KDRHFC)
lock@5046: 0x02
cols@5047: 0
ckix@5048: 30 《—-连接到30行
恢复:
assign /x dba 1, 199 offset 5445 = 0x6c
assign /x dba 1, 199 offset 5395 = 0x6c
assign /x dba 1, 199 offset 5345 = 0x6c
assign /x dba 1, 199 offset 5295 = 0x6c
assign /x dba 1, 199 offset 5245 = 0x6c
assign /x dba 1, 199 offset 5195 = 0x6c
assign /x dba 1, 199 offset 5145 = 0x6c
assign /x dba 1, 199 offset 5095 = 0x6c
assign /x dba 1, 199 offset 5045 = 0x6c
查看该cluseter表定义:
create table SYS.SEG$
(
file# NUMBER not null,
block# NUMBER not null,
type# NUMBER not null,
ts# NUMBER not null,
blocks NUMBER not null,
extents NUMBER not null,
iniexts NUMBER not null,
minexts NUMBER not null,
maxexts NUMBER not null,
extsize NUMBER not null,
extpct NUMBER not null,
user# NUMBER not null,
lists NUMBER,
groups NUMBER,
bitmapranges NUMBER not null,
cachehint NUMBER not null,
scanhint NUMBER not null,
hwmincr NUMBER not null,
spare1 NUMBER,
spare2 NUMBER
)
cluster C_FILE#_BLOCK# ();
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22967847/viewspace-3007144/ ,如需转载,请注明出处,否则将追究法律责任。