暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

oracle bbed 批量修改误删除数据

原创 四九年入国军 2024-12-25
145

1、模拟delete对象删除

2、查看误删除表的基本信息

col object_name for a20

col owner for a20

select object_id,object_name,owner from dba_objects

where object_name='TEST1' and owner='SCOTT';

set linesize 1000

col segment_name for a20

col segment_type for a10

col tablespace_name for a20

select segment_name,segment_type,tablespace_name,bytes,blocks,extents from dba_segments where segment_name='TEST1' and owner='SCOTT';

select segment_name,file_id,block_id,blocks from dba_extents where segment_name='TEST1' and owner='SCOTT';

3、查看误删除前数据块信息

cat finddatablock.sh

#!/bin/bash

. ~/.bash_profile

for ((i=936;i<=3455;i++))

do

objectid=`echo p /d dba 4,$i ktbbh.ktbbhsid.ktbbhod1 | bbed parfile=bbed.par | grep 'ktbbhod1'| awk '{print $5}'`

if [ "$objectid" = "87375" ];then

echo $i;

fi;

done

sh finddatablock.sh > finddatablock.out

4、开始修复

cat repair.sh

cat finddatablock.out | while read i

do

len=`echo p /d dba 4,$i offset 0 kdbt[0] | bbed parfile=bbed.par | grep 'kdbtnrow' | awk '{print $4}'`

if [ -n "$len" ]; then

for ((j=0;j<$len;j++))

do

offset=`echo p dba 4,$i *kdbr[$j] | bbed parfile=bbed.par | grep '^ub1*.*rowdata' | awk '{print $3}' | sed 's/@//g'`

echo "assign /x dba 4,$i offset $offset = 0x2c"

done

fi

echo "sum apply dba 4,$i"

done

sh repair.sh > repair.log

bbed parfile= bbed.par cmdfile= repair.log

--不清缓存看不到新数据

恢复成功

!!注意,恢复后的表需要立即做个备份,然后删除重建,否则会有莫名其妙的问题

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论