[20231021]生成bbed的執行指令碼.txt

lfree發表於2023-10-23

[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 <Leader>b10 Yp<ESC>:.s/^\s*//<ESC>:.s/ /;/g<CR><ESC>:s/$/;dtl-used-fsc/<CR><ESC>!!bc -lq<CR><ESC>:.s/^/--\/\/ assign kdbh.kdbhavsp = /<CR>
noremap <Leader>b11 Yp<ESC>:.s/^ *//<ESC>:.s/ /;/g<CR><ESC>:s/$/;avsp+stb+fsc/<CR><ESC>!!bc -lq<CR><ESC>:.s/^/--\/\/ assign kdbh.kdbhtosp = /<CR>

--//簡單解析一下:
--//noremap <Leader>b10 Yp<ESC>:.s/^\s*//<ESC>:.s/ /;/g<CR><ESC>:s/$/;dtl-used-fsc/<CR><ESC>!!bc -lq<CR><ESC>:.s/^/--\/\/ assign kdbh.kdbhavsp = /<CR>
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

--//這樣生成的指令碼,可以避免每次手工計算的錯誤。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2990588/,如需轉載,請註明出處,否則將追究法律責任。

相關文章