[20231021]生成bbed的执行脚本.txt

[20231021]生成bbed的执行脚本.txt

--//尝试使用bbed 恢复rename IDL_UB1$的情况,前面的准备分析时间很长,恢复很容易。但是每次做修复数据块的一致性时,我总是还要
--//查询我以前写的文档,特别浪费时间记不住一些细节。实际上主要写计算公式上,我想既然已经给出提示信息。通过外部命令计算很
--//容易生成bbed的执行脚本,自己尝试看看。

--//bbed执行verify后出现6110,6111错误,简单更正公式如下:
--//code 6110
--//avsp = dtl-used-fsc
--//code 6111
--//tosp = avsp+stb+fsc

--//code=6110的情况:
BBED> verify
DBVERIFY - Verification starting
FILE = /mnt/ramdisk/book/system01.dbf
BLOCK = 243

Block Checking: DBA = 4194547, Block Type = KTB-managed data block
data header at 0x8ec644
kdbchk: the amount of space used is not equal to block size
        used=7298 fsc=66 avsp=822 dtl=8120
Block 243 failed with check code 6110

--//avsp = dtl-used-fsc
--//avsp= 8120-7298-66 = 756

BBED> assign kdbh.kdbhavsp=756
sb2 kdbhavsp                                @78       756

--//code=6111的情况:
BBED> verify
DBVERIFY - Verification starting
FILE = /mnt/ramdisk/book/system01.dbf
BLOCK = 243

Block Checking: DBA = 4194547, Block Type = KTB-managed data block
data header at 0x8ec644
kdbchk: space available on commit is incorrect
        tosp=890 fsc=66 stb=0 avsp=756
Block 243 failed with check code 6111

--//tosp = avsp+stb+fsc
--//tosp= 756+0+66  = 822
BBED> assign kdbh.kdbhtosp=822
sb2 kdbhtosp                                @80       822

--//在vim下定义如下,实际上写出来看上去很复杂,就是自己编辑过程再重现的过程。
noremap b10 Yp:.s/^\s*//:.s/ /;/g:s/$/;dtl-used-fsc/!!bc -lq:.s/^/--\/\/ assign kdbh.kdbhavsp = /
noremap b11 Yp:.s/^ *//:.s/ /;/g:s/$/;avsp+stb+fsc/!!bc -lq:.s/^/--\/\/ assign kdbh.kdbhtosp = /

--//简单解析一下:
--//noremap b10 Yp:.s/^\s*//:.s/ /;/g:s/$/;dtl-used-fsc/!!bc -lq:.s/^/--\/\/ assign kdbh.kdbhavsp = /
Yp                                     复制1行。
:.s/^\s*//                             删除开头的空行以及tab字符
:.s/ /;/g                              将全部空格替换为分号。used=7298 fsc=66 avsp=822 dtl=8120 变为 used=7298;fsc=66;avsp=822;dtl=8120
s/$/;dtl-used-fsc/                     在行尾增加如下;dtl-used-fsc。 used=7298;fsc=66;avsp=822;dtl=8120 变为 used=7298;fsc=66;avsp=822;dtl=8120;;dtl-used-fsc
!!bc -lq                               调用bc计算器,返回结果756.
:.s/^/--\/\/ assign kdbh.kdbhavsp = /  在行头加入--// assign kdbh.kdbhavsp = ;最终变为 --// assign kdbh.kdbhavsp = 756。

--//演示一下:
        used=7298 fsc=66 avsp=822 dtl=8120
--//快速的按 \b10,结果如下:
--// assign kdbh.kdbhavsp = 756

        tosp=890 fsc=66 stb=0 avsp=756
--//快速的按 \b11,结果如下:
--// assign kdbh.kdbhtosp = 822

--//我个人喜欢自己定义一个map.vim文件包括以上内容。在.vimrc文件中加入如下内容
source c:\vim\vim73\map.vim

--//这样生成的脚本,可以避免每次手工计算的错误。