加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码网 (https://www.900php.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

记一次Oracle数据恢复过程

发布时间:2016-11-27 21:38:41 所属栏目:大数据 来源:站长网
导读:事情的起因是,一个应用升级后,某一个操作导致一个表的几个列全部被更新为同一值(忍不住又要唠叨测试的重要性)。这样的错误居然出现在应用代码中,显然是重大的BUG。那个是罪魁祸首的SQL,UPDATE语句,其WHERE条件仅仅只有一个where 1=1。 系统的维护人

nbsp;
SQLgt; select tablespace_name,extent_id,file_id,block_id,blocksnbsp;nbsp;nbsp;
nbsp;nbsp;nbsp;nbsp; from dba_extents where owner='XXX'nbsp;nbsp;
nbsp;nbsp;nbsp;nbsp; and segment_name='TBL_FORM_FORM'nbsp;nbsp;
nbsp;nbsp;nbsp;nbsp; order by extent_id;nbsp;nbsp;nbsp;
nbsp;nbsp;
TABLESPACE_NAMEnbsp;nbsp; EXTENT_IDnbsp;nbsp;nbsp; FILE_IDnbsp;nbsp; BLOCK_IDnbsp; BLOCKSnbsp;nbsp;nbsp;
---------------- ---------- ---------- ---------- -------nbsp;nbsp;nbsp;
XXXXnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 0nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 16nbsp;nbsp;nbsp;nbsp;nbsp; 25481nbsp;nbsp;nbsp;nbsp; 128nbsp;nbsp;nbsp;
XXXXnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 1nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 17nbsp;nbsp;nbsp;nbsp;nbsp; 23433nbsp;nbsp;nbsp;nbsp; 128nbsp;nbsp;nbsp;
XXXXnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 2nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 18nbsp;nbsp;nbsp;nbsp;nbsp; 21385nbsp;nbsp;nbsp;nbsp; 128nbsp;nbsp;nbsp;
XXXXnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 3nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 19nbsp;nbsp;nbsp;nbsp;nbsp; 19977nbsp;nbsp;nbsp;nbsp; 128nbsp;nbsp;nbsp;
XXXXnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 4nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 16nbsp;nbsp;nbsp;nbsp;nbsp; 23945nbsp;nbsp;nbsp;nbsp; 128nbsp;nbsp;nbsp;
XXXXnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 5nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 17nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 8585nbsp;nbsp;nbsp;nbsp; 128nbsp;nbsp;nbsp;
XXXXnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 6nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 18nbsp;nbsp;nbsp;nbsp;nbsp; 14217nbsp;nbsp;nbsp;nbsp; 128nbsp;nbsp;nbsp;
XXXXnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 7nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 19nbsp;nbsp;nbsp;nbsp;nbsp; 18825nbsp;nbsp;nbsp;nbsp; 128nbsp;nbsp;nbsp;
nbsp;nbsp;
SQLgt; alter system dump datafile 16 block 25482;nbsp;nbsp;nbsp;
nbsp;nbsp;
System altered.nbsp;nbsp;nbsp;
nbsp;nbsp;
Start dump data blocks tsn: 4 file#: 16 minblk 25482 maxblk 25482nbsp;nbsp;nbsp;
buffer tsn: 4 rdba: 0x0400638a (16/25482)nbsp;nbsp;nbsp;
scn: 0x0000.88e21027 seq: 0x02 flg: 0x00 tail: 0x10270602nbsp;nbsp;nbsp;
frmt: 0x02 chkval: 0x0000 type: 0x06=trans datanbsp;nbsp;nbsp;
Block header dump:nbsp; 0x0400638anbsp;nbsp;nbsp;
nbsp;Object id on Block#63; Ynbsp;nbsp;nbsp;
nbsp;seg/obj: 0x40d8nbsp; csc: 0x00.88e20c40nbsp; itc: 2nbsp; flg: -nbsp; typ: 1 - DATAnbsp;nbsp;nbsp;
nbsp;nbsp;nbsp;nbsp; fsl: 0nbsp; fnx: 0x0 ver: 0x01nbsp;nbsp;nbsp;
nbsp;nbsp;
nbsp;Itlnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; Xidnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; Ubanbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; Flagnbsp; Lcknbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; Scn/Fscnbsp;nbsp;nbsp;
0x01nbsp;nbsp; 0x0010.011.0006ed74nbsp; 0x03c002a0.2f48.07nbsp; C---nbsp;nbsp;nbsp; 0nbsp; scn 0x0000.88d7af30nbsp;nbsp;nbsp;
0x02nbsp;nbsp; 0x0012.019.000027e0nbsp; 0x03c00ede.05de.42nbsp; C---nbsp;nbsp;nbsp; 0nbsp; scn 0x0000.44e2ee39nbsp;
SQLgt; select tablespace_name,extent_id,file_id,block_id,blocks
nbsp;nbsp;nbsp;nbsp; from dba_extents where owner='XXX'
nbsp;nbsp;nbsp;nbsp; and segment_name='TBL_FORM_FORM'
nbsp;nbsp;nbsp;nbsp; order by extent_id;
TABLESPACE_NAMEnbsp;nbsp; EXTENT_IDnbsp;nbsp;nbsp; FILE_IDnbsp;nbsp; BLOCK_IDnbsp; BLOCKS
---------------- ---------- ---------- ---------- -------
XXXXnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 0nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 16nbsp;nbsp;nbsp;nbsp;nbsp; 25481nbsp;nbsp;nbsp;nbsp; 128
XXXXnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 1nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 17nbsp;nbsp;nbsp;nbsp;nbsp; 23433nbsp;nbsp;nbsp;nbsp; 128
XXXXnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 2nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 18nbsp;nbsp;nbsp;nbsp;nbsp; 21385nbsp;nbsp;nbsp;nbsp; 128
XXXXnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 3nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 19nbsp;nbsp;nbsp;nbsp;nbsp; 19977nbsp;nbsp;nbsp;nbsp; 128
XXXXnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 4nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 16nbsp;nbsp;nbsp;nbsp;nbsp; 23945nbsp;nbsp;nbsp;nbsp; 128
XXXXnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 5nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 17nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 8585nbsp;nbsp;nbsp;nbsp; 128
XXXXnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 6nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 18nbsp;nbsp;nbsp;nbsp;nbsp; 14217nbsp;nbsp;nbsp;nbsp; 128
XXXXnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 7nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 19nbsp;nbsp;nbsp;nbsp;nbsp; 18825nbsp;nbsp;nbsp;nbsp; 128
SQLgt; alter system dump datafile 16 block 25482;
System altered.
Start dump data blocks tsn: 4 file#: 16 minblk 25482 maxblk 25482
buffer tsn: 4 rdba: 0x0400638a (16/25482)
scn: 0x0000.88e21027 seq: 0x02 flg: 0x00 tail: 0x10270602
frmt: 0x02 chkval: 0x0000 type: 0x06=trans data
Block header dump:nbsp; 0x0400638a
nbsp;Object id on Block#63; Y
nbsp;seg/obj: 0x40d8nbsp; csc: 0x00.88e20c40nbsp; itc: 2nbsp; flg: -nbsp; typ: 1 - DATA
nbsp;nbsp;nbsp;nbsp; fsl: 0nbsp; fnx: 0x0 ver: 0x01
nbsp;Itlnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; Xidnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; Ubanbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; Flagnbsp; Lcknbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; Scn/Fsc
0x01nbsp;nbsp; 0x0010.011.0006ed74nbsp; 0x03c002a0.2f48.07nbsp; C---nbsp;nbsp;nbsp; 0nbsp; scn 0x0000.88d7af30
0x02nbsp;nbsp; 0x0012.019.000027e0nbsp; 0x03c00ede.05de.42nbsp; C---nbsp;nbsp;nbsp; 0nbsp; scn 0x0000.44e2ee39
从上面的结果可以看到,数据块的ITL中,最新的事务其SCN为88d7af30,正处于最后一个归档日志的first_change#和last_change#之间,即88d25dcf和88dbd27e之间,难不成这个错误是今天早上才发生的?于是我挖掘最后1个归档日志,结果发生错误的确是发生在早上,也就是我开始进行恢复操作之前半个小时。

既然错误并没有发生太久,同时这个系统也允许一定的数据丢失,那就使用flashback query,得到UPDATE操作之前的数据即可。

(编辑:源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读