8.6.1 バージョンアップ前に実施すること
HADBサーバをバージョンアップする前に実施することを説明します。
- 重要
-
HADBサーバをバージョンアップする前に,環境変数ADBLANGおよびADBCLTLANGの指定値を変更しないでください。変更した場合,HADBサーバを正しくバージョンアップできないおそれがあります。
環境変数LANGについては,次に示すように言語コードおよび国名コードの変更はできます。
-
ja_JP.UTF-8からen_US.UTF-8への変更
-
en_US.UTF-8からja_JP.UTF-8への変更
コードセットの変更(文字コード種別の変更)はできません。
なお,環境変数LANGの指定値を変更した場合,HADBクライアントの環境変数LANGの指定値も変更する必要があります。
-
- 〈この項の構成〉
(1) ディクショナリ用DBエリアおよびシステム表用DBエリアの容量を確認する
HADBサーバをバージョンアップすると,ディクショナリ用DBエリアおよびシステム表用DBエリアの容量が増加することがあります。
そのため,DBエリアごとに,次の2点を確認してください。
-
バージョンアップ時に増加するDBエリアの容量
-
DBエリアを構成するDBエリアファイルが格納されているディスクの空き容量
確認した結果を比較して,DBエリアの容量が増加しても問題ないことを確認してください。それぞれの確認方法を次に示します。
- ■バージョンアップ時に増加するDBエリアの容量を確認する方法
-
ディクショナリ用DBエリアの容量については,「5.11 ディクショナリ用DBエリアの容量見積もり」を参照して,再見積もりしてください。
システム表用DBエリアの容量については,「5.12 システム表用DBエリアの容量見積もり」を参照して,再見積もりしてください。
- ■DBエリアを構成するDBエリアファイルが格納されているディスクの空き容量を確認する方法
-
次のどちらかの方法で,DBエリアファイルが格納されているディスクの空き容量を確認してください。
- DBエリアファイルがレギュラーファイルの場合
-
OSのdfコマンドを実行して,DBエリアファイルが格納されているディスクの空き容量を確認してください。実行例を次に示します。
実行例1(ディクショナリ用DBエリアファイルの場合)
df $DBDIR/ADBDIC
実行例2(システム表用DBエリアファイルの場合)
df $DBDIR/ADBSTBL
dfコマンドに指定したファイルが格納されているディスクの空き容量が,キロバイト単位で表示されます。
- DBエリアファイルがブロックスペシャルファイルの場合,またはクラウドストレージ機能を使用している場合
-
adbdbstatusコマンドを実行して,「DBエリアのサマリ情報」を出力してください。adbdbstatusコマンドについては,マニュアルHADB コマンドリファレンスのadbdbstatus(データベースの状態解析)を参照してください。実行例を次に示します。
実行例1(ディクショナリ用DBエリアの場合)
adbdbstatus -c dbarea -n ADBDIC -S K
実行例2(システム表用DBエリアの場合)
adbdbstatus -c dbarea -n ADBSTBL -S K
「DBエリアのサマリ情報」に出力される項目のうち,次の2つの項目を確認してください。
-
KB_Total_segments
-
KB_Used_segments
確認した値を基に,次に示す計算式でディスクの空き容量を求めてください。
計算式(単位:キロバイト)
-
確認した結果,DBエリアの容量増加によってディスクの空き容量が不足する場合は,「16.3.1 DBエリアファイルの容量増加が原因の場合」を参照して対処してください。
(2) メモリ所要量を確認する
HADBサーバをバージョンアップすると,HADBサーバのメモリ所要量が増加することがあります。「6.3 HADBサーバのメモリ所要量の見積もり」を参照して,メモリ所要量を再見積もりしてください。
(3) 環境変数を確認する
HADBサーバをバージョンアップすると,環境変数の変更が必要になることがあります。「8.4 環境変数の設定」を参照して,環境変数の変更が必要かどうかを確認してください。
(4) カーネルパラメタを確認する
HADBサーバをバージョンアップすると,カーネルパラメタの変更が必要になることがあります。「6.2 カーネルパラメタの見積もり」を参照して,カーネルパラメタの変更が必要かどうかを確認してください。
(5) サーバ定義を確認する
-
バージョン02-00のHADBサーバをバージョンアップする場合,サーバ定義adb_log_usrfile_numオペランドの指定値を確認してください。adb_log_usrfile_numオペランドに1を指定している場合は,HADBサーバが正常終了しているときに2以上に変更してください。そのあとで,adbstartコマンドでHADBサーバを開始し,adbstopコマンドで正常終了してください。
-
バージョン04-03以前のHADBサーバからバージョンアップする場合,サーバ定義adb_sys_memory_limitオペランドには次の計算式を満たす値を指定してください。次の計算式を満たさない値を指定すると,HADBサーバのバージョンアップに失敗します。その際,KFAA40002-Eメッセージが出力されます。
サーバ定義adb_sys_memory_limitオペランドの指定値 ≦ カーネルパラメタvm.nr_hugepages × HugePagesの1ページ当たりのページサイズ
(6) 追加される予約語を確認する
HADBサーバをバージョンアップすると,予約語が追加されることがあります。
追加される予約語の一覧を次の表に示します。
HADBサーバのバージョン |
追加される予約語 |
---|---|
02-01 |
CURRENT_USER_IS_DBA |
03-00 |
MILLISECOND,MILLISECONDS,NANOSECOND,NANOSECONDS,PICOSECOND,PICOSECONDS |
予約語を表や列の名称としてSQL文中に指定できません。追加される予約語と同じ文字列をSQL文中で指定している場合,HADBサーバのバージョンアップ後にSQL文がエラーとなります。
そのため,追加される予約語と同じ文字列を,SQL文中で指定していないかどうかを確認してください。指定している場合は,予約語と同じ文字列を二重引用符(")で囲んでください。詳細については,マニュアルHADB SQLリファレンスの基本項目の予約語を参照してください。
(7) スキーマの数を確認する
バージョン02-00のHADBサーバで作成したデータベースに,HADBユーザが定義したスキーマが1つもない状態でHADBサーバをバージョンアップしようとすると,バージョンアップに失敗します。そのため,HADBユーザが定義したスキーマが1つ以上あることを確認してください。
また,バージョン02-00のHADBサーバで作成したデータベースに,HADBユーザが定義したスキーマの数が30,001以上ある状態でHADBサーバをバージョンアップしようとすると,バージョンアップに失敗します。そのため,DROP SCHEMA文で不要なスキーマを削除して,スキーマの数を30,000以下にしておいてください。
(8) スキーマ名を確認する
バージョン02-00のHADBサーバからバージョンアップした場合,ディクショナリ表(実表)のSQL_SCHEMATA表に格納されているスキーマ名を基に,HADBユーザが作成されます。作成されるHADBユーザの認可識別子およびパスワードは,スキーマ名と同じになります。
バージョンアップ後のHADBサーバに接続するために,定義されているスキーマ名を確認してください。スキーマ名を確認するSQL文の指定例を次に示します。
- 指定例
-
SELECT "SCHEMA_NAME" FROM "MASTER"."SQL_SCHEMATA"
なお,HADBサーバのバージョンアップが完了したら,「8.6.3 バージョンアップ後に実施すること」の「(3) HADBユーザのパスワードと権限を見直す(バージョン02-00)」を参照して,必ずHADBユーザのパスワードと権限を見直してください。
(9) APおよびコマンドを停止する
HADBサーバをバージョンアップする前に,実行中のAPおよびコマンドがある場合は,すべて終了してください。
(10) 更新不可状態の実表がないことを確認する
HADBサーバをバージョンアップする前に,更新不可状態の実表がないことを確認してください。また,更新不可状態の実表がある場合は,HADBサーバをバージョンアップする前に,更新不可状態を解除してください。
実表が更新不可状態かどうかを確認する方法については,「10.9.2 実表の状態や使用量を確認したい場合」の「(1) 実表が更新不可状態かどうかを確認する場合」を参照してください。
実表の更新不可状態を解除する方法については,「16.8.1 実表が更新不可状態になった場合」を参照してください。
- 重要
-
実表の更新不可状態を解除しないでバージョンアップした場合,バージョンアップ後にコマンドを再実行するとエラーになります。中断したコマンドを再実行できないため,実表の更新不可状態は解除されません。このとき,KFAA50243-Eメッセージが出力されます。対処方法については,KFAA50243-Eメッセージで説明されている対策に従ってください。
なお,次のコマンドを中断して更新不可状態になった実表にインデクスが定義されている場合,KFAA50243-Eメッセージの対策を行うと,更新不可状態を解除する実表に定義されているすべてのインデクスが再作成されます。そのため,インデクスのデータ量によっては更新不可状態の解除に時間が掛かります。
-
adbimportコマンド
-
adbidxrebuildコマンド
-
(11) 更新行のカラム化機能を無効にする
「(14) データベースのバックアップを取得する」で,システムデータだけのバックアップを取得する場合は,このタイミングで更新行のカラム化機能を無効にしてください。
更新行のカラム化機能を無効にする手順を次に示します。
-
更新行のカラム化機能の状態を確認する
-dオプションを指定してadbcolumnizeコマンドを実行してください。
出力結果のSTATUS列にACTIVE(有効)が出力されている場合,手順2.に進んでください。
-
更新行のカラム化機能を無効にする
--stopオプションを指定してadbcolumnizeコマンドを実行してください。
更新行のカラム化機能については,「11.19 更新行のカラム化機能の運用(カラムストア表の検索性能の維持)」を参照してください。
- メモ
-
adbcolumnizeコマンドについては,マニュアルHADB コマンドリファレンスのadbcolumnize(更新行のカラム化機能の管理)を参照してください。
(12) HADBサーバを正常終了する
HADBサーバをバージョンアップする前に,adbstopコマンドでHADBサーバを正常終了してください。
すでにHADBサーバが終了している場合は,次に示す手順でHADBサーバが正常終了していることを確認してください。
-
adbls -d srvコマンドを実行する
出力項目STATUSに出力されるHADBサーバの状態が,"STOP"であることを確認してください。
"STOP"である場合は,さらに手順2.または手順3.のどちらかに進んでください。
-
サーバメッセージログファイルを確認する
サーバメッセージログファイル($ADBDIR/spool/adbmessageXX.log※)を開き,KFAA91154-Iメッセージに出力される終了モードが,"normally"であることを確認してください。
- 注※
-
XXは通番であり,01〜04のどれかになります。
-
syslogを確認する
syslogを開き,KFAA91154-Iメッセージに出力される終了モードが,"normally"であることを確認してください。
手順1.の確認結果が"STOP"であり,かつ手順2.または手順3.の確認結果が"normally"である場合は,HADBサーバは正常終了しています。
もし,HADBサーバが正常終了していない場合は,adbstartコマンドでHADBサーバを開始したあとで,adbstopコマンドで正常終了してください。
- [マルチノード機能]
-
マルチノード構成のHADBサーバが正常終了していない場合は,マルチノード構成のHADBサーバをいったん開始し,マルチノード構成のHADBサーバを正常終了させてください。このとき,HAモニタを停止させる必要はありません(monstopコマンドの実行は不要です)。
マルチノード構成のHADBサーバを開始して,正常終了させる方法については,「18.5.1 マルチノード構成のHADBサーバの開始方法」と「18.5.2 マルチノード構成のHADBサーバの終了方法」を参照してください。
(13) サーバディレクトリのバックアップを取得する
HADBサーバをバージョンアップする前に,サーバディレクトリのバックアップを取得してください。
HADBサーバが異常終了したまま,誤ってHADBサーバをバージョンアップしてしまうと,HADBサーバが開始できなくなります。そのため,サーバディレクトリのバックアップを取得しておいてください。
取得したバックアップは,HADBサーバのバージョンアップが完了したあとで削除します。
バックアップを取得する方法については,「10.3.1 バックアップの取得方法」の「(2) バックアップを取得する手順」を参照してください。
- [マルチノード機能]
-
マルチノード機能を使用している場合は,全ノードのHADBサーバでサーバディレクトリのバックアップを取得してください。
(14) データベースのバックアップを取得する
HADBサーバをバージョンアップする前に,必ずデータベースのフルバックアップを取得してください。フルバックアップを取得する方法については,「10.3.1 バックアップの取得方法」を参照してください。
取得したバックアップは,不要であればHADBサーバのバージョンアップが完了したあとで削除します。
- [マルチノード機能]
-
マルチノード機能を使用している場合は,「18.9.1 バックアップの取得方法」を参照して,バックアップを取得してください。
ただし,フルバックアップではなく,システムデータだけのバックアップでもよいケースがあります。システムデータだけのバックアップの場合,HADBサーバの管理情報など必要最低限のファイルだけをバックアップの対象とします(データ用DBエリアファイルはバックアップの対象としません)。
- ■システムデータだけのバックアップでもよいケース
-
HADBサーバをバージョンアップしたあとに,すぐにバージョンアップ前の状態に戻す場合は,システムデータだけのバックアップでもよいです。例えば,バージョンアップのテストを実施するために,いったんバージョンアップしたHADBサーバを,すぐに旧バージョンに戻す場合が該当します。
ただし,バージョンアップ後にデータベースを更新するような操作をした場合,旧バージョンに戻すことができなくなるため注意してください。そのため,バージョンアップ後は,次に示す操作以外は絶対にしないでください。
-
SELECT文,COMMIT文,またはROLLBACK文の実行
-
adblsコマンドの実行
adblsコマンド以外にも実行可能なコマンドがあります。実行可能なコマンドについては,マニュアルHADB コマンドリファレンスのコマンドの一覧にある表コマンドの一覧(システムデータだけのバックアップを使用したデータベースの回復)を参照してください。
バージョンアップ後に上記以外の操作をした場合,システムデータだけのバックアップを使用して旧バージョンに戻しても,データベースの整合性が取れません。そのため,HADBサーバが開始できなかったり,データベースが壊れたりすることがあります。
システムデータだけのバックアップを取得する場合は,「表10‒6 バックアップを取得する必要があるファイルの一覧」の項番1~6のファイルのバックアップを取得してください。
- [マルチノード機能]
-
システムデータだけのバックアップを取得する場合は,「表18‒11 バックアップを取得するファイルおよびディレクトリの一覧」の項番1~6のファイルのバックアップを取得してください。
-
- メモ
-
-
バックアップの取得方法は,フルバックアップも,システムデータだけのバックアップも同じ方法です。バックアップの取得対象が異なるだけです。
-
フルバックアップからのデータベースの回復方法も,システムデータだけのバックアップからのデータベースの回復方法も同じ方法になります。
-