informix刪除chunk時的偏移量(offsize)的計算

最近在使用onspaces -d刪除chunk時遇到點小問題。數據庫

在一臺主機執行onstat -d後顯示的數據庫存儲空間以下ide

Dbspacesspa

address    number   flags    fchunk   nchunks  pgsize   flags    owner    name.net

700000030211028  1   0x60001    1        1        4096     N  B     informix rootdbsorm

70000006016a330  2   0x60001    2        1        4096     N  B     informix logdbsblog

70000006016ad80  3   0x60001    3        1        4096     N  B     informix phydbsget

70000006016b850  4   0x42001    4        1        4096     N TB     informix tmpdbs博客

70000006016c3f0  5   0x60001    5        13       4096     N  B     informix datadbsit

70000006016ce00  6   0x60001    6        1        4096     N  B     informix idxdbsform

 6 active, 2047 maximum

Chunks

address     chunk/dbs     offset     size       free  bpages flags pathname

7000000302111c0  1      1     1    64000      43073      PO-B- /informix/dbs/rootdbs

70000006016a4c8  2      2     1    512000     511947      PO-B- /informix/dbs/logdbs

70000006016b028  3      3     1    256000     255947      PO-B- /informix/dbs/phydbs

70000006016b9e8  4      4     1    256000     255797      PO-B- /informix/dbs/tmpdbs

70000006016c588  5      5     1    1024000    844994      PO-B- /informix/dbs/datadbs

700000060164028  6      6     1    128000     125727      PO-B- /informix/dbs/idxdbs

700000060164850  7      5     1    128000     127997      PO-B- /informix/dbs/datadbs1601

700000060164a40  8      5     1    128000     127997      PO-B- /informix/dbs/datadbs1602

如今我想要刪除datadbs空間上掛載的"datadbs1601 "和"datadbs1602 "兩個chunk,執行命令

#:/informix/dbs >onspaces -d datadbs -p /informix/dbs/datadbs1601 -o 1

WARNING:  Dropping a chunk.

Do you really want to continue? (y/n)y

Chunk not dropped.

ISAM error:  No such chunk


很疑惑,明明chunk是有的,爲何報chunk不存在,經過參考http://blog.csdn.net/sunxp/article/details/5823972 這篇博客中的最後一段發現,應該是-o 參數後面帶的偏移量寫錯了(但文章中並無寫明如何計算這個偏移量),onstat -d以後顯示的這個chunk的offset是1,爲何使用1做爲偏移量卻不行呢。想了想,"-o"這個參數的單位是K,而onstat -d中顯示的chunk的size和free的單位則是頁,那會不會offset顯示的也是以頁爲單位呢。若是是這樣,那實際的offset應該是1*4K(datadbs的pgsize)=4K,那onspaces命令中應該是"-o 4"

因而嘗試了一下,果真成功了

#:/informix/dbs >onspaces -d datadbs -p /informix/dbs/datadbs1601 -o 4    

WARNING:  Dropping a chunk.

Do you really want to continue? (y/n)y

Chunk successfully dropped.

** WARNING **  A level 0 archive for DBspace datadbs will need to be done

before '/informix/dbs/datadbs1601' can be reused (see Dynamic Server Administrator's manual).


說明:以上的案例中每一個chunk都是一個獨立的裸設備,當初掛載時都是從0偏移開始的,但後來由於一些數據庫空間掛了,從新初始化數據庫後,不知道當時的同事怎麼處理的,datadbs1601和datadbs1602在onstat -d命令中顯示的offset變成1了。對於其餘實際狀況,本文提供的參考方法不肯定有效。

相關文章
相關標籤/搜索