17.2.3 adbinitコマンドの初期設定オプションファイルの作成
adbinitコマンドでデータベースを初期設定し直す必要があるため,現状のDBエリアの構成を反映した初期設定オプションファイル(adbinit.optファイル)を次の手順で作成してください。
- メモ
-
-
現状のDBエリアの構成を反映した初期設定オプションファイルがある場合は,ここで説明する作業を実施する必要はありません。
-
ここで作成した初期設定オプションファイルは,後ほどの作業で使用します。
-
手順
次のすべての操作は,HADB管理者で実行してください。
-
初期設定オプションファイルの基となるファイルを作成する
echo "set adb_init_mst_blk_path = \"$(ls -l $DBDIR/ADBMST \ | awk '{print $NF}')\"" >adbinit.opt echo "set adb_init_wrk_blk_path = \"$(ls -l $DBDIR/ADBWRK \ | awk '{print $NF}')\"" >>adbinit.opt
上記のコマンドを実行すると,カレントディレクトリにadbinit.optファイル(初期設定オプションファイルの基となるファイル)が作成されます。
なお,$DBDIRの部分(下線部分)は,DBディレクトリのパスを指定してください。
-
adbdbstatusコマンドを実行する
adbdbstatusコマンドを実行して,データ用DBエリアなどを構成するDBエリアファイルの情報を抽出し,adbinit.optファイルに追加します。
adbdbstatus -d used | grep -E "^Used" | awk -F',' '{print $3, $9}' | awk '!a[$0]++' \ | sed -e '1i set adb_init_dbarea_initialize = Y' \ -e 's/"ADBDIC"/set adb_init_dic_blk_path =/g' \ -e 's/"ADBSTBL"/set adb_init_stbl_blk_path =/g' \ | sed -r 's/^"(.*)" "(.*)"/adbinitdbarea -n \\"\1\\" -i 0K,x -v "\2",\\/g' \ >>adbinit.opt
上記のコマンドを実行すると,adbinit.optファイルの内容は次のようになります。
<作成されるadbinit.optファイルの例>
set adb_init_mst_blk_path = "/dev/disk/by-id/wwn-0x60...93bc" set adb_init_wrk_blk_path = "/dev/disk/by-id/wwn-0x60...a67b" set adb_init_dbarea_initialize = Y set adb_init_dic_blk_path = "/dev/disk/by-id/wwn-0x60...e259" set adb_init_stbl_blk_path = "/dev/disk/by-id/wwn-0x60...311b" adbinitdbarea -n \"DBAREA1\" -i 0K,x -v "/dev/disk/by-id/wwn-0x60...0000",\ adbinitdbarea -n \"DBAREA1\" -i 0K,x -v "/dev/disk/by-id/wwn-0x60...0001",\ adbinitdbarea -n \"NEWAREA1\" -i 0K,x -v "/dev/disk/by-id/wwn-0x60...0400",\ adbinitdbarea -n \"NEWAREA1\" -i 0K,x -v "/dev/disk/by-id/wwn-0x60...0401",\ adbinitdbarea -n \"NEWAREA1\" -i 0K,x -v "/dev/disk/by-id/wwn-0x60...0402",\
-
adbinit.optファイルを修正する(その1)
adbinit.optファイルをエディタで開き,初期設定オプションの構文に合わせて内容を修正してください。初期設定オプションについては,マニュアルHADB コマンドリファレンスの初期設定オプションの形式を参照してください。
また,次のことを確認して修正してください。
-
次のオペランドにブロックスペシャルファイルが指定されていない場合は,次のオペランドを削除してください。
-
adb_init_wrk_blk_path
-
adb_init_mst_blk_path
-
adb_init_dic_blk_path
-
adb_init_stbl_blk_path
-
-
-vオプションにブロックスペシャルファイルが指定されていない場合は,次の修正をしてください。
-
-vオプションに指定されているDBエリアファイルがDBディレクトリ直下にある場合
<修正例>
adbinitdbarea -n \"ADBUTBL01\" -i 0K,x -v "$DBDIR/ADBUTBL01",\ ↓下記のように修正する。 adbinitdbarea -n \"ADBUTBL01\" -i 0K,1
$DBDIRの部分は,DBディレクトリのパスが表示されます。上記の例の場合,DBディレクトリの直下にDBエリアファイルADBUTBL01があります。
この場合,次の修正をしてください。
・-vオプション以降の指定を削除する。
・-iオプションに指定している作成ファイル数を1に変更する。
-
-vオプションに指定されているDBエリアファイルがDBディレクトリ直下にない場合
<修正例>
adbinitdbarea -n \"ADBUTBL01\" -i 0K,x -v "$DBDIR/AREAS/ADBUTBL01",\ ↓下記のように修正する。 adbinitdbarea -n \"ADBUTBL01\" -i 0K,1 -f \"AREAS/\"
$DBDIRの部分は,DBディレクトリのパスが表示されます。上記の例の場合,「DBディレクトリ/AREAS」下にDBエリアファイルADBUTBL01があります。
この場合,次の修正をしてください。
・-iオプションに指定している作成ファイル数を1に変更する。
・-vを-fに変更する。
・「"$DBDIR/AREAS/ADBUTBL01"」を「\"AREAS/\"」に変更する。
・末尾の「,\」を削除する。
-
-
-nオプションに指定しているDBエリア名の重複行がある場合,すべての重複行で次の修正をしてください。重複行がない場合は,その行だけ次の修正をしてください。
-
先頭行の-iオプションに指定しているファイル数を,重複行数と同じ数に変更してください。
-
2行目以降については,ブロックスペシャルファイルより前の記述を削除してください。
-
最終行の末尾の「,\」を削除してください。
-
<修正後のadbinit.optファイルの例>
set adb_init_mst_blk_path = "/dev/disk/by-id/wwn-0x60...93bc" set adb_init_wrk_blk_path = "/dev/disk/by-id/wwn-0x60...a67b" set adb_init_dbarea_initialize = Y set adb_init_dic_blk_path = "/dev/disk/by-id/wwn-0x60...e259" set adb_init_stbl_blk_path = "/dev/disk/by-id/wwn-0x60...311b" adbinitdbarea -n \"DBAREA1\" -i 0K,2 -v "/dev/disk/by-id/wwn-0x60...0000",\ "/dev/disk/by-id/wwn-0x60...0001" adbinitdbarea -n \"NEWAREA1\" -i 0K,3 -v "/dev/disk/by-id/wwn-0x60...0400",\ "/dev/disk/by-id/wwn-0x60...0401",\ "/dev/disk/by-id/wwn-0x60...0402"
-
-
adbinit.optファイルを修正する(その2)
データ用DBエリアファイルのシンボリックリンクをDBディレクトリ下のサブディレクトリに配置している場合,そのデータ用DBエリアを定義しているadbinitdbareaオペランドに,-fオプションを指定する必要があります。4.では,adbinitdbareaオペランドに-fオプションを指定する必要があるかどうかと,-fオプションに指定するパスを調査します。
なお,3.で-fオプションを指定したadbinitdbareaオペランドについては,4.の作業は不要です。
手順
- メモ
-
手順の各操作にある$DBDIRにはDBディレクトリ名を入力してください。また,実行結果にある$DBDIRにはDBディレクトリ名が表示されます。
-
DBディレクトリ直下のファイルの一覧を表示する
ls $DBDIR
上記のコマンドを実行すると,DBディレクトリ直下のファイルの一覧が表示されます。
<lsコマンドの実行結果の例>
ADBDIC ADBMST ADBSTBL ADBSYS ADBWORK ADBWRK AREAS DBAREA1 DBAREA1.00001 SPOOL
上記の実行結果に,3.の「<修正後のadbinit.optファイルの例>」に指定しているデータ用DBエリア名と同名のファイルがあるかどうかを確認してください。この例の場合,同名のファイルとしてDBAREA1はありますが,NEWAREA1はありません。したがって,データ用DBエリアファイルのシンボリックリンクDBAREA1はDBディレクトリ直下に配置されていますが,シンボリックリンクNEWAREA1はDBディレクトリ直下に配置されていません。シンボリックリンクNEWAREA1は,DBディレクトリ下のサブディレクトリに配置されています。
-
シンボリックリンクNEWAREA1の配置場所を調査する
findコマンドを実行して,a.の実行結果に表示されていないシンボリックリンクNEWAREA1が,DBディレクトリ内のどこに配置されているかを調査してください。
find $DBDIR -name NEWAREA1 2>/dev/null
上記のコマンドを実行すると,DBディレクトリ内に存在するファイル名がNEWAREA1であるファイルの一覧が表示されます。
<findコマンドの実行結果の例>
$DBDIR/AREAS/OLD/NEWAREA1 $DBDIR/AREAS/NEW/NEWAREA1
上記の実行結果のように,異なるパスの同名ファイルが複数表示された場合は,次の手順に進んでください。
パスが1つしか表示されない場合は,d.に進んでください。
-
$DBDIR/AREAS/OLD/NEWAREA1のリンク先を調査する
ls -lコマンドを実行して,b.の実行結果に表示された$DBDIR/AREAS/OLD/NEWAREA1のリンク先を表示してください。
ls -l $DBDIR/AREAS/OLD/NEWAREA1* | sed -e 's/.* -> //g'
<lsコマンドの実行結果の例>
/dev/disk/by-id/wwn-0x60...a000
上記の実行結果と,3.の「<修正後のadbinit.optファイルの例>」に指定しているデータ用DBエリアNEWAREA1の定義の-vオプションに指定しているブロックスペシャルファイルのパスを見比べてください。
この例の場合,上記の実行結果とブロックスペシャルファイルのパスが一致していないため,該当するファイルではありません。
-
$DBDIR/AREAS/NEW/NEWAREA1のリンク先を調査する
ls -lコマンドを実行して,b.の実行結果に表示された$DBDIR/AREAS/NEW/NEWAREA1のリンク先を表示してください。
ls -l $DBDIR/AREAS/NEW/NEWAREA1* | sed -e 's/.* -> //g'
<lsコマンドの実行結果の例>
/dev/disk/by-id/wwn-0x60...0400 /dev/disk/by-id/wwn-0x60...0401 /dev/disk/by-id/wwn-0x60...0402
上記の実行結果と,3.の「<修正後のadbinit.optファイルの例>」に指定しているデータ用DBエリアNEWAREA1の定義の-vオプションに指定しているブロックスペシャルファイルのパスを見比べてください。
この例の場合,上記の実行結果とブロックスペシャルファイルのパスが一致しています。したがって,$DBDIR/AREAS/NEW/NEWAREA1が,該当するファイルとなります。$DBDIR/AREAS/NEW/NEWAREA1の下線部分を,データ用DBエリアNEWAREA1のadbinitdbareaオペランドの-fオプションに指定してください。
<修正後のadbinit.optファイルの例>
set adb_init_mst_blk_path = "/dev/disk/by-id/wwn-0x60...93bc" set adb_init_wrk_blk_path = "/dev/disk/by-id/wwn-0x60...a67b" set adb_init_dbarea_initialize = Y set adb_init_dic_blk_path = "/dev/disk/by-id/wwn-0x60...e259" set adb_init_stbl_blk_path = "/dev/disk/by-id/wwn-0x60...311b" adbinitdbarea -n \"DBAREA1\" -i 0K,2 -v "/dev/disk/by-id/wwn-0x60...0000",\ "/dev/disk/by-id/wwn-0x60...0001" adbinitdbarea -n \"NEWAREA1\" -f \"AREAS/NEW/\" -i 0K,3 \ -v "/dev/disk/by-id/wwn-0x60...0400",\ "/dev/disk/by-id/wwn-0x60...0401",\ "/dev/disk/by-id/wwn-0x60...0402"
下線部分の-fオプションを追加します。
-
adbinit.optファイルを保存する
DBエリア暗号化機能を使用している場合は,次の「■DBエリア暗号化機能を使用している場合」の作業を実施してください。
DBエリア暗号化機能を使用していない場合は,「17.2.4 表およびインデクスの定義情報の取得」に進んでください。
- ■DBエリア暗号化機能を使用している場合
-
DBエリア暗号化機能を使用している場合,上記の手順を実施したあとにadbinit.optファイルをエディタで開いて,DBエリア暗号化機能に関するオペランドとオプションを次の手順で追加してください。
手順
-
暗号化対象のDBエリアを確認する
DBA権限を持っているHADBユーザで,「付録B.22 ディクショナリ表の検索」の「(41) 暗号化対象のDBエリアの一覧を表示する方法」で説明している作業を実施してください。暗号化対象のDBエリアの一覧が表示されます。
<実行結果の例>
DBAREA_ID DBAREA_TYPE DBAREA_NAME ------------ ----------- ------------------------------------------- 2 DICT ADBDIC 3 WORK ADBWRK 4 STBL ADBSTBL 11 DATA NEWAREA1 KFAA96404-I 4 rows were selected.
上記の実行結果から,DICT(ディクショナリ用DBエリア),WORK(作業表用DBエリア),STBL(システム表用DBエリア),DATA(データ用DBエリアNEWAREA1)が暗号化対象のDBエリアであることがわかります。
-
adbinit.optファイルを修正する
adbinit.optファイルに,DBエリア暗号化機能に関するオペランドとオプションを追加します。
<修正後のadbinit.optファイルの例>
set adb_init_dic_encrypt = Y ...[a] set adb_init_wrk_encrypt = Y ...[b] set adb_init_stbl_encrypt = Y ...[c] set adb_init_dmkey_path = /HADB/.crypto/adb_dmkey ...[d] set adb_init_mst_blk_path = "/dev/disk/by-id/wwn-0x60...93bc" set adb_init_wrk_blk_path = "/dev/disk/by-id/wwn-0x60...a67b" set adb_init_dbarea_initialize = Y set adb_init_dic_blk_path = "/dev/disk/by-id/wwn-0x60...e259" set adb_init_stbl_blk_path = "/dev/disk/by-id/wwn-0x60...311b" adbinitdbarea -n \"DBAREA1\" -i 0K,2 -v "/dev/disk/by-id/wwn-0x60...0000",\ "/dev/disk/by-id/wwn-0x60...0001" adbinitdbarea -e -n \"NEWAREA1\" -f \"AREAS/NEW/\" -i 0K,3\ ...[e] -v "/dev/disk/by-id/wwn-0x60...0400",\ "/dev/disk/by-id/wwn-0x60...0401",\ "/dev/disk/by-id/wwn-0x60...0402"
[説明]
-
ディクショナリ用DBエリアを暗号化するときに指定するオペランドを追加します。
-
作業表用DBエリアを暗号化するときに指定するオペランドを追加します。
-
システム表用DBエリアを暗号化するときに指定するオペランドを追加します。
-
HADB暗号鍵の出力先ファイル名を指定するオペランドを追加します。
-
データ用DBエリアNEWAREA1を暗号化するときに指定する-eオプション(下線部分)を追加します。
-
-
adbinit.optファイルを保存する
-