Hitachi

Hitachi Advanced Data Binder システム構築・運用ガイド


8.6.5 バージョンアップ時の注意事項

ここでは,HADBサーバをバージョンアップする場合の注意事項について説明します。

〈この項の構成〉

(1) コスト情報の再収集

バージョン04-03より前のHADBサーバで収集したコスト情報は,バージョン04-03以降のHADBサーバでは使用できません。そのため,04-03より前のバージョンから,04-03以降のバージョンにHADBサーバをバージョンアップした場合は,adbgetcstコマンドでコスト情報を収集し直してください。

(2) 値式と集合演算の結果

バージョン03-00より前のバージョンのHADBサーバをバージョンアップすると,次に示す値式と集合演算の結果のデータ型,データ長および結果の値が,バージョンアップ前とは変わります。バージョンアップの前後で,結果が変わる項目を次の2つの表に示します。

表8‒28 結果のデータ型とデータ長が変わる項目

項番

結果のデータ型とデータ長が変わる項目

説明

1

集合関数

PERCENTILE_CONT

結果のデータ型が,被集約引数のデータ型からDOUBLE PRECISION型に変わります。

2

MEDIAN

3

0バイトの定数

CHAR(0)からVARCHAR(1)の実長0のデータに変わります。

4

CASE

結果のデータ型が文字データの場合,結果のデータ型がVARCHAR型に変わります。

5

スカラ関数

COALESCE

結果のデータ型が文字データの場合,結果のデータ型がVARCHAR型に変わります。

6

DECODE

7

GREATEST

8

LEAST

9

NULLIF

10

CEIL

対象データがDECIMAL型の場合,結果のデータ型がDECIMAL(対象データの精度,対象データの位取り)から,DECIMAL(対象データの精度,0)に変わります。

11

FLOOR

12

ROUND

対象データがDECIMAL型(精度が38の場合を除く)の場合,結果のデータ型がDECIMAL(対象データの精度,対象データの位取り)から,DECIMAL(対象データの精度+1,対象データの位取り)に変わります。

13

集合演算

UNION

集合演算の結果,導出される列のデータ型が変わります。

各問合せ一次子の結果導出される列で対応する列のデータ型がすべてCHAR型であり,かつ最大長がすべて等しい場合は,結果のデータ型はCHAR型になります。それ以外の場合は,結果のデータ型はVARCHAR型になります。

14

UNION ALL

表8‒29 結果の値が変わる項目

項番

結果の値が変わる項目

説明

1

スカラ関数

CAST

変換後の長さが,結果のデータ長よりも大きい場合は,エラーとしないで小数部を切り捨てます(最近接偶数への丸め)。

2

CONVERT(数値書式の指定なし,DOUBLE PRECISION型から文字データへの変換)

3

SUBSTR

次の項目について,ナル値ではなく,実長0バイトのデータを返却します。

  • 結果の文字列の長さが0の場合

  • 抽出元に実長0バイト(文字)のデータを指定した場合

  • 抽出文字数が0の場合

  • 開始位置の絶対値が抽出元の文字数より大きい場合

次の項目について,エラーではなく,開始位置を1として扱います。

  • 開始位置に0を指定した場合

次の項目について,ナル値ではなく,抽出できるデータを返却します。

  • 抽出文字数に32,000を超える値を指定した場合

4

LEFT

5

RIGHT

6

TRIM

次の項目について,ナル値ではなく,実長0バイトのデータを返却します。

  • 対象データに実長0バイト(文字)のデータを指定した場合

  • 対象データに指定した文字列がすべて取り除かれた場合

7

LTRIM

8

RTRIM

(3) 以前のバージョンで定義したビュー表の検索結果

バージョン03-00より前のバージョンのHADBサーバで定義したビュー表に,次に示す項目が含まれる場合は,「(2) 値式と集合演算の結果」で示す内容に従って,結果のデータ型およびデータ長が求められます。

そのあとで,バージョン03-00より前のバージョンのHADBサーバで求めたデータ型およびデータ長となるように,スカラ関数CONVERTが実行されます。

対象の項目

(4) マルチノード機能を使用するシステムに変更する場合

バージョンアップ時にマルチノード機能を使用するシステムに変更する場合,バージョンアップとマルチノード機能を使用するシステムへの変更は一度にできません。バージョンアップ前に,サーバ定義にマルチノード機能のオペランドを指定すると,バージョンアップに失敗します(KFAA50038-Eメッセージが出力されます)。バージョンアップを実施したあとに,マルチノード機能を使用するシステムへの変更を実施してください。

KFAA50038-Eメッセージが出力された場合の対処方法については,「8.6.4 バージョンアップに失敗した場合の対処方法」の「(3) KFAA50038-Eメッセージが出力された場合」の「(c) 変数aa....aaがof using the multiple node facilityの場合」を参照してください。

(5) バージョンアップ時に行われるビュー表の再作成

バージョン05-10より前のHADBサーバを,バージョン05-10のHADBサーバにバージョンアップする場合,次の条件をすべて満たすビュー表は,バージョンアップ時に再作成されます。また,再作成に失敗したビュー表は無効化されます。

■バージョンアップ時に再作成されるビュー表の条件

次の条件をすべて満たすビュー表が再作成されます。

バージョンアップ時に行われるビュー表の再作成が成功した場合は,KFAA51311-Iメッセージが出力されます。

バージョンアップ時に行われるビュー表の再作成が失敗した場合は,KFAA51312-Wメッセージが出力されます。そして,再作成に失敗したビュー表が無効化されます。そのあとで,バージョンアップ処理が続行されます。

KFAA51312-Wメッセージが出力された場合は,バージョンアップが完了したあとで,KFAA51312-Wメッセージの直前に出力されたメッセージを確認してください。そして,ビュー表の再作成が失敗した原因を取り除いてください。そのあとで,ビュー表を再作成してください。詳細については,「11.2.8 ビュー表の無効化を解除する方法」の「(10) バージョンアップ時に行われるビュー表の再作成が失敗した場合」を参照してください。

バージョン05-10のHADBサーバにバージョンアップした場合に変更されるディクショナリ表とシステム表の一覧を,次の2つの表に示します。

表8‒30 バージョンアップ時に変更されるディクショナリ表とシステム表の一覧(その1)

項番

ディクショナリ表とシステム表の名称

バージョンアップする前のHADBサーバのバージョン

02-00

02-01

02-02

03-00

03-01

03-02

03-03

03-04

03-05

03-06

1

SQL_TABLES

2

SQL_COLUMNS

3

SQL_INDEXES

4

SQL_DIV_TABLE

5

SQL_DIV_INDEX

6

SQL_DBAREAS

7

SQL_SCHEMATA

8

SQL_VIEWS

9

SQL_VIEW_TABLE_USAGE

10

SQL_DEFINE_SOURCE

11

SQL_DEFINE_ENVIRONMENT

12

SQL_USERS

13

SQL_TABLE_CONSTRAINTS

14

SQL_INDEX_COLINF

15

SQL_KEY_COLUMN_USAGE

16

SQL_REFERENTIAL_CONSTRAINTS

17

SQL_TABLE_PRIVILEGES

18

SQL_AUDITS

19

STATUS_TABLES

20

STATUS_INDEXES

21

STATUS_CHUNKS

22

STATUS_SYNONYM_DICTIONARIES

23

STATUS_COLUMNS

(凡例)

○:ディクショナリ表やシステム表をバージョンアップ時に変更します。

-:ディクショナリ表やシステム表をバージョンアップ時に変更しません。

表8‒31 バージョンアップ時に変更されるディクショナリ表とシステム表の一覧(その2)

項番

ディクショナリ表とシステム表の名称

バージョンアップする前のHADBサーバのバージョ

04-00

04-01,04-02

04-03,05-00,05-01,

05-02,05-03

05-04,05-05

05-06,05-07,05-08,05-09

1

SQL_TABLES

2

SQL_COLUMNS

3

SQL_INDEXES

4

SQL_DIV_TABLE

5

SQL_DIV_INDEX

6

SQL_DBAREAS

7

SQL_SCHEMATA

8

SQL_VIEWS

9

SQL_VIEW_TABLE_USAGE

10

SQL_DEFINE_SOURCE

11

SQL_DEFINE_ENVIRONMENT

12

SQL_USERS

13

SQL_TABLE_CONSTRAINTS

14

SQL_INDEX_COLINF

15

SQL_KEY_COLUMN_USAGE

16

SQL_REFERENTIAL_CONSTRAINTS

17

SQL_TABLE_PRIVILEGES

18

SQL_AUDITS

19

STATUS_TABLES

20

STATUS_INDEXES

21

STATUS_CHUNKS

22

STATUS_SYNONYM_DICTIONARIES

23

STATUS_COLUMNS

(凡例)

○:ディクショナリ表やシステム表をバージョンアップ時に変更します。

-:ディクショナリ表やシステム表をバージョンアップ時に変更しません。

(6) 再作成できない可能性があるビュー表の確認

バージョン05-00より前のHADBサーバで定義したビュー表が,「■ビュー表を再作成できない条件」に示すすべての条件に該当する場合,そのビュー表はALTER VIEW文で再作成できないことがあります。

■ビュー表を再作成できない条件
  1. CREATE VIEW文中に導出表を指定している

  2. 条件1.の導出表に導出列リストを指定していない

  3. 条件1.の導出表の導出問合せの選択式に,次の各指定をそれぞれ1つ以上指定している

    • 列名が「EXPnnnn_NO_NAME」である列指定,または列名が「EXPnnnn_NO_NAME」となる値式をAS句に指定している

      nnnnは,00011000の符号なし整数です。

    • AS句を指定していない,列指定以外の値式

ALTER VIEW文で再作成できないビュー表は,DROP VIEW文でいったんビュー表を削除し,そのあとにCREATE VIEW文でビュー表を再定義してください。手順を次に示します。

■ビュー表を再定義する手順
  1. 再作成できないビュー表を確認する

    バージョン05-00より前のHADBサーバで定義したビュー表の中から,「■ビュー表を再作成できない条件」に該当するビュー表があるかどうかを確認してください。

  2. ビュー表のCREATE VIEW文を修正する

    ビュー表のCREATE VIEW文は,ディクショナリ表SQL_DEFINE_SOURCE表のDEFINE_SOURCE列で確認できます。DEFINE_SOURCE列を確認する場合は,「付録B.22 ディクショナリ表の検索」の「(32) ビュー表の定義情報を調べる場合」を参照してください。

    手順1.で確認したビュー表のCREATE VIEW文を次のどちらかの方法で修正してください。

    • 導出表の導出問合せの選択式に指定した「EXPnnnn_NO_NAME」の列名を変更する

    • 導出問合せの選択式にAS句,または導出表に導出列リストを追加して,導出列名が「EXPnnnn_NO_NAME」にならないようにする

  3. ビュー表を削除する

    手順1.で確認したビュー表をDROP VIEW文で削除してください。

  4. ビュー表を再定義する

    手順2.で修正したCREATE VIEW文を実行し,ビュー表を再定義してください。

  5. 無効化されたビュー表を再作成する

    手順3.でビュー表を削除した際に,ビュー表が無効化された場合は,ビューレベルの値が小さい順に,無効化されたビュー表をALTER VIEW文で再作成してください。

(7) ビュー表の再作成(05-01より前のバージョンからバージョンアップした場合)

バージョン05-01で,問合せ名に対する内部導出表を展開する際の条件を増やしましたが,バージョン05-01より前のバージョンで定義したビュー表に対しては適用されません。そのため,バージョン05-01で増えた条件をビュー表に適用したい場合は,次の手順でビュー表を再作成してください。

手順

  1. 該当するビュー表を確認する

    次の条件をすべて満たすビュー表が,該当するビュー表(再作成対象のビュー表)です。

    • WITH句が指定されているビュー表

    • バージョン05-01より前のバージョンで定義したビュー表

    ビュー表を定義したときのCREATE VIEW文については,ディクショナリ表SQL_DEFINE_SOURCE表のDEFINE_SOURCE列で確認できます。ビュー表を定義したバージョンについては,ディクショナリ表SQL_DEFINE_ENVIRONMENT表のDEFINE_VR列で確認できます。DEFINE_SOURCE列およびDEFINE_VR列の確認方法については,「付録B.22 ディクショナリ表の検索」の「(32) ビュー表の定義情報を調べる場合」を参照してください。

  2. 該当するビュー表を再作成する

    該当するビュー表をビューレベルの値が小さい順に,ALTER VIEW文で再作成してください。

  3. 無効化されたビュー表を再作成する

    手順2.で実行したALTER VIEW文によって無効化されたビュー表がある場合は,ビューレベルの値が小さい順に,無効化されたビュー表をALTER VIEW文で再作成してください。

(8) JDBCドライバに関する注意事項(05-01より前のバージョンからバージョンアップした場合)

バージョン05-01で,JRE6版およびJRE7版のJDBCドライバ(adbjdbc.jar)の提供を中止しました。JRE6版およびJRE7版のJDBCドライバを使用している場合は,JRE8版のJDBCドライバ(adbjdbc8.jar)を使用してください。使用するJDBCドライバを変更するには,APが参照しているJARファイルをadbjdbc.jarからadbjdbc8.jarに変更してください。adbjdbc.jarからadbjdbc8.jarへの変更による影響はありません。ただし,adbjdbc8.jarを使用するにはJava 8以降が必要です。

(9) マルチノード機能使用時のリアルスレッド数の増加について(05-05より前のバージョンからバージョンアップした場合)

マルチノード機能を使用している場合にバージョン05-05より前のバージョンからバージョンアップすると,HADBサーバが使用するリアルスレッド数が,次に示す計算式の分だけ増加します。

サーバ定義のadb_sys_max_parallel_exec_numオペランドの指定値
×(サーバ定義のadb_sys_multi_node_infoオペランドに指定したホスト名の数-1)×2

なお,サーバ定義のadb_sys_max_parallel_exec_numオペランドの指定を省略した場合,adb_sys_max_parallel_exec_numオペランドの省略値としてサーバ定義のadb_sys_max_usersオペランドの指定値が仮定され,リアルスレッド数は次に示す計算式の分だけ増加します。

サーバ定義のadb_sys_max_usersオペランドの指定値
×(サーバ定義のadb_sys_multi_node_infoオペランドに指定したホスト名の数-1)×2

なお,SQLパラレル実行機能を使用しない場合は,adb_sys_max_parallel_exec_numオペランドに0を指定してください。0を指定すると,バージョンアップをしてもここで説明しているリアルスレッド数の増加が発生しません。

また,SQLパラレル実行機能を使用する場合でも,SQLパラレル実行機能を適用した検索系SQLの同時実行数を正確に見積もれるときは,adb_sys_max_parallel_exec_numオペランドに正確に見積もった値を指定すると,リアルスレッド数の増加を抑えることができます。