#garagekidztweetz

id:garage-kid@76whizkidz のライフログ・ブログ!

onstat -g ppf 等で得られる partnum の値から、対応する DBSPACE を照合する方法

スポンサーリンク

IBM Informix Dynamic Server に関する豆知識

Informix 11.5

Informix 11.5

partnum 値を 10 進変換して DBSPACE 番号と照合しようとすると
以下のような問題がある。

  • 問題点

partnum 値を 10 進変換して 7 桁以上の部分をDBSPACE番号として
照らし合わせるとDBSPACE番号21以上で値がずれていってしまう。

partnum		partnumの	partnumの
		10進表記 	10進表記/1048576
============= ============= =============
0x1400007 	20971527	20.00000668 
0x1400008 	20971528	20.00000763 
0x1400009 	20971529	20.00000858 
※以降ずれていってしまう。		
0x1500001 	22020097	21.00000095 
0x1500002 	22020098	21.00000191 
0x1500003 	22020099	21.00000286 
0x1500004 	22020100	21.00000381 

正確なpartnumの値から、DBSPACE番号を照合する方法を以下に示す。

  • 照合方法
(Step:1) partnum の値( 16 進数)を 10 進数に変換する。
(Step:2) 1048576 で除算した値を整数に丸める。
(Step:3) DBSPACE の番号と照合する。
※ partinum の 16 進数表記の値の 頭 2 桁を 10 進数表記に変換することと同義。
  • 以下、計算例
% onstat -g ppf

IBM Informix Dynamic Server Version 10.00.FC5W5   -- On-Line -- Up 9 days 03:24:16 -- 649216 Kbytes

Partition profiles
partnum		lkrqs	lkwts	dlks	touts	isrd	iswrt	isrwt	isdel	bfrd	bfwrt	seqsc	rhitratio
0xa		0	0	0	0	9041	0	0	0	18	0	0	67
...
0x2100001	0	0	0	0	0	0	0	0	0	0	0	0
0x2100002	32307	0	0	0	11234	0	50	0	27150	50	109	100
0x2100003	603	0	0	0	431	0	53	0	1167	53	0	98
0x2100004	352	0	0	0	54	0	53	0	527	53	0	98
...
    • 上記、partnum 0x2100001 の場合に対応する DBSPACE を調べる
      • (Step:1) 10 進数に変換する
0x2100001 -> 34603009 
      • (Step:2) 1048576 で除算、整数に丸める
34603009 -> 33.00000095 -> 33
      • (Step:3) (Step:2) で得た値をDBSPACE番号と照合する
% onstat -d

IBM Informix Dynamic Server Version 10.00.FC5W5   -- On-Line -- Up 9 days 03:48:58 -- 649216 Kbytes

Dbspaces
address		number	flags	fchunk	nchunks	pgsize	flags	owner	 name
12b9b3e78	1	0x60001	1	1	2048	N  B	informix rootdbs
12cedf848	2	0x42001	2	1	2048	N TB	informix tmpdbs01
...
12cee4b50	33	0x60001	50	1	2048	N  B	informix cdrdbs     <==
12cee4ce8	34	0x68001	51	2	2048	N SB	informix cdrsbs
 34 active, 2047 maximum

 "partnum: 0x2100001""dbspace: cdrdbs" となる