Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >bbed批量修改asm的datafile脚本

bbed批量修改asm的datafile脚本

原创
作者头像
杨漆
修改于 2021-09-07 10:07:11
修改于 2021-09-07 10:07:11
5140
举报
文章被收录于专栏:TidbTidb

**导读**

> 作者:杨漆

> 16年关系型数据库管理,从oracle 9i 、10g、11g、12c到Mysql5.5、5.6、5.7、8.0 到TiDB获得3个OCP、2个OCM;运维路上不平坦,跌过不少坑、熬过许多夜。把工作笔记整理出来分享给大伙儿,希望帮到大家少走弯路、少熬夜。

需要修改的数据文件块特别多时,可以用我写的以下脚本为bbed提供批量修改数据

通过名字过滤出仅含datafile的文件 (此处仅以system文件举例)

ll /data/|grep system|awk '{print $9}' >datafile_name.txt

准备数据块偏移量

cat bbed_repair_data.sh

#!/bin/sh

rm -rf /home/oracle/116.txt

rm -rf /home/oracle/112.txt

rm -rf /home/oracle/140.txt

rm -rf /home/oracle/148.txt

rm -rf /home/oracle/484.txt

rm -rf /home/oracle/488.txt

rm -rf /home/oracle/492.txt

rm -rf /home/oracle/500.txt

rm -rf /home/oracle/504.txt

rm -rf /home/oracle/122.txt

rm -rf /home/oracle/120.txt

rm -rf /home/oracle/order_datafile_name.txt

rm -rf /home/oracle/rm_old_asm_file

cp /home/oracle/datafile_name.txt   /home/oracle/order_datafile_name.txt

cp  /home/oracle/datafile_name.txt /home/oracle/rm_old_asm_file

i=1

cat /home/oracle/datafile_name.txt|while read line

do

sed -i "s/^$line/$i  \/data\/$line/"  /home/oracle/order_datafile_name.txt

i=$[$i+1]

done

i=1

cat /home/oracle/datafile_name.txt|while read line

do

echo "set dba $i,1">>/home/oracle/112.txt

echo "m /x 88ed offset 112">>/home/oracle/112.txt

echo "Y">>/home/oracle/112.txt

echo "set offset +2">>/home/oracle/112.txt

echo "m /x b03a">>/home/oracle/112.txt

echo "sum apply">>/home/oracle/112.txt

i=$[$i+1]

done

i=1

cat /home/oracle/datafile_name.txt|while read line

do

echo "m /x 01000000 dba $i,1 offset 116">>/home/oracle/116.txt

echo "Y">>/home/oracle/116.txt

echo "sum apply">>/home/oracle/116.txt

i=$[$i+1]

done

i=1

cat /home/oracle/datafile_name.txt|while read line

do

echo "set dba $i,1">>/home/oracle/484.txt

echo "m /x dc2c offset 484">>/home/oracle/484.txt

echo "Y">>/home/oracle/484.txt

echo "set offset +2">>/home/oracle/484.txt

echo "m /x fef4">>/home/oracle/484.txt

echo "sum apply">>/home/oracle/484.txt

i=$[$i+1]

done

i=1

cat /home/oracle/datafile_name.txt|while read line

do

echo "set dba $i,1">>/home/oracle/488.txt

echo "m /x 002e offset 488">>/home/oracle/488.txt

echo "Y">>/home/oracle/488.txt

echo "sum apply">>/home/oracle/488.txt

i=$[$i+1]

done

i=1

cat /home/oracle/datafile_name.txt|while read line

do

echo "m /x 24e54f40 dba $i,1 offset 492">>/home/oracle/492.txt

echo "Y">>/home/oracle/492.txt

echo "sum apply">>/home/oracle/492.txt

i=$[$i+1]

done

i=1

cat /home/oracle/datafile_name.txt|while read line

do

echo "m /x 0f800300 dba $i,1 offset 500">>/home/oracle/500.txt

echo "Y">>/home/oracle/500.txt

echo "sum apply">>/home/oracle/500.txt

i=$[$i+1]

done

i=1

cat /home/oracle/datafile_name.txt|while read line

do

echo "set dba $i,1">>/home/oracle/504.txt

echo "m /x d247 offset 504">>/home/oracle/504.txt

echo "Y">>/home/oracle/504.txt

echo "set offset +2">>/home/oracle/504.txt

echo "m /x 0000">>/home/oracle/504.txt

echo "sum apply">>/home/oracle/504.txt

i=$[$i+1]

done

i=1

cat /home/oracle/datafile_name.txt|while read line

do

echo "m /x 67510400 dba $i,1 offset 148">>/home/oracle/148.txt

echo "Y">>/home/oracle/148.txt

echo "sum apply">>/home/oracle/148.txt

i=$[$i+1]

done

i=1

cat /home/oracle/datafile_name.txt|while read line

do

echo "m /x 68510400 dba $i,1 offset 140">>/home/oracle/140.txt

echo "Y">>/home/oracle/140.txt

echo "sum apply">>/home/oracle/140.txt

i=$[$i+1]

done

i=1

cat /home/oracle/datafile_name.txt|while read line

do

echo "m /x 00000000 dba $i,1 offset 120">>/home/oracle/120.txt

echo "Y">>/home/oracle/120.txt

echo "sum apply">>/home/oracle/120.txt

i=$[$i+1]

done

i=1

cat /home/oracle/datafile_name.txt|while read line

do

echo "m /x 00000000 dba $i,1 offset 122">>/home/oracle/122.txt

echo "Y">>/home/oracle/122.txt

echo "sum apply">>/home/oracle/122.txt

i=$[$i+1]

done

i=1

cat /home/oracle/rm_old_asm_file.txt|while read line

do

sed -i "s/^$line/rm -rf $line/" /home/oracle/rm_old_asm_file.txt

i=$[$i+1]

done

cat  /home/oracle/116.txt > repair.txt

cat  /home/oracle/112.txt >> repair.txt

cat  /home/oracle/140.txt >> repair.txt

cat  /home/oracle/148.txt >> repair.txt

cat  /home/oracle/484.txt >> repair.txt

cat  /home/oracle/488.txt >> repair.txt

cat  /home/oracle/492.txt >> repair.txt

cat  /home/oracle/500.txt >> repair.txt

cat  /home/oracle/504.txt >> repair.txt

cat  /home/oracle/122.txt >> repair.txt

cat  /home/oracle/120.txt >> repair.txt

最后登录bbed, 跑repair.txt里的内容既可完成数据文件块的批量修改

回传ASM前,到grid用户下asmcmd跑rm_old_asm_file.txt内容完成批量删除datafile,之后将bbed修复后的新datafile文件传过来既可

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
BBED修复Oracle 12C ASM文件方法
bbed很好的数据文件修复工具,解决二进制文件修改难题。在没有备份、灾难发生、恢复失效时挽救DB的终极武器。
杨漆
2021/08/11
9420
BBED修复Oracle 12C ASM文件方法
如何用BBED使Offline的数据文件Online
编辑手记:一个6T的数据库,使用ASM磁盘存储。在添加磁盘的过程中导致数据文件offline,但可悲的是,数据库没有备份,在发现问题的时候归档也已经被清除,此时此刻,作为DBA的你,会选择什么办法处理? 作者简介: 韩朝阳 超过10年的专业数据库运维管理服务经验,服务的产品主要包括Oracle Database,Oracle EBS,Oracle MiddleWare,Oracle Exadata。熟悉Oracle数据库高可用架构,擅长Oracle 数据库架构规划、优化、故障诊断及异常恢复。曾长期服务于Or
数据和云
2018/03/07
1.2K0
如何用BBED使Offline的数据文件Online
偷梁换柱 | 无备份情况下的数据恢复实践(二)
在数据恢复实践(一)中,我们了解到在 Windows 的11.2.0.1的环境中恢复过程比较顺利,那么接下来的测试,是我遇到更加复杂的情况:系统表空间保护两个不连续的系统文件;恢复过程中出现 ORA 错误及数据字典不匹配的情况。我借助了一些非常规的手段规避这些问题,达到数据拯救的目的。
数据和云01
2019/05/26
4720
Oracle数据块损坏的恢复实例
数据库有有效的RMAN备份,那么很简单,直接恢复损害数据块即可。 RMAN> blockrecover datafile 6 block 3893;
Alfred Zhao
2019/05/24
1.8K0
【DB笔试面试791】在Oracle中,BBED模拟修复坏块。
● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/
AiDBA宝典
2020/05/07
6040
Oracle 11g 编译使用BBED
11g中缺失几个相关文件,但我们实际可以从10g拷贝相关文件到11g对应目录下:
Alfred Zhao
2022/05/06
4780
在Oracle9i中如何自行编译BBED工具
[oracle@jumper oracle]$ cd $ORACLE_HOME/rdbms/lib [oracle@jumper lib]$ make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed
数据和云01
2018/09/10
5980
ORA-08103错误情景再现及解决
$ oerr ora 8103 08103, 00000, "object no longer exists" // *Cause:  The object has been deleted by another user since the operation //          began, or a prior incomplete recovery restored the database to //          a point in time during the deletion of the object. // *Action: Delete the object if this is the result of an incomplete //          recovery.
星哥玩云
2022/08/17
1K0
实战演练:如何用BBED恢复删除的数据
墨墨导读:本文来自墨天轮用户 肖杰 的投稿,介绍用BBED恢复删除数据的全过程。
数据和云
2021/03/09
7780
实战演练:如何用BBED恢复删除的数据
案例:ORA-00600[16703]比特币攻击
近期大量的客户数据库软件被注入恶意代码,导致数据库无法启动,报错ORA-00600: internal error code, arguments: [16703], [1403], [20],大致的原因和预防措施可参考下面文章:
数据和云
2022/02/25
1K0
Oracle 11G单机转单机Grid集群(ASM)
(单台机器)将11.2.0.4的单实例数据库由文件系统,迁移到ASM单实例的磁盘组中,并注册到集群管理。
Lucifer三思而后行
2021/08/17
1.3K0
创建ASM实例及ASM数据库
文件按分配单元AUs(allocation units)平衡分布在磁盘组的所有磁盘中,ASM使用索引技术来跟踪每个AUs的位置
Leshami
2018/08/07
1.6K0
1_oracle asm磁盘组异常_全库重构恢复
来自 “开源世界 ” ,链接:http://ym.baisou.ltd/post/592.html,如需转载,请注明出处,否则将追究法律责任。
PHP开发工程师
2021/05/21
5880
使用RMAN迁移文件系统数据库到ASM
在实际的工作过程中,由于ASM磁盘管理的便利性,因此很多时候需要将文件系统的数据库迁移到ASM,本文演示了如何将文件系统数据库迁移到ASM实例。
Leshami
2018/08/07
8740
Oracle数据块损坏篇之10231内部事件
实验:某个分区数据块损坏,不完全恢复此分区表数据 背景:数据库没有有效备份,某个分区中有数据块损坏。 要求:最大限度恢复此分区数据。 环境:RHEL 6.4 + Oracle 11.2.0.4
Alfred Zhao
2022/05/06
3990
Nginx 负载均衡的Cache缓存批量清理的操作记录
1)nginx.conf配置 [root@inner-lb01 ~]# cat /data/nginx/conf/nginx.conf user www; worker_processes 8; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_co
洗尽了浮华
2018/01/22
2K0
经典故障:四个雷,3*2*2*3种随机方法的特殊恢复案例
墨墨导读:恢复专家前辈给我们精心准备了个故障,埋了四个雷,整个恢复过程感觉像是过山车,整理分享至此,希望对大家有帮助。
数据和云
2020/06/24
6400
经典故障:四个雷,3*2*2*3种随机方法的特殊恢复案例
工作中用到的sh脚本(持续更新)
day=KaTeX parse error: Double superscript at position 19: …te -d '-0 day' '̲+%Y-%m-%d') ech…day" day1=KaTeX parse error: Double superscript at position 19: …te -d '-0 day' '̲+%Y') echo "***…day1"
shengjk1
2025/05/16
920
ASM无法启动的问题分析(二)(r7笔记第88天)
第一篇的内容可以参考。ASM无法启动的问题分析(一),有不少的朋友给了一些建议,我也糅合了进来。一并感谢。 当然重启服务发现CSSD服务是Online,但是ASM是无法启动。 [grid@testbiadmin]$ crs_stat -t Name Type Target State Host ------------------------------------------------------------ ora.DATA01.dg
jeanron100
2018/03/19
1.2K0
shell脚本 检查文件是否被修改
1.进行检测目录的添加,可以多个目录 2.添加定时任务,可以一分钟一次,有改动会输出改动情况 #!/bin/bash #2020-3-14 #监测文件是否被修改脚本 #监测目录 dir_file=(/etc) file_list=/usr/local/file_list.txt error_file=/usr/local/error_list.txt display_path() { for i in `ls` do if [[ -d $i ]];then             cd $i    
陈不成i
2021/06/23
2.4K0
推荐阅读
相关推荐
BBED修复Oracle 12C ASM文件方法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档