[20210901]cygwin下使用bbed.txt --//工作需要,测试在cygwin下使用bbed,主要是这样的方式可以使用bash shell编程,编写脚本比windows批处理方面不少. --//首先我的bbed安装在D:\tools\bbed目录下,windows下的bbed一般来自oracle 9i for windows的安装包,许多文章都有介绍如何移植. --//我的cygwin64安装在D:\tools\cygwin64目录. $ mount | grep /cygdrive/d D: on /cygdrive/d type ntfs (binary,posix=0,user,noumount,auto) $ cd /cygdrive/d/tools/bbed $ cat bbed1.bat @echo off bbed parfile=bbed.par cmdfile=cmd.par $ cat cmd.par set count 8192 set width 160 $ cat bbed.par blocksize=8192 listfile=d:\tools\bbed\filelist.txt ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mode=edit PASSWORD=blockedit --//我最担心的是无法访问listfile的文件列表. $ ./bbed1.bat BBED: Release 2.0.0.0.0 - Limited Production on Tue Aug 31 19:54:16 2021 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. ************* !!! For Oracle Internal Use only !!! *************** BBED> set count 8192 COUNT 8192 BBED> set width 160 WIDTH 160 BBED> info File# Name Size(blks) ----- ---- ---------- 1 D:\APP\ORACLE\ORADATA\TEST\SYSTEM01.DBF 0 2 D:\APP\ORACLE\ORADATA\TEST\PDBSEED\SYSTEM01.DBF 0 3 D:\APP\ORACLE\ORADATA\TEST\SYSAUX01.DBF 0 4 D:\APP\ORACLE\ORADATA\TEST\PDBSEED\SYSAUX01.DBF 0 5 D:\APP\ORACLE\ORADATA\TEST\UNDOTBS01.DBF 0 6 D:\APP\ORACLE\ORADATA\TEST\PDBSEED\UNDOTBS01.DBF 0 7 D:\APP\ORACLE\ORADATA\TEST\USERS01.DBF 0 8 D:\APP\ORACLE\ORADATA\TEST\TEST01P\SYSTEM01.DBF 0 9 D:\APP\ORACLE\ORADATA\TEST\TEST01P\SYSAUX01.DBF 0 10 D:\APP\ORACLE\ORADATA\TEST\TEST01P\UNDOTBS01.DBF 0 11 D:\APP\ORACLE\ORADATA\TEST\TEST01P\USERS01.DBF 0 28 D:\APP\ORACLE\ORADATA\TEST\TEST02P\SYSTEM01.DBF 0 29 D:\APP\ORACLE\ORADATA\TEST\TEST02P\SYSAUX01.DBF 0 30 D:\APP\ORACLE\ORADATA\TEST\TEST02P\UNDOTBS01.DBF 0 31 D:\APP\ORACLE\ORADATA\TEST\TEST02P\USERS01.DBF 0 36 D:\APP\ORACLE\ORADATA\TEST\TEST01P\LFREE05X.DBF 0 --//OK,显示文件列表没有问题.看看是否可以访问对应数据块. BBED> x /rncc dba 11,133 *kdbr[0] rowdata[66] @8162 ----------- flag@8162: 0x2c (KDRHFL, KDRHFF, KDRHFH) lock@8163: 0x01 cols@8164: 3 col 0[2] @8165: 10 col 1[10] @8168: ACCOUNTING col 2[8] @8179: NEW YORK --//注意:访问的块要+1.因为bbed for windows的版本无法识别10g以上的数据文件的OS头也就是第0块. --//OK. --//在/usr/local/bin目录下建立rlbbed文件. $ cd /usr/local/bin $ cat rlbbed cd /cygdrive/d/tools/bbed/ ./bbed1.bat --//注意:一定要执行cd /cygdrive/d/tools/bbed/ ,不然一些文件如bbed.par无法访问. $ chmod 750 rlbbed $ echo "x /rncc dba 11,133 *kdbr[0]" | rlbbed BBED: Release 2.0.0.0.0 - Limited Production on Tue Aug 31 20:08:41 2021 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. ************* !!! For Oracle Internal Use only !!! *************** BBED> set count 8192 COUNT 8192 BBED> set width 160 WIDTH 160 BBED> rowdata[66] @8162 ----------- flag@8162: 0x2c (KDRHFL, KDRHFF, KDRHFH) lock@8163: 0x01 cols@8164: 3 col 0[2] @8165: 10 col 1[10] @8168: ACCOUNTING col 2[8] @8179: NEW YORK --//OK,使用基本没有问题了. --//不过windows 的bbed好麻烦,它的输出是dos的文本格式多了1个\r字符.另外注意几点块要+1,访问文件头不对. --//测试一下我写的bash shell读取数据块的脚本: $ . fff.sh 11 133 133 22487 ncc 10|ACCOUNTING|NEW YORK 20|RESEARCH|DALLAS 30|SALES|CHICAGO 40|OPERATIONS|BOSTON $ . fff.sh 1 522 524 59 nnc | grep -i undo > aaa.txt --//好慢. $ cat aaa.txt 16|16|CREATE TABLE TS$("TS#" NUMBER NOT NULL,"NAME" VARCHAR2(30) NOT NULL,"OWNER#" NUMBER NOT NULL,"ONLINE$" NUMBER NOT NULL,"CONTENTS$" NUMBER NOT NULL,"UNDOFILE#" NUMBER,"UNDOBLOCK#" NUMBER,"BLOCKSIZE" NUMBER NOT NULL,"INC#" NUMBER NOT NULL,"SCNWRP" NUMBER,"SCNBAS" NUMBER,"DFLMINEXT" NUMBER NOT NULL,"DFLMAXEXT" NUMBER NOT NULL,"DFLINIT" NUMBER NOT NULL,"DFLINCR" NUMBER NOT NULL,"DFLMINLEN" NUMBER NOT NULL,"DFLEXTPCT" NUMBER NOT NULL,"DFLOGGING" NUMBER NOT NULL,"AFFSTRENGTH" NUMBER NOT NULL,"BITMAPPED" NUMBER NOT NULL,"PLUGGED" NUMBER NOT NULL,"DIRECTALLOWED" NUMBER NOT NULL,"FLAGS" NUMBER NOT NULL,"PITRSCNWRP" NUMBER,"PITRSCNBAS" NUMBER,"OWNERINSTANCE" VARCHAR2(30),"BACKUPOWNER" VARCHAR2(30),"GROUPNAME" VARCHAR2(30),"SPARE1" NUMBER,"SPARE2" NUMBER,"SPARE3" VARCHAR2(1000),"SPARE4" DATE) STORAGE ( OBJNO 16 TABNO 2) CLUSTER C_TS#(TS#) 15|15|CREATE TABLE UNDO$("US#" NUMBER NOT NULL,"NAME" VARCHAR2(30) NOT NULL,"USER#" NUMBER NOT NULL,"FILE#" NUMBER NOT NULL,"BLOCK#" NUMBER NOT NULL,"SCNBAS" NUMBER,"SCNWRP" NUMBER,"XACTSQN" NUMBER,"UNDOSQN" NUMBER,"INST#" NUMBER,"STATUS$" NUMBER NOT NULL,"TS#" NUMBER,"UGRP#" NUMBER,"KEEP" NUMBER,"OPTIMAL" NUMBER,"FLAGS" NUMBER,"SPARE1" NUMBER,"SPARE2" NUMBER,"SPARE3" NUMBER,"SPARE4" VARCHAR2(1000),"SPARE5" VARCHAR2(1000),"SPARE6" DATE) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE ( INITIAL 64K NEXT 1024K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 OBJNO 15 EXTENTS (FILE 1 BLOCK 224)) 34|34|CREATE UNIQUE INDEX I_UNDO1 ON UNDO$(US#) PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE ( INITIAL 64K NEXT 1024K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 OBJNO 34 EXTENTS (FILE 1 BLOCK 320)) 35|35|CREATE INDEX I_UNDO2 ON UNDO$(NAME) PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE ( INITIAL 64K NEXT 1024K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 OBJNO 35 EXTENTS (FILE 1 BLOCK 328)) --//fff.sh脚本如下,如果没有后面的tr -d "\r",输出的v_object_id="59\r",执行会报错. --//注意脚本里面的在windows下通过ctrl+q,ctrl+g生成,linux下通过ctrl+v,ctrl+g生成. #! /bin/bash -x # argv1=file_number argv2=begin_block argvs3=end_block argv4=data_object_id argv5=bbed /x format file_number=$1 begin_block=$2 end_block=$3 data_object_id=$4 ff="/r"${5} # create sed script. a=$5 len=$( echo ${#a}) seq $len | xargs -IQ expr substr $a Q 1 | grep -n '[nt]' | sed 's+:.$+s/ $//+' >| ff.sed echo 's+^\*NULL\*$++g' >> ff.sed # scan1 begin_block to end_block,define Scope. /bin/rm scan1.txt 2>/dev/null #declare -i v_object_id while [ $begin_block -le $end_block ] do v_object_id=$(echo "p /d dba $file_number,$begin_block ktbbh.ktbbhsid.ktbbhod1" | rlbbed | grep ktbbhod1 |awk '{print $NF}'| tr -d "\r") if [ -z "$v_object_id" ] then v_object_id=0 fi #echo $v_object_id if (( $v_object_id == $data_object_id )) then echo $file_number,$begin_block >> scan1.txt fi begin_block=$[ begin_block + 1 ] done # scan2 kdbr and display record. cat scan1.txt |while read dba do #echo set dba $dba kdbr_size=$(echo map dba $dba | rlbbed | tr -d "\r" | grep "sb2 kdbr" | sed -e "s/^.*\[//;s/].*$//") #echo $kdbr_size begin=0 end=$[ kdbr_size -1 ] #echo $begin $end while [ $begin -le $end ] do kdbr_off=$(echo p dba $dba offset 0 kdbr | rlbbed | tr -d "\r" |grep "sb2 kdbr\[$begin\]" | awk '{print $NF'}) #echo $kdbr_off #if [ $kdbr_off -gt $kdbr_size ] if (( $kdbr_off > $kdbr_size )) then #echo -n "x $ff dba $dba *kdbr[$begin]" | rlbbed | tr -d "\r" | grep "^col " | cut -c20- | sed -f ff.sed | paste -sd'|' #echo -n "x $ff dba $dba *kdbr[$begin]" | rlbbed | tr -d "\r" | sed -n '/^col /,${s/^col .\{13\}: /^G/;p;}' | sed '/^BBED/,$d' |tr -d "\n\r" | sed "1s/^G//" |tr "^G" "\n"| sed -f ff.sed| paste -sd"|" echo -n "x $ff dba $dba *kdbr[$begin]" | rlbbed | tr -d "\r" | sed -n '/^col /,${s/^col .\{13\}: //;p;}' | sed '/^BBED/,$d' |tr -d "\n\r" | sed "1s///" |tr "" "\n"| sed -f ff.sed| paste -sd"|" fi begin=$[ begin + 1 ] done done
[20210901]cygwin下使用bbed.txt
来源:这里教程网
时间:2026-03-03 16:53:07
作者:
编辑推荐:
- [20210901]cygwin下使用bbed.txt03-03
- 【ORACLE21C】Oracle21c 只读目录说明03-03
- Oracle 性能优化-expdp备份速度优化0303-03
- 【ASK_ORACLE】导致ora-29740报错的可能原因和对应的解决方案03-03
- Oracle RAC NFS挂载文件系统03-03
- CRS-9520:The storage of Grid Infrastructure Management Repository is 93% full03-03
- 【TUNE_ORACLE】Oracle检查点(一)检查点(Checkpoint)概念介绍03-03
- ORACLE 11.2.0.4 RAC RMAN异机恢复之ORA-1500103-03
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 云集的社交电商转弯
云集的社交电商转弯
26-03-03 - 【ORACLE21C】Oracle21c 只读目录说明
【ORACLE21C】Oracle21c 只读目录说明
26-03-03 - Oracle RAC NFS挂载文件系统
Oracle RAC NFS挂载文件系统
26-03-03 - 新媒体运营周报怎么写?这样做自媒体数据分析,老板一定夸你!
新媒体运营周报怎么写?这样做自媒体数据分析,老板一定夸你!
26-03-03 - rac环境中数据文件权限不对导致的ORA-600和数据库hang
rac环境中数据文件权限不对导致的ORA-600和数据库hang
26-03-03 - 自媒体运营报告怎么写?周报月报撰写方法
自媒体运营报告怎么写?周报月报撰写方法
26-03-03 - 新媒体运营数据分析工具有哪些?
新媒体运营数据分析工具有哪些?
26-03-03 - 【DATAGUARD】Oracle Dataguard体系架构详解
【DATAGUARD】Oracle Dataguard体系架构详解
26-03-03 - 新媒体运营数据分析必备工具,提升技能一定要学!
新媒体运营数据分析必备工具,提升技能一定要学!
26-03-03 - 家装行业为什么开发小程序?设计装修类小程序怎么做?
家装行业为什么开发小程序?设计装修类小程序怎么做?
26-03-03
