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

3000-6-501-T0

前書き

著作権

All Rights Reserved. Copyright (C) 2012, 2026, Hitachi, Ltd.

輸出時の注意

本製品を輸出される場合には、外国為替および外国貿易法の規制ならびに米国輸出管理規則など外国の輸出関連法規をご確認の上、必要な手続きをお取りください。

なお、不明な場合は、弊社担当営業にお問い合わせください。

商標類

記載の会社名，製品名などは，それぞれの会社の商標もしくは登録商標です。

1. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.openssl.org/)

2. This product includes cryptographic software written by Eric Young (eay@cryptsoft.com).

3. This product includes software written by Tim Hudson (tjh@cryptsoft.com).

4. 本製品には OpenSSL Toolkit ソフトウェアを OpenSSL License および Original SSLeay License に従い使用しています。OpenSSL License および Original SSLeay License は以下の通りです。

LICENSE ISSUES

==============

The OpenSSL toolkit stays under a double license, i.e. both the conditions of

the OpenSSL License and the original SSLeay license apply to the toolkit.

See below for the actual license texts.

OpenSSL License

---------------

/* ====================================================================

* Copyright (c) 1998-2019 The OpenSSL Project. All rights reserved.

*

* Redistribution and use in source and binary forms, with or without

* modification, are permitted provided that the following conditions

* are met:

*

* 1. Redistributions of source code must retain the above copyright

* notice, this list of conditions and the following disclaimer.

*

* 2. Redistributions in binary form must reproduce the above copyright

* notice, this list of conditions and the following disclaimer in

* the documentation and/or other materials provided with the

* distribution.

*

* 3. All advertising materials mentioning features or use of this

* software must display the following acknowledgment:

* "This product includes software developed by the OpenSSL Project

* for use in the OpenSSL Toolkit. (http://www.openssl.org/)"

*

* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to

* endorse or promote products derived from this software without

* prior written permission. For written permission, please contact

* openssl-core@openssl.org.

*

* 5. Products derived from this software may not be called "OpenSSL"

* nor may "OpenSSL" appear in their names without prior written

* permission of the OpenSSL Project.

*

* 6. Redistributions of any form whatsoever must retain the following

* acknowledgment:

* "This product includes software developed by the OpenSSL Project

* for use in the OpenSSL Toolkit (http://www.openssl.org/)"

*

* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY

* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR

* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR

* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,

* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT

* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;

* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)

* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,

* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)

* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED

* OF THE POSSIBILITY OF SUCH DAMAGE.

* ====================================================================

*

* This product includes cryptographic software written by Eric Young

* (eay@cryptsoft.com). This product includes software written by Tim

* Hudson (tjh@cryptsoft.com).

*

*/

Original SSLeay License

-----------------------

/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)

* All rights reserved.

*

* This package is an SSL implementation written

* by Eric Young (eay@cryptsoft.com).

* The implementation was written so as to conform with Netscapes SSL.

*

* This library is free for commercial and non-commercial use as long as

* the following conditions are aheared to. The following conditions

* apply to all code found in this distribution, be it the RC4, RSA,

* lhash, DES, etc., code; not just the SSL code. The SSL documentation

* included with this distribution is covered by the same copyright terms

* except that the holder is Tim Hudson (tjh@cryptsoft.com).

*

* Copyright remains Eric Young's, and as such any Copyright notices in

* the code are not to be removed.

* If this package is used in a product, Eric Young should be given attribution

* as the author of the parts of the library used.

* This can be in the form of a textual message at program startup or

* in documentation (online or textual) provided with the package.

*

* Redistribution and use in source and binary forms, with or without

* modification, are permitted provided that the following conditions

* are met:

* 1. Redistributions of source code must retain the copyright

* notice, this list of conditions and the following disclaimer.

* 2. Redistributions in binary form must reproduce the above copyright

* notice, this list of conditions and the following disclaimer in the

* documentation and/or other materials provided with the distribution.

* 3. All advertising materials mentioning features or use of this software

* must display the following acknowledgement:

* "This product includes cryptographic software written by

* Eric Young (eay@cryptsoft.com)"

* The word 'cryptographic' can be left out if the rouines from the library

* being used are not cryptographic related :-).

* 4. If you include any Windows specific code (or a derivative thereof) from

* the apps directory (application code) you must include an acknowledgement:

* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"

*

* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND

* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE

* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS

* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)

* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT

* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY

* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF

* SUCH DAMAGE.

*

* The licence and distribution terms for any publically available version or

* derivative of this code cannot be changed. i.e. this code cannot simply be

* copied and put under another distribution licence

* [including the GNU Public Licence.]

*/

■Double precision SIMD-oriented Fast Mersenne Twister (dSFMT)

Copyright (c) 2007, 2008, 2009 Mutsuo Saito, Makoto Matsumoto

and Hiroshima University.

Copyright (c) 2011, 2002 Mutsuo Saito, Makoto Matsumoto, Hiroshima

University and The University of Tokyo.

All rights reserved.

Redistribution and use in source and binary forms, with or without

modification, are permitted provided that the following conditions are

met:

* Redistributions of source code must retain the above copyright

notice, this list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above

copyright notice, this list of conditions and the following

disclaimer in the documentation and/or other materials provided

with the distribution.

* Neither the name of the Hiroshima University nor the names of

its contributors may be used to endorse or promote products

derived from this software without specific prior written

permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS

"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT

LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR

A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT

OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,

SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT

LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY

THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT

(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE

OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Hitachi Advanced Databaseは，内閣府の最先端研究開発支援プログラム超巨大データベース時代に向けた最高速データベースエンジンの開発と当該エンジンを核とする戦略的社会サービスの実証・評価（中心研究者：喜連川情報・システム研究機構 機構長／東大特別教授）の成果を利用して開発されました。

また，非順序型実行原理は，喜連川 情報・システム研究機構 機構長／東大特別教授，合田 東大教授が考案した原理です。

マイクロソフト製品のスクリーンショットの使用について

マイクロソフトの許可を得て使用しています。

マイクロソフト製品の表記について

このマニュアルでは，マイクロソフト製品の名称を次のように表記しています。

表記

製品名

Azure

Microsoft Azure

Windows

Windows 10

Windows 10 x86

Windows(R) 10 Pro 日本語版(32ビット版)

Windows(R) 10 Enterprise 日本語版(32ビット版)

Windows 10 x64

Windows(R) 10 Pro 日本語版(64ビット版)

Windows(R) 10 Enterprise 日本語版(64ビット版)

Windows 11

Windows(R) 11 Pro 日本語版

Windows(R) 11 Enterprise 日本語版

Windows Server 2012

Windows Server(R) 2012 Standard 日本語版

Windows Server(R) 2012 Datacenter 日本語版

Windows Server 2012 R2

Windows Server(R) 2012 R2 Standard 日本語版

Windows Server(R) 2012 R2 Datacenter 日本語版

Windows Server 2016

Windows Server(R) 2016 Standard 日本語版

Windows Server(R) 2016 Datacenter 日本語版

Windows Server 2019

Windows Server(R) 2019 Standard 日本語版

Windows Server(R) 2019 Datacenter 日本語版

Windows Server 2022

Windows Server(R) 2022 Standard 日本語版

Windows Server(R) 2022 Datacenter 日本語版

Windows Server 2025

Windows Server(R) 2025 Standard 日本語版

Windows Server(R) 2025 Datacenter 日本語版

発行

2026年1月

変更内容

このマニュアルでは，Hitachi Advanced Database 06-00および06-01でサポートした機能の説明を追加しています。各バージョンの変更内容を次に示します。

変更内容（3000-6-501-T0）Hitachi Advanced Database　06-01

追加・変更内容

変更箇所

適用OSの変更

HADBサーバおよびLinux版のHADBクライアントの適用OSを変更しました。

Red Hat Enterprise Linux Server 10（64-bit x86_64）を適用OSに追加しました。

Red Hat Enterprise Linux Server 7（64-bit x86_64）およびRed Hat Enterprise Linux Server 8（64-bit x86_64）のサポートを終了しました。

1.3.1，2.4.4(5)，2.21.2(1)，2.21.3(1)，2.22，3.1.1，4.2.1，6.1.3，6.2，6.6，7.2.1，8.2，8.2.1(1)，8.2.1(9)，8.2.2(4)，8.2.3(2)，8.2.4(1)，8.8.2，8.8.3(1)，10.4.7(3)，11.8.3，12.8.1(2)，16.1.4，18.2.1，18.34.2(1)，18.34.3(1)，18.35.2(1)，19.2.1，19.22.2(1)，19.22.3(1)，19.23.2(1)，20.2.1，付録A.1，付録A.2

Windows版のHADBクライアントの適用OSにWindows Server 2025を追加しました。

ディクショナリ表の再編成

adbreorgsystemdataコマンドで，ディクショナリ表（実表）を再編成できるようにしました。

2.4.3(1)(b)，2.4.4(2)(d)，2.10.1(3)，2.10.3，2.10.5，6.23，10.1，10.5，10.9.6(1)，10.9.6(2)，11.20，12.9.1，12.9.2，12.9.3，18.12.7

データ型の追加

次のデータ型を追加しました。

BOOLEAN（論理データ）

UUID（UUIDデータ）

TIMESTAMP WITH TIME ZONE（時刻帯付きの時刻印データ）

5.8.1(2)(b)，5.8.1(2)(g)，5.8.2(1)，5.8.2(3)，5.8.4，5.9.2，6.3.4(2)(c)，6.3.6(1)(a)，6.3.17(1)(b)，6.3.25，6.18，6.25.3，8.6.1(6)，10.11.2(6)，12.9.2，付録B.3，付録D.2

サーバ定義に関する変更

サーバ定義にadb_sql_exe_hashgl_area_sizeオペランドを追加しました。

7.1，7.2.2，10.11.2(3)，18.4.5(5)

アクセスパスの統計情報に関する変更

アクセスパスの統計情報の出力項目（ハッシュテーブル領域に関する情報）に，Hashtbl_local_disabled_cnt0を追加しました。

10.11.3(2)(e)

インストールに関する変更

環境変数およびカーネルパラメタを設定したあとに，HADBサーバのインストールを実行するようにしました。

8.1，8.2.2，8.3，8.4，8.6.2，17.3.2，18.4.2，18.23.5，18.34.4(2)，18.35.3(2)，19.3.2，19.22.4(2)，19.23.3(2)，21.1.4(3)，21.2.4(3)，21.3.3(3)

HADBオプション（Azure環境の場合）に関する変更

Azure用のHADBオプション（クラウドストレージ機能）で使用するファイル名を変更しました。

8.2.4(2)，8.8.3(2)，付録A.2

バージョンアップに関する変更

バージョンアップ時の注意事項（バージョンアップ時に行われるビュー表の再作成）の説明を変更しました。

8.6.5(5)

見積もり式に関する変更

ディクショナリ用DBエリアの容量の見積もり式を変更しました。

5.11

通常運用時のメモリ所要量の見積もり式を変更しました。

6.3.4(2)(c)

adbreorgsystemdataコマンド実行時のメモリ所要量の求め方を変更しました。

6.3.18，6.3.18(1)，6.3.18(1)(a)，6.3.18(1)(c)，6.3.18(2)(a)

adbreorgsystemdataコマンド実行時に出力されるユーザログ容量（変数max_user_log）の求め方を変更しました。

6.12.13

アンロードファイルの容量の見積もり式を変更しました。

4.2.4，6.20

adbreorgsystemdataコマンド実行時の作業用一時ファイルの容量の見積もり式を変更しました。

6.21.5

サーバディレクトリの構成変更

サーバディレクトリの構成を変更しました。

付録A.1，付録A.2

次に示す用語の説明を追加または変更しました。

アンロード

アンロードファイル

削除仕掛中のチャンク

ディクショナリ表の再編成

リロード

用語解説

変更内容　Hitachi Advanced Database　06-00

追加・変更内容

変更箇所

外部表のサポート

オブジェクトストレージまたはファイルストレージに格納しているデータを，表（外部表）に読み込んで検索する機能をサポートしました。これに伴い，次の定義系SQLを追加しました。

ALTER SERVER（外部サーバの定義変更）

CREATE FOREIGN TABLE（外部表の定義）

CREATE SERVER（外部サーバの定義）

DROP FOREIGN TABLE（外部表の削除）

DROP SERVER（外部サーバの削除）

外部表の概要および運用については，右記の変更個所で太字表示されている個所を参照してください。

2.1，2.1.2，2.1.3，2.5.2，2.7.2(1)，2.7.6(1)，2.7.6(2)，2.7.6(3)，2.10.5，2.10.6，2.10.7，2.16，2.16.1，7.2.5，10.1，10.5，10.11.2(5)，10.11.3(1)，10.11.3(2)(e)，10.11.4，11.2.8(8)，11.3，12.8.2，12.9.1，12.9.2，12.9.3，12.10.1，18.27.1，18.34.2(4)(d)，18.34.3(4)(d)，18.35.2(4)(d)，19.22.2(4)，19.22.3(4)，19.22.4(9)(f)，19.22.4(10)(h)，19.23.2(4)，19.23.3(7)(f)，付録B.1(1)，付録B.1(3)，付録B.2，付録B.3，付録B.10，付録B.20，付録B.23，付録B.24(11)，付録B.24(42)，付録D.1，付録D.2

COPY文のサポート

表の検索結果をオブジェクトストレージまたはファイルストレージに出力する機能をサポートしました。これに伴い，次の操作系SQLを追加しました。

COPY（検索結果のファイルへの出力）

2.7.6(2)，2.8.3(4)，2.9.5(2)，2.10.7，2.14.1，2.20.1(1)，2.20.2(2)，2.20.8，7.2.2，7.2.6，11.1.8，11.1.10，11.1.11，11.5.12(2)，11.11.2，12.8.2，12.9.1，12.9.2，12.9.3，13.9.2(3)，14.1.6(1)，16.8.1(3)，17.2.4，付録A.1，付録A.2，付録B.18，付録B.24(24)

クラウドストレージ機能に関する変更

Amazon S3互換オブジェクトストレージにDBエリアのデータを格納できるようにしました。Amazon S3互換オブジェクトストレージの概要については，右記の変更個所で太字表示されている個所を参照してください。

また，クラウドストレージ機能に関する次のオペランドをサーバ定義に追加しました。

adb_sys_cld_endpoint

adb_sys_cld_throughput

2.4.4(6)，2.4.4(7)，2.22，7.1，7.2.17，8.2.4，8.8.3，13.9.1(3)，18.4.5(9)，21.1.4(11)，21.3.3(10)，付録A.3

クラウドストレージ機能のシステムディレクトリ対応オプションをサポートしました。このサポートによって，システムディレクトリ（$DBDIR/ADBSYS）下の次のファイルをクラウドストレージに格納できるようにしました。

システムログファイル

ステータスファイル

クラウドストレージ機能のシステムディレクトリ対応オプションの概要については，右記の変更個所で太字表示されている個所を参照してください。

2.11.1(2)(a)，2.21.2(2)(c)，2.21.2(2)(e)，6.12，7.1，7.2.3，7.2.13，7.2.17，7.2.20，10.12.2，13.9.1(3)，18.13，18.34.2，18.34.2(2)，18.34.2(3)(d)，18.34.2(4)，18.34.2(4)(c)，18.34.2(4)(d)，18.34.4(5)(c)，18.34.4(9)，19.22.2，19.22.2(4)，19.22.4(9)(b)，21.1.3，21.1.3(3)，21.1.4(11)，21.1.4(13)，22.1.1(1)，22.2

Keycloakを使用したユーザ認証

Keycloakを使用してHADBユーザのユーザ認証（Keycloak認証）をできるようにしました。

Keycloak認証の概要および環境設定については，右記の変更個所で太字表示されている個所を参照してください。

2.5.1(2)，2.6，2.6.3，2.7.4，2.7.5，7.1，7.2.13，10.1，10.11.2(4)，11.7.1，11.7.2，11.7.4，11.9，12.2.5，12.4.1(1)，12.4.1(3)，12.8.2，12.9.2，12.9.3，13.4，13.9.1(11)，17.2.2，17.4.1，17.4.4，18.4.5(3)，21.3.4(4)，21.4.6(4)，付録B.13，付録B.24(40)

データ型の追加

次のデータ型を追加しました。

REAL（浮動小数点数データ）

STRING（文字データ）

STRUCT（構造データ）

2.10.6，2.10.7，10.11.2(6)，10.11.3(1)，10.11.3(2)(d)，10.11.3(2)(g)，10.11.4，12.9.2，14.6，付録B.1(1)，付録B.1(3)，付録B.2，付録B.3，付録B.21，付録B.23，付録D.2

整数データ型のデータ形式の選択

整数データのINTEGER型およびSMALLINT型のデータ形式（整数データ型のデータ形式）を選択できるようにしました。

10.11.2(6)，付録B.1(1)，付録B.3，付録C.1，付録D.2

表の定義数の上限拡大

CREATE TABLE文で定義した実表，およびCREATE FOREIGN TABLE文で定義した外部表を合計30,000個まで定義できるようにしました（4,096個から上限を拡大しました）。

付録D.1

サーバ定義に関する変更

adb_sql_opt_drvtbl_grping_priorオペランドの省略値をLOCALからGLOBALに変更しました。

7.1，7.2.2

グローバルバッファ名の指定規則を次のように変更しました。

グローバルバッファ名に半角垂直棒（ | ）を指定できるようにしました。

グローバルバッファ名の先頭の文字に，半角下線（ _ ）を指定できるようにしました。

7.2.18

キャッシュグループ名の指定規則を次のように変更しました。

キャッシュグループ名に半角垂直棒（ | ）を指定できるようにしました。

キャッシュグループ名の先頭の文字に，半角下線（ _ ）を指定できるようにしました。

7.2.20

マルチノード機能に関する変更

サーバ定義のadb_sys_multi_worker_abort_timeオペランドで，ワーカーノードを異常終了させるまでの待ち時間の上限を指定できるようにしました。

7.1，7.2.16

サーバ定義のadb_sys_multi_node_clt_hostオペランドで，クライアント－サーバ間ネットワークで使用する自ノードのホスト名を指定できるようにしました。

7.1，7.2.16

ワーカーノードではユーザログファイルを作成しないように仕様を変更しました。

7.2.3

インストールおよびアンインストールに関する変更

必要となる前提パッケージを変更しました。

8.2.1(1)

HADBオプションのインストール手順を変更しました。

8.2.4(1)，8.2.4(2)

HADBオプションのアンインストール後の作業を変更しました。

8.12.3

バージョンアップに関する変更

バージョンアップをする前の実施事項の説明を変更しました。

8.6.1(6)，8.6.1(14)

バージョンアップ時の注意事項（バージョンアップ時に行われるビュー表の再作成）の説明を変更しました。

8.6.5(5)

HADBオプションを06-00より前のバージョンからバージョンアップした場合の注意事項を追加しました。

8.6.5(10)

修正版HADBオプションへの入れ替えに関する変更

修正版HADBオプションへの入れ替え手順を変更しました。

8.8.3

見積もり式に関する変更

DBディレクトリの事前見積もりの見積もり式を変更しました。

4.2.1

データ用DBエリアの容量の見積もり式を変更しました。

5.8.1(2)(b)，5.8.1(2)(f)，5.8.1(2)(g)，5.8.2(1)，5.8.2(3)，5.8.4

作業表用DBエリアの容量の見積もり式を変更しました。

5.9.1，5.9.2

ディクショナリ用DBエリアの容量の見積もり式を変更しました。

5.11

カーネルパラメタのnofileの見積もり式を変更しました。

6.2

外部データアクセス用ライブラリ使用時のメモリ所要量の見積もり式を追加しました。

6.3，6.3.25

HADBサーバ開始時のメモリ所要量の見積もり式を変更しました。

6.3.3(3)，6.3.3(3)(f)，6.3.3(3)(q)，6.3.3(3)(r)，6.3.3(3)(w)

通常運用時のメモリ所要量の見積もり式を変更しました。

6.3.4(1)(b)，6.3.4(1)(e)，6.3.4(2)，6.3.4(2)(b)，6.3.4(2)(c)，6.3.4(2)(l)，6.3.4(3)

adbimportコマンド実行時のメモリ所要量の見積もり式を変更しました。

6.3.6(1)(a)

adbunarchivechunkコマンド実行時のメモリ所要量の見積もり式を変更しました。

6.3.17(1)(b)

クラウドストレージ機能使用時のメモリ所要量の見積もり式を変更しました。

6.3.24

システムログファイルの容量を求める見積もりを変更しました。

6.12

adbexportコマンドが出力するファイルの容量を求める見積もり式を変更しました。

6.18

adbimportコマンド実行時の作業用一時ファイルの容量を求める見積もり式を変更しました。

6.21.1

ハッシュテーブルを使用した検索時に作成される作業表の数の見積もり式を変更しました。

6.25.3

COPY文で出力するファイルの容量を求める見積もり式を追加しました。

6.26

サーバディレクトリの構成変更

サーバディレクトリの構成を変更しました。

付録A.1，付録A.2

用語解説の変更

次に示す用語の説明を追加または変更しました。

DBA権限

Keycloak認証

S3オブジェクト

S3バケット

SQLパラレル実行機能

アクセス権限

依存するビュー表

外部サーバ

外部データ

外部データアクセス用ライブラリ

外部表

仮想DBエリアファイル

キャッシュファイル

クラウドストレージ機能

クラウドストレージ機能のシステムディレクトリ対応オプション

クラウドストレージ機能用ライブラリ

検索系SQL

システムディレクトリ

スキーマオブジェクト

整数データ型のデータ形式

バックグラウンドインポート

ビューレベル

用語解説

HADBサーバおよびHADBクライアントの製品名の変更

HADBサーバの製品名をHitachi Advanced Databaseに，HADBクライアントの製品名をHitachi Advanced Database Clientに変更しました。

－

単なる誤字・脱字などはお断りなく訂正しました。

はじめに

このマニュアルは，Hitachi Advanced Databaseのシステム設計，構築，および運用方法について説明したものです。

なお，このマニュアル中，および製品が出力する情報中（メッセージ，コマンドの出力結果など）では，Hitachi Advanced DatabaseをHADBと表記することがあります。

対象製品

P-8862-CG11 Hitachi Advanced Database 06-01　（適用OS：Red Hat Enterprise Linux Server 9（64-bit x86_64），Red Hat Enterprise Linux Server 10（64-bit x86_64））

P-8862-CN11 Hitachi Advanced Database Client 06-01　（適用OS：Red Hat Enterprise Linux Server 9（64-bit x86_64），Red Hat Enterprise Linux Server 10（64-bit x86_64））

P-2W62-C114 Hitachi Advanced Database Client 06-01　（適用OS：Windows 10，Windows 11，Windows Server 2012，Windows Server 2012 R2，Windows Server 2016，Windows Server 2019，Windows Server 2022，Windows Server 2025）

これらのプログラムプロダクトのほかにもこのマニュアルをご利用になれる場合があります。詳細は「リリースノート」でご確認ください。

対象読者

このマニュアルは，次に示す方々を対象にしています。

HADBのシステム設計・構築者およびシステム管理者

AP開発者

なお，このマニュアルは次に示す知識があることを前提に説明しています。

LinuxおよびWindowsのシステム管理の基本的な知識

RDBMSの運用管理の基本的な知識

SQLの基本的な知識

マニュアルの構成

このマニュアルは，次に示す編，章と付録から構成されています。

第1編　解説編

第1章　概要

HADBの概要，特長，およびシステム構成について説明しています。

第2章　アーキテクチャ

表やインデクスの種類，表とインデクスを格納するDBエリア，データベースのアクセス処理方式，排他制御など，HADBのアーキテクチャについて説明しています。また，DBエリア暗号化機能，マルチノード機能，クラウドストレージ機能など，HADBの主な機能についても説明しています。

第2編　体験編

第3章　体験環境構築ナビ

HADBの導入・操作を体験するために使用する，体験環境の構築手順について説明しています。

第3編　設計編

第4章　システム設計

HADBを構築するためのデータベースの設計，リソースの設計，およびサーバ定義の設計の流れについて説明しています。また，ディスク所要量，およびメモリ所要量の事前見積もりについて説明しています。

第5章　データベースの設計

表の設計，インデクスの設計，各DBエリアの設計，および各DBエリアの容量見積もりについて説明しています。

第6章　リソースの設計

ディスクの設計，カーネルパラメタの見積もり，メモリ所要量の見積もり，各ファイルの容量見積もり，各ディレクトリの容量見積もり，コマンド実行時に増加するデータ量の見積もり，コマンドを同時実行する際の考慮点，コマンドが使用する処理リアルスレッドの最大数の見積もり，クライアントグループ機能を適用する際の考慮点，および作業表に関する見積もりについて説明しています。

第7章　サーバ定義の設計

サーバ定義のオペランドの指定形式，サーバ定義のオペランドの内容，およびサーバ定義の文法規則について説明しています。

第4編　構築編

第8章　システム構築

HADBサーバのインストール，カーネルパラメタの設定，環境変数の設定，サーバ定義の作成，HADBサーバのバージョンアップ，HADBサーバのバージョンダウン，修正版HADBサーバとの入れ替え，サーバマシンのOSの時刻変更，およびHADBサーバのアンインストールについて説明しています。

第9章　データベースの作成

データベースの作成手順について説明しています。

第5編　運用編

第10章　定期運用

定期的に行う運用項目として，HADBサーバの開始と終了，データベースのバックアップ，およびモニタリングについて説明しています。

第11章　非定期運用

HADBサーバで非定期に実施する運用項目について説明しています。

第12章　監査証跡機能の運用

監査証跡機能の運用について説明します。

第13章　DBエリア暗号化機能の運用

DBエリア暗号化機能の運用について説明します。

第14章　チューニング

HADBのチューニングについて説明しています。

第15章　障害運用

障害発生時の対処の流れ，トラブルシュート情報の取得方法，およびトラブルシュート情報の削除方法について説明しています。

第16章　トラブルシュート

トラブルが発生した場合の対処方法について説明しています。

第17章　HADBサーバの再構築

オンプレミス環境でのHADBサーバの再構築方法について説明しています。

第6編　マルチノード機能編

第18章　マルチノード機能の運用

マルチノード機能を使用したシステムの構築方法，およびマルチノード機能の運用方法について説明しています。

第7編　コールドスタンバイ構成編

第19章　コールドスタンバイ構成の運用

コールドスタンバイ構成でのシステムの構築方法，およびコールドスタンバイ構成の運用方法について説明しています。

第8編　DockerおよびKubernetes編

第20章　DockerおよびKubernetesを使用したHADBの運用

DockerおよびKubernetesを使用したシステムの構築方法，およびDockerとKubernetesを使用したHADBの運用方法について説明しています。

第9編　クラウドストレージ機能編

第21章　クラウド環境の構築（クラウドストレージ機能を使用する場合）

クラウド環境（AWS環境またはAzure環境）でクラウドストレージ機能を使用したシステムの構築方法について説明しています。

オンプレミス環境からAWS環境に移行する方法や，クラウドストレージ機能を使用しているシステムから，クラウドストレージ機能を使用しないシステムへの移行方法も説明しています。

第22章　クラウドストレージ機能を使用している場合の運用

クラウドストレージ機能を使用している際の固有の運用方法について説明しています。

付録A　HADBサーバのディレクトリの構成

HADBのサーバディレクトリ（インストール時），サーバディレクトリ（運用時），およびDBディレクトリの構成について説明しています。

付録B　ディクショナリ表

ディクショナリ表に格納されている情報，ディクショナリ表の参照時に排他が取得される実表，ディクショナリ表に定義されているインデクス，およびディクショナリ表の検索方法について説明しています。

付録C　システム表

システム表に格納されている情報，システム表の参照時に排他が取得される実表，システム表に定義されているインデクス，およびシステム表の検索方法について説明しています。

付録D　HADBの最大値と最小値

システム構成およびデータベースに関する最大値と最小値について説明しています。

付録E　HADBサーバで起動するプロセス

HADBサーバで起動するプロセスについて説明しています。

関連マニュアル

このマニュアルの関連マニュアルを次に示します。必要に応じてお読みください。

Hitachi Advanced Database AP開発ガイド（3000-6-502）

Hitachi Advanced Database コマンドリファレンス（3000-6-503）

Hitachi Advanced Database SQLリファレンス（3000-6-504）

Hitachi Advanced Database メッセージ（3000-6-505）

Hitachi Code Converter（UNIX編）（3020-7-358）

高信頼化システム監視機能 HAモニタ Linux(R)(x86)編（3000-9-201）

高信頼化システム監視機能 HAモニタ パブリッククラウド編（3000-9-204）

JP1 Version 11 JP1/Base 運用ガイド（3021-3-A01）

JP1 Version 11 JP1/Automatic Job Management System 3 設計ガイド（業務設計編）（3021-3-B14）

JP1 Version 11 JP1/Audit Management - Manager 構築・運用ガイド（3021-3-A17）

JP1 Version 12 JP1/Base 運用ガイド（3021-3-D65）

JP1 Version 12 JP1/Automatic Job Management System 3 設計ガイド（業務設計編）（3021-3-D23）

なお，Hitachi Advanced Databaseのマニュアルを本文中で参照させる場合は，Hitachi Advanced DatabaseをHADBと表記します。

（例）　HADB　AP開発ガイド

また，HAモニタのマニュアルを本文中で参照させる場合は，次のように表記します。

高信頼化システム監視機能 HAモニタ Linux(R)(x86)編をHAモニタ Linux(R)(x86)編と表記します。

（例）　HAモニタ Linux(R)(x86)編

高信頼化システム監視機能 HAモニタ パブリッククラウド編をHAモニタ パブリッククラウド編と表記します。

（例）　HAモニタ パブリッククラウド編

JP1/Baseのマニュアルを本文中で参照させる場合は，JP1 Version 11 JP1/Base 運用ガイドまたはJP1 Version 12 JP1/Base 運用ガイドをJP1/Base　運用ガイドと表記します。

（例）　JP1/Base　運用ガイド

JP1/AJS3のマニュアルを本文中で参照させる場合は，JP1 Version 11 JP1/Automatic Job Management System 3 設計ガイド（業務設計編）またはJP1 Version 12 JP1/Automatic Job Management System 3 設計ガイド（業務設計編）をJP1/AJS3　設計ガイド（業務設計編）と表記します。

（例）　JP1/AJS3　設計ガイド（業務設計編）

JP1/Auditのマニュアルを本文中で参照させる場合は，JP1 Version 11 JP1/Audit Management - Manager 構築・運用ガイドをJP1/Audit　構築・運用ガイドと表記します。

（例）　JP1/Audit　構築・運用ガイド

このマニュアルで使用する製品名・機能名

このマニュアルでは，製品名を次のように表記しています。

表記

製品名

HADB

HADBサーバ

Hitachi Advanced Database

HADBクライアント

Hitachi Advanced Database Client

Linux

RHEL 8

Red Hat Enterprise Linux Server 8（64-bit x86_64）

RHEL 9

Red Hat Enterprise Linux Server 9（64-bit x86_64）

RHEL 10

Red Hat Enterprise Linux Server 10（64-bit x86_64）

HDLM

Hitachi Dynamic Link Manager Software

Hitachi Code Converter

Hitachi Code Converter - Runtime for C/COBOL（64）

JP1/AJS3

JP1/Automatic Job Management System 3

JP1/Audit

JP1/Audit Management - Manager

このマニュアルで使用する英略語

このマニュアルで使用する英略語を次に示します。

英略語

英字での表記

AD

Active Directory

Amazon S3

Amazon Simple Storage Service

AP

Application Program

APD

Application Parameter Descriptor

API

Application Programming Interface

ARD

Application Row Descriptor

AWS

Amazon Web Services

BI

Business Intelligence

BLOB

Binary Large Object

BNF

Backus-Naur Form

BOM

Byte Order Mark

CLI

Call Level Interface

CLOB

Character Large Object

CPU

Central Processing Unit

CSV

Character-Separated Values

DB

Database

DBMS

Database Management System

DMMP

Device Mapper Multipath

DNS

Domain Name System

DRBD

Distributed Replicated Block Device

EBS

Amazon Elastic Block Store

EC2

Amazon Elastic Compute Cloud

EFS

Amazon Elastic File System

ELF

Executable and Linking Format

ER

Entity Relationship

HBA

Host Bus Adapter

HDD

Hard Disk Drive

ID

Identification number

IEF

Integrity Enhancement Facility

IP

Internet Protocol

IPD

Implementation Parameter Descriptor

IRD

Implementation Row Descriptor

JAR

Java Archive File

JDBC

Java Database Connectivity

JDK

Java Developer's Kit

JNDI

Java Naming and Directory Interface

JRE

Java Runtime Environment

JSON

JavaScript Object Notation

JTA

Java Transaction API

LDAP

Lightweight Directory Access Protocol

LOB

Large Object

LRU

Least Recently Used

LV

Logical Volume

LVM

Logical Volume Manager

LWP

Light Weight Process

MSDN

Microsoft Developer Network

NFS

Network File System

NIC

Network Interface Card

NTP

Network Time Protocol

ODBC

Open Database Connectivity

OS

Operating System

OSS

Open Source Software

PAM

Pluggable Authentication Module

PP

Program Product

PV

Physical Volume

PVC

Persistent Volume Claim

RAID

Redundant Array of Independent Disks

RDBMS

Relational Database Management System

SELinux

Security-Enhanced Linux

SSD

Solid State Drive

SSSD

System Security Services Daemon

TLB

Translation Lookaside Buffer

URI

Uniform Resource Identifier

URL

Uniform Resource Locator

UUID

Universally Unique Identifier

VG

Volume Group

VPC

Amazon Virtual Private Cloud

WWN

World Wide Name

XFS

Extents File System

このマニュアルで使用する記号

サーバ定義などのオペランド，およびコマンドの説明で使用している記号を次に示します。

なお，これらの記号は説明のために使用している記号のため，オペランドまたはコマンド中に記述しないでください。

記号

意味

例

〔　〕

この記号で囲まれている項目は省略できます。

adbsql 〔-V〕

この例の場合，adbsqlと指定してもよいし，adbsql -Vと指定してもよいことを意味しています。

｛　｝

この記号で囲まれている複数の項目のうちから，1つを選択できます。

adbcancel ｛--ALL｜-u コネクションID｝

この例の場合，--ALLまたは-u コネクションIDのどちらかを指定できることを意味しています。

…

この記号の直前の項目を繰り返し指定できます。

adbbuff -n DBエリア名〔，DBエリア名〕…

この例の場合，DBエリア名を繰り返し指定できることを意味しています。

｛｛　｝｝

この記号で囲まれた複数の項目を1つの単位として，繰り返し指定できます。

｛｛adbinitdbarea -n データ用DBエリア名｝｝

この例の場合，「adbinitdbarea -n データ用DBエリア名」を繰り返し指定できることを意味しています。

＿

（下線）

この記号で示す項目は，省略時の解釈値です。

adb_import_errmsg_lv = ｛0｜1｝

この例の場合，オペランドの指定を省略したとき，0が仮定されることを意味しています。

〜

この記号のあとに，指定値の属性を説明しています。

adb_sys_max_users = 最大同時接続数

　〜〈整数〉((1〜1,024))《10》

この例の場合，1〜1,024の整数が指定できます。オペランドの指定を省略した場合は，10が仮定されます。

〈　〉

指定値の種別を説明しています。

((　))

指定値の範囲を説明しています。

《　》

省略値を説明しています。

このマニュアルで使用する構文要素記号

構文要素記号

意味

〈パス名〉

パス名には次に示す文字が使用できます。

OSがLinuxの場合

英字，数字，#，-，/，@，_

OSがWindowsの場合

英字，数字，#，-，/，@，_，¥，:

ただし，OSによって使用できる文字が異なります。

〈OSパス名〉

OSパス名には，OSでパス名として使用できるすべての文字が使用できます。使用できる文字の詳細については，OSのマニュアルを参照してください。

〈文字列〉

任意の文字列を指定できます。

〈単位付き整数〉

数字（0～9）の末尾に，MB（メガバイト），GB（ギガバイト），またはTB（テラバイト）のどれかの単位を付けた形式で指定します。数字と単位の間に空白を入れることはできません。

指定例

1024MB

512GB

32TB

エラーになる指定例

512 GB

注　すべて半角文字を使用してください。

このマニュアルで使用する計算式の記号

このマニュアルで使用する計算式の記号の意味を次に示します。

記号

内容

↑　↑

計算結果の値を小数点以下で切り上げることを意味しています。

（例）↑34÷3↑の計算結果は12になります。

↓　↓

計算結果の値を小数点以下で切り捨てることを意味しています。

（例）↓34÷3↓の計算結果は11になります。

MAX

計算結果のうち，最も大きい値が有効になることを意味しています。

（例）MAX（3×6，4＋7）の計算結果は18になります。

MIN

計算結果のうち，最も小さい値が有効になることを意味しています。

（例）MIN（3×6，4＋7）の計算結果は11になります。

パス名の表記について

サーバディレクトリ（インストール時）のパスは，$INSTDIRと表記します。

サーバディレクトリ（運用時）のパスは，$ADBDIRと表記します。

DBディレクトリのパスは，$DBDIRと表記します。

クライアントディレクトリのパスは，%ADBCLTDIR%（HADBクライアントがWindows版の場合）または$ADBCLTDIR（HADBクライアントがLinux版の場合）と表記します。

HADB ODBCドライバトレースファイルの格納フォルダのパスは，%ADBODBTRCPATH%と表記します。

¥の表記について

本文中で使用されている¥は，Linux版の場合は半角のバックスラッシュを意味しています。

このマニュアルで使用するKB（キロバイト）などの単位表記

1KB（キロバイト），1MB（メガバイト），1GB（ギガバイト），1TB（テラバイト），1PB（ペタバイト），1EB（エクサバイト）はそれぞれ1,024バイト，1,024²バイト，1,024³バイト，1,024⁴バイト，1,024⁵バイト，1,024⁶バイトです。

第1編　解説編

1　概要

Hitachi Advanced Database（HADB）は大規模なデータを管理し，高速検索を実現するためのデータベース管理システム（DBMS）です。この章では，HADBの概要，特長，およびシステム構成について説明します。

1.1　情報爆発時代のデータを管理するHADB

Hitachi Advanced Database（HADB）は，大規模リレーショナルデータベースの構築と高速検索を実現する，データベース管理システム（DBMS）です。

近年，クラウドコンピューティングの浸透に象徴されるような，社会インフラの変化に伴って，企業や社会が保有するデータ量は爆発的に増加しています。また，大容量ストレージの普及によって，その傾向はより顕著になっています。

社会インフラの変化に伴って，DBMSが管理するデータ量も急激に増加しています。その結果，現行のDBMSでは満足な検索性能が得られなくなるケースも考えられるようになり，増加するデータをどのように管理していくかが課題となっています。また一方で，膨大なデータを活用して新たなサービスを立ち上げることができないか，といったことへの関心も高まっています。

このような背景から，次のようなDBMSが求められるようになってきています。

ペタバイトやエクサバイトといった単位の膨大なデータを管理できる。

膨大なデータの中から必要な情報を高速に検索できる。

HADBはこれらの要求に応えるために開発されたDBMSです。

HADBはペタバイトやエクサバイトといった単位のデータを管理することを想定して設計されています。HADBを使用することによって，膨大なデータを管理するデータベースを構築できます。また，HADBではハードウェアの性能を有効に利用する検索処理方式（非順序実行方式）を採用しています。これによって大規模データの高速検索を実現しています。

メモ

1ペタバイトは，1テラバイトの約1,000倍です。1エクサバイトは1ペタバイトの約1,000倍となります。

1.2　HADBの特長

HADBの特長を次に示します。

1.2.1　大規模データを高速に検索できる

HADBを使用することで，大規模データに対して，SQLを使用した複雑な検索が高速に実行できます。

HADBでは非順序型実行原理に基づく検索処理方式（非順序実行方式）を採用しています。非順序実行方式では，検索処理を行単位に細分化し，複数のタスクに割り当てて並列に実行します。非順序実行方式を採用していないDBMSと比較して，検索タスクを超高多重で実行できます。これによって，高速な検索を実現します。

非順序実行方式による検索処理のイメージを次の図に示します。

図1‒1　非順序実行方式による高速検索

非順序実行方式は，「検索処理は行の集合演算であり，ソート処理などを除いて，DBMSが返却する検索結果の順序には規定はない」という，リレーショナルデータベースの実行原理に基づいて考案されています。

1.2.2　ペタバイトやエクサバイト単位の大規模データベースを構築できる

HADBを使用することで，ペタバイトやエクサバイトといった単位の膨大なデータを管理するデータベースを構築できます。

大規模なデータを管理する場合，データを分割して別々の領域に格納する方法が一般的です。しかし，この方法ではデータ量が増えた場合，データを分割して格納し直す必要があります。また，データを分割格納したことに伴うオーバーヘッドが発生します。

HADBでは，複数のディスクに対して1つの論理的な領域を作成できます。この領域に表を格納することで，データを分割することなく，1表でペタバイトやエクサバイトといった単位のデータを管理できます。データ量が増えた場合でも，データを分割して格納し直す必要はありません。大規模データベースの構築イメージを次の図に示します。

図1‒2　ペタバイトやエクサバイト単位の大規模データベースの構築

また，大規模なデータベースを作成するためのデータインポート機能などを提供します。

1.2.3　スケールアウトによる負荷分散が実現できる（マルチノード機能）

複数のHADBサーバで1つのデータベースを共有し，複数のHADBサーバが連携して処理を実行することができます。これによって，スケールアウトによる負荷分散が実現できます。あとから必要に応じてサーバマシンを追加できるため，業務の拡張に合わせたスケールアウトができます。

メモ

複数のHADBサーバを連携して処理を実行する機能を，マルチノード機能といいます。

1.3　HADBのシステム構成

HADBは，クライアント・サーバシステムのネットワーク環境で使用します。HADBのシステム構成を次の図に示します。

図1‒3　HADBのシステム構成例

1.3.1　HADBサーバ

HADBサーバは，HADBのデータベースを管理するサーバ側システムです。データベースに対するトランザクション制御などをします。また，HADBサーバでは，APの開発や実行もできます。

HADBサーバの適用OSを次に示します。

RHEL 8

8.1以降のバージョンで動作します。

RHEL 9

9.1以降のバージョンで動作します。

RHEL 10

10.0以降のバージョンで動作します。

1.3.2　HADBクライアント

HADBサーバに接続するクライアント側システムをHADBクライアントといいます。HADBクライアントでは，APの開発や実行ができます。

HADBクライアントは，LinuxおよびWindowsで利用できます。HADBクライアントを利用したい場合は，マニュアルHADB　AP開発ガイドのHADBクライアントの環境設定（ODBCドライバおよびCLI関数を使用する場合）を参照してください。

2　アーキテクチャ

この章では，表やインデクスの種類，表とインデクスを格納するDBエリア，データベースのアクセス処理方式，排他制御など，HADBのアーキテクチャについて説明します。また，DBエリア暗号化機能，マルチノード機能，クラウドストレージ機能など，HADBの主な機能についても説明します。

2.1　表の種類

HADBでは，表形式でデータを管理します。

一般的なリレーショナルデータベースと同様に，HADBの表は，行と列から構成されています。表の横方向を行，縦方向を列といいます。各行の同じ列には同じ形式のデータが格納されます。

1つの行は1つ以上の列から構成されています。行は表を操作するときの単位となります。

表には，実表，ビュー表，および外部表があります。各表の詳細を次に示します。

2.1.1　実表

実表とは，データベースに格納している実体がある表のことです。

実表には，表データの格納形式が異なるローストア表とカラムストア表があります。また，表内にチャンクを1つだけ作成できるシングルチャンク表と，表内に複数のチャンクを作成できるマルチチャンク表があります。実表を定義する際に，ローストア表にするか，カラムストア表にするかを選択し，さらにシングルチャンク表にするか，マルチチャンク表にするかを選択します。したがって，定義した実表は，次のどれかになります。

ローストア表でシングルチャンク表

ローストア表でマルチチャンク表

カラムストア表でシングルチャンク表

カラムストア表でマルチチャンク表

ローストア表，カラムストア表，シングルチャンク表，およびマルチチャンク表の特徴については，「2.2　実表の種類」を参照してください。

2.1.2　ビュー表

CREATE VIEW文に指定した問合せ式の結果を，新たな表として定義した仮想的な表をビュー表といいます。複数の表に対する集合演算の結果をビュー表として定義したり，表中の特定の行や列だけを取り出してビュー表として定義したりすることができます。

何度も指定される条件で検索した結果を，あらかじめビュー表として定義しておくことで，データベースを検索する操作が簡単になります。ビュー表の例を次の図に示します。

図2‒1　ビュー表の例

［説明］

実表のSTOCK表から，PNAME（商品名）列が「Shirt」の行である，PCODE（商品コード）列，PRICE（単価）列，およびQUANTITY（在庫量）列で構成されるビュー表として，VSTOCK表を作成しています。

メモ

ビュー表を定義すると，次のようなセキュリティ上の利点があります。

表中の特定の列や行だけを参照可能とするビュー表を定義することで，関係のないデータや，アクセスされては困るデータを隠すことができます。

実際にデータが格納されている実表または外部表の表名をデータベースの利用者に知らせる必要がなくなるため，実表名または外部表名を利用した不正アクセスに対する防止効果があります（ビュー表を基表としたビュー表を作成した場合）。

データベースの利用者にデータを参照させる場合，実際にデータが格納されている実表または外部表を直接参照させることもできますが，表内の一部のデータ（特定の列など）だけを参照させたい場合は，ビュー表を使用することを推奨します。

(1)　更新可能ビュー表と読み取り専用ビュー表

ビュー表には，次に示す2種類があります。ビュー表の定義方法によって，更新可能ビュー表または読み取り専用ビュー表のどちらかになります。

更新可能ビュー表

実表と同じように，行の挿入，行の更新，および行の削除ができます。ただし，列の追加，およびインデクスの定義はできません。

更新可能ビュー表に対して，行の挿入・更新・削除をした場合，更新可能ビュー表の基表の行も挿入・更新・削除されます。

読み取り専用ビュー表

行の挿入，行の更新，および行の削除はできません。また，列の追加，およびインデクスの定義もできません。

(2)　ビュー表の基表について

ビュー表の基になる表を基表といいます。CREATE VIEW文の問合せ式中に指定した表（実表，ビュー表，外部表）が基表になります。

■ビューレベルとは

定義したビュー表が，実表または外部表から何番目の階層になるのかを示す値のことです。ビューレベルの例を次の図に示します。

図2‒2　ビューレベルの例

［説明］

ビュー表V1の基表はすべて実表のため，ビュー表V1のビューレベルは1になります。

ビュー表V2の基表は実表とビューレベル1のビュー表のため，ビュー表V2のビューレベルは2になります。

ビュー表V3の基表は実表のため，ビュー表V3のビューレベルは1になります。

ビュー表V4の基表は，ビューレベル2のビュー表とビューレベル1のビュー表のため，ビュー表V4のビューレベルは3になります。

外部表を基表にしている場合は，上記の例の実表を外部表に読み替えてください。

メモ

ディクショナリ表およびシステム表は，ビューレベル1のビュー表として扱われます。

表値構成子によって導出される導出表は，実表と同じ扱いになります。

(3)　ビュー表の無効化

実表，ビュー表，または外部表に対して，次に示す操作を実行した場合，操作対象の表に依存するすべてのビュー表が無効化されます。

DROP TABLE文（削除動作の指定を省略）で実表を削除した場合

この場合，削除した実表に依存するすべてのビュー表が無効化されます。

DROP VIEW文（削除動作の指定を省略）でビュー表を削除した場合

この場合，削除したビュー表に依存するすべてのビュー表が無効化されます。

DROP FOREIGN TABLE文（削除動作の指定を省略）で外部表を削除した場合

この場合，削除した外部表に依存するすべてのビュー表が無効化されます。

ALTER TABLE文で実表の表名を変更した場合

この場合，表名を変更した実表に依存するすべてのビュー表が無効化されます。

ALTER TABLE文で実表の列名を変更した場合

この場合，列名を変更した実表に依存するすべてのビュー表が無効化されます。

ALTER TABLE文で実表の列のデータ型を変更した場合

この場合，列のデータ型を変更した実表に依存するすべてのビュー表が無効化されます。

ALTER TABLE文で配列型の列の最大要素数を変更した場合

この場合，最大要素数を変更した実表に依存するすべてのビュー表が無効化されます。

ALTER TABLE文（削除動作の指定を省略）で実表の列を削除した場合

この場合，列を削除した実表に依存するすべてのビュー表が無効化されます。

ALTER TABLE文で，レギュラーマルチチャンク表をアーカイブマルチチャンク表に変更した場合

この場合，アーカイブマルチチャンク表に変更した表に依存するすべてのビュー表が無効化されます。

ALTER TABLE文で，アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更した場合

この場合，レギュラーマルチチャンク表に変更した表に依存するすべてのビュー表が無効化されます。

ALTER VIEW文でビュー表を再作成した場合

この場合，再作成したビュー表に依存するすべてのビュー表が無効化されます。

REVOKE文で表に対するSELECT権限を取り消した場合※

この場合，SELECT権限を取り消した表に依存するすべてのビュー表が無効化されます。

注※

認可識別子を指定して与えたSELECT権限と，PUBLIC指定で与えたSELECT権限の両方が取り消された場合が該当します。

付与権付きのSELECT権限が取り消された場合，またはSELECT権限の付与権だけが取り消された場合，ビュー表が無効化されることがあります。ほかのHADBユーザにSELECT権限を付与した際に使用した付与権が取り消された場合，付与したSELECT権限が取り消されます。SELECT権限が取り消された表が基表の場合，その基表に依存するビュー表が無効化されます。具体例については，マニュアルHADB　SQLリファレンスのアクセス権限の取り消しの例題を参照してください。

付与権については，「2.7.6　アクセス権限」の「(3)　アクセス権限の付与」を参照してください。

メモ

DROP SCHEMA文によるスキーマの削除や，DROP SERVER文による外部サーバの削除などによって，実表，ビュー表，または外部表が削除された場合も，削除された表に依存するすべてのビュー表が無効化されます。

■ビュー表の無効化とは

ビュー表に対するアクセスができなくなる状態のことを，ビュー表の無効化といいます。ビュー表の無効化を解除してビュー表に再びアクセスできるようにするには，ビュー表の無効化要因を対策したあとに，ALTER VIEW文でビュー表を再作成する必要があります。または，ビュー表の無効化要因を対策したあとに，いったんDROP VIEW文でビュー表を削除して，CREATE VIEW文でビュー表を再定義する必要があります。

■依存するビュー表とは

上記の1.～12.の操作によって，影響を受けるビュー表のことです。依存するビュー表の例を次の図に示します。

図2‒3　依存するビュー表の例

［説明］

実表T1に依存するビュー表は，ビュー表V1，V2，V4になります。

実表T2に依存するビュー表は，ビュー表V1，V2，V4になります。

実表T3に依存するビュー表は，ビュー表V2，V4になります。

実表T4に依存するビュー表は，ビュー表V3，V4になります。

ビュー表V1に依存するビュー表は，ビュー表V2，V4になります。

ビュー表V2に依存するビュー表は，ビュー表V4になります。

ビュー表V3に依存するビュー表は，ビュー表V4になります。

ビュー表V4に依存するビュー表はありません。

外部表を基表にしている場合は，上記の例の実表を外部表に読み替えてください。

2.1.3　外部表

外部のオブジェクトストレージまたはファイルストレージに格納されているデータ（外部データ）を表に読み込んで検索できます。外部データを読み込んだ表を外部表といいます。外部表は参照専用の表で，SQL文による更新はできません。外部表の詳細については，「2.16.1　外部表を使用した外部データの検索」を参照してください。

2.2　実表の種類

ここでは，実表の種類（ローストア表とカラムストア表，シングルチャンク表とマルチチャンク表）について説明します。

2.2.1　ローストア表とカラムストア表

実表には，ローストア表とカラムストア表があり，それぞれ表データの格納形式が異なります。業務内容や表の利用方法によって，これら2つの表を使い分けると，表の検索性能の向上が見込まれます。

(1)　ローストア表およびカラムストア表とは

表データの格納形式には，ローストア形式とカラムストア形式の2つがあり，表を定義するときに表データの格納形式を指定することができます。表データの格納形式にローストア形式を選択して定義した表をローストア表といい，表データの格納形式にカラムストア形式を選択して定義した表をカラムストア表といいます。

ローストア表には，ローストア形式でデータが格納されます。カラムストア表には，カラムストア形式でデータが格納されます。ただし，カラムストア表に対してINSERT文やUPDATE文を実行した場合，追加・更新したデータは，ローストア形式でカラムストア表に格納されます。

■カラムストア表と，表データの格納形式の関係

カラムストア表にadbimportコマンドでインポートしたデータは，カラムストア形式で格納されます。

カラムストア表にINSERT文やUPDATE文で追加・更新したデータは，ローストア形式で格納されます。

メモ

バージョン04-01より前のバージョンのHADBサーバで定義した表は，ローストア表になります。

(2)　ローストア形式とは

データを行単位でデータベースに格納する形式のことをローストア形式といいます。ローストア形式の場合，1行のデータが1レコードとしてデータベースに格納されます。ローストア形式の場合のデータ格納形式を次の図に示します。

図2‒4　ローストア形式の場合のデータ格納形式

［説明］

1行のデータが1レコードとしてデータベースに格納されます。

1ページには，最大255行分のデータが格納できます。

メモ

ページ，セグメントについては，「2.4.3　DBエリアの構造（セグメントとページ）」を参照してください。

■ローストア表に適した検索

ローストア表の場合，データが行単位で格納されているため，次のような検索をするときに適しています。

行単位でデータにアクセスするような検索をする場合

例えば，次のように，選択式に*を指定したSELECT文を実行する場合が該当します。

SELECT * FROM "T1" WHERE "C1">=DATE'2017-09-06'

また，選択式にほぼすべての列を指定するような場合も該当します。

検索対象のデータを，B-treeインデクスを使用して絞り込むような検索をする場合

表の検索が実行された場合，HADBサーバは，検索対象の行が格納されているページだけを読み込みます。そのため，B-treeインデクスを使用して検索対象の行を絞り込むことができる場合は，読み込むページ数を削減することができます。

(3)　カラムストア形式とは

データを列単位でデータベースに格納する形式のことをカラムストア形式といいます。カラムストア形式の場合，表の各列のデータが列ごとにまとまってデータベースに格納されます。カラムストア形式の場合のデータ格納形式を次の図に示します。

図2‒5　カラムストア形式の場合のデータ格納形式

［説明］

各列のデータが，列単位でデータベースに格納されます。

同じ行のデータは，同じセグメントに格納されます。

1セグメント内には，最大262,144行分の列データが格納できます。

メモ

ページ，セグメントについては，「2.4.3　DBエリアの構造（セグメントとページ）」を参照してください。

■カラムストア表に適した検索

カラムストア表の場合，データが列単位でまとまって格納されているため，次のような検索をするときに適しています。

検索対象のデータをあまり絞り込まないで，特定の列データ全体を検索する場合

特定の範囲内（特定の年や月など）の，特定の列データにアクセスする場合

特定の列データに対する値の集計（平均や合計などを求める）をすることが多い場合

特定の列データのグループ化をすることが多い場合

表の検索が実行された場合，HADBサーバは，検索対象の列データが格納されているセグメントを最初に探します。そのあとに，セグメント内の，検索対象の列データが格納されているページを読み込みます。そのため，特定の列データの集計をする場合は，集計対象の列データが格納されているページだけにアクセスすればよいため，読み込むページ数を削減することができます。

■列データの圧縮方式

カラムストア表にデータをインポートする際，各列のデータは圧縮されて表に格納されます。列データの圧縮方式には，幾つかの種類があります。列データの圧縮方式の種類については，「5.2.2　ローストア表とカラムストア表の選択基準」の「(4)　カラムストア表の列データの圧縮方式」を参照してください。

メモ

カラムストア表にデータをインポートする際，インポートするデータを基に，HADBサーバが自動的に圧縮方式を選択します。また，カラムストア表を定義する際に，列データの圧縮方式を選択することもできます。

■カラムストア形式のデータの削除と，無効情報管理用ページの関係

カラムストア表に格納されているカラムストア形式のデータをDELETE文で削除すると，対象のデータは無効となります。ディスクからは削除されません。

さらに，HADBサーバは，対象のデータが無効になったことを示す情報を無効情報管理用ページで管理します。カラムストア表に対してDELETE文を実行すると，無効情報管理用ページが確保される分，データ用DBエリアの空き容量が減ります。

そのため，データ用DBエリアの空き容量が少ない場合に，カラムストア形式のデータをDELETE文で削除すると，空き容量不足でエラーとなるおそれがあります。

■カラムストア表に対してINSERT文またはUPDATE文を実行する場合

カラムストア表に対してINSERT文またはUPDATE文を実行すると，追加または更新されたデータはローストア形式でカラムストア表に格納されます。カラムストア表にローストア形式のデータが格納された場合，カラムストア表の特性が生かされなくなるおそれがあります。例えば，特定の列データにアクセスする際の検索性能が低下したり，データの圧縮率が低下したりします。そのため，カラムストア表に対してINSERT文またはUPDATE文を実行することがある場合は，更新行のカラム化機能を有効にすることを推奨します。更新行のカラム化機能を有効にすると，HADBが，カラムストア表内のローストア形式のデータをカラムストア形式に自動的に変換します。更新行のカラム化機能については，「11.21　更新行のカラム化機能の運用（カラムストア表の検索性能の維持）」を参照してください。

2.2.2　シングルチャンク表とマルチチャンク表

実表には，シングルチャンク表とマルチチャンク表があり，それぞれ使用できる機能が異なります。ここでは，シングルチャンク表とマルチチャンク表の説明と，各表で使用できる機能について説明します。

(1)　シングルチャンク表とは

シングルチャンク表とは，1表に1つのチャンクだけを作成できる実表のことです。シングルチャンク表の場合，バックグラウンドインポート機能を使用することができません。

チャンクおよびバックグラウンドインポート機能については，「2.14　バックグラウンドインポート機能」を参照してください。

(2)　マルチチャンク表とは

マルチチャンク表とは，1表に複数のチャンクを作成できる実表のことです。マルチチャンク表の場合，バックグラウンドインポート機能を使用できます。

また，マルチチャンク表には，レギュラーマルチチャンク表とアーカイブマルチチャンク表の2種類があります。

レギュラーマルチチャンク表

レギュラーマルチチャンク表の場合，マルチチャンク表の基本機能であるバックグラウンドインポート機能は使用できますが，チャンクアーカイブ機能は使用できません。

アーカイブマルチチャンク表

アーカイブマルチチャンク表の場合，バックグラウンドインポート機能，およびチャンクアーカイブ機能の両方が使用できます。

チャンクアーカイブ機能については，「2.15　チャンクアーカイブ機能（チャンク内のデータの圧縮）」を参照してください。

重要

シングルチャンク表とマルチチャンク表で，使用できる機能が異なります。関係を次の表に示します。

表2‒1　実表の種類と使用できる機能の関係

実表の種類

使用できる機能

バックグラウンドインポート機能

チャンクアーカイブ機能

シングルチャンク表

×

×

マルチチャンク表

レギュラーマルチチャンク表

○

×

アーカイブマルチチャンク表

○

○

（凡例）

○：使用できます。

×：使用できません。

(3)　ローストア表およびカラムストア表との関係

表を設計する際は，表をローストア表とカラムストア表のどちらにするかを最初に決めます。そのあとに，表をシングルチャンク表とマルチチャンク表（レギュラーマルチチャンク表またはアーカイブマルチチャンク表）のどちらにするかを決めます。ただし，表をカラムストア表とする場合は，その表をアーカイブマルチチャンク表にすることはできません。

ローストア表およびカラムストア表と，シングルチャンク表およびマルチチャンク表の関係を次の表に示します。

表2‒2　ローストア表およびカラムストア表と，シングルチャンク表およびマルチチャンク表の関係

実表の種類

実表の種類

シングルチャンク表

マルチチャンク表

レギュラーマルチチャンク表

アーカイブマルチチャンク表

ローストア表

○

○

○

カラムストア表

○

○

×

（凡例）

○：この種類の表を定義できます。

×：この種類の表を定義できません。

2.3　インデクスの種類

インデクスには，B-treeインデクス，テキストインデクス，レンジインデクスの3種類があります。それぞれのインデクスについて説明します。

2.3.1　B-treeインデクス

B-treeインデクスは，B-tree構造でキー値を管理しています。表の検索時にB-treeインデクスを使用することで，探索条件を満たす行に直接アクセスできます。その分，表の検索性能を向上させることができます。

2.3.2　テキストインデクス

テキストインデクスは，SQL文の検索条件に指定した文字列を含む文字データを検索する場合に使用するインデクスです。テキストインデクスは，テキストインデクスを定義した実表の列に格納されているデータ（文字列）の出現情報を，ページ単位で管理しています。

SQL文の検索条件に次の指定をして表を検索する場合に，テキストインデクスを使用すると，読み込むページを少なくすることができます。その分，表の検索性能を向上させることができます。

LIKE述語

LIKE_REGEX述語

スカラ関数CONTAINS

テキストインデクスは，次の2つの管理部で構成されます。

文字列管理部

テキストインデクス化された文字列を管理します。

出現情報管理部

テキストインデクス化された文字列の出現情報を管理します。

テキストインデクスの管理部の構成を，次の図に示します。

図2‒6　テキストインデクスの管理部の構成

また，テキストインデクスを使用して実表を検索する場合の処理の流れを，次の図に示します。

図2‒7　テキストインデクスを使用した検索処理の概要

［説明］

次の流れで，テキストインデクスを使用して検索を行います。

文字列管理部から，LIKE述語中に指定した検索条件の文字列（「曇り」）を検索します。そして，該当する文字列番号（「12」）を取得します。

出現情報管理部から，文字列管理部で検索した文字列番号（「12」）をキーにして，該当する出現ページ番号（「2」と「511」）を検索します。

実表T1に対して，出現情報管理部の出現ページ番号（「2」と「511」）に対応するデータページを読み込みます。そして，該当する行ID（「4」と「1532」）を検索して，表データを取得します。このとき，該当する出現ページ番号以外のデータページは読み込みません。

メモ

検索条件に指定した列にB-treeインデクスおよびテキストインデクスが定義されている場合，表の検索時にはどちらか片方のインデクスだけが使われます。ただし，検索条件の指定内容によっては，両方のインデクスが使われないこともあります。

2.3.3　レンジインデクス

レンジインデクスは，レンジインデクスを定義した実表に格納されているデータのうち，次に示す2つの値域（列の値の最小値と最大値）を管理しています。

チャンク内に格納されているデータの値域

セグメント内に格納されているデータの値域

レンジインデクスが管理する値域の概要について次の図に示します。

図2‒8　レンジインデクスが管理する値域の概要

レンジインデクスを使用すると，探索条件を満たさない値域のデータを格納しているチャンクの検索処理がスキップされます（チャンクのスキップができます）。

また，チャンクのスキップ後に，探索条件を満たす値域のデータを格納しているチャンク内で，探索条件を満たさない値域のデータを格納しているセグメントの検索処理がスキップされます（セグメントのスキップができます）。

不要なチャンクおよびセグメントの検索処理をスキップすることで，その分検索性能が向上します。

チャンクのスキップ

探索条件を満たさない値域のデータを格納しているチャンクの検索処理をスキップすることです。

チャンクの概要については，「2.14.2　データインポート単位のデータ管理（チャンク）」を参照してください。チャンクのスキップの詳細については，「2.14.3　チャンクとレンジインデクスの関係」を参照してください。

セグメントのスキップ

探索条件を満たさない値域のデータを格納しているセグメントの検索処理をスキップすることです。

セグメントの概要については，「2.4.3　DBエリアの構造（セグメントとページ）」の「(1)　セグメント」を参照してください。セグメントのスキップの詳細については，次に示します。

メモ

■レンジインデクスと非順序実行方式の関係

非順序実行方式が適用されるSQL文の場合，検索処理の開始時点（カーソルオープン時点）で，レンジインデクスが管理しているチャンク内に格納されているデータの値域を読み込みます。そして，メモリに保存します。検索処理の実行中には，メモリに保存した情報に従って，チャンクのスキップを行うかどうかを判定します。

なお，次の条件をすべて満たすレンジインデクスが対象になります。

B-treeインデクスを使用する検索の対象表に定義されているレンジインデクスである

チャンクのスキップで使用されるレンジインデクスである

(1)　レンジインデクスの概要

ここでは，セグメントのスキップを例に，レンジインデクスの概要を次の図に示します。

図2‒9　レンジインデクスの概要（セグメントのスキップ）

(2)　レンジインデクスの特徴

レンジインデクスは，主に次に示す4つの特徴を持っています。チャンクのスキップができるレンジインデクスの特徴については，「2.14.3　チャンクとレンジインデクスの関係」の「(2)　レンジインデクスの特徴（チャンクのスキップ）」を参照してください。

(a)　B-treeインデクスやテキストインデクスとレンジインデクスを合わせて使用できる

レンジインデクスを使用してチャンクのスキップを行ったあとで，B-treeインデクスやテキストインデクスを使用できます。B-treeインデクスやテキストインデクスとレンジインデクスを使用した検索については，「2.14.3　チャンクとレンジインデクスの関係」の「(2)　レンジインデクスの特徴（チャンクのスキップ）」の「(a)　B-treeインデクスやテキストインデクスとレンジインデクスを合わせて使用できる」を参照してください。

メモ

B-treeインデクスやテキストインデクスと合わせて使用する場合，レンジインデクスを使用した検索（セグメントのスキップ）は行われません。

(b)　複数のレンジインデクスを使用できる

複数のレンジインデクスを使用した検索の例を次の図に示します。

図2‒10　複数のレンジインデクスを使用した検索の例

(c)　B-treeインデクスやテキストインデクスよりデータ容量が少なくなる

B-treeインデクスの場合は，表の1行に対して1つのインデクスキーを作成します。また，テキストインデクスの場合は，表の1行に対して，そこに含まれる文字列ごとに番号を割り振って管理します。

一方，レンジインデクスの場合は，1セグメントに対して1つの値域を作成します。そのため，レンジインデクスは，B-treeインデクスやテキストインデクスよりデータ容量が少なくなります。

(d)　セグメントに格納されているデータの値域の幅によって検索性能が変わる

レンジインデクスを使用した検索では，セグメント内に格納されているデータの値域の幅によって検索性能が変わります。例を次の図に示します。

図2‒11　セグメント内に格納されているデータの値域の幅によって検索性能が変わる例

［説明］

データの格納例1の場合は，検索処理を実行するセグメント数が2つになります。一方，データの格納例2の場合は，値域の重複があり，各セグメントの値域が格納例1に比べて広くなっています。そのため，検索処理を実行するセグメント数が4つになります。このようにセグメントに格納されているデータの値域の幅によって，検索性能が変わります。値域を狭くすると，検索性能が向上します。

(3)　レンジインデクスの値域の更新（セグメント）

行の追加，更新を繰り返すと，レンジインデクスの値域が広がり，レンジインデクスの効果が薄れていきます（値域が狭くなることはありません）。また，行の削除を繰り返すと，セグメント内に格納されているデータの値域に比べて，レンジインデクスの値域が広くなり，レンジインデクスの効果が薄れていきます。

レンジインデクスの効果が薄れてきた場合は，対象のレンジインデクスに対してインデクス再作成を実行し，レンジインデクスを作成し直してください。

レンジインデクスの値域が広がる条件を次の表に示します。

表2‒3　レンジインデクスの値域が広がる条件（セグメント）

項番

実行した操作

レンジインデクスの値域が広がる条件

1

行の追加

値域の範囲外の値を追加した場合に，追加行を格納するセグメントの値域が広がります。

2

行の更新

値域の範囲外の値に更新した場合に，更新行を格納するセグメントの値域が広がります。

3

行の削除

値域は広がりません。

2.4　DBエリア（表およびインデクスの格納領域）

ここでは，表およびインデクスを格納する論理的な領域であるDBエリアについて説明します。

2.4.1　DBエリアとは

HADBでは，表およびインデクスをDBエリアという論理的な領域に格納します。

1つのDBエリアには，複数の表またはインデクスを格納できます。DBエリアに表およびインデクスを格納できるケースを次の図に示します。

図2‒12　DBエリアに表およびインデクスを格納できるケース

ただし，1つの表またはインデクスを複数のDBエリアにわたって格納することはできません。DBエリアに表またはインデクスを格納できないケースを次の図に示します。

図2‒13　DBエリアに表またはインデクスを格納できないケース

2.4.2　DBエリアの種類

DBエリアは用途によって分類されます。DBエリアの種類を次の表に示します。

表2‒4　DBエリアの種類

項番

DBエリアの種類

説明

1

データ用DBエリア

表およびインデクスを格納するDBエリアです。

2

作業表用DBエリア

SQLの実行時にHADBが作成する作業表を格納するDBエリアです。

作業表については，マニュアルHADB　AP開発ガイドのAPの性能向上に関する設計の作業表が作成されるSQLを実行する際の考慮点の作業表の種類を参照してください。

3

マスタディレクトリ用DBエリア

システムの内部情報を格納するDBエリアです。

4

ディクショナリ用DBエリア

ディクショナリ表（実表），およびディクショナリ表（実表）のB-treeインデクスを格納するDBエリアです。

5

システム表用DBエリア

システム表（実表），およびシステム表（実表）のB-treeインデクスを格納するDBエリアです。

注

データ用DBエリア以外のDBエリアは，HADBによって自動的に作成されます。

■ディクショナリ表とは

ディクショナリ表とは，実表，ビュー表，B-treeインデクス，テキストインデクスおよびレンジインデクスの定義情報や，DBエリアの情報が格納されている表のことです。

ディクショナリ表には，実表とビュー表の2種類があります。詳細については，「付録B.1　ディクショナリ表の概要」を参照してください。

■システム表とは

システム表とは，実表，B-treeインデクス，およびテキストインデクスに関するコスト情報や，マルチチャンク表のチャンク情報が格納されている表のことです。

システム表には，実表とビュー表の2種類があります。詳細については，「付録C.1　システム表の概要」を参照してください。

2.4.3　DBエリアの構造（セグメントとページ）

DBエリアは，セグメントおよびページという単位で構成されます。1つのDBエリアは，複数のセグメントから構成されます。また，1つのセグメントは複数のページから構成されます。DBエリアの構造を次の図に示します。

図2‒14　DBエリアの構造

(1)　セグメント

セグメントは，表およびインデクスを格納するときの最小単位です。1つのセグメントには，1つの表または1つのインデクスが格納されます。セグメントと，表およびインデクスの関係を次の図に示します。

図2‒15　セグメントと，表およびインデクスの関係

なお，1つのセグメントに複数の表，または複数のインデクスは格納されません。セグメントに，表およびインデクスが格納されない例を次の図に示します。

図2‒16　セグメントに，表およびインデクスが格納されない例

(a)　セグメントの種類

セグメントは，セグメントに割り当てられるページの種類によって次のように分類されます。セグメントの種類を次の表に示します。ページの種類については，「2.4.3　DBエリアの構造（セグメントとページ）」の「(2)　ページ」の「(a)　ページの種類」を参照してください。

表2‒5　セグメントの種類

項番

セグメントの種類

説明

1

表（ローストア形式の場合）

基本行用セグメント

基本行を格納するページ（基本行用ページ）を割り当てるセグメントです。

2

分岐行用セグメント

分岐行を格納するページ（分岐行用ページ）を割り当てるセグメントです。

3

表（カラムストア形式の場合）

カラムデータ用セグメント

カラムストア表にデータインポートした際に，カラムストア形式でデータを格納するセグメントです。

また，更新行のカラム化機能によってローストア形式からカラムストア形式に変換されたデータも，カラムデータ用セグメントに格納されます。更新行のカラム化機能については，「11.21　更新行のカラム化機能の運用（カラムストア表の検索性能の維持）」を参照してください。

4

ローデータ用セグメント

カラムストア表にデータインポートした際に，分岐したデータ（分岐行）を格納するセグメントです。

また，次に示すデータも，ローデータ用セグメントに格納されます。

INSERT文でカラムストア表に追加したデータ

UPDATE文で更新したカラムストア表のデータ

UPDATE文やDELETE文を実行した場合に，対象のデータが無効となったことを示すデータ

5

B-treeインデクス

上位ページ用のセグメント

B-treeインデクスのルートページ，および中間ページを割り当てるセグメントです。

6

下位ページ用のセグメント

B-treeインデクスのリーフページ，行IDディレクトリページおよび行IDリストページを割り当てるセグメントです。

7

テキストインデクス

文字列管理部用のセグメント

テキストインデクスの文字列管理部ページを割り当てるセグメントです。

8

出現情報管理部用のセグメント

テキストインデクスの出現情報管理部ページを割り当てるセグメントです。

9

レンジインデクス

DBエリアファイル管理部用のセグメント

レンジインデクスのDBエリアファイル管理部ページを割り当てるセグメントです。

10

値域情報部用のセグメント

レンジインデクスのセグメント管理部ページ，および値域情報部ページを割り当てるセグメントです。

(b)　セグメントが割り当てられるタイミング，解放されるタイミング

セグメントが割り当てられるタイミング

セグメントは，新規にページを確保したときに割り当てられます。すでに割り当てられているセグメントに，空きページがない場合は，新規にセグメントが確保されて割り当てられます。

ただし，次に示す場合は，すでに割り当てられているセグメントに空きページがあっても，新規にセグメントが確保されて割り当てられます。

バックグラウンドインポートを実行する場合

複数のチャンクをマージする場合

チャンクの状態変更でカレントチャンクが切り替わり，新規にチャンクが作成される場合

ディクショナリ表およびシステム表の再編成を実行する場合

更新行のカラム化機能によって，HADBがローストア形式のデータをカラムストア形式のデータに変換する場合

セグメントが解放されるタイミング

割り当てられたセグメントは，次のタイミングで解放されます。

実表およびインデクスを削除したとき

実表の行データをすべて削除したとき（TRUNCATE TABLE文を実行したとき）

既存データをすべて削除する指定をして，実表にデータをインポートしたとき

チャンクを削除したとき

インデクスを再作成したとき

複数のチャンクをマージ後に，マージ元チャンクのインデクスのデータを削除したとき

チャンクをアーカイブ状態にしたとき

アーカイブマルチチャンク表から，レギュラーマルチチャンク表に変更したとき（ALTER TABLE文を実行したとき）

ディクショナリ表およびシステム表の再編成を実行したとき

(2)　ページ

ページは，ディスクI/O時の最小単位になります。ディスク上のデータを読み込むときや，ディスク上にデータを書き込むときは，ページ単位で実行されます。

(a)　ページの種類

ページは，格納するデータの種類によって次のように分類されます。ページの種類を次の表に示します。

表2‒6　ページの種類

項番

ページの種類

説明

1

データページ（ローストア形式の場合）

基本行用ページ

表データの基本行を格納するページです。

2

分岐行用ページ

表データの分岐行を格納するページです。

3

データページ（カラムストア形式の場合）

エントリページ

カラムストア形式で格納した表データに関する管理情報を格納するページです。このページは，カラムデータ用セグメント内に確保されます。

4

辞書ページ

圧縮方式に辞書圧縮（DICTIONARY）を選択した場合の，辞書データを格納するページです。このページは，カラムデータ用セグメント内に確保されます。

5

列データページ

カラムストア形式で格納した各列のデータ（分岐行のデータを除く）を格納するページです。このページは，カラムデータ用セグメント内に確保されます。

6

基本行用ページ

カラムストア表にINSERT文で追加したデータを，基本行として格納するページです。

また，カラムストア形式で格納したデータに対してUPDATE文を実行した場合に，更新データを基本行として格納するページです。

このページは，ローデータ用セグメント内に確保されます。

7

分岐行用ページ

カラムストア形式で格納した行のデータの分岐行を格納するページです。このページは，ローデータ用セグメント内に確保されます。

実長が128バイト以上の列データは，分岐行としてこのページに格納されます。

8

無効情報管理用ページ

カラムストア形式で格納したデータに対して，UPDATE文やDELETE文を実行した場合に，対象のデータが無効となったことを示す情報を管理するページです。

このページは，ローデータ用セグメント内に確保されます。

9

割り当て管理用ページ

ローデータ用セグメントの先頭に存在し，ローデータ用セグメント内のページの割り当てを管理しています。

10

B-treeインデクスのインデクスページ※1

上位ページ

ルートページ

ルートページとは，B-tree構造中の最上位のインデクスページのことです。

11

中間ページ

中間のB-treeインデクスページです。

12

リーフページ

最下位のB-treeインデクスページです。

13

行IDディレクトリページ

行IDリストページを管理するページです。

14

行IDリストページ

同じキー値が256個以上重複した場合の，そのキー値専用のリーフページです。

15

テキストインデクスのインデクスページ

文字列管理部ページ

テキストインデクス化された文字列の種類を管理するページです。

16

出現情報管理部ページ

テキストインデクス化された文字列の出現情報をページ単位で管理するページです。

17

レンジインデクスのインデクスページ

DBエリアファイル管理部ページ

レンジインデクスを定義した表の値域が，どのDBエリアファイルの値域かを管理するページです。

また，レンジインデクスを定義した表のチャンクの値域を格納するページです。

18

セグメント管理部ページ

レンジインデクスを定義した表の値域が，どのセグメントの値域かを管理するページです。

19

値域情報部ページ

レンジインデクスを定義した表が格納されているセグメントの値域を格納するページです。

20

作業表用ページ※2

作業表用DBエリアのページです。作業表用DBエリアのページサイズは32キロバイトを超えることができます。また，分岐行を格納するページはありません。

21

ディレクトリページ※3

DBエリアに関する管理情報を格納するページです。

注※1

B-treeインデクスとインデクスページの関係を次の図に示します。

注※2

作業表用ページは，作業表を作成するSQLを実行したときに確保されます。

注※3

ディレクトリページは，DBエリアを作成するときに一定数確保されます。そのあとは，データページやインデクスページが一定量に達するごとに，新たなページが確保されます。

■基本行および分岐行とは

ローストア形式の場合，1行のデータは同一ページに格納されますが，定義長が255バイトを超える可変長列がある場合，1行のデータが別ページに分割されて格納されることがあります。別ページに格納された行を分岐行といい，分岐先の情報を持つ行を基本行といいます。これは，ローストア表のデータの場合も，カラムストア表に更新系SQLで追加したデータの場合も同じです。

なお，ローストア表の場合，可変長列データが別ページに分割されて格納されるかどうかについては，表定義時（CREATE TABLE文実行時）に指定できます。

■ディレクトリページ群の存在とディレクトリページの配置

DBエリアファイルの先頭部分には，次に示す情報を管理するディレクトリページ群が存在します。

DBエリアの定義情報

定義された表およびインデクスの情報

チャンクの情報

DBエリアを構成する先頭のDBエリアファイルの場合は，ディレクトリページ群に，DBエリアの情報を管理するディレクトリページも含まれます。そのため，ディレクトリページの配置が，先頭のDBエリアファイルと2番目以降のDBエリアファイルでは異なります。

また，表およびインデクスを格納するセグメントは，ディレクトリページ群の後ろに配置されます。また，一定間隔でセグメントの情報を管理するディレクトリページが配置されます。そのため，DBエリアファイルのすべての領域が，表およびインデクスを格納するセグメントに使用されるわけではありません。

DBエリアファイル内のディレクトリページの配置例を，次の図に示します。

図2‒17　DBエリアファイル内のディレクトリページの配置例

(b)　ページが割り当てられるタイミング，解放されるタイミング

ページが割り当てられるタイミング

データページ，およびインデクスページが割り当てられるタイミングを次に示します。

ローストア表に行を追加したとき，および行を更新したとき

基本行用ページ，および分岐行用ページは，表に行を追加したとき，および行を更新したときに割り当てられます。CREATE TABLE文を実行してローストア表を定義したときには割り当てられません。行の追加を繰り返して，すでに割り当てられたページが満杯になった場合は，新規にページが確保されて割り当てられます。

レンジインデクスのインデクスページは，表に行を追加したとき，および行を更新したときに割り当てられます。

カラムストア表に行を追加したとき，および行を更新したとき

エントリページ，辞書ページ，および列データページは，adbimportコマンドを実行してカラムストア表に行を追加したときに割り当てられます。

基本行用ページは，更新系SQLを実行してカラムストア表に行を追加したとき，または行を更新したときに割り当てられます。

分岐行用ページは，adbimportコマンドまたは更新系SQLを実行して，カラムストア表に行を追加したとき，または行を更新したときに割り当てられます。

エントリページ，辞書ページ，列データページ，基本行用ページ，および分岐行用ページは，CREATE TABLE文でカラムストア表を定義したときには割り当てられません。行の追加を繰り返し，割り当て済みページが満杯になったときに，新規ページが確保されて割り当てられます。

無効情報管理用ページは，カラムストア形式のデータを削除したとき，またはデータを更新したときに割り当てられます。無効情報管理用ページは，CREATE TABLE文でカラムストア表を定義したときには割り当てられません。行の削除や行の更新を繰り返して，すでに割り当てられたページが満杯になったときに，新規にページが確保されて割り当てられます。

なお，更新系SQLによって追加・更新されたローストア形式のデータを削除したり，更新したりしたときには，無効情報管理用ページは割り当てられません。

レンジインデクスのインデクスページは，表に行を追加したとき，および行を更新したときに割り当てられます。

更新行のカラム化機能によって，HADBがローストア形式のデータをカラムストア形式のデータに変換したとき

カラムストア表内のローストア形式のデータをカラムストア形式のデータに変換したときに，新規にページが確保されて割り当てられます。

B-treeインデクスを定義したとき

CREATE INDEX文を実行してB-treeインデクスを定義したときに，上位ページと，リーフページが1つずつ割り当てられます。

B-treeインデクスのインデクスページスプリットが発生したとき

B-treeインデクスのインデクスページスプリットが発生するたびに，新規のインデクスページが確保されて，割り当てられます。B-treeインデクスのインデクスページスプリットについては，「5.3.4　B-treeインデクスのインデクスページ内の未使用領域の確保（PCTFREE）」の「(2)　B-treeインデクスのインデクスページスプリット」を参照してください。

テキストインデクスを定義したとき

CREATE INDEX文を実行してテキストインデクスを定義したときに，文字列管理部ページと，出現情報管理部ページが2つずつ割り当てられます。

テキストインデクスのインデクスページスプリットが発生したとき

テキストインデクスのインデクスページスプリットが発生するたびに，新規のインデクスページが確保されて，割り当てられます。テキストインデクスのインデクスページスプリットについては，「5.4.2　テキストインデクスのインデクスページ内の未使用領域の確保（PCTFREE）」の「(2)　テキストインデクスのインデクスページスプリット」を参照してください。

レンジインデクスを定義したとき

CREATE INDEX文を実行してレンジインデクスを定義したときに，1セグメント分のDBエリアファイル管理部ページが割り当てられます。

ページが解放されるタイミング

セグメントが解放されたときに，セグメント内のすべてのページが解放されます。

(c)　ページグループ

レンジインデクスの値域情報部用のセグメントからページを割り当てる場合，HADBは複数のページをまとめて確保します。このとき，まとめて割り当てられるページの単位をページグループといいます。また，ページグループを構成するページ数をページグループサイズといいます。

ページグループサイズを求める場合は，「5.8.6　レンジインデクスを格納するセグメント数の求め方」の「(1)　変数SGRIの求め方」の変数PGGRPSIZEを参照してください。

レンジインデクスのページグループサイズを確認する場合は，「10.9.5　レンジインデクスの状態や使用量を確認したい場合」を参照してください。

2.4.4　DBエリアのファイル構成

表やインデクスといったDBエリアに格納されるデータは，物理的にはファイルに格納されます。DBエリアを構成するファイルをDBエリアファイルといいます。

(1)　DBエリアファイルとして使用できるファイル

HADBでは，次に示すファイルをDBエリアファイルとして使用できます。

(a)　レギュラーファイル（ファイルシステム上のファイル）

OSが標準でサポートしているレギュラーファイルを，DBエリアファイルとして使用できます。

レギュラーファイルを更新および参照する際は，ファイルシステムの管理部に対する更新処理および参照処理が行われます。そのため，特にファイルの拡張処理が行われた場合に，ブロックスペシャルファイルよりアクセス性能が低くなります。

レギュラーファイルの格納先ディスクには，セクターサイズが512バイトまたは4,096バイトのディスクが使用できます。

(b)　ブロックスペシャルファイル

ブロックスペシャルファイルを，DBエリアファイルとして使用できます。ブロックスペシャルファイルとは，ブロックデバイスの1つです。ディスク全体，またはパーティションで区切られたディスク上の領域を1ファイルと見なしてアクセスします。

ブロックスペシャルファイルは，ブロック単位にデータを操作します。そのため，ブロックスペシャルファイルは，レギュラーファイルよりも高速にアクセスできます。

ブロックスペシャルファイルは，ユーザがデータベースを作成する前に使用するデータベース領域の大きさを考慮し，割り当てておく必要があります。

なお，ブロックスペシャルファイルには，HADBサーバが読み書きできる権限を付与する必要があります。ブロックスペシャルファイルの設定を変更する場合は，必ずudevルールを使用してください。udevルールについては，OSのマニュアルを参照してください。

ブロックスペシャルファイルの構成元ディスクには，セクターサイズが512バイトまたは4,096バイトのディスクが使用できます。

重要

ブロックスペシャルファイルをwriteモードでオープンすると，クローズ時にudevにイベントが通知され，udevルールに設定した状態に戻ります。そのため，chmodコマンド，chownコマンドなどでブロックスペシャルファイルの設定を変更した場合は，データベースの初期設定が完了したときやHADBサーバが終了したときに，所有者や権限がudevルールに設定した状態に戻ります。

(2)　DBエリアファイルの種類

DBエリアファイルは，DBエリアの種類に合わせて次に示す5種類があります。

(a)　データ用DBエリアファイル

データ用DBエリアファイルは，データ用DBエリアを構成するファイルです。

1つのデータ用DBエリアは，1つ以上のデータ用DBエリアファイルから構成されます。1つのデータ用DBエリアは，最大1,024個のデータ用DBエリアファイルで構成できます。

データ用DBエリアとデータ用DBエリアファイルの関係を次の図に示します。

図2‒18　データ用DBエリアとデータ用DBエリアファイルの関係

データ用DBエリアファイルは，DBディレクトリ下のレギュラーファイル，またはDBディレクトリ下以外のブロックスペシャルファイルに作成されます。

データ用DBエリアファイルの格納場所は，データベースの初期設定時に指定します。また，データベースの初期設定後，データ用DBエリアを追加するときにも指定します。

(b)　作業表用DBエリアファイル

作業表用DBエリアファイルは，作業表用DBエリアを構成するファイルです。

作業表用DBエリアファイルは，DBディレクトリ下のレギュラーファイル，またはDBディレクトリ下以外のブロックスペシャルファイルに，1つだけ作成されます。

作業表用DBエリアファイルの格納場所は，データベースの初期設定時に指定します。

作業表用DBエリアファイルは，ブロックスペシャルファイルに作成することを推奨します。レギュラーファイルに作成すると，作業表を複数作成するSQL文が実行された場合に，レギュラーファイルを格納しているファイルシステムに対してI/Oが集中してしまい，SQL文の実行時間が長くなるおそれがあります。

(c)　マスタディレクトリ用DBエリアファイル

マスタディレクトリ用DBエリアファイルは，マスタディレクトリ用DBエリアを構成するファイルです。

マスタディレクトリ用DBエリアファイルは，DBディレクトリ下のレギュラーファイル，またはDBディレクトリ下以外のブロックスペシャルファイルに，1つだけ作成されます。

マスタディレクトリ用DBエリアファイルの格納場所は，データベースの初期設定時に指定します。

(d)　ディクショナリ用DBエリアファイル

ディクショナリ用DBエリアファイルは，ディクショナリ用DBエリアを構成するファイルです。

ディクショナリ用DBエリアファイルは，DBディレクトリ下のレギュラーファイル，またはDBディレクトリ下以外のブロックスペシャルファイルに，1つだけ作成されます。

ディクショナリ用DBエリアファイルの格納場所は，データベースの初期設定時に指定します。

ディクショナリ用DBエリアファイルは，ブロックスペシャルファイルに作成することを推奨します。ブロックスペシャルファイルに作成すると，ディクショナリ用DBエリアの空き容量が不足してディクショナリ表の再編成が必要になった場合に，HADBサーバから警告メッセージが出力されるようになります。

なお，ディクショナリ用DBエリアファイルをレギュラーファイルに作成した場合は，ディクショナリ用DBエリアの空き容量が不足しても，HADBサーバから警告メッセージは出力されません。ディクショナリ用DBエリアファイルをレギュラーファイルに作成する場合は，運用を開始する前に，ディクショナリ表の再編成を行うタイミングを検討してください。そして，検討結果を基に，定期的にディクショナリ表を再編成するようにしてください。ディクショナリ表の再編成については，「11.20　ディクショナリ表およびシステム表の再編成」を参照してください。

(e)　システム表用DBエリアファイル

システム表用DBエリアファイルは，システム表用DBエリアを構成するファイルです。

システム表用DBエリアファイルは，DBディレクトリ下のレギュラーファイル，またはDBディレクトリ下以外のブロックスペシャルファイルに，1つだけ作成されます。

システム表用DBエリアファイルの格納場所は，データベースの初期設定時に指定します。

システム表用DBエリアファイルは，ブロックスペシャルファイルに作成することを推奨します。ブロックスペシャルファイルに作成すると，システム表用DBエリアの空き容量が不足してシステム表の再編成が必要になった場合に，HADBサーバから警告メッセージが出力されるようになります。

なお，システム表用DBエリアファイルをレギュラーファイルに作成した場合は，システム表用DBエリアの空き容量が不足しても，HADBサーバから警告メッセージは出力されません。システム表用DBエリアファイルをレギュラーファイルに作成する場合は，運用を開始する前に，システム表の再編成を行うタイミングを検討してください。そして，検討結果を基に，定期的にシステム表を再編成するようにしてください。システム表の再編成については，「11.20　ディクショナリ表およびシステム表の再編成」を参照してください。

(3)　DBディレクトリ

データ用DBエリアファイルなど，各DBエリアファイルが格納されるディレクトリをDBディレクトリといいます。DBディレクトリは，データベースの初期設定時に作成されます。

DBディレクトリには，次のファイルも格納されます。

データベースの更新履歴情報（システムログファイル）

HADBサーバが異常終了した場合，再開始するための情報（ステータスファイル）

DBディレクトリの構成については，「付録A.3　DBディレクトリの構成」を参照してください。

なお，DBディレクトリを作成するディスクには，セクターサイズが512バイトまたは4,096バイトのディスクが使用できます。

(4)　DBエリアファイルの構成例

DBエリアファイルを，DBディレクトリ下以外のブロックスペシャルファイルに作成した場合，DBディレクトリ下にはファイルの実体へのシンボリックリンクファイルが作成されます。

DBエリアファイルの構成例を次の図に示します。

図2‒19　DBエリアファイルの構成例

(5)　ファイルシステムに関する注意事項

ext4またはXFSのファイルシステム上に，データベースを構成するファイル（DBエリアファイルおよびDBディレクトリ内のファイル）を作成してください。

NFSなどのネットワークを経由するファイルシステム上に，データベースを構成するファイル（DBエリアファイルおよびDBディレクトリ内のファイル）を作成しないでください。

(6)　DBエリアファイルとマルチノード機能の関係

マルチノード機能を使用する場合，次のDBエリアファイルには，ブロックスペシャルファイルを割り当てる必要があります。

データ用DBエリアファイル

マスタディレクトリ用DBエリアファイル

ディクショナリ用DBエリアファイル

システム表用DBエリアファイル

また，割り当てるブロックスペシャルファイルに対応するディスクは，マルチノード構成の全ノードから参照できる必要があります。

メモ

クラウドストレージ機能を使用する場合，上記のDBエリアファイルにはブロックスペシャルファイルを割り当てる必要はありません。AWS環境の場合は，上記のDBエリアのデータはAmazon S3のS3バケット内のS3オブジェクトに格納されます。Azure環境の場合は，上記のDBエリアのデータはAzure Blob Storageのコンテナー内のBLOBに格納されます。オンプレミス環境でAmazon S3互換オブジェクトストレージを使用する場合は，上記のDBエリアのデータはAmazon S3互換オブジェクトストレージのS3バケット内のS3オブジェクトに格納されます。

クラウドストレージ機能については，以下を参照してください。

AWS環境でAmazon S3を使用する場合

「2.21.2　AWS環境でHADBサーバを使用する場合」の「(2)　Amazon S3にDBエリアのデータを格納する場合（クラウドストレージ機能を使用する場合）」の「(a)　クラウドストレージ機能とは」

Azure環境でAzure Blob Storageを使用する場合

「2.21.3　Azure環境でHADBサーバを使用する場合」の「(2)　Azure Blob StorageにDBエリアのデータを格納する場合（クラウドストレージ機能を使用する場合）」の「(a)　クラウドストレージ機能とは」

オンプレミス環境でAmazon S3互換オブジェクトストレージを使用する場合

「2.22　Amazon S3互換オブジェクトストレージを使用する場合」

(7)　クラウドストレージ機能を使用する場合

AWS環境でクラウドストレージ機能を使用する場合は，次のDBエリアのデータはAmazon S3のS3バケット内のS3オブジェクトに格納されます。Azure環境でクラウドストレージ機能を使用する場合は，次のDBエリアのデータはAzure Blob Storageのコンテナー内のBLOBに格納されます。オンプレミス環境でAmazon S3互換オブジェクトストレージを使用する場合は，次のDBエリアのデータはAmazon S3互換オブジェクトストレージのS3バケット内のS3オブジェクトに格納されます。そのため，次のDBエリアのDBエリアファイルは，DBディレクトリ下に作成されません。また，次のDBエリアのDBエリアファイルをレギュラーファイルまたはブロックスペシャルファイルに割り当てる必要もありません。

データ用DBエリア

マスタディレクトリ用DBエリア

ディクショナリ用DBエリア

システム表用DBエリア

クラウドストレージ機能を使用する場合，上記のDBエリアのDBエリアファイルは作成されませんが，HADBサーバは，上記の各DBエリアのデータを格納しているS3オブジェクト群またはBLOB群を概念的なDBエリアファイル（仮想DBエリアファイル）に格納していると仮定して動作します。仮想DBエリアファイルの詳細については，AWS環境の場合，またはオンプレミス環境でAmazon S3互換オブジェクトストレージを使用する場合は，「2.21.2　AWS環境でHADBサーバを使用する場合」の「(2)　Amazon S3にDBエリアのデータを格納する場合（クラウドストレージ機能を使用する場合）」の「(b)　DBエリアのデータの格納形式（S3バケットおよびS3オブジェクト）」を参照してください。Azure環境の場合は，「2.21.3　Azure環境でHADBサーバを使用する場合」の「(2)　Azure Blob StorageにDBエリアのデータを格納する場合（クラウドストレージ機能を使用する場合）」の「(b)　DBエリアのデータの格納形式（コンテナーおよびBLOB）」を参照してください。

重要

作業表用DBエリアのデータは，S3オブジェクトまたはBLOBには格納されません。作業表用DBエリアについては，クラウドストレージ機能を使用する場合であっても，作業表用DBエリアファイルをレギュラーファイルまたはブロックスペシャルファイルのどちらかに割り当てる必要があります。

クラウドストレージ機能については，以下を参照してください。

AWS環境でAmazon S3を使用する場合

「2.21.2　AWS環境でHADBサーバを使用する場合」の「(2)　Amazon S3にDBエリアのデータを格納する場合（クラウドストレージ機能を使用する場合）」の「(a)　クラウドストレージ機能とは」

Azure環境でAzure Blob Storageを使用する場合

「2.21.3　Azure環境でHADBサーバを使用する場合」の「(2)　Azure Blob StorageにDBエリアのデータを格納する場合（クラウドストレージ機能を使用する場合）」の「(a)　クラウドストレージ機能とは」

オンプレミス環境でAmazon S3互換オブジェクトストレージを使用する場合

「2.22　Amazon S3互換オブジェクトストレージを使用する場合」

2.4.5　DBエリアの自動増分

データの追加などによってDBエリアの容量が不足した場合に，HADBがDBエリアの容量を自動的に増やします。これをDBエリアの自動増分といいます。

メモ

クラウドストレージ機能を使用する場合，DBエリアの自動増分は動作しません。これは，adbinitコマンドまたはadbmodareaコマンドによるデータ用DBエリアの作成時に，DBエリアのデータを格納する領域すべてを初期化しているためです。

(1)　DBエリアの自動増分の単位

DBエリアの自動増分で1回に増分する容量は，セグメント1つ分です。

DBエリアの自動増分の例を，次の図に示します。

図2‒20　DBエリアの自動増分の例

DBエリアファイルがレギュラーファイルで構成されている場合，自動増分するとDBエリアファイル拡張時の更新処理の性能が低下します。そのため，次のどちらかを実施して，その結果を基に，データベースの初期設定時またはDBエリアの追加・拡張時に必要な分だけ初期化しておくことを推奨します。

DBエリアの容量を見積もる

小規模のテスト環境に対してadbdbstatusコマンドを実行して，DBエリアの容量を確認する

(2)　DBエリアの自動増分の上限値

DBエリアの自動増分では，DBエリアの容量が不足するたびに，自動増分の上限値まで，セグメント単位に増分を繰り返します。

自動増分の上限値は，DBエリアファイルごとに，データベースの初期設定時またはDBエリアの追加・拡張時に，初期化した領域を16テラバイト単位に切り上げた値になります。自動増分の上限値の例を次の図に示します。

図2‒21　DBエリアの自動増分の上限値の例

［説明］

データベースの初期設定時またはDBエリアの追加・拡張時に，2つのDBエリアファイルを20テラバイトずつ初期化した場合，1つのDBエリアファイルごとに32テラバイトが自動増分の上限値になります。そのため，DBエリア全体で64テラバイトが上限値になります。

なお，作業表用DBエリアの場合，作業表用DBエリアファイルの最大値が自動増分の上限値となります。データベースの初期設定時に初期化した領域を16テラバイト単位に切り上げた値ではありません。

2.5　ユーザとスキーマ

ここでは，HADBサーバの運用で使用するユーザの種類について説明します。また，表やインデクスを包括する概念であるスキーマについて説明します。

2.5.1　ユーザの種類（OSユーザとHADBユーザ）

HADBサーバの運用で使用するユーザの種類を次に示します。

OSユーザ

HADBユーザ

OSユーザとHADBユーザは別物であるため，混同しないよう，それぞれ適切に管理する必要があります。

OSユーザとHADBユーザの概要を次の図に示します。

図2‒22　OSユーザとHADBユーザの概要

(1)　OSユーザ

OSユーザとは，OSにログインして，OSの機能を利用できるユーザのことです。OSにログインする場合は，OSユーザのユーザIDおよびパスワードが必要です。

OSユーザのユーザIDおよびパスワードでは，HADBサーバには接続できません。HADBサーバに接続する場合は，HADBユーザのユーザIDおよびパスワードが必要です。

OSユーザには，権限という概念があります。OSにHADBサーバをインストールするためには，管理者権限を持ったOSユーザが必要です。

また，OSにはグループという概念があります。OSユーザが所属するグループによって，実行できる操作が異なります。

HADBサーバの運用で使用するOSユーザの種類を次に示します。

スーパユーザ

管理者権限を持ったOSユーザのことです。

スーパユーザは，OSの環境設定，OSユーザの管理，HADBサーバのインストールなどで使用します。

HADB管理者

HADBサーバを管理する専用のOSユーザのことです。

HADB管理者は，HADBサーバをインストールするマシンのOSに対して，スーパユーザが，HADB管理者として使用するOSユーザを追加することで作成されます。

HADB管理者は，HADBサーバの環境設定，HADBサーバの開始・終了，HADBサーバの管理・運用などで使用します。

HADB管理者には，HADBの各種コマンドを実行する権限があります。また，HADB管理者は，HADBサーバを運用するためのディレクトリ（サーバディレクトリおよびDBディレクトリ），およびディレクトリ下に作成されるファイルの所有者になります。

HADB管理グループに所属するOSユーザ

HADB管理者とは別に，HADBサーバを管理するOSユーザのことです。HADB管理者と同じOSグループ（HADB管理グループ）に所属します。

HADBサーバをインストールするマシンのOSに対して，スーパユーザが，HADB管理グループに所属するOSユーザを追加することで作成されます。

HADB管理グループに所属するOSユーザには，HADBの一部のコマンドを実行する権限があります。また，HADB管理者が所有するサーバディレクトリおよびDBディレクトリにアクセスできます。

(2)　HADBユーザ

HADBユーザとは，HADBサーバに接続して，データのインポート，データの検索・更新，HADBユーザの管理などを実施できるユーザのことです。

HADBサーバに接続する場合は，HADBユーザの認可識別子とパスワードを入力※1する必要があります。認可識別子とは，HADBサーバに接続するときに使用するユーザIDのことです。

データベースの初期設定時に，最初（1人目）のHADBユーザ※2が作成されます。作成したHADBユーザは，HADBサーバ内で管理されます。また，HADBユーザを複数作成することもできます。

なお，HADBユーザが，HADBサーバに接続して各種操作をするためには，権限を持っている必要があります。権限については，「2.7.1　権限の種類」を参照してください。

注※1

PAM認証を使用する場合は，OSユーザ名とパスワードを入力するか，または外部の認証サーバに登録されているユーザ名とパスワードを入力すると，HADBサーバに接続できます。PAM認証については，「2.6.2　PAM認証」を参照してください。

Keycloak認証を使用する場合は，Keycloakサーバに登録されているユーザ名とパスワードを入力するか，またはKeycloakサーバと連携している外部の認証サーバに登録されているユーザ名とパスワードを入力すると，HADBサーバに接続できます。Keycloak認証については，「2.6.3　Keycloak認証」を参照してください。

注※2

最初（1人目）のHADBユーザのユーザ認証方式は，データベース認証になります。データベース認証については，「2.6.1　データベース認証」を参照してください。

2.5.2　スキーマ

表やインデクスを包括する論理的な概念をスキーマといいます。1HADBユーザは，1つのスキーマだけを所有できます。また，スキーマに定義できる要素のことを，スキーマオブジェクトといいます。

HADBでは，自分（HADBサーバに接続中の認可識別子のHADBユーザ）が所有するスキーマに対してだけ，スキーマオブジェクトを定義できます。ほかのHADBユーザが所有するスキーマに対して，スキーマオブジェクトを定義できません。

スキーマの概念を次の図に示します。

図2‒23　スキーマの概念

HADBのスキーマオブジェクトを次に示します。

■スキーマオブジェクトの一覧

実表

ビュー表

外部表

B-treeインデクス

テキストインデクス

レンジインデクス

HADBでは，表やインデクスなどの定義情報を表形式で管理しています。この表をディクショナリ表といいます。また，表やインデクスのコスト情報，チャンク情報なども表形式で管理しています。この表をシステム表といいます。HADBの初期設定が完了すると，ディクショナリ表およびシステム表を所有するスキーマ（スキーマ名：MASTER）が自動的に作成されます。

スキーマの名前をスキーマ名といいます。1HADBユーザに対して，1つのスキーマ名が与えられます。スキーマ名を使用することで，HADBのデータベース内の表やインデクスを一意に識別することができます。

HADBでは，HADBサーバにアクセスするHADBユーザを識別するためのユーザID（認可識別子）とスキーマ名が同じになります。

2.6　ユーザ認証

HADBサーバへの接続要求を行ったHADBユーザが，正規のHADBユーザであるかどうかを判定しています。正規のHADBユーザであると判定された場合はHADBサーバへの接続が許され，正規のHADBユーザではないと判定された場合はHADBサーバへの接続要求がエラーになります。これをユーザ認証といいます。

ユーザ認証の処理方式（ユーザ認証方式）には，次の3種類があります。

データベース認証

PAM認証

Keycloak認証

各認証方式について説明します。

2.6.1　データベース認証

HADBユーザの認可識別子とパスワードを使用してユーザ認証を行います。このユーザ認証方式をデータベース認証といいます。データベース認証の概要を次の図に示します。

図2‒24　データベース認証の概要

［説明］

HADBユーザが正しい認可識別子およびパスワードを入力し，かつCONNECT権限を持っている場合に，HADBサーバに接続できます。

入力した認可識別子またはパスワードが正しくない場合，またはCONNECT権限を持っていない場合は，HADBサーバへの接続がエラーとなります。

CONNECT権限については，「2.7.2　ユーザ権限」の「(2)　CONNECT権限」で説明します。

2.6.2　PAM認証

OSのPAMの認証機能を使用すると，外部ユーザのユーザ名とパスワードでユーザ認証を行うことができます。このユーザ認証方式をPAM認証といいます。

なお，ここでいう外部ユーザとは，OSユーザや，外部の認証サーバ（LDAPサーバ，ADドメインサーバなど）のユーザを意味しています。

PAM認証の概要を次の図に示します。

図2‒25　PAM認証の概要

［説明］

HADBサーバへの接続要求時，外部ユーザ名とそのパスワードでユーザ認証を行います。例えば，OSユーザ名とそのパスワードでユーザ認証を行えます。また，LDAPサーバを使用している場合は，LDAPユーザ名とそのパスワードでユーザ認証を行えます。

以下の番号は，図中の丸付き数字の番号と対応しています。

HADBサーバへの接続要求時に指定した認可識別子（外部ユーザ名と同じ名称）が，HADBサーバに登録されているかどうかをHADBサーバが確認します。指定した認可識別子がHADBサーバに登録されていない場合（認可識別子の指定が正しくない場合），HADBへの接続要求がエラーになります。

メモ

PAM認証を使用する場合，外部ユーザ名と同じ名称の認可識別子のHADBユーザを事前に作成しておく必要があります。

指定した認可識別子がHADBサーバに登録されている場合（認可識別子の指定が正しい場合），HADBサーバはOSのPAMのモジュールに対して，認可識別子とパスワードを使用したユーザ認証を要求します。

認可識別子がOSユーザ名と同じ名称の場合は，OSのパスワードファイル（/etc/passwdファイル，/etc/shadowファイルなど）を使用してユーザ認証を行います。

認可識別子が外部の認証サーバ（LDAPサーバ，ADドメインサーバなど）のユーザ名と同じ名称の場合は，OSのSSSDのサービスを使用して，外部の認証サーバでユーザ認証を行います。

PAMのモジュールを使用したユーザ認証に成功し，かつ指定した認可識別子のHADBユーザがCONNECT権限を持っている場合は，HADBサーバに接続できます。

CONNECT権限については，「2.7.2　ユーザ権限」の「(2)　CONNECT権限」で説明します。

PAMのモジュールを使用したユーザ認証に失敗した場合，または指定した認可識別子のHADBユーザがCONNECT権限を持っていない場合は，HADBサーバへの接続要求がエラーになります。

このようにPAM認証では，外部の認証基盤を使用してユーザ認証を行います。そのため，外部ユーザのユーザ名とパスワード（OSユーザ名とパスワードなど）でHADBサーバに接続できるため，ユーザ管理の手間が軽減されます。ただし，PAM認証で使用する認証基盤にセキュリティ上の脆弱性があると，情報の漏えいや，HADBサーバを不正利用されるおそれがあります。そのため，使用する認証基盤のセキュリティ強度を考慮した上で，PAM認証の使用を検討してください。

PAM認証の導入方法については，「11.8　PAM認証の導入」を参照してください。PAMおよびSSSDの詳細や，基本的な設定方法については，OSのマニュアルを参照してください。

メモ

PAMで使用する認証方法は，PAM設定ファイルに指定するPAMのモジュールによって決まります。HADBでは次のPAMのモジュールを使用します。

pam_unix

OSユーザ名とパスワードを使用してユーザ認証を行います。

pam_sss

OSのSSSDのサービスを使用して，LDAPサーバやADドメインサーバなどの外部の認証サーバを使用してユーザ認証を行います。

■外部ユーザ名に関する留意事項

PAM認証を使用する場合，外部ユーザ名と同じ名称の認可識別子のHADBユーザを作成する必要があります。例えば，OSユーザ名がOSUSERの場合，認可識別子をOSUSERとするHADBユーザを作成する必要があります。そのため，OSユーザ名が，認可識別子の名称規則に従っている必要があります。例えば，認可識別子で使用できない文字がOSユーザ名に含まれている場合，HADBユーザを作成することができないため，PAM認証を行うことができません。

認可識別子の名称規則については，マニュアルHADB　SQLリファレンスの名前の指定の名前に使用できる文字の規則を参照してください。

■外部ユーザのパスワードに関する留意事項

PAM認証を使用する場合，外部ユーザ名に対応するパスワードを使用してユーザ認証を行います。例えば，PAM認証でOSユーザ名を使用する場合，パスワードはOSにログインする際のパスワードを使用します。ただし，HADBで扱うことができるパスワードの長さは1～255文字（1～255バイト）のため，OSユーザのパスワードも1～255文字（1～255バイト）にする必要があります。

2.6.3　Keycloak認証

Keycloakの認証機能を使用して，外部ユーザのユーザ名とパスワードでユーザ認証を行うことができます。このユーザ認証方式をKeycloak認証といいます。

なお，ここでいう外部ユーザとは，Keycloakサーバに登録されているユーザや，Keycloakサーバと連携している外部の認証サーバ（LDAPサーバ，ADドメインサーバなど）に登録されているユーザを意味しています。

Keycloak認証の概要を次の図に示します。

図2‒26　Keycloak認証の概要

［説明］

HADBサーバへの接続要求時，外部ユーザ名とそのパスワードでユーザ認証を行います。例えば，Keycloakサーバに登録されているユーザ名とパスワードや，Keycloakサーバと連携しているLDAPサーバなどの外部の認証サーバに登録されているユーザ名とパスワードでユーザ認証を行えます。

以下の番号は，図中の丸付き数字の番号と対応しています。

HADBクライアントは，接続情報中に指定されている認可識別子を使用してHADBサーバへ接続を要求します。

HADBサーバは，Keycloakサーバへの接続情報をHADBクライアントに送ります。

HADBクライアントは，接続情報中に指定されている認可識別子とパスワードを，トークンリクエストに含めてKeycloakサーバに送ります。

Keycloakサーバに登録しているユーザ情報を使ってユーザ認証を実施する場合は，Keycloakサーバが管理しているDBに登録されているユーザ情報を参照してユーザ認証を実施します。

外部の認証サーバに登録しているユーザ情報を使ってユーザ認証を実施する場合は，Keycloakサーバはユーザーフェデレーション機能を使用して外部の認証サーバに認証要求を送ります。

外部の認証サーバは，Keycloakサーバに認証結果を返します。

Keycloakサーバは，HADBクライアントにアクセストークンを含む認証結果を返します。

HADBクライアントは，HADBサーバに対して認証結果の解析を要求します。

HADBサーバは，アクセストークンの検証に必要な情報（メタ情報および公開署名鍵）を取得するために，Keycloakサーバに対してリクエストを送ります。

Keycloakサーバは，メタ情報および公開署名鍵をHADBサーバに送ります。

HADBサーバは，認証結果の解析によって抽出したアクセストークンの検証を行い，HADBサーバへの接続可否の結果をHADBクライアントに送ります。

このようにKeycloak認証では，Keycloakサーバまたは外部の認証サーバを使用してユーザ認証を行います。外部ユーザのユーザ名とパスワードでHADBサーバに接続できるため，ユーザ管理の手間が軽減されます。

Keycloak認証の導入方法については，「11.9　Keycloak認証の導入」を参照してください。

■外部ユーザ名に関する留意事項

Keycloak認証を使用する場合，外部ユーザ名と同じ名称の認可識別子のHADBユーザを作成する必要があります。例えば，Keycloakサーバに登録したユーザ名がKEYUSER01の場合，認可識別子をKEYUSER01とするHADBユーザを作成する必要があります。そのため，Keycloakサーバに登録したユーザ名が，認可識別子の名称規則に従っている必要があります。例えば，認可識別子で使用できない文字がKeycloakサーバに登録したユーザ名に含まれている場合，HADBユーザを作成することができないため，Keycloak認証を行うことができません。

認可識別子の名称規則については，マニュアルHADB　SQLリファレンスの名前の指定の名前に使用できる文字の規則を参照してください。

■外部ユーザのパスワードに関する留意事項

Keycloak認証を使用する場合，外部ユーザ名に対応するパスワードを使用してユーザ認証を行います。例えば，Keycloak認証でKeycloakサーバに登録したユーザ名を使用する場合，パスワードはKeycloakサーバに登録しているパスワードを使用します。ただし，HADBで扱うことができるパスワードの長さは1～255文字（1～255バイト）のため，Keycloakサーバに登録するパスワードも1～255文字（1～255バイト）にする必要があります。

■権限に関する留意事項

Keycloak認証を使用しているHADBユーザには次の権限を付与できません。また，次の権限を持っているHADBユーザのユーザ認証方式をKeycloak認証にすることはできません。

監査管理権限

監査参照権限

暗号管理権限

■署名アルゴリズムに関する留意事項

トークン認証で次の署名アルゴリズムは使用できません。

EdDSA

HS256～HS512

2.7　権限

ここでは，HADBサーバの運用で使用する権限について説明します。

2.7.1　権限の種類

HADBユーザが，HADBサーバを運用するためには，各種の権限が必要になります。

HADBユーザが，HADBサーバに対して各種操作を実行する際，必要な権限を持っていないと，エラーとなります。そのため，対象のHADBユーザが実施する運用項目に合わせて，必要な権限だけを付与することで，不正な操作が行われるリスクを減らせます。

HADBユーザは，複数の権限を持つことができます。権限は，大きく分けて次に示す4種類があります。

ユーザ権限

詳細は「2.7.2　ユーザ権限」を参照してください。

スキーマ操作権限

詳細は「2.7.3　スキーマ操作権限」を参照してください。

監査権限

詳細は「2.7.4　監査権限」を参照してください。

アクセス権限

詳細は「2.7.6　アクセス権限」を参照してください。

メモ

権限を付与したり，取り消したりするには，定義系SQL文のGRANT文およびREVOKE文を実行します。

2.7.2　ユーザ権限

ユーザ権限は，HADBユーザを管理したり，HADBサーバに接続したりするときに必要な権限です。

ユーザ権限には次の権限があります。

DBA権限

CONNECT権限

(1)　DBA権限

HADBユーザの管理およびユーザ権限の付与をする際に必要となるユーザ権限を，DBA権限といいます。

DBA権限を持つHADBユーザは，次に示す操作を実行できます。

HADBユーザの管理

HADBユーザの作成

作成したHADBユーザのユーザ情報の変更※

作成したHADBユーザの削除※

ユーザ権限およびスキーマ操作権限の付与と取り消し

HADBユーザへのユーザ権限およびスキーマ操作権限の付与

HADBユーザに付与したユーザ権限およびスキーマ操作権限の取り消し※

監査権限の付与

HADBユーザへの監査権限（監査管理権限，監査参照権限）の付与

暗号管理権限の付与と取り消し

HADBユーザへの暗号管理権限の付与

HADBユーザに付与した暗号管理権限の取り消し

外部サーバの管理

外部サーバの定義

外部サーバの定義変更

外部サーバの削除

注※

監査管理権限を持っているHADBユーザに対しては，次の操作はできません。

HADBユーザのユーザ情報の変更

HADBユーザの削除

ユーザ権限およびスキーマ操作権限の取り消し

重要

同一のHADBユーザが，DBA権限と監査管理権限の両方を持つことはできません。

同一のHADBユーザが，DBA権限と暗号管理権限の両方を持つことはできません。

なお，DBA権限を持っているHADBユーザは，ディクショナリ表（SQL_AUDITSを除く），およびシステム表に格納されているすべての情報を参照できます。

(2)　CONNECT権限

HADBユーザがHADBサーバに接続する際に必要となるユーザ権限を，CONNECT権限といいます。

CONNECT権限を持っていないと，DBA権限，スキーマ操作権限，監査権限，またはアクセス権限を持っていてもHADBサーバに接続できません。

2.7.3　スキーマ操作権限

スキーマ操作権限は，HADBユーザのスキーマを管理するときに必要な権限です。

スキーマ操作権限には次の権限があります。

スキーマ定義権限

(1)　スキーマ定義権限

HADBユーザがスキーマを定義する際に必要となるスキーマ操作権限を，スキーマ定義権限といいます。

スキーマ，表およびインデクスを定義・削除する場合は，スキーマ定義権限が必要になります。

2.7.4　監査権限

監査権限とは，次に示す2つの権限の総称です。監査証跡機能を使用する場合に，監査権限が必要になります。監査証跡機能については，「2.18　監査証跡機能」を参照してください。

監査管理権限

監査管理権限とは，監査証跡機能の運用を行う際に必要となる権限です。監査管理権限を持っていると，次の操作ができます。

adbaudittrailコマンドによる監査証跡機能の操作

CREATE AUDIT文による監査対象の定義

DROP AUDIT文による監査対象定義の削除

REVOKE文による監査権限の取り消し

監査対象定義の情報の参照（SQL_AUDITSの検索）

重要

同一のHADBユーザが，監査管理権限とDBA権限の両方を持つことはできません。

同一のHADBユーザが，監査管理権限と暗号管理権限の両方を持つことはできません。

監査参照権限

監査参照権限とは，監査証跡を参照する際に必要となる権限です。監査参照権限を持っていると，次の操作ができます。

ADB_AUDITREAD関数を使用した監査証跡の参照

adbconvertaudittrailfileコマンドによる監査証跡ファイルの変換

メモ

ADB_AUDITREAD関数とは，出力された監査証跡をHADBサーバが検索できる表形式のデータ集合に変換する関数です。SELECT文にADB_AUDITREAD関数を指定することで，監査証跡を参照できます。

重要

PAM認証またはKeycloak認証を使用するHADBユーザには，監査管理権限および監査参照権限を付与できません。

2.7.5　暗号管理権限

暗号管理権限とは，DBエリア暗号化機能で使用するHADB暗号鍵を管理する際に必要となる権限です。DBエリア暗号化機能については，「2.19　DBエリア暗号化機能」を参照してください。

暗号管理権限を持っていると，次の操作ができます。

HADB暗号鍵の作成（adbmkdmkコマンドの実行）

HADB暗号鍵の更新（adbupddmkコマンドの実行）

自分自身が持っている暗号管理権限の取り消し

重要

同一のHADBユーザが，暗号管理権限とDBA権限の両方を持つことはできません。

同一のHADBユーザが，暗号管理権限と監査管理権限の両方を持つことはできません。

PAM認証またはKeycloak認証を使用するHADBユーザには，暗号管理権限を付与できません。

2.7.6　アクセス権限

スキーマオブジェクトに対するアクセス制御を行う権限（アクセス権限）について説明します。

(1)　アクセス権限とは

アクセス権限とは，次に示すスキーマオブジェクトにアクセスする際に必要となる権限のことです。

実表

ビュー表

外部表

スキーマオブジェクトのデータをSQL文で検索したり，スキーマオブジェクトをコマンドで操作したりするには，スキーマオブジェクトに対するアクセス権限が必要です。

自分（HADBサーバに接続中の認可識別子のHADBユーザ）が所有しているスキーマオブジェクトに対しては，自動的にアクセス権限を持ちます。そのため，自分が所有しているスキーマオブジェクトにはアクセスできます。

ほかのHADBユーザが所有しているスキーマオブジェクトに対しては，アクセス権限を通常は持っていないため，アクセスできません。ほかのHADBユーザが所有しているスキーマオブジェクトにアクセスするには，そのスキーマオブジェクトに対するアクセス権限を持っているHADBユーザから，アクセス権限を付与してもらう必要があります。

ほかのHADBユーザが所有しているスキーマオブジェクトにアクセスする場合の例を次の図に示します。

図2‒27　ほかのHADBユーザが所有しているスキーマオブジェクトにアクセスする場合の例

［説明］

HADBユーザAは，表A.T1と表A.T2を所有しています。HADBユーザBは，表B.T3と表B.T4を所有しています。

HADBユーザAは，自分が所有している表A.T1と表A.T2に対するアクセス権限を持っているため，表A.T1と表A.T2にアクセスできますが，HADBユーザBが所有している表B.T3と表B.T4に対するアクセス権限を持っていません。そのため，表B.T3と表B.T4にはアクセスできません。HADBユーザAが，表B.T3と表B.T4にアクセスできるようにするには，表B.T3と表B.T4に対するアクセス権限をHADBユーザBに付与してもらう必要があります。

メモ

HADBユーザは，アクセス権限を持っているスキーマオブジェクトに対してだけアクセスできます。

(2)　アクセス権限の種類

アクセス権限には，次の表に示す種類があります。持っているアクセス権限の種類によって，スキーマオブジェクトに対して実行できる操作が変わります。

表2‒7　アクセス権限の一覧

項番

アクセス権限の種類

説明

対象のスキーマオブジェクト

1

SELECT権限

SELECT権限とは，HADBユーザが，対象のスキーマオブジェクトのデータを参照するために必要となる権限です。

SELECT文およびCREATE VIEW文を実行する場合，そのスキーマオブジェクトに対するSELECT権限が必要になります。

実表

ビュー表

外部表

2

INSERT権限

INSERT権限とは，HADBユーザが，対象のスキーマオブジェクトにデータを挿入するために必要となる権限です。

INSERT文を実行する場合，そのスキーマオブジェクトに対するINSERT権限が必要になります。

実表

ビュー表

3

UPDATE権限

UPDATE権限とは，HADBユーザが，対象のスキーマオブジェクトのデータを変更するために必要となる権限です。

UPDATE文を実行する場合，そのスキーマオブジェクトに対するUPDATE権限が必要になります。

実表

ビュー表

4

DELETE権限

DELETE権限とは，HADBユーザが，対象のスキーマオブジェクトのデータを削除するために必要となる権限です。

DELETE文を実行する場合，そのスキーマオブジェクトに対するDELETE権限が必要になります。

実表

ビュー表

5

TRUNCATE権限

TRUNCATE権限とは，HADBユーザが，対象のスキーマオブジェクトのデータを一括で削除するために必要となる権限です。

TRUNCATE TABLE文およびPURGE CHUNK文を実行する場合，そのスキーマオブジェクトに対するTRUNCATE権限が必要になります。

実表

6

COPY権限

COPY権限とは，HADBユーザが，対象のスキーマオブジェクトのデータを出力するために必要となる権限です。

COPY文を実行する場合，そのスキーマオブジェクトに対するCOPY権限が必要になります。

実表

ビュー表

外部表

7

REFERENCES権限

REFERENCES権限とは，HADBユーザが，CREATE TABLE文で参照制約（外部キー）を定義する際に必要となる権限です。

外部キーを定義する場合，被参照表（主キーを定義している表）に対するREFERENCES権限が必要になります。

実表

8

IMPORT TABLE権限

IMPORT TABLE権限とは，HADBユーザが，対象のスキーマオブジェクトにデータをインポートするために必要となる権限です。

adbimportコマンドを実行する場合，そのスキーマオブジェクトに対するIMPORT TABLE権限が必要になります。

実表

9

REBUILD INDEX権限

REBUILD INDEX権限とは，HADBユーザが，対象のスキーマオブジェクトのインデクスを再作成するために必要となる権限です。

adbidxrebuildコマンドを実行する場合，そのスキーマオブジェクトに対するREBUILD INDEX権限が必要になります。

実表

10

GET COSTINFO権限

GET COSTINFO権限とは，HADBユーザが，対象のスキーマオブジェクトとそのスキーマオブジェクトのインデクスからコスト情報を収集したり，収集したコスト情報を削除したりするために必要となる権限です。

adbgetcstコマンドを実行する場合，そのスキーマオブジェクトに対するGET COSTINFO権限が必要になります。

実表

11

EXPORT TABLE権限

EXPORT TABLE権限とは，HADBユーザが，対象のスキーマオブジェクトのデータをエクスポートするために必要となる権限です。

adbexportコマンドを実行する場合，そのスキーマオブジェクトに対するEXPORT TABLE権限が必要になります。

実表

ビュー表

外部表

12

MERGE CHUNK権限

MERGE CHUNK権限とは，HADBユーザが，対象のスキーマオブジェクトに対して作成された複数のチャンクを，1つのチャンクにマージするために必要となる権限です。

adbmergechunkコマンドを実行する場合，そのスキーマオブジェクトに対するMERGE CHUNK権限が必要になります。

実表

13

CHANGE CHUNK COMMENT権限

CHANGE CHUNK COMMENT権限とは，HADBユーザが，対象のスキーマオブジェクトに定義されたチャンクのコメントを設定・変更・削除するために必要となる権限です。

adbchgchunkcommentコマンドを実行する場合，そのスキーマオブジェクトに対するCHANGE CHUNK COMMENT権限が必要になります。

実表

14

CHANGE CHUNK STATUS権限

CHANGE CHUNK STATUS権限とは，HADBユーザが，対象のスキーマオブジェクトに定義されたチャンクの状態を変更するために必要となる権限です。

adbchgchunkstatusコマンドを実行する場合，そのスキーマオブジェクトに対するCHANGE CHUNK STATUS権限が必要になります。

実表

15

ARCHIVE CHUNK権限

ARCHIVE CHUNK権限とは，HADBユーザが，チャンクをアーカイブ状態にする際に必要となる権限です。

adbarchivechunkコマンドを実行する場合，対象のスキーマオブジェクトに対するARCHIVE CHUNK権限が必要です。

実表

16

UNARCHIVE CHUNK権限

UNARCHIVE CHUNK権限とは，HADBユーザが，チャンクのアーカイブ状態を解除する際に必要となる権限です。

adbunarchivechunkコマンドを実行する場合，対象のスキーマオブジェクトに対するUNARCHIVE CHUNK権限が必要です。

実表

メモ

実表の所有者（実表を定義したHADBユーザ）は，所有している実表に対して，上記の表に示すすべての種類のアクセス権限を持っています。

外部表の所有者（外部表を定義したHADBユーザ）は，所有している外部表に対して，上記の表に示すすべての種類のアクセス権限を持っています。

ビュー表の所有者（ビュー表を定義したHADBユーザ）は，所有しているビュー表に対して，上記の表に示すすべての種類のアクセス権限を持っているわけではありません。どの種類のアクセス権限を持っているかは，ビュー表の所有者が基表に対して持っているアクセス権限によって決まります。詳細については，「2.7.7　ビュー表に対するアクセス権限」を参照してください。

(3)　アクセス権限の付与

スキーマオブジェクトに対するアクセス権限をほかのHADBユーザに付与するには，そのスキーマオブジェクトに対するアクセス権限の付与権が必要になります。アクセス権限の付与権とは，スキーマオブジェクトに対するアクセス権限をほかのHADBユーザに付与できる権限のことです。

実表の所有者は，所有している実表に対するアクセス権限を付与権付きで持っています。また，外部表の所有者は，所有している外部表に対するアクセス権限を付与権付きで持っています。ビュー表の所有者は，所有しているビュー表に対するアクセス権限を持っていますが，付与権を持っているかどうかは，基表に対して付与権付きのアクセス権限を持っているかどうかによって決まります。詳細については，「2.7.7　ビュー表に対するアクセス権限」を参照してください。

重要

アクセス権限を付与する際，アクセス権限だけを付与するか，アクセス権限と一緒にその付与権も付与するかを選択できます。

スキーマオブジェクトに対するアクセス権限の付与例を次の図に示します。

図2‒28　スキーマオブジェクトに対するアクセス権限の付与例

［説明］

HADBユーザA

スキーマオブジェクト（表A.T1）の所有者です。表A.T1に対するアクセス権限を付与権付きで持っています。

HADBユーザB

表A.T1に対するアクセス権限を付与権付きで，HADBユーザAから付与されたHADBユーザです。表A.T1にアクセスでき，かつ表A.T1に対するアクセス権限をほかのHADBユーザに付与できます。

HADBユーザC

表A.T1に対するアクセス権限を付与権付きで，HADBユーザBから付与されたHADBユーザです。表A.T1にアクセスでき，かつ表A.T1に対するアクセス権限をほかのHADBユーザに付与できます。

HADBユーザD

表A.T1に対するアクセス権限（付与権なし）を，HADBユーザCから付与されたHADBユーザです。表A.T1にアクセスできます。HADBユーザDは，表A.T1に対するアクセス権限を付与権付きで持っていないため，表A.T1に対するアクセス権限をほかのHADBユーザに付与できません。

HADBユーザE

表A.T1に対するアクセス権限（付与権なし）を，HADBユーザCから付与されたHADBユーザです。表A.T1にアクセスできます。HADBユーザEは，表A.T1に対するアクセス権限を付与権付きで持っていないため，表A.T1に対するアクセス権限をほかのHADBユーザに付与できません。

ほかのHADBユーザにアクセス権限を付与するには，GRANT文を実行します。アクセス権限を付与権付きで付与する場合は，WITH GRANT OPTIONオプションを指定してGRANT文を実行します。

重要

上記の例の場合，HADBユーザB～HADBユーザEが持っている，表A.T1に対するアクセス権限は依存権限となります。

■依存権限とは

ほかのHADBユーザから付与されたアクセス権限のことを依存権限といいます。

（例）

HADBユーザAが持っている表A.T1に対するアクセス権限をP1とします。

HADBユーザBが持っている表A.T1に対するアクセス権限をP2とします。

HADBユーザCが持っている表A.T1に対するアクセス権限をP3とします。

HADBユーザDが持っている表A.T1に対するアクセス権限をP4とします。

HADBユーザEが持っている表A.T1に対するアクセス権限をP5とします。

この場合，アクセス権限P1の依存権限は，アクセス権限P2～P5になります。

アクセス権限P2の依存権限は，アクセス権限P3～P5になります。

アクセス権限P3の依存権限は，アクセス権限P4，P5になります。

アクセス権限P4とP5には，依存権限はありません。

依存権限は，自分に対してアクセス権限を付与したHADBユーザ（その延長上のHADBユーザも含む）が持っているアクセス権限が取り消された場合に影響を受けます。例えば，アクセス権限P2が取り消された場合，依存権限であるアクセス権限P3～P5も取り消されます。アクセス権限P3が取り消された場合，依存権限であるアクセス権限P4，P5も取り消されます。

■アクセス権限を付与できないHADBユーザ

アクセス権限の付与権を持っている場合でも，次に示すHADBユーザにはアクセス権限を付与できません。

付与権付きのアクセス権限を自分に付与したHADBユーザ

上記のHADBユーザに，対象のアクセス権限を付与権付きで付与している延長上のHADBユーザ

自分自身（付与されたアクセス権限を自分に対して付与することはできません）

（例）

(4)　アクセス権限の取り消し

自分が付与したアクセス権限を取り消すことができます。ほかのHADBユーザが付与したアクセス権限を取り消すことはできません。

重要

取り消したアクセス権限に依存権限がある場合，依存権限も一緒に取り消されます。

付与権付きのアクセス権限を取り消すと，アクセス権限と一緒に付与権も取り消されます。

スキーマオブジェクトに対するアクセス権限の取り消し例を次の図に示します。

図2‒29　スキーマオブジェクトに対するアクセス権限の取り消し例

［説明］

HADBユーザBが持っている表A.T1に対するアクセス権限を取り消す場合

このアクセス権限を取り消せるのは，HADBユーザAだけです。

HADBユーザBが持っている表A.T1に対するアクセス権限を取り消すと，その依存権限であるHADBユーザC，HADBユーザD，およびHADBユーザEが持っている，表A.T1に対するアクセス権限も取り消されます。

HADBユーザCが持っている表A.T1に対するアクセス権限を取り消す場合

このアクセス権限を取り消せるのは，HADBユーザBだけです。

HADBユーザCが持っている表A.T1に対するアクセス権限を取り消すと，その依存権限であるHADBユーザDとHADBユーザEが持っている，表A.T1に対するアクセス権限も取り消されます。

HADBユーザDが持っている表A.T1に対するアクセス権限を取り消す場合

このアクセス権限を取り消せるのは，HADBユーザCだけです。HADBユーザDが持っている表A.T1に対するアクセス権限には依存権限はありません。

HADBユーザEが持っている表A.T1に対するアクセス権限を取り消す場合

このアクセス権限を取り消せるのは，HADBユーザCだけです。HADBユーザEが持っている表A.T1に対するアクセス権限には依存権限はありません。

付与したアクセス権限を取り消すには，REVOKE文を実行します。

メモ

スキーマオブジェクトの所有者（上記の例のHADBユーザA）が持っているスキーマオブジェクト（上記の例の表A.T1）に対するアクセス権限は取り消すことはできません。

上記の例の場合，HADBユーザAは，自分が付与したアクセス権限ではないため，HADBユーザCが持っている表A.T1に対するアクセス権限を取り消すことはできません。ただし，HADBユーザAは，HADBユーザBに付与した表A.T1に対するアクセス権限，またはその付与権を取り消すことによって，HADBユーザCが持っている表A.T1に対するアクセス権限も一緒に取り消すことができます。HADBユーザCが持っている表A.T1に対するアクセス権限は，HADBユーザBが持っている表A.T1に対するアクセス権限の依存権限であるため，一緒に取り消すことができます。

■アクセス権限の付与権だけを取り消す場合

アクセス権限の付与権だけを取り消すことができます。付与権だけを取り消した場合，その付与権を使用して付与したアクセス権限とその依存権限が取り消されます。

（例）

［説明］

HADBユーザBが持っている表A.T1に対するアクセス権限の付与権を，HADBユーザAが取り消した場合，HADBユーザCが持っている表A.T1に対するアクセス権限が取り消されます。

また，HADBユーザDとHADBユーザEが持っている，表A.T1に対するアクセス権限も取り消されます（HADBユーザCが持っている表A.T1に対するアクセス権限の依存権限であるため）。

■同一のスキーマオブジェクトに対するアクセス権限を複数のHADBユーザから付与されている場合

次に示す例のように，HADBユーザBとHADBユーザCが，表A.T1に対するアクセス権限をHADBユーザDに付与した場合，HADBユーザDは，HADBユーザBから付与された表A.T1に対するアクセス権限と，HADBユーザCから付与された表A.T1に対するアクセス権限をそれぞれ持ちます。

（例）

例えば，HADBユーザDが持っている，HADBユーザBが付与した表A.T1に対するアクセス権限を取り消しても，HADBユーザCが付与した表A.T1に対するアクセス権限は取り消されません（自分が付与したアクセス権限しか取り消せないため）。HADBユーザDは，表A.T1に対するアクセス権限をまだ持っているため，表A.T1に対してアクセスできます。

(5)　複数のスキーマオブジェクトにアクセスする場合に必要となるアクセス権限

HADBユーザがSQL文を実行した場合に，SQL文の処理過程で複数のスキーマオブジェクトにアクセスするときは，それらすべてのスキーマオブジェクトに対するアクセス権限が必要となります。

対象のスキーマオブジェクトが実表の場合を例に，次で説明します。

複数の実表にアクセスするSQL文の実行例

SELECT * FROM "ADBUSER02"."T1", "ADBUSER02"."T2", "ADBUSER02"."T3"

［説明］

HADBユーザ（ADBUSER01）が，ほかのHADBユーザ（ADBUSER02）が所有する実表T1，T2およびT3を検索する場合は，検索対象すべての実表に対してアクセス権限（SELECT権限）が必要になります。もし，HADBユーザ（ADBUSER01）が実表T3のアクセス権限（SELECT権限）を持っていない場合は，上記のSELECT文は実行できません。

これは，SELECT権限だけでなく，INSERT権限，UPDATE権限，DELETE権限など，ほかのアクセス権限でも同様です。

2.7.7　ビュー表に対するアクセス権限

ビュー表に対するアクセス権限について説明します。

■定義したビュー表に対するアクセス権限

ビュー表を定義したHADBユーザが基表に対して持っているアクセス権限によって，定義したビュー表に対するアクセス権限が決まります。例えば，SELECT権限とINSERT権限を持っている表を基表としたビュー表を定義した場合，ビュー表を定義したHADBユーザは，そのビュー表に対するSELECT権限とINSERT権限を持ちます。

なお，基表が複数ある場合は，すべての基表に対して持っている共通のアクセス権限が，ビュー表に対するアクセス権限となります。

（例）

HADBユーザAは，次の表に対して次のアクセス権限を持っているものとします。

表X.T1：SELECT権限，INSERT権限，DELETE権限

表X.T2：SELECT権限，INSERT権限，UPDATE権限

表X.T3：SELECT権限，UPDATE権限，DELETE権限

表X.T1と表X.T2を基表としたビュー表A.V1をHADBユーザAが定義した場合，HADBユーザAは，ビュー表A.V1に対するSELECT権限とINSERT権限を持ちます。

表X.T1，表X.T2，および表X.T3を基表としたビュー表A.V2をHADBユーザAが定義した場合，HADBユーザAは，ビュー表A.V2に対するSELECT権限だけを持ちます。

メモ

定義したビュー表に対して，例えばUPDATE権限を持ちたい場合は，すべての基表に対してUPDATE権限を持っている必要があります。

定義したビュー表に対するアクセス権限の決定規則の詳細については，マニュアルHADB　SQLリファレンスのCREATE VIEW文の指定形式および規則の規則を参照してください。

■ビュー表に対するアクセス権限の付与

ビュー表に対するアクセス権限をほかのHADBユーザに付与するには，基表に対するアクセス権限を付与権付きで持っている必要があります。

（例）

HADBユーザAは，次の表に対して次のアクセス権限を持っているものとします。

表X.T1：SELECT権限（付与権付き），INSERT権限（付与権付き），UPDATE権限

表X.T2：SELECT権限（付与権付き），INSERT権限，DELETE権限（付与権付き）

表X.T1を基表としたビュー表A.V1をHADBユーザAが定義した場合，HADBユーザAは，ビュー表A.V1に対するSELECT権限（付与権付き），INSERT権限（付与権付き），およびUPDATE権限を持ちます。SELECT権限とINSERT権限については付与権があるため，HADBユーザAは，ビュー表A.V1に対するSELECT権限とINSERT権限をほかのHADBユーザに付与できます。

表X.T1と表X.T2を基表としたビュー表A.V2をHADBユーザAが定義した場合，HADBユーザAは，ビュー表A.V2に対するSELECT権限（付与権付き）とINSERT権限を持ちます。SELECT権限については付与権があるため，HADBユーザAは，ビュー表A.V2に対するSELECT権限をほかのHADBユーザに付与できます。

■ビュー表に対するアクセス権限の伝搬

基表に対するアクセス権限が新たに付与された場合，その基表に依存するビュー表に対するアクセス権限も新たに付与されます。これをアクセス権限の伝搬といいます。

（例）

HADBユーザAが，表X.T1を基表としたビュー表A.V1と，ビュー表A.V1を基表としたビュー表A.V2を定義しているとします。この場合に，表X.T1に対するINSERT権限がHADBユーザAに新たに付与されると，ビュー表A.V1，A.V2に対するINSERT権限もHADBユーザAに新たに付与されます。

また，基表に対するアクセス権限が取り消された場合も，アクセス権限の伝搬が発生します。

（例）

HADBユーザAが，表X.T1を基表としたビュー表A.V1と，ビュー表A.V1を基表としたビュー表A.V2を定義しているとします。この場合に，HADBユーザAが持っている表X.T1に対するINSERT権限が取り消されると，HADBユーザAが持っているビュー表A.V1，A.V2に対するINSERT権限も取り消されます。

アクセス権限の伝搬規則の詳細については，マニュアルHADB　SQLリファレンスのアクセス権限の付与の規則を参照してください。

■表に対するSELECT権限の取り消しによるビュー表への影響

ビュー表の基表に対するSELECT権限が取り消された場合，その基表に依存するすべてのビュー表が無効化されます。

（例）

HADBユーザAが，表X.T1を基表としたビュー表A.V1と，ビュー表A.V1を基表としたビュー表A.V2を定義しているとします。この場合に，HADBユーザAが持っている表X.T1に対するSELECT権限が取り消されると，表X.T1に依存するビュー表A.V1，A.V2が無効化されます。

また，付与権付きのSELECT権限が取り消された場合，またはSELECT権限の付与権が取り消された場合，その付与権を使用して付与されたSELECT権限も取り消されます。それに伴いビュー表が無効化されることがあります。

（例）

HADBユーザAが持っている表X.T1に対するSELECT権限の付与権が取り消されたとします。HADBユーザAが，表X.T1に対するSELECT権限をHADBユーザBに付与していた場合，HADBユーザBに付与した表X.T1に対するSELECT権限が取り消されます。HADBユーザBが，表X.T1を基表としたビュー表B.V1を定義している場合，ビュー表B.V1が無効化されます。

2.7.8　HADBユーザが参照できるディクショナリ表とシステム表の範囲

HADBユーザは，CONNECT権限を持っていれば，ディクショナリ表およびシステム表中に格納されているスキーマオブジェクトに関する情報などを参照することができます（更新などはできません）。ただし，HADBユーザが持っている権限によって，ディクショナリ表およびシステム表中の参照できる情報の範囲が異なります。HADBユーザが参照できる主な情報を，権限ごとに次に示します。

DBA権限を持っているHADBユーザ

ディクショナリ表（SQL_AUDITSを除く）およびシステム表に格納されているすべての情報を参照できます。

DBA権限を持っていないHADBユーザ

自分（HADBサーバに接続中の認可識別子のHADBユーザ）が定義した定義情報を参照できます。また，ほかのHADBユーザが定義した定義情報であっても，次の情報は参照できます。

表，インデクスなど，自分がアクセス権限を持っているスキーマオブジェクトに関する情報や，そのスキーマに関する情報

PUBLIC指定でアクセス権限を許可されたスキーマオブジェクトの情報や，そのスキーマに関する情報

監査管理権限を持っているHADBユーザ

監査証跡機能で監査の対象とする情報（ディクショナリ表のSQL_AUDITSに格納されている監査対象定義の情報）を参照できます。また，アクセス権限を持っていなくても，ほかのHADBユーザが定義したスキーマオブジェクトに関する情報の一部や，そのスキーマに関する情報を参照できます。

HADBユーザが参照できるディクショナリ表およびシステム表の情報の範囲の詳細については，次に示す個所を参照してください。

「付録B.1　ディクショナリ表の概要」の「(3)　HADBユーザが参照できるディクショナリ表の範囲」

「付録C.1　システム表の概要」の「(3)　HADBユーザが参照できるシステム表の範囲」

2.7.9　HADBユーザに権限を付与する例

ここでは，HADBユーザに権限を付与する流れを，例を使って説明します。

(1)　HADBユーザの役割と運用例

HADBユーザに権限を付与する前提となる運用例を次の図に示します。この例では，HADBユーザを4種類作成します。

図2‒30　各HADBユーザの役割と運用例

表2‒8　作成するHADBユーザの役割分担

項番

HADBユーザの役割

説明

1

ユーザ管理者

HADBユーザの管理を担当するHADBユーザです。ユーザ管理者は，次に示す役割のHADBユーザを作成します。

データベース構築者

データベース運用者

AP利用者

また，作成したHADBユーザに，CONNECT権限やスキーマ定義権限を付与します。

この例では，データベースの初期設定時に作成される最初（1人目）のHADBユーザを，ユーザ管理者とします。

2

データベース構築者

データベースの構築を担当するHADBユーザです。データベース構築者は，次に示す作業を行います。

スキーマ，表およびインデクスの定義

データのインポート

データベース運用者とAP利用者に，作成した表へのアクセス権限の付与

3

データベース運用者

データベースの運用を担当するHADBユーザです。データベース構築者が作成した表に対して，次に示す作業を行います。

データのインポート

インデクスの再作成

コスト情報の収集

SELECT文によるデータの検索

4

AP利用者

APを利用して，データベースを検索・更新するHADBユーザです。データベース構築者が作成した表に対して，次に示す作業を行います。

SELECT文によるデータの検索

INSERT文，UPDATE文およびDELETE文によるデータの追加・更新・削除

メモ

ここで説明する例には，監査証跡機能を使用する際に必要となる監査人は登場しません。監査証跡機能，および監査人の役割については，「2.18　監査証跡機能」を参照してください。

ここで説明する例には，DBエリア暗号化機能を使用する際に必要となるHADB暗号鍵の管理担当者は登場しません。DBエリア暗号化機能，およびHADB暗号鍵の管理担当者の役割については，「2.19　DBエリア暗号化機能」を参照してください。

(2)　HADBユーザに権限を付与する流れ

「(1)　HADBユーザの役割と運用例」で示したHADBユーザの役割を基に，HADBユーザに権限を付与する流れについて説明します。

まず，ユーザ管理者が，各HADBユーザを作成して権限を付与する流れについて，次の図に示します。

図2‒31　権限の付与の流れ（その1）

［説明］

OSユーザであるHADB管理者が，データベースの初期設定を実行します。その際，最初（1人目）のHADBユーザとして，ユーザ管理者が作成されます。

そのあとで，ユーザ管理者が，各HADBユーザを作成して，CONNECT権限やスキーマ定義権限を付与します。

次に，データベース構築者が定義した表へのアクセス権限を，データベース運用者とAP利用者に付与する流れについて，次の図に示します。

図2‒32　権限の付与の流れ（その2）

［説明］

データベース構築者が，表を定義します。そのあとで，データベース運用者とAP利用者に対して，表へのアクセス権限をそれぞれ付与します。データベース運用者とAP利用者は，データベース構築者が定義した表に対してアクセスできるようになり，持っているアクセス権限に従って作業を行うことができます。

データベース運用者が複数人いる場合，2. アクセス権限を付与で，データベース運用者の代表者に付与権付きのアクセス権限を付与すれば，データベース運用者の代表者が，ほかのデータベース運用者にアクセス権限を付与できるようになります。

3. 各AP利用者にアクセス権限を付与で，AP利用者の代表者に付与権付きのアクセス権限を付与すれば，AP利用者の代表者が，ほかのAP利用者にアクセス権限を付与できるようになります。

メモ

HADBユーザに，権限を付与したり，付与した権限を取り消したりする場合は，定義系SQLのGRANT文およびREVOKE文を実行します。

データベースの初期設定時に，最初（1人目）のHADBユーザが作成されます。最初（1人目）のHADBユーザには，DBA権限およびCONNECT権限が自動的に付与されます。

2.8　データベースのアクセス処理方式

ここでは，データベースのアクセス処理方式として，データベースの入出力処理に使用するグローバルバッファ，データベースの更新処理方式，およびデータベースの検索処理方式（非順序実行方式）について説明します。

2.8.1　グローバルバッファ

HADBは，データベースの入出力処理にグローバルバッファを使用します。

グローバルバッファとは，ディスク上のDBエリアに格納されているデータを入出力するための領域のことです。グローバルバッファは共有メモリ上に確保されます。グローバルバッファの概念を次の図に示します。

図2‒33　グローバルバッファの概念

表およびインデクスを格納するデータ用DBエリアには，必ずグローバルバッファを割り当てます。1つのグローバルバッファには，1つ以上のDBエリアを割り当てることができます。

2.8.2　データベースの更新処理方式

HADBでは，データベースの更新処理方式として追記型の更新処理方式を採用しています。

追記型の更新処理方式では，行を削除した場合，削除対象の行は無効になりますが，ディスクからは削除されません。また，行を更新した場合，更新対象の行は無効になり，更新後の行が新たな行として追加されます。更新前の無効になった行は，ディスクからは削除されません。

ただし，操作系SQLのTRUNCATE TABLE文を実行して行を削除した場合は，セグメントが解放され，削除対象の行はディスクから削除されます。

2.8.3　データベースの検索処理方式（非順序実行方式）

HADBには，データベースの検索処理方式として非順序実行方式が実装されています。非順序実行方式は，大規模なデータベースを高速に検索するために考案された処理方式です。

(1)　非順序実行方式の考え方

リレーショナルデータベースでは，検索処理は行の集合演算であり，ソート処理などを除いて，DBMSが返却する検索結果の順序に規定はありません。非順序実行方式は，この点に着目して考案されています。非順序実行方式の考え方を次の図に示します。

図2‒34　非順序実行方式の考え方

(2)　非順序実行方式による検索処理

非順序実行方式では，ハードウェア資源を有効に活用することで，大規模なデータベースに対しても高速な検索ができます。非順序実行方式による検索処理を，非順序実行方式でない場合と比較して，次の図に示します。

図2‒35　非順序実行方式による検索処理（非順序実行方式でない場合との比較）

非順序実行方式でない場合，1つのスレッドに1つの検索処理だけが割り当てられます。また，発行したI/Oが完了してから新たなI/Oが発行されます。そのため，ストレージのI/O性能の上限を下回る回数でしかI/Oを発行できません。結果として，データベースのデータ量が大規模になると，I/O完了待ちの時間が長くなってしまい，検索処理に時間が掛かります。

非順序実行方式では，検索処理が行単位に分割され，各スレッドに割り当てられます。割り当てられた検索処理はスレッドごとに独立して実行されます。また，各スレッドの処理はI/Oの進捗に応じて非順序に実行されます。つまり，各スレッドはI/Oを発行したあと，そのI/Oの完了を待たないで，別のスレッドに処理を切り替えながら並列に動作します（非同期I/O処理）。これによって，高速な検索を実現します。

(3)　非順序実行方式で使用するスレッド

HADBでは，依存関係のない処理を次に示す複数のスレッドに割り当て，I/Oおよび処理を並列化しています。非順序実行方式で使用するスレッドを次に示します。

リアルスレッド

OS（カーネルとライブラリ）によって管理されるスレッドです。CPUのコア数が2以上の場合，複数の処理を並列に実行できます。

擬似スレッド

HADBによって管理されるスレッドです。1つのリアルスレッド内で複数の擬似スレッドを生成できますが，同時に2つ以上の擬似スレッドが動作することはできません。HADBでは，複数の擬似スレッドを使うことによって処理やI/Oを並列に実行します。

(4)　非順序実行方式が適用されない場合

次のどれかの場合は，非順序実行方式は適用されないで，SQLが実行されます。

検索系SQL（SELECT文およびCOPY文）以外のSQLを実行する場合

SQL文実行時に使用するリアルスレッド数（adb_sql_exe_max_rthd_numオペランド）に0を指定した場合

擬似スレッドが生成できない場合（1リアルスレッドで生成できる擬似スレッド数（adb_sys_uthd_numオペランド）に0を指定した場合）

(5)　非順序実行方式と待ち状態の関係

SQL文の実行時に使用する処理リアルスレッド数が確保できない場合に発生する待ち状態と，非順序実行方式の関係について説明します。

(a)　SQL文を実行する場合

SQL文の実行時に使用する処理リアルスレッド数を確保できない場合，そのSQL文は待ち状態になります。待ち状態になったSQL文は，必要な処理リアルスレッド数が確保されたあとに，実行されます。

なお，先発のSQL文またはコマンドが待ち状態になった場合，後発のSQL文はすべて待ち状態になります（後発のSQL文に必要な処理リアルスレッド数が確保できる場合でも，待ち状態になります）。この場合，先発のSQL文またはコマンドの待ち状態が解放されたあとに，後発のSQL文の待ち状態が解放されます。

■クライアントグループ機能を適用しているとき

グループに所属しているHADBクライアントが実行するSQL文が待ち状態になった場合，同じグループ内のほかのHADBクライアントが実行するSQL文は，すべて待ち状態になります。この場合，先発のSQL文の待ち状態が解放されたあとに，後発のSQL文の待ち状態が解放されます。

なお，あるグループに所属しているHADBクライアントが実行するSQL文が待ち状態になった場合でも，ほかのグループに所属しているHADBクライアントが実行するSQL文は影響を受けません。

SQL文の実行時に使用する処理リアルスレッドについては，「7.2.2　性能に関するオペランド（set形式）」のadb_sql_exe_max_rthd_numオペランドを参照してください。

メモ

対象のSQL文が待ち状態かどうかを確認する方法については，「10.8.2　処理リアルスレッドの確保待ちの発生状況を確認する方法」を参照してください。

(b)　コマンドを実行する場合

adbimportコマンドなど，一部のコマンドの実行時には，処理リアルスレッドが使用されます。ただし，使用する処理リアルスレッド数を確保できない場合，そのコマンドは待ち状態になります。該当するコマンドについては，「7.2.2　性能に関するオペランド（set形式）」のadb_sys_rthd_numオペランドの対象のコマンドを参照してください。

なお，先発のコマンドまたはSQL文が待ち状態になった場合，後発のコマンドはすべて待ち状態になります（後発のコマンドに必要な処理リアルスレッド数が確保できる場合でも，待ち状態になります）。この場合，先発のコマンドまたはSQL文の待ち状態が解放されたあとに，後発のコマンドの待ち状態が解放されます。

■クライアントグループ機能を適用しているとき

グループに所属しているコマンドが待ち状態になった場合，同じグループ内のほかのコマンドを実行しても，すべて待ち状態になります。この場合，先発のコマンドの待ち状態が解放されたあとに，後発のコマンドの待ち状態が解放されます。

コマンド実行時に使用する処理リアルスレッドについては，マニュアルHADB　コマンドリファレンスの各コマンドを参照してください。

メモ

対象のコマンドが待ち状態かどうかを確認する方法については，「10.8.2　処理リアルスレッドの確保待ちの発生状況を確認する方法」を参照してください。

2.9　トランザクション制御

ここでは，HADBのトランザクション制御について説明します。

2.9.1　トランザクションの開始と終了

SQL文の前処理を実行したとき，または文ハンドルを確保したときに，HADBのトランザクションが開始します。また，同期点（コミットまたはロールバック）を設定したとき，またはHADBサーバから切り離したときに，HADBのトランザクションが終了します。

2.9.2　HADBがサポートしているトランザクション隔離性水準

HADBでは，次に示すトランザクション隔離性水準をサポートしています。

READ COMMITTED

REPEATABLE READ

(1)　READ COMMITTED

SQL文を実行した時点（検索の場合はカーソルオープン時点）でコミット済みのデータがSQL文の処理対象になります。そのため，トランザクション内で同じ検索系SQLを複数回実行した場合，ほかのトランザクションによるデータ更新によって，検索系SQLの実行結果が異なることがあります。

(2)　REPEATABLE READ

REPEATABLE READのトランザクション内で同じ探索条件となるSQL文を繰り返し実行した場合，そのSQL文の処理対象となるデータは，他トランザクションに関係なく常に同じものとなります。

なお，SQL文の処理対象となるデータは，次に示す表に従って変わります。

「表2‒9　データが格納されているチャンクとSQL文の処理対象となるデータの関係」

「表2‒10　チャンク内のデータを更新したトランザクションとSQL文の処理対象となるデータの関係」

表2‒9　データが格納されているチャンクとSQL文の処理対象となるデータの関係

項番

データが格納されているチャンク

SQL文の処理対象となるデータ

1

実表の定義時に作成されたチャンク

TRUNCATE TABLE文実行時に作成されたチャンク

-dオプションを指定したadbimportコマンド実行時に作成されたチャンク

自トランザクションの実行前に，バックグラウンドインポート機能を使用したadbimportコマンド実行時に作成されたチャンク

adbmergechunkコマンド実行時に作成されたチャンク（マージ先チャンク）

adbchgchunkstatusコマンドで状態を変更されたチャンク

自トランザクションの実行中に，バックグラウンドインポート機能を使用したadbimportコマンド実行時に作成されたチャンクで，アーカイブ状態のチャンク

「表2‒10　チャンク内のデータを更新したトランザクションとSQL文の処理対象となるデータの関係」を参照してください。

2

自トランザクションの実行中に，バックグラウンドインポート機能を使用したadbimportコマンド実行時に作成されたチャンクで，アーカイブ状態ではないチャンク

なし※

注※

自トランザクションの実行中に，次に示す2つのコマンドが実行された場合，SQL文の処理対象となるデータは，「表2‒9　データが格納されているチャンクとSQL文の処理対象となるデータの関係」および「表2‒10　チャンク内のデータを更新したトランザクションとSQL文の処理対象となるデータの関係」に従って変わります。

バックグラウンドインポート機能を使用したadbimportコマンド

adbimportコマンド実行時に作成されたチャンクを含む，複数のチャンクをマージするadbmergechunkコマンド

例を次の図に示します。

図2‒36　コマンドの実行に伴う自トランザクションの処理対象となるデータの変化

表2‒10　チャンク内のデータを更新したトランザクションとSQL文の処理対象となるデータの関係

項番

チャンク内のデータを更新したトランザクション

SQL文の処理対象となるデータ

1

自トランザクション

すべてのデータ

2

他トランザクション

SQL文による更新

INSERT文

UPDATE文

DELETE文

自トランザクション開始時にコミット済みのデータ

3

adbimportコマンドによるデータの追加

adbimportコマンドの処理が正常終了したときのデータ

4

PURGE CHUNK文による更新

PURGE CHUNK文が正常終了したときのデータ

5

TRUNCATE TABLE文による更新

TRUNCATE TABLE文が正常終了したときのデータ

6

adbchgchunkstatusコマンドによるチャンクの状態変更

SQL文の実行開始時（検索の場合はカーソルオープン時）に通常状態のチャンクのデータ

重要

チャンクIDを指定した検索（adbsqlコマンドのサブコマンド#GETDATAなど）を実行した場合は，トランザクション隔離性水準がREPEATABLE READにならないことがあります。詳細については，「11.5.9　チャンクをマージする方法（チャンク数を減らす方法）」の「(4)　adbmergechunkコマンド実行中に検索対象となるチャンク」を参照してください。

2.9.3　トランザクションの同時実行制御

複数のトランザクションが同時に同じ行にアクセスする際の処理方式について説明します。

(1)　トランザクションAとトランザクションBが同じ行を参照した場合

トランザクションAとトランザクションBは，お互いに影響はありません。

(2)　トランザクションAが更新した行をトランザクションBが参照した場合

トランザクションBが参照する行の内容は，トランザクションAの状態とトランザクションBのトランザクション隔離性水準によって決まります。トランザクションBが参照する行の内容を次の表に示します。

表2‒11　トランザクションBが参照する行の内容

項番

トランザクションAの状態

トランザクションBのトランザクション隔離性水準

READ COMMITTED

REPEATABLE READ

1

実行中

トランザクションAが更新する前の行の内容

トランザクションAが更新する前の行の内容

2

コミット済み

トランザクションAが更新したあとの行の内容

(3)　トランザクションAが更新した行をトランザクションBが更新しようとした場合

実行中のトランザクションAが更新した行を，トランザクションBが更新しようとした場合，トランザクションBをロールバックします。

2.9.4　トランザクションの同期点処理

トランザクションがコミットされると，そのトランザクションによる更新内容が確定されます。

トランザクションがロールバックされると，そのトランザクションによる更新内容が無効になり，データベースはトランザクション開始前の状態に戻ります。

2.9.5　トランザクションアクセスモード

トランザクションアクセスモードは，トランザクションで実行するSQL文を制御する際に使用します。HADBでは，次に示すトランザクションアクセスモードをサポートしています。

読み書き可能モード

読み取り専用モード

メモ

トランザクションアクセスモードは，クライアント定義adb_clt_trn_access_modeオペランド，およびコネクション属性で指定できます。クライアント定義およびコネクション属性については，マニュアルHADB　AP開発ガイドを参照してください。

(1)　読み書き可能モード

トランザクションアクセスモードが読み書き可能モードの場合に，トランザクションを開始すると，そのトランザクションは読み書き可能トランザクション（read/write transaction）となります。

読み書き可能トランザクションでは，すべてのSQL文が実行できます。

(2)　読み取り専用モード

トランザクションアクセスモードが読み取り専用モードの場合に，トランザクションを開始すると，そのトランザクションは読み取り専用トランザクション（read-only transaction）となります。

読み取り専用トランザクションでは，定義系SQL文および更新系SQL文は実行できません。

読み取り専用トランザクションで実行できるSQL文を次に示します。

■読み取り専用トランザクションで実行できるSQL文

SELECT文

COPY文

2.10　排他制御

ここでは，HADBの排他制御の仕組みについて説明します。

2.10.1　排他制御モード

排他制御モードの種類や同時実行の関係などについて説明します。

(1)　排他制御モードの種類

HADBサーバの排他制御モードには，複数の種類があります。

占有モード（EXCLUSIVE）（EX）

占有モードは，排他資源を確保したトランザクションが，排他資源を占有するモードです。占有モードで排他資源が確保されている場合，ほかのトランザクションは，排他資源に対して参照処理と更新処理を実行できません。

保護更新モード（PROTECTED UPDATE）（PU）

保護更新モードは，排他資源を確保したトランザクションが更新処理を行うモードです。保護更新モードで排他資源が確保されている場合，ほかのトランザクションは，排他資源に対して参照処理だけを実行できます。

共有更新モード（SHARED UPDATE）（SU）

共有更新モードは，排他資源を確保したトランザクションが更新処理を行うモードです。共有更新モードで排他資源が確保されている場合，ほかのトランザクションは，排他資源に対して参照処理と更新処理を実行できます。

共有参照モード（SHARED RETRIEVE）（SR）

共有参照モードは，排他資源を確保したトランザクションが参照処理を行うモードです。共有参照モードで排他資源が確保されている場合，ほかのトランザクションは，排他資源に対して参照処理と更新処理を実行できます。

(2)　排他制御モードの同時実行の関係性（排他資源の確保の競合が発生したときの動作）

複数のトランザクションが同一の排他資源を確保しようとした場合，排他資源の確保の競合が発生します。競合が発生した場合，先発のトランザクションの排他制御モードと，後発のトランザクションの排他制御モードの組み合わせによって，トランザクションの同時実行可否が決まります。

同一の排他資源に対する，トランザクションと排他制御モードの同時実行の関係性について，次の表に示します。

表2‒12　トランザクションと排他制御モードの同時実行の関係性

先発のトランザクションの排他制御モード

後発のトランザクションの排他制御モード

SR

SU

PU

EX

共有参照モード（SR）

○

○

○

×

共有更新モード（SU）

○

○

×

×

保護更新モード（PU）

○

×

×

×

占有モード（EX）

×

×

×

×

（凡例）

○：先発のトランザクションと後発のトランザクションを同時に実行できます。

×：後発のトランザクションは実行できません。

上記の表で×の組み合わせの場合，後発のトランザクションは排他資源を確保できません。そのため，後発のトランザクションの動作は，次のどちらかになります。

後発のトランザクションがエラーになり，ロールバックする

後発のトランザクションが，排他資源を確保できるまで待つ※

詳細については，「2.10.5　確保される排他資源と排他制御モード」を参照してください。

注※

排他資源を確保できるまで待つ場合に，同一トランザクション内で確保中の排他資源に対して，次に示す事象が発生したときはエラーになります。

確保中の排他資源に対する排他制御モードの遷移が発生したが，ほかのトランザクションと排他の競合が発生したため，排他制御モードの遷移ができないとき

なお，adbarchivechunkコマンドによるチャンクのアーカイブ処理の延長で，次に示す場合はエラーになりません。排他制御モードの遷移が完了するまで処理を待ちます。

前処理表に対する排他を取得している際に，共有参照モード（SR）から占有モード（EX）に排他制御モードを遷移する場合

処理対象表に対する排他を取得している際に，保護更新モード（PU）から占有モード（EX）に排他制御モードを遷移する場合

(3)　排他制御モードの遷移

1つのトランザクション内で同じ排他資源に対して，異なる種類の排他制御モードで続けて排他を取得した場合，次に示す表のとおりに排他制御モードが遷移します。

表2‒13　排他制御モードの遷移

最初に確保した排他制御モード

次に確保した排他制御モード

SR

SU

PU

EX

共有参照モード（SR）

−

SUに遷移する

PUに遷移する

EXに遷移する※1，※2，※5

共有更新モード（SU）

−

−

PUに遷移する

EXに遷移する※2

保護更新モード（PU）

−

−

−

EXに遷移する※2

占有モード（EX）

SRに遷移する※3

−

PUに遷移する※4

−

（凡例）

−：遷移しません。

注※1

ALTER VIEW文の処理の延長で，次に示す排他資源を確保する場合に，占有モード（EX）に遷移します。それ以外の場合は，排他資源を確保するときにエラーになります。

前処理表

注※2

adbarchivechunkコマンドの処理の延長で，次に示す排他資源を確保する場合に，占有モード（EX）に遷移します。それ以外の場合は，排他資源を確保するときにエラーになります。

前処理表

DBエリア（処理対象表およびインデクスの格納処理）

処理対象表

注※3

adbarchivechunkコマンドの処理の延長で，次に示す排他資源を確保する場合に，共有参照モード（SR）に遷移します。それ以外の場合は，排他制御モードは遷移しません。

前処理表

DBエリア（処理対象表およびインデクスの格納処理）

注※4

adbarchivechunkコマンドの処理の延長で，次に示す排他資源を確保する場合に，保護更新モード（PU）に遷移します。それ以外の場合は，排他制御モードは遷移しません。

処理対象表

注※5

ディクショナリ表に対するadbreorgsystemdataコマンドの処理の延長で，次に示す排他資源を確保する場合に，占有モード（EX）に遷移します。それ以外の場合は，排他資源を確保するときにエラーになります。

シングルコネクション

2.10.2　WAITモードおよび検知モード

WAITモードおよび検知モードについて説明します。

(1)　WAITモード

WAITモードには，WAITとNOWAITの2種類があります。排他資源が競合した場合，WAITモードによって次のように排他制御が変わります。

WAIT

排他資源を確保できない場合，排他資源を確保できるまで処理を待ち状態にします。ただし，同一トランザクション内ですでに確保している排他資源に対して排他制御モードの遷移が発生したときに，ほかのトランザクションが確保している排他資源によって排他資源の競合が発生した場合はエラー※になります。

注※

次に示す排他制御モードの遷移についてはエラーになりません。排他制御モードの遷移を伴う排他資源の確保が完了するまでコマンドの処理を待ちます。

adbarchivechunkコマンドを実行したときの前処理表（操作対象表）の排他制御モードの遷移（SR→EXへの遷移）

adbarchivechunkコマンドを実行したときの操作対象表の排他制御モードの遷移（PU→EXへの遷移）

NOWAIT

排他資源を確保できない場合，排他資源を確保できなかった処理をエラーにします。

(2)　検知モード

検知モードには，後発検知と検知なしの2種類があります。排他資源が競合した場合，検知モードによって次のように排他制御が変わります。

後発検知

先発の処理に後発の処理があることが通知されます。先発の処理は，処理を中断して排他資源をいったん解放します。後発の処理は，先発の処理が確保している排他資源を確保できるまで待ち状態になります。

検知なし

先発の処理は継続されます。後発の処理はWAITモードに応じた動作をします。

排他資源が競合する場合の排他制御を次の表に示します。

表2‒14　排他資源が競合する場合の排他制御

先発の処理の検知モード

後発の処理の検知モードとWAITモード

検知なし

後発検知

WAIT

NOWAIT

WAIT

NOWAIT

検知なし

後発待機

後発エラー

後発待機

後発エラー

後発検知

先発へ通知，かつ後発待機

先発へ通知，かつ後発待機※

（凡例）

後発待機

先発の処理が確保した排他資源を確保できるまで後発の処理が待ち状態になります。

後発エラー

後発の処理がエラーになります。

先発へ通知，かつ後発待機

先発の処理に後発の処理がきたことを通知し，先発の処理が確保した排他資源を確保できるまで後発の処理は待ち状態になります。

注※

先発の処理が後発検知の場合，後発の処理がNOWAITであっても，先発の処理が確保した排他資源を確保できるまで後発の処理は待ち状態になります。

2.10.3　排他資源

排他資源の一覧を次の表に示します。

各排他資源の排他制御モードの詳細については，「表2‒16　確保される排他資源と排他制御モード」を参照してください。

表2‒15　排他資源の一覧

項番

排他資源

説明

1

シングルコネクション

APがHADBサーバに接続したとき，または次に示すコマンドを実行したときに確保される排他資源です。

adbimportコマンド

adbidxrebuildコマンド

adbgetcstコマンド

adbdbstatusコマンド

adbmodareaコマンド

adbexportコマンド

adbmergechunkコマンド

adbchgchunkcommentコマンド

adbchgchunkstatusコマンド

adbarchivechunkコマンド

adbunarchivechunkコマンド

adbreorgsystemdataコマンド

adbclientdefmangコマンド

adbsyndictコマンド

adbaudittrailコマンド

adbconvertaudittrailfileコマンド

adbmodbuffコマンド

adbmkdmkコマンド

adbupddmkコマンド

adbmodareaコマンドと，APおよびそのほかのコマンドが同時実行されないように排他制御しています。

2

データベースアクセス

次に示すときに確保される排他資源です。

更新行のカラム化機能のメンテナンス処理の実行時

APのトランザクションの実行時

HADBサーバに接続するコマンドの実行時

この排他資源によって，1.のメンテナンス処理と2.のAPのトランザクション処理が同時実行されないように排他制御しています。また，1.のメンテナンス処理と3.のコマンド処理が同時実行されないように排他制御しています。

トランザクションおよびコマンドの処理性能に影響を及ぼさないように，トランザクションまたはコマンドが実行されているときはメンテナンス処理が実行されないように制御しています。また，メンテナンス処理の実行中にトランザクションまたはコマンドが開始された場合は，メンテナンス処理を中断します。

なお，更新行のカラム化機能を無効にする場合は，この排他資源を意識する必要はありません。

HADBサーバに接続するコマンドについては，マニュアルHADB　コマンドリファレンスのコマンドの一覧と共通規則のコマンドの一覧を参照してください。

3

ディクショナリ

定義系SQLの実行時に確保される排他資源です。

4

前処理表

次に示すときに，処理対象表ごとに確保される排他資源です。

操作系SQLの前処理時

定義系SQLの実行時

コマンドの実行時

5

DBエリア

データ用DBエリア

データ用DBエリア内のデータ更新時に確保される排他資源です。同一データ用DBエリア内のデータをAPとコマンドによって同時に更新されないように排他制御しています。

6

ディクショナリ用DBエリア

次に示すときに確保される排他資源です。

定義系SQLの実行時

adbdbstatusコマンドの実行時

ただし，adbdbstatusコマンドを実行しても次のどれかに該当する場合，この排他資源は確保されません。

DBエリアのサマリ情報を出力する場合

--shared-lockオプションを指定して情報を出力する場合

再編成要否の情報を出力する場合

adbreorgsystemdataコマンドの実行時（対象がディクショナリ表の場合）

7

システム表用DBエリア

システム表用DBエリア内のデータへのアクセス時に確保される排他資源です。

8

表

処理対象表

処理対象表へのアクセス時に確保される排他資源です。

9

ディクショナリ表

ディクショナリ表（実表）へのアクセス時に確保される排他資源です。

10

システム表（コスト情報）

コスト情報が格納されているシステム表（実表）へのアクセス時に確保される排他資源です。対象のシステム表（実表）を次に示します。

STATUS_TABLES

STATUS_COLUMNS

STATUS_INDEXES

11

システム表（チャンク情報）

チャンク情報が格納されているシステム表（実表）へのアクセス時に確保される排他資源です。対象のシステム表（実表）は，STATUS_CHUNKSです。

12

システム表（同義語辞書情報）

同義語辞書情報が格納されているシステム表（実表）へのアクセス時に確保される排他資源です。対象のシステム表（実表）は，STATUS_SYNONYM_DICTIONARIESです。

2.10.4　排他資源が確保される期間

トランザクションが確保した排他資源は，トランザクションがコミットまたはロールバックすると解放されます。

なお，次に示すコマンドを実行した場合は，各コマンドの開始時に排他資源が確保され，各コマンドの終了時に排他資源が解放されます。

adbimportコマンド

adbidxrebuildコマンド

adbgetcstコマンド

adbdbstatusコマンド

adbmodareaコマンド

adbexportコマンド

adbmergechunkコマンド

adbchgchunkcommentコマンド

adbchgchunkstatusコマンド

adbarchivechunkコマンド

adbunarchivechunkコマンド

adbreorgsystemdataコマンド

adbclientdefmangコマンド

adbsyndictコマンド

adbaudittrailコマンド

adbconvertaudittrailfileコマンド

adbmodbuffコマンド

adbmkdmkコマンド

adbupddmkコマンド

2.10.5　確保される排他資源と排他制御モード

確保される排他資源と排他制御モードを次の表に示します。

各排他資源の詳細については，「表2‒15　排他資源の一覧」を参照してください。また，各処理の排他制御の例については，「2.10.8　排他制御の例」を参照してください。

表2‒16　確保される排他資源と排他制御モード

処理内容

排他資源

シングルコネクション※16

ディクショナリ

前処理表

DBエリア

表

データ用DBエリア

ディクショナリ用DBエリア

システム表用DBエリア

処理対象表

ディクショナリ表

システム表（コスト情報）

システム表（チャンク情報）

システム表（同義語辞書情報）

定義系SQLの実行

CREATE VIEW文を実行する場合

−

EX（WAIT）

EX※1

−

SR

SR

−

SR（WAIT）とEX（WAIT）※14

SR

−

SR

ALTER VIEW文を実行する場合

−

EX（WAIT）

SR（WAIT）とEX※1，※18

−

SR

SR

−

SR（WAIT）とEX（WAIT）※14

SR

−

SR

次の定義系SQLを実行する場合

CREATE SCHEMA文

CREATE AUDIT文

DROP AUDIT文

CREATE FOREIGN TABLE文

CREATE SERVER文

−

EX（WAIT）

−

−

SR

SR

−

EX（WAIT）

SR

−

−

次の定義系SQLを実行する場合※21

ALTER SERVER文

DROP SERVER文

−

EX（WAIT）

EX※24

−

SR

SR

EX※27

EX（WAIT）

SR

−

−

EX（WAIT）※20，※26

EX（WAIT）※20，※27

上記以外の場合※21

−

EX（WAIT）

EX※25

EX

SR

SR

EX

EX（WAIT）

SR

SR※2

−

EX（WAIT）※20，※22，※23

EX（WAIT）※20，※22

EX（WAIT）※20，※22

検索系SQLの実行

−

−

SR（WAIT）※3

−

−

−

SR（WAIT）※4，※5，※6

SR（WAIT）

SR

SR※7

SR

INSERT文，UPDATE文，およびDELETE文の実行

更新対象表の場合※21

−

−

SR（WAIT）※3

SU※4，※5，※6

−

−

SU

SR（WAIT）

SR

SR※7

SR

SU（WAIT）※4，※5，※6

SU（WAIT）

更新対象表以外の場合

−

−

SR（WAIT）※3

−

−

−

SR（WAIT）※4，※5，※6

SR（WAIT）

SR

SR※7

SR

TRUNCATE TABLE文の実行※21

−

−

SR（WAIT）

EX

−

SR※17

EX

SR（WAIT）

SR

SR※17

−

EX（WAIT）

EX（WAIT）

PURGE CHUNK文の実行

更新対象表の場合※21

−

−

SR（WAIT）

EX

−

SR

EX

SR（WAIT）

SR

SR※15

SR

EX（WAIT）

EX（WAIT）

更新対象表以外の場合※8，※21

−

−

SR（WAIT）※3

−

−

−

SR

SR（WAIT）

SR

SR※15

SR

SR（WAIT）

adbimportコマンドの実行

バックグラウンドインポート機能を適用する場合※21

SR

−

SR（WAIT）

PU

−

SR

SR（WAIT）

SR（WAIT）

SR

SR

−

PU（WAIT）

バックグラウンドインポート機能を適用しない場合

SR

−

SR（WAIT）

EX

−

SR※9

EX（WAIT）

SR（WAIT）

SR

SR※9

−

adbidxrebuildコマンドの実行

バックグラウンドインポートの中断後に実行した場合※10

SR

−

SR（WAIT）

EX

−

SR

SR（WAIT）

SR（WAIT）

SR

SR

−

バックグラウンドインポートの中断後以外に実行した場合

SR

−

SR（WAIT）

EX

−

−

EX（WAIT）

SR（WAIT）

SR

−

−

adbgetcstコマンドの実行

SR

−

SR（WAIT）

EX

−

SR

SR（WAIT）

SR（WAIT）

SR

−

−

adbdbstatusコマンドの実行

DBエリアのサマリ情報を出力する場合

SR

−

−

−

−

−

−

SR（WAIT）

−

−

−

--shared-lockオプションを指定して情報を出力する場合，または再編成要否の情報を出力する場合※21

SR

−

SR※19

−

−

−

SR※19

SR（WAIT）

−

−

−

SR（WAIT）※19

SR（WAIT）※19

上記以外の場合※21

SR

−

SR※19

EX

EX

EX

−

SR（WAIT）

SR

SR

−

SR（WAIT）※19

EX（WAIT）

EX（WAIT）

EX（WAIT）

adbmodareaコマンドの実行

EX

−

−

−

−

−

−

SR（WAIT）

−

−

−

adbexportコマンドの実行※11

SR

−

SR（WAIT）※3

−

−

−

SR（WAIT）

SR（WAIT）

SR

SR※7

SR

adbmergechunkコマンドの実行

--concurrency-priorオプションを省略する場合

SR

−

SR（WAIT）

EX

−

SR

SU（WAIT）

SR（WAIT）

SR

SR

−

--concurrency-priorオプションを指定する場合

SR

−

SR（WAIT）

EX（WAIT）

−

SR

PU（WAIT，後発検知）※20

SR（WAIT）

SR

SR

−

adbchgchunkcommentコマンドの実行※21

SR

−

SR（WAIT）

EX

−

SR

SR（WAIT）

SR（WAIT）

SR

SR

−

EX（WAIT）

adbchgchunkstatusコマンドの実行

処理対象表がアーカイブマルチチャンク表の場合※21

SR

−

EX（WAIT）

EX

−

SR

EX（WAIT）

SR（WAIT）

SR

SR

−

EX（WAIT）

上記以外の場合※21

SR

−

SR（WAIT）

EX

−

SR

PU（WAIT）

SR（WAIT）

SR

SR

−

EX（WAIT）

adbarchivechunkコマンドの実行

SR

−

SR（WAIT）とEX（WAIT）※12，※13

SRとEX※12

−

SR

PUとEX（WAIT）※12，※13

SR（WAIT）

SR

SR

−

adbunarchivechunkコマンドの実行

SR

−

SR（WAIT）

EX

−

SR

EX（WAIT）

SR（WAIT）

SR

SR

−

adbreorgsystemdataコマンドの実行

対象がシステム表の場合

SR

−

SR（WAIT）

−

−

EX

PU

SR（WAIT）

SR

−

−

対象がディクショナリ表の場合

SRとEX※28

−

SR（WAIT）

−

EX

−

PU

SR（WAIT）

SR

−

−

adbclientdefmangコマンドの実行

SR

−

−

−

−

−

−

SR（WAIT）

−

−

−

adbsyndictコマンドの実行

同義語辞書の登録，更新，または削除の場合

SR

−

−

−

−

SR

−

−

−

−

SR

同義語辞書ファイルの同期，同義語一覧の出力，または不要なファイルの削除の場合

SR

−

−

−

−

−

−

−

−

−

SR

adbaudittrailコマンドの実行

SR

−

−

−

−

−

−

SR（WAIT）

−

−

−

adbconvertaudittrailfileコマンドの実行

SR

−

−

−

−

−

−

SR（WAIT）

−

−

−

adbmodbuffコマンドの実行

SR

−

−

−

−

−

−

−

−

−

−

adbmkdmkコマンドの実行

SR

−

−

−

−

−

−

−

−

−

−

adbupddmkコマンドの実行

EX

−

−

−

−

−

−

−

−

−

−

（凡例）

−：排他資源を確保しません。

EX：占有モード（EX）で排他資源を確保します。

PU：保護更新モード（PU）で排他資源を確保します。

SU：共有更新モード（SU）で排他資源を確保します。

SR：共有参照モード（SR）で排他資源を確保します。

WAIT：排他資源を確保できるまで待ち状態になります。

後発検知：先発の処理に後発の処理があることが通知されます。先発の処理は，処理を中断して排他資源をいったん解放します。後発の処理は，先発の処理が確保している排他資源を確保できるまで待ち状態になります。

注

複数のトランザクションで同一の排他資源を確保しようとした場合の動作については，「2.10.1　排他制御モード」の「(2)　排他制御モードの同時実行の関係性（排他資源の確保の競合が発生したときの動作）」を参照してください。

排他資源「データベースアクセス」については，上記の表に記載していません。排他資源「データベースアクセス」の目的および機能については，「2.10.3　排他資源」を参照してください。

注※1

ビュー表の基表に対しては共有参照モード（SR）で排他を取得します。その際，排他資源を確保できない場合は，排他資源を確保できるまで待ち状態（WAIT）になります。

注※2

CREATE TABLE文を実行してマルチチャンク表を作成した場合，および，DROP TABLE文を実行してマルチチャンク表を削除した場合に，排他資源を確保します。

また，DROP SCHEMA文などの定義系SQLを実行して，処理の延長でマルチチャンク表が削除された場合にも，排他資源を確保します。

注※3

処理対象表がアーカイブマルチチャンク表の場合，処理対象表およびシステム表（STATUS_CHUNKS）に対する排他が確保されます。ただし，処理対象表に対してINSERT文を実行する場合は該当しません。

注※4

同一トランザクション内で，保持機能にHOLD_CURSORS_OVER_COMMITを指定して作成したResultSetオブジェクトがある場合，コミットしても排他資源は解放されません。そのResultSetオブジェクトをクローズしたあとに，コミットすると解放されます。なお，ロールバックした場合は排他資源は解放されます。

注※5

SQL文の実行時にエラーが発生した場合，そのトランザクションが確保した排他資源はトランザクションが終了するまで解放されません。

注※6

複数の排他資源を確保するトランザクションが，排他資源の競合によってエラーとなった場合，エラー発生前までに確保していた排他資源はそのトランザクションが終了するまで解放されません。

注※7

処理対象表がアーカイブマルチチャンク表のときだけ，排他資源を確保します。

注※8

PURGE CHUNK文の探索条件に副問合せを指定して実行した場合に，副問合せに含まれる表を指します。

注※9

マルチチャンク表に対して，-dオプションまたは-mオプションを指定してadbimportコマンドを実行したときだけ，排他資源を確保します。

注※10

バックグラウンドインポート機能を適用した（-bオプションを指定した）adbimportコマンドの中断後に，--create-temp-fileオプションを指定してadbidxrebuildコマンドを実行した場合を指します。

注※11

adbexportコマンドを実行すると，処理の延長でSELECT文が実行されます。そのため，上記の表の「検索系SQLの実行」と同様の排他資源も確保されます。

注※12

adbarchivechunkコマンドによる処理の延長で，排他制御モードの遷移が発生します。排他制御モードの遷移後，占有モード（EX）で排他資源が確保されます。

注※13

adbarchivechunkコマンドの実行時に，排他制御モードの遷移が発生した場合は，遷移によって排他資源に対する確保待ちが発生することがあります。確保待ちが発生した場合，ほかのコネクションによる排他資源の確保が優先されることがあります。

注※14

前処理時は，共有参照モード（SR）で排他資源を確保します。その際，排他資源を確保できない場合は，排他資源を確保できるまで待ち状態（WAIT）になります。

実行時は，次のようになります。

処理対象のビュー表を定義したときのCREATE VIEW文にアーカイブマルチチャンク表を指定している場合

占有モード（EX）で排他資源を確保します。

上記以外の場合

占有モード（EX）で排他資源を確保します。その際，排他資源を確保できない場合は，排他資源を確保できるまで待ち状態（WAIT）になります。

注※15

更新対象表以外の表にアーカイブマルチチャンク表が含まれる場合は，前処理時に排他資源を確保します。それ以外の場合は，実行時に排他資源を確保します。

注※16

対象のコマンドを実行した場合に，排他資源を確保します。また，APがHADBサーバに接続した場合にも，排他資源を確保します。APがHADBサーバに接続した場合は，共有参照モード（SR）で排他資源を確保します。

注※17

処理対象表がマルチチャンク表のときだけ，排他資源を確保します。

注※18

ALTER VIEW文を実行すると，排他制御モードの遷移が発生します。排他制御モードの遷移後，占有モード（EX）で排他資源が確保されます。

注※19

adbdbstatusコマンドの対象がインデクスである場合は，インデクスが定義された表に対して排他を取得します。

adbdbstatusコマンドの対象がDBエリアである場合は，対象のDBエリアに格納された表，および対象のDBエリアに格納されたインデクスが定義されている表に対して，排他を取得します。

注※20

排他資源の確保時に待ち状態が発生した場合，ほかのコネクションのデータベース操作による排他資源の確保の追い越し（それに伴うデータベース操作の追い越し）が発生することがあります。

注※21

この行の情報が上下二段に分かれている場合，上段は，adb_sys_lck_conflict_behaviorオペランドにNOWAITを指定するか，またはadb_sys_lck_conflict_behaviorオペランドの指定を省略する場合の排他制御モードを示しています。下段は，adb_sys_lck_conflict_behaviorオペランドにWAITを指定する場合の排他制御モードを示しています。

注※22

REVOKE文の場合は，占有モード（EX）で排他資源を確保します。adb_sys_lck_conflict_behaviorオペランドにNOWAITを指定するか，またはadb_sys_lck_conflict_behaviorオペランドの指定を省略する場合と同じ排他制御になります。

注※23

次の定義系SQLを実行してビュー表を削除する場合，削除対象のビュー表に対しては占有モード（EX）で排他資源を確保します。adb_sys_lck_conflict_behaviorオペランドにNOWAITを指定するか，またはadb_sys_lck_conflict_behaviorオペランドの指定を省略する場合と同じ排他制御になります。

DROP VIEW文

DROP TABLE文

DROP FOREIGN TABLE文

DROP SCHEMA文

DROP USER文

注※24

処理対象の外部サーバを使用している外部表，およびその外部表に依存するビュー表に対して排他資源を確保します。ただし，ビュー表については，DROP SERVER文の場合に限り排他資源を確保します。

注※25

次の定義系SQLで表を削除する場合，削除対象の表に対して排他資源を確保します。

DROP VIEW文

DROP TABLE文

DROP FOREIGN TABLE文

DROP SCHEMA文

DROP USER文

REVOKE文

注※26

処理対象の外部サーバを使用している外部表，およびその外部表に依存するビュー表に対しては，占有モード（EX）で排他資源を確保します。ただし，ビュー表については，DROP SERVER文の場合に限り排他資源を確保します。adb_sys_lck_conflict_behaviorオペランドにNOWAITを指定するか，またはadb_sys_lck_conflict_behaviorオペランドの指定を省略する場合と同じ排他制御になります。

注※27

DROP SERVER文の場合に限り排他資源を確保します。

注※28

ディクショナリ表の検索後に，占有モード（EX）で排他資源を確保します。排他制御モードの遷移が発生します。

上記の表の見方を，検索系SQLを実行した場合を例にして説明します。

検索系SQLを実行した場合

アーカイブマルチチャンク表に対して検索系SQLを実行すると，次に示す排他資源を共有参照モード（SR）で確保します。

前処理表

処理対象表

ディクショナリ表

システム表（コスト情報）

システム表（チャンク情報）

システム表（同義語辞書情報）

上記の排他資源を，共有参照モード（SR），共有更新モード（SU），および保護更新モード（PU）で確保する処理は実行できます。例えば，adbgetcstコマンドは実行できます。

ただし，上記の排他資源を，占有モード（EX）で確保する処理は実行できません。例えば，定義系SQL，TRUNCATE TABLE文などは実行できません。

2.10.6　ディクショナリ表およびシステム表の参照時に排他が取得される実表

SQL文を実行してディクショナリ表およびシステム表を参照すると，ディクショナリ表（実表）およびシステム表（実表）の排他が取得されます。ディクショナリ表およびシステム表の参照時に排他が取得される実表について，次の表に示します。

表2‒17　ディクショナリ表およびシステム表の参照時に排他が取得される実表

（凡例）

◎：SQL文の前処理時，およびSQL文の実行時に共有参照モード（SR）で排他を取得します。なお，SQL文の実行時に，対象の排他資源がすでに占有モード（EX）で確保されている場合は，確保できるまで待ち状態になります。

○：SQL文の実行時に共有参照モード（SR）で排他を取得します。なお，対象の排他資源がすでに占有モード（EX）で確保されている場合は，確保できるまで待ち状態になります。

△：SQL文の前処理時に共有参照モード（SR）で排他を取得します。

−：排他を取得しません。

2.10.7　データベースの参照・更新時に排他が取得されるディクショナリ表とシステム表

SQL文やコマンドを実行してデータベースを参照したり更新したりすると，ディクショナリ表（実表）とシステム表（実表）に対する排他が取得されます。データベースを参照したり更新したりした場合に，排他が取得されるディクショナリ表とシステム表について，次の2つの表に示します。

表2‒18　データベースの参照・更新時に排他が取得されるディクショナリ表とシステム表（その1）

（凡例）

EX

占有モード（EX）で排他を取得します。

SRW

共有参照モード（SR）で排他を取得します。なお，ほかのトランザクションによって対象の排他資源がすでに確保されている場合は，確保できるまで待ち状態になります。

SR

共有参照モード（SR）で排他を取得します。

●

SQL文中に次のどれかの指定がある場合に限り，共有参照モード（SR）で排他を取得します。なお，ほかのトランザクションによって対象の排他資源がすでに確保されている場合は，確保できるまで待ち状態になります。

ADB_AUDITREAD関数を指定した表関数導出表

ディクショナリ表のSQL_AUDITS表

ADB_AUDITREAD関数を指定した表関数導出表をCREATE VIEW文中に指定して定義されたビュー表

ディクショナリ表のSQL_AUDITS表をCREATE VIEW文中に指定して定義されたビュー表

3.または4.のビュー表に依存するビュー表

表2‒19　データベースの参照・更新時に排他が取得されるディクショナリ表とシステム表（その2）

（凡例）

SRW

共有参照モード（SR）で排他を取得します。なお，ほかのトランザクションによって対象の排他資源がすでに確保されている場合は，確保できるまで待ち状態になります。

SR

共有参照モード（SR）で排他を取得します。

SR/SUW

SQL文やコマンドの操作対象表ではない場合は，共有参照モード（SR）で排他を取得します。

SQL文やコマンドの操作対象表である場合は，共有更新モード（SU）で排他を取得します。なお，ほかのトランザクションによって対象の排他資源がすでに確保されている場合は，確保できるまで待ち状態になります。

−/SUW

SQL文やコマンドの操作対象表ではない場合は，排他を取得しません。

SQL文やコマンドの操作対象表である場合は，共有更新モード（SU）で排他を取得します。なお，ほかのトランザクションによって対象の排他資源がすでに確保されている場合は，確保できるまで待ち状態になります。

2.10.8　排他制御の例

ここでは，HADBの排他制御の具体例を説明します。

排他制御の仕組みを理解するために，「2.10.3　排他資源」，および「2.10.5　確保される排他資源と排他制御モード」とあわせてお読みください。

メモ

ここで説明する排他制御の例は，サーバ定義のadb_sys_lck_conflict_behaviorオペランドにNOWAITを指定するか，またはオペランドの指定を省略した場合を前提としています。

(1)　CREATE TABLE文実行時の排他制御（実表の定義）

CREATE TABLE文を実行すると，次に示す排他資源が確保されます。

ディクショナリ（占有モード（EX））

前処理表（占有モード（EX））

DBエリア

データ用DBエリア（占有モード（EX））

ディクショナリ用DBエリア（共有参照モード（SR））

システム表用DBエリア（共有参照モード（SR））

表

処理対象表（占有モード（EX））

ディクショナリ表（占有モード（EX））

システム表（コスト情報）（共有参照モード（SR））

システム表（チャンク情報）（共有参照モード（SR））

ディクショナリの排他が占有モード（EX）で取得されるため，CREATE TABLE文の実行時に後発で実行した定義系SQLは，CREATE TABLE文が完了するまで待ち状態になります。また，ディクショナリ表の排他が占有モード（EX）で取得されるため，CREATE TABLE文の実行時に後発で実行した検索系SQLや更新系SQLも，CREATE TABLE文が完了するまで待ち状態になります。

CREATE TABLE文の実行時に後発で実行した検索系SQLが待ち状態になる例を次に示します。

例1：定義中の実表に対してSELECT文を実行する場合

CREATE TABLE T1("ID" INT, "NAME" VARCHAR(100)) in ADBUTBL01   ...1
SELECT * FROM T1                                              ...2

2のSELECT文は，1のCREATE TABLE文が完了するまで待ち状態になります。

例2：定義中の実表とは別の実表に対してSELECT文を実行する場合

CREATE TABLE T1("ID" INT, "NAME" VARCHAR(100)) in ADBUTBL01   ...1
SELECT * FROM T2                                              ...2

注　実表T2は実表T1とは別のデータ用DBエリアに定義されているものとします。

2のSELECT文は，1のCREATE TABLE文が完了するまで待ち状態になります。

また，検索系SQL以外にも，CREATE TABLE文の実行時に後発で実行すると，CREATE TABLE文が完了するまで待ち状態になる操作があります。検索系SQL以外の，後発で実行すると待ち状態になる主な操作を次に示します。

INSERT文

UPDATE文

DELETE文

TRUNCATE TABLE文

PURGE CHUNK文

adbimportコマンド

adbdbstatusコマンド

adbexportコマンド

adbmergechunkコマンド

(2)　adbimportコマンド実行時の排他制御（データインポート）

adbimportコマンド実行時の排他制御は，バックグラウンドインポート機能を適用するかどうかで異なります。

(a)　バックグラウンドインポート機能を適用する場合の排他制御

バックグラウンドインポート機能を適用したadbimportコマンドを実行すると，データ用DBエリアの排他が保護更新モード（PU）で取得されます。このため，インポート対象表に対する後発の更新操作は，排他資源を確保するときにエラーになります。

バックグラウンドインポート機能を適用したadbimportコマンド実行時に，後発で実行するとエラーになる主な操作※を次に示します。

定義系SQL

INSERT文

UPDATE文

DELETE文

TRUNCATE TABLE文

PURGE CHUNK文

adbdbstatusコマンド

ただし，次のどれかの場合はadbdbstatusコマンドを実行できます。

DBエリアのサマリ情報を出力する場合

--shared-lockオプションを指定して情報を出力する場合

再編成要否の情報を出力する場合

adbmergechunkコマンド

注※

次のどれかの場合が該当します。

SQL文やコマンドの操作対象表が，インポート対象表と同一の場合

SQL文やコマンドの操作対象表が，インポート対象表と同じデータ用DBエリアに格納されている場合

SQL文やコマンドの操作対象表が，インポート対象表に定義されているインデクスと同じデータ用DBエリアに格納されている場合

SQL文やコマンドの操作対象表に定義されているインデクスが，インポート対象表と同じデータ用DBエリアに格納されている場合

(b)　バックグラウンドインポート機能を適用しない場合の排他制御

バックグラウンドインポート機能を適用しないadbimportコマンドを実行すると，データ用DBエリアおよび処理対象表の排他が占有モード（EX）で取得されます。このため，インポート対象表に対する操作は，排他資源を確保するときにエラーになるか，排他資源を確保できるまで待ち状態になります。

■後発で実行するとエラーになる操作

バックグラウンドインポート機能を適用しないadbimportコマンド実行時に，後発で実行するとエラーになる主な操作※を次に示します。

定義系SQL

INSERT文

UPDATE文

DELETE文

TRUNCATE TABLE文

PURGE CHUNK文

adbdbstatusコマンド

ただし，次のどれかの場合はadbdbstatusコマンドを実行できます。

DBエリアのサマリ情報を出力する場合

--shared-lockオプションを指定して情報を出力する場合

再編成要否の情報を出力する場合

adbmergechunkコマンド

注※

次のどれかの場合が該当します。

SQL文やコマンドの操作対象表が，インポート対象表と同一の場合

SQL文やコマンドの操作対象表が，インポート対象表と同じデータ用DBエリアに格納されている場合

SQL文やコマンドの操作対象表が，インポート対象表に定義されているインデクスと同じデータ用DBエリアに格納されている場合

SQL文やコマンドの操作対象表に定義されているインデクスが，インポート対象表と同じデータ用DBエリアに格納されている場合

■後発で実行すると待ち状態になる操作

バックグラウンドインポート機能を適用しないadbimportコマンド実行時に，インポート対象表に対して後発で実行すると待ち状態になる主な操作を次に示します。

検索系SQL

adbexportコマンド

メモ

インポート対象表以外の表に対する上記の操作は，待ち状態にならないで実行できます（データ用DBエリアの排他は影響しません）。

(3)　adbexportコマンド実行時の排他制御（データエクスポート）

adbexportコマンドを実行すると，次に示す排他資源が共有参照モード（SR）で確保されます。

シングルコネクション

前処理表

表

処理対象表

ディクショナリ表

システム表（コスト情報）

システム表（チャンク情報）

システム表（同義語辞書情報）

このため，上記の排他資源を占有モード（EX）で確保する操作以外は，adbexportコマンド実行時，同時に実行できます。上記の排他資源を占有モード（EX）で確保する操作は，排他資源を確保するときにエラーになるか，排他資源を確保できるまで待ち状態になります。

■エクスポート対象表に対して後発で実行するとエラーになる操作

adbexportコマンド実行時に，エクスポート対象表に対して後発で実行するとエラーになる主な操作を次に示します。

定義系SQL

TRUNCATE TABLE文

PURGE CHUNK文

メモ

エクスポート対象表以外の表に対する上記の操作は，エラーにならないで実行できます（データ用DBエリアの排他は影響しません）。

■エクスポート対象表に対して後発で実行すると待ち状態になる操作

adbexportコマンド実行時に，エクスポート対象表に対して後発で実行すると待ち状態になる主な操作を次に示します。

バックグラウンドインポート機能を適用しないadbimportコマンド

adbmergechunkコマンド（--purge-chunkオプションの指定を省略，または--purge-chunkオプションにWAITを指定した場合）

adbreorgsystemdataコマンド（エクスポート対象がシステム表の場合）

メモ

エクスポート対象表以外の表に対する上記の操作は，待ち状態にならないで実行できます（データ用DBエリアの排他は影響しません）。

(4)　adbmergechunkコマンド実行時の排他制御（チャンクのマージ）

adbmergechunkコマンドを実行すると，次に示す排他資源が確保されます。

シングルコネクション（共有参照モード（SR））

前処理表（共有参照モード（SR））

DBエリア

データ用DBエリア（占有モード（EX））

システム表用DBエリア（共有参照モード（SR））

表

処理対象表

--concurrency-priorオプションを指定するかどうかによって排他制御モードが異なります。

--concurrency-priorオプションを指定する場合：保護更新モード（PU）

--concurrency-priorオプションを指定しない場合：共有更新モード（SU）

ディクショナリ表（共有参照モード（SR））

システム表（コスト情報）（共有参照モード（SR））

システム表（チャンク情報）（共有参照モード（SR））

このため，次に示す後発の操作は，排他資源を確保するときにエラーになります。

マージチャンク対象表と同じDBエリアに格納されている表に対して，排他を取得する後発の操作

マージチャンク対象表に対して，保護更新モード（PU），または占有モード（EX）で排他を取得する後発の操作※

シングルコネクション，前処理表，ディクショナリ表，またはシステム表に対して，占有モード（EX）で排他を取得する後発の操作

注※

--concurrency-priorオプションを指定しない場合にエラーになります。--concurrency-priorオプションを指定する場合はエラーになりません。

adbmergechunkコマンド実行時に，後発で実行するとエラーになる主な操作※を次に示します。

定義系SQL文

INSERT文

UPDATE文

DELETE文

TRUNCATE TABLE文

PURGE CHUNK文

adbimportコマンド

adbdbstatusコマンド

ただし，次のどれかの場合はadbdbstatusコマンドを実行できます。

DBエリアのサマリ情報を出力する場合

--shared-lockオプションを指定して情報を出力する場合

再編成要否の情報を出力する場合

注※

次のどれかの場合が該当します。

SQL文やコマンドの操作対象表が，マージチャンク対象表と同一の場合

SQL文やコマンドの操作対象表が，マージチャンク対象表と同じデータ用DBエリアに格納されている場合

SQL文やコマンドの操作対象表が，マージチャンク対象表に定義されているインデクスと同じデータ用DBエリアに格納されている場合

SQL文やコマンドの操作対象表に定義されているインデクスが，マージチャンク対象表と同じデータ用DBエリアに格納されている場合

(5)　adbdbstatusコマンド実行時の排他制御（データベースの状態解析）

adbdbstatusコマンド実行時の排他制御は，出力する情報によって異なります。

(a)　DBエリアのサマリ情報を出力する場合の排他制御

adbdbstatusコマンドでDBエリアのサマリ情報を出力する場合，シングルコネクションおよびディクショナリ表の排他が共有参照モード（SR）で取得されます。このため，ディクショナリ表に対して占有モード（EX）で排他を取得する後発の操作は，排他資源を確保するときにエラーになります。

adbdbstatusコマンド実行時に，後発で実行するとエラーになる主な操作を次に示します。

定義系SQL

(b)　--shared-lockオプションを指定する場合と再編成要否の情報を出力する場合の排他制御

adbdbstatusコマンドに--shared-lockオプションを指定して情報を出力する場合，またはadbdbstatusコマンドで再編成要否の情報を出力する場合，次に示す排他資源が共有参照モード（SR）で確保されます。

シングルコネクション

前処理表

表

処理対象表

ディクショナリ表

このため，上記の排他資源に対して占有モード（EX）で排他を取得する後発の操作は，排他資源を確保するときにエラーになります。

adbdbstatusコマンド実行時に，後発で実行するとエラーになる主な操作を次に示します。

定義系SQL

TRUNCATE TABLE文

PURGE CHUNK文

バックグラウンドインポート機能を適用しないadbimportコマンド

(c)　その他の情報を出力する場合の排他制御

「(a)　DBエリアのサマリ情報を出力する場合の排他制御」または「(b)　--shared-lockオプションを指定する場合と再編成要否の情報を出力する場合の排他制御」以外の場合，次に示す排他資源が確保されます。

シングルコネクション（共有参照モード（SR））

前処理表（共有参照モード（SR））

DBエリア

データ用DBエリア（占有モード（EX））

ディクショナリ用DBエリア（占有モード（EX））

システム表用DBエリア（占有モード（EX））

表

ディクショナリ表（共有参照モード（SR））

このため，データ用DBエリア，ディクショナリ用DBエリア，またはシステム表用DBエリアに対して排他を取得する後発の操作は，排他資源を確保するときにエラーになります。また，シングルコネクション，前処理表，またはディクショナリ表に対して占有モード（EX）で排他を取得する後発の操作もエラーになります。

adbdbstatusコマンド実行時に，後発で実行するとエラーになる主な操作を次に示します。

定義系SQL

INSERT文

UPDATE文

DELETE文

TRUNCATE TABLE文

PURGE CHUNK文

adbimportコマンド

adbmergechunkコマンド

(6)　adbmodareaコマンド実行時の排他制御（DBエリアの追加・変更）

adbmodareaコマンドを実行すると，シングルコネクションの排他が占有モード（EX）で取得されます。このため，adbmodareaコマンド実行時，シングルコネクションの排他を取得する操作（HADBサーバに接続する操作）を実行すると，すべてエラーになります。

adbmodareaコマンド実行時に，後発で実行するとエラーになる主な操作を次に示します。

定義系SQL※

検索系SQL※

INSERT文※

UPDATE文※

DELETE文※

TRUNCATE TABLE文※

PURGE CHUNK文※

adbimportコマンド

adbdbstatusコマンド

adbexportコマンド

adbmergechunkコマンド

注※

APがHADBサーバに接続する際にエラーになるため，SQL文を実行できません。

(7)　adblsコマンド実行時の排他制御（HADBサーバの状態表示）

adblsコマンドは排他資源を確保しません。このため，排他資源を確保するほかの操作と同時に実行できます。

2.11　データベースの回復処理

ここでは，障害が発生してHADBサーバが異常終了した場合のデータベースの回復処理について説明します。

2.11.1　再開始による回復処理の流れ

HADBサーバが異常終了した場合，HADBを再度開始すると，HADBサーバはステータス情報を使用して（自動的に）再開始します。再開始すると，システムログを使用してデータベースの回復処理を行い，HADBサーバが異常終了する直前の状態に回復させます。

(1)　ステータス情報

HADBサーバが異常終了した場合に備えて，HADBサーバは（自動的に）再開始するために必要な情報を出力します。これをステータス情報といいます。

ステータス情報は，HADBサーバの状態が変化した時点で出力され，ステータスファイルに格納されます。ステータス情報として出力される情報を次に示します。

HADBサーバの終了モード（正常終了，異常終了など）

HADBサーバの稼働状況（開始処理中，稼働中，終了処理中など）

ステータスファイルが作成される場所は，DBディレクトリ下（$DBDIR/ADBSYS/ADBSTS）になります。

(2)　システムログ

データベースを更新すると，データベースの更新履歴情報が出力されます。この情報をシステムログといいます。また，システムログが出力されるファイルをシステムログファイルといいます。

システムログは，HADBが異常終了したときの再開始，およびロールバックが発生したときの回復処理に使用されます。

(a)　システムログファイルの作成先

システムログファイルは，DBディレクトリ下（$DBDIR/ADBSYS/ADBSLG）に作成されます。

ただし，クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合，システムログファイルは$DBDIR/ADBSYS/ADBSLGではなく，オブジェクトストレージ上に作成されます。

(b)　システムログファイルの構成

システムログファイルは，マスタログファイルおよびユーザログファイルの2種類のファイルで構成されます。システムログファイルの構成を次の図に示します。

図2‒37　システムログファイルの構成

マスタログファイル

マスタログファイルには，トランザクションの開始および終了など，システム制御に関する履歴情報（イベントログ）が格納されます。また，ユーザログファイル群を管理します。

マスタログファイルは，HADBサーバを開始したときに自動的に1つ作成されます。ファイル名称はMSTLOGになります。

ユーザログファイル

ユーザログファイルには，データベースに対する操作履歴（ユーザログ）が格納されます。

ユーザログファイルは，データベースを更新するトランザクションおよびリアルスレッドごとに割り当てられます。

ユーザログファイルは，HADBサーバを開始したときに，ユーザの指定に従って作成されます。ファイル名称はUSRLOGで始まる名称になります。

ユーザログファイルに関する指定を変更した場合，HADBサーバを開始したときにシステムログファイルは再作成されます。

2.12　クライアントグループ機能

ここでは，クライアントグループ機能について説明します。

2.12.1　クライアントグループ機能の概要

HADBでは，複数のHADBクライアントを，1つのグループにまとめて管理するクライアントグループ機能をサポートしています。

クライアントグループ機能を適用すると，1つのグループが使用できる接続数や処理リアルスレッド数を設定できます。グループに所属するHADBクライアントは，グループに設定した接続数や処理リアルスレッド数の範囲内で，処理を実行するようになります。

クライアントグループ機能の概要について，接続数の管理を例に説明します。

図2‒38　クライアントグループ機能の適用例（接続数を管理する場合）

クライアントグループ機能を適用して，複数のグループに対して，必要な接続数や処理リアルスレッド数を適切に設定すると，次のような運用を実現できます。

特定のHADBクライアントやコマンドが，HADBサーバに集中して接続したり，処理リアルスレッドを使用し過ぎたりすることを防ぐ（ほかのHADBクライアントやコマンドが行う処理に影響を与えないようにする）。

定期的に実行する処理があるHADBクライアントやコマンドのために，実行に必要な接続数や処理リアルスレッド数を常に確保しておく（ほかのHADBクライアントやコマンドが行う処理の影響を受けないようにする）。

2.12.2　クライアントグループ機能で設定できるグループの種類

クライアントグループ機能で設定できるグループの種類を次に示します。

クライアントグループ

HADBクライアントが所属できるグループです。1つのクライアントグループに，複数のHADBクライアントが所属できます。また，クライアントグループは複数設定できます。

コマンドグループ

HADBサーバに接続するコマンドが所属できるグループです。例えば，データインポートを実行するコマンドや，インデクスの再作成を実行するコマンドなどが所属できます。HADBサーバに接続するコマンドについては，マニュアルHADB　コマンドリファレンスのコマンドの一覧を参照してください。コマンドグループは1つだけ設定できます。

メモ

コマンドグループには，HADBクライアントも所属することができます。詳細については，「7.2.19　クライアントグループ機能に関するオペランドおよびオプション（コマンド形式）」の「adbcltgrp（コマンドグループを設定する場合）」を参照してください。

2.12.3　グループごとの接続数・処理リアルスレッド数の設定

クライアントグループ機能を適用すると，HADBクライアントおよびコマンドの接続数や処理リアルスレッド数について，使用できる上限値をグループごとに設定できます。また，最低限使用できる数もグループごとに設定できます。

(1)　グループごとの接続数の設定

クライアントグループ機能で設定できる接続数の種別を，次に示します。

最大同時接続数

対象のグループが使用できる接続数の上限値を設定できます。設定した最大同時接続数の範囲内で，対象のグループに所属しているHADBクライアントやコマンドは同時接続します。

接続保証数

対象のグループが最低限使用できる接続数を設定できます。対象のグループは，設定した接続保証数までは，常に同時接続できます。自グループ以外のHADBクライアントやコマンドの接続状況に影響されません。

クライアントグループ機能の最大同時接続数と接続保証数の概要を，次の図に示します。

図2‒39　クライアントグループ機能の最大同時接続数と接続保証数の概要

［説明］

対象のグループは，設定した接続保証数までは，常に接続できます。例えば，クライアントグループ1は，接続保証数（15）までは常に接続できます。

HADBサーバの最大同時接続数（50）から，各グループで設定した接続保証数の合計（30）を除いた数が，接続数の自由利用枠（20）になります。

接続数の自由利用枠の範囲内で，すべてのHADBクライアントやコマンドは接続できます。グループの所属有無は関係ありません。

なお，グループに所属している場合，接続数の自由利用枠（20）が未使用なら，設定した最大同時接続数までは接続できます。例えば，クライアントグループ1は最大同時接続数が30のため，接続保証数（15）とは別に，追加で15まで接続できます。

また，グループに所属していない場合は，接続数の自由利用枠（20）が未使用なら，接続数の自由利用枠までは接続できます。

メモ

最大同時接続数の残り枠が少なくなったときに，警告メッセージKFAA40020-Wを出力する設定がグループごとにできます。

(2)　グループごとの処理リアルスレッド数の設定

クライアントグループ機能で設定できる処理リアルスレッド数の種別を，次に示します。

使用できる処理リアルスレッドの最大数

対象のグループが使用できる処理リアルスレッド数の上限値を設定できます。設定した処理リアルスレッド数の範囲内で，対象のグループに所属しているHADBクライアントやコマンドは処理を行います。

使用できる処理リアルスレッドの保証数

対象のグループが最低限使用できる処理リアルスレッド数を設定できます。対象のグループは，設定した使用できる処理リアルスレッドの保証数までは，常に処理リアルスレッドを使用できます。自グループ以外のHADBクライアントやコマンドの使用状況に影響されません。

クライアントグループ機能の使用できる処理リアルスレッドの最大数と保証数の概要を，次の図に示します。

図2‒40　クライアントグループ機能の使用できる処理リアルスレッドの最大数と保証数の概要

［説明］

対象のグループは，設定した使用できる処理リアルスレッドの保証数までは，常に処理リアルスレッドを使用できます。例えば，クライアントグループ1は，使用できる処理リアルスレッドの保証数（25）までは常に使用できます。

HADBサーバの処理リアルスレッド数（100）から，各グループで設定した使用できる処理リアルスレッドの保証数の合計（50）を除いた数が，処理リアルスレッド数の自由利用枠（50）になります。

処理リアルスレッド数の自由利用枠の範囲内で，すべてのHADBクライアントやコマンドは処理リアルスレッドを使用できます。グループの所属有無は関係ありません。

なお，グループに所属している場合，処理リアルスレッド数の自由利用枠（50）が未使用なら，設定した使用できる処理リアルスレッドの最大数までは使用できます。例えば，クライアントグループ1は使用できる処理リアルスレッドの最大数が40のため，使用できる処理リアルスレッドの保証数（25）とは別に，追加で15の処理リアルスレッドを使用できます。

また，グループに所属していない場合は，処理リアルスレッド数の自由利用枠（50）が未使用なら，処理リアルスレッド数の自由利用枠までは使用できます。

2.13　クライアント定義の集中管理機能

ここでは，クライアント定義の集中管理機能について説明します。

2.13.1　クライアント定義の集中管理機能とは

各HADBクライアントで個々に管理しているクライアント定義を，HADBサーバ上で一括管理できます。この機能をクライアント定義の集中管理機能といいます。この機能を使用すると，HADB管理者がクライアント定義をHADBサーバ上で一括管理できるため，各HADBクライアントの管理者がクライアント定義を個々に管理する必要がなくなります。

クライアント定義の集中管理機能を使用する場合と使用しない場合の比較を次の図に示します。

図2‒41　クライアント定義の集中管理機能を使用する場合と使用しない場合の比較

［説明］

クライアント定義の集中管理機能を使用すると，HADB管理者が，全HADBクライアントのクライアント定義をHADBサーバ上で追加，修正できます。

ただし，次に示すオペランドについては，HADBクライアントのクライアント定義で指定する必要があります。

adb_clt_rpc_srv_host

adb_clt_rpc_srv_port

adb_clt_rpc_con_wait_time

adb_clt_rpc_sql_wait_time

メモ

上記のオペランドには，HADBサーバへの接続時に必要となる情報を指定しています。そのため，HADBクライアントのクライアント定義に指定する必要があります。

■クライアント定義の集中管理機能を使用するメリット

各クライアント定義のオペランドの指定値を，HADB管理者が管理できます。例えば，adb_sql_exe_max_rthd_numオペランド（SQL文を処理するリアルスレッド数の最大値を指定するオペランド）などの性能に関するオペランドの指定値を，HADB管理者がチューニング結果を基に変更できます。

クライアントグループ機能を新規に使用する場合，該当する各HADBクライアントのクライアント定義にadb_clt_group_nameオペランド（クライアントグループ名を指定するオペランド）を追加する必要があります。この場合，各HADBクライアントの管理者が，adb_clt_group_nameオペランドを追加する必要があります。クライアント定義の集中管理機能を使用すると，HADBサーバ上のクライアント定義にadb_clt_group_nameオペランドを追加すればよいため，各HADBクライアントのクライアント定義にadb_clt_group_nameオペランドを追加する必要がありません。

このようにクライアント定義の集中管理機能を使用すると，クライアント定義をより簡単に，より速く変更できます。

2.13.2　クライアント定義の集中管理機能を使用する場合に作成するファイル

クライアント定義の集中管理機能を使用する場合，HADBサーバ上に次に示すファイルを作成します。

クライアント管理定義ファイル

クライアント定義ファイル

(1)　クライアント管理定義ファイルに指定する情報

クライアント管理定義ファイルには，HADBサーバに接続する認可識別子と，その認可識別子で接続したAP（adbsqlコマンドを含む）に適用するクライアント定義ファイルを指定します。指定例を次に示します。

指定例

adbclientmang -f client01.def -i ADBUSER01,ADBUSER02             ...1
adbclientmang -f client02.def -i ADBUSER03                       ...2
adbclientmang -f client03.def -i ADBUSER04,ADBUSER05,ADBUSER06   ...3
      :               :              :

［説明］

認可識別子ADBUSER01またはADBUSER02で接続したAPには，クライアント定義ファイルclient01.defのクライアント定義を適用します。

認可識別子ADBUSER03で接続したAPには，クライアント定義ファイルclient02.defのクライアント定義を適用します。

認可識別子ADBUSER04，ADBUSER05，またはADBUSER06で接続したAPには，クライアント定義ファイルclient03.defのクライアント定義を適用します。

クライアント管理定義ファイルは，HADBサーバの$ADBDIR/confディレクトリ下に格納します。

(2)　クライアント定義ファイルに指定する情報

クライアント定義ファイルには，クライアント定義を指定します。クライアント定義ファイルは，HADBサーバの$ADBDIR/confディレクトリ下に格納します。

なお，次に示すオペランドは，HADBサーバのクライアント定義に指定しても無視されるため，指定する必要はありません。次に示すオペランドは，HADBクライアントのクライアント定義に指定します。

adb_clt_rpc_srv_host

adb_clt_rpc_srv_port

adb_clt_rpc_con_wait_time

adb_clt_rpc_sql_wait_time

上記以外のオペランドを省略した場合，そのオペランドの省略値が仮定されます。

2.13.3　クライアント定義の集中管理機能の適用例

クライアント定義の集中管理機能の適用例を次の図に示します。

図2‒42　クライアント定義の集中管理機能の適用例

［説明］

HADBサーバに接続したAPまたはadbsqlコマンドは，指定された認可識別子によって適用されるクライアント定義が決まります。上記の例では，認可識別子ADBUSER01の場合は，client01.defに指定されているクライアント定義が適用されます。

■留意事項

クライアント管理定義ファイルに指定されていない認可識別子を使用してHADBサーバに接続した場合（上記の例ではADBUSER06など），そのAPまたはadbsqlコマンドについては，HADBクライアントで指定されたクライアント定義が適用されます。

クライアント定義の集中管理機能は，次のうちのどちらかを実行する場合にだけ適用されます（adbsqlコマンド以外のコマンドを実行する場合は，機能は適用されません）。

・AP

・adbsqlコマンド

2.14　バックグラウンドインポート機能

ここでは，バックグラウンドインポート機能について説明します。

2.14.1　バックグラウンドインポートとは

HADBでは，データ検索とデータインポートの同時実行を実現するために，バックグラウンドインポート機能をサポートしています。

バックグラウンドインポート機能を適用してデータインポートを実行することで，同一表に対して，検索系SQL（SELECT文，COPY文）によるデータの検索処理と，データの格納処理を同時に実行できるようになります。

バックグラウンドインポートの概要について，次の図に示します。

図2‒43　バックグラウンドインポートの概要

［説明］

表T1に格納されたデータの検索処理と，表T1に対するバックグラウンドインポートによるデータの格納処理を，同時に実行できます。

なお，バックグラウンドインポート中のデータは，データの格納処理が完了したあとで検索できるようになります。

メモ

データの検索と，大量データの格納を同時実行したい場合に，バックグラウンドインポート機能を使用することを推奨します。データの検索と，少量データの格納を同時実行したい場合は，データの格納効率を低下させないために，バックグラウンドインポート機能ではなく，SQL文（INSERT文）を使用することを検討してください。詳細については，「5.2.4　マルチチャンク表を定義する場合の考慮点」を参照してください。

2.14.2　データインポート単位のデータ管理（チャンク）

HADBは，バックグラウンドインポートを実現するために，1回のバックグラウンドインポートで実表に格納したデータを，1つの固まりとして管理します。この固まりを，チャンクといいます。

(1)　チャンクの概要

HADBは，複数のチャンクを管理することができ，各チャンクには実表内で一意となる番号が付与されます。この番号を，チャンクIDといいます。

バックグラウンドインポートを実行するたびに，チャンクが新規に作成されます。作成されたチャンクのうち，データが追加されるチャンクをカレントチャンクといいます。カレントチャンクは実表内に1つだけ存在します。

バックグラウンドインポートの実行などで，新たなチャンクが作成されると，カレントチャンクは変更されます（データが追加されるチャンクが変わります）。カレントチャンクが変更されることを，カレントチャンクの切り替えといいます。

バックグラウンドインポートとカレントチャンクの関係を次の図に示します。

図2‒44　バックグラウンドインポートとカレントチャンクの関係

［説明］

実表として表T1を新規に定義すると，カレントチャンクとして空のチャンク（チャンク1）が作成されます。

表T1に対して1回目のデータインポートを実行すると，データが格納されます。格納されたデータの固まりは，チャンク1として管理されます。

表T1に対して，2回目のデータインポートをバックグラウンドインポートで実行すると，新たなチャンク（チャンク2）が作成されて，データが格納されます。格納されたデータの固まりは，チャンク2として管理されます。このとき，カレントチャンクは，チャンク1からチャンク2に変更されます。

メモ

■カレントチャンクの切り替えが発生するタイミング

次に示す場合に，カレントチャンクが変更されます。

・バックグラウンドインポートを実行した場合

・カレントチャンクを含む複数のチャンクをマージした場合

また，次に示す場合に，カレントチャンクが変更されることがあります。

・チャンクの状態を変更した場合

■行の挿入や更新と，チャンクの関係

バックグラウンドインポートでデータを格納した実表に対して，INSERT文で行を挿入すると，挿入した行はカレントチャンクに格納されます。一方，UPDATE文で行を更新すると，更新後の行は更新対象の行があるチャンクに格納されます。

■インデクスが定義されている場合のチャンクの作成とチャンクID

データインポート対象の実表にインデクスが定義されている場合，バックグラウンドインポート時に作成されるインデクスのデータも，チャンク単位に管理されます。

例えば，データインポート対象の実表にインデクス（B-treeインデクス，テキストインデクスおよびレンジインデクス）が定義されている場合，実表のデータだけでなく，バックグラウンドインポート時に作成されるインデクスのデータ（B-treeインデクスのデータ，テキストインデクスのデータおよびレンジインデクスのデータ）についても，それぞれチャンクが作成されます。

HADBでは，バックグラウンドインポートした単位でチャンクを管理します。そのため，上記のチャンクに同一のチャンクIDが付与されます。

インデクスが定義されている場合のチャンクとチャンクIDの概要を次の図に示します。

図2‒45　インデクスが定義されている場合のチャンクの作成とチャンクIDの概要

■作成されるチャンクの数とインデクス数の関係

データインポート対象の実表にインデクスを定義している場合，1回のバックグラウンドインポートで作成されるチャンクの数は，インポート対象の実表，および実表に定義されたインデクスの数の合計になります。

例えば，実表にB-treeインデクスを2つ，テキストインデクスを1つ，およびレンジインデクスを1つ定義している場合，1回のバックグラウンドインポートで作成されるチャンク数は5個になります。

HADBでは，1つのDBエリア，および1つの実表で管理できるチャンク数には上限があります。1DBエリア中のチャンク数，および1つの実表に作成できるチャンク数の上限については，「付録D.1　システム構成に関する最大値と最小値」を参照してください。

■チャンクと，DBエリアの関係

表とインデクスを同じDBエリアに格納しても，別々のDBエリアに格納しても，バックグラウンドインポートは実行できます。どちらの場合でも，実表，およびインデクスごとにチャンクが作成されて，1つのチャンクIDが付与されます。チャンクとDBエリアの関係を，次の図に示します。

図2‒46　チャンクとDBエリアの関係

(2)　チャンクのマージ

バックグラウンドインポートを実行して作成された複数のチャンクは，1つの新規のチャンクにマージできます。チャンクをマージすると，使用しているチャンク数を減らすことができます。

なお，マージ対象のチャンクに対して検索を実行しているユーザが存在しても，チャンクをマージできます。

重要

■チャンクのマージと，B-treeインデクスやテキストインデクスを使用した検索性能の関係

バックグラウンドインポートを繰り返すことによってチャンク数が増加すると，B-treeインデクスやテキストインデクスを使用した検索時に性能が低下するおそれがあります。チャンクをマージしてチャンク数を減らすと，検索性能の低下を回避できます。

■チャンクのマージと，作成できるチャンク数の関係

HADBでは，1つのDBエリア，および1つの実表で管理できるチャンク数に上限があります。チャンクをマージしてチャンク数を減らすと，この上限に達することを回避できます。1DBエリア中のチャンク数，および1つの実表に作成できるチャンク数の上限については，「付録D.1　システム構成に関する最大値と最小値」を参照してください。

複数のチャンクをマージする例を次の図に示します。

図2‒47　複数のチャンクをマージする例

［説明］

カレントチャンクを含む3つのチャンク（チャンク1からチャンク3まで）をマージします。マージすると，3つのチャンクは，1つの新規のチャンク（チャンク4）として管理されます。このとき，カレントチャンクは，チャンク3からチャンク4に変更されます。

メモ

マージ対象のチャンクに，カレントチャンクを含まない場合は，カレントチャンクは変更されません。

(3)　チャンクの削除

実表に格納されたデータは，チャンク単位で削除できます。チャンクを削除すると，行の削除とは異なり，データの格納領域を再利用できます。ただし，カレントチャンクは削除できません。

チャンクの削除と格納領域の再利用の例について次の図に示します。

図2‒48　チャンクの削除と格納領域の再利用の例

［説明］

チャンク1を削除した場合，チャンク1が使用していた領域を再利用できます。チャンク1の削除後に，表T1に対してバックグラウンドインポートを実行すると，チャンク1が使用していた領域に対して，新たなチャンク（チャンク4）が作成されてデータが格納されます。

(4)　チャンクの状態変更

チャンクには，幾つかの状態があります。

バックグラウンドインポートを実行するときに，作成されるチャンクの状態を指定できます。チャンクの状態はバックグラウンドインポート後に変更することもできます。

HADBサーバが管理するチャンクの状態を次に示します。

表2‒20　チャンクの状態の一覧

項番

チャンクの状態

説明

1

通常状態

通常状態のチャンクとは，チャンクに含まれるデータが操作系SQLの対象となるチャンクのことです。そのため，通常状態のチャンクに含まれるデータは検索できます。

通常状態のチャンクは，バックグラウンドインポートを実行すると作成されます。

また，通常状態のチャンクは，待機状態のチャンクに変更できます。

2

待機状態

待機状態のチャンクとは，チャンクに含まれるデータが操作系SQLの対象外となるチャンクのことです。そのため，待機状態のチャンクに含まれるデータは検索できません。ただし，PURGE CHUNK文とTRUNCATE TABLE文によるチャンクの削除はできます。

待機状態のチャンクは，バックグラウンドインポートを実行するときに，作成されるチャンクの状態を指定することで作成されます。

また，待機状態のチャンクは，通常状態のチャンクに変更できます。

なお，待機状態のチャンクは，カレントチャンクにはなりません。

待機状態のチャンクを利用すると，次のような運用ができます。

バックグラウンドインポートで待機状態のチャンクにデータを格納しておき，任意のタイミングで通常状態のチャンクに変更して，検索できるようにする

通常状態のチャンクを，任意のタイミングで待機状態のチャンクに変更することで，通常状態のチャンクに格納していたデータを検索できないようにする

3

削除仕掛中

削除仕掛中のチャンクとは，チャンクに含まれるデータが操作系SQLの対象外となるチャンクのことです。そのため，削除仕掛中のチャンクに含まれるデータは検索できません。ただし，PURGE CHUNK文とTRUNCATE TABLE文によるチャンクの削除はできます。

削除仕掛中のチャンクは，チャンクのマージ処理が中断した場合に，削除されないで残ってしまった不要なチャンク（マージ元チャンク）のことです。

また，削除仕掛中のチャンクは，状態を変更できません。

待機状態のチャンクとは異なり，削除仕掛中のチャンクは不要であるため，手動で削除する必要があります。

注

チャンクの状態によって，チャンクに含まれるデータに対して，実行できるSQL文とコマンドが異なります。詳細については，「11.5.12　チャンクの状態を変更する方法」の「(2)　チャンクの状態と実行できるSQL文・コマンドの関係」を参照してください。

バックグラウンドインポートで作成された複数のチャンクの状態を変更する例を，次の図に示します。

図2‒49　チャンクの状態を変更する例

［説明］

通常状態のチャンク（チャンク1と2）を，待機状態のチャンクに変更します。待機状態のチャンクに変更すると，チャンク1と2に格納されているデータは検索できなくなります。

また，待機状態のチャンク（チャンク3）を，通常状態のチャンクに変更します。通常状態のチャンクに変更すると，チャンク3に格納されているデータを検索できるようになります。

2.14.3　チャンクとレンジインデクスの関係

ここでは，チャンクとレンジインデクスの関係について説明します。レンジインデクスの詳細については，「2.3.3　レンジインデクス」を参照してください。

レンジインデクスは，実表のセグメント内に格納されているデータの値域（列の値の最小値と最大値）だけでなく，チャンク内に格納されているデータの値域も管理しています。そのため，レンジインデクスを使用すると，探索条件を満たさない値域のデータを格納しているチャンクおよびセグメントの検索処理をスキップでき，その分検索性能が向上します。

レンジインデクスと，チャンクおよびセグメントの概要を次の図に示します。

図2‒50　レンジインデクスと，チャンクおよびセグメントの概要

［説明］

表T1のC2列にレンジインデクスを定義します。表T1に対して，バックグラウンドインポートを実行すると，表にデータが格納されます。また，C2列のデータを基にレンジインデクスが作成されます。それらのデータの固まりは，1つのチャンクとして管理されます。

このとき，レンジインデクスは，セグメント内の表データの値域を管理するだけでなく，チャンク内の表データの値域も管理します。

(1)　レンジインデクスを使用した検索処理（チャンクのスキップ）

レンジインデクスを使用して表を検索した場合，探索条件を満たさない値域のデータを格納しているチャンクおよびセグメントの検索処理を，次に示すように段階的にスキップできます。

■レンジインデクスを使用した検索処理

チャンクのスキップ

セグメントのスキップ

重要

バージョン02-02より前のバージョンで定義されたレンジインデクスの場合は，チャンクのスキップはできません。

それぞれの検索処理について，次に示します。

チャンクのスキップ

レンジインデクスを使用した表の検索では，まず，チャンク単位で検索処理をスキップできます。HADBは，探索条件を満たす値域のデータを格納しているチャンクかどうかを判定し，探索条件を満たさない値域のデータを格納しているチャンクであれば，そのチャンクを検索しません。

このとき，表のデータ，B-treeインデクスのデータおよびテキストインデクスのデータにはアクセスしないため，検索性能が向上します。

チャンクのスキップの概要を，次の図に示します。

図2‒51　チャンクのスキップの概要

セグメントのスキップ

探索条件とレンジインデクスの値域を比較した結果，チャンク3が条件を満たしている場合，次はチャンク3内の表のセグメントに対して検索処理を実行します。その際，「2.3.3　レンジインデクス」と同様に，探索条件を満たさない値域のデータを格納しているセグメントの検索処理をスキップできます。

セグメントのスキップの概要を，次の図に示します。

図2‒52　セグメントのスキップの概要

(2)　レンジインデクスの特徴（チャンクのスキップ）

チャンクのスキップができるレンジインデクスと，「2.3.3　レンジインデクス」の「(2)　レンジインデクスの特徴」で説明している4つの特徴との違いについて説明します。

(a)　B-treeインデクスやテキストインデクスとレンジインデクスを合わせて使用できる

チャンクのスキップができるレンジインデクスは，B-treeインデクスやテキストインデクスと合わせて使用できます。

B-treeインデクスやテキストインデクスと合わせて使用したときの検索処理を，次に示します。

■チャンクのスキップができるレンジインデクスとB-treeインデクスを使用した検索処理

レンジインデクスを使用した検索（チャンクのスキップ）

まず，レンジインデクスを使用した検索処理が行われます。探索条件を満たす値域のデータを格納しているチャンクかどうかを判定し，探索条件を満たさない値域のデータを格納しているチャンクであれば，そのチャンクの検索をスキップします。チャンクのスキップによって，探索条件を満たすチャンクを絞り込みます。

B-treeインデクスを使用した検索

探索条件を満たすチャンクを絞り込んだら，次に対象のチャンク内のB-treeインデクスを使用した検索処理が行われます。

■チャンクのスキップができるレンジインデクスとテキストインデクスを使用した検索処理

レンジインデクスを使用した検索（チャンクのスキップ）

まず，レンジインデクスを使用した検索処理が行われます。探索条件を満たす値域のデータを格納しているチャンクかどうかを判定し，探索条件を満たさない値域のデータを格納しているチャンクであれば，そのチャンクの検索をスキップします。チャンクのスキップによって，探索条件を満たすチャンクを絞り込みます。

テキストインデクスを使用した検索

探索条件を満たすチャンクを絞り込んだら，次に対象のチャンク内のテキストインデクスを使用した検索処理が行われます。

メモ

B-treeインデクスやテキストインデクスと合わせて使用する場合，レンジインデクスを使用した検索（セグメントのスキップ）は行われません。

(b)　複数のレンジインデクスを使用できる

違いはありません。「複数のレンジインデクスを使用できる」の詳細については，「2.3.3　レンジインデクス」の「(2)　レンジインデクスの特徴」の「(b)　複数のレンジインデクスを使用できる」を参照してください。

(c)　B-treeインデクスやテキストインデクスよりデータ容量が少なくなる

違いはありません。「B-treeインデクスやテキストインデクスよりデータ容量が少なくなる」の詳細については，「2.3.3　レンジインデクス」の「(2)　レンジインデクスの特徴」の「(c)　B-treeインデクスやテキストインデクスよりデータ容量が少なくなる」を参照してください。

(d)　チャンクに格納されているデータの値域の幅によって検索性能が変わる

レンジインデクスを使用した検索では，チャンク内に格納されているデータの値域の幅によって検索性能が変わります。

図2‒53　チャンク内に格納されているデータの値域の幅によって検索性能が変わる例

［説明］

データの格納例1の場合は，検索処理を実行するチャンク数は1つになります。一方で，データの格納例2の場合は，値域の重複があり，各チャンクの値域が格納例1に比べて広くなっています。そのため，検索処理を実行するチャンク数が3つになります。このように同じ探索条件でも，チャンクに格納されているデータの値域の幅によって，検索性能が変わります。値域を狭くすることで，検索性能が向上します。

(3)　レンジインデクスの値域の更新（チャンクとセグメント）

行の追加，更新を繰り返すと，レンジインデクスが管理するチャンクの値域およびセグメントの値域が広がり，レンジインデクスの効果が薄れていきます（値域が狭くなることはありません）。また，行の削除を繰り返すと，チャンク内およびセグメント内に格納されているデータの値域に比べて，レンジインデクスの値域が広くなり，レンジインデクスの効果が薄れていきます。

レンジインデクスの効果が薄れてきた場合は，対象のレンジインデクスに対してインデクス再作成を実行し，レンジインデクスを作成し直してください。

レンジインデクスの値域が広がる条件を次の表に示します。

表2‒21　レンジインデクスの値域が広がる条件（チャンクとセグメント）

項番

実行した操作

レンジインデクスの値域が広がる条件

1

行の追加

値域の範囲外の値を追加した場合に，追加行を格納するチャンクおよびセグメントの値域が広がります。

2

行の更新

値域の範囲外の値に更新した場合に，更新行を格納するチャンクおよびセグメントの値域が広がります。

3

行の削除

値域は広がりません。

2.15　チャンクアーカイブ機能（チャンク内のデータの圧縮）

ここでは，チャンク内のデータを圧縮することができるチャンクアーカイブ機能について説明します。

チャンクアーカイブ機能は，アーカイブマルチチャンク表に対してだけ使用できます。アーカイブマルチチャンク表については，「2.2.2　シングルチャンク表とマルチチャンク表」の「(2)　マルチチャンク表とは」を参照してください。

2.15.1　チャンクアーカイブ機能とは

センサデータや売上データのように，毎日大量に増加するデータを長期間保管する場合，ストレージの容量不足が発生したり，ストレージの追加コストが想定よりも増えたりすることがあります。このような問題がある場合，DBエリア内のデータを圧縮してファイルに出力（アーカイブ）することで，データベースの容量を削減することができます。データのアーカイブはチャンク単位で実行します。この機能をチャンクアーカイブ機能といいます。

チャンクアーカイブ機能を使用したデータのアーカイブを次の図に示します。

図2‒54　チャンクアーカイブ機能を使用したデータのアーカイブ

［説明］

チャンク内のデータが圧縮されてファイルに出力（アーカイブ）されます。このファイルをアーカイブファイルといいます。1つのチャンクをアーカイブすると，1つ以上のアーカイブファイルが作成されます。

アーカイブファイルを格納するディレクトリをアーカイブディレクトリといいます。

アーカイブされるのは表データだけです。インデクスデータはアーカイブされないで削除されます。

アーカイブ対象のチャンク内のデータは削除されます。

データがアーカイブされたチャンクは，アーカイブ状態のチャンクになります。

この一連の処理をチャンクのアーカイブといいます。チャンクをアーカイブするには，adbarchivechunkコマンドを実行します。

メモ

チャンクアーカイブ機能を使用すると，データベースの容量を削減できますが，アーカイブされているデータを検索する場合，次に示す原因によって，アーカイブされていないデータを検索するときに比べて検索時間が長くなります。

データの伸長に時間が掛かる

インデクスを使用した検索ができない

2.15.2　チャンクアーカイブ機能を適用するケース

チャンクアーカイブ機能は，次に示す条件をすべて満たす場合に適用することを推奨します。

センサデータや売上データのような時系列データを毎日大量にインポートする

上記の時系列データを長期間保管する必要がある

分析業務の際，最近のデータは頻繁に参照するが，古いデータは参照する頻度が非常に少ない

チャンクアーカイブ機能の適用例を次の図に示します。

図2‒55　チャンクアーカイブ機能の適用例

［説明］

この例では，直近6か月のデータは参照頻度が多いため，データをアーカイブしていません。6か月より前のデータは参照頻度が非常に少ないため，データをアーカイブしてデータ容量を削減しています。

アーカイブされているデータを検索する場合，アーカイブされていないデータを検索するときに比べて検索時間が長くなります。

重要

データ中に日時を示すデータがあることが，チャンクアーカイブ機能を使用する際の前提条件です。

アーカイブされているデータは，更新または削除できません。更新または削除するには，データをいったん伸長してDBエリアに戻す必要があります。そのため，アーカイブされているデータを更新または削除するような機会がある場合は，チャンクアーカイブ機能を使用しないことを推奨します。

2.15.3　アーカイブマルチチャンク表の検索

アーカイブマルチチャンク表を定義したときに，アーカイブレンジ列に自動的にレンジインデクスが定義されます。また，ロケーション表が自動的に作成されます。

ここでは，アーカイブレンジ列およびロケーション表について説明します。

(1)　アーカイブレンジ列とは

HADBサーバは，アーカイブマルチチャンク表に格納されたデータの範囲（最大値と最小値）を，チャンク単位で管理しています。チャンク単位で管理しているデータの範囲を使用すると，検索範囲を絞り込むことができます。そのため，長期間管理する膨大なデータの中から必要なデータだけを検索できるようにしています。

データが格納された列で，かつ検索範囲を絞り込むために使用する列を，アーカイブレンジ列といいます。

アーカイブマルチチャンク表には，アーカイブレンジ列として使用する列が必要です。日時データの列，数データの列などを，アーカイブレンジ列として使用できます。

アーカイブレンジ列には，HADBサーバが自動的にレンジインデクスを定義します。そして，アーカイブ状態ではないチャンクごとに，アーカイブレンジ列に格納されたデータの範囲（最大値と最小値）を管理します。

アーカイブレンジ列の概要を次の図に示します。

図2‒56　アーカイブレンジ列の概要（日付データの列をアーカイブレンジ列として使用する場合）

(2)　ロケーション表とは

アーカイブマルチチャンク表を定義したときに，ロケーション表とロケーション表のインデクスがHADBサーバによって自動的に定義されます。ロケーション表は，アーカイブ状態のチャンクに関する情報を管理するシステム専用の表です。ロケーション表が管理する情報を次に示します。

ロケーション表が管理する情報

チャンクID

アーカイブファイルのファイルパス

アーカイブファイル単位のアーカイブレンジ列の値の範囲（最大値と最小値）

アーカイブ状態のチャンクには，インデクスデータは含まれません。そのため，アーカイブ状態のチャンク内のデータを検索する場合，インデクスを使った検索はできません。その代わりに，アーカイブレンジ列に格納されたデータをロケーション表が管理することで，検索範囲の絞り込みを実現しています。

ロケーション表の概要を次の図に示します。

図2‒57　ロケーション表の概要

メモ

ロケーション表は，HADBサーバが使用するための表で，ユーザが使用することはありません。

1つのアーカイブマルチチャンク表に対して，1つのロケーション表が作成されます。

ロケーション表とロケーション表に定義されたインデクスは，アーカイブマルチチャンク表が格納されているデータ用DBエリア内に格納されます。

アーカイブマルチチャンク表を検索する場合，HADBサーバはアーカイブレンジ列に格納されたデータを基に，検索対象のアーカイブファイルを絞り込みます。詳細については，マニュアルHADB　AP開発ガイドのAPの性能向上に関する設計のアーカイブマルチチャンク表を検索する際の考慮点を参照してください。

2.15.4　データの伸長（アーカイブ状態の解除）

アーカイブされているデータは，更新または削除することができません。そのため，アーカイブされているデータを更新または削除する必要が生じた場合は，アーカイブされているデータを伸長（アンアーカイブ）する必要があります。また，アーカイブされているデータの参照頻度が増えてきた場合も，アーカイブされているデータのアンアーカイブを検討してください。

チャンクアーカイブ機能を使用したデータのアンアーカイブを次の図に示します。

図2‒58　チャンクアーカイブ機能を使用したデータのアンアーカイブ

［説明］

上記の図では，チャンク2のデータをアンアーカイブしています。

アーカイブファイルに格納されているデータがチャンク2に格納されます。このとき，インデクスも作成されます。

チャンク内にデータが格納され，インデクスも作成されると，アーカイブファイルは削除されます。

この一連の処理をチャンクのアンアーカイブといいます。チャンクをアンアーカイブするには，adbunarchivechunkコマンドを実行します。

メモ

データの格納処理とインデクスの作成処理は，adbimportコマンドのデータインポート処理で実行されています。

2.16　外部データの検索

外部表または表関数導出表を使用すると，データ用DBエリアに格納されていないデータ（外部データ）を検索できます。ここでは，外部表を使用した外部データの検索方法と，表関数導出表を使用した外部データの検索方法について説明します。

2.16.1　外部表を使用した外部データの検索

外部のオブジェクトストレージまたはファイルストレージに格納されている外部データを表に読み込んで検索できます。この表を外部表といいます。外部表を使用した外部データの検索の概要について，外部データがオブジェクトストレージに格納されている場合と，外部データがファイルストレージに格納されている場合をそれぞれ説明します。

外部データがオブジェクトストレージに格納されている場合

外部表を使用した外部データの検索の概要を次の図に示します。

図2‒59　外部表を使用した外部データの検索の概要（外部データがオブジェクトストレージに格納されている場合）

［説明］

外部データを検索する前に，定義系SQLのCREATE SERVER文で外部サーバを定義し，CREATE FOREIGN TABLE文で外部表を定義しておく必要があります。

上記の図の番号に対応する説明を以下でします。

外部表に対して検索系SQL（SELECT文またはCOPY文）を実行します。

外部サーバの定義時に指定した認証情報を使用して，HADBサーバは外部のオブジェクトストレージに接続します。

外部のオブジェクトストレージに格納されている外部データを読み込んだデータ集合が作成されます。そのデータ集合を基に外部表のデータが作成されます。

外部表の検索が実行されて，検索結果を返します。

メモ

次のオブジェクトストレージが対応しています。

Amazon S3

Amazon S3互換オブジェクトストレージ

外部データがファイルストレージに格納されている場合

外部表を使用した外部データの検索の概要を次の図に示します。

図2‒60　外部表を使用した外部データの検索の概要（外部データがファイルストレージに格納されている場合）

［説明］

外部データを検索する前に，CREATE FOREIGN TABLE文で外部表を定義しておく必要があります。

上記の図の番号に対応する説明を以下でします。

外部表に対して検索系SQL（SELECT文またはCOPY文）を実行します。

外部のファイルストレージに格納されている外部データを読み込んだデータ集合が作成されます。そのデータ集合を基に外部表のデータが作成されます。

外部表の検索が実行されて，検索結果を返します。

なお，ファイルストレージにはローカルファイルシステムだけでなく，NFSのようなリモートファイルシステムも使用できます。NFSを使用する場合，次のことに注意してください。

複数のHADBサーバが並列にアクセスすると，NFSサーバのリソースが不足し，I/O性能が低下するおそれがあります。NFSサーバのリソースの上限を確認してください。

NFSクライアントのキャッシュの状態によって，NFSクライアント間でデータの同期に時間が掛かることがあります。これによって，HADBサーバが参照した外部データが不足する，HADBサーバの出力した外部データが別のシステムから読み込めないなどのデータの不整合が発生するおそれがあります。これを防ぐために，NFSのキャッシュ制御パラメータを適切に調整してください。

上記の図中に出てくる用語について説明します。

外部サーバ

外部サーバとは，物理的な実体があるサーバではなく，外部データを管理するサーバに名称を付けて概念化したものです。CREATE SERVER文で外部サーバを定義する際，外部サーバの名称や，HADBサーバが外部データを格納しているオブジェクトストレージに接続する際に使用する認証情報などを指定します。

重要

外部データがオブジェクトストレージに格納されている場合は，外部サーバを定義する必要があります。外部データがファイルストレージに格納されている場合は，外部サーバを定義する必要はありません。

CREATE SERVER文による外部サーバの定義例を次に示します。

（例）

CREATE SERVER "FOREIGNSERVER1"                                         ...1
    OPTIONS(ACCESS_KEY '6yTZJwzVjl6nYTjKICop'                          ...2
           ,SECRET_KEY 'Bs6E43CgrwXYyX9jvVJpPgH8rOdTafeuVNrwGJf'       ...3
           ,ENDPOINT 'https://xxxx-yyz99:1234')                        ...4

［説明］

定義する外部サーバの名称（FOREIGNSERVER1）を指定します。

外部のオブジェクトストレージに接続する際の認証で使用するアクセスキーを指定します。

外部のオブジェクトストレージに接続する際の認証で使用するシークレットキーを指定します。

エンドポイントを指定します。

外部データファイル

外部データファイルとは，外部データを格納しているファイルのことです。外部データのデータ形式は，PARQUET形式，CSV形式，またはJSON形式のどれかである必要があります。また，Icebergテーブルで管理している外部データファイルも検索できます。

HADBサーバは，外部データアクセス用ライブラリを使用して外部データにアクセスします。

外部表

外部表とは，外部データを読み込んで作成される表のことで，CREATE FOREIGN TABLE文で定義します。CREATE FOREIGN TABLE文で外部表を定義する際に，外部表の列の構成やデータ型，外部データのデータ形式などを指定します。

重要

外部表は参照専用の表で，SQL文によるデータの追加，更新，および削除はできません。

CREATE FOREIGN TABLE文による外部表の定義例を次に示します。

外部データがオブジェクトストレージに格納されている場合

CREATE FOREIGN TABLE "FT1" ("C1" INTEGER,"C2" INTEGER)     ...1
    SERVER "FOREIGNSERVER1"                                ...2
    OPTIONS (
             FORMAT PARQUET                                ...3
            ,LOCATION 's3://data/'                         ...4
            )

［説明］

定義する外部表の表名，および外部表の列の構成とデータ型を指定します。

外部表が使用する外部サーバの名称を指定します。

外部表の検索時，HADBサーバは外部データを格納しているオブジェクトストレージに接続します。その際，ここで指定した外部サーバ（FOREIGNSERVER1）の定義時に指定した認証情報を使用します。

外部データのデータ形式を指定します。外部データがPARQUET形式の場合は，PARQUETを指定します。

外部データの検索対象ディレクトリのパスを指定します。

指定したディレクトリ下（サブディレクトリも含む）にある外部データファイル中の外部データが，外部表の検索時に外部表に読み込まれます。この例の場合，s3://data/ディレクトリ下（サブディレクトリ下も含む）にある外部データファイル中の外部データが外部表に読み込まれます。

外部データがファイルストレージに格納されている場合

CREATE FOREIGN TABLE "FT1" ("C1" INTEGER,"C2" INTEGER)     ...1
    OPTIONS (
             FORMAT PARQUET                                ...2
            ,LOCATION 'file:///data/ftbl/T1/'              ...3
            )

［説明］

定義する外部表の表名，および外部表の列の構成とデータ型を指定します。

外部データのデータ形式を指定します。外部データがPARQUET形式の場合は，PARQUETを指定します。

外部データの検索対象ディレクトリのパスを指定します。

指定したディレクトリ下（サブディレクトリも含む）にある外部データファイル中の外部データが，外部表の検索時に外部表に読み込まれます。この例の場合，/data/ftbl/T1/ディレクトリ下（サブディレクトリ下も含む）にある外部データファイル中の外部データが外部表に読み込まれます。

外部表と実表の主な違い

外部表のデータはSQL文やコマンドで更新できません。外部表は検索だけ実行できます（検索系SQLだけ実行できます）。

HADBサーバは外部データの管理を行いません。そのため，外部データを格納するデータ用DBエリアを作成する必要はありません。

外部表の検索時に，外部データが外部表に読み込まれるため，外部表へのadbimportコマンドによるデータインポートを実行する必要はありません。adbimportコマンドによるデータインポートを実行しないため，チャンクの運用を意識する必要もありません。

外部表にはインデクスを定義できません。

ALTER TABLE文で外部表の定義は変更できません。

外部表を定義するメリット，デメリット

外部のオブジェクトストレージまたはファイルストレージに格納されているPARQUET形式，CSV形式，またはJSON形式の外部データを外部表に読み込んで検索することができます。また，データ用DBエリアの作成や，外部データのデータインポートが不要になるため，実表に比べて運用が簡単になります。ただし，外部表の検索性能は，実表の検索性能に比べて低くなります。

外部表の検索

実表と同様にSELECT文で外部表を検索できます。ただし，外部表にはインデクスを定義できません。そのため，外部表に読み込む外部データが非常に多い場合，検索性能の低下要因になります。この場合，外部表の定義時にパーティションキー列を定義すると，外部表に読み込む外部データを絞り込むことができます。

また，外部表の検索時にパーティションキー列を指定すると，外部表に読み込む外部データをさらに絞り込むことができます。パーティションキー列については，マニュアルHADB　SQLリファレンスの定義系SQLのCREATE FOREIGN TABLE（外部表の定義）を参照してください。

メモ

外部データの格納場所がオブジェクトストレージまたはファイルストレージのどちらであっても，SELECT文を使用した外部表の検索方法は同じになります。

外部データの格納場所がオブジェクトストレージまたはファイルストレージのどちらであっても，検索できる外部データのデータ形式（PARQUET形式，CSV形式，またはJSON形式）は同じになります。また，Icebergテーブルで管理している外部データも検索できます。

外部表と実表を結合した検索

外部表と実表，外部表とビュー表を結合した検索もできます。外部表（LOGS）と実表（EMPLOYEE）を結合した検索例を次に示します。

SELECT "LOGS"."EVENTNAME","EMPLOYEE"."USERNAME","EMPLOYEE"."DEPARTMENT"
    FROM "LOGS"
    INNER JOIN "EMPLOYEE"
    ON "LOGS"."USERIDENTITY"."USERNAME" = "EMPLOYEE"."USERNAME"
        WHERE "EMPLOYEE"."USERNAME" = 'Alice'

外部データに対するアクセス制御

外部データは，実表へのアクセスと異なり，HADBユーザによるアクセス制御は行われません。そのため，外部データに対するアクセス制御が必要な場合，オブジェクトストレージまたはOSの機能を使用して対応する必要があります。

外部データがオブジェクトストレージに格納されている場合

外部データへのアクセス可否は，オブジェクトストレージにアクセスする際の権限に従います。そのため，オブジェクトストレージにAmazon S3またはAmazon S3互換オブジェクトストレージを使用する場合，S3プロトコルを使用して読み込みまたは書き込みできる環境を構築する必要があります。

複数のサーバマシンを使用する場合，アクセスできる外部データの範囲を同じにしたいときは，オブジェクトストレージにアクセスする際の権限を全サーバマシンで統一してください。アクセスできる外部データの範囲を変えたいときは，オブジェクトストレージにアクセスする際の権限をサーバマシンごとに変えてください。

外部データがファイルストレージに格納されている場合

外部データへのアクセス可否は，OSユーザが持っている権限に従います。HADBサーバが外部データにアクセスする際，OSユーザとして登録されているHADB管理者が持っている権限を使用します。そのため，HADB管理者が外部データに対して読み込みまたは書き込みできる環境を構築する必要があります。

複数のサーバマシンを使用する場合，HADB管理者のUIDおよびGIDを使ってアクセスできる外部データの範囲を同じにしたいときは，全サーバマシンでHADB管理者のUIDおよびGIDを同じ値にしてください。アクセスできる外部データの範囲を変えたいときは，HADB管理者のUIDおよびGIDをサーバマシンごとに別の値にしてください。

留意事項

外部表を使用する場合，サーバ定義のadb_sql_exe_max_rthd_numオペランドに指定した数の処理リアルスレッド以外に，外部表専用のリアルスレッドが1つのコネクションに対して複数個作成されます。また，そのリアルスレッドは，複数のコネクションでも共有して利用されます。サーバ定義のadb_sql_exe_max_rthd_numオペランドに指定した数を超えたリアルスレッドが動作するため，外部表を使用する場合はCPU負荷が高くなります。

メモ

外部表の運用については，「11.3　外部表の運用」を参照してください。

2.16.2　表関数導出表を使用した外部データの検索

表関数導出表を使用すると，CSV形式の外部データを検索できます。例えば，前年度の販売管理データをCSVファイル（CSV形式の外部データを格納しているファイル）に保管している場合，その販売管理データを表にインポートしなくても検索できます。

検索の際は，検索対象のCSVファイルのパスを指定したSELECT文を実行します。また，SELECT文に探索条件を指定することで，表にインポートしたデータの検索と同様に，条件に合致したデータを検索できます。表関数導出表を使用した外部データ（CSVファイル）の検索の概要を次の図に示します。

図2‒61　表関数導出表を使用した外部データ（CSVファイル）の検索の概要

注※

圧縮されていないCSVファイル，またはGZIP形式で圧縮されているCSVファイル中のデータを検索できます。

［説明］

CSVファイルのパスを指定したSELECT文を実行します。

CSVファイルのパスは，HADBが提供している関数（CSVファイル中のデータを取り出すADB_CSVREAD関数）中に指定します。

HADBサーバは，関数中に指定されたパスのCSVファイルにアクセスします。

HADBサーバは，CSVファイル中のデータを取り出し，表の形式で一時的に保存します。この一時的に保存された表形式のデータ集合を表関数導出表といいます。

HADBサーバは，SELECT文に指定された探索条件に従って，表関数導出表を検索し，APに検索結果を返します。

■ADB_CSVREAD関数を指定したSELECT文の例

GZIP形式で圧縮した次のCSVファイル中のデータを検索します。

/dir/file1.csv.gz

/dir/file2.csv.gz

/dir/file3.csv.gz

SELECT * FROM TABLE(ADB_CSVREAD(
           MULTISET['/dir/file1.csv.gz','/dir/file2.csv.gz','/dir/file3.csv.gz'],
          'COMPRESSION_FORMAT=GZIP;
           FIELD_NUM=1,2;
           ENCLOSING_CHAR=";
           DELIMITER_CHAR=,;'))
           AS "T1" ("C1" INTEGER, "C2" VARCHAR(32))

［説明］

下線部分がADB_CSVREAD関数の指定です。

ADB_CSVREAD関数には，CSVファイルの絶対パス名や，CSVファイル中の取り出し対象のデータなどを指定します。

ADB_CSVREAD関数については，マニュアルHADB　SQLリファレンスの構成要素のシステム定義関数のADB_CSVREAD関数を参照してください。

重要

CSVファイルは，次のどれかの条件を満たす必要があります。

・圧縮されていないCSVファイル

・OSのgzipコマンドでGZIP形式に圧縮されたCSVファイル

・adbexportコマンドでエクスポートした，GZIP形式に圧縮されたCSVファイル

CSVファイル中のデータを更新することはできません。

表にインポートされているデータの検索と比べると，CSVファイル中のデータの検索は，CSVファイルの解析処理が必要となる分，時間が掛かります。

2.17　テキストデータの検索

ここでは，テキストデータを便利に検索できる機能について説明します。

2.17.1　表記ゆれ補正検索

ここでは，テキストデータの表記ゆれ補正検索について説明します。

(1)　表記ゆれ補正検索とは

表記ゆれ補正検索とは，テキストデータ中の文字列に「大文字と小文字」，「半角文字と全角文字」，「ひらがなとカタカナ」などの表記ゆれがある場合に，それらの文字列を一括して検索する機能のことです。例えば，「Hitachi」で検索した場合，「Hitachi」だけでなく，「HITACHI」や「[図データ]」などもまとめて検索できます。そのため，表記ゆれ補正検索を使用すると，複数の探索条件をORでつないだSQL文を作成しなくても，表記がゆれているテキストデータを一括して検索できます。

コールセンタの履歴情報や製品の利用申請書のように，作成者が複数存在するテキストデータの場合，表記のゆれが発生しやすいと考えられます。そのようなテキストデータから，社名，製品名，担当者の名前など，ユニークな文字列をキーにして漏れなく検索する場合に，表記ゆれ補正検索を使用します。

表記ゆれ補正検索の例を次の図に示します。

図2‒62　表記ゆれ補正検索の例

［説明］

検索条件に「Hitachi」を指定した場合，「大文字と小文字」や「半角文字と全角文字」が混在していても，「Hitachi」が含まれている文字列を一括して検索できます。

表記ゆれ補正検索を行う場合は，スカラ関数CONTAINSを使用します。スカラ関数CONTAINSについては，マニュアルHADB　SQLリファレンスのスカラ関数の文字列関数（文字列情報の取得）のCONTAINSを参照してください。

なお，表記ゆれ補正検索を行う場合は，表記ゆれ補正検索に対応しているテキストインデクスを定義すると，読み込むページを少なくすることができます。その分，表の検索性能を向上させることができます。

重要

表記ゆれ補正検索は，HADBサーバで使用する文字コードが，Unicodeの場合（環境変数ADBLANGの指定値がUTF8の場合）に使用できます。Shift-JISの場合（環境変数ADBLANGの指定値がSJISの場合）は使用できません。

(2)　表記ゆれ補正検索の規則

表記ゆれ補正検索の規則を次の表に示します。

表2‒22　表記ゆれ補正検索の規則

項番

文字の種類

規則

表記ゆれ補正検索の例

1

英字

次に示す文字の違いは，表記ゆれ補正検索の対象になります。

英大文字

英小文字

半角英字

全角英字

検索条件に「max」を指定した場合，次に示す文字列が，表記ゆれ補正検索の対象になります。

2

数字

次に示す文字の違いは，表記ゆれ補正検索の対象になります。

半角数字

全角数字

3

ひらがな

カタカナ

■ひらがなとカタカナ

次に示す文字の違いは，表記ゆれ補正検索の対象になります。

ひらがな

カタカナ

■全角カタカナと半角カタカナ

次に示す文字の違いは，表記ゆれ補正検索の対象になります。

全角カタカナ

半角カタカナ

■濁点と半濁点

次に示す文字の後ろに，全角の濁点または半角の濁点がある場合，対象の文字は濁点が付いた文字と見なされます。

ひらがな

全角カタカナ

半角カタカナ

また，全角の半濁点，および半角の半濁点の場合も同様です。

■拗音と促音

拗音および促音の場合，それぞれの大文字と同一であると見なされます。

■長音記号

長音記号の有無は，表記ゆれ補正検索の対象外になるため，別の文字列として扱われます。

■例1

■例2

■例3

4

ダイアクリティカルマーク

次に示す文字の違いは，表記ゆれ補正検索の対象になります。

ダイアクリティカルマーク（ウムラウトなど）が付いた文字

ダイアクリティカルマーク（ウムラウトなど）が付いていない文字

次に示す文字列は，同じ文字列と見なされます。

そのため，検索条件に「MAX」を指定した場合，次に示す文字列が，表記ゆれ補正検索の対象になります。

5

特定の文字列を1文字で表記した文字

特定の文字列を1文字で表記している場合は，対象の1文字を文字列に展開します。そして，展開後の文字列と同一と見なされます。

次に示す文字列は，同じ文字列と見なされます。

「ひらがな」，「全角カタカナ」および「半角カタカナ」で，濁点や半濁点の有無が異なる文字の場合，別の文字と見なされます。そのため，表記ゆれ補正検索の対象外です。例えば，次に示す文字は，濁点や半濁点の有無が同じであるため，それぞれ同じ文字と見なされます。

「は」と「ハ」

「ば」と「バ」

「ぱ」と「パ」

一方，「は」と「ば」と「ぱ」は，濁点や半濁点の有無が異なるため，それぞれ別の文字と見なされます。例えば，検索条件に「バイク」を指定した場合，「バイク」と「ばいく」は検索できます。しかし，「ハイク」，「はいく」，「パイク」および「ぱいく」は，表記ゆれ補正検索の対象外であるため，検索できません。

表記ゆれ補正検索では，ISO/IEC14651:2011で規定されている文字の並べ替えや比較を行うためのコード（ソートコード）を使用しています。ソートコードが一致している文字を同じ文字と見なしています。

メモ

ソートコードでは存在しないと判断される文字（「記号」など）の場合，バイトコードを使用して文字の並べ替えや比較を行います。

スカラ関数CONTAINSの「表記ゆれ補正検索指定」に「SORTCODE(単純文字列指定)」を指定した場合に，ソートコードを使用します。

2.17.2　正規表現を使用した検索

正規表現を使用してテキストデータを検索することができます。正規表現を使用すると，複雑な検索条件を1つの検索条件で表すことができます。例えば，文字列ABCのあとに，5つの数字がある文字列などを検索することができます。

正規表現を使用した検索の例を次の図に示します。

図2‒63　正規表現を使用した検索の例

正規表現を使用した検索を行う場合は，LIKE_REGEX述語を使用します。LIKE_REGEX述語については，マニュアルHADB　SQLリファレンスの構成要素の述語のLIKE_REGEX述語を参照してください。

なお，正規表現を使用してテキストデータを検索する際，テキストインデクスを使用すると，読み込むページを少なくすることができます。その分，表の検索性能を向上させることができます。

メモ

POSIX準拠の正規表現（POSIX1003.2準拠の拡張正規表現）を使用できます。ただし，次に示す点が異なります。

文字列挙に，照合要素（[. .]），および文字等価クラス（[= =]）は使用できません。

後方参照表現（¥n）（nは1から9までの整数）は使用できません。

特殊文字をリテラル文字として扱う場合，常にエスケープ文字の指定が必要です。また，文字列挙に「 ] 」をリテラル文字として指定する場合，および「^」を先頭以外でリテラル文字として指定する場合もエスケープ文字の指定が必要です。

Perl拡張の演算子の一部が使用できます。使用できる表現については，マニュアルHADB　SQLリファレンスの構成要素の述語のLIKE_REGEX述語にある文字クラスを参照してください。

重要

正規表現を使用する場合，複数の文字と一致する表現，または複数回の繰り返しの表現などの指定ができます。そのため，指定した正規表現の内容によっては，列のデータを複数回評価することがあります。したがって，列のデータ長が長い場合は，正規表現を使用した検索時に，メモリを大量に使用するおそれがあります。また，検索に時間が掛かるおそれがあります。

繰り返し因子に大きな数を指定した場合，または繰り返し因子をネストして連続で指定した場合は，メモリを大量に使用するおそれがあります。また，検索に時間が掛かるおそれがあります。

2.17.3　同義語検索

ここでは，テキストデータ（文書データ）の同義語検索について説明します。

(1)　同義語検索とは

文献や論文などの文書データを検索する際，検索対象に指定した語句と，その語句の同義語をまとめて検索することができます。この機能を同義語検索といいます。同義語検索をする場合は，検索対象とする同義語の一覧を辞書に登録しておく必要があります。この辞書を同義語辞書といいます。同義語検索の概要を次の図に示します。

図2‒64　同義語検索の概要

［説明］

同義語検索を行う前に，同義語辞書を作成しておく必要があります。この例では，同義語辞書名がDictionary1という同義語辞書を作成しています。その同義語辞書に「データベース，データバンク，database」という同義語を登録しています。

同義語検索を行う場合，SELECT文でスカラ関数CONTAINSを指定します。スカラ関数CONTAINS中に同義語辞書名と，同義語辞書に登録されている同義語の1つを指定します。上記の例では，同義語の1つとして「データベース」を指定しています。

上記のSELECT文を実行すると，同義語検索が行われて「データベース，データバンク，database」のどれかが含まれる文書データが検索されます。

■英語文章への利用方法

語尾の変化を考慮した英単語を同義語辞書に登録するという利用方法も考えられます。例えば，同義語辞書に「electromagnet，electromagnets，electromagnetic」を登録します。同義語検索の実行時に「electromagnet」を検索対象文字列に指定すると，「electromagnet，electromagnets，electromagnetic」のすべての語句が検索対象になります。

（例）

SELECT "TITLE" FROM "REPORTS"
    WHERE CONTAINS("DOCUMENTS",'SYNONYM("Dictionary2","electromagnet")')>0

メモ

同義語検索の環境設定および使い方については，「11.19　同義語検索を行う際の運用」を参照してください。

(2)　表記ゆれ補正検索との組み合わせ

同義語検索と表記ゆれ補正検索の両方を合わせて使用できます。スカラ関数CONTAINSの指定で，同義語検索と表記ゆれ補正検索の両方を使用することを選択できます。

（例）

SELECT "文書ID" FROM "文献一覧表"
    WHERE CONTAINS("文献データ",'SYNONYM("Dictionary1",SORTCODE("データベース"))')>0

上記のSELECT文を実行すると，同義語検索が行われて「データベース，データバンク，database」のどれかが含まれる文書データが検索されます。さらに，表記ゆれ補正検索も適用されるため，「[図データ]，[図データ]，DATABASE」などの語句が含まれている文書データも検索されます。

(3)　テキストインデクスとの関係

同義語検索を行う場合，テキストインデクスを使用すると検索性能の向上が見込まれるため，検索対象の文書データを格納している列にテキストインデクスを定義することを推奨します。

なお，同義語検索と表記ゆれ補正検索の両方を合わせて使用する場合にテキストインデクスを使用するときは，表記ゆれ補正検索に対応しているテキストインデクスを定義する必要があります。ただし，表記ゆれ補正検索に対応しているテキストインデクスは，対応していないテキストインデクスよりもデータ容量が増加します。

2.17.4　ワード検索

ここでは，テキストデータ（文書データ）のワード検索について説明します。

(1)　ワード検索とは

ワード検索とは，英語で書かれたテキストデータ（文書データ）から，検索対象に指定した英単語を高速に検索する機能です。ワード検索では，次の2つの方法で英単語を検索できます。

完全一致検索

指定した英単語と完全に一致する英単語を検索する方法です。例えば，「apple」という英単語を検索したい場合は，「apple」と指定します。

前方一致検索

検索したい英単語の先頭から数文字を指定して検索する方法です。例えば，「apple」という英単語を検索したい場合は，「app」のように指定します。

英語で書かれたテキストデータ（文書データ）を，完全一致検索や前方一致検索で高速に検索したい場合に，ワード検索を使用します。ワード検索の概要を次の図に示します。

図2‒65　ワード検索の概要

ワード検索を行う場合は，スカラ関数CONTAINSを使用します。スカラ関数CONTAINSについては，マニュアルHADB　SQLリファレンスのスカラ関数の文字列関数（文字列情報の取得）のCONTAINSを参照してください。

また，ワード検索を行う場合は，ワード検索用のテキストインデクスを定義すると，読み込むページ数を少なくすることができます。その分，表の検索性能を向上させることができます。ワード検索用のテキストインデクスについては，マニュアルHADB　SQLリファレンスの定義系SQLのCREATE INDEX（インデクスの定義）を参照してください。

ワード検索の対象となるテキストデータ（文書データ）は，次の条件を満たす必要があります。

テキストデータは，半角英数字の単語で構成されている。

単語と単語の間は，半角空白，タブ，改行，またはピリオドなどの記号で区切られている（区切り文字が存在している）。

区切り文字そのものは，ワード検索では検索されません。上記の条件を満たしている場合は，英語で書かれた文章以外でもワード検索を使用できます。区切り文字については，「(2)　ワード検索と区切り文字の関係」を参照してください。

メモ

英単語中に全角文字や全角空白が含まれている場合でも，ワード検索が実行されます。例えば，「Hitach[図データ]」（「[図データ]」が全角文字）という英単語が存在する場合，「Hitach[図データ]」でワード検索が実行されます。

重要

ワード検索では，中間一致検索と後方一致検索は実行できません。例えば，「apple」を指定してワード検索を行っても，「pineapple」は検索できません。

中間一致検索や後方一致検索を実行したい場合は，LIKE述語による中間一致検索を行ってください。または，スカラ関数CONTAINSを使用した中間一致検索を行ってください。

(2)　ワード検索と区切り文字の関係

ワード検索では，英語の文章中に含まれる区切り文字で区切られた単語を検索します。ワード検索で区切り文字として扱われる文字を次に示します。

半角空白（0x20）

タブ（0x09）

改行（0x0A）

復帰（0x0D）

ピリオド（0x2E）

疑問符（0x3F）

感嘆符（0x21）

区切り文字そのものは，単語には含まれません。そのため，区切り文字が1文字の場合でも，2文字以上連続して存在した場合でも，単語には影響がありません。

■区切り文字が連続で存在した場合

次の文章の場合，どちらも「This」，「is」，「an」，「apple」がそれぞれ単語として扱われます。

This△is◇an△apple.

This△is◇an△△◇apple.

（凡例）

△：半角空白

◇：タブ

なお，ワード検索用のテキストインデクスを定義する際，区切り文字として扱う文字を指定します。詳細については，「5.4.6　ワード検索時の区切り文字の選択（DELIMITER）」を参照してください。

また，ワード検索の完全一致検索の場合，複数の単語（熟語）を指定して検索することができます。このときも，区切り文字そのものは単語に含まれません。そのため，区切り文字が1文字の場合でも，2文字以上連続して存在した場合でも，検索する単語には影響がありません。

■ワード検索の完全一致検索による複数単語（熟語）の検索

ワード検索で「this△△△is」を指定して検索した場合は，次のような複数の単語（熟語）を検索できます。なお，「is△this」のように記載順序が異なったり，「this△apple△is」のように単語と単語の間に別の文字が含まれていたりした場合は，検索されません。

this△is△an△apple

this△◇is◇an◇apple

（凡例）

△：半角空白

◇：タブ

メモ

検索対象に区切り文字だけが指定された場合は，ワード検索の対象となるテキストデータ（文書データ）の内容に関係なく，全件検索が行われます。

(3)　ワード検索と表記ゆれ補正検索の組み合わせ

ワード検索は，表記ゆれ補正検索と組み合わせて使用できます。表記ゆれ補正検索については，「2.17.1　表記ゆれ補正検索」を参照してください。

スカラ関数CONTAINSの指定で，ワード検索と表記ゆれ補正検索の両方を使用することを選択できます。ワード検索の完全一致検索と前方一致検索どちらの場合でも，表記ゆれ補正検索と組み合わせて使用できます。

ワード検索と表記ゆれ補正検索を組み合わせて使用すると，英単語に，次のような表記ゆれが存在しても一括して検索できます。

英大文字と英小文字

ダイアクリティカルマーク（ウムラウトなど）が付いた文字と付いていない文字

(4)　ワード検索と同義語検索の組み合わせ

ワード検索の完全一致検索は，同義語検索と組み合わせて使用できます。同義語検索については，「2.17.3　同義語検索」を参照してください。

スカラ関数CONTAINSの指定で，ワード検索と同義語検索の両方を使用することを選択できます。そのため，検索対象とする単語とその単語の同義語を，ワード検索でまとめて検索できます。

重要

ワード検索の前方一致検索は，同義語検索と組み合わせて使用できません。

ワード検索の場合，単語そのものを検索するため，単語と単語の間の区切り文字の種類に関係なく，検索対象の単語と一致すれば検索されます。しかし，同義語検索の場合，区切り文字も含めた単語を同義語辞書に登録していると，区切り文字も含めて同じ単語のときだけ検索されます。例を次の図に示します。

図2‒66　ワード検索と同義語検索を組み合わせた場合の検索例

［説明］

ワード検索と同義語検索を組み合わせて，「data◇base」で検索した場合は，同義語辞書に登録されている同義語「data△base」と一致しません。そのため，同義語辞書に登録されている同義語は検索されません。

ワード検索と同義語検索を組み合わせて，「data△base」で検索した場合は，同義語辞書に登録されている同義語「data△base」と一致します。同義語辞書に登録されている同義語が検索されるため，同義語の「data◇bank」も検索されます。また，このときワード検索も行われるため，区切り文字が異なる「data△bank」も検索されます。

(5)　ワード検索・表記ゆれ補正検索・同義語検索の組み合わせ

ワード検索の完全一致検索は，表記ゆれ補正検索および同義語検索の両方と組み合わせて使用することもできます。

2.18　監査証跡機能

ここでは，データベースの利用状況を監査する際に必要となる監査証跡を出力する監査証跡機能について説明します。

2.18.1　監査証跡機能とは

HADBユーザがデータベースにアクセスした際のアクセス記録や，HADBユーザが実行したコマンドの操作記録などをファイル（監査証跡ファイル）に出力します。この機能を監査証跡機能といいます。また，出力されるアクセス記録や操作記録などを監査証跡といいます。例えば，HADBユーザが表にアクセスした場合，アクセスした時刻，アクセスしたHADBユーザの認可識別子，操作内容，操作対象のスキーマオブジェクトなどが，操作記録（監査証跡）として出力されます。出力された監査証跡を参照すると，「いつ」，「誰が」，「どのような操作を実行し」，「どのスキーマオブジェクトにアクセスしたか」，などを調査できます。出力された監査証跡の利用方法の例を次に示します。

データベースの利用状況を監査する際に，監査証跡を使用してデータベース利用者の操作内容などを調査します。

セキュリティインシデントが発生した際に，監査証跡を使用して原因の調査や，漏えいしたおそれがある情報を調査します。

監査証跡機能の概要を次の図に示します。

図2‒67　監査証跡機能の概要

［説明］

HADBユーザが表の検索や更新，コマンドを実行した際の操作記録が，監査証跡として監査証跡ファイルに出力されます。

データベースの利用状況を監査する際，監査の実行者（監査人）が監査証跡を参照して調査を行います。また，セキュリティインシデントの発生時の調査資料の一つとして，監査証跡を利用します。

データベースシステムを使用している場合，データベースの不正利用が行われていないか，セキュリティポリシーに従ってデータベースが利用されているかなどを，定期的に監査する必要があります。この定期監査の際，監査の結果を証明するために監査証跡を使用します。

メモ

監査証跡機能は，セキュリティを直接強化する機能ではありません。データベースの利用者が，セキュリティポリシーに従ってデータベースを適切に利用しているかどうかを調査する際に使用する機能です。したがって，監査証跡機能を使用することによって，データベースの利用者の不正操作を必ず防止できるわけではありません。しかし，監査証跡機能を使用して監査を実施していることをデータベースの利用者に知らせることによって，悪意を持った利用者による不正操作を心理的に抑止できると考えられます。それによって，総合的にセキュリティ効果を高める狙いがあります。

2.18.2　監査人の作成

監査証跡機能を使用する場合は，監査人を作成する必要があります。監査人とは，監査権限（監査管理権限または監査参照権限）を持っているHADBユーザのことです。監査人は次のことを実施します。

監査証跡機能の運用

監査証跡を出力する操作（監査イベント）の選定，監査証跡の出力開始，HADBユーザが持っている監査権限の取り消しなど，監査証跡機能の運用を行います。監査証跡機能の運用を行うには，監査管理権限が必要になります。

監査の実行

監査証跡を参照して，データベースの利用状況の監査や，統一フォーマット用監査証跡ファイルの出力を行います。

監査証跡を参照するには，監査参照権限が必要になります。

DBA権限を持っているHADBユーザが，GRANT文を実行してHADBユーザに監査権限を付与することで監査人を作成します。監査管理権限だけを持っている監査人，監査参照権限だけを持っている監査人，または監査管理権限と監査参照権限の両方を持っている監査人を作成できます。また，これらの監査人を複数人作成することもできます。監査人の役割や作業内容を考慮して，必要な権限を付与してください。

2.18.3　監査証跡の出力契機（監査対象イベント）

監査証跡の出力対象となる操作を監査対象イベントといいます。監査対象イベントには，監査証跡機能が有効な場合は監査証跡が必ず出力される必須監査イベントと，監査証跡を出力するかどうかを選択できる選択監査イベントがあります。

例えば，次に示す操作などが監査対象イベントになります。これらの監査対象イベントの終了時に監査証跡が出力されます。

必須監査イベントの例

adbstartコマンドによるHADBサーバの開始

adbmodareaコマンドによるDBエリアの追加または変更

GRANT文による監査権限の付与

adbaudittrailコマンドによる監査証跡機能の無効化

ADB_AUDITREAD関数を使用した監査証跡の参照

選択監査イベントの例

HADBサーバへの接続

CREATE TABLE文による表の定義

SELECT文による表の検索

UPDATE文による行の更新

adbimportコマンドによるデータのインポート

監査対象イベントとなる操作の詳細については，「12.9.1　監査対象イベントの一覧と出力項目」を参照してください。

重要

監査対象イベントの対象となるスキーマオブジェクトが複数ある場合，スキーマオブジェクトの数だけ監査証跡が出力されます。

（例）

SELECT * FROM "T1","T2"

［説明］

上記のSELECT文を実行した場合，表T1に関する監査証跡と，表T2に関する監査証跡がそれぞれ出力されます。

上記のように，監査対象イベントの対象となるスキーマオブジェクトごとに監査証跡は出力されます。そのため，必須監査イベントと選択監査イベントの両方で監査証跡を出力すると，監査証跡の出力量が非常に多くなる可能性があります。また，監査証跡の出力量が多くなると，監査の作業効率にも影響を及ぼすおそれがあります。したがって，監査の目的を明確にして，選択監査イベントでも監査証跡を出力するかどうかを選択します。選択監査イベントでも監査証跡を出力する場合は，CREATE AUDIT文で監査対象を定義します。

メモ

監査対象イベントの対象となるスキーマオブジェクトが1つの場合，または監査対象イベントの対象となるスキーマオブジェクトがない場合は，監査証跡が1つだけ出力されます。

コマンドの入力誤りによるエラー発生時は，監査証跡は出力されません。

2.18.4　監査証跡に出力される情報

監査証跡には，「いつ」，「誰が」，「どのような操作を実行したか」などの情報が記録されます。監査証跡に出力される情報の例を次に示します。

（例1）

SELECT * FROM "T1" WHERE "C1"=100

上記のSQL文が実行された場合，監査証跡には次のような情報が出力されます。

（例2）

adbimportコマンドが実行された場合，監査証跡には次のような情報が出力されます。

ここでは監査証跡に出力される情報の一部だけを紹介しています。監査証跡に出力される情報の詳細については，「12.9.2　監査証跡を検索するときの表関数導出表の列構成」および「12.9.3　監査証跡の出力契機と出力項目」を参照してください。

2.18.5　監査証跡の出力先（監査証跡ファイル）

監査証跡は指定したディレクトリ下（監査証跡の出力先ディレクトリ下）のファイルに出力されます。このファイルを監査証跡ファイルといいます。

また，現在，監査証跡の出力対象となっているファイルを現用の監査証跡ファイルといいます。現用の監査証跡ファイルの容量が上限に達すると，HADBサーバは，現用の監査証跡ファイルをリネームします。そのあと，新たに現用の監査証跡ファイルを作成し，そのファイルに監査証跡を出力します。これを現用の監査証跡ファイルの切り替えといいます。

現用の監査証跡ファイルの切り替えの仕組みを次の図に示します。

図2‒68　現用の監査証跡ファイルの切り替えの仕組み

［説明］

監査証跡の出力先ディレクトリ下の現用の監査証跡ファイルに監査証跡が出力されます。現用の監査証跡ファイルの名称は，adbaud.aud固定です。

現用の監査証跡ファイルの容量が上限（256メガバイト）に達すると，現用の監査証跡ファイルがリネームされます。

メモ

256メガバイトの上限値は，サーバ定義のadb_audit_log_max_sizeオペランドで変更できます。

新たに現用の監査証跡ファイルが作成され，そのファイルに監査証跡が出力されます。

■監査証跡ファイルのリネーム規則

現用の監査証跡ファイルが切り替わる際，現用だった監査証跡ファイルは，次に示す規則に従ってリネームされて保存されます。

［マルチノード機能の場合］

現用の監査証跡ファイル名と，監査証跡ファイルのリネーム規則を次に示します。

メモ

上記の名称規則に該当しない監査証跡ファイル，または監査証跡の出力先ディレクトリ以外に格納されている監査証跡ファイルは，監査証跡の出力が完了したファイルとして扱われます。

リネーム時に同じ名称の監査証跡ファイルが監査証跡の出力先ディレクトリにある場合は，ファイル名が重複しないようにリネームされます。

■現用の監査証跡ファイルの切り替わり契機

現用の監査証跡ファイルは，次の契機で切り替わります。

現用の監査証跡ファイルの容量が上限に達したとき

adbaudittrail --swapコマンドで現用の監査証跡ファイルを切り替えたとき

メモ

次の操作をした場合，この操作に関する監査証跡の出力後，現用の監査証跡ファイルがリネームされます。このとき，新しい現用の監査証跡ファイルは作成されません。

HADBサーバの終了

adbaudittrail --stopコマンドによる監査証跡の無効化

次回のHADBサーバの開始時，または監査証跡の有効化時に，現用の監査証跡ファイルが作成されます。

■監査証跡の出力先ディレクトリ下に格納できる監査証跡ファイルの上限数

監査証跡の出力先ディレクトリ下に格納できる監査証跡ファイル数に上限を設定できます。上限数は，サーバ定義のadb_audit_log_max_numオペランドで指定します。例えば，このオペランドに100を指定した場合，監査証跡の出力先ディレクトリ下に格納できる監査証跡ファイルの上限が100個になります。この監査証跡ファイルには，現用の監査証跡ファイルも含まれます。HADBサーバが101個目の監査証跡ファイルを作成しようとした場合，いちばん古い監査証跡ファイルが削除されます。

重要

デフォルトは，ファイル数の上限の設定なしとなります。この場合，監査証跡の出力先ディレクトリ下に格納される監査証跡ファイルは単調増加していくため，ディスクの空き容量に注意する必要があります。

2.18.6　監査証跡の参照

監査証跡は，監査証跡ファイルにバイナリ形式で出力されます。そのため，OS上でファイルを開いて参照することはできません。監査証跡を参照する場合，次の2つの方法があります。

ADB_AUDITREAD関数を指定したSELECT文を実行する

ADB_AUDITREAD関数とは，監査証跡ファイル中の監査証跡を表形式のデータ集合（表関数導出表）に変換する関数です。ADB_AUDITREAD関数を指定したSELECT文を実行すると，監査証跡を参照できます。

adbconvertaudittrailfileコマンドで監査証跡を変換する

監査証跡ファイルに出力された監査証跡をadbconvertaudittrailfileコマンドで変換すると，他製品であるJP1/Auditで監査証跡を参照できます。監査証跡の変換については，「2.18.9　監査証跡の変換（JP1/Audit Management - Managerとの連携）」を参照してください。

ここでは，ADB_AUDITREAD関数を指定したSELECT文を実行して，監査証跡を参照する方法について説明します。

ADB_AUDITREAD関数中に，調査対象の監査証跡が格納されている監査証跡ファイルのパスを指定すると，HADBサーバはその監査証跡ファイル中の監査証跡を読み込み，表形式のデータ集合に変換します。

ADB_AUDITREAD関数による監査証跡ファイル中の監査証跡の読み込みの例を次の図に示します。

図2‒69　ADB_AUDITREAD関数による監査証跡ファイル中の監査証跡の読み込みの例

［説明］

下記のSELECT文を実行した場合，下線部分に指定した監査証跡ファイル中の監査証跡が読み込まれて，表形式のデータ集合に変換されます。

SELECT * FROM
  TABLE(ADB_AUDITREAD(MULTISET['/audit/*.aud'])) "DT"

重要

ADB_AUDITREAD関数中に監査証跡ファイルのパス（/audit/*.aud）を指定しています。この例では，特殊文字*を指定しています。この例のように指定すると，/auditディレクトリ下のすべての監査証跡ファイルが，ADB_AUDITREAD関数の読み込み対象になります。

ADB_AUDITREAD関数の詳細については，マニュアルHADB　SQLリファレンスのADB_AUDITREAD関数を参照してください。

ADB_AUDITREAD関数によって変換された表形式のデータ集合の各列の列名やデータ型は，HADBサーバによって決められています。各列の列名やデータ型，および格納される情報については，「12.9.2　監査証跡を検索するときの表関数導出表の列構成」を参照してください。

■監査証跡の検索例

アクセス履歴を調査したい期間などの検索条件を，SELECT文の探索条件に指定して，監査証跡を検索することができます。監査証跡の検索例を次に示します。

（例）

2017年4月1日～2017年4月30日の間に，HADBサーバにアクセスしたHADBユーザを検索します。

SELECT DISTINCT "USER_NAME"                                           ...1
  FROM TABLE(ADB_AUDITREAD(MULTISET['/audit/*.aud'])) "DT"
    WHERE "EXEC_TIME" BETWEEN TIMESTAMP'2017/04/01 00:00:00.000000'   ...2
                          AND TIMESTAMP'2017/04/30 23:59:59.999999'

検索結果の例

USER_NAME
---------
ADBUSER02
ADBUSER06
ADBUSER07

［説明］

ADB_AUDITREAD関数によって変換された表形式のデータ集合のUSER_NAME列には，HADBサーバにアクセスしたHADBユーザの認可識別子が格納されています。

EXEC_TIME列には，HADBユーザが操作を実行した時刻（イベント完了時刻）が格納されています。

重要

監査参照権限を持っているHADBユーザだけが，監査証跡を参照できます（ADB_AUDITREAD関数を指定したSELECT文を実行できます）。

2.18.7　監査証跡機能の有効化と無効化

監査証跡の出力は，HADBサーバの性能に与える影響が大きいため，デフォルトでは監査証跡を出力しない設定になっています。この状態を監査証跡機能が無効になっているといいます。

監査証跡機能の環境設定が完了したあとにadbaudittrail --startコマンドを実行すると，監査証跡機能が有効になり，監査証跡が出力されるようになります。監査証跡機能が有効な場合，次に示す監査証跡機能に関する操作が実行できます。

ADB_AUDITREAD関数を使用した監査証跡の参照

CREATE AUDIT文による監査対象の定義

DROP AUDIT文による監査対象定義の削除

REVOKE文による監査権限の取り消し

一度有効にした監査証跡機能を無効にする場合は，adbaudittrail --stopコマンドを実行します。監査証跡機能が無効になると，監査証跡の出力が停止します。

重要

監査管理権限を持っているHADBユーザだけが，監査証跡機能の有効化と無効化を操作できます。

2.18.8　監査証跡機能で使用するディスクの準備

監査対象イベントの発生数によって，監査証跡の出力量が非常に多くなる可能性があります。その結果，監査証跡を出力するディスクに対する入出力が多く発生し，HADBサーバの処理性能に影響を及ぼすおそれがあります。そのため，監査証跡を出力する専用のディスク（監査証跡の出力先ディスク）を準備することを推奨します。また，そのディスクとは別に，監査証跡ファイルを保存しておくディスク（監査証跡の保存先ディスク，監査証跡の長期保存先ディスク）を準備することを推奨します。これら3つのディスクを準備して，監査証跡機能を運用することを推奨します。各ディスクの用途を次に説明します。

監査証跡の出力先ディスク

監査証跡の出力先ディスクには，監査証跡の出力先ディレクトリだけを作成し，そのディレクトリ下に監査証跡を出力します。基本的に，このディスクに保存されている監査証跡ファイルは参照しません。

監査証跡の出力先ディスクから監査証跡の保存先ディスクに，監査証跡ファイルを定期的に移動させます。ファイルの移動を実行するバッチプログラムを作成して，定期的にそのバッチプログラムを実行することを推奨します。

監査証跡の保存先ディスク

監査証跡の保存先ディスクには，監査の際に使用する監査証跡ファイルを保存します。監査の際には，監査証跡の保存先ディスクに保存している監査証跡ファイルのパスをADB_AUDITREAD関数中に指定して，監査証跡を参照します。例えば，監査時に過去1年分の監査証跡を使用する場合は，過去1年分の監査証跡ファイルをこのディスクに保存しておきます。

監査期間を過ぎた監査証跡ファイルは，監査証跡の長期保存先ディスクに移動させます。

監査証跡の長期保存先ディスク

監査証跡の長期保存先ディスクには，監査期間が過ぎた監査証跡ファイルを保存します。例えば，監査が1年ごとに実施される場合は，過去1年を過ぎた監査証跡ファイルを保存しておきます。

通常は，監査証跡の長期保存先ディスクに保存している監査証跡ファイル中の監査証跡を参照することはありません。セキュリティインシデントが発生した場合や，過去に遡って監査証跡を調査する場合に備えて，監査証跡ファイルを保存しておくためのディスクです。

監査証跡機能の推奨運用の流れを次の図に示します。

図2‒70　監査証跡機能の推奨運用の流れ

上記の図の，監査証跡の長期保存先ディスクに保存している監査証跡ファイルは，参照頻度が少ないため，OSのgzipコマンドで圧縮することを推奨します。ディスク容量に応じてファイルの圧縮を検討してください。監査証跡の保存先ディスクに保存している監査証跡ファイルは，監査の際に参照するため，圧縮しないで保存しておくことを推奨します。

重要

監査証跡ファイルが圧縮されている状態であっても，ADB_AUDITREAD関数を指定したSELECT文で監査証跡を参照することができます。

2.18.9　監査証跡の変換（JP1/Audit Management - Managerとの連携）

ここでは，監査証跡の変換について説明します。HADBサーバの監査証跡をJP1/Audit Management - Manager（JP1/Audit）で収集・管理する場合，監査証跡の変換が必要になります。

監査証跡ファイル内の監査証跡を，JP1/Auditが扱える形式（統一フォーマット形式）にadbconvertaudittrailfileコマンドで変換することを，監査証跡の変換といいます。

変換された監査証跡は，adbconvertaudittrailfileコマンド実行時に指定したディレクトリ下（統一フォーマット用監査証跡の出力先ディレクトリ下）のファイルに出力されます。このファイルを統一フォーマット用監査証跡ファイルといいます。統一フォーマット用監査証跡ファイル内の監査証跡は，JP1/Auditで収集・管理することができます。

「2.18.6　監査証跡の参照」で説明しているとおり，監査証跡は，監査証跡ファイルにバイナリ形式で出力されます。この監査証跡はJP1/Auditで扱えない形式であるため，HADBサーバとJP1/Auditを連携しても，JP1/Auditで監査証跡を収集・管理できません。そのため，JP1/Auditで監査証跡を収集・管理したい場合は，adbconvertaudittrailfileコマンドで監査証跡を変換する必要があります。

メモ

JP1/AuditでHADBサーバの監査証跡を収集・管理できるようになると，他製品の監査証跡とあわせた一元管理を実現できるようになります。

監査証跡の変換の概要を次の図に示します。

図2‒71　監査証跡の変換の概要

［説明］

adbconvertaudittrailfileコマンドに，変換対象の監査証跡が格納されている監査証跡ファイル，および統一フォーマット用監査証跡の出力先ディレクトリを指定して，監査証跡の変換を行います。

adbconvertaudittrailfileコマンドで変換された監査証跡は，統一フォーマット用監査証跡の出力先ディレクトリに格納されている統一フォーマット用監査証跡ファイルに出力されます。

HADBサーバとJP1/Auditを連携している場合，監査証跡の変換を行うことで，統一フォーマット用監査証跡ファイルに出力された監査証跡は，JP1/Auditで収集・管理されるようになります。

監査証跡機能とJP1/Auditを連携する方法については，「12.8　監査証跡機能とJP1/Audit Management - Managerとの連携」を参照してください。また，JP1/Auditの詳細については，マニュアルJP1/Audit　構築・運用ガイドを参照してください。

adbconvertaudittrailfileコマンドの詳細については，マニュアルHADB　コマンドリファレンスのadbconvertaudittrailfile（監査証跡ファイルの変換）を参照してください。

重要

監査参照権限を持っているHADBユーザだけが，adbconvertaudittrailfileコマンドを実行できます。

メモ

統一フォーマット用監査証跡の出力先ディレクトリには，統一フォーマット用監査証跡ファイルが最大で4つ格納されます。詳細については，「12.8.3　監査証跡機能とJP1/Auditを連携する際の環境設定」の「(1)　HADBサーバの環境設定」を参照してください。

2.19　DBエリア暗号化機能

ここでは，DBエリア内のデータを暗号化するDBエリア暗号化機能について説明します。

DBエリア暗号化機能の環境設定および運用方法についは，「13.　DBエリア暗号化機能の運用」を参照してください。

2.19.1　DBエリア暗号化機能とは

次のDBエリア内のデータ，およびシステムログファイル内のデータを暗号化することができます。この機能をDBエリア暗号化機能といいます。DBエリア暗号化機能を使用すると，機密情報の盗難などの脅威を防ぐことができます。

データ用DBエリア

ディクショナリ用DBエリア

作業表用DBエリア

システム表用DBエリア

暗号化対象とするDBエリアを選択できます。機密情報を含む表やインデクスを格納するデータ用DBエリアは暗号化し，機密情報を含まない表やインデクスを格納するデータ用DBエリアは暗号化しないという選択ができます。また，ディクショナリ用DBエリア，作業表用DBエリア，システム表用DBエリアも暗号化対象とするかどうかを選択できます。これらのDBエリアにも機密情報となるユーザデータが含まれることがあるため，データ用DBエリアを暗号化する場合はこれらのDBエリアも暗号化対象にすることを推奨します。

なお，DBエリアを1つでも暗号化対象とした場合，ユーザデータが含まれるシステムログファイルも自動的に暗号化対象になります。システムログファイルだけを暗号化対象にすることはできません。

DBエリア暗号化機能の概要を次の図に示します。

図2‒72　DBエリア暗号化機能の概要

メモ

マスタディレクトリ用DBエリアにはユーザデータが含まれることがないため，DBエリア暗号化機能の対象外になっています。

メモリ上のデータ（グローバルバッファやテーブルスキャンバッファなど）は暗号化されません。

暗号化対象のDBエリアに格納されている表のチャンクに対して，adbarchivechunkコマンドを実行して生成したアーカイブファイルなど，DBエリアの外部に存在するファイルは暗号化されません。

データの暗号化と復号はHADBサーバが実行するため，暗号化と復号に関するユーザの操作はありません。暗号化と復号はディスクへの入出力時に実行されます。ディスクにデータが格納されるときにデータが暗号化され，表の検索時などにデータをディスクから取り出すときにデータが復号されます。データの暗号化と復号の例を次の図に示します。

図2‒73　データの暗号化と復号の例

■暗号化対象とするデータ用DBエリア

機密情報を含む表（暗号化したいデータを含む表）を格納するデータ用DBエリアを暗号化します。また，インデクスデータにも機密情報となるユーザデータが含まれる可能性があるため，表に定義しているインデクスを格納するデータ用DBエリアも暗号化することを推奨します。

■APへの影響

データの暗号化と復号の処理は，HADBサーバが実行するため，APの変更は必要ありません。DBエリア暗号化機能を使用しないときと同様にSQL文を使ってHADBのデータベースを検索したり更新したりできます（透過的にデータベースを利用できます）。

■性能への影響

DBエリア暗号化機能を使用する場合，データの暗号化と復号の処理が追加される分，サーバマシンのリソース（CPUやメモリなど）をより多く消費するため，性能に影響を及ぼす可能性があります。データの暗号化と復号は，データの入出力時に行われるため，データの入出力を減らすと性能への影響を少なくできます。例えば，インデクスの見直しや，バッファの見直しなどが考えられます。DBエリア暗号化機能を使用する場合は，チューニングを実施してデータの入出力を減らすことを推奨します。チューニングについては，「14.　チューニング」を参照してください。

■アクセス制御との関係

DBエリア暗号化機能は，機密情報の盗難という脅威からデータベースを守る機能であり，データベースへの不正なアクセスを防ぐ機能ではありません。正規のHADBユーザがデータベースへアクセスした場合は，データを復号して正しくデータを返却するため，正規のHADBユーザを使用した悪意を持つ人物のデータベースへのアクセスを防ぐことはできません。そのため，「誰がどの情報を閲覧可能か」というアクセス制御を行うには，アクセス権限を使用してください。アクセス権限については，「2.7.6　アクセス権限」を参照してください。

■データベースのセキュリティ上の脅威の代表的な例とDBエリア暗号化機能での対応

データベースのセキュリティ上の脅威の代表的な例とDBエリア暗号化機能での対応を次の表に示します。

表2‒23　データベースのセキュリティ上の脅威の代表的な例とDBエリア暗号化機能での対応

脅威の代表的な例

DBエリア暗号化機能での対応

データベースが保存されているディスクやバックアップメディアを盗まれることによる情報漏えい

○

データベース内のデータや認証パケットなどの改ざん

△※

通信経路のパケット盗聴による情報漏えい

×

メモリダンプ解析による情報漏えい

×

特権ユーザが不正に使用される

×

サーバのリソースを枯渇させたり，負荷を上昇させたりすることによるサービス妨害

×

SQLインジェクションなどによる攻撃

×

マルウェアに感染することによる攻撃

×

不正な操作の否認

×

（凡例）

○：DBエリア暗号化機能を使用することで防ぐことができます。

△：DBエリア暗号化機能を使用することである程度防ぐことができます。

×：DBエリア暗号化機能では防ぐことができません。

注※

データが暗号化されるため，データの改ざんをある程度防ぐことができます。ただし，データの破壊を防ぐことはできません。

■AWS環境でクラウドストレージ機能を使用する場合の留意事項

AWS環境でクラウドストレージ機能を使用する場合，Amazon S3のバケットの暗号化機能を有効化する必要はありません。

2.19.2　HADB暗号鍵とデータ暗号鍵

DBエリア暗号化機能では，HADB暗号鍵とデータ暗号鍵の2つを使用してデータの暗号化と復号が行われます。

HADB暗号鍵

HADB暗号鍵は，データ暗号鍵を暗号化するために使用します。HADB暗号鍵は，OSが扱えるファイルシステム上のファイルに格納します。このファイルをHADB暗号鍵ファイルといいます。HADB暗号鍵は，ユーザがHADBのコマンドを実行して，1つだけ作成します。HADB暗号鍵は，HADBサーバで1つだけです。

HADB暗号鍵ファイルのパスをサーバ定義のadb_crypto_dmkey_pathオペランドに指定すると，作成したHADB暗号鍵が使えるようになります。

重要

HADB暗号鍵を作成するときに，HADB暗号鍵利用パスワードを設定します。HADB暗号鍵は，HADB暗号鍵利用パスワードによって暗号化されています。HADB暗号鍵を更新したり，HADBを開始したりする際，HADB暗号鍵利用パスワードの入力が必要になります。

HADB暗号鍵利用パスワードには，認可識別子に対するパスワードと同じ指定規則が適用されます。パスワードの指定規則については，「9.4.3　パスワードの指定規則」を参照してください。HADB暗号鍵利用パスワードの文字列は，12文字以上を推奨します。

データ暗号鍵

データ暗号鍵は，DBエリア内およびシステムログファイル内のデータを暗号化するために使用します。1つのDBエリアファイルに対して1つのデータ暗号鍵が作成されます。また，1つのシステムログファイルに対して1つのデータ暗号鍵が作成されます。データ暗号鍵は，HADBが自動的に作成し，HADB暗号鍵によって暗号化された状態でDBエリア内に保存されます。

HADB暗号鍵とデータ暗号鍵の概要を次の図に示します。

図2‒74　HADB暗号鍵とデータ暗号鍵の概要

■HADB暗号鍵およびデータ暗号鍵の更新

同じHADB暗号鍵およびデータ暗号鍵を長期間使い続けると，攻撃者などに暗号化されたデータを解析するための時間を与えてしまうおそれがあります。そのため，HADB暗号鍵は1年，データ暗号鍵は2年を目安に定期的に更新してください。

また，HADB暗号鍵またはデータ暗号鍵が漏えいすると，データベース内の機密情報が漏えいするおそれがあります。そのため，HADB暗号鍵およびデータ暗号鍵の管理が，DBエリア暗号化機能の運用では最も重要になります。

■HADB暗号鍵の世代管理

データベースの運用では，障害などに備えてデータベースのバックアップを定期的に取得する必要があります。DBエリア暗号化機能を使用する場合，バックアップデータも暗号化されているため，バックアップからデータを復号する際，バックアップ取得時のHADB暗号鍵およびHADB暗号鍵利用パスワードが必要になります。そのため，データベースのバックアップを取得する際は，HADB暗号鍵のバックアップも同時に取得してください。

なお，HADB暗号鍵は定期的に更新するため，バックアップの取得時期によっては対応するHADB暗号鍵（HADB暗号鍵利用パスワードも含む）が異なることがあります。バックアップデータが複数存在する場合，どのバックアップデータがどのHADB暗号鍵で暗号化されているかを管理しておく必要があります。このように，複数のHADB暗号鍵およびHADB暗号鍵利用パスワードをバックアップデータと対応付けて管理することをHADB暗号鍵の世代管理といいます。

重要

次のような問題が発生した場合，バックアップデータを復号する方法はありません。

バックアップデータとHADB暗号鍵の対応がわからなくなった

HADB暗号鍵を紛失した

HADB暗号鍵利用パスワードを忘れた

HADB暗号鍵とHADB暗号鍵利用パスワードの世代管理も重要な作業となります。

■監査証跡機能との関係

DBエリア暗号化機能を使用する場合，HADB暗号鍵が不正に作成または更新されていないか，HADB暗号鍵の更新による世代管理がセキュリティポリシーに従って適切に運用されているかなどを定期的に確認する必要があります。そのため，DBエリア暗号化機能を使用する場合は，HADBサーバへの操作記録を確認できる監査証跡機能も一緒に使用することを推奨します。監査証跡機能については「2.18　監査証跡機能」を，監査証跡機能の環境設定および運用方法については「12.　監査証跡機能の運用」を参照してください。

監査証跡機能を使用すると，HADB暗号鍵を作成するコマンドや，HADB暗号鍵を更新するコマンドを実行したときの操作記録が監査証跡ファイルに出力されます。また，HADB暗号鍵を作成したり更新したりする権限（暗号管理権限）の付与および取り消しが行われたときも，その操作記録が監査証跡ファイルに出力されます。暗号管理権限については，「2.19.3　HADB暗号鍵を作成または更新するために必要な権限（暗号管理権限）」で説明します。

2.19.3　HADB暗号鍵を作成または更新するために必要な権限（暗号管理権限）

HADB暗号鍵を作成または更新するには，暗号管理権限が必要になります。DBA権限を持っているHADBユーザが，CREATE USER文で新規にHADBユーザを作成し，GRANT文でそのHADBユーザに暗号管理権限とCONNECT権限を付与してください。

メモ

DBエリア暗号化機能を使用する場合，HADB管理者のOSユーザを操作する人を次の2名に分けることを推奨します。

データベースの管理担当者

HADBサーバの環境設定や，管理および運用を担当する人です。

HADB暗号鍵の管理担当者

HADB暗号鍵の作成，更新，破棄を担当する人です。

2.20　マルチノード機能

ここでは，マルチノード機能の特長，およびマルチノード機能を使用する際のシステム構成などについて説明します。

2.20.1　マルチノード機能とは

(1)　マルチノード機能の概要

マルチノード機能とは，複数のHADBサーバを連携することによって，検索系SQL（SELECT文およびCOPY文）の処理の負荷分散を実現する機能のことです（スケールアウトによる負荷分散）。

マルチノード機能を使用した負荷分散の例を次の図に示します。

図2‒75　マルチノード機能を使用した負荷分散の例（HAモニタありのマルチノード構成の場合）

［説明］

上記の例では，5つのHADBサーバで検索系SQLの処理を実行し，負荷分散を行っています。

HADBクライアントからのAPの接続要求は，プライマリノードのHADBサーバが受け付けます。

プライマリノードのHADBサーバが，負荷分散の制御を行います。プライマリノードのHADBサーバが負荷の少ないセカンダリノードまたはワーカーノードのうちの1つのノードを選択し，そのノードで検索系SQLを実行します。検索系SQLの処理をセカンダリノードまたはワーカーノードに振り分けることで負荷分散を実現しています。

上記の図中に出てくる用語について説明します。

マルチノード構成

マルチノード機能を使用している複数のHADBサーバから成るシステム構成をマルチノード構成といいます。

メモ

マルチノード構成には，HAモニタありのマルチノード構成とHAモニタなしのマルチノード構成の2つがあります。上図の例は，HAモニタありのマルチノード構成です。HAモニタなしのマルチノード構成については，「(2)　HAモニタありのマルチノード構成とHAモニタなしのマルチノード構成」を参照してください。また，HAモニタありのマルチノード構成とHAモニタなしのマルチノード構成の違いについては，「(3)　HAモニタありのマルチノード構成とHAモニタなしのマルチノード構成の差異」を参照してください。

プライマリノード

マルチノード機能の制御を行うHADBサーバがあるノードをプライマリノードといいます。プライマリノードは必ず1つ必要になります。

プライマリノードのHADBサーバでは，更新系SQL，定義系SQL，一部のコマンドなど，データベースの更新が発生する処理などが実行されます。

また，APまたはコマンドの接続要求は，プライマリノードのHADBサーバが受け付けます。

セカンダリノード

検索系SQLを処理するHADBサーバがあるノードをセカンダリノードといいます。セカンダリノードは，1〜3つ設定できます。

セカンダリノードのHADBサーバでは，検索系SQLの処理が実行されます。

また，セカンダリノードは，プライマリノードの予備のノードになります。プライマリノードで障害が発生した場合，HAモニタの制御によってセカンダリノードの1つをプライマリノードに変更して業務を続行します。詳細については，「2.20.4　マルチノード構成からのノードの切り離し（プライマリノード，セカンダリノード）」の「(1)　プライマリノードでノード障害が発生した場合」を参照してください。

ワーカーノード

検索系SQLを処理するHADBサーバがあるノードをワーカーノードといいます。

ワーカーノードのHADBサーバもセカンダリノードのHADBサーバと同様に，検索系SQLの処理が実行されます。

ただし，ワーカーノードは，セカンダリノードとは異なり，プライマリノードの予備のノードにはなりません。そのため，プライマリノードで障害が発生しても，ワーカーノードがプライマリノードになることはありません。

メモ

セカンダリノードおよびワーカーノードの負荷が高い場合は，プライマリノードでも検索系SQLが実行されます。

セカンダリノードおよびワーカーノードのHADBサーバでは，データベースの更新が発生する処理を実行することはできません。そのため，更新系SQL，定義系SQL，およびデータベースの更新が発生するコマンド（adbimportコマンドなど）は，セカンダリノードおよびワーカーノードのHADBサーバでは実行されません。データベースの更新が発生しない一部のコマンドについては，セカンダリノードおよびワーカーノードのHADBサーバで実行できます。

HAモニタ

HAモニタは，プライマリノードおよびセカンダリノードの状態を監視し，プライマリノードまたはセカンダリノードに障害が発生した場合，ノードの切り離しを実行する製品です。HAモニタの機能については，「2.20.3　ノードの管理」の「(1)　HAモニタありのマルチノード構成の場合」を参照してください。

HAモニタは，プライマリノードおよびセカンダリノードにインストールします。プライマリノードはHAモニタの実行系として動作し，セカンダリノードはHAモニタの待機系として動作します。

なお，ワーカーノードには，HAモニタをインストールしません（ワーカーノードはHAモニタの管理対象外です）。

メモ

HADBサーバがインストールされているサーバマシンと，そのサーバマシンにインストールされているOS，HADBサーバ，およびHAモニタを包括したものをノードといいます。

マルチノード機能使用時の処理性能は，ハードウェア環境や処理件数に依存します。また，マルチノード機能を使用する場合は，マルチノード機能を使用しない場合に比べて，ノード間の通信処理や同期処理のオーバヘッドによって，SQL文およびコマンドの実行処理に時間が掛かることがあります。

(2)　HAモニタありのマルチノード構成とHAモニタなしのマルチノード構成

マルチノード構成には，次に示す2つがあります。

HAモニタありのマルチノード構成

HAモニタありのマルチノード構成とは，プライマリノードおよびセカンダリノードにHAモニタをインストールして構築したマルチノード構成のことです。「図2‒75　マルチノード機能を使用した負荷分散の例（HAモニタありのマルチノード構成の場合）」のシステム構成は，HAモニタありのマルチノード構成です。この場合，マルチノード構成は，プライマリノード，セカンダリノード，およびワーカーノードの3種類のノードで構成されます。

HAモニタなしのマルチノード構成

HAモニタなしのマルチノード構成とは，HAモニタをインストールしないで構築したマルチノード構成のことです。この場合，マルチノード構成は，プライマリノードおよびワーカーノードの2種類のノードで構成されます。HAモニタがないため，セカンダリノードは設定できません。

マルチノード機能を使用した負荷分散の例を次の図に示します。

図2‒76　マルチノード機能を使用した負荷分散の例（HAモニタなしのマルチノード構成の場合）

［説明］

上記の例では，5つのHADBサーバで検索系SQLの処理を実行し，負荷分散を行っています。

HADBクライアントからのAPの接続要求は，プライマリノードのHADBサーバが受け付けます。

プライマリノードのHADBサーバが，負荷分散の制御を行います。プライマリノードのHADBサーバが負荷の少ないワーカーノードのうちの1つのノードを選択し，そのノードで検索系SQLを実行します。検索系SQLの処理をワーカーノードに振り分けることで負荷分散を実現しています。

メモ

検索系SQLの処理の流れや負荷分散は，HAモニタありのマルチノード構成の場合と同じです。

プライマリノードについて

プライマリノードは必ず1つ必要になります。

プライマリノードのHADBサーバでは，更新系SQL，定義系SQL，一部のコマンドなど，データベースの更新が発生する処理などが実行されます。

また，APまたはコマンドの接続要求は，プライマリノードのHADBサーバが受け付けます。

プライマリノードの役割については，HAモニタありのマルチノード構成の場合と同じです。

ワーカーノードについて

ワーカーノードのHADBサーバでは，検索系SQLの処理が実行されます。

ワーカーノードの働きについては，HAモニタありのマルチノード構成の場合と同じです。また，サーバマシンの性能が同じ場合，検索性能についてはセカンダリノードとワーカーノードで差はありません。

(3)　HAモニタありのマルチノード構成とHAモニタなしのマルチノード構成の差異

HAモニタありのマルチノード構成とHAモニタなしのマルチノード構成の差異を次の表に示します。

表2‒24　HAモニタありのマルチノード構成とHAモニタなしのマルチノード構成の差異

項番

項目

説明

1

プライマリノード

プライマリノードの役割に差異はありません。

HAモニタありのマルチノード構成とHAモニタなしのマルチノード構成のどちららであってもプライマリノードを1つ設定する必要があります。

2

セカンダリノード

HAモニタありのマルチノード構成の場合

セカンダリノードの設定が必須です（1〜3つ設定できます）。プライマリノードで障害が発生した場合，HAモニタの制御によってセカンダリノードの1つをプライマリノードに変更して業務を続行できます。詳細については，「2.20.4　マルチノード構成からのノードの切り離し（プライマリノード，セカンダリノード）」および「2.20.5　マルチノード構成へのノードの復帰（プライマリノード，セカンダリノード）」を参照してください。

HAモニタなしのマルチノード構成の場合

セカンダリノードを設定できません。プライマリノードで障害が発生した場合，プライマリノードの代替となるノードがないため，業務を続行することができません。

3

ワーカーノード

ワーカーノードの役割に差異はありませんが，ワーカーノードの設定可能数に違いがあります。

HAモニタありのマルチノード構成の場合

ワーカーノードの設定は任意です。

マルチノード構成の全ノード数の上限は12ノードになります。そのため，例えばセカンダリノードを1つ設定した場合は，最大10個のワーカーノードを設定できます。また，セカンダリノードを2つ設定した場合は，最大9個のワーカーノードを設定できます。

HAモニタなしのマルチノード構成の場合

ワーカーノードの設定が必須になります。

マルチノード構成の全ノード数の上限は12ノードであるため，最大11個のワーカーノードを設定できます。

プライマリノードの障害に備えてセカンダリノードを設定したい場合（システムの冗長化を優先する場合）は，HAモニタありのマルチノード構成を選択してください。

環境設定や，運用の簡易化を優先する場合は，HAモニタなしのマルチノード構成を選択してください。HAモニタをインストールする必要がないため，HAモニタの環境設定が必要ありません。また，運用時にHAモニタのコマンドを実行する必要がありません。その分，HAモニタありのマルチノード構成よりHAモニタなしのマルチノード構成の方が環境設定や，運用が簡易になります。

2.20.2　トランザクションおよびコマンドが実行されるノード

(1)　トランザクションが実行されるノード

トランザクションが実行されるノードは，トランザクションアクセスモードとトランザクション隔離性水準の指定によって決まります。次に示す条件をすべて満たすトランザクションは，セカンダリノードまたはワーカーノードで実行されます。

トランザクションアクセスモードが読み取り専用モードである

トランザクション隔離性水準がREAD COMMITTEDである

ただし，セカンダリノードまたはワーカーノードのスレッド数の空き状況などによっては，上記の条件を満たしていても，プライマリノードでトランザクションが実行されることがあります。プライマリノードのHADBサーバが負荷の少ないノードを選択し，そのノードでトランザクションが実行されます。

重要

セカンダリノードおよびワーカーノードのリソースを有効に活用するために，検索処理だけを実行するAPは，できる限り次の指定をして実行することを推奨します。

トランザクションアクセスモードを読み取り専用モードにする

トランザクション隔離性水準をREAD COMMITTEDにする

トランザクションアクセスモードについては，「2.9.5　トランザクションアクセスモード」を参照してください。

トランザクション隔離性水準については，「2.9.2　HADBがサポートしているトランザクション隔離性水準」を参照してください。

なお，読み書き可能モードのトランザクションがプライマリノードで実行されている間は，すべてのトランザクションがプライマリノードで実行されます（セカンダリノードまたはワーカーノードではトランザクションが実行されません）。そのため，トランザクションアクセスモードが読み取り専用モードであり，かつトランザクション隔離性水準がREAD COMMITTEDであるトランザクションもプライマリノードで実行されます。したがって，セカンダリノードおよびワーカーノードのリソースを有効に活用するには，読み書き可能モードのトランザクションはできる限り細かい頻度で決着させるようにしてください。

重要

マルチノード機能を使用している場合，次に示す条件をすべて満たすトランザクションは，カーソルをクローズした際に自動的にトランザクションが正常終了します。

トランザクションアクセスモードが読み取り専用モードである

トランザクション隔離性水準がREAD COMMITTEDである

複数の文ハンドルで同時にカーソルをオープンしている場合は，オープンしているカーソルがすべてクローズされたときに，自動的にトランザクションが正常終了します。

(2)　SQL文が実行されるノード

SQL文が実行されるノードを次の表に示します。

表2‒25　SQL文が実行されるノード

項番

SQL文の種類

SQL文が実行されるノード

1

定義系SQL

プライマリノード

2

操作系SQL

更新系SQL

INSERT文

プライマリノード

3

UPDATE文

4

DELETE文

5

TRUNCATE TABLE文

6

PURGE CHUNK文

7

検索系SQL

SELECT文

プライマリノード，セカンダリノード，またはワーカーノードのどれか

8

COPY文

■定義系SQL，TRUNCATE TABLE文，またはPURGE CHUNK文実行時の留意事項

セカンダリノードまたはワーカーノードでトランザクションが実行されている間は，定義系SQL，TRUNCATE TABLE文，またはPURGE CHUNK文はすぐに実行されません（WAIT状態になります）。セカンダリノードまたはワーカーノードで実行中のすべてのトランザクションが終了したあとに，定義系SQL，TRUNCATE TABLE文，またはPURGE CHUNK文が実行されます。

また，定義系SQL，TRUNCATE TABLE文，またはPURGE CHUNK文が実行されている間は，すべてのトランザクションがプライマリノードで実行されます（セカンダリノードまたはワーカーノードではトランザクションが実行されません）。

■INSERT文，UPDATE文，またはDELETE文実行時の留意事項

次に示すどちらかの条件を満たす場合，INSERT文，UPDATE文，またはDELETE文はすぐに実行されません（WAIT状態になります）。

INSERT文，UPDATE文，DELETE文の処理対象表が格納されているDBエリアをアクセスするトランザクションが，セカンダリノードまたはワーカーノードで実行されている

INSERT文，UPDATE文，DELETE文の処理対象表のインデクスが格納されているDBエリアをアクセスするトランザクションが，セカンダリノードまたはワーカーノードで実行されている

上記のどちらかの条件を満たすトランザクションが終了したあとに，INSERT文，UPDATE文，またはDELETE文が実行されます。

また，INSERT文，UPDATE文，またはDELETE文が実行された場合，セカンダリノードまたはワーカーノードで実行中のSQL文のうち，次のどちらかの条件を満たすSQL文の処理をプライマリノードに切り替えます。

INSERT文，UPDATE文，DELETE文の処理対象表が格納されているDBエリアをアクセスするSQL文

INSERT文，UPDATE文，DELETE文の処理対象表のインデクスが格納されているDBエリアをアクセスするSQL文

■検索系SQLがエラーになるケース

マルチノード機能を使用している場合は，次のすべての条件を満たす検索系SQLは実行できません。

同一トランザクションで，複数の文ハンドルを使用して同時に検索系SQLを実行しようとしている

検索系SQLの1つが，データ用DBエリアにアクセスしている最中である

更新系SQLがアクセスしているデータ用DBエリアに，2.とは別の検索系SQLがアクセスしようとした（この検索系SQLがエラーになります）

（例）

［説明］

読み書き可能トランザクションであるトランザクションAと，読み取り専用トランザクションであるトランザクションBが同時に実行されているとします。

また，トランザクションBでは，2つの文ハンドルを使用して検索系SQLを同時に実行しようとしています（図中の1.と3.）。

表T2への検索系SQLの前処理が，文ハンドル1を使用して実行されています。

トランザクションAによって，表T1へのINSERT文が実行されています。

2.のINSERT文の実行後（トランザクションAは未決着状態），トランザクションBが文ハンドル2（1.の文ハンドルとは別の文ハンドル）を使用して，表T3への検索系SQLの前処理を実行します。

上記の1.と3.の処理が同時に実行された場合，3.の検索系SQLがエラーになります。このとき，KFAA31898-Eメッセージが出力されます。対処方法については，KFAA31898-Eメッセージで説明されている対処方法に従ってください。

(3)　コマンドを実行できるノード

コマンドを実行できるノードは，コマンドによって異なります。コマンドを実行できるノードについては，マニュアルHADB　コマンドリファレンスのマルチノード機能を使用している場合にコマンドを実行できるノードを参照してください。

(4)　トランザクションとコマンドの同時実行についての制限

トランザクションと一部のコマンドは同時に実行することはできません。トランザクションとコマンドの同時実行可否を次の表に示します。

表2‒26　トランザクションとコマンドの同時実行可否

項番

コマンド名

同時実行可否

1

adbarchivechunk

△

2

adbchgchunkcomment

△

3

adbchgchunkstatus

△

4

adbgetcst

△

5

adbidxrebuild

△

6

adbimport

バックグラウンドインポート

○

7

上記以外のインポート

△

8

adbinit

×

9

adbmergechunk

△

10

adbmodarea

×

11

adbreorgsystemdata

△

12

adbsql

○※

13

adbunarchivechunk

△

14

adbupddmk

×

15

上記以外のコマンド

○

（凡例）

○：ほかのトランザクションと同時に実行できるコマンドです。

△：ほかのトランザクションとの同時実行に制限があるコマンドです。詳細については，このあとで説明している「■トランザクションとの同時実行に制限があるコマンド」を参照してください。

×：ほかのトランザクションと同時に実行できないコマンドです。

注※

クライアント定義のadb_clt_trn_access_modeオペランドにREAD_ONLYを指定している場合は，セカンダリノードまたはワーカーノードで実行されているほかのトランザクションと同時に実行できます。

■トランザクションとの同時実行に制限があるコマンド

「表2‒26　トランザクションとコマンドの同時実行可否」の「同時実行可否」欄が△のコマンドについては，次に示す制限があります。

△のコマンドが実行されている間は，すべてのトランザクションがプライマリノードで実行されます（セカンダリノードおよびワーカーノードではトランザクションが実行されません）。そのため，トランザクションアクセスモードが読み取り専用モードであり，かつトランザクション隔離性水準がREAD COMMITTEDのトランザクションもプライマリノードで実行されます。

セカンダリノードまたはワーカーノードでトランザクションが実行されている間は，△のコマンドはすぐに実行されません（WAIT状態になります）。セカンダリノードまたはワーカーノードで実行中のすべてのトランザクションが終了したあとに，△のコマンドが実行されます。

2.20.3　ノードの管理

HAモニタありのマルチノード構成とHAモニタなしのマルチノード構成では，ノードの管理方法が異なります。それぞれについて説明します。

(1)　HAモニタありのマルチノード構成の場合

プライマリノードとセカンダリノードの状態はHAモニタによって管理され，ワーカーノードの状態はHADBによって管理されます。

HAモニタの詳細については，マニュアルHAモニタ Linux(R)(x86)編を参照してください。

(a)　ノード種別の決定方法

プライマリノードとセカンダリノードは，HAモニタの定義の指定に従って決定されます。HAモニタの環境設定定義のserversファイルのinitialオペランドにonlineを指定すると，そのノードはプライマリノード（HAモニタの実行系）になり，standbyを指定すると，そのノードはセカンダリノード（HAモニタの待機系）になります。

ワーカーノードはHAモニタの管理対象外のため，HAモニタの定義を指定しません。HADBのサーバ定義のadb_sys_multi_worker_node_infoオペランドを指定したノードがワーカーノードになります。

ノード種別の決定方法を次の図に示します。

図2‒77　ノード種別の決定方法

メモ

プライマリノードおよびセカンダリノードを開始するには，プライマリノードおよび各セカンダリノードでadbstartコマンドを実行し，そのあとHAモニタのmonbeginコマンドを実行します。

ワーカーノードを開始するには，プライマリノードおよびセカンダリノードの開始処理の完了後に各ワーカーノードでadbstartコマンドを実行します。

■セカンダリノードとワーカーノードの差異（ワーカーノードの特徴）

セカンダリノードとワーカーノードは，読み取り専用モードのトランザクションが実行されるという同じ特徴を持っていますが，仕様が異なる部分もあります。ここでは，セカンダリノードとワーカーノードの主な差異と，ワーカーノードの特徴を説明します。

ワーカーノードは，プライマリノードの切り替え対象のノードにはならない

セカンダリノードとは異なり，ワーカーノードにはHAモニタをインストールしません。そのため，ワーカーノードは，プライマリノードの切り替え対象のノードにはなりません。

マルチノード構成にワーカーノードを動的に追加または削除できる

マルチノード構成のHADBサーバが稼働中のときに，マルチノード構成にワーカーノードを動的に追加または削除できます。例えば，マルチノード構成のHADBサーバの開始時には，プライマリノードと全セカンダリノードのHADBサーバだけを開始し，任意のタイミングでワーカーノードのHADBサーバを開始してマルチノード構成にワーカーノードを追加することができます。これによって，システムの負荷が大きくなる時間帯は，ワーカーノードを追加してトランザクションの処理性能を増強し，その時間帯が過ぎたあとは，ワーカーノードを削除するような運用が可能になります。

(b)　ノード障害の監視

HAモニタは，次の表に示す障害がプライマリノードとセカンダリノードに発生していないかどうかを監視しています。HAモニタが，これらの障害の発生を検知した場合，障害が発生したプライマリノードまたはセカンダリノードをHAモニタの制御によってマルチノード構成から切り離します。

表2‒27　HAモニタが監視している障害

項番

HAモニタが監視している障害

1

ハードウェア障害

2

ハードウェアの電源断

3

カーネル障害

4

HAモニタの異常終了

5

HADBサーバの異常終了（サーバプロセスの異常終了）

上記の表に示す障害をノード障害といいます。

■マニュアルHAモニタ Linux(R)(x86)編を読む際のポイント

HAモニタの監視対象となる障害には，系障害（上記の表の項番1〜4の障害）とサーバ障害（上記の表の項番5の障害）があります。マルチノード機能は，HAモニタのモニタモードで動作するため，サーバ障害を検知する場合は，サーバの監視コマンドの作成が必要になります。サーバの監視コマンドの作成方法については，「18.4.4　HAモニタの環境設定」の「(4)　コマンド用環境変数定義およびコマンドの作成」の「(e)　サーバの監視コマンドの作成」を参照してください。

なお，ワーカーノードについては，HAモニタによる障害の監視は行われません。そのため，ワーカーノードでノード障害が発生して，ワーカーノードのHADBサーバが異常終了した場合，ワーカーノードをHADBの制御によってマルチノード構成から削除します。

(c)　ノード障害が発生したときのシステムの処理

「(b)　ノード障害の監視」で説明したノード障害が発生した場合，HAモニタの機能を使用して，障害が発生したノード（プライマリノードまたはセカンダリノード）をマルチノード構成から切り離し，残ったノードで業務を継続します。プライマリノードまたはセカンダリノードにノード障害が発生したときのノードの切り離し処理は，HAモニタが管理しています。詳細については，「2.20.4　マルチノード構成からのノードの切り離し（プライマリノード，セカンダリノード）」を参照してください。

ワーカーノードでノード障害が発生し，ワーカーノードのHADBサーバが異常終了した場合，HADBの制御によってワーカーノードをマルチノード構成から削除します。詳細については，「2.20.6　マルチノード構成からのワーカーノードの削除と追加」を参照してください。

(2)　HAモニタなしのマルチノード構成の場合

全ノード（プライマリノードおよびワーカーノード）の状態はHADBによって管理されます。

(a)　ノード種別の決定方法

プライマリノードおよびワーカーノードは，サーバ定義の指定に従って決定されます。サーバ定義のadb_sys_multi_node_infoオペランドにプライマリノードのホスト名を指定します。また，ワーカーノードには，サーバ定義のadb_sys_multi_worker_node_infoオペランドを指定します。

メモ

プライマリノードを開始するには，プライマリノードでadbstartコマンドを実行します。プライマリノードの開始処理が完了すると，マルチノード構成のHADBサーバの開始となります。

ワーカーノードを開始するには，プライマリノードの開始処理の完了後に各ワーカーノードでadbstartコマンドを実行します。

(b)　ノード障害が発生したときのシステムの処理

ノード障害が発生してプライマリノードのHADBサーバが異常終了した場合，マルチノード構成のHADBサーバが異常終了します。そのため，業務は続行できません。

ノード障害が発生してワーカーノードのHADBサーバが異常終了した場合，ワーカーノードをマルチノード構成から削除します。詳細については，「2.20.6　マルチノード構成からのワーカーノードの削除と追加」を参照してください。そのほかのノードは稼働し続けるため，業務を続行することができます。

2.20.4　マルチノード構成からのノードの切り離し（プライマリノード，セカンダリノード）

プライマリノードまたはセカンダリノードでノード障害が発生した場合，障害が発生したノードをマルチノード構成から切り離し，残ったノードで業務を継続します。

重要

マルチノード構成からのノードの切り離しが行われるのは，HAモニタありのマルチノード構成の場合に限ります。

HAモニタなしのマルチノード構成の場合，プライマリノードでノード障害が発生してプライマリノードのHADBサーバが異常終了すると，マルチノード構成のHADBサーバが異常終了します。

メモ

ノードの切り離しは，HAモニタによって制御されます。

障害が発生したプライマリノードまたはセカンダリノードをマルチノード構成から切り離し，残ったノードで処理を継続することを，HAモニタでは縮退運用と呼んでいます。

(1)　プライマリノードでノード障害が発生した場合

プライマリノードでノード障害が発生した場合，そのプライマリノードをマルチノード構成から切り離し，セカンダリノードの1つをプライマリノードに切り替えて，残ったノードで業務を継続します。

プライマリノードでノード障害が発生した場合のノードの切り離しを次の図に示します。

図2‒78　プライマリノードでノード障害が発生した場合のノードの切り離し

［説明］

ノード障害が発生したプライマリノードをマルチノード構成から切り離し，セカンダリノードの1つをプライマリノードに切り替えます。これをプライマリノードの切り替えといいます。

重要

ワーカーノードは，プライマリノードの切り替え先にはなりません。

ノード障害が発生したプライマリノードで実行中のSQL文はエラーになり，トランザクションを実行していたAPは，HADBサーバから切り離されます。また，ノード障害が発生した時点で，HADBサーバに接続だけしていてトランザクションを実行していないAPも，HADBサーバから切り離されます。

メモ

障害が発生したプライマリノードで実行されていた更新処理に対する回復処理（ロールバック）が，新たにプライマリノードになるセカンダリノードで実行されます。回復処理の完了後，プライマリノードの切り替え処理が行われます。

ノード障害発生時のノードの切り離し，およびプライマリノードの切り替えは，HAモニタが管理しています（HAモニタの系切り替え機能で実現しています）。プライマリノードはHAモニタの実行系として動作し，セカンダリノードはHAモニタの待機系として動作します。

セカンダリノードの1つをプライマリノードに切り替える際，共有するディスクの切り替えや，エイリアスIPアドレスの追加および削除も，HAモニタが実行します。

メモ

プライマリノードに切り替えられるセカンダリノードは，HAモニタの系切り替え機能によって，新たに実行系となるノードです。系の切り替え先（プライマリノードに切り替えられるセカンダリノード）の決定方法はHAモニタの仕様に依存します。

(2)　セカンダリノードでノード障害が発生した場合

セカンダリノードでノード障害が発生した場合，そのセカンダリノードをマルチノード構成から切り離し，残ったノードで業務を継続します。

セカンダリノードでノード障害が発生した場合のノードの切り離しを次の図に示します。

図2‒79　セカンダリノードでノード障害が発生した場合のノードの切り離し

［説明］

ノード障害が発生したセカンダリノードで実行中のSQL文はエラーになり，トランザクションを実行していたAPは，HADBサーバから切り離されます。

メモ

障害が発生したセカンダリノードで実行していたトランザクションのロールバックが，プライマリノードで実行されます。

2.20.5　マルチノード構成へのノードの復帰（プライマリノード，セカンダリノード）

ノード障害が発生してマルチノード構成から切り離されたノード（プライマリノードまたはセカンダリノード）は，障害対策後にマルチノード構成に復帰させることができます。その際，マルチノード構成のHADBサーバを停止する必要はありません。マルチノード構成へのノードの復帰の例を次の図に示します。

重要

マルチノード構成へのノードの復帰を実行できるのは，HAモニタありのマルチノード構成の場合に限ります。

HAモニタなしのマルチノード構成の場合は，マルチノード構成へのノードの復帰は実行できません。

図2‒80　マルチノード構成へのノードの復帰の例

［説明］

マルチノード構成に復帰する際，ノード種別は必ずセカンダリノードになります。

マルチノード構成にノードを復帰させる方法については，「18.16.3　マルチノード構成へのノードの復帰」を参照してください。

メモ

サーバマシンのメンテナンスをする場合は，HAモニタのコマンドを実行して，マルチノード構成からノード（プライマリノードまたはセカンダリノード）を切り離すことができます。サーバマシンのメンテナンスの終了後に，マルチノード構成に復帰させることができます。

2.20.6　マルチノード構成からのワーカーノードの削除と追加

ワーカーノードでノード障害が発生してHADBサーバが異常終了した場合，そのワーカーノードはマルチノード構成から削除されます。障害を対策したあとに，そのワーカーノードをマルチノード構成に再び追加することができます。

重要

HAモニタありのマルチノード構成およびHAモニタなしのマルチノード構成のどちらでも，マルチノード構成からのワーカーノードの削除と追加は実行できます。

マルチノード構成からのワーカーノードの削除と追加を次の図に示します。

図2‒81　マルチノード構成からのワーカーノードの削除と追加

注

上記は，HAモニタありのマルチノード構成のシステム構成例です。HAモニタなしのマルチノード構成の場合は，HAモニタを無視して，セカンダリノードをワーカーノードに読み替えてください。

［説明］

HADBサーバが異常終了したワーカーノードはマルチノード構成から削除されます。ワーカーノードで実行中のSQL文はエラーになり，トランザクションを実行していたAPは，HADBサーバから切り離されます。

残った4つのノードで業務は継続されます。

障害を対策したあとに，ワーカーノードをマルチノード構成に再び追加します。

メモ

HADBサーバが異常終了したワーカーノードで実行していたトランザクションのロールバックが，プライマリノードで実行されます。

ワーカーノードはHAモニタの管理対象外のため，マルチノード構成からのワーカーノードの削除と追加はHADBによって制御されます。

2.20.7　マルチノード機能を使用する場合のシステム構成例

HAモニタありのマルチノード構成と，HAモニタなしのマルチノード構成のそれぞれのシステム構成例を説明します。

(1)　HAモニタありのマルチノード構成の場合

HAモニタありのマルチノード構成の場合のシステム構成例を次の図に示します。

図2‒82　HAモニタありのマルチノード構成の場合のシステム構成例

［説明］

各ノードに必要な製品

プライマリノードおよびセカンダリノードには，HADBサーバおよびHAモニタをインストールする必要があります。

ワーカーノードには，HADBサーバをインストールする必要があります。

必要なネットワーク

次に示す3つのネットワークを使用します。各ネットワークは物理的に分ける必要があります。

クライアント−サーバ間ネットワーク

HADBクライアントと，プライマリノード，セカンダリノード，およびワーカーノードのHADBサーバ間の通信で使用するネットワークです。

ノード間ネットワーク

各ノードのHADBサーバ間の通信，およびHAモニタの監視パスとして使用するネットワークです。

リセットパス

HAモニタが障害を検知した際，障害が発生したノードの入出力をリセットするために使用するネットワークです。HAモニタの機能である系のリセットを使用する場合は，プライマリノードとセカンダリノード間でリセットパスが必要になります。

プライマリノードおよびセカンダリノードに必要なハードウェア

系のリセットを使用する場合は，プライマリノードおよびセカンダリノードにSVPが必要になります。SVPとは障害管理プロセサのことです。障害管理プロセサとは，システム構成の設定やCPUの制御などができるハードウェアのことです。

監視パス，リセットパス，SVP，および障害管理プロセサの詳細については，マニュアルHAモニタ Linux(R)(x86)編の必要なハードウェアを参照してください。

重要

HAモニタによる共有ディスクのデータ保護方法には，次のどちらかを選択する必要があります。

系のリセット

共有ディスクのSCSIリザーブ

推奨する方法は，系のリセットです。系のリセットを使用する場合は，プライマリノードおよびセカンダリノードのサーバマシンにSVPが搭載されている必要があります。

共有ディスクのSCSIリザーブを使用する場合は，SVPおよびリセットパスは必要ありません。プライマリノードおよびセカンダリノードのサーバマシンにSVPが搭載されていない場合は，共有ディスクのSCSIリザーブを選択してください。

系のリセットおよび共有ディスクのSCSIリザーブの詳細については，マニュアルHAモニタ Linux(R)(x86)編の系のリセットおよび共有ディスクのSCSIリザーブを参照してください。

(2)　HAモニタなしのマルチノード構成の場合

HAモニタなしのマルチノード構成の場合のシステム構成例を次の図に示します。

図2‒83　HAモニタなしのマルチノード構成の場合のシステム構成例

［説明］

各ノードに必要な製品

プライマリノードおよび全ワーカーノードには，HADBサーバをインストールする必要があります。

必要なネットワーク

次に示す2つのネットワークを使用します。各ネットワークは物理的に分ける必要があります。

クライアント−サーバ間ネットワーク

HADBクライアントと，プライマリノードおよびワーカーノードのHADBサーバ間の通信で使用するネットワークです。

ノード間ネットワーク

各ノードのHADBサーバ間の通信で使用するネットワークです。

2.20.8　SQLパラレル実行機能

検索系SQL（SELECT文）の処理を複数のノードで並列実行できます。この機能をSQLパラレル実行機能といいます。この機能を使用することによって，検索系SQLの処理時間が短縮できます。SQLパラレル実行機能の概要を次の図に示します。

なお，検索系SQLのCOPY文には，SQLパラレル実行機能は適用されません。

図2‒84　SQLパラレル実行機能の概要

注

上記は，HAモニタありのマルチノード構成のシステム構成例です。HAモニタなしのマルチノード構成の場合は，セカンダリノードをワーカーノードに読み替えてください。

［説明］

上記の図の場合，3つのノード（セカンダリノードと2つのワーカーノード）で検索系SQLの処理を並列実行しています。

HADBクライアントからのAPの接続要求は，プライマリノードのHADBサーバが受け付けます。

プライマリノードのHADBサーバが，検索系SQLを実行するトランザクションを割り当てるノードを決定します。トランザクションが割り当てられたノードをSQLメインノードといいます。

SQLメインノードのHADBサーバが検索系SQLの処理を分割して，負荷の少ないノードに処理を依頼します。検索系SQLの処理を割り振られたノードをSQLサブノードといいます。

メモ

SQLメインノードとSQLサブノードで検索系SQLの処理が並列実行されます。検索結果は，SQLメインノードからHADBクライアントに返されます。

各ノードの負荷の状況などを踏まえて，プライマリノードがSQLメインノードとSQLサブノードを決定します。上記の例では，セカンダリノードがSQLメインノードになっていますが，ワーカーノードがSQLメインノードになることもあります。

各ノードの負荷の状況によっては，プライマリノードがSQLメインノードまたはSQLサブノードになることもあります。

SQLサブノードの数は，検索系SQLを実行するときの各ノードの負荷によって変わります。負荷が高いノードは，SQLサブノードに選ばれません。そのため，負荷が高いノードがある場合は，検索系SQLを並列実行するノード数が少なくなります。SQLサブノードが1つも確保できない場合は，検索系SQLがエラーになります（KFAA31898-Eメッセージが出力されます）。

■SQLパラレル実行機能が適用される検索系SQLの条件

SQLパラレル実行機能が適用される検索系SQLについては条件があります。条件については，マニュアルHADB　AP開発ガイドのSQLパラレル実行機能が適用される条件を参照してください。

■SQLパラレル実行機能を適用すると効果的なケース

大量のデータを検索するときに，SQLパラレル実行機能を適用すると効果があります。例えば，次のどれかの条件に該当する表を検索するときにSQLパラレル実行機能を適用すると，検索処理時間の短縮が見込まれます。

データ容量が大きい表

1回のデータインポートで格納するデータの容量が大きい表

目安として，入力データファイルのサイズが，「1ギガバイト×ノード数」以上の表が該当します。

検索対象のデータをあまり絞り込まないでアクセスすることが多い表

■SQLパラレル実行機能を使用するときの準備作業および運用

SQLパラレル実行機能を使用するときの準備作業および運用については，「18.32　SQLパラレル実行機能の運用」を参照してください。

■留意事項

次の1.～3.のどれかの条件に該当する場合，SQLパラレル実行機能を適用した検索系SQLはエラーになります（KFAA31898-Eメッセージが出力されます）。

読み書き可能トランザクションが実行中の場合

次のどれかのコマンドが実行中の場合

adbimportコマンド（-bオプションを指定したバックグラウンドインポートは除きます）

adbidxrebuildコマンド

adbgetcstコマンド

adbmergechunkコマンド

adbchgchunkcommentコマンド

adbchgchunkstatusコマンド

adbarchivechunkコマンド

adbunarchivechunkコマンド

adbreorgsystemdataコマンド

INSERT文，UPDATE文，またはDELETE文が実行中であり，かつ次のどちらかの条件を満たす場合

INSERT文，UPDATE文，またはDELETE文の処理対象表が格納されているデータ用DBエリアと，検索系SQLの処理対象表が格納されているデータ用DBエリアが同じ場合

INSERT文，UPDATE文，またはDELETE文の処理対象表のインデクスが格納されているデータ用DBエリアと，検索系SQLの処理対象表のインデクスが格納されているデータ用DBエリアが同じ場合

2.21　クラウド環境でHADBサーバを使用する場合

クラウド環境でHADBサーバを使用できます。ここでは，クラウド環境でHADBサーバを使用する際の条件や，使用する機能などについて説明します。

2.21.1　使用できるクラウド環境

次のクラウド環境でHADBサーバを構築，運用できます。

AWS（Amazon Web Service）

Azure（Microsoft Azure）

メモ

クラウド環境とは，AWS環境およびAzure環境の総称を意味しています。

2.21.2　AWS環境でHADBサーバを使用する場合

(1)　AWS環境でHADBサーバを使用する際の条件

■DBエリアのデータの格納場所

AWS環境でHADBサーバを使用する場合，次のDBエリアのデータをAmazon S3またはEBSのどちらかに格納します（どちらに格納するかを選択します）。

データ用DBエリア

マスタディレクトリ用DBエリア

ディクショナリ用DBエリア

システム表用DBエリア

上記のDBエリアのデータをAmazon S3に格納するか，EBSに格納するかによって，システムの構築方法および運用方法が異なります。

重要

上記のDBエリアのデータをAmazon S3に格納する場合は，HADBオプションをインストールしてクラウドストレージ機能を使用する必要があります。クラウドストレージ機能を使用してAmazon S3にDBエリアのデータを格納する場合は，「(2)　Amazon S3にDBエリアのデータを格納する場合（クラウドストレージ機能を使用する場合）」を参照してください。

上記のDBエリアのデータをEBSに格納する場合は，クラウドストレージ機能を使用する必要はありません。そのため，HADBオプションのインストールも必要ありません。EBSにDBエリアのデータを格納する場合は，「(3)　EBSにDBエリアのデータを格納する場合（クラウドストレージ機能を使用しない場合）」を参照してください。

(2)　Amazon S3にDBエリアのデータを格納する場合（クラウドストレージ機能を使用する場合）

AWSのAmazon S3にDBエリアのデータを格納できます。この場合，HADBオプションをインストールして，クラウドストレージ機能を使用できるようにする必要があります。

(a)　クラウドストレージ機能とは

クラウドストレージ機能とは，クラウドベンダが提供しているオブジェクトストレージのオブジェクトにDBエリアのデータを格納できるようにする機能です。クラウドストレージ機能を使用すると，AWSのAmazon S3に次のDBエリアのデータを格納できます。

データ用DBエリア

マスタディレクトリ用DBエリア

ディクショナリ用DBエリア

システム表用DBエリア

AWSのAmazon S3などのオブジェクトストレージを使用すると，AWSのEBSなどのブロックストレージを使用するときに比べて，クラウドサービスの利用コストを低減できます。

クラウドストレージ機能を使用してAmazon S3にDBエリアのデータを格納する場合の例を次の図に示します。

図2‒85　クラウドストレージ機能を使用してAmazon S3にDBエリアのデータを格納する場合の例

［説明］

オブジェクトストレージであるAmazon S3にDBエリア（作業表用DBエリアを除く）のデータを格納します。

作業表用DBエリアのデータは，性能面を考慮してAmazon S3ではなくAWSのブロックストレージであるEBSに格納します。作業表用DBエリアのデータは，Amazon S3には格納されません。

メモ

クラウドストレージ機能を使用する場合，DBエリア（作業表用DBエリアを除く）のデータをレギュラーファイルまたはブロックスペシャルファイルに格納することはできません。

作業表用DBエリアについては，作業表用DBエリアファイルをレギュラーファイルまたはブロックスペシャルファイルのどちらかに割り当てる必要があります。

■HADBオプションとは

クラウドストレージ機能を使用する場合，HADBオプションをインストールする必要があります。HADBオプションをインストールすると，クラウドストレージ機能で使用する次に示すクラウドストレージ機能用ライブラリがインストールされます。

libadbcldstge-aws.so（Amazon S3用ライブラリ）

libaws-cpp-sdk-s3-crt.so（AWS SDK for C++ ライブラリ）

libaws-cpp-sdk-core.so（AWS SDK for C++ ライブラリ）

クラウドストレージ機能用ライブラリとは，上記の3つのライブラリの総称です。

メモ

クラウドストレージ機能を使用したシステムの構築方法および運用方法については，「21.　クラウド環境の構築（クラウドストレージ機能を使用する場合）」および「22.　クラウドストレージ機能を使用している場合の運用」を参照してください。

クラウドストレージ機能を使用したマルチノード構成の構築方法および運用方法については，「18.34　AWS環境でのマルチノード機能の運用」を参照してください。

クラウドストレージ機能を使用したコールドスタンバイ構成の構築方法および運用方法については，「19.22　AWS環境でのコールドスタンバイ構成の運用」を参照してください。

(b)　DBエリアのデータの格納形式（S3バケットおよびS3オブジェクト）

クラウドストレージ機能を使用する場合，次のDBエリアのデータはAmazon S3のS3バケット内のS3オブジェクトに格納されます。

データ用DBエリア

マスタディレクトリ用DBエリア

ディクショナリ用DBエリア

システム表用DBエリア

メモ

HADBのマニュアルでは，Amazon S3のバケットをS3バケット，オブジェクトをS3オブジェクトと表記しています。

DBエリアのデータの格納形式の概要を次の図に示します。

図2‒86　DBエリアのデータの格納形式の概要

［説明］

各DBエリアのデータが，複数のS3オブジェクトに分割して格納されます。1セグメントのデータが，1つのS3オブジェクトに格納されます。

ユーザは，S3オブジェクトを格納するS3バケットだけを作成します。S3バケットに格納されるS3オブジェクトはHADBサーバが作成します。また，どのDBエリアのデータが，どのS3オブジェクトに格納されているかをユーザが意識する必要はありません。

なお，汎用バケットまたはディレクトリバケットのどちらでもS3バケットとして使用できます。サーバ定義のadb_sys_cld_aws_bucketオペランドに指定したS3バケットのバケットタイプによってS3オブジェクトが作成されるストレージクラスが次のように決まります。

adb_sys_cld_aws_bucketオペランドに指定したS3バケットが汎用バケットの場合

汎用バケットのデフォルトのストレージクラスであるAmazon S3 StandardにS3オブジェクトが作成されます。

adb_sys_cld_aws_bucketオペランドに指定したS3バケットがディレクトリバケットの場合

ディレクトリバケットのデフォルトのストレージクラスであるAmazon S3 Express One ZoneにS3オブジェクトが作成されます。

■仮想DBエリアファイルとは

仮想DBエリアファイルとは，各DBエリア（作業表用DBエリアを除く）のデータを格納しているS3オブジェクト群を格納する概念的なDBエリアファイルのことです。クラウドストレージ機能を使用する場合，DBエリアファイルは物理的には作成されませんが，各DBエリアのデータを格納するS3オブジェクト群は，概念的なDBエリアファイルである仮想DBエリアファイルに格納されます。

メモ

adbinitコマンドでデータベースを初期設定すると，各DBエリアに1個の仮想DBエリアファイルが作成されます。DBエリアごとに仮想DBエリアファイルの容量が次のように異なります。

・データ用DBエリア：約1ペタバイト

・マスタディレクトリ用DBエリア：約1テラバイト

・ディクショナリ用DBエリア：約16テラバイト

・システム表用DBエリア：約16テラバイト

したがって，上記の図のデータ用DBエリア1の容量は約1ペタバイト，データ用DBエリア2の容量は約3ペタバイトになります。

adbmodareaコマンドでデータ用DBエリアを追加すると，そのデータ用DBエリアに1個の仮想DBエリアファイル（約1ペタバイト）が作成されます。

adbmodareaコマンドでデータ用DBエリアを拡張すると，拡張したデータ用DBエリアに仮想DBエリアファイル（約1ペタバイト）が1個追加されます。上記の図のデータ用DBエリア2は，仮想DBエリアファイルが3つあるため，DBエリアの拡張を2回実行しています。

(c)　キャッシュファイル

キャッシュファイルとは，S3バケット内の一部のS3オブジェクトのデータを格納するファイルです。1つのキャッシュファイルには，1つのS3オブジェクトのデータが格納されます。対応するキャッシュファイルとS3オブジェクトには，同じデータが格納されます。キャッシュファイルは，HADBサーバによってEBSまたはインスタンスストア上のレギュラーファイルとして作成されます。

HADBサーバがデータを検索する際，検索に必要なデータがキャッシュファイル中にある場合は，キャッシュファイルのデータにアクセスします。検索に必要なデータがキャッシュファイル中にない場合は，検索に必要なデータを格納しているS3オブジェクトにアクセスし，そのS3オブジェクトのデータを格納したキャッシュファイルを新たに作成します。HADBサーバは，新たに作成したキャッシュファイルのデータにアクセスします。

キャッシュファイルの概要を次の図に示します。

図2‒87　キャッシュファイルの概要

［説明］

キャッシュファイルは，グローバルバッファとオブジェクトストレージであるAmazon S3の間に位置するファイルになります。S3バケット内の一部のS3オブジェクトのデータを格納します。

ユーザは，キャッシュファイルをEBSまたはインスタンスストアのどちらに作成するかを決定し，キャッシュファイルを格納するディレクトリパスを次のオペランドに指定します。

adbinitコマンドでデータベースを初期設定する際に指定する初期設定オプションのadb_init_cld_cache_pathオペランド

サーバ定義のadb_sys_cld_cache_pathオペランド

なお，キャッシュファイルの格納先ディスクには，セクターサイズが512バイトまたは4,096バイトのディスクが使用できます。

キャッシュファイルの総容量の上限をサーバ定義のadb_sys_cld_cache_total_sizeオペランド※に指定します。キャッシュファイルの総容量が上限値を超えた場合，最後にアクセスした時間がいちばん古いキャッシュファイルを削除したあとに新しいキャッシュファイルを作成することで，キャッシュファイルの総容量の上限を超えないようにします。

注※

キャッシュグループを定義する場合は，キャッシュグループごとにキャッシュファイルの総容量の上限をサーバ定義のadbcachegrpオペランドの-sオプションに指定します。adbcachegrpオペランドを指定する場合は，adb_sys_cld_cache_total_sizeオペランドの指定は不要です。詳細については，「(d)　キャッシュグループ」を参照してください。

データインポートなどでDBエリアにデータを格納する場合は，キャッシュファイルにデータをいったん格納し，コミットが完了するまでの間にS3バケットにデータを格納します。

メモ

EBSまたはインスタンスストアにキャッシュファイルを作成することによって，Amazon S3へのアクセス回数を削減できるため，次のメリットがあります。

クラウドサービスの利用コストの低減が見込まれる

性能向上が見込まれる

■キャッシュファイルの再利用

HADBサーバを終了してもキャッシュファイルは削除されません。そのキャッシュファイルを次回のHADBサーバの開始後に利用できます。これをキャッシュファイルの再利用といいます。キャッシュファイルを再利用することで，HADBサーバを開始したあとのS3オブジェクトへのアクセスの集中を減らすことができます。

なお，次の場合はキャッシュファイルを再利用できません。

インスタンスストア上にキャッシュファイルを作成する場合

マルチノード機能を使用する場合

バージョンアップ後の最初のHADBサーバの開始時

データベースの回復後の最初のHADBサーバの開始時

重要

マルチノード機能を使用しない場合は，EBSなどの永続ディスク上にキャッシュファイルを作成して，キャッシュファイルを再利用できるようにしてください。

マルチノード機能を使用する場合は，HADBサーバの正常開始または再開始時に，全キャッシュファイルが削除されます。そのため，前回の稼働時に作成されたキャッシュファイルを次回のHADBサーバの開始以降に再利用することはありません。したがって，EBSなどの永続ディスク上にキャッシュファイルを作成する必要性はありません。必要に応じて，インスタンスストア上にキャッシュファイルを作成することも検討してください。

HADBサーバの正常終了時，キャッシュファイルの再利用に必要な情報を格納した再利用情報ファイルが作成され，キャッシュファイルの格納先ディレクトリとS3オブジェクトに格納されます。HADBサーバの開始時に，この再利用情報ファイルを使用してキャッシュファイルを再利用します。そのため，再利用情報ファイルが正しく作成されないおそれがあるときは，キャッシュファイルを再利用できないことがあります。例えば，次のケースが該当します。

HADBサーバの開始処理中にエラーが発生した場合

HADBサーバが異常終了または強制終了した場合

HADBサーバの終了後，再利用情報ファイルやキャッシュファイルに対して，削除，権限変更，または書き込みなどの操作をした場合

また，次のどれかに該当するDBエリアのキャッシュファイルは，次回のHADBサーバの開始後に再利用できません。

キャッシュグループの容量の上限（サーバ定義のadbcachegrpオペランドの-sオプションの値）を小さくしたキャッシュグループに割り当てられているDBエリア

割り当て先のキャッシュグループを変更したデータ用DBエリア

マスタディレクトリ用DBエリア

メモ

サーバ定義のadb_sys_cld_cache_total_sizeオペランドの値（キャッシュファイルの総容量の上限）を小さくした場合，次回のHADBサーバの開始後にキャッシュファイルを再利用できません。

システムログファイルおよびステータスファイルのデータを格納しているキャッシュファイルは再利用できません。

(d)　キャッシュグループ

キャッシュファイルは，EBSまたはインスタンスストア上に作成したキャッシュファイルの格納先ディレクトリ下の領域に作成されます。この領域にキャッシュグループという複数の仮想のグループをサーバ定義のadbcachegrpオペランドで定義できます。キャッシュグループを定義すると，キャッシュファイルの作成や削除処理がキャッシュグループ単位で実行されます。キャッシュグループの概要を次の図に示します。

図2‒88　キャッシュグループの概要

［説明］

上記の例では，キャッシュグループA，キャッシュグループB，キャッシュグループC，および既定のキャッシュグループの4つのキャッシュグループを定義しています。各キャッシュグループには，キャッシュファイルを作成できる総容量の上限を設定できます。

キャッシュグループAには，データ用DBエリアA1～A2のデータを格納したキャッシュファイルだけが作成されます。キャッシュグループAのキャッシュファイルの総容量が上限を超えた場合，キャッシュグループAの既存のキャッシュファイルを削除したあとに，新たなキャッシュファイルをキャッシュグループAに作成します。

キャッシュグループBには，データ用DBエリアB1のデータを格納したキャッシュファイルだけが作成されます。キャッシュグループBのキャッシュファイルの総容量が上限を超えた場合，キャッシュグループBの既存のキャッシュファイルを削除したあとに，新たなキャッシュファイルをキャッシュグループBに作成します。

キャッシュグループCには，データ用DBエリアC1～C3のデータを格納したキャッシュファイルだけが作成されます。キャッシュグループCのキャッシュファイルの総容量が上限を超えた場合，キャッシュグループCの既存のキャッシュファイルを削除したあとに，新たなキャッシュファイルをキャッシュグループCに作成します。

既定のキャッシュグループには，データ用DBエリアA1～A2，データ用DBエリアB1，データ用DBエリアC1～C3以外のデータ用DBエリアのデータを格納したキャッシュファイルが作成されます。既定のキャッシュグループとは，サーバ定義のadbcachegrpオペランドに-oオプションを指定して定義したキャッシュグループのことです。

既定のキャッシュグループのキャッシュファイルの総容量が上限を超えた場合，既定のキャッシュグループの既存のキャッシュファイルを削除したあとに，新たなキャッシュファイルを既定のキャッシュグループに作成します。

メモ

各キャッシュグループに作成できるキャッシュファイルの総容量の上限をadbcachegrpオペランドの-sオプションで指定します。最後にアクセスした時間がいちばん古いキャッシュファイルを削除したあとに新しいキャッシュファイルを作成することで，キャッシュグループ内のキャッシュファイルの総容量の上限を超えないようにしています。

上記の図に示すキャッシュグループを定義する際のadbcachegrpオペランドの指定例を次に示します。

adbcachegrp -g cachegrpA -n DBAREA_A1,DBAREA_A2 -s 3000              ...1
adbcachegrp -g cachegrpB -n DBAREA_B1 -s 5000                        ...2
adbcachegrp -g cachegrpC -n DBAREA_C1,DBAREA_C2,DBAREA_C3 -s 1000    ...3
adbcachegrp -o -s 1000                                               ...4

［説明］

キャッシュグループA（キャッシュグループ名：cachegrpA）を定義します。キャッシュグループAには，データ用DBエリアA1～A2（DBエリア名：DBAREA_A1，DBAREA_A2）のデータを格納したキャッシュファイルだけが作成されます。キャッシュグループAに作成できるキャッシュファイルの総容量の上限は，-sオプションに指定した3,000ギガバイトになります。

キャッシュグループB（キャッシュグループ名：cachegrpB）を定義します。キャッシュグループBには，データ用DBエリアB1（DBエリア名：DBAREA_B1）のデータを格納したキャッシュファイルだけが作成されます。キャッシュグループBに作成できるキャッシュファイルの総容量の上限は，-sオプションに指定した5,000ギガバイトになります。

キャッシュグループC（キャッシュグループ名：cachegrpC）を定義します。キャッシュグループCには，データ用DBエリアC1～C3（DBエリア名：DBAREA_C1，DBAREA_C2，DBAREA_C3）のデータを格納したキャッシュファイルだけが作成されます。キャッシュグループCに作成できるキャッシュファイルの総容量の上限は，-sオプションに指定した1,000ギガバイトになります。

既定のキャッシュグループを定義します。上記の1.～3.に指定したデータ用DBエリア以外のデータ用DBエリアのデータを格納したキャッシュファイルが作成されます。既定のキャッシュグループに作成できるキャッシュファイルの総容量の上限は，-sオプションに指定した1,000ギガバイトになります。

重要

adbcachegrpオペランドを指定してキャッシュグループを定義する場合は，adb_sys_cld_cache_total_sizeオペランド（キャッシュファイルの総容量の上限を指定するオペランド）を指定できません。上記の説明のとおり，各キャッシュグループのキャッシュファイルの総容量の上限をadbcachegrpオペランドの-sオプションに指定します。

■キャッシュグループを定義するメリット

キャッシュファイルの作成や削除処理がキャッシュグループ単位で実行されるため，次のようなケースに該当する場合は，キャッシュグループを定義することを検討してください。

HADBを複数の業務で使用している場合

例えば，業務Aでアクセスするデータと業務Bでアクセスするデータが異なる場合，業務Aのあとに業務Bを行うと，業務Aのデータを格納したキャッシュファイルを削除し，業務Bのデータを格納しているS3オブジェクトからキャッシュファイルを作成することがあります。また，業務Bのあとに業務Aを再度行う場合，業務Bのデータを格納したキャッシュファイルを削除し，業務Aのデータを格納しているS3オブジェクトからキャッシュファイルを作成することがあります。このように，S3オブジェクトからキャッシュファイルを作成する回数が増えると性能に影響を及ぼすおそれがあります。

このような場合，業務Aでアクセスするデータを格納しているデータ用DBエリアをキャッシュグループＡに割り当て，業務Ｂでアクセスするデータを格納しているデータ用DBエリアをキャッシュグループＢに割り当てると，キャッシュファイルの作成および削除処理がキャッシュグループ単位で実行されるため，業務Aと業務Bはお互いに影響を受けなくなります。

B-treeインデクスやマスタ表などの小規模で頻繁に参照するデータと，大規模で参照頻度の低いデータがある場合

「大規模で参照頻度の低いデータ」を参照する場合，これらのデータを格納したキャッシュファイルが作成されます。それによって，「B-treeインデクスやマスタ表などの小規模で頻繁に参照するデータ」を格納したキャッシュファイルが削除されることがあります。キャッシュファイルが削除されたデータを再度参照する場合，S3オブジェクトにアクセスしてキャッシュファイルを作成する必要があります。このように，「B-treeインデクスやマスタ表などの小規模で頻繁に参照するデータ」をS3オブジェクトにアクセスしてキャッシュファイルを作成する回数が増えると，性能に影響を及ぼすおそれがあります。

このような場合，「B-treeインデクスやマスタ表などの小規模で頻繁に参照するデータ」を格納しているデータ用DBエリアをキャッシュグループＡに割り当て，「大規模で参照頻度の低いデータ」を格納しているデータ用DBエリアをキャッシュグループBに割り当てると，キャッシュファイルの作成および削除処理がキャッシュグループ単位で実行されるため，「B-treeインデクスやマスタ表などの小規模で頻繁に参照するデータ」を格納したキャッシュファイルが削除される頻度が減り，性能への影響を軽減できる可能性があります。

メモ

キャッシュグループは仮想的なグループであり，ファイルシステム上で区別する方法はありません。物理的には，キャッシュファイルの格納先ディレクトリ下に全キャッシュファイルが作成されます。

■既定のキャッシュグループ

adbcachegrpオペランドに-oオプションを指定して定義したキャッシュグループを既定のキャッシュグループといいます。既定のキャッシュグループは，必ず1つ定義する必要があります。

マスタディレクトリ用DBエリア，ディクショナリ用DBエリア，およびシステム表用DBエリアのデータを格納したキャッシュファイルは，既定のキャッシュグループに作成されます。既定のキャッシュグループ内にマスタディレクトリ用DBエリア専用の容量を1メガバイト割り当てます。そのため，既定のキャッシュグループに作成できるキャッシュファイルの総容量の上限は，adbcachegrpオペランドの-sオプションに指定した値から1メガバイト小さくなります。

メモ

adbcachegrpオペランドを指定しない場合も，HADBサーバの仕様として既定のキャッシュグループが1つだけ定義されます。ただし，adbcachegrpオペランドを指定しない場合は，HADBサーバを運用する際にキャッシュグループを意識する必要はありません。

■キャッシュグループとグローバルバッファの関係

キャッシュグループもグローバルバッファも割り当てるデータ用DBエリアを指定します。基本的には，キャッシュグループとグローバルバッファを1対1に対応させて，割り当てるデータ用DBエリアを同じにするか，または1つのキャッシュグループに複数のグローバルバッファを対応させて，キャッシュグループとグローバルバッファを階層構造にすることを推奨します。

（例1）キャッシュグループとグローバルバッファを1対1に対応させる場合

adbcachegrp -g CACHEGRP01 -n DBAREA01 -s 1000
adbbuff -g GBUF01 -n DBAREA01 -p 1024

キャッシュグループ（CACHEGRP01）とグローバルバッファ（GBUF01）を1対1に対応させています。同じデータ用DBエリア（DBAREA01）を割り当てています。

（例2）1つのキャッシュグループに複数のグローバルバッファを対応させる場合

adbcachegrp -g CACHEGRP01 -n DBAREA01,DBAREA02,DBAREA03 -s 1000
adbbuff -g GBUF01 -n DBAREA01 -p 1024
adbbuff -g GBUF02 -n DBAREA02,DBAREA03 -p 1024

キャッシュグループ（CACHEGRP01）とグローバルバッファ（GBUF01，GBUF02）を対応させています。グローバルバッファ（GBUF01，GBUF02）で割り当てているデータ用DBエリア（DBAREA01，DBAREA02，DBAREA03）を，キャッシュグループ（CACHEGRP01）でも割り当てています。

(e)　クラウドストレージ機能のシステムディレクトリ対応オプション

システムディレクトリ（$DBDIR/ADBSYS）下には，次のファイルが格納されています。

システムログファイル

ステータスファイル

コマンドステータスファイル

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にすると，上記のファイルのうち，システムログファイルとステータスファイルがオブジェクトストレージに格納されます。クラウドストレージ機能のシステムディレクトリ対応オプションを有効にした場合の例を次の図に示します。

図2‒89　クラウドストレージ機能のシステムディレクトリ対応オプションを有効にした場合の例

なお，コマンドステータスファイルは，オブジェクトストレージには格納されません。

オプションを有効にしたときのメリット

オプションを有効にすると，次のメリットがあります。

HAモニタありのマルチノード構成の場合に共有ディスクの設定が不要になる

HAモニタありのマルチノード構成の場合，EFSを共有ディスクとして設定する必要がありますが，オプションを有効にすると，システムディレクトリ下のファイルがオブジェクトストレージに格納されます。そのため，共有ディスクの設定が不要になります。

バックアップの取得方法が簡単になる

通常は，オブジェクトストレージ内のDBエリアのデータと，オブジェクトストレージ外にあるシステムディレクトリ下のデータを，それぞれの方法でバックアップを取得する必要があります。オプションを有効にすると，システムディレクトリ下のデータもDBエリアのデータと一緒にオブジェクトストレージに格納されるため，オブジェクトストレージ内のデータを一括でバックアップに取得できるようになります。

オプションを有効にしたときのデメリット

検索系SQL以外のSQL文や，adbexportコマンド以外のコマンドの実行性能が低下するおそれがある

オプションを有効にすると，システムログファイルはオブジェクトストレージに格納されます。そのため，EBSまたはインスタンスストアにシステムログファイルを格納したときに比べると，システムログファイルの参照，更新処理に時間が掛かります。検索系SQL以外のSQL文や，adbexportコマンド以外のコマンドは，システムログファイルを参照，更新することがあるため，これらのSQL文やコマンドの処理に時間が掛かるようになるおそれがあります。

コマンドの再実行機能が使用できなくなる

オプションを有効にすると，コマンドステータスファイルが使用できなくなるため，次のコマンドの再実行機能が使用できなくなります。

adbimportコマンド

adbidxrebuildコマンド

再実行機能とは，上記のコマンドが異常終了したあとにコマンドを再実行した場合，コマンドの処理を途中から再実行する機能です。これによって，コマンドの再実行処理に掛かる時間を短縮できます。詳細については，マニュアルHADB　コマンドリファレンスのadbimportコマンドのオプション機能のB-treeインデクスとテキストインデクス作成処理からの再実行機能，およびadbidxrebuildコマンドのオプション機能の再実行機能を参照してください。

システムディレクトリ用のキャッシュグループ

オプションを有効にした場合，システムディレクトリ用のキャッシュグループが自動的に作成されます。システムディレクトリ用のキャッシュグループの例を次の図に示します。

図2‒90　システムディレクトリ用のキャッシュグループの例

［説明］

システムディレクトリ用のキャッシュグループの名称は，##ADBCACHEGRP_ADBSYSです。

システムディレクトリ用のキャッシュグループの容量の上限は，サーバ定義のadbcachegrpオペランドに-dオプションを指定して調整できます。

ステータスファイルについては，キャッシュ化のメリットがないため，キャッシュファイルを作成しません。

DBエリアのデータを格納しているキャッシュグループをDBエリア用のキャッシュグループと呼ぶことがあります。

オプションを有効にする方法

初期設定オプションのadb_init_cld_sysdir_storageオペランドにYを指定してadbinitコマンドを実行すると，クラウドストレージ機能のシステムディレクトリ対応オプションが有効になります。

メモ

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にできるのはAWS環境の場合，またはオンプレミス環境でAmazon S3互換オブジェクトストレージを使用する場合に限ります。

(f)　制限事項および留意事項

クラウドストレージ機能を使用する場合，次に示す制限事項と留意事項があります。

■制限事項

クラウドストレージ機能を使用する場合，次に示すことができません。

追加モードでのデータインポート（adbimportコマンド）

アーカイブマルチチャンク表の定義

テキストインデクスの定義

同義語検索

■留意事項

クラウドストレージ機能を使用した場合，クラウドストレージ機能を使用しない場合に比べて，SQL文やコマンドを実行して表のデータを操作する時間が掛かることがあります。

クラウドストレージ機能を使用した場合，SQL文やコマンドをキャンセルしたり，SQL文やコマンドにエラーが発生したりすると，ロールバック処理に時間が掛かることがあります。

データ用DBエリア数が増えるに従って，HADBサーバの開始，adbdbstatusコマンドの実行，およびチャンクの更新または削除などの各種の処理時間が長くなるおそれがあります。そのため，「5.6　データ用DBエリアの設計」を参照して，データ用DBエリアは必要な数だけ作成するようにしてください。

クラウドストレージ機能を使用する場合，データ用DBエリアのページサイズは32キロバイト固定になります。また，1セグメントの容量も32メガバイト固定になります。

■INSERT文，UPDATE文，およびDELETE文を実行する場合の留意事項

クラウドストレージ機能を使用する場合，次の点に留意してください。

INSERT文，UPDATE文，およびDELETE文をなるべく実行しない運用にしてください。

クラウドストレージ機能を使用する場合，これらのSQL文を実行する際にS3オブジェクト単位（1つのS3オブジェクトには，1セグメントのデータが格納されている）の操作が発生します。クラウドストレージ機能を使用しない場合にこれらのSQL文を実行する際は，ページ単位のI/Oの発生だけで済みますが，クラウドストレージ機能を使用する場合はさらにセグメント単位のI/Oと通信が発生します。そのため，INSERT文，UPDATE文，およびDELETE文の実行性能が低下することがあり，特に少量のデータを更新する運用には適していません。

INSERT文，UPDATE文，およびDELETE文の実行対象となる表は，B-treeインデクスおよびレンジインデクスの定義数をなるべく少なくしてください。

B-treeインデクスやレンジインデクスの定義数が多くなるほど，INSERT文，UPDATE文，およびDELETE文の実行性能が低下します。

INSERT文，UPDATE文，およびDELETE文の実行回数を少なくできない場合は，「(3)　EBSにDBエリアのデータを格納する場合（クラウドストレージ機能を使用しない場合）」で説明するクラウドストレージ機能を使用しないAWS環境でHADBサーバを使用することを検討してください。

(g)　HADBのマニュアルを読む際の留意事項

クラウドストレージ機能を使用する場合，DBエリア（作業表用DBエリアを除く）のDBエリアファイルは作成されません。代わりに，仮想DBエリアファイルが作成されます。それに伴い，HADBのマニュアルを読む際の留意事項を次に示します。

DBエリアファイルに関する留意事項

HADBのマニュアル中の「DBエリアファイル」を「仮想DBエリアファイル」に読み替えてください。

なお，作業表用DBエリアのDBエリアファイルは作成されるため，作業表用DBエリアのDBエリアファイルについては読み替えをする必要はありません。

読み替えの例を次に示します。

（例1）

データ用DBエリアまたはデータ用DBエリアのDBエリアファイルの数が上限値を超えています。

上記の場合，「データ用DBエリアまたはデータ用DBエリアの仮想DBエリアファイルの数が上限値を超えています。」と読み替えてください。

（例2）

dbarea_file_num：表を格納するデータ用DBエリアのDBエリアファイル数

上記の場合，「表を格納するデータ用DBエリアの仮想DBエリアファイル数」と読み替えてください。

メモ

メモリ所要量などの計算式の変数の説明で，例2のような読み替えがあります。

レギュラーファイル，ブロックスペシャルファイルに関する留意事項

DBエリア（作業表用DBエリアを除く）のDBエリアファイルは作成されないため，レギュラーファイルまたはブロックスペシャルファイルに関する説明は該当しません。作業表用DBエリア以外のDBエリアについては，「クラウドストレージ機能を使用している場合」の説明をお読みください。

作業表用DBエリアファイルは，レギュラーファイルまたはブロックスペシャルファイルのどちらかに割り当てるため，レギュラーファイルまたはブロックスペシャルファイルのどちらか該当する方の説明をお読みください。

読み方の例を次に示します。

（例1）

（例2）

(3)　EBSにDBエリアのデータを格納する場合（クラウドストレージ機能を使用しない場合）

AWSのEBSにDBエリアのデータを格納できます。この場合，クラウドストレージ機能を使用する必要はありません。

EBSにDBエリアのデータを格納する場合の例を次の図にしまします。

図2‒91　EBSにDBエリアのデータを格納する場合の例

［説明］

ブロックストレージであるEBSにDBエリアのデータを格納できます。

クラウドストレージ機能を使用しないため，HADBオプションのインストールは必要ありません。

メモ

クラウドストレージ機能を使用しないAWS環境でマルチノード構成を構築，運用する方法については，「18.34　AWS環境でのマルチノード機能の運用」を参照してください。

クラウドストレージ機能を使用しないAWS環境でコールドスタンバイ構成を構築，運用する方法については，「19.22　AWS環境でのコールドスタンバイ構成の運用」を参照してください。

2.21.3　Azure環境でHADBサーバを使用する場合

(1)　Azure環境でHADBサーバを使用する際の条件

■DBエリアのデータの格納場所

Azure環境でHADBサーバを使用する場合，次のDBエリアのデータをAzure Blob Storageまたはマネージドディスクのどちらかに格納します（どちらに格納するかを選択します）。

データ用DBエリア

マスタディレクトリ用DBエリア

ディクショナリ用DBエリア

システム表用DBエリア

重要

上記のDBエリアのデータをAzure Blob Storageに格納する場合は，HADBオプションをインストールしてクラウドストレージ機能を使用する必要があります。クラウドストレージ機能を使用してAzure Blob StorageにDBエリアのデータを格納する場合は，「(2)　Azure Blob StorageにDBエリアのデータを格納する場合（クラウドストレージ機能を使用する場合）」を参照してください。

上記のDBエリアのデータをマネージドディスクに格納する場合は，クラウドストレージ機能を使用する必要はありません。そのため，HADBオプションのインストールも必要ありません。マネージドディスクにDBエリアのデータを格納する場合は，「(3)　マネージドディスクにDBエリアのデータを格納する場合（クラウドストレージ機能を使用しない場合）」を参照してください。

■適用OS

クラウドストレージ機能を使用する場合は，適用OSがRHEL 9以降となります。

(2)　Azure Blob StorageにDBエリアのデータを格納する場合（クラウドストレージ機能を使用する場合）

AzureのAzure Blob StorageにDBエリアのデータを格納できます。この場合，HADBオプションをインストールして，クラウドストレージ機能を使用できるようにする必要があります。

(a)　クラウドストレージ機能とは

クラウドストレージ機能とは，クラウドベンダが提供しているオブジェクトストレージのオブジェクトにDBエリアのデータを格納できるようにする機能です。クラウドストレージ機能を使用すると，AzureのAzure Blob Storageに次のDBエリアのデータを格納できます。

データ用DBエリア

マスタディレクトリ用DBエリア

ディクショナリ用DBエリア

システム表用DBエリア

AzureのAzure Blob Storageなどのオブジェクトストレージを使用すると，Azureのマネージドディスクなどのブロックストレージを使用するときに比べて，クラウドサービスの利用コストを低減できます。

クラウドストレージ機能を使用してAzure Blob StorageにDBエリアのデータを格納する場合の例を次の図に示します。

図2‒92　クラウドストレージ機能を使用してAzure Blob StorageにDBエリアのデータを格納する場合の例

［説明］

オブジェクトストレージであるAzure Blob StorageにDBエリア（作業表用DBエリアを除く）のデータを格納します。

作業表用DBエリアのデータは，性能面を考慮してAzure Blob StorageではなくAzureのブロックストレージであるマネージドディスクに格納します。作業表用DBエリアのデータは，Azure Blob Storageには格納されません。

メモ

クラウドストレージ機能を使用する場合，DBエリア（作業表用DBエリアを除く）のデータをレギュラーファイルまたはブロックスペシャルファイルに格納することはできません。

作業表用DBエリアについては，作業表用DBエリアファイルをレギュラーファイルまたはブロックスペシャルファイルのどちらかに割り当てる必要があります。

■HADBオプションとは

クラウドストレージ機能を使用する場合，HADBオプションをインストールする必要があります。HADBオプションをインストールすると，クラウドストレージ機能で使用する次に示すクラウドストレージ機能用ライブラリがインストールされます。

libadbcldstge-azure.so（Azure Blob Storage用ライブラリ）

libazure-storage-blobs.so（Azure SDK for C++ BLOBストレージライブラリ）

libazure-storage-common.so（Azure SDK for C++ ストレージ共通ライブラリ）

libazure-identity.so（Azure SDK for C++ 資格情報ライブラリ）

libazure-core.so（Azure SDK for C++ コアライブラリ）

クラウドストレージ機能用ライブラリとは，上記の5つのライブラリの総称です。

メモ

クラウドストレージ機能を使用したシステムの構築方法および運用方法については，「21.　クラウド環境の構築（クラウドストレージ機能を使用する場合）」および「22.　クラウドストレージ機能を使用している場合の運用」を参照してください。

クラウドストレージ機能を使用したマルチノード構成の構築方法および運用方法については，「18.35　Azure環境でのマルチノード機能の運用」を参照してください。

クラウドストレージ機能を使用したコールドスタンバイ構成の構築方法および運用方法については，「19.23　Azure環境でのコールドスタンバイ構成の運用」を参照してください。

(b)　DBエリアのデータの格納形式（コンテナーおよびBLOB）

クラウドストレージ機能を使用する場合，次のDBエリアのデータはAzure Blob Storageのコンテナー内のBLOBに格納されます。

データ用DBエリア

マスタディレクトリ用DBエリア

ディクショナリ用DBエリア

システム表用DBエリア

DBエリアのデータの格納形式の概要を次の図に示します。

図2‒93　DBエリアのデータの格納形式の概要

［説明］

各DBエリアのデータが，複数のBLOBに分割して格納されます。1セグメントのデータが，1つのBLOBに格納されます。

ユーザは，BLOBを格納するコンテナーだけを作成します。コンテナーに格納されるBLOBはHADBサーバが作成します。また，どのDBエリアのデータが，どのBLOBに格納されているかをユーザが意識する必要はありません。

BLOBはホットアクセス層に作成されます。

■仮想DBエリアファイルとは

仮想DBエリアファイルとは，各DBエリア（作業表用DBエリアを除く）のデータを格納しているBLOB群を格納する概念的なDBエリアファイルのことです。クラウドストレージ機能を使用する場合，DBエリアファイルは物理的には作成されませんが，各DBエリアのデータを格納するBLOB群は，概念的なDBエリアファイルである仮想DBエリアファイルに格納されます。

メモ

adbinitコマンドでデータベースを初期設定すると，各DBエリアに1個の仮想DBエリアファイルが作成されます。DBエリアごとに仮想DBエリアファイルの容量が次のように異なります。

・データ用DBエリア：約1ペタバイト

・マスタディレクトリ用DBエリア：約1テラバイト

・ディクショナリ用DBエリア：約16テラバイト

・システム表用DBエリア：約16テラバイト

したがって，上記の図のデータ用DBエリア1の容量は約1ペタバイト，データ用DBエリア2の容量は約3ペタバイトになります。

adbmodareaコマンドでデータ用DBエリアを追加すると，そのデータ用DBエリアに1個の仮想DBエリアファイル（約1ペタバイト）が作成されます。

adbmodareaコマンドでデータ用DBエリアを拡張すると，拡張したデータ用DBエリアに仮想DBエリアファイル（約1ペタバイト）が1個追加されます。上記の図のデータ用DBエリア2は，仮想DBエリアファイルが3つあるため，DBエリアの拡張を2回実行しています。

(c)　キャッシュファイル

キャッシュファイルとは，コンテナー内の一部のBLOBのデータを格納するファイルです。1つのキャッシュファイルには，1つのBLOBのデータが格納されます。対応するキャッシュファイルとBLOBには，同じデータが格納されます。キャッシュファイルは，HADBサーバによってマネージドディスクまたは一時ディスク上のレギュラーファイルとして作成されます。

HADBサーバがデータを検索する際，検索に必要なデータがキャッシュファイル中にある場合は，キャッシュファイルのデータにアクセスします。検索に必要なデータがキャッシュファイル中にない場合は，検索に必要なデータを格納しているBLOBにアクセスし，そのBLOBのデータを格納したキャッシュファイルを新たに作成します。HADBサーバは，新たに作成したキャッシュファイルのデータにアクセスします。

キャッシュファイルの概要を次の図に示します。

図2‒94　キャッシュファイルの概要

［説明］

キャッシュファイルは，グローバルバッファとオブジェクトストレージであるAzure Blob Storageの間に位置するファイルになります。コンテナー内の一部のBLOBのデータを格納します。

ユーザは，キャッシュファイルをマネージドディスクまたは一時ディスクのどちらに作成するかを決定し，キャッシュファイルを格納するディレクトリパスを次のオペランドに指定します。

adbinitコマンドでデータベースを初期設定する際に指定する初期設定オプションのadb_init_cld_cache_pathオペランド

サーバ定義のadb_sys_cld_cache_pathオペランド

なお，キャッシュファイルの格納先ディスクには，セクターサイズが512バイトまたは4,096バイトのディスクが使用できます。

キャッシュファイルの総容量の上限をサーバ定義のadb_sys_cld_cache_total_sizeオペランド※に指定します。キャッシュファイルの総容量が上限値を超えた場合，最後にアクセスした時間がいちばん古いキャッシュファイルを削除したあとに新しいキャッシュファイルを作成することで，キャッシュファイルの総容量の上限を超えないようにします。

注※

キャッシュグループを定義する場合は，キャッシュグループごとにキャッシュファイルの総容量の上限をサーバ定義のadbcachegrpオペランドの-sオプションに指定します。adbcachegrpオペランドを指定する場合は，adb_sys_cld_cache_total_sizeオペランドの指定は不要です。詳細については，「(d)　キャッシュグループ」を参照してください。

データインポートなどでDBエリアにデータを格納する場合は，キャッシュファイルにデータをいったん格納し，コミットが完了するまでの間にコンテナーにデータを格納します。

メモ

マネージドディスクまたは一時ディスクにキャッシュファイルを作成することによって，Azure Blob Storageへのアクセス回数を削減できるため，次のメリットがあります。

クラウドサービスの利用コストの低減が見込まれる

性能向上が見込まれる

■キャッシュファイルの再利用

HADBサーバを終了してもキャッシュファイルは削除されません。そのキャッシュファイルを次回のHADBサーバの開始後に利用できます。これをキャッシュファイルの再利用といいます。キャッシュファイルを再利用することで，HADBサーバを開始したあとのBLOBへのアクセスの集中を減らすことができます。

なお，次の場合はキャッシュファイルを再利用できません。

一時ディスク上にキャッシュファイルを作成する場合

マルチノード機能を使用する場合

バージョンアップ後の最初のHADBサーバの開始時

データベースの回復後の最初のHADBサーバの開始時

重要

マルチノード機能を使用しない場合は，マネージドディスクなどの永続ディスク上にキャッシュファイルを作成して，キャッシュファイルを再利用できるようにしてください。

マルチノード機能を使用する場合は，HADBサーバの正常開始または再開始時に，全キャッシュファイルが削除されます。そのため，前回の稼働時に作成されたキャッシュファイルを次回のHADBサーバの開始以降に再利用することはありません。したがって，マネージドディスクなどの永続ディスク上にキャッシュファイルを作成する必要性はありません。必要に応じて，一時ディスク上にキャッシュファイルを作成することも検討してください。

HADBサーバの正常終了時，キャッシュファイルの再利用に必要な情報を格納した再利用情報ファイルが作成され，キャッシュファイルの格納先ディレクトリとBLOBに格納されます。HADBサーバの開始時に，この再利用情報ファイルを使用してキャッシュファイルを再利用します。そのため，再利用情報ファイルが正しく作成されないおそれがあるときは，キャッシュファイルを再利用できないことがあります。例えば，次のケースが該当します。

HADBサーバの開始処理中にエラーが発生した場合

HADBサーバが異常終了または強制終了した場合

HADBサーバの終了後，再利用情報ファイルやキャッシュファイルに対して，削除，権限変更，または書き込みなどの操作をした場合

また，次のどれかに該当するDBエリアのキャッシュファイルは，次回のHADBサーバの開始後に再利用できません。

キャッシュグループの容量の上限（サーバ定義のadbcachegrpオペランドの-sオプションの値）を小さくしたキャッシュグループに割り当てられているDBエリア

割り当て先のキャッシュグループを変更したデータ用DBエリア

マスタディレクトリ用DBエリア

メモ

サーバ定義のadb_sys_cld_cache_total_sizeオペランドの値（キャッシュファイルの総容量の上限）を小さくした場合，次回のHADBサーバの開始後にキャッシュファイルを再利用できません。

(d)　キャッシュグループ

キャッシュファイルは，マネージドディスクまたは一時ディスク上に作成したキャッシュファイルの格納先ディレクトリ下の領域に作成されます。この領域にキャッシュグループという複数の仮想のグループをサーバ定義のadbcachegrpオペランドで定義できます。キャッシュグループを定義すると，キャッシュファイルの作成や削除処理がキャッシュグループ単位で実行されます。キャッシュグループの概要を次の図に示します。

図2‒95　キャッシュグループの概要

［説明］

上記の例では，キャッシュグループA，キャッシュグループB，キャッシュグループC，および既定のキャッシュグループの4つのキャッシュグループを定義しています。各キャッシュグループには，キャッシュファイルを作成できる総容量の上限を設定できます。

キャッシュグループAには，データ用DBエリアA1～A2のデータを格納したキャッシュファイルだけが作成されます。キャッシュグループAのキャッシュファイルの総容量が上限を超えた場合，キャッシュグループAの既存のキャッシュファイルを削除したあとに，新たなキャッシュファイルをキャッシュグループAに作成します。

キャッシュグループBには，データ用DBエリアB1のデータを格納したキャッシュファイルだけが作成されます。キャッシュグループBのキャッシュファイルの総容量が上限を超えた場合，キャッシュグループBの既存のキャッシュファイルを削除したあとに，新たなキャッシュファイルをキャッシュグループBに作成します。

キャッシュグループCには，データ用DBエリアC1～C3のデータを格納したキャッシュファイルだけが作成されます。キャッシュグループCのキャッシュファイルの総容量が上限を超えた場合，キャッシュグループCの既存のキャッシュファイルを削除したあとに，新たなキャッシュファイルをキャッシュグループCに作成します。

既定のキャッシュグループには，データ用DBエリアA1～A2，データ用DBエリアB1，データ用DBエリアC1～C3以外のデータ用DBエリアのデータを格納したキャッシュファイルが作成されます。既定のキャッシュグループとは，サーバ定義のadbcachegrpオペランドに-oオプションを指定して定義したキャッシュグループのことです。

既定のキャッシュグループのキャッシュファイルの総容量が上限を超えた場合，既定のキャッシュグループの既存のキャッシュファイルを削除したあとに，新たなキャッシュファイルを既定のキャッシュグループに作成します。

メモ

各キャッシュグループに作成できるキャッシュファイルの総容量の上限をadbcachegrpオペランドの-sオプションで指定します。最後にアクセスした時間がいちばん古いキャッシュファイルを削除したあとに新しいキャッシュファイルを作成することで，キャッシュグループ内のキャッシュファイルの総容量の上限を超えないようにしています。

上記の図に示すキャッシュグループを定義する際のadbcachegrpオペランドの指定例を次に示します。

adbcachegrp -g cachegrpA -n DBAREA_A1,DBAREA_A2 -s 3000              ...1
adbcachegrp -g cachegrpB -n DBAREA_B1 -s 5000                        ...2
adbcachegrp -g cachegrpC -n DBAREA_C1,DBAREA_C2,DBAREA_C3 -s 1000    ...3
adbcachegrp -o -s 1000                                               ...4

［説明］

キャッシュグループA（キャッシュグループ名：cachegrpA）を定義します。キャッシュグループAには，データ用DBエリアA1～A2（DBエリア名：DBAREA_A1，DBAREA_A2）のデータを格納したキャッシュファイルだけが作成されます。キャッシュグループAに作成できるキャッシュファイルの総容量の上限は，-sオプションに指定した3,000ギガバイトになります。

キャッシュグループB（キャッシュグループ名：cachegrpB）を定義します。キャッシュグループBには，データ用DBエリアB1（DBエリア名：DBAREA_B1）のデータを格納したキャッシュファイルだけが作成されます。キャッシュグループBに作成できるキャッシュファイルの総容量の上限は，-sオプションに指定した5,000ギガバイトになります。

キャッシュグループC（キャッシュグループ名：cachegrpC）を定義します。キャッシュグループCには，データ用DBエリアC1～C3（DBエリア名：DBAREA_C1，DBAREA_C2，DBAREA_C3）のデータを格納したキャッシュファイルだけが作成されます。キャッシュグループCに作成できるキャッシュファイルの総容量の上限は，-sオプションに指定した1,000ギガバイトになります。

既定のキャッシュグループを定義します。上記の1.～3.に指定したデータ用DBエリア以外のデータ用DBエリアのデータを格納したキャッシュファイルが作成されます。既定のキャッシュグループに作成できるキャッシュファイルの総容量の上限は，-sオプションに指定した1,000ギガバイトになります。

重要

adbcachegrpオペランドを指定してキャッシュグループを定義する場合は，adb_sys_cld_cache_total_sizeオペランド（キャッシュファイルの総容量の上限を指定するオペランド）を指定できません。上記の説明のとおり，各キャッシュグループのキャッシュファイルの総容量の上限をadbcachegrpオペランドの-sオプションに指定します。

■キャッシュグループを定義するメリット

キャッシュファイルの作成や削除処理がキャッシュグループ単位で実行されるため，次のようなケースに該当する場合は，キャッシュグループを定義することを検討してください。

HADBを複数の業務で使用している場合

例えば，業務Aでアクセスするデータと業務Bでアクセスするデータが異なる場合，業務Aのあとに業務Bを行うと，業務Aのデータを格納したキャッシュファイルを削除し，業務Bのデータを格納しているBLOBからキャッシュファイルを作成することがあります。また，業務Bのあとに業務Aを再度行う場合，業務Bのデータを格納したキャッシュファイルを削除し，業務Aのデータを格納しているBLOBからキャッシュファイルを作成することがあります。このように，BLOBからキャッシュファイルを作成する回数が増えると性能に影響を及ぼすおそれがあります。

このような場合，業務Aでアクセスするデータを格納しているデータ用DBエリアをキャッシュグループＡに割り当て，業務Ｂでアクセスするデータを格納しているデータ用DBエリアをキャッシュグループＢに割り当てると，キャッシュファイルの作成および削除処理がキャッシュグループ単位で実行されるため，業務Aと業務Bはお互いに影響を受けなくなります。

B-treeインデクスやマスタ表などの小規模で頻繁に参照するデータと，大規模で参照頻度の低いデータがある場合

「大規模で参照頻度の低いデータ」を参照する場合，これらのデータを格納したキャッシュファイルが作成されます。それによって，「B-treeインデクスやマスタ表などの小規模で頻繁に参照するデータ」を格納したキャッシュファイルが削除されることがあります。キャッシュファイルが削除されたデータを再度参照する場合，BLOBにアクセスしてキャッシュファイルを作成する必要があります。このように，「B-treeインデクスやマスタ表などの小規模で頻繁に参照するデータ」をBLOBにアクセスしてキャッシュファイルを作成する回数が増えると，性能に影響を及ぼすおそれがあります。

このような場合，「B-treeインデクスやマスタ表などの小規模で頻繁に参照するデータ」を格納しているデータ用DBエリアをキャッシュグループＡに割り当て，「大規模で参照頻度の低いデータ」を格納しているデータ用DBエリアをキャッシュグループBに割り当てると，キャッシュファイルの作成および削除処理がキャッシュグループ単位で実行されるため，「B-treeインデクスやマスタ表などの小規模で頻繁に参照するデータ」を格納したキャッシュファイルが削除される頻度が減り，性能への影響を軽減できる可能性があります。

メモ

キャッシュグループは仮想的なグループであり，ファイルシステム上で区別する方法はありません。物理的には，キャッシュファイルの格納先ディレクトリ下に全キャッシュファイルが作成されます。

■既定のキャッシュグループ

adbcachegrpオペランドに-oオプションを指定して定義したキャッシュグループを既定のキャッシュグループといいます。既定のキャッシュグループは，必ず1つ定義する必要があります。

マスタディレクトリ用DBエリア，ディクショナリ用DBエリア，およびシステム表用DBエリアのデータを格納したキャッシュファイルは，既定のキャッシュグループに作成されます。既定のキャッシュグループ内にマスタディレクトリ用DBエリア専用の容量を1メガバイト割り当てます。そのため，既定のキャッシュグループに作成できるキャッシュファイルの総容量の上限は，adbcachegrpオペランドの-sオプションに指定した値から1メガバイト小さくなります。

メモ

adbcachegrpオペランドを指定しない場合も，HADBサーバの仕様として既定のキャッシュグループが1つだけ定義されます。ただし，adbcachegrpオペランドを指定しない場合は，HADBサーバを運用する際にキャッシュグループを意識する必要はありません。

■キャッシュグループとグローバルバッファの関係

キャッシュグループもグローバルバッファも割り当てるデータ用DBエリアを指定します。基本的には，キャッシュグループとグローバルバッファを1対1に対応させて，割り当てるデータ用DBエリアを同じにするか，または1つのキャッシュグループに複数のグローバルバッファを対応させて，キャッシュグループとグローバルバッファを階層構造にすることを推奨します。

（例1）キャッシュグループとグローバルバッファを1対1に対応させる場合

adbcachegrp -g CACHEGRP01 -n DBAREA01 -s 1000
adbbuff -g GBUF01 -n DBAREA01 -p 1024

キャッシュグループ（CACHEGRP01）とグローバルバッファ（GBUF01）を1対1に対応させています。同じデータ用DBエリア（DBAREA01）を割り当てています。

（例2）1つのキャッシュグループに複数のグローバルバッファを対応させる場合

adbcachegrp -g CACHEGRP01 -n DBAREA01,DBAREA02,DBAREA03 -s 1000
adbbuff -g GBUF01 -n DBAREA01 -p 1024
adbbuff -g GBUF02 -n DBAREA02,DBAREA03 -p 1024

キャッシュグループ（CACHEGRP01）とグローバルバッファ（GBUF01，GBUF02）を対応させています。グローバルバッファ（GBUF01，GBUF02）で割り当てているデータ用DBエリア（DBAREA01，DBAREA02，DBAREA03）を，キャッシュグループ（CACHEGRP01）でも割り当てています。

(e)　制限事項および留意事項

クラウドストレージ機能を使用する場合，次に示す制限事項と留意事項があります。

■制限事項

クラウドストレージ機能を使用する場合，次に示すことができません。

追加モードでのデータインポート（adbimportコマンド）

アーカイブマルチチャンク表の定義

テキストインデクスの定義

同義語検索

■留意事項

クラウドストレージ機能を使用した場合，クラウドストレージ機能を使用しない場合に比べて，SQL文やコマンドを実行して表のデータを操作する時間が掛かることがあります。

クラウドストレージ機能を使用した場合，SQL文やコマンドをキャンセルしたり，SQL文やコマンドにエラーが発生したりすると，ロールバック処理に時間が掛かることがあります。

データ用DBエリア数が増えるに従って，HADBサーバの開始，adbdbstatusコマンドの実行，およびチャンクの更新または削除などの各種の処理時間が長くなるおそれがあります。そのため，「5.6　データ用DBエリアの設計」を参照して，データ用DBエリアは必要な数だけ作成するようにしてください。

クラウドストレージ機能を使用する場合，データ用DBエリアのページサイズは32キロバイト固定になります。また，1セグメントの容量も32メガバイト固定になります。

■INSERT文，UPDATE文，およびDELETE文を実行する場合の留意事項

クラウドストレージ機能を使用する場合，次の点に留意してください。

INSERT文，UPDATE文，およびDELETE文をなるべく実行しない運用にしてください。

クラウドストレージ機能を使用する場合，これらのSQL文を実行する際にBLOB単位（1つのBLOBには，1セグメントのデータが格納されている）の操作が発生します。クラウドストレージ機能を使用しない場合にこれらのSQL文を実行する際は，ページ単位のI/Oの発生だけで済みますが，クラウドストレージ機能を使用する場合はさらにセグメント単位のI/Oと通信が発生します。そのため，INSERT文，UPDATE文，およびDELETE文の実行性能が低下することがあり，特に少量のデータを更新する運用には適していません。

INSERT文，UPDATE文，およびDELETE文の実行対象となる表は，B-treeインデクスおよびレンジインデクスの定義数をなるべく少なくしてください。

B-treeインデクスやレンジインデクスの定義数が多くなるほど，INSERT文，UPDATE文，およびDELETE文の実行性能が低下します。

INSERT文，UPDATE文，およびDELETE文の実行回数を少なくできない場合は，「(3)　マネージドディスクにDBエリアのデータを格納する場合（クラウドストレージ機能を使用しない場合）」で説明するクラウドストレージ機能を使用しないAzure環境でHADBサーバを使用することを検討してください。

(f)　HADBのマニュアルを読む際の留意事項

クラウドストレージ機能を使用する場合，DBエリア（作業表用DBエリアを除く）のDBエリアファイルは作成されません。代わりに，仮想DBエリアファイルが作成されます。それに伴い，HADBのマニュアルを読む際の留意事項を次に示します。

DBエリアファイルに関する留意事項

HADBのマニュアル中の「DBエリアファイル」を「仮想DBエリアファイル」に読み替えてください。

なお，作業表用DBエリアのDBエリアファイルは作成されるため，作業表用DBエリアのDBエリアファイルについては読み替えをする必要はありません。

読み替えの例を次に示します。

（例1）

データ用DBエリアまたはデータ用DBエリアのDBエリアファイルの数が上限値を超えています。

上記の場合，「データ用DBエリアまたはデータ用DBエリアの仮想DBエリアファイルの数が上限値を超えています。」と読み替えてください。

（例2）

dbarea_file_num：表を格納するデータ用DBエリアのDBエリアファイル数

上記の場合，「表を格納するデータ用DBエリアの仮想DBエリアファイル数」と読み替えてください。

メモ

メモリ所要量などの計算式の変数の説明で，例2のような読み替えがあります。

レギュラーファイル，ブロックスペシャルファイルに関する留意事項

DBエリア（作業表用DBエリアを除く）のDBエリアファイルは作成されないため，レギュラーファイルまたはブロックスペシャルファイルに関する説明は該当しません。作業表用DBエリア以外のDBエリアについては，「クラウドストレージ機能を使用している場合」の説明をお読みください。

作業表用DBエリアファイルは，レギュラーファイルまたはブロックスペシャルファイルのどちらかに割り当てるため，レギュラーファイルまたはブロックスペシャルファイルのどちらか該当する方の説明をお読みください。

読み方の例を次に示します。

（例1）

（例2）

(3)　マネージドディスクにDBエリアのデータを格納する場合（クラウドストレージ機能を使用しない場合）

AzureのマネージドディスクにDBエリアのデータを格納できます。この場合，クラウドストレージ機能を使用する必要はありません。

マネージドディスクにDBエリアのデータを格納する場合の例を次の図にしまします。

図2‒96　マネージドディスクにDBエリアのデータを格納する場合の例

［説明］

ブロックストレージであるマネージドディスクにDBエリアのデータを格納できます。

クラウドストレージ機能を使用しないため，HADBオプションのインストールは必要ありません。

2.22　Amazon S3互換オブジェクトストレージを使用する場合

クラウドストレージ機能を使用すると，Amazon S3互換オブジェクトストレージに次のDBエリアのデータを格納できます。

データ用DBエリア

マスタディレクトリ用DBエリア

ディクショナリ用DBエリア

システム表用DBエリア

また，クラウドストレージ機能のシステムディレクトリ対応オプションを有効にすると，システムディレクトリ（$DBDIR/ADBSYS）下にある次のファイルもAmazon S3互換オブジェクトストレージに格納できます。

システムログファイル

ステータスファイル

クラウドストレージ機能を使用してAmazon S3互換オブジェクトストレージにDBエリアなどのデータを格納する場合の例を次の図に示します。

図2‒97　クラウドストレージ機能を使用してAmazon S3互換オブジェクトストレージにDBエリアのデータを格納する場合の例

［説明］

Amazon S3互換オブジェクトストレージに，DBエリア（作業表用DBエリアを除く），システムログファイル，およびステータスファイルのデータを格納します。

作業表用DBエリアのデータは，性能面を考慮してAmazon S3互換オブジェクトストレージではなくブロックスペシャルファイルに格納します。作業表用DBエリアのデータは，Amazon S3互換オブジェクトストレージには格納されません。

メモ

クラウドストレージ機能を使用する場合，DBエリア（作業表用DBエリアを除く）のデータをレギュラーファイルまたはブロックスペシャルファイルに格納することはできません。

作業表用DBエリアについては，作業表用DBエリアファイルをレギュラーファイルまたはブロックスペシャルファイルのどちらかに割り当てる必要があります。

前提条件

Amazon S3互換オブジェクトストレージを使用する場合の前提条件を次に示します。

クラウドストレージ機能を使用すること。

AWS用のHADBオプションをインストールすること。

オンプレミス環境でHADBサーバを稼働すること。

マニュアルをお読みいただく際の留意事項

最初に「2.21.2　AWS環境でHADBサーバを使用する場合」の「(2)　Amazon S3にDBエリアのデータを格納する場合（クラウドストレージ機能を使用する場合）」をお読みいただき，クラウドストレージ機能の概要について理解してください。ただし，ここの説明は，AWS環境（クラウド環境）が前提となっています。クラウド環境の説明部分はオンプレミス環境に置き換えてお読みください。

Amazon S3互換オブジェクトストレージは，オンプレミス環境でクラウドストレージ機能を使用することが前提となります。そのため，オンプレミス環境でのシステムの設計，構築，運用方法を説明している個所をお読みください。また，クラウドストレージ機能についての説明は，「AWS環境でクラウドストレージ機能を使用する場合」の個所をお読みください。その際，AWS環境固有の説明については，オンプレミス環境に置き換えてお読みください。

マニュアルをお読みいただく際，次のことに注意してください。

「Amazon S3」は，「Amazon S3互換オブジェクトストレージ」に読み替えてください。

「インスタンス」は，「HADBサーバをインストールしたサーバマシン」に読み替えてください。

汎用バケットまたはディレクトリバケットの説明は該当しません。

キャッシュファイルは，HADBサーバによってオンプレミス環境下のレギュラーファイルとして作成されます。

2.23　HADBサーバのメモリ構成

ここでは，HADBサーバが使用するメモリの構成と，サーバ定義のオペランドとの関係について説明します。

2.23.1　HADBサーバが使用するメモリ

HADBサーバは，共有メモリとプロセスメモリを使用します。HADBサーバが使用する各メモリについて説明します。

■共有メモリ

共有メモリ内には，次に示すメモリが確保されます。

プロセス共通メモリ

プロセス共通メモリには，HADBサーバプロセスを起動，制御するために必要な情報が格納されます。

共有メモリ管理用のメモリ

共有メモリ管理用のメモリには，HADBサーバが使用する共有メモリの管理情報が格納されます。

グローバルバッファ用のメモリ

グローバルバッファ用のメモリには，次に示すバッファが格納されます。

・データベースの入出力処理で使用されるグローバルバッファ

・グローバル作業表の入出力処理で使用されるグローバル作業表用のグローバルバッファ

メモ

グローバル作業表とは，1つのSQL文を複数の処理リアルスレッドで処理する際に，作業表のデータを複数の処理リアルスレッド間で共有するために作成される作業表のことです。

リアルスレッド固有メモリ

リアルスレッド固有メモリには，SQL文またはコマンドを処理する処理リアルスレッドが必要とする情報が格納されます。1つの処理リアルスレッドに対して，1つのリアルスレッド固有メモリが確保されます。HADBサーバプロセス内では，複数の処理リアルスレッドが実行され，リアルスレッド固有メモリには，処理リアルスレッドごとに必要な情報が格納されます。

■プロセスメモリ

プロセスメモリ内には，ヒープメモリが確保されます。HADBサーバは，コマンドの実行時にヒープメモリを使用します。

HADBサーバのメモリ構成を次の図に示します。

図2‒98　HADBサーバのメモリ構成

［説明］

共有メモリ内には，複数のリアルスレッド固有メモリが確保されます。

1つのSQL文または1つのコマンドは，複数の処理リアルスレッドで処理されます。このとき，1つの処理リアルスレッドが，1つのリアルスレッド固有メモリを使用します。

SQL文およびコマンドの実行時に使用するリアルスレッド固有メモリ以外に，システムで使用するリアルスレッド固有メモリが確保されます。

リアルスレッド固有メモリ内に確保される領域とバッファについて説明します。

ハッシュグループ化領域

ハッシュグループ化領域には，ローカルハッシュグループ化で使用されるハッシュテーブルが格納されます。ローカルハッシュグループ化が適用されるSQL文を実行した場合，各リアルスレッド固有メモリにハッシュグループ化領域が確保されます。

ハッシュテーブル領域

ハッシュテーブル領域には，複数の処理リアルスレッド間で共有するハッシュテーブルが格納されます。次に示す処理が適用されるSQL文を実行した場合に，ハッシュテーブル領域が確保されます。

表の結合方式のハッシュジョイン

グループ化の処理方式のグローバルハッシュグループ化

副問合せの処理方式のハッシュ実行

SELECT DISTINCTの処理方式のハッシュ実行

集合演算の処理方式のハッシュ実行

ハッシュフィルタ領域

ハッシュフィルタ領域には，複数の処理リアルスレッド間で共有する，ハッシュ検索で使用するハッシュフィルタが格納されます。次に示す処理が適用されるSQL文を実行した場合に，ハッシュフィルタ領域が確保されます。

表の結合方式のハッシュジョイン

副問合せの処理方式のハッシュ実行

メモ

ハッシュフィルタについては，マニュアルHADB　AP開発ガイドの表の結合方式または副問合せの処理方式を参照してください。

ローカル作業表用バッファ

ローカル作業表用バッファとは，ローカル作業表の入出力処理で使用されるバッファのことです。ローカル作業表とは，処理リアルスレッドごとに作成される作業表のことです。ORDER BY句を指定した場合や，ローカルハッシュグループ化のグループ分けの場合に，ローカル作業表が作成されます。

メモ

次の処理については，マニュアルHADB　AP開発ガイドの該当個所を参照してください。

ローカルハッシュグループ化，グローバルハッシュグループ化：グループ化の処理方式

ハッシュジョイン：表の結合方式

副問合せの処理方式のハッシュ実行：副問合せの処理方式

SELECT DISTINCTの処理方式のハッシュ実行：SELECT DISTINCTの処理方式

集合演算の処理方式のハッシュ実行：集合演算の処理方式

2.23.2　サーバ定義のオペランドとの関係

HADBサーバが使用する各種メモリや領域のサイズを，サーバ定義のオペランドで指定します。ここでは，HADBサーバが使用するメモリとサーバ定義のオペランドの関係を説明します。

HADBサーバが使用するメモリの最大値をサーバ定義で指定する際，次に示すどちらかの方法があります。HADBでは，1の方法で指定することを推奨します。

HADBサーバが使用するメモリ所要量の最大値（共有メモリとプロセスメモリの合計値の上限）をadb_sys_memory_limitオペランドに指定する

プロセス共通メモリの最大値をadb_sys_proc_area_maxオペランドに指定し，リアルスレッド固有メモリの最大値をadb_sys_rthd_area_maxオペランドに指定する

上記のそれぞれの方法ごとに，HADBサーバが使用するメモリとサーバ定義のオペランドの関係を説明します。

(1)　1の方法の場合（adb_sys_memory_limitオペランドを指定する場合）

HADBサーバが使用するメモリとサーバ定義のオペランドの関係を次の図に示します。

図2‒99　HADBサーバが使用するメモリとサーバ定義のオペランドの関係（adb_sys_memory_limitオペランドを指定する場合）

注

上記の図のサーバ定義のオペランドの数値は例です。見積もった値を指定してください。

注※

マルチノード機能を使用する場合は，リアルスレッド固有メモリが次の計算式の分だけ確保されます。

ワーカーノードを使用しない場合

adb_sys_max_usersオペランドの値
＋セカンダリノード数×（adb_sys_max_parallel_exec_numオペランドの値×2＋2）
＋15

ワーカーノードを使用する場合

プライマリノードまたはセカンダリノードの場合

adb_sys_max_usersオペランドの値
＋（セカンダリノード数＋adb_sys_multi_max_worker_nodesオペランドの値）
×（adb_sys_max_parallel_exec_numオペランドの値×2＋2）
＋15

ワーカーノードの場合

adb_sys_max_usersオペランドの値
＋セカンダリノード数×（adb_sys_max_parallel_exec_numオペランドの値×2＋2）
＋adb_sys_multi_max_worker_nodesオペランドの値
×adb_sys_max_parallel_exec_numオペランドの値×2
＋17

クラウドストレージ機能を使用する場合は，マルチノード機能を使用するかどうかに関係なく，計算式（adb_sys_max_usersの値＋10）の結果に1を加算してください。

重要

HADBサーバが使用するメモリ所要量の最大値（共有メモリとプロセスメモリの合計値の上限）をサーバ定義のadb_sys_memory_limitオペランドに指定します。

上記の図中の各メモリや領域とサーバ定義の関係を次の表に示します。

表2‒28　HADBサーバの各メモリおよび各領域の説明（adb_sys_memory_limitオペランドを指定する場合）

メモリまたは領域の種類

関係するサーバ定義のオペランド

見積もり方法の記載個所

HADBサーバの稼働中にメモリの使用量を確認する方法

共有メモリ

プロセス共通メモリ

−

「6.3.1　共有メモリの所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方」

-aオプションを指定してadbls -d memコマンド※2を実行したときに出力されるPROCESS_USEの値で確認できます。

共有メモリ管理用のメモリ

−

「6.3.1　共有メモリの所要量の求め方」の「(1)　共有メモリ管理の所要量の求め方」

-aオプションを指定してadbls -d memコマンド※2を実行したときに出力されるOTHER_USEの値で確認できます。

グローバルバッファ用のメモリ

adbbuff

グローバルバッファのページ数などを指定するオペランドです。

adb_dbbuff_wrktbl_glb_blk_num

グローバル作業表用のグローバルバッファのページ数を指定するオペランドです。

「6.3.1　共有メモリの所要量の求め方」の「(2)　グローバルバッファページの所要量の求め方」

「6.25.1　グローバル作業表用のグローバルバッファのページ数の見積もり」

-aオプションを指定してadbls -d memコマンド※2を実行したときに出力されるGBUFFER_USEの値で確認できます。

リアルスレッド固有メモリ

−

adb_sys_rthd_num

SQL文およびコマンドの実行時に使用する処理リアルスレッドの最大数を指定するオペランドです。1つの処理リアルスレッドに対して，1つのリアルスレッド固有メモリが確保されます。

adb_sql_exe_max_rthd_num※1

1SQL文の実行時に使用する処理リアルスレッドの最大数を指定します。

「6.3.1　共有メモリの所要量の求め方」の「(4)　リアルスレッド固有メモリの所要量の求め方」

-aオプションを指定してadbls -d memコマンド※2を実行したときに出力されるTHREAD_USEの値で確認できます。

ハッシュグループ化領域

adb_sql_exe_hashgrp_area_size※1

1つ当たりのハッシュグループ化領域のサイズを指定するオペランドです。

「7.2.2　性能に関するオペランド（set形式）」のadb_sql_exe_hashgrp_area_sizeオペランド

ハッシュテーブル領域

adb_sql_exe_hashtbl_area_size※1

ハッシュテーブル領域のサイズを指定するオペランドです。

「7.2.2　性能に関するオペランド（set形式）」のadb_sql_exe_hashtbl_area_sizeオペランド

ハッシュフィルタ領域

adb_sql_exe_hashflt_area_size※1

ハッシュフィルタ領域のサイズを指定するオペランドです。

「7.2.2　性能に関するオペランド（set形式）」のadb_sql_exe_hashflt_area_sizeオペランド

ローカル作業表用バッファ

adb_dbbuff_wrktbl_clt_blk_num※1

ローカル作業表用バッファのページ数を指定するオペランドです。

「6.25.2　ローカル作業表用バッファのページ数の見積もり」

プロセスメモリ

ヒープメモリ

−

「6.3.2　プロセスメモリの所要量の求め方」

-aオプションを指定してadbls -d memコマンド※2を実行したときに出力されるHEAP_USEの値で確認できます。

（凡例）

−：該当なし

注※1

クライアント定義の同じオペランドで，サーバ定義で指定した値を変更できます。

注※2

-aオプションを指定して実行したadbls -d memコマンドの出力項目については，マニュアルHADB　コマンドリファレンスのadbls -d mem（メモリの使用状況の表示）を参照してください。

メモ

HADBサーバが使用するメモリ所要量の見積もり方法については，次の個所を参照してください。

「4.3　メモリ所要量の事前見積もり」

「6.3　HADBサーバのメモリ所要量の見積もり」

(2)　2の方法の場合（adb_sys_proc_area_maxおよびadb_sys_rthd_area_maxオペランドを指定する場合）

HADBサーバが使用するメモリとサーバ定義のオペランドの関係を次の図に示します。

図2‒100　HADBサーバが使用するメモリとサーバ定義のオペランドの関係（adb_sys_proc_area_maxおよびadb_sys_rthd_area_maxオペランドを指定する場合）

注

上記の図のサーバ定義のオペランドの数値は例です。見積もった値を指定してください。

注※

マルチノード機能を使用する場合は，リアルスレッド固有メモリが次の計算式の分だけ確保されます。

ワーカーノードを使用しない場合

adb_sys_max_usersオペランドの値
＋セカンダリノード数×（adb_sys_max_parallel_exec_numオペランドの値×2＋2）
＋15

ワーカーノードを使用する場合

プライマリノードまたはセカンダリノードの場合

adb_sys_max_usersオペランドの値
＋（セカンダリノード数＋adb_sys_multi_max_worker_nodesオペランドの値）
×（adb_sys_max_parallel_exec_numオペランドの値×2＋2）
＋15

ワーカーノードの場合

adb_sys_max_usersオペランドの値
＋セカンダリノード数×（adb_sys_max_parallel_exec_numオペランドの値×2＋2）
＋adb_sys_multi_max_worker_nodesオペランドの値
×adb_sys_max_parallel_exec_numオペランドの値×2
＋17

クラウドストレージ機能を使用する場合は，マルチノード機能を使用するかどうかに関係なく，計算式（adb_sys_max_usersの値＋10）の結果に1を加算してください。

上記の図中の各メモリや領域とサーバ定義の関係を次の表に示します。

表2‒29　HADBサーバの各メモリおよび各領域の説明（adb_sys_proc_area_maxおよびadb_sys_rthd_area_maxオペランドを指定する場合）

メモリまたは領域の種類

関係するサーバ定義のオペランド

見積もり方法の記載個所

HADBサーバの稼働中にメモリの使用量を確認する方法

共有メモリ

プロセス共通メモリ※1

adb_sys_proc_area_max

プロセス共通メモリの最大値を指定するオペランドです。

「6.3.1　共有メモリの所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方」

-aオプションを指定してadbls -d memコマンド※3を実行したときに出力されるPROCESS_USEの値で確認できます。

共有メモリ管理用のメモリ

−

「6.3.1　共有メモリの所要量の求め方」の「(1)　共有メモリ管理の所要量の求め方」

-aオプションを指定してadbls -d memコマンド※3を実行したときに出力されるOTHER_USEの値で確認できます。

グローバルバッファ用のメモリ

adbbuff

グローバルバッファのページ数などを指定するオペランドです。

adb_dbbuff_wrktbl_glb_blk_num

グローバル作業表用のグローバルバッファのページ数を指定するオペランドです。

「6.3.1　共有メモリの所要量の求め方」の「(2)　グローバルバッファページの所要量の求め方」

「6.25.1　グローバル作業表用のグローバルバッファのページ数の見積もり」

-aオプションを指定してadbls -d memコマンド※3を実行したときに出力されるGBUFFER_USEの値で確認できます。

リアルスレッド固有メモリ※1

−

adb_sys_rthd_area_max

1つ当たりのリアルスレッド固有メモリの最大値を指定するオペランドです。

adb_sys_rthd_num

SQL文およびコマンドの実行時に使用する処理リアルスレッドの最大数を指定するオペランドです。1つの処理リアルスレッドに対して，1つのリアルスレッド固有メモリが確保されます。

adb_sql_exe_max_rthd_num※2

1SQL文の実行時に使用する処理リアルスレッドの最大数を指定します。

「6.3.1　共有メモリの所要量の求め方」の「(4)　リアルスレッド固有メモリの所要量の求め方」

-aオプションを指定してadbls -d memコマンド※3を実行したときに出力されるTHREAD_USEの値で確認できます。

ハッシュグループ化領域

adb_sql_exe_hashgrp_area_size※2

1つ当たりのハッシュグループ化領域のサイズを指定するオペランドです。

「7.2.2　性能に関するオペランド（set形式）」のadb_sql_exe_hashgrp_area_sizeオペランド

ハッシュテーブル領域

adb_sql_exe_hashtbl_area_size※2

ハッシュテーブル領域のサイズを指定するオペランドです。

「7.2.2　性能に関するオペランド（set形式）」のadb_sql_exe_hashtbl_area_sizeオペランド

ハッシュフィルタ領域

adb_sql_exe_hashflt_area_size※2

ハッシュフィルタ領域のサイズを指定するオペランドです。

「7.2.2　性能に関するオペランド（set形式）」のadb_sql_exe_hashflt_area_sizeオペランド

ローカル作業表用バッファ

adb_dbbuff_wrktbl_clt_blk_num※2

ローカル作業表用バッファのページ数を指定するオペランドです。

「6.25.2　ローカル作業表用バッファのページ数の見積もり」

プロセスメモリ

ヒープメモリ

−

「6.3.2　プロセスメモリの所要量の求め方」

-aオプションを指定してadbls -d memコマンド※3を実行したときに出力されるHEAP_USEの値で確認できます。

（凡例）

−：該当なし

注※1

「(1)　1の方法の場合（adb_sys_memory_limitオペランドを指定する場合）」と差異がある個所です。

HADBサーバが使用するメモリ所要量の最大値を指定するadb_sys_memory_limitオペランドを指定しない場合，プロセス共通メモリの最大値（adb_sys_proc_area_maxオペランド）と，1つ当たりのリアルスレッド固有メモリの最大値（adb_sys_rthd_area_maxオペランド）を指定する必要があります。

注※2

クライアント定義の同じオペランドで，サーバ定義で指定した値を変更できます。

注※3

-aオプションを指定して実行したadbls -d memコマンドの出力項目については，マニュアルHADB　コマンドリファレンスのadbls -d mem（メモリの使用状況の表示）を参照してください。

メモ

HADBサーバが使用するメモリ所要量の見積もり方法については，次の個所を参照してください。

「4.3　メモリ所要量の事前見積もり」

「6.3　HADBサーバのメモリ所要量の見積もり」

第2編　体験編

3　体験環境構築ナビ

この章では，HADBの導入・操作を体験するために使用する，体験環境の構築手順について説明します。

HADBサーバの構築イメージを把握するために，この章を読みながら実機で構築することを推奨します。作業時間の目安は1時間〜2時間です。

なお，この章で説明する作業手順および指定値は，あくまで体験環境を構築するためのものです。実際の業務で使用する環境を構築するためのものではありません。実際の業務で使用する環境を構築する場合は，このマニュアルの第3編　設計編を参照して必要な値を見積もった上で，第4編　構築編を参照して，環境を構築してください。

3.1　体験環境を構築する流れ

HADBサーバの体験環境を構築する流れを次の図に示します。体験環境を構築する手順の詳細については，次節以降で説明します。

図3‒1　HADBサーバの体験環境を構築する流れ

3.1.1　構築するHADBサーバのシステム構成

HADBサーバの体験環境を構築するマシン環境は，次に示す環境を前提としています。

搭載しているメモリサイズ：8ギガバイト

ディスクの空き容量：2ギガバイト以上

OSのバージョン

次に示すどれかのOSが，サーバマシンにインストールされている必要があります。

RHEL 8

8.1以降のバージョンで動作します。

RHEL 9

9.1以降のバージョンで動作します。

RHEL 10

10.0以降のバージョンで動作します。

OSには，HADBサーバが正しく動作するための前提パッケージがインストールされている必要があります。前提パッケージについては，「8.2.1　HADBサーバのインストール前に実施する作業」の「(1)　前提パッケージの確認」を参照してください。

体験環境で構築するHADBサーバのシステム構成を次の図に示します。

図3‒2　構築するHADBサーバのシステム構成

(1)　インストールデータを格納するディレクトリ

CD-ROMファイルシステムに格納されているHADBサーバのインストールデータのコピー先となるディレクトリです。インストールデータを格納するディレクトリには，次のインストールデータを格納します。

HADBサーバのインストールコマンド（adbinstallコマンド）

HADBサーバのプログラムの圧縮ファイル（hitachi_advanced_database_server-$VER.tar.gzファイル）

注

$VERは，HADBのバージョンおよびリリース番号を示します。

(2)　サーバディレクトリ

サーバディレクトリとは，HADBサーバを運用するために必要な定義ファイルや各種コマンドなどが格納されるディレクトリです。

HADBサーバのインストール時にインストールコマンド（adbinstallコマンド）で，サーバディレクトリとして使用するディレクトリ（/home/adbmanager/server）を指定します。サーバディレクトリ下には，HADBサーバのプログラムの圧縮ファイル（hitachi_advanced_database_server-$VER.tar.gzファイル）が展開され，ディレクトリおよびファイルが格納されます。

体験環境を構築するときに使用するファイルを次の表に示します。

表3‒1　体験環境で使用するサーバディレクトリ内のファイルの一覧

項番

ファイル名

説明

1

サーバ定義ファイル

HADBサーバを稼働するために必要な定義が設定されているファイルです。

2

クライアント定義ファイル

APやコマンドを実行するために必要な定義が設定されているファイルです。

3

初期設定オプションファイル

DBエリアを作成するために必要なオプションが設定されているファイルです。

4

サンプルデータファイル

体験環境の表に格納するデータが入力されているテキストファイルです。

5

インポートオプションファイル

表にデータを格納するために必要なオプションが設定されているファイルです。

(3)　DBディレクトリ

DBディレクトリとは，データベースの初期設定をしてDBエリアを作成する際，DBエリアを格納するディレクトリです。データベースの初期設定をする前に，ユーザがDBディレクトリ（/home/adbmanager/db）を作成します。

データベースの初期設定をすると，5つのDBエリアが作成されます。作成されるDBエリアを次の表に示します。ユーザが明示的に作成するDBエリアはデータ用DBエリアだけです。それ以外のDBエリアは自動的に作成されます。

表3‒2　作成されるDBエリアの一覧

項番

DBエリア名

説明

1

データ用DBエリア

表やインデクスを格納するDBエリアです。

2

作業表用DBエリア

SQL文の実行時にHADBが作成する作業表を格納するDBエリアです。

3

マスタディレクトリ用DBエリア

システムの内部情報を格納するDBエリアです。

4

ディクショナリ用DBエリア

ディクショナリ表，およびディクショナリ表のB-treeインデクスを格納するDBエリアです。

5

システム表用DBエリア

システム表，およびシステム表のB-treeインデクスを格納するDBエリアです。

(4)　通信情報ファイルを格納するディレクトリ

通信情報ファイルを格納するディレクトリとは，HADBサーバを運用するために必要な通信情報ファイルが格納されるディレクトリです。HADBサーバをインストールする前に，ユーザが手動で，次に示す通信情報ファイルを格納するディレクトリを作成します。

/dev/HADB/pth

また，次に示す設定ファイルを作成する必要があります。

/etc/tmpfiles.d/dev-HADB-pth.conf

3.1.2　体験環境の表に格納するデータ

体験環境の構築で表に格納するデータは，HADBサーバが提供するデータ（サンプルデータ）になります。サンプルデータの内容は，米国50州の州番号，州名，郵便番号，州議事堂の住所，および面積になります。表に格納するサンプルデータのイメージを次の図に示します。

図3‒3　体験環境の表に格納するサンプルデータ

3.2　HADBサーバをインストールする

ここでは，HADBサーバをインストールするために行う作業について説明します。

3.2.1　インストール前に準備すること

HADBサーバをインストールする前に，HADBを管理するOSユーザ（HADB管理者）とHADB管理者が所属するグループ（HADB管理グループ）をOSに設定します。

また，HADBサーバを動作させるために必要な通信情報ファイルを格納するディレクトリを作成します。

(1)　HADB管理者とHADB管理グループを設定する

HADB管理者とHADB管理グループには，任意の名称を設定できます。ここでは，次の名称で設定します。

HADB管理者：adbmanager

HADB管理グループ：adbgroup

スーパユーザでOSにログインします。

ログインしたら，コマンドを入力する「端末」を開いてください。

HADB管理グループ（adbgroup）をOSに設定します。

次に示すOSのコマンドを入力して，［Enter］キーを押してください。

groupadd adbgroup

HADB管理者（adbmanager）をOSに設定します。

次に示すOSのコマンドを入力して，［Enter］キーを押してください。

-gオプションには，手順2.で設定したHADB管理グループ（adbgroup）を指定してください。

useradd -g adbgroup adbmanager

HADB管理者のパスワードをOSに設定します。

次に示すOSのコマンドを入力して，［Enter］キーを押してください。

passwd adbmanager

passwdコマンドを実行すると，adbmanagerの新しいパスワードを2回入力するよう求められます。任意のパスワードを設定してください。

(2)　設定したHADB管理者とHADB管理グループを確認する

OSに設定したHADB管理者とHADB管理グループが，正しく設定されたかどうかを確認します。

スーパユーザで次に示すOSのコマンドを入力して，［Enter］キーを押してください。

id adbmanager

idコマンドを実行すると，adbmanagerに対して設定した内容が確認できます。実行結果の例を次に示します。

■実行結果の例

uid=501(adbmanager) gid=501(adbgroup) 所属グループ=501(adbgroup)

uidにadbmanager，gidおよび所属グループにadbgroupが設定されていれば，設定完了です。

メモ

HADB管理者をHADB管理グループに所属するOSユーザとしてOSに設定することで，HADB管理者はHADBサーバの各種ファイルおよびディレクトリの所有者になります。これによって，ほかのOSユーザからの書き込みを禁止でき，セキュリティを強化できます。また，HADB管理者には，HADBのすべてのコマンドを実行する権限があります。

(3)　通信情報ファイルを格納するディレクトリを作成する

通信情報ファイルを格納するために，次に示すディレクトリおよびファイルを作成します。

/dev/HADB/pth

ディレクトリに付与する権限は，777です。

/etc/tmpfiles.d/dev-HADB-pth.conf

設定ファイルに付与する権限は，644（デフォルト）です。デフォルトの権限であるため，特に指定は不要です。

/dev/HADB/pthディレクトリを作成します。

スーパユーザで次に示すOSのコマンドを入力して，［Enter］キーを押してください。

mkdir -p -v -m 777 /dev/HADB/pth

設定ファイル（dev-HADB-pth.conf）を作成します。

スーパユーザで次に示すOSのコマンドを入力して，［Enter］キーを押してください。設定ファイルが新規に作成されます。

vi /etc/tmpfiles.d/dev-HADB-pth.conf

設定ファイルを編集します。

［I］キーを押して，編集モードに移行させてください。編集モードに移行させたら，次に示す内容を入力してください。

# Type Path Mode UID  GID  Age Argument
d /dev/HADB/pth 0777 root root - -

設定ファイルの編集を終了します。

入力が完了したら，［Esc］キーを押してコマンドモードに移行させてください。コマンドモードに移行させたら，次に示すコマンドを入力して，［Enter］キーを押してください。

:wq

編集モードで設定した内容が保存されます。この手順が完了すると，設定ファイルの作成が完了します。

(4)　作成した通信情報ファイルを格納するディレクトリを確認する

通信情報ファイルを格納するディレクトリおよび設定ファイルが，正しく作成されたかどうかを，次の手順で確認します。

作成した/dev/HADB/pthディレクトリを確認します。

スーパユーザで次に示すOSのコマンドを入力して，［Enter］キーを押してください。

ls -d -l /dev/HADB/pth

lsコマンドを実行すると，/dev/HADB/pthディレクトリが作成されているかどうか，権限が付与されているかどうかが確認できます。実行結果の例を次に示します。

■実行結果の例

drwxrwxrwx 2 root root 40  8月 13 19:28 2013 /dev/HADB/pth

先頭にdrwxrwxrwx，末尾に/dev/HADB/pthが表示されていることを確認してください。

作成した設定ファイル（dev-HADB-pth.conf）を確認します。

スーパユーザで次に示すOSのコマンドを入力して，［Enter］キーを押してください。

ls -l /etc/tmpfiles.d/dev-HADB-pth.conf

lsコマンドを実行すると，/etc/tmpfiles.d/dev-HADB-pth.confファイルが作成されているか，デフォルトの権限が付与されているかどうかが確認できます。実行結果の例を次に示します。

■実行結果の例

-rw-r--r-- 2 root root 40  8月 13 19:29 2013 /etc/tmpfiles.d/dev-HADB-pth.conf

先頭に-rw-r--r--，末尾に/etc/tmpfiles.d/dev-HADB-pth.confが表示されていることを確認してください。

(5)　関連項目

「8.2.1　HADBサーバのインストール前に実施する作業」

3.2.2　インストールする

HADB管理者とHADB管理グループをOSに設定し，通信情報ファイルを格納するディレクトリを作成したら，HADBサーバをインストールします。

HADBサーバをインストールする場合，HADB管理者（adbmanager）で実行します。スーパユーザでログインしている場合は，いったんログアウトして，HADB管理者（adbmanager）でログインし直してください。

(1)　インストールデータを格納するディレクトリを作成する

HADBサーバのインストールデータを格納するディレクトリを作成します。作成するディレクトリのパス名を次に示します。

インストールデータを格納するディレクトリの絶対パス：/home/adbmanager/install

HADB管理者（adbmanager）で次に示すOSのコマンドを入力して，［Enter］キーを押してください。

mkdir /home/adbmanager/install

(2)　作成したインストールデータを格納するディレクトリを確認する

mkdirコマンドでインストールデータを格納するディレクトリが作成されているかどうかを確認するため，次に示すOSのコマンドを入力して，［Enter］キーを押してください。

ls -d /home/adbmanager/install

lsコマンドを実行すると，インストールデータを格納するディレクトリが正しく作成されたかどうかを確認できます。実行結果の例を次に示します。

■実行結果の例

/home/adbmanager/install

上記のディレクトリが表示されていれば，インストールデータを格納するディレクトリは作成されています。

(3)　インストールデータを格納するディレクトリに書き込み権限を付与する

/home/adbmanager/installディレクトリ下に，HADB管理者がインストールデータを格納できるように，書き込み権限を付与してください。次に示すOSのコマンドを入力して，［Enter］キーを押してください。

chmod 755 /home/adbmanager/install

これで，インストールデータを格納するディレクトリに書き込み権限が付与されました。

(4)　CD-ROMファイルシステムをマウントする

HADBサーバのインストールコマンド（adbinstallコマンド），およびHADBサーバのプログラムの圧縮ファイル（tar.gzファイル）が格納されたCD-ROMファイルシステムを自動マウントしてください。

CD-ROMファイルシステムが自動マウントされない場合，CD-ROMファイルシステムをマウントする必要があります。次に示すコマンドを入力して，［Enter］キーを押してください。

mount /dev/cdrom /media

下線部分は，CD-ROMファイルシステムのマウントディレクトリ名です。環境によって異なります。

重要

CD-ROMのディレクトリ名やファイル名は，ご使用のサーバマシンによっては，ここの説明内容と表示が異なることがあります。OSのlsコマンドを実行して，表示されたディレクトリ名をそのまま入力してください。

(5)　インストールコマンド（adbinstallコマンド）をコピーする

マウントしたCD-ROMファイルシステムに格納されているHADBサーバのインストールコマンド（adbinstallコマンド）を，/home/adbmanager/installディレクトリ下にコピーしてください。

次に示すOSのコマンドを入力して，［Enter］キーを押してください。

cp /media/adbinstall /home/adbmanager/install

下線部分は，CD-ROMファイルシステムのマウントディレクトリ名です。環境によって異なります。

(6)　HADBサーバのプログラムの圧縮ファイル（tar.gzファイル）をコピーする

マウントしたCD-ROMファイルシステムに格納されているHADBサーバのHADBサーバのプログラムの圧縮ファイル（tar.gzファイル）を，/home/adbmanager/installディレクトリ下にコピーしてください。

次に示すOSのコマンドを入力して，［Enter］キーを押してください。

cp /media/hitachi_advanced_database_server-$VER.tar.gz /home/adbmanager/install

下線部分は，CD-ROMファイルシステムのマウントディレクトリ名です。環境によって異なります。

$VERは，HADBのバージョンおよびリリース番号を示します。

(7)　コピーしたインストールデータを確認する

adbinstallコマンドおよびtar.gzファイルを/home/adbmanager/installディレクトリ下にコピーできたことを確認します。次に示すOSのコマンドを入力して，［Enter］キーを押してください。

ls /home/adbmanager/install

lsコマンドを実行すると，adbinstallコマンドおよびtar.gzファイルを/home/adbmanager/installディレクトリ下にコピーできているかどうかを確認できます。実行結果の例を次に示します。

■実行結果の例

adbinstall hitachi_advanced_database_server-$VER.tar.gz

$VERは，HADBのバージョンおよびリリース番号を示します。

(8)　コピーしたインストールデータの完全性を確認する

adbinstallコマンドおよびtar.gzファイルが正しくコピーできたこと（破損していないこと）を，OSのsha256sumコマンドで確認します。次に示すOSのコマンドを入力して，［Enter］キーを押してください。

cd /home/adbmanager/install
sha256sum -c /media/adbhashfile_server_sha256.txt

下線部分は，CD-ROMファイルシステムのマウントディレクトリ名です。環境によって異なります。

実行結果の例を次に示します。

■実行結果の例

hitachi_advanced_database_server-$VER.tar.gz: 完了                     ...1
adbinstall: 完了                                                       ...1
sha256sum: !8A9_HADB: そのようなファイルやディレクトリはありません     ...2
!8A9_HADB: オープンまたは読み込みに失敗しました                        ...2
sha256sum: 警告: 一覧にある1個のファイルが読み込めませんでした         ...2

$VERは，HADBのバージョンおよびリリース番号を示します。

［説明］

チェック結果に「完了」が表示されている場合は，正しくコピーされています。

このエラーは無視してください。

体験環境構築ナビでは，意図的に!8A9_HADBファイルを/home/adbmanager/installディレクトリ下にコピーさせていません。そのため，このエラーメッセージが出力されても問題ありません。

(9)　権限を付与する

/home/adbmanager/installディレクトリ下にコピーしたHADBサーバのインストールコマンド（adbinstallコマンド）に対して，HADB管理者が実行できるように，実行権限を付与してください。

また，HADBサーバのプログラムの圧縮ファイル（tar.gzファイル）に対して，読み取り権限を付与してください。

次に示すOSのコマンドを入力して，［Enter］キーを押してください。

chmod 500 /home/adbmanager/install/adbinstall
chmod 400 /home/adbmanager/install/hitachi_advanced_database_server-$VER.tar.gz

$VERは，HADBのバージョンおよびリリース番号を示します。

これで，インストールコマンド（adbinstallコマンド）に対する実行権限が付与され，HADBサーバのプログラムの圧縮ファイル（tar.gzファイル）に対する読み取り権限が付与されました。

(10)　HADBサーバをインストールする

実行権限を付与したHADBサーバのインストールコマンド（adbinstallコマンド）を実行して，HADBサーバをインストールしてください。

次に示すHADBのコマンドを入力して，［Enter］キーを押してください。

/home/adbmanager/install/adbinstall -s /home/adbmanager/server

-s /home/adbmanager/server

adbinstallコマンドでHADBサーバをインストールする際，サーバディレクトリとして使用するディレクトリを，-sオプションに指定します。ここでは，/home/adbmanager/serverディレクトリを指定してください。

adbinstallコマンドを実行すると，HADBサーバのプログラムの圧縮ファイル（tar.gzファイル）が展開されて，/home/adbmanager/serverディレクトリ下にHADBサーバを構成するディレクトリとファイルが格納されます。

重要

HADB管理者（adbmanager）ではなく，スーパユーザ（root）でadbinstallコマンドを実行した場合は，KFAA91558-Wメッセージが出力されます。この場合は，KFAA91558-Wメッセージが出力されたあとに出力されるKFAA91559-Qメッセージの入力要求に対して，n（またはN）を入力してください。そのあとで，いったんログアウトして，HADB管理者（adbmanager）でログインし直してください。そして，HADB管理者（adbmanager）でadbinstallコマンドを実行してください。

(11)　HADBサーバがインストールされたことを確認する

HADBサーバが正しくインストールされたかどうかを確認します。

次に示すOSのコマンドを入力して，［Enter］キーを押してください。

cat /home/adbmanager/server/adbinstsv.log

catコマンドを実行して，HADBサーバのインストール実行結果ログファイル（adbinstsv.log）の内容を表示します。実行結果の例を次に示します。

■実行結果の例

P-aaaa-bbbb Hitachi Advanced Database 06-00-/B (20250722153540)

P-aaaa-bbbbには，HADBサーバのPP形名情報が出力されます。

1つ目の下線部分には，HADBサーバのバージョン情報が出力されます。

2つ目の下線部分には，HADBサーバをインストールした日付と時刻（上記の例では2025年7月22日15時35分40秒）が出力されます。

上記の情報が表示された場合は，HADBサーバは正しくインストールされています。

また，サーバディレクトリ下のディレクトリおよびファイル構成が正しいことを確認します。

次に示すOSのコマンドを入力して，［Enter］キーを押してください。

ls /home/adbmanager/server

実行結果の例を次に示します。

■実行結果の例

adbinstsv.log  bin  client  conf  include  lib  sample  spool

上記のディレクトリおよびファイルが表示された場合は，サーバディレクトリ下の構成が正しい状態になっています。

(12)　関連項目

「8.2.2　HADBサーバのインストール手順」

3.3　カーネルパラメタを設定する

ここでは，HADBサーバを構築するために必要なカーネルパラメタ（Linuxのオペレーティングシステムパラメタ）を設定する手順について説明します。

3.3.1　カーネルパラメタの設定および確認をする

次に示すファイルに対して，カーネルパラメタを設定します。

sysctl.confファイル

limits.confファイル

カーネルパラメタの設定はスーパユーザで行います。HADB管理者（adbmanager）でログインしている場合は，いったんログアウトして，スーパユーザでログインし直してください。

メモ

ここではviコマンドを使用して，各ファイルにカーネルパラメタを設定する方法について説明します。なお，テキストエディタで各ファイルを開いて編集することもできます。

(1)　sysctl.confファイルにカーネルパラメタを設定する

カーネルパラメタをsysctl.confファイルに設定します。sysctl.confファイルの格納先を次に示します。

sysctl.confファイル：/etc/sysctl.conf

sysctl.confファイルを開きます。

スーパユーザで次に示すOSのコマンドを入力して，［Enter］キーを押してください。viコマンドを実行することで，sysctl.confファイルを編集できるようになります。

vi /etc/sysctl.conf

カーネルパラメタを設定します。

［I］キーを押して，編集モードに移行させてください。編集モードに移行させたら，カーソルキーを押して，カーネルパラメタを入力する位置にカーソルを移動させてください。カーソルを移動させたら，次に示すカーネルパラメタを入力します。

net.core.rmem_default = 33554432
net.core.rmem_max = 33554432
net.core.wmem_default = 33554432
net.core.wmem_max = 33554432
fs.aio-max-nr = 65536

メモ

sysctl.confファイルに，すでに上記のカーネルパラメタが指定されている場合は，元に戻せるようにするため，変更前の指定値をコメントとして残しておいてください。行の先頭に「#」を入力すると，その行はコメントとして扱われます。

例

「#net.core.rmem_default = 10000」はコメントとして扱われ，指定値は無視されます。

#net.core.rmem_default = 10000

net.core.rmem_default = 33554432

入力するカーネルパラメタの詳細を次の表に示します。

表3‒3　sysctl.confファイルに指定するカーネルパラメタの一覧

項番

カーネルパラメタ

説明

1

net.core.rmem_default

受信用ウィンドウサイズのデフォルト値を指定します。33,554,432を指定してください。

2

net.core.rmem_max

受信用ウィンドウサイズの上限値を指定します。33,554,432を指定してください。

3

net.core.wmem_default

送信用ウィンドウサイズのデフォルト値を指定します。33,554,432を指定してください。

4

net.core.wmem_max

送信用ウィンドウサイズの上限値を指定します。33,554,432を指定してください。

5

fs.aio-max-nr

65,536を指定してください。

カーネルパラメタの設定を終了します。

編集モードで必要なカーネルパラメタを入力したら，［Esc］キーを押してコマンドモードに移行させてください。コマンドモードに移行させたら，次に示すコマンドを入力して，［Enter］キーを押してください。

:wq

編集モードで設定した内容が保存されます。これで，sysctl.confファイルにカーネルパラメタが設定されます。

(2)　sysctl.confファイルに設定したカーネルパラメタを確認する

カーネルパラメタがsysctl.confファイルに設定されているかどうかを確認するため，次に示すコマンドを入力して，［Enter］キーを押してください。sysctl.confファイルに設定したカーネルパラメタを確認できます。

sysctl -p

sysctl -pコマンドを実行することで，sysctl.confファイルに設定されているカーネルパラメタの一覧が表示されます。表示されるカーネルパラメタの一覧は情報量が多いため，抜粋したものを実行結果の例として次に示します。

■実行結果の例

          :
net.core.rmem_default = 33554432
net.core.rmem_max = 33554432
net.core.wmem_default = 33554432
net.core.wmem_max = 33554432
fs.aio-max-nr = 65536
          :

(3)　limits.confファイルにカーネルパラメタを設定する

カーネルパラメタをlimits.confファイルに設定します。limits.confファイルの格納先を次に示します。

limits.confファイル：/etc/security/limits.conf

limits.confファイルを開きます。

次に示すOSのコマンドを入力して，［Enter］キーを押してください。viコマンドを実行することで，limits.confファイルを編集できるようになります。

vi /etc/security/limits.conf

カーネルパラメタを設定します。

［I］キーを押して，編集モードに移行させてください。編集モードに移行させたら，カーソルキーを押して，カーネルパラメタを入力する位置にカーソルを移動させてください。カーソルを移動させたら，次に示すカーネルパラメタを入力します。

adbmanager   soft   nofile    6400
adbmanager   hard   nofile    6400
adbmanager   soft   memlock   unlimited
adbmanager   hard   memlock   unlimited

メモ

limits.confファイルに，すでに上記のカーネルパラメタが指定されている場合は，元に戻せるようにするため，変更前の指定値をコメントとして残しておいてください。行の先頭に「#」を入力すると，その行はコメントとして扱われます。

例

#adbmanager soft nofile 1000

adbmanager soft nofile 6400

入力するカーネルパラメタの詳細を次の表に示します。

表3‒4　limits.confファイルに指定するカーネルパラメタの一覧

項番

カーネルパラメタ

説明

1

soft nofile

openできるファイルディスクリプタ数を指定します。HADB管理者（adbmanager）に対して，soft nofileを指定してください。soft nofileには，6400を指定してください。

2

hard nofile

openできるファイルディスクリプタ数を指定します。HADB管理者（adbmanager）に対して，hard nofileを指定してください。hard nofileには，6400を指定してください。

3

soft memlock

共有メモリのメモリロックの上限値を指定します。HADB管理者（adbmanager）に対して，soft memlockを指定してください。soft memlockには，unlimitedを指定してください。

4

hard memlock

共有メモリのメモリロックの上限値を指定します。HADB管理者（adbmanager）に対して，hard memlockを指定してください。hard memlockには，unlimitedを指定してください。

重要

soft nofileおよびhard nofileに指定する6400は，体験環境を構築するための値です。体験環境ではなく，実際の業務で使用する環境を構築する場合は，「6.2　カーネルパラメタの見積もり」を参照して，必要な値を見積もった上で指定してください。

また，実際の業務で使用する環境を構築する場合，この章でsysctl.confファイルおよびlimits.confファイルに設定したカーネルパラメタ以外にも，指定が必要なものがあります。

カーネルパラメタの設定を終了します。

編集モードで必要なカーネルパラメタを入力したら，［Esc］キーを押してコマンドモードに移行させてください。コマンドモードに移行させたら，次に示すコマンドを入力して，［Enter］キーを押してください。

:wq

編集モードで設定した内容が保存されます。これで，limits.confファイルにカーネルパラメタが設定されます。

(4)　limits.confファイルに設定したカーネルパラメタを確認する

カーネルパラメタがlimits.confファイルに設定されているかどうかを確認するため，次に示すOSのコマンドを入力して，［Enter］キーを押してください。スーパユーザからHADB管理者（adbmanager）に切り替えることで，limits.confファイルに設定したカーネルパラメタを確認できます。

su adbmanager

一時的に，HADB管理者（adbmanager）に切り替わります。続いて，次に示すOSのコマンドを入力して，［Enter］キーを押してください。

ulimit -a

ulimit -aコマンドを実行することで，HADB管理者（adbmanager）に設定したカーネルパラメタの一覧が表示されます。表示されるカーネルパラメタの一覧は情報量が多いため，抜粋したものを実行結果の例として次に示します。

■実行結果の例

            :
max locked memory      (kbytes, -l) unlimited
open files                     (-n) 6400
            :

実行結果の例の内容を確認したら，HADB管理者（adbmanager）からスーパユーザに切り替えます。次に示すOSのコマンドを入力して，［Enter］キーを押してください。

exit

(5)　設定したカーネルパラメタを有効にする

sysctl.confファイル，およびlimits.confファイルに設定したカーネルパラメタを有効にするために，OSを再起動します。次に示すOSのコマンドを入力して，［Enter］キーを押してください。

reboot

(6)　関連項目

「6.2　カーネルパラメタの見積もり」

3.4　DBディレクトリを作成する

ここでは，DBエリアを格納するDBディレクトリを作成する手順について説明します。

3.4.1　DBディレクトリの作成および確認をする

ここでは，DBエリアを格納するDBディレクトリを作成します。DBエリアとは，表を格納する論理的な領域のことです。DBエリアはデータベースを初期設定するときに作成され，DBディレクトリに格納されます。DBエリアは「3.6　DBエリアを作成する（データベースの初期設定をする）」で作成します。

作成するDBディレクトリの名称は任意です。ここでは，次に示すディレクトリに作成します。

DBディレクトリの絶対パス：/home/adbmanager/db

DBディレクトリの作成はHADB管理者（adbmanager）で行います。スーパユーザでログインしている場合は，いったんログアウトして，HADB管理者（adbmanager）でログインし直してください。

(1)　DBディレクトリの作成コマンドを実行する

HADB管理者（adbmanager）で次に示すOSのコマンドを入力して，［Enter］キーを押してください。

mkdir /home/adbmanager/db

(2)　作成したDBディレクトリを確認する

mkdirコマンドでDBディレクトリが作成されているかどうかを確認するため，次に示すOSのコマンドを入力して，［Enter］キーを押してください。

ls -d /home/adbmanager/db

lsコマンドに-dオプションを指定することで，指定したディレクトリが作成されているかどうかを確認できます。実行結果の例を次に示します。

■実行結果の例

/home/adbmanager/db

DBディレクトリが作成されていることを確認できたら，DBディレクトリの作成は完了です。

3.5　環境変数および定義ファイルを設定する

ここでは，HADBサーバを運用するために必要な環境変数，および定義ファイルを設定する手順について説明します。

環境変数および定義ファイルの設定はHADB管理者（adbmanager）で行います。

3.5.1　環境変数を設定する

HADBサーバを運用するために必要な環境変数を.bashrcファイルに設定します。.bashrcファイルの格納先を次に示します。

.bashrcファイル：/home/adbmanager/.bashrc

ここでは，viコマンドを使用して.bashrcファイルに環境変数を設定する方法について説明します。

メモ

.bashrcファイルは，テキストエディタで開いて編集することもできます。

(1)　.bashrcファイルに環境変数を設定する

.bashrcファイルを開きます。

HADB管理者（adbmanager）で次に示すOSのコマンドを入力して，［Enter］キーを押してください。viコマンドを実行することで，.bashrcファイルを編集できるようになります。

vi /home/adbmanager/.bashrc

環境変数を設定します。

［I］キーを押して，編集モードに移行させてください。編集モードに移行させたら，カーソルキーを押して，環境変数を入力する位置にカーソルを移動させてください。カーソルを移動させたら，次に示す環境変数を入力します。

export ADBDIR=/home/adbmanager/server
export ADBCLTDIR=$ADBDIR
export LD_LIBRARY_PATH=$ADBDIR/lib:$ADBDIR/client/lib
export PATH=$PATH:$ADBDIR/bin:$ADBDIR/client/bin
export ADBLANG=UTF8
export ADBCLTLANG=UTF8

入力する環境変数の詳細を次の表に示します。

表3‒5　指定する環境変数の一覧

項番

環境変数

指定する値

説明

1

ADBDIR

/home/adbmanager/server

サーバディレクトリを絶対パスで指定します。

2

ADBCLTDIR

$ADBDIR

HADBサーバ上でAPを実行するため，ADBDIRと同じパスを指定します。左記の値を指定してください。

3

LD_LIBRARY_PATH

$ADBDIR/lib

$ADBDIR/client/lib

サーバディレクトリ下のlibディレクトリ（$ADBDIR/lib）を指定します。

HADBサーバ上でAPを実行する場合，サーバディレクトリ下のclient/libディレクトリ（$ADBDIR/client/lib）を指定します。

4

PATH

$PATH

$ADBDIR/bin

$ADBDIR/client/bin

OSに設定されているパスの設定を保持するため，$PATHを指定します。

サーバディレクトリ下のbinディレクトリ（$ADBDIR/bin）を指定します。

HADBサーバ上でAPを実行するため，サーバディレクトリ下のclient/binディレクトリ（$ADBDIR/client/bin）を指定します。

5

ADBLANG

UTF8

使用する文字コードを指定します。

6

ADBCLTLANG

UTF8

環境変数の設定を終了します。

編集モードで必要な環境変数を入力したら，［Esc］キーを押してコマンドモードに移行させてください。コマンドモードに移行させたら，次に示すコマンドを入力して，［Enter］キーを押してください。

:wq

編集モードで設定した内容が保存されます。これで，.bashrcファイルに環境変数が設定されます。

設定した環境変数を有効にします。

次に示すOSのコマンドを入力して，［Enter］キーを押してください。

source /home/adbmanager/.bashrc

sourceコマンドを実行することで，.bashrcファイルに設定した環境変数を有効にできます。

(2)　.bashrcファイルに設定した環境変数を確認する

設定した環境変数が設定されているかどうかを確認するため，次に示すOSのコマンドを入力して，［Enter］キーを押してください。

env

envコマンドを実行することで，OSに設定されている環境変数の一覧が表示されます。表示される環境変数の一覧は情報量が多いため，抜粋したものを実行結果の例として次に示します。

■実行結果の例

         ：
LD_LIBRARY_PATH=/home/adbmanager/server/lib:/home/adbmanager/server/client/lib
ADBCLTDIR=/home/adbmanager/server
PATH=/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/adbmanager/bin:/home/adbmanager/server/bin:/home/adbmanager/server/client/bin
ADBLANG=UTF8
ADBDIR=/home/adbmanager/server
ADBCLTLANG=UTF8
         ：

(3)　関連項目

「8.4　環境変数の設定」

3.5.2　定義ファイルを編集する

HADBサーバを稼働させるために必要なサーバ定義ファイル，およびAPやコマンドを実行するために必要なクライアント定義ファイルを編集します。

各定義ファイルには，ファイルのひな形があります。そのため，ファイルのひな形をコピーしてから編集します。

各定義ファイルのひな形の格納先を次に示します。

■各定義ファイルのひな形の格納先

サーバ定義ファイルのひな形：/home/adbmanager/server/sample/conf/server.def

クライアント定義ファイルのひな形：/home/adbmanager/server/sample/conf/client.def

ひな形をコピーして編集した各定義ファイル（server.def，client.def）の格納先を次に示します。

各定義ファイルの格納先：/home/adbmanager/server/conf/

編集した各定義ファイルを上記に格納することで，HADBサーバが稼働できます。

ここでは，viコマンドを使用して各定義ファイルを編集する方法について説明します。

メモ

各定義ファイルは，テキストエディタで開いて編集することもできます。

(1)　サーバ定義ファイルを編集する

サーバ定義ファイルのひな形をコピーします。

HADB管理者（adbmanager）で次に示すOSのコマンドを入力して，［Enter］キーを押してください。サーバ定義ファイルのひな形をコピーします。

cp /home/adbmanager/server/sample/conf/server.def /home/adbmanager/server/conf/

コピーしたサーバ定義ファイルのひな形を開きます。

次に示すOSのコマンドを入力して，［Enter］キーを押してください。viコマンドを実行することで，サーバ定義ファイルが編集できるようになります。

vi /home/adbmanager/server/conf/server.def

データベースを格納するDBディレクトリを指定します。

［I］キーを押して，編集モードに移行させてください。編集モードに移行させたら，カーソルキーを押して，次に示すオペランドまでカーソルを移動させてください。

set adb_db_path = XXXXX

カーソルを移動させたら，「XXXXX」を削除してください。そのあとで，DBディレクトリの絶対パス（/home/adbmanager/db）を入力してください。

■入力結果

set adb_db_path = /home/adbmanager/db

グローバルバッファTBLBUF01に指定する値を変更します。

カーソルキーを押して，次に示すオペランドまでカーソルを移動させてください。

adbbuff -g TBLBUF01 ¥
        -n ADBUTBL01 ¥
        -p 1000000 ¥
        -v 1024

注

「¥」は，半角のバックスラッシュに読み替えてください。

カーソルを移動させたら，-pオプションの「1000000」を削除してください。そのあとで，「1000」を入力してください。

また，-vオプションの「1024」を削除してください。そのあとで，「64」を入力してください。

■入力結果

adbbuff -g TBLBUF01 ¥
        -n ADBUTBL01 ¥
        -p 1000 ¥
        -v 64

グローバルバッファIDXBUF01に指定する値を変更します。

カーソルキーを押して，次に示すオペランドまでカーソルを移動させてください。

adbbuff -g IDXBUF01 ¥
        -n ADBUIDX01 ¥
        -p 2500000

注

「¥」は，半角のバックスラッシュに読み替えてください。

カーソルを移動させたら，-pオプションの「2500000」を削除してください。そのあとで，「250」を入力してください。

■入力結果

adbbuff -g IDXBUF01 ¥
        -n ADBUIDX01 ¥
        -p 250

メモ

グローバルバッファとは，DBエリアに格納されている表のデータを入出力するために使用される領域です。

サーバ定義ファイルの編集を終了します。

ここでは，上記以外のオペランドの編集は不要です。［Esc］キーを押してコマンドモードに移行させてください。コマンドモードに移行させたら，次に示すコマンドを入力して，［Enter］キーを押してください。

:wq

編集モードで設定した内容が保存されます。これで，HADBサーバを稼働させるために必要な情報がサーバ定義ファイルに設定されます。

(2)　クライアント定義ファイルを編集する

クライアント定義ファイルのひな形をコピーします。

次に示すOSのコマンドを入力して，［Enter］キーを押してください。クライアント定義ファイルのひな形をコピーします。

cp /home/adbmanager/server/sample/conf/client.def /home/adbmanager/server/conf/

コピーしたクライアント定義ファイルのひな形を開きます。

次に示すOSのコマンドを入力して，［Enter］キーを押してください。viコマンドを実行することで，クライアント定義ファイルが編集できるようになります。

vi /home/adbmanager/server/conf/client.def

HADBサーバのホスト名を指定します。

カーソルキーを押して，次に示すオペランドまでカーソルを移動させてください。

set adb_clt_rpc_srv_host = XXXXX

カーソルを移動したら，「XXXXX」を削除してください。そのあとで，localhostを入力してください。

■入力結果

set adb_clt_rpc_srv_host = localhost

クライアント定義ファイルの編集を終了します。

ここでは，上記以外のオペランドの編集は不要です。編集モードでホスト名を入力したら，［Esc］キーを押してコマンドモードに移行させてください。コマンドモードに移行させたら，次に示すコマンドを入力して，［Enter］キーを押してください。

:wq

編集モードで設定した内容が保存されます。これで，APやコマンドを実行するために必要な情報がクライアント定義ファイルに設定されます。

メモ

クライアント定義ファイルはAPを実行するHADBサーバ，またはHADBクライアントで定義します。ここではHADBサーバでAPを実行するため，HADBサーバ内にあるクライアント定義ファイルを編集しています。

(3)　関連項目

「7.　サーバ定義の設計」

「8.5　サーバ定義の作成および変更方法」

マニュアルHADB　AP開発ガイドのHADBクライアントの環境設定（ODBCドライバおよびCLI関数を使用する場合）のクライアント定義の作成

3.6　DBエリアを作成する（データベースの初期設定をする）

データベースの初期設定をして，DBエリアを作成します。

DBエリアとは，表やインデクスなどを格納する論理的な領域のことです。DBエリアは，「3.4　DBディレクトリを作成する」で作成したDBディレクトリに格納されます。

また，DBエリアを作成する場合，どのようなDBエリアを作成するかを指定した初期設定オプションファイルが必要です。初期設定オプションファイルの編集方法，およびDBエリアの作成方法について説明します。

DBエリアの作成はHADB管理者（adbmanager）で行います。

メモ

ここでは，データベースの初期設定を行って，DBエリアを作成する方法を説明します。データベースの初期設定を行う場合，DBエリアの作成コマンド（adbinitコマンド）を使用します。DBエリアの作成コマンド（adbinitコマンド）は，HADBサーバのインストール後，最初にDBエリアを作成する場合に使用します。

なお，データベースの初期設定後に，DBエリアの追加・変更を行いたい場合，DBエリアの作成コマンド（adbinitコマンド）は使用しません。その場合は，DBエリアの追加・変更コマンド（adbmodareaコマンド）を使用します。DBエリアの追加・変更コマンド（adbmodareaコマンド）については，マニュアルHADB　コマンドリファレンスのadbmodarea（DBエリアの追加・変更）で説明しています。

3.6.1　初期設定オプションファイルを編集する

ここでは，viコマンドを使用して初期設定オプションファイルを編集する方法について説明します。

初期設定オプションファイルには，ファイルのひな形があります。そのため，ファイルのひな形をコピーしてから編集します。

初期設定オプションファイルのひな形の格納先を次に示します。

初期設定オプションファイルのひな形：/home/adbmanager/server/sample/conf/adbinit.opt

ひな形をコピーして編集した初期設定オプションファイルの格納先を次に示します。

初期設定オプションファイルの格納先：/home/adbmanager/server/conf/

編集した初期設定オプションファイルを上記に格納することで，DBエリアを作成できます。

メモ

初期設定オプションファイルは，テキストエディタで開いて編集することもできます。

(1)　DBエリアのページサイズを編集する

初期設定オプションファイルのひな形をコピーします。

HADB管理者（adbmanager）で次に示すOSのコマンドを入力して，［Enter］キーを押してください。初期設定オプションファイルのひな形をコピーします。

cp /home/adbmanager/server/sample/conf/adbinit.opt /home/adbmanager/server/conf/

コピーした初期設定オプションファイルのひな形を開きます。

HADB管理者（adbmanager）で次に示すOSのコマンドを入力して，［Enter］キーを押してください。viコマンドを実行することで，初期設定オプションファイルが編集できるようになります。

vi /home/adbmanager/server/conf/adbinit.opt

作成するDBエリアのページサイズを編集します。

［I］キーを押して，編集モードに移行させてください。編集モードに移行させたら，カーソルキーを押して，次に示すオペランドまでカーソルを移動させてください。

adbinitdbarea -n ADBUIDX01 -p 8

カーソルを移動させたら，デフォルトで入力されている-pオプションの「8」を削除してください。そのあとで，「4」を入力してください。

■入力結果

adbinitdbarea -n ADBUIDX01 -p 4

初期設定オプションファイルの編集を終了します。

ここでは，上記以外のオペランドの編集は不要です。編集モードで作成するDBエリアのページサイズを入力したら，［Esc］キーを押してコマンドモードに移行させてください。コマンドモードに移行させたら，次に示すコマンドを入力して，［Enter］キーを押してください。

:wq

編集モードで設定した内容が保存されます。これで，DBエリアを作成するために必要な情報が初期設定オプションファイルに設定されます。

(2)　関連項目

マニュアルHADB　コマンドリファレンスのadbinit（データベースの初期設定）のadbinitコマンドの指定形式の初期設定オプションの形式

3.6.2　DBエリアを作成する

初期設定オプションファイルを編集したら，データベースの初期設定をして，DBエリアを作成します。

メモ

ここでは，データベースの初期設定を行って，DBエリアを作成する方法を説明します。データベースの初期設定を行う場合，DBエリアの作成コマンド（adbinitコマンド）を使用します。DBエリアの作成コマンド（adbinitコマンド）は，HADBサーバのインストール後，最初にDBエリアを作成する場合に使用します。

なお，データベースの初期設定後に，DBエリアの追加・変更を行いたい場合，DBエリアの作成コマンド（adbinitコマンド）は使用しません。その場合は，DBエリアの追加・変更コマンド（adbmodareaコマンド）を使用します。DBエリアの追加・変更コマンド（adbmodareaコマンド）については，マニュアルHADB　コマンドリファレンスのadbmodarea（DBエリアの追加・変更）で説明しています。

(1)　DBエリアの作成コマンドを実行する

HADB管理者（adbmanager）で次に示すHADBのコマンドを入力して，［Enter］キーを押してください。DBエリアが作成されます。

adbinit -u ADBUSER01 -p '#HelloHADB_01' /home/adbmanager/server/conf/adbinit.opt /home/adbmanager/db

メモ

adbinitコマンドを実行時に「bash: adbinit: コマンドが見つかりません」と出力された場合は，設定した環境変数が誤っているおそれがあります。「3.5.1　環境変数を設定する」の「(2)　.bashrcファイルに設定した環境変数を確認する」を参照して，設定した環境変数が正しいかどうかを確認してください。

adbinitコマンドに指定する各オプションについて，次に示します。

-u ADBUSER01

HADBユーザのユーザID（認可識別子）を指定します。DBエリアが作成されるときに，-uオプションに指定したHADBユーザもあわせて作成されます。ここでは，HADBユーザのユーザID（認可識別子）としてADBUSER01を指定してください。

ここで作成されるHADBユーザ（ADBUSER01）は，表の作成・検索で必要なHADBユーザを作成するときに使用します。

メモ

この章では，HADBユーザを作成する方法を説明するために，ADBUSER01を使用して表の作成・検索で必要なHADBユーザ（ADBUSER02）を新規に作成する手順としています。詳細については，「3.7　表の作成・検索用のHADBユーザを作成する」を参照してください。

-p '#HelloHADB_01'

-uオプションに指定したユーザID（ADBUSER01）のパスワードを指定します。ここでは，パスワードとして#HelloHADB_01を指定してください。

/home/adbmanager/server/conf/adbinit.opt

初期設定オプションファイルの格納先を絶対パスで指定します。

/home/adbmanager/db

作成されるDBエリアを格納するDBディレクトリ名を絶対パスで指定します。なお，ここで指定するDBディレクトリ名と，サーバ定義のadb_db_pathオペランドに指定したDBディレクトリ名は同じにしてください。

DBエリアを作成すると，メッセージが出力されます。出力されるメッセージの例を次に示します。

■出力されるメッセージの例

KFAA90000-I adbinit processing started.
KFAA96201-I Database initialization started.
KFAA96204-I The DB directory "/home/adbmanager/db" is initialized.
KFAA96233-I Initialization of file "ADBUIDX01" is complete. (size = 5456 KB, information = 7fd0dc15-f7b8-45ca-a178-1a1292c80fcc)
KFAA96233-I Initialization of file "ADBUTBL01" is complete. (size = 5440 KB, information = df7978f1-9f7a-4bcf-a477-61056297a71c)
KFAA96202-I Database initialization ended. (return code = 0)
KFAA90001-I adbinit processing ended. (return code = 0)

(2)　作成したDBエリアを確認する

adbinitコマンドでDBエリアが作成されているかどうかを確認するため，次に示すOSのコマンドを入力して，［Enter］キーを押してください。

ls /home/adbmanager/db

lsコマンドを実行することで，指定したディレクトリ下にディレクトリおよびファイルが作成されているかどうかを確認できます。実行結果の例を次に示します。

■実行結果の例

ADBDIC  ADBMST  ADBSTBL  ADBSYS  ADBUIDX01  ADBUTBL01  ADBWORK  ADBWRK  SPOOL

DBエリアが作成されていることを確認できたら，DBエリアの作成は完了です。

(3)　関連項目

■データベースの初期設定を行ってDBエリアを作成する場合

DBエリアの作成コマンド（adbinitコマンド）を使用する場合の関連項目を次に示します。

マニュアルHADB　コマンドリファレンスのadbinit（データベースの初期設定）

「9.2　データベースを初期設定する（データ用DBエリアを作成する）」

■データベースの初期設定後にDBエリアの追加・変更を行う場合

DBエリアの追加・変更コマンド（adbmodareaコマンド）を使用する場合の関連項目を次に示します。

マニュアルHADB　コマンドリファレンスのadbmodarea（DBエリアの追加・変更）

「11.13　データ用DBエリアの運用」

3.7　表の作成・検索用のHADBユーザを作成する

データベースの初期設定をしてDBエリアを作成したら，表の作成・検索用のHADBユーザを作成します。

ここでは，DBエリア作成時に作成されたHADBユーザ（ADBUSER01）を使用して，表の作成・検索で必要なHADBユーザ（ADBUSER02）の作成方法，および作成したHADBユーザ（ADBUSER02）に権限を付与する方法について説明します。

ADBUSER01は，2つの権限（DBA権限およびCONNECT権限）を持っているため，HADBユーザの作成および権限の付与ができます。

HADBユーザの作成および権限の付与をする場合，OSユーザはHADB管理者（adbmanager）を使用します。

メモ

この章では，HADBユーザを作成する方法を説明するために，ADBUSER01を使用して表の作成・検索で必要なHADBユーザ（ADBUSER02）を新規に作成する手順としています。

なお，HADBユーザ（ADBUSER02）を新規に作成しないで，ADBUSER01に表の作成・検索で必要な権限（スキーマ定義権限）を付与することもできます。

権限の詳細については，「2.7　権限」を参照してください。

3.7.1　HADBサーバを開始する

SQL文を実行してHADBユーザを作成するために，HADBサーバを開始します。

(1)　HADBサーバの開始コマンドを実行する

HADB管理者（adbmanager）で次に示すHADBのコマンドを入力して，［Enter］キーを押してください。HADBサーバが開始されます。

adbstart

HADBサーバが開始されると，メッセージが出力されます。出力されるメッセージの例を次に示します。

■出力されるメッセージの例

KFAA90000-I adbstart processing started.
KFAA91105-I The HADB system was started normally. (HADB server operation mode = "NORMAL")
KFAA90001-I adbstart processing ended. (return code = 0)

(2)　関連項目

「10.2.1　HADBサーバの開始方法」

マニュアルHADB　コマンドリファレンスのadbstart（HADBサーバの開始）

3.7.2　HADBサーバに接続する

HADBサーバを開始したら，HADBユーザを作成するためのクライアントプログラム（adbsqlコマンド）からHADBサーバに接続します。

(1)　接続コマンドを実行する

adbsqlコマンドを実行します。

HADB管理者（adbmanager）で次に示すHADBのコマンドを入力し，［Enter］キーを押してください。

adbsql

ユーザID（認可識別子）の入力要求に応答します。

adbsqlコマンドを実行すると，HADBユーザのユーザID（認可識別子）を入力するよう要求されます。ここで指定したユーザID（認可識別子）で，HADBサーバに接続します。ここでは，ADBUSER01を指定して［Enter］キーを押してください。

  USER-ID？
ADBUSER01

パスワードの入力要求に応答します。

ユーザID（認可識別子）を入力したら，パスワードを入力するよう要求されます。ここでは，#HelloHADB_01を指定して［Enter］キーを押してください。

  PASSWORD？
#HelloHADB_01    入力したパスワードは表示されません。

(2)　HADBサーバに接続したことを確認する

パスワードを指定して［Enter］キーを押すと，HADBサーバに接続され，SQL文を入力できるようになります。実行結果の例を次に示します。

■実行結果の例

COMMAND ?     +----2----+----3----+----4----+----5----+----6----+----7----+

上記の実行結果が表示されていれば，SQL文を入力できます。

重要

入力したHADBユーザのユーザID（認可識別子）およびパスワードが正しくない場合，HADBサーバとの接続に失敗してKFAA30561-Eメッセージが出力されます。その場合は，「3.12.4　HADBサーバの接続時にKFAA30561-Eメッセージが出力された」を参照してください。

(3)　関連項目

マニュアルHADB　コマンドリファレンスのadbsql（SQLの実行）

3.7.3　HADBユーザを作成する

SQL文を入力できるようになったら，表の作成・検索で必要なHADBユーザを作成します。

(1)　HADBユーザを作成するSQL文を実行する

HADBユーザを作成するためには，定義系SQLのCREATE USER文を使用します。ここでは，表の作成・検索用のHADBユーザとして，次に示すHADBユーザを作成します。

ユーザID（認可識別子）：ADBUSER02

パスワード：#HelloHADB_02

次に示すSQL文を入力して，［Enter］キーを押してください。

なお，末尾に必ず半角のセミコロン（；）を入力してください。SQL文が実行されません。

CREATE USER "ADBUSER02" IDENTIFIED BY '#HelloHADB_02';

これで，HADBユーザ「ADBUSER02」が作成されます。なお，作成されたADBUSER02には，表の作成・検索するために必要な2つの権限（CONNECT権限およびスキーマ定義権限）を持っていません。そのため，必要な権限を付与する必要があります。

(2)　HADBユーザを作成した結果を確認する

HADBユーザ「ADBUSER02」が作成された場合，次に示すメッセージが出力されます。出力されるメッセージの例を次に示します。

■出力されるメッセージの例

KFAA96403-I SQL processing completed.

HADBユーザが作成されたことを確認したら，HADBユーザの作成は完了です。

(3)　関連項目

「9.4　実表を定義するHADBユーザを作成する」

3.7.4　作成したHADBユーザに権限を付与する

ここでは，HADBユーザ「ADBUSER02」に対して，表の作成・検索に必要な権限を付与します。

(1)　権限を付与するSQL文を実行する

HADBユーザに権限を付与するためには，定義系SQLのGRANT文を使用します。ここでは，表の作成・検索で必要な権限として，次に示す2つの権限をHADBユーザ「ADBUSER02」に付与します。

CONNECT権限

スキーマ定義権限

次に示すSQL文を入力して，［Enter］キーを押してください。

なお，末尾に必ず半角のセミコロン（；）を入力してください。SQL文が実行されません。

GRANT CONNECT,SCHEMA TO "ADBUSER02";

これで，HADBユーザ「ADBUSER02」に，CONNECT権限およびスキーマ定義権限が付与されます。

(2)　権限を付与した結果を確認する

HADBユーザ「ADBUSER02」に権限を付与した場合，次に示すメッセージが出力されます。出力されるメッセージの例を次に示します。

■出力されるメッセージの例

KFAA96403-I SQL processing completed.

権限が付与されたことを確認したら，権限の付与は完了です。

(3)　HADBサーバへの接続を終了する

HADBユーザを作成して権限を付与したら，adbsqlコマンドを終了します。次に示すadbsqlサブコマンドを入力して，［Enter］キーを押してください。

なお，末尾に必ず半角のセミコロン（；）を入力してください。SQL文が実行されません。

#EXIT;

adbsqlコマンドが終了し，ほかのコマンドを入力できる状態になります。実行結果の例を次に示します。

■実行結果の例

[adbmanager@localhost ~]$

(4)　関連項目

「9.4　実表を定義するHADBユーザを作成する」

3.8　表を作成する

表の作成・検索用のHADBユーザ（ADBUSER02）を作成したら，サンプルデータを格納するための表を作成します。

3.8.1　HADBサーバに接続する

HADBサーバを開始したら，表を作成するためのクライアントプログラム（adbsqlコマンド）からHADBサーバに接続します。

(1)　接続コマンドを実行する

adbsqlコマンドを実行します。

HADB管理者（adbmanager）で次に示すHADBのコマンドを入力し，［Enter］キーを押してください。

adbsql

ユーザID（認可識別子）の入力要求に応答します。

adbsqlコマンドを実行すると，HADBユーザのユーザID（認可識別子）を入力するよう要求されます。ここで指定したユーザID（認可識別子）で，HADBサーバに接続します。ここでは，ADBUSER02を指定して［Enter］キーを押してください。

  USER-ID？
ADBUSER02

パスワードの入力要求に応答します。

ユーザID（認可識別子）を入力したら，パスワードを入力するよう要求されます。ここでは，#HelloHADB_02を指定して［Enter］キーを押してください。

  PASSWORD？
#HelloHADB_02    入力したパスワードは表示されません。

(2)　HADBサーバに接続したことを確認する

パスワードを指定して［Enter］キーを押すと，HADBサーバに接続され，SQL文を入力できるようになります。実行結果の例を次に示します。

■実行結果の例

COMMAND ?     +----2----+----3----+----4----+----5----+----6----+----7----+

上記の実行結果が表示されていれば，SQL文を入力できます。

(3)　関連項目

マニュアルHADB　コマンドリファレンスのadbsql（SQLの実行）

3.8.2　スキーマを定義する

SQL文を入力できるようになったら，スキーマを定義します。スキーマは，表を包括する論理的な概念のことです。スキーマを定義しないと，表を作成できません。

(1)　スキーマを定義するSQL文を実行する

スキーマを定義するためには，定義系SQLのCREATE SCHEMA文を使用します。次に示すSQL文を入力して，［Enter］キーを押してください。

なお，末尾に必ず半角のセミコロン（；）を入力してください。SQL文が実行されません。

CREATE SCHEMA ADBUSER02;

これで，「ADBUSER02」ユーザのスキーマが定義されます。ここで定義するスキーマ名は，adbsqlコマンドのユーザID（認可識別子）と同じにしてください。

(2)　スキーマを定義した結果を確認する

スキーマ「ADBUSER02」が定義された場合，次に示すメッセージが出力されます。出力されるメッセージの例を次に示します。

■出力されるメッセージの例

KFAA96403-I SQL processing completed.

スキーマが定義されたことを確認したら，スキーマの定義は完了です。

(3)　関連項目

マニュアルHADB　SQLリファレンスの定義系SQLのCREATE SCHEMA（スキーマの定義）

3.8.3　表を作成する

ここでは，サンプルデータを格納する表として，「SAMPLE」という名称の表を作成します。

メモ

サンプルAP（$ADBDIR/sample）の認可識別子（SAMPLE）と，この章で説明している認可識別子（ADBUSER02）は異なります。もし，サンプルAPを使用する場合は，認可識別子を変更してから使用してください。

(1)　表を作成するSQL文を実行する

表を作成するには，定義系SQLのCREATE TABLE文を使用します。次に示すSQL文を入力して，［Enter］キーを押してください。

CREATE TABLE "SAMPLE" ("STATECODE" SMALLINT, "STATENAME" VARCHAR(15),

NEXT ?と表示されます。続けて，次に示すSQL文を入力して，［Enter］キーを押してください。

"ZIPCODE" CHAR(15), "ADDRESS" VARCHAR(100), "AREA" DECIMAL(19))

NEXT ?と表示されます。続けて，次に示すSQL文を入力して，［Enter］キーを押してください。

IN ADBUTBL01;

入力したCREATE TABLE文の詳細について，次の表に示します。

表3‒6　指定するCREATE TABLE文の詳細

項番

入力内容

説明

1

"SAMPLE"

作成する表名を指定します。

2

"STATECODE" SMALLINT

表の列名と，列のデータ型を指定します。

列名として「STATECODE」（州番号）を指定します。STATECODE列には1〜50の数字を格納するため，データ型として「SMALLINT」を指定します。

3

"STATENAME" VARCHAR(15)

列名として「STATENAME」（州名）を指定します。STATENAME列には最大15バイトの可変長の文字列を格納するため，データ型として「VARCHAR」を指定します。

4

"ZIPCODE" CHAR(15)

列名として「ZIPCODE」（郵便番号）を指定します。ZIPCODE列には，15バイトの固定長の文字列を格納するため，データ型として「CHAR」を指定します。

5

"ADDRESS" VARCHAR(100)

列名として「ADDRESS」（州議事堂の住所）を指定します。ADDRESS列には，最大100バイトの可変長の文字列を格納するため，データ型として「VARCHAR」を指定します。

6

"AREA" DECIMAL(19)

列名として「AREA」（面積）を指定します。AREA列には，19桁の数字を格納するため，データ型として「DECIMAL」を指定します。

7

IN ADBUTBL01

表を格納するDBエリア名を指定します。

メモ

ファイルに記述したSQL文から表を作成することもできます。入力するSQL文（CREATE TABLE文）が長文のため，adbsqlコマンドの入力を誤ってしまうような場合は，「(3)　HADBサーバへの接続を終了する」を実行したあとで，「3.12.2　表を作成できない」を参照してください。

(2)　表を作成した結果を確認する

表「SAMPLE」が作成された場合，次に示すメッセージが出力されます。出力されるメッセージの例を次に示します。

■出力されるメッセージの例

KFAA96403-I SQL processing completed.

表が作成されたことを確認したら，表の作成は完了です。

(3)　HADBサーバへの接続を終了する

表を作成したら，adbsqlコマンドを終了します。次に示すadbsqlサブコマンドを入力して，［Enter］キーを押してください。

なお，末尾に必ず半角のセミコロン（；）を入力してください。SQL文が実行されません。

#EXIT;

adbsqlコマンドが終了し，ほかのコマンドを入力できる状態になります。実行結果の例を次に示します。

■実行結果の例

[adbmanager@localhost ~]$

(4)　関連項目

マニュアルHADB　SQLリファレンスの定義系SQLのCREATE TABLE（表の定義）

3.9　データを格納する

表「SAMPLE」を作成したら，サンプルデータを表に格納します。

表にサンプルデータを格納する場合，adbimportコマンドを実行します。その際，表に格納するサンプルデータそのものは指定しないで，サンプルデータの格納先を示したテキストファイル（入力データパスファイル）を指定します。そのため，データを格納する前に，入力データパスファイルを作成する必要があります。

ここでは，入力データパスファイルの作成方法，および表にデータを格納する方法について説明します。

3.9.1　データの格納前に準備すること

表にデータを格納する前の準備作業として，サンプルデータの格納先を示したテキストファイル（入力データパスファイル）を作成します。

入力データパスファイルの詳細を次の図に示します。

図3‒4　入力データパスファイルの詳細

ここでは，viコマンドを使用して入力データパスファイルを作成する方法について説明します。

(1)　入力データパスファイルを作成する

入力データパスファイルを作成します。

HADB管理者（adbmanager）で次に示すOSのコマンドを入力して，［Enter］キーを押してください。ここでは，adbmanagerのホームディレクトリ下にファイル名「path.txt」として作成します。

vi /home/adbmanager/path.txt

サンプルデータの格納先を入力します。

［I］キーを押してから，次に示す絶対パスを入力してください。この絶対パスが，サンプルデータの格納先になります。

/home/adbmanager/server/sample/SAMPLE.txt

入力データパスファイルの作成を終了します。

［Esc］キーを押してから，次に示すコマンドを入力して，［Enter］キーを押してください。

:wq

これで，入力データパスファイルが作成されます。

(2)　作成した入力データパスファイルを確認する

viコマンドで入力データパスファイルが作成されているかどうかを確認するため，次に示すOSのコマンドを入力して，［Enter］キーを押してください。

ls /home/adbmanager/path.txt

lsコマンドで指定したファイルが作成されているかどうかを確認できます。実行結果の例を次に示します。

■実行結果の例

/home/adbmanager/path.txt

入力データパスファイルが作成されていることを確認できたら，入力データパスファイルの作成は完了です。

(3)　関連項目

マニュアルHADB　コマンドリファレンスのadbimport（データのインポート）

3.9.2　表にデータを格納する

入力データパスファイルを作成したら，表にサンプルデータを格納します

サンプルデータを格納する際，作成した入力データパスファイルおよびインポートオプションファイルを使用します。

インポートオプションファイルには，ファイルのひな形があるため，ひな形をコピーして使用します。ひな形の格納先を次に示します。

インポートオプションファイルのひな形：/home/adbmanager/server/sample/conf/adbimport.opt

作成した入力データパスファイルと，ひな形をコピーしたインポートオプションファイルの格納先を次に示します。

入力データパスファイル：/home/adbmanager/path.txt

インポートオプションファイルの格納先：/home/adbmanager/server/conf/

インポートオプションファイルは，デフォルトの設定で使用します。

(1)　インポートオプションファイルのひな形をコピーする

表にサンプルデータを格納するために，インポートオプションファイルのひな形をコピーしてください。

インポートオプションファイルのひな形をコピーします。

次に示すOSのコマンドを入力して，［Enter］キーを押してください。インポートオプションファイルのひな形をコピーします。

cp /home/adbmanager/server/sample/conf/adbimport.opt /home/adbmanager/server/conf/

コピーしたインポートオプションファイルのひな形を確認します。

次に示すOSのコマンドを入力して，［Enter］キーを押してください。インポートオプションファイルのひな形をコピーできているかどうかを確認します。

ls /home/adbmanager/server/conf/

■実行結果の例

adbimport.opt  adbinit.opt  client.def  server.def

インポートオプションファイルのひな形をコピーできていれば，lsコマンドを実行すると，adbimport.optが表示されます。

(2)　データを格納するコマンドを実行する

HADB管理者（adbmanager）で次に示すHADBのコマンドを入力して，［Enter］キーを押してください。

なお，下記のコマンドは読みやすさを考慮して，SAMPLEの前で改行しております。実際にコマンドを入力するときには，改行は不要です。adbimport.optのあとに半角スペースを入力してから，続けてSAMPLE以降を入力してください。

adbimport -u ADBUSER02 -p '#HelloHADB_02' -z /home/adbmanager/server/conf/adbimport.opt
          SAMPLE /home/adbmanager/path.txt

メモ

adbimportコマンドは，HADBサーバが稼働していないと実行できません。KFAA90004-Eメッセージが出力された場合は，「3.7.1　HADBサーバを開始する」の「(1)　HADBサーバの開始コマンドを実行する」を参照してHADBサーバを開始してください。

adbimportコマンドに指定する各オプションについて，次に示します。

表3‒7　adbimportコマンドに指定するオプションの詳細

項番

オプション

説明

1

-u ADBUSER02

adbimportコマンドを実行するHADBユーザのユーザID（認可識別子）を指定します。ここでは，ADBUSER02を指定します。

2

-p '#HelloHADB_02'

-uオプションに指定したHADBユーザのパスワードを指定します。ここでは，#HelloHADB_02を指定します。

3

-z /home/adbmanager/server/conf/adbimport.opt

データを格納するときにオプションを指定したい場合，インポートオプションファイルを指定します。

サンプルデータを格納する場合，デフォルトの内容が設定されているインポートオプションファイルを指定しないと，エラーになります。

4

SAMPLE

データを格納する表の表名を指定します。サンプルデータは表「SAMPLE」に格納するため，SAMPLEを指定します。

5

/home/adbmanager/path.txt

入力データパスファイルの格納先を絶対パスで指定します。

(3)　データを格納した結果を確認する

adbimportコマンドを実行すると，メッセージが表示されます。表示結果の例を次に示します。

■表示結果の例

KFAA90000-I adbimport processing started.
KFAA80202-I Import processing started. The table is "ADBUSER02"."SAMPLE".
KFAA80203-I 50 rows loaded.
KFAA80204-I Import processing ended. (return code = 0)
KFAA90001-I adbimport processing ended. (return code = 0)

これで，表へのサンプルデータの格納は完了です。

(4)　関連項目

マニュアルHADB　コマンドリファレンスのadbimport（データのインポート）

3.10　格納したデータを検索する

サンプルデータを表に格納したら，表が検索できるようになります。HADBサーバに接続してから，格納したデータを検索するSQL文（SELECT文）を実行する手順を次に示します。

格納したデータの検索はHADB管理者（adbmanager）で行います。

3.10.1　HADBサーバに接続してデータを検索する

(1)　接続コマンドを実行する

adbsqlコマンドを実行します。

HADB管理者（adbmanager）で次に示すHADBのコマンドを入力して，［Enter］キーを押してください。

adbsql

ユーザID（認可識別子）の入力要求に応答します。

ここでは，ADBUSER02を入力して［Enter］キーを押してください。

  USER-ID？
ADBUSER02

パスワードの入力要求に応答します。

ここでは，#HelloHADB_02を指定して［Enter］キーを押してください。

  PASSWORD？
#HelloHADB_02    入力したパスワードは表示されません。

パスワードを入力して［Enter］キーを押すと，HADBサーバに接続され，SQL文を入力できるようになります。実行結果の例を次に示します。

■実行結果の例

COMMAND ?     +----2----+----3----+----4----+----5----+----6----+----7----+

上記の実行結果が表示されていれば，SQL文を入力できます。

(2)　格納したすべてのデータを検索する

データを格納した表のすべての行を検索するSQL文（SELECT文）を入力して，［Enter］キーを押してください。

なお，末尾に必ず半角のセミコロン（；）を入力してください。SQL文が実行されません。

SELECT * FROM "SAMPLE";

表のすべての行を検索すると，米国50州の州番号，州名，郵便番号，州議事堂の住所，および面積が出力されます。

検索が完了すると，メッセージが出力されます。出力されるメッセージの例を次に示します。

■出力されるメッセージの例

KFAA96404-I 50 rows were selected.

(3)　HADBサーバへの接続を終了する

次に示すadbsqlサブコマンドを入力して，［Enter］キーを押してください。adbsqlコマンドが終了します。

なお，末尾に必ず半角のセミコロン（；）を入力してください。SQL文が実行されません。

#EXIT;

adbsqlコマンドが終了し，ほかのコマンドを入力できる状態になります。実行結果の例を次に示します。

■実行結果の例

[adbmanager@localhost ~]$

(4)　HADBサーバを終了する

次に示すHADBのコマンドを入力して，［Enter］キーを押してください。HADBサーバが終了します。

adbstop

adbstopコマンドを実行するとメッセージが出力されて，HADBサーバが終了します。出力されるメッセージの例を次に示します。

■出力されるメッセージの例

KFAA90000-I adbstop processing started.
KFAA91154-I The HADB system was terminated normally.
KFAA90001-I adbstop processing ended. (return code = 0)

これで，体験環境を使用したHADBサーバの操作体験は終了です。体験環境が不要な場合は，「3.11　HADBサーバをアンインストールする」を参照して，体験環境のHADBサーバをアンインストールしてください。

重要

この章に従って構築した体験環境は，あくまでHADBサーバの導入・操作を体験するためのものです。実際の業務で使用するための環境ではありません。そのため，この章で説明しているコマンドおよびSQL文以外を体験環境で実行した場合は，エラーが発生するなど，正常に動作しないおそれがあります。

実際の業務で使用する環境を構築する場合は，このマニュアルの第3編　設計編を参照して必要な値を見積もった上で，第4編　構築編を参照して，環境を構築してください。

(5)　関連項目

マニュアルHADB　SQLリファレンスのSELECT文の例題集

マニュアルHADB　コマンドリファレンスのadbsql（SQLの実行）のadbsqlサブコマンド

「10.2.2　HADBサーバの終了方法」

マニュアルHADB　コマンドリファレンスのadbstop（HADBサーバの終了）

3.11　HADBサーバをアンインストールする

ここでは，HADBサーバをアンインストールする方法について説明します。構築したHADBサーバの体験環境が不要になった場合，次に示す手順に従ってアンインストールします。

HADBサーバのアンインストールは，スーパユーザおよびHADB管理者（adbmanager）で行います。

重要

HADBサーバが終了している状態でアンインストールしてください。HADBサーバが稼働しているときには，アンインストールできません。

3.11.1　サーバディレクトリを削除する

HADBサーバをアンインストールするために，サーバディレクトリを削除します。

(1)　サーバディレクトリの削除コマンドを実行する

HADB管理者（adbmanager）で，次に示すOSのコマンドを入力して，［Enter］キーを押してください。サーバディレクトリが削除されます。

rm -rf /home/adbmanager/server

(2)　サーバディレクトリが削除できたことを確認する

HADB管理者（adbmanager）で，次に示すOSのコマンドを入力して，［Enter］キーを押してください。サーバディレクトリが正しく削除できたかどうかを確認できます。

ls -d /home/adbmanager/server

■実行結果の例

ls: cannot access /home/adbmanager/server: そのようなファイルやディレクトリはありません

上記のような実行結果が表示されていれば，サーバディレクトリが削除されています。

3.11.2　インストールデータを格納するディレクトリを削除する

HADBサーバのインストールデータを格納するディレクトリを削除します。

(1)　インストールデータを格納するディレクトリの削除コマンドを実行する

HADB管理者（adbmanager）で，次に示すOSのコマンドを入力して，［Enter］キーを押してください。インストールデータを格納するディレクトリが削除されます。

rm -rf /home/adbmanager/install

(2)　インストールデータを格納するディレクトリが削除できたことを確認する

HADB管理者（adbmanager）で，次に示すOSのコマンドを入力して，［Enter］キーを押してください。インストールデータを格納するディレクトリが正しく削除できたかどうかを確認できます。

ls -d /home/adbmanager/install

■実行結果の例

ls: cannot access /home/adbmanager/install/: そのようなファイルやディレクトリはありません

上記のような実行結果が表示されていれば，インストールデータを格納するディレクトリが削除されています。

3.11.3　通信情報ファイルを格納するディレクトリを削除する

HADBサーバをアンインストールしたら，通信情報ファイルを格納するディレクトリを削除します。

(1)　通信情報ファイルを格納するディレクトリの削除コマンドを実行する

次に示すディレクトリ，およびファイルを削除します。

/dev/HADB/pth

/etc/tmpfiles.d/dev-HADB-pth.conf

/dev/HADB/pthディレクトリを削除します。

スーパユーザで次に示すOSのコマンドを入力して，［Enter］キーを押してください。/dev/HADB/pthディレクトリが削除されます。

rm -rf /dev/HADB/pth

/etc/tmpfiles.d/dev-HADB-pth.confファイルを削除します。

スーパユーザで次に示すOSのコマンドを入力して，［Enter］キーを押してください。/etc/tmpfiles.d/dev-HADB-pth.confファイルが削除されます。

rm -f /etc/tmpfiles.d/dev-HADB-pth.conf

(2)　通信情報ファイルを格納するディレクトリを削除できたことを確認する

通信情報ファイルを格納するディレクトリが，正しく削除されたかどうかを確認します。

削除した/dev/HADB/pthディレクトリを確認します。

スーパユーザで次に示すOSのコマンドを入力して，［Enter］キーを押してください。

ls -d -l /dev/HADB/pth

lsコマンドを実行すると，/dev/HADB/pthディレクトリが削除されているかどうかが確認できます。実行結果の例を次に示します。

■実行結果の例

ls: cannot access /dev/HADB/pth: そのようなファイルやディレクトリはありません

上記のような実行結果が表示されていれば，/dev/HADB/pthディレクトリは削除されています。

削除した/etc/tmpfiles.d/dev-HADB-pth.confファイルを確認します。

スーパユーザで次に示すOSのコマンドを入力して，［Enter］キーを押してください。

ls -l /etc/tmpfiles.d/dev-HADB-pth.conf

lsコマンドを実行すると，/etc/tmpfiles.d/dev-HADB-pth.confファイルが削除されているかどうかが確認できます。実行結果の例を次に示します。

■実行結果の例

ls: cannot access /etc/tmpfiles.d/dev-HADB-pth.conf: そのようなファイルやディレクトリはありません

上記のような実行結果が表示されていれば，/etc/tmpfiles.d/dev-HADB-pth.confファイルは削除されています。

3.11.4　HADB管理者とHADB管理グループを削除する

HADBサーバをインストールする際に，HADBを管理するOSユーザ（HADB管理者）とHADB管理者が所属するグループ（HADB管理グループ）をOSに設定しました。これらを削除する方法について説明します。

削除するHADB管理者とHADB管理グループを次に示します。

HADB管理者：adbmanager

HADB管理グループ：adbgroup

(1)　HADB管理者を削除する

次に示すOSのコマンドを入力し，［Enter］キーを押してください。

userdel -r adbmanager

userdelコマンドの各オプションの詳細について，次に示します。

-r

指定すると，ユーザを削除する際，ホームディレクトリも合わせて削除します。そのため，adbmanagerのホームディレクトリ（/home/adbmanager/）が削除されます。

adbmanager

削除するユーザ名を指定します。

これで，HADB管理者の削除は完了です。

(2)　HADB管理グループを削除する

スーパユーザで次に示すOSのコマンドを入力し，［Enter］キーを押してください。

groupdel adbgroup

groupdelコマンドのオプションの詳細について，次に示します。

adbgroup

削除するグループ名を指定します。

これで，HADB管理グループの削除は完了です。

3.12　よくある質問と対処方法

ここでは，HADBサーバの体験環境を構築したときによくある質問と対処方法について説明します。

3.12.1　DBディレクトリをスーパユーザで作成してしまった

HADB管理者（adbmanager）で作成するDBディレクトリ（/home/adbmanager/db）を，スーパユーザで作成してしまった場合，作成したDBディレクトリを削除してください。

削除方法を次に示します。

スーパユーザでログインします。

HADB管理者（adbmanager）でログインしていた場合，スーパユーザでログインし直してください。

DBディレクトリを削除します。

次に示すOSのコマンドを入力して，［Enter］キーを押してください。

rmdir /home/adbmanager/db

これで，DBディレクトリを削除できます。HADB管理者（adbmanager）でログインし直してから，DBディレクトリを作成してください。

なお，rmdirコマンドでは削除できない場合は，次に示すOSのコマンドを入力して，［Enter］キーを押してください。

rm -rf /home/adbmanager/db

3.12.2　表を作成できない

実行するSQL文（CREATE TABLE文）が長文のため，adbsqlコマンドの入力を誤ってしまうような場合，次の方法で表を作成してみてください。

ファイルに記述したSQL文の実行方法を次に示します。

メモ

手順1.〜手順3.で作成するファイル（infile）は，テキストエディタを使用して作成することもできます。

SQL文を記述するファイル（infile）を作成します。

次に示すOSのコマンドを入力して，［Enter］キーを押してください。ファイルの作成先はホームディレクトリ下（/home/adbmanager），ファイル名は「infile」としてください。

vi /home/adbmanager/infile

実行するSQL文を入力します。

［I］キーを押してから，次に示すSQL文を入力します。

1行目にADBUSER02を入力して，2行目に#HelloHADB_02を入力してください。3行目からCREATE TABLE文を入力してください。

ADBUSER02
#HelloHADB_02
CREATE TABLE "SAMPLE" ("STATECODE" SMALLINT, "STATENAME" VARCHAR(15),
"ZIPCODE" CHAR(15), "ADDRESS" VARCHAR(100), "AREA" DECIMAL(19))
IN ADBUTBL01;

SQL文を記述するファイル（infile）の作成を終了します。

［Esc］キーを押してから，次に示すコマンドを入力して，［Enter］キーを押してください。

:wq

これで，SQL文を記述するファイル（infile）が作成されます。

SQL文を記述するファイル（infile）を実行します。

HADBサーバを開始した状態で，次に示すHADBのコマンドを実行してください。

adbsql -V < infile

上記のコマンドを実行すると，手順2.で入力したSQL文が一括で実行されます。実行結果の例を次に示します。

■実行結果の例

  USER-ID ?
ADBUSER02

  PASSWORD ?
#HelloHADB_02

COMMAND ? +----2----+----3----+----4----+----5----+----6----+----7----+
CREATE TABLE "SAMPLE" ("STATECODE" SMALLINT, "STATENAME" VARCHAR(15),
NEXT ? +----2----+----3----+----4----+----5----+----6----+----7----+
"ZIPCODE" CHAR(15), "ADDRESS" VARCHAR(100), "AREA" DECIMAL(19))
NEXT ? +----2----+----3----+----4----+----5----+----6----+----7----+
IN ADBUTBL01;
KFAA96403-I SQL processing completed.

これで，表が作成されます。

3.12.3　HADBサーバの開始時にKFAA91104-Qメッセージが出力された

HADBサーバの開始コマンド（adbstartコマンド）を実行したときに，KFAA91104-Qメッセージが出力された場合の対処方法について説明します。

HADBサーバの稼働中に，HADBサーバの終了コマンド（adbstopコマンド）を実行しないでOSをシャットダウンしたあとで，adbstartコマンドを実行した場合に，KFAA91104-Qメッセージ（トラブルシュート情報を削除してよいかどうかの確認メッセージ）が出力されます。

■KFAA91104-Qメッセージの出力例

KFAA90000-I adbstart processing started.
KFAA91104-Q Are you sure you want to discard trouble shoot information? (y/N)

HADBサーバを正しい手順で終了していないため，HADBサーバが異常終了した結果，トラブルシュート情報が出力されています。

この章で構築する体験環境については，出力されたトラブルシュート情報は不要であるため，削除します。

重要

体験環境ではなく実際の業務で使用する環境で，adbstartコマンド実行時にKFAA91104-Qメッセージが出力された場合は，トラブルシュート情報を取得する必要があるかどうかを確認してください。詳細については，マニュアルHADB　コマンドリファレンスのadbstart（HADBサーバの開始）の注意事項を参照してください。

KFAA91104-Qメッセージに対して，［Y］キーを押してください。［Y］キーを押すと，トラブルシュート情報が削除されたあとで，HADBサーバが開始されます。

■［Y］キーを押したあとのメッセージの出力例

KFAA91105-I The HADB system was started normally. (HADB server operation mode = "NORMAL")
KFAA90001-I adbstart processing ended. (return code = 0)

リターンコードが0なら，HADBサーバが開始されています。

3.12.4　HADBサーバの接続時にKFAA30561-Eメッセージが出力された

HADBサーバへの接続コマンド（adbsqlコマンド）を実行して，HADBユーザのユーザID（認可識別子）およびパスワードを入力するときに，ユーザID（認可識別子）またはパスワードを誤り，KFAA30561-Eメッセージが出力された場合の対処方法について説明します。

■KFAA30561-Eメッセージの出力例

KFAA30561-E The specified authorization identifier or password is invalid.

この場合，HADBサーバへの接続に失敗しています。

HADBサーバの接続に失敗した場合，HADBサーバに再接続する必要があります。次に示すadbsqlサブコマンドを入力して，［Enter］キーを押してください。

なお，末尾には必ず半角のセミコロン（；）を入力してください。SQL文が実行されません。

#CONNECT;

ユーザID（認可識別子）およびパスワードの入力を求められるため，正しいユーザID（認可識別子）およびパスワードを入力してください。入力した内容に問題なければ，HADBサーバに再接続できます。

第3編　設計編

4　システム設計

この章では，システム構築するためのシステム設計（データベース，リソース，およびサーバ定義の設計）の流れについて説明します。

また，HADBサーバに格納するデータ（入力データ）の容量を基に，リソースとメモリ所要量を事前に見積もる方法について説明します。

4.1　システム設計の流れ

システム設計で行う次の設計の流れを図に示します。

データベースの設計

リソースの設計

サーバ定義の設計

図4‒1　システム設計の流れ（データベースの設計）

システム設計で行うデータベースの設計については，「5.　データベースの設計」を参照してください。

メモ

データベースを設計する前に，HADBサーバに格納するデータ（入力データ）の容量を基に，おおよそのデータベースの容量およびメモリ所要量を見積もることができます。詳細については，次の項目を参照してください。

「4.2　リソースの事前見積もり」

「4.3　メモリ所要量の事前見積もり」

図4‒2　システム設計の流れ（リソースの設計）

システム設計で行うリソースの設計については，「6.　リソースの設計」を参照してください。

図4‒3　システム設計の流れ（サーバ定義の設計）

システム設計で行うサーバ定義の設計については，「7.　サーバ定義の設計」を参照してください。

4.2　リソースの事前見積もり

HADBサーバに格納するデータ（入力データ）の容量を基に，各リソースの容量を見積もる方法について説明します。ここでは，次に示すディレクトリ下のディレクトリやファイルの容量を見積もります。

DBディレクトリ

サーバディレクトリ

アーカイブディレクトリ

アンロードファイルの格納ディレクトリ

同義語辞書ファイルの格納ディレクトリ

マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリ

データベースを設計する前に，入力データを基におおよその容量を把握したい場合，次項以降の計算式を利用してください。ただし，詳細な容量は見積もれないため，あくまで目安としてください。

詳細な容量を見積もる場合は，「5.　データベースの設計」を参照してデータベースを設計してから，容量を見積もってください。

4.2.1　DBディレクトリの事前見積もり

入力データを基に，DBディレクトリ下のディレクトリやファイルの容量を見積もる計算式を次の表に示します。項番1〜項番14で見積もった値を合計した値が，DBディレクトリ全体の容量になります。

ここで見積もった容量を基に，十分に空き容量のあるディスクを用意してください。

表4‒1　計算式（DBディレクトリの容量）

項番

ディレクトリ名およびファイル名

説明

計算式（単位：ギガバイト）

1

$DBDIR/ADBMST※13

マスタディレクトリ用DBエリアファイル

0.01

2

$DBDIR/ADBDIC※13

ディクショナリ用DBエリアファイル

0.5

3

$DBDIR/ADBSTBL※13

システム表用DBエリアファイル

0.5

4

$DBDIR/ADBWRK

作業表用DBエリアファイル※12

org_data※1×1※2

5

$DBDIR/DBAREA※3，※13

ローストア表を格納するデータ用DBエリアファイル

org_data※1×2

6

カラムストア表を格納するデータ用DBエリアファイル

org_data※1

7

B-treeインデクスを格納するデータ用DBエリアファイル

org_data※1×1※4

8

テキストインデクスを格納するデータ用DBエリアファイル

org_data※1×1.2※5

9

レンジインデクスを格納するデータ用DBエリアファイル

org_data※1×0.00002＋0.2※6

10

$DBDIR/ADBSYS/ADBSLG

システムログファイル用ディレクトリ

1※7，※8

11

$DBDIR/ADBSYS/ADBSTS

ステータスファイル用ディレクトリ

12

$DBDIR/ADBSYS/ADBUTL

コマンドステータスファイル用ディレクトリ

13

$DBDIR/ADBWORK※9

作業用ディレクトリ※12

db_idx×2※10，※14

14

$DBDIR/SPOOL※11

障害情報（コアファイル）の出力先ディレクトリ※12

2

（凡例）

org_data：入力データファイルの容量（単位：ギガバイト）

db_idx：項番7B-treeインデクスを格納するデータ用DBエリアファイルで求めた値（単位：ギガバイト）

注※1

入力データファイルを圧縮している場合は，入力データファイル内のデータを伸長したデータ量を代入してください。

注※2

作業表を使用するSQLの結果に大きく依存するため，データ量によっては計算式で求めた値以上の容量が必要になります。

注※3

adbinitコマンドでHADB管理者が指定した名称になります。

注※4

B-treeインデクスを定義する列のデータ型およびデータ件数がわかっている場合，次に示す計算式で求めた方が，詳細に容量を見積もることができます。データ用DBエリアに格納するB-treeインデクス数だけ計算してください。計算結果は，「表4‒1　計算式（DBディレクトリの容量）」のB-treeインデクスを格納するデータ用DBエリアファイルで求めた値に加算してください。

計算式（単位：ギガバイト）

変数の説明

KEYSZ

B-treeインデクスを定義する列の長さ（単位：バイト）

「5.8.4　B-treeインデクスのキー長（KEYSZ）の求め方」を参照してください。

row_num

B-treeインデクスを定義した表のデータ件数

ENT_NUM

次に示す計算式から求めてください。

計算式

注※5

テキストインデクスの定義時に「テキストインデクス表記ゆれ補正指定」，または，「テキストインデクスワード検索指定」を指定した場合は，次に示す計算式で求めてください。

計算式（単位：ギガバイト）

「テキストインデクス表記ゆれ補正指定」を指定した場合

「テキストインデクスワード検索指定」を指定した場合

「テキストインデクス表記ゆれ補正指定」，および「テキストインデクスワード検索指定」の両方を指定した場合

注※6

対象のレンジインデクスがマルチチャンク表に定義されている場合は，次に示す計算式で求めてください。

計算式（単位：ギガバイト）

変数の説明

chunk_num

総チャンク数

chunk_data（i）

i番目のチャンクのデータ量（単位：ギガバイト）

注※7

次に示すSQL文およびコマンドで扱うデータ量に大きく依存するため，データ量によってはこの値以上の容量が必要になります。

更新系SQL

adbimportコマンド

adbidxrebuildコマンド

adbmergechunkコマンド

注※8

項番10〜項番12を合わせて，1ギガバイトとして見積もってください。

注※9

次に示すコマンドに-wオプションを指定しない場合に，このディレクトリが使用されます。

adbimportコマンド

adbidxrebuildコマンド

adbmergechunkコマンド

adbunarchivechunkコマンド

adbreorgsystemdataコマンド

上記のコマンドに-wオプションを指定した場合，指定したディレクトリが作業用ディレクトリとして使用されます。

注※10

次に示すコマンドを実行するときだけ使用されます。

adbimportコマンド

adbidxrebuildコマンド

adbmergechunkコマンド

adbunarchivechunkコマンド

adbreorgsystemdataコマンド

B-treeインデクスを定義した列のデータ型およびB-treeインデクスを定義した数に大きく依存するため，データ量によっては計算式で求めた値以上の容量が必要になります。

また，テキストインデクスを定義した場合は，次に示す計算式で求めてください。

計算式（単位：ギガバイト）

注※11

サーバ定義のadb_core_pathオペランドを指定した場合は，$DBDIR/SPOOLディレクトリ下ではなく，adb_core_pathオペランドに指定したディレクトリ下にコアファイルが出力されます。

なお，コアファイルの出力がsystemd-coredumpによって制御されている場合，コアファイルは/var/lib/systemd/coredumpディレクトリ下に出力されます。デフォルトの設定では，RHEL 8の場合はLZ4形式で，RHEL 9以降の場合はZstandard形式で圧縮されて出力されます。この場合，$DBDIR/SPOOLディレクトリは，トラブルシュート情報の収集時にコアファイル展開用の一時ディレクトリとして使用されます。adb_core_pathオペランドを指定したときは，adb_core_pathオペランドに指定したディレクトリがコアファイル展開用の一時ディレクトリとして使用されます。

注※12

マルチノード機能を使用する場合は，全ノードで見積もりが必要となるディレクトリおよびファイルです。

注※13

クラウドストレージ機能を使用する場合は，$DBDIR下にDBエリアファイルは作成されません。AWS環境の場合は，S3バケット内のS3オブジェクトにこれらのDBエリアのデータが格納されます。Azure環境の場合は，コンテナー内のBLOBにこれらのDBエリアのデータが格納されます。

注※14

次の条件をすべて満たす場合は，「×2」を「×3」としてください。

サーバ定義のadb_cmd_ixrec_file_useオペランドにREUSABLEを指定する場合

クラウドストレージ機能のシステムディレクトリ対応オプションが無効な場合

4.2.2　サーバディレクトリの事前見積もり

入力データを基に，サーバディレクトリ下のファイル容量の見積もり値を次の表に示します。項番1〜項番6で見積もった値を合計した値が，サーバディレクトリ全体の容量になります。

表4‒2　見積もり値（サーバディレクトリの容量）

項番

ディレクトリ名およびファイル名

説明

見積もり値（単位：ギガバイト）

1

$ADBDIR/spool/adbmessageXX.log※1

サーバメッセージログファイル※5

0.064

2

$ADBDIR/spool/adbstatlogXX※1，※2

統計ログファイル※5

16

3

$ADBDIR/spool/adbdumpYYYYMMDDhhmmss.サーバプロセスのプロセスID※3

HADBダンプファイル※5

100

4

$ADBDIR/spool/adbsqltrcXX.log※4

SQLトレースファイル※5

2

5

$ADBDIR/spool/adbcolumnize01

更新行のカラム化機能で使用するログファイル※5

0.1

6

$ADBDIR/spool/adboptlogXX※6

アクセスパス探索情報ログファイル※5

0.2

注※1

ファイル名のXXは通番であり，01〜04のどれかになります。

注※2

サーバ定義adb_sta_log_pathオペランドを指定している場合は，サーバ定義adb_sta_log_pathオペランドに指定したディレクトリ下に出力されます。

サーバ定義adb_sta_log_pathオペランドについては，「7.2.8　統計情報に関するオペランド（set形式）」のadb_sta_log_pathオペランドを参照してください。

注※3

ファイル名のYYYYMMDDhhmmssは，ファイルを生成した時刻になります。

注※4

ファイル名のXXは通番であり，01〜08のどれかになります。

注※5

マルチノード機能を使用する場合は，全ノードで見積もりが必要となるファイルです。

注※6

ファイル名のXXは通番であり，01〜02のどちらかになります。

4.2.3　アーカイブディレクトリの事前見積もり

アーカイブディレクトリ下に格納されるアーカイブファイルの容量を見積もる計算式を，次に示します。見積もった値が，アーカイブディレクトリ全体の容量になります。

アーカイブマルチチャンク表を定義して，adbarchivechunkコマンドでチャンク内のデータをアーカイブする場合に，次に示す計算式で求めてください。

計算式（単位：ギガバイト）

注※

アーカイブマルチチャンク表に格納されるデータによって，アーカイブ時の圧縮率が変わります。そのため，計算式で求めた値よりも，実際には大きな容量が必要になることがあります。

変数の説明

archive_chunk_num

アーカイブ対象のチャンク数（単位：個）

archive_chunk_data(i)

i番目のアーカイブ対象のチャンクに格納される元データのサイズ（単位：ギガバイト）

4.2.4　アンロードファイルの格納ディレクトリの事前見積もり

アンロードファイルの格納ディレクトリ下に格納されるアンロードファイルの容量の見積もり値を，次に示します。

アンロードファイルは，adbreorgsystemdataコマンドでディクショナリ表およびシステム表を再編成する場合に作成されます。

値（単位：ギガバイト）

0.5※

注※

実際のアンロードファイルの容量は，再編成の対象とするディクショナリ表およびシステム表の容量によって変わります。

4.2.5　同義語辞書ファイルの格納ディレクトリの事前見積もり

同義語辞書ファイルの格納ディレクトリ下に格納される同義語辞書ファイルの容量を見積もる計算式を，次に示します。見積もった値が，同義語辞書ファイルの格納ディレクトリ全体の容量になります。

adbsyndictコマンドで同義語辞書を作成する場合に，次に示す計算式で求めてください。

計算式（単位：ギガバイト）

変数の説明

syndict_num

作成する同義語辞書の数（単位：個）

syndict_data(i)

各同義語辞書の同義語一覧定義ファイルのサイズ（単位：ギガバイト）

メモ

同義語辞書ファイルの格納ディレクトリとは，サーバ定義のadb_syndict_storage_pathオペランドに指定するディレクトリのことです。

4.2.6　マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリの事前見積もり

マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリの事前見積もり式は，「4.2.5　同義語辞書ファイルの格納ディレクトリの事前見積もり」と同じになります。見積もった値が，マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリ全体の容量になります。

なお，マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリは，全ノードで見積もりが必要になります。

メモ

マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリとは，サーバ定義のadb_syndict_node_storage_pathオペランドに指定するディレクトリのことです。

4.3　メモリ所要量の事前見積もり

ここでは，「4.2　リソースの事前見積もり」で求めた値を基に，メモリ所要量を見積もる方法について説明します。HADBサーバが使用するメモリは，共有メモリおよびプロセスメモリです。共有メモリには次の4種類があります。

共有メモリ管理

グローバルバッファページ

プロセス共通メモリ

リアルスレッド固有メモリ

データベースを設計する前に，おおよそのメモリ所要量を把握したい場合，次項以降の計算式を利用してください。しかし，詳細なメモリ所要量は見積もれないため，あくまで目安としてください。

HADBサーバが使用するメモリ所要量は，次に示す処理のうち，どれを実行するかで大きく異なります。

■HADBサーバ開始後に実行する処理

通常運用（データベースへの接続，SQL文の実行）を行う場合

adbimportコマンドを実行してデータインポートを行う場合

adbidxrebuildコマンドを実行してインデクスを再作成する場合

adbgetcstコマンドを実行してコスト情報を収集する場合

adbexportコマンドを実行してデータエクスポートを行う場合

adbmergechunkコマンドを実行して複数のチャンクをマージする場合

adbarchivechunkコマンドを実行してチャンクをアーカイブする場合

adbunarchivechunkコマンドを実行してチャンクのアーカイブ状態を解除する場合

そのため，それぞれの処理で使用するメモリの所要量を求めてください。求めたメモリ所要量のうち，最も大きい値をHADBサーバが使用するメモリ所要量として見積もってください。

通常運用（データベースへの接続，SQL文の実行）を行う場合

「4.3.1　通常運用時のメモリ所要量の事前見積もり」を参照してください。

adbimportコマンドを実行する場合

「4.3.2　adbimportコマンド実行時のメモリ所要量の事前見積もり」を参照してください。

adbidxrebuildコマンドを実行する場合

「4.3.3　adbidxrebuildコマンド実行時のメモリ所要量の事前見積もり」を参照してください。

adbgetcstコマンドを実行する場合

「4.3.4　adbgetcstコマンド実行時のメモリ所要量の事前見積もり」を参照してください。

adbexportコマンドを実行する場合

「4.3.5　adbexportコマンド実行時のメモリ所要量の事前見積もり」を参照してください。

adbmergechunkコマンドを実行する場合

「4.3.6　adbmergechunkコマンド実行時のメモリ所要量の事前見積もり」を参照してください。

adbarchivechunkコマンドを実行する場合

「4.3.7　adbarchivechunkコマンド実行時のメモリ所要量の事前見積もり」を参照してください。

adbunarchivechunkコマンドを実行する場合

「4.3.8　adbunarchivechunkコマンド実行時のメモリ所要量の事前見積もり」を参照してください。

なお，詳細なメモリ所要量を見積もる場合は，データベースの設計およびDBエリアの容量見積もりのあとで，「6.3　HADBサーバのメモリ所要量の見積もり」を参照してください。

4.3.1　通常運用時のメモリ所要量の事前見積もり

通常運用時に使用するメモリ所要量の計算式を，次の表に示します。

表4‒3　メモリ所要量の求め方（通常運用時）

項番

メモリ種別

計算式（単位：メガバイト）

関連するサーバ定義

1

共有メモリ

共有メモリ管理

100

なし

2

グローバルバッファページ

dbarea_num×1,024＋（db_idx×1,024）

adbbuffオペランド

3

プロセス共通メモリ

1,024＋max_users＋GBUF＋EBUF

adb_sys_proc_area_maxオペランド

adbbuffオペランド

4

リアルスレッド固有メモリ

rthd_num×1,074

adb_sys_rthd_area_maxオペランド

5

プロセスメモリ

ヒープメモリ

1,024

なし

変数の説明

dbarea_num：データ用DBエリアの数

見積もれない場合，定義する表とインデクスの合計値を仮定してください。

max_users

サーバ定義adb_sys_max_usersオペランドの指定値

GBUF：グローバルバッファ

項番2「グローバルバッファページ」の計算結果を基に400メガバイトにつき，20メガバイトを加算してください。

EBUF

DBエリア暗号化機能を使用する場合は，「全リアルスレッド数×1メガバイト」を加算してください。

rthd_num：全リアルスレッド数

見積もれない場合，HADBサーバをインストールしたマシンのCPUのコア数を仮定してください。

db_idx：インデクスを格納するデータ用DBエリアの容量（単位：ギガバイト）

「4.2.1　DBディレクトリの事前見積もり」の「表4‒1　計算式（DBディレクトリの容量）」にある次の項目で求めた値を代入してください。

B-treeインデクスを格納するデータ用DBエリアファイル

テキストインデクスを格納するデータ用DBエリアファイル

レンジインデクスを格納するデータ用DBエリアファイル

4.3.2　adbimportコマンド実行時のメモリ所要量の事前見積もり

adbimportコマンド実行時に使用するメモリ所要量の計算式を，次の表に示します。

表4‒4　メモリ所要量の求め方（adbimportコマンド実行時）

項番

メモリ種別

計算式（単位：メガバイト）

関連するサーバ定義

1

共有メモリ

共有メモリ管理

100

なし

2

グローバルバッファページ

dbarea_num×1,024

adbbuffオペランド

3

プロセス共通メモリ

1,024＋max_users＋GBUF＋EBUF

adb_sys_proc_area_maxオペランド

adbbuffオペランド

4

リアルスレッド固有メモリ

512＋SORTBUF＋BLKBUF

adb_sys_rthd_area_maxオペランド

5

プロセスメモリ

ヒープメモリ

1,024＋sort_rthd×0.5

なし

変数の説明

dbarea_num

データ用DBエリアの数

見積もれない場合，定義する表とインデクスの合計値を仮定してください。

max_users

サーバ定義adb_sys_max_usersオペランドの指定値

GBUF

グローバルバッファ

項番2「グローバルバッファページ」の計算結果を基に400メガバイトにつき，20メガバイトを加算してください。

EBUF

DBエリア暗号化機能を使用する場合は，「全リアルスレッド数×1メガバイト」を加算してください。

SORTBUF

ソートバッファ

次に示す計算式から求めてください。

計算式（単位：メガバイト）

sort_buff_size

インポートオプションadb_import_sort_buff_sizeの指定値

sort_rthd

次に示す計算式から求めてください。

インポートオプションadb_import_rthd_numの指定値－1

BLKBUF

インデクス作成用バッファ

次に示す計算式から求めてください。

計算式（単位：メガバイト）

buff_blk_size

4,096を仮定してください。

buff_blk_num

インポートオプションadb_import_buff_blk_numの指定値

import_rthd

次に示す計算式から求めてください。

インポートオプションadb_import_rthd_numの指定値－1

txt_sort_buff_size

インポートオプションadb_import_txt_buff_sizeの指定値

4.3.3　adbidxrebuildコマンド実行時のメモリ所要量の事前見積もり

adbidxrebuildコマンド実行時に使用するメモリ所要量の計算式を，次の表に示します。

表4‒5　メモリ所要量の求め方（adbidxrebuildコマンド実行時）

項番

メモリ種別

計算式（単位：メガバイト）

関連するサーバ定義

1

共有メモリ

共有メモリ管理

100

なし

2

グローバルバッファページ

dbarea_num×1,024

adbbuffオペランド

3

プロセス共通メモリ

1,024＋max_users＋GBUF＋EBUF

adb_sys_proc_area_maxオペランド

adbbuffオペランド

4

リアルスレッド固有メモリ

512＋SORTBUF＋BLKBUF

adb_sys_rthd_area_maxオペランド

5

プロセスメモリ

ヒープメモリ

1,024＋sort_rthd×0.5

なし

変数の説明

dbarea_num

データ用DBエリアの数

見積もれない場合，定義する表とインデクスの合計値を仮定してください。

max_users

サーバ定義adb_sys_max_usersオペランドの指定値

GBUF

グローバルバッファ

項番2「グローバルバッファページ」の計算結果を基に400メガバイトにつき，20メガバイトを加算してください。

EBUF

DBエリア暗号化機能を使用する場合は，「全リアルスレッド数×1メガバイト」を加算してください。

SORTBUF

ソートバッファ

次に示す計算式から求めてください。

計算式（単位：メガバイト）

sort_buff_size

インデクス再作成オプションadb_idxrebuild_sort_buff_sizeの指定値

sort_rthd

次に示す計算式から求めてください。

インデクス再作成オプションadb_idxrebuild_rthd_numの指定値－1

BLKBUF

インデクス作成用バッファ

次に示す計算式から求めてください。

計算式（単位：メガバイト）

buff_blk_size

4,096を仮定してください。

buff_blk_num

インデクス再作成オプションadb_idxrebuild_buff_blk_numの指定値

scan_rthd

次に示す計算式から求めてください。

↓（インデクス再作成オプションadb_idxrebuild_rthd_numの指定値－1）÷2↓

dividx_rthd

次に示す計算式から求めてください。

インデクス再作成オプションadb_idxrebuild_rthd_numの指定値－1

txt_sort_buff_size

インデクス再作成オプションadb_idxrebuild_txt_buff_sizeの指定値

4.3.4　adbgetcstコマンド実行時のメモリ所要量の事前見積もり

adbgetcstコマンド実行時に使用するメモリ所要量の計算式を，次の表に示します。

表4‒6　メモリ所要量の求め方（adbgetcstコマンド実行時）

項番

メモリ種別

計算式（単位：メガバイト）

関連するサーバ定義

1

共有メモリ

共有メモリ管理

100

なし

2

グローバルバッファページ

dbarea_num×1,024

adbbuffオペランド

3

プロセス共通メモリ

1,024＋max_users＋GBUF＋EBUF

adb_sys_proc_area_maxオペランド

adbbuffオペランド

4

リアルスレッド固有メモリ

rthd_num×512

adb_sys_rthd_area_maxオペランド

5

プロセスメモリ

ヒープメモリ

1,024

なし

変数の説明

dbarea_num：データ用DBエリアの数

見積もれない場合，定義する表とインデクスの合計値を仮定してください。

max_users

サーバ定義adb_sys_max_usersオペランドの指定値

GBUF：グローバルバッファ

項番2「グローバルバッファページ」の計算結果を基に400メガバイトにつき，20メガバイトを加算してください。

EBUF

DBエリア暗号化機能を使用する場合は，「全リアルスレッド数×1メガバイト」を加算してください。

rthd_num

コスト情報収集オプションadb_getcst_rthd_numの指定値

4.3.5　adbexportコマンド実行時のメモリ所要量の事前見積もり

adbexportコマンド実行時に使用するメモリ所要量の計算式を，次の表に示します。

表4‒7　メモリ所要量の求め方（adbexportコマンド実行時）

項番

メモリ種別

計算式（単位：メガバイト）

関連するサーバ定義

1

共有メモリ

共有メモリ管理

100

なし

2

グローバルバッファページ

dbarea_num×1,024＋（db_idx×1,024）

adbbuffオペランド

3

プロセス共通メモリ

1,024＋max_users＋GBUF＋（scan_buff_size×rthd_num×4）＋EBUF

adb_sys_proc_area_maxオペランド

adbbuffオペランド

4

リアルスレッド固有メモリ

rthd_num×512

adb_sys_rthd_area_maxオペランド

5

プロセスメモリ

ヒープメモリ

1,024

なし

変数の説明

dbarea_num：データ用DBエリアの数

見積もれない場合，定義する表とインデクスの合計値を仮定してください。

max_users

サーバ定義adb_sys_max_usersオペランドの指定値

GBUF：グローバルバッファ

項番2「グローバルバッファページ」の計算結果を基に400メガバイトにつき，20メガバイトを加算してください。

scan_buff_size

エクスポートオプションadb_export_scan_buff_sizeの指定値

rthd_num

エクスポートオプションadb_export_rthd_numの指定値

db_idx：インデクスを格納するデータ用DBエリアの容量（単位：ギガバイト）

「4.2.1　DBディレクトリの事前見積もり」の「表4‒1　計算式（DBディレクトリの容量）」にある次の項目で求めた値を代入してください。

B-treeインデクスを格納するデータ用DBエリアファイル

テキストインデクスを格納するデータ用DBエリアファイル

レンジインデクスを格納するデータ用DBエリアファイル

EBUF

DBエリア暗号化機能を使用する場合は，「全リアルスレッド数×1メガバイト」を加算してください。

4.3.6　adbmergechunkコマンド実行時のメモリ所要量の事前見積もり

adbmergechunkコマンド実行時に使用するメモリ所要量の計算式を，次の表に示します。

表4‒8　メモリ所要量の求め方（adbmergechunkコマンド実行時）

項番

メモリ種別

計算式（単位：メガバイト）

関連するサーバ定義

1

共有メモリ

共有メモリ管理

100

なし

2

グローバルバッファページ

dbarea_num×1,024

adbbuffオペランド

3

プロセス共通メモリ

1,024＋max_users＋GBUF＋EBUF

adb_sys_proc_area_maxオペランド

adbbuffオペランド

4

リアルスレッド固有メモリ

512＋SORTBUF＋BLKBUF

adb_sys_rthd_area_maxオペランド

5

プロセスメモリ

ヒープメモリ

1,024＋sort_rthd×0.5

なし

変数の説明

dbarea_num

データ用DBエリアの数

見積もれない場合，定義する表とインデクスの合計値を仮定してください。

max_users

サーバ定義adb_sys_max_usersオペランドの指定値

GBUF

グローバルバッファ

項番2「グローバルバッファページ」の計算結果を基に400メガバイトにつき，20メガバイトを加算してください。

EBUF

DBエリア暗号化機能を使用する場合は，「全リアルスレッド数×1メガバイト」を加算してください。

SORTBUF

ソートバッファ

次に示す計算式から求めてください。

計算式（単位：メガバイト）

sort_buff_size

マージチャンクオプションadb_mergechunk_sort_buff_sizeの指定値

sort_rthd

次に示す計算式から求めてください。

マージチャンクオプションadb_mergechunk_rthd_numの指定値－1

BLKBUF

インデクス作成用バッファ

次に示す計算式から求めてください。

計算式（単位：メガバイト）

buff_blk_size

4,096を仮定してください。

buff_blk_num

マージチャンクオプションadb_mergechunk_buff_blk_numの指定値

scan_rthd

次に示す計算式から求めてください。

↓（マージチャンクオプションadb_mergechunk_rthd_numの指定値－1）÷2↓

dividx_rthd

次に示す計算式から求めてください。

マージチャンクオプションadb_mergechunk_rthd_numの指定値－1

txt_sort_buff_size

マージチャンクオプションadb_mergechunk_txt_buff_sizeの指定値

4.3.7　adbarchivechunkコマンド実行時のメモリ所要量の事前見積もり

adbarchivechunkコマンド実行時に使用するメモリ所要量の計算式を，次の表に示します。

表4‒9　メモリ所要量の求め方（adbarchivechunkコマンド実行時）

項番

メモリ種別

計算式（単位：メガバイト）

関連するサーバ定義

1

共有メモリ

共有メモリ管理

100

なし

2

グローバルバッファページ

dbarea_num×1,024＋（db_idx×1,024）

adbbuffオペランド

3

プロセス共通メモリ

1,024＋max_users＋GBUF＋（scan_buff_size×rthd_num×4）＋EBUF

adb_sys_proc_area_maxオペランド

adbbuffオペランド

4

リアルスレッド固有メモリ

rthd_num×512

adb_sys_rthd_area_maxオペランド

5

プロセスメモリ

ヒープメモリ

1,024

なし

変数の説明

dbarea_num：データ用DBエリアの数

見積もれない場合，定義する表とインデクスの合計値を仮定してください。

db_idx：インデクスを格納するデータ用DBエリアの容量（単位：ギガバイト）

「4.2.1　DBディレクトリの事前見積もり」の「表4‒1　計算式（DBディレクトリの容量）」にある次の項目で求めた値を代入してください。

B-treeインデクスを格納するデータ用DBエリアファイル

テキストインデクスを格納するデータ用DBエリアファイル

レンジインデクスを格納するデータ用DBエリアファイル

max_users

サーバ定義adb_sys_max_usersオペランドの指定値

GBUF：グローバルバッファ

項番2「グローバルバッファページ」の計算結果を基に400メガバイトにつき，20メガバイトを加算してください。

scan_buff_size

アーカイブチャンクオプションadb_arcv_scan_buff_sizeの指定値

rthd_num

アーカイブチャンクオプションadb_arcv_rthd_numの指定値

EBUF

DBエリア暗号化機能を使用する場合は，「全リアルスレッド数×1メガバイト」を加算してください。

4.3.8　adbunarchivechunkコマンド実行時のメモリ所要量の事前見積もり

adbunarchivechunkコマンド実行時に使用するメモリ所要量の計算式を，次の表に示します。

表4‒10　メモリ所要量の求め方（adbunarchivechunkコマンド実行時）

項番

メモリ種別

計算式（単位：メガバイト）

関連するサーバ定義

1

共有メモリ

共有メモリ管理

100

なし

2

グローバルバッファページ

dbarea_num×1,024

adbbuffオペランド

3

プロセス共通メモリ

1,024＋max_users＋GBUF＋EBUF

adb_sys_proc_area_maxオペランド

adbbuffオペランド

4

リアルスレッド固有メモリ

512＋SORTBUF＋BLKBUF

adb_sys_rthd_area_maxオペランド

5

プロセスメモリ

ヒープメモリ

1,024＋sort_rthd×0.5

なし

変数の説明

dbarea_num

データ用DBエリアの数

見積もれない場合，定義する表とインデクスの合計値を仮定してください。

max_users

サーバ定義adb_sys_max_usersオペランドの指定値

GBUF

グローバルバッファ

項番2「グローバルバッファページ」の計算結果を基に400メガバイトにつき，20メガバイトを加算してください。

EBUF

DBエリア暗号化機能を使用する場合は，「全リアルスレッド数×1メガバイト」を加算してください。

SORTBUF

ソートバッファ

次に示す計算式から求めてください。

計算式（単位：メガバイト）

sort_buff_size

アンアーカイブチャンクオプションadb_unarcv_sort_buff_sizeの指定値

sort_rthd

次に示す計算式から求めてください。

アンアーカイブチャンクオプションadb_unarcv_rthd_numの指定値－1

BLKBUF

インデクス作成用バッファ

次に示す計算式から求めてください。

計算式（単位：メガバイト）

buff_blk_size

4,096を仮定してください。

buff_blk_num

アンアーカイブチャンクオプションadb_unarcv_buff_blk_numの指定値

unarcv_rthd

次に示す計算式から求めてください。

アンアーカイブチャンクオプションadb_unarcv_rthd_numの指定値－1

txt_sort_buff_size

アンアーカイブチャンクオプションadb_unarcv_txt_buff_sizeの指定値

5　データベースの設計

この章では，表の設計，インデクスの設計，各DBエリアの設計，および各DBエリアの容量見積もりについて説明します。

5.1　データベースの設計手順

データベースの設計手順を，次の図に示します。

図5‒1　データベースの設計手順

注※1

手順の詳細については，「5.2　表の設計」を参照してください。

注※2

手順の詳細については，次の個所を参照してください。

「5.3　B-treeインデクスの設計」

「5.4　テキストインデクスの設計」

「5.5　レンジインデクスの設計」

注※3

手順の詳細については，「5.6　データ用DBエリアの設計」を参照してください。

注※4

手順の詳細については，「5.7　作業表用DBエリアの設計」を参照してください。

注※5

手順の詳細については，次の個所を参照してください。

「5.8　データ用DBエリアの容量見積もり」

「5.9　作業表用DBエリアの容量見積もり」

「5.10　マスタディレクトリ用DBエリアの容量見積もり」

「5.11　ディクショナリ用DBエリアの容量見積もり」

「5.12　システム表用DBエリアの容量見積もり」

5.2　表の設計

ここでは，実表を設計する際に検討する項目について説明します。

5.2.1　表を設計する際の流れ

表を設計する際の流れを次に示します。

表をローストア表として定義するか，またはカラムストア表として定義するかを決める

「5.2.2　ローストア表とカラムストア表の選択基準」を参照して，表をローストア表として定義するか，またはカラムストア表として定義するかを決めます。

表をシングルチャンク表として定義するか，またはマルチチャンク表として定義するかを決める

「5.2.3　シングルチャンク表とマルチチャンク表の選択基準」を参照して，表をシングルチャンク表として定義するか，またはマルチチャンク表として定義するかを決めます。

表をローストア表として定義する場合は，表の正規化を検討する

「5.2.6　表の正規化【ローストア表】」を参照して，表の正規化を検討します。

表定義の際に指定する各項目を検討する（CREATE TABLE文に指定するオプションを検討する）

次の個所を参照して，表定義の際に指定する各項目を検討してください。

「5.2.7　行長の固定（FIX指定）【ローストア表】」

「5.2.8　列の既定値の設定（DEFAULT句）」

「5.2.9　主キー（一意性制約定義）の指定（PRIMARY KEY）【シングルチャンク表】」

「5.2.10　外部キーの指定（FOREIGN KEY）」

「5.2.11　データページ内の未使用領域の確保（PCTFREE）【ローストア表】」

「5.2.12　可変長データ型の列データの分岐指定（BRANCH）【ローストア表】」

メモ

【ローストア表】と記載されている項目は，表をローストア表として定義する場合に検討する項目です。表をカラムストア表として定義する場合は，検討不要な項目です。

【シングルチャンク表】と記載されている項目は，表をシングルチャンク表として定義する場合に検討する項目です。表をマルチチャンク表として定義する場合は，検討不要な項目です。

5.2.2　ローストア表とカラムストア表の選択基準

ここでは，表をローストア表として定義するか，カラムストア表として定義するかの選択基準について説明します。

(1)　カラムストア表の制限事項

カラムストア表には，次に示す運用上の制限事項があります。これらの制限事項によって運用上の問題が発生する場合は，表をローストア表として定義してください。

カラムストア表には，テキストインデクスを定義できません。

カラムストア表は，アーカイブマルチチャンク表として定義できません。

カラムストア表は，FIX表にはできません。

(2)　表をローストア表として定義するか，またはカラムストア表として定義するかの選択基準

表をローストア表として定義するか，またはカラムストア表として定義するかは，次の表に示す選択基準を基に決定してください。

表5‒1　ローストア表とカラムストア表の選択基準

定義する表に対してどのような検索をするか，または定義する表の特徴

適している表の種類

定義する表に対して行われる検索

次のような検索が実行される表の場合

行単位でデータにアクセスするような検索をすることが多い場合

SELECT文の選択式に*を指定したり，選択式にほぼすべての列を指定したりするような場合が該当します。

検索対象のデータを，B-treeインデクスを使用して絞り込むような検索をすることが多い場合

ローストア表

次のような検索が実行される表の場合

検索対象のデータをあまり絞り込まないで，特定の列データ全体を検索することが多い場合

特定の範囲内（特定の年や月など）の，特定の列データにアクセスすることが多い場合

特定の列データに対する値の集計（平均や合計などを求める）をすることが多い場合

特定の列データのグループ化をすることが多い場合

カラムストア表

定義する表に対して行われる操作

データの追加，更新，削除を行う表の場合

INSERT文，UPDATE文，およびDELETE文に対する処理性能はローストア表の方が優れています。また，カラムストア表に対して，INSERT文，UPDATE文，およびDELETE文を実行した場合，実行後の検索性能が低下※することがあります。そのため，定型的な業務でSQL文によるデータの追加，更新，削除を行う場合は，ローストア表として定義してください。

ローストア表

定義する表のデータ容量

データ容量が比較的小さい表の場合

表のデータ容量，または1回のデータインポートで格納するデータ容量が，比較的小さい表が該当します。目安としては，データインポートの際の入力データファイルのサイズが1ギガバイト未満の表が該当します。

なお，ローストア表のデータ容量は，データインポートの際の入力データファイルのサイズの約2倍になります。ただし，この数値は，インポートするデータの内容によって変動があります。

通常，ローストア表のデータ容量は，カラムストア表のデータ容量より大きくなります。

ローストア表

データ容量が大きい表の場合

表のデータ容量，または1回のデータインポートで格納するデータ容量が大きい表が該当します。目安としては，入力データファイルのサイズが1ギガバイト以上の表が該当します。

なお，カラムストア表のデータ容量は，データインポートの際の入力データファイルのサイズの約1/2になります。ただし，この数値は，インポートするデータの内容によって変動があります。

通常，カラムストア表のデータ容量は，ローストア表のデータ容量より小さくなります。

カラムストア表

データウェアハウスでの使い方

解析対象のデータを格納する表と主キーで結合するような表の場合

データウェアハウスでのディメンジョン表やマスタ表などが該当します。

ローストア表

解析対象のデータを格納する表の場合

データウェアハウスでのファクト表や，ログデータまたはセンサデータを格納する表などが該当します。

特に，解析対象のデータ（レンジインデクスによる絞り込みなどで検索対象となるデータ）が，数ギガバイト以上の場合は，カラムストア表として表を定義することを推奨します。

解析対象のデータのサイズは，データインポートの際の入力データファイルを基に見積もってください。

なお，解析対象のデータが数百メガバイト以下の場合は，解析対象のデータを格納する表であっても，ローストア表として表を定義することを推奨します。

カラムストア表

表に定義する列のデータ型

表に配列型の列を定義する場合

カラムストア表として定義してください。

カラムストア表

注※

更新行のカラム化機能を有効にすると，カラムストア表の検索性能の低下を防ぐことができます。更新行のカラム化機能については，「11.21　更新行のカラム化機能の運用（カラムストア表の検索性能の維持）」を参照してください。

重要

カラムストア表に適した表は，マルチチャンク表に適するケースが多いため，カラムストア表かつマルチチャンク表として表を定義することを推奨します。表をマルチチャンク表として定義する際の考慮点については，「5.2.4　マルチチャンク表を定義する場合の考慮点」を参照してください。

表をローストア表として定義する場合は，CREATE TABLE文のSTORAGE FORMATオプションにROWを指定するか，またはSTORAGE FORMATオプションの指定を省略してください。表をカラムストア表として定義する場合は，CREATE TABLE文のSTORAGE FORMATオプションにCOLUMNを指定してください。

CREATE TABLE文については，マニュアルHADB　SQLリファレンスの定義系SQLを参照してください。

(3)　カラムストア表の検索時に使用されるB-treeインデクス

カラムストア表に定義したB-treeインデクスが，カラムストア表の検索時に使用されるケースは限定されています。カラムストア表で，B-treeインデクスを使用する代表的な例を次に示します。次のような絞り込みが有効な場合にだけ，カラムストア表にB-treeインデクスを定義することを推奨します。

SQL文の実行時に，インデクス指定で使用するインデクスを指定する場合

集合関数MINまたはMAXを指定して，最小値や最大値を求める場合

探索条件を指定して，UPDATE文またはDELETE文を実行する場合

特定の年や月のデータにアクセスするような場合は，レンジインデクスを定義して検索範囲を絞り込むことを推奨します。

カラムストア表の検索時に使用されるB-treeインデクスの規則については，マニュアルHADB　AP開発ガイドのSQL文の実行時に使用されるB-treeインデクスおよびテキストインデクスを参照してください。

メモ

B-treeインデクスを定義したカラムストア表には，更新行のカラム化機能は適用されません。更新行のカラム化機能については，「11.21　更新行のカラム化機能の運用（カラムストア表の検索性能の維持）」を参照してください。

(4)　カラムストア表の列データの圧縮方式

カラムストア表にデータをインポートする際，各列のデータは，次の表に示すどれかの方式で圧縮されます。そのため，ローストア表に比べてデータ容量が小さくなります。データインポートの実行時に，インポートするデータを基に，HADBサーバが次の表に示す圧縮方式のどれかを自動的に選択します。

表5‒2　カラムストア表の列データの圧縮方式の種類

項番

圧縮方式

説明

1

無圧縮（NONE）

データは圧縮されないで格納されます。

2

ランレングス圧縮（RUNLENGTH）

同じ値のデータが連続で出現した場合に，連続で出現したデータと繰り返し回数の組でデータを保存します。同じ値のデータが繰り返し連続して出現するような場合に有効な圧縮方式です。

圧縮の例：AAAABB → 4A2B

3

差分圧縮（DELTA）

先頭のデータの値と隣り合うデータの差分値とで，データを保存します。ある特定の値の周辺にデータが集中している場合に有効な圧縮方式です。

圧縮の例：100,99,101,103 → 100,-1,2,2

4

差分ランレングス圧縮（DELTA_RUNLENGTH）

対象のデータを差分圧縮したあとに，差分値のデータをランレングス圧縮します。一定の値でインクリメントするデータ（等差数列をなすデータ）の場合に有効な圧縮方式です。伝票番号などのように，番号が1つずつ加算されていくようなデータを圧縮する際に有効です。

5

辞書圧縮（DICTIONARY）

よく出現するデータを辞書に格納しておき，データ部には辞書へのインデクス（添え字）だけを格納します。カーディナリティ（データの種類）が少ない文字列データなどで有効な圧縮方式です。

なお，辞書のサイズは最大16キロバイトです。

圧縮の方法には，上記の表に示すようにデータの重複を排除する方式と，データ間の差分を取る方式があります。そのため，128バイト以上の文字列データや，128バイト以上のバイナリデータなどのように，データの重複があまりない場合や，データ間の差分が少ない場合は，圧縮効果が少ないことがあります。

メモ

データインポートの終了時に，HADBサーバが選択した圧縮方式がメッセージに出力されます。

データインポート時に圧縮方式が決定されます。そのため，同じ表へのデータインポートの場合に，インポートするデータのパターンが異なると，同じ列であっても圧縮方式が異なることがあります。

HADBサーバによる圧縮方式の選択は，データインポート時にデータを格納するスレッドごとに行われます。

HADBサーバは，格納する列データの先頭16メガバイト分の列データに対して圧縮率を計算し，最も圧縮率がよい圧縮方式を選択します。圧縮率が悪く，圧縮後のデータサイズが，無圧縮のデータサイズ以上になった場合は，無圧縮が選択されます。

なお，次に示す処理の場合に，カラムストア表の列ごとに圧縮方式を指定することもできます。この場合，常に指定した圧縮方式で列データが圧縮されます。

CREATE TABLE文でカラムストア表を定義する

ALTER TABLE文でカラムストア表に列を追加する

■UPDATE文またはDELETE文を実行するカラムストア表と圧縮方式の関係

更新を前提としたカラムストア表の場合，差分圧縮以外の圧縮方式を指定することを推奨※1します。HADBによる圧縮方式の自動選択※2をしないようにしてください。

［理由］

カラムストア形式のデータに対して，UPDATE文またはDELETE文を実行した場合，HADBは対象の行データを全列分伸長します。差分圧縮（DELTA）の伸長の際，先頭のデータから伸長対象のデータまでのすべての差分値を計算するため，ほかの圧縮方式よりも列の伸長処理に時間が掛かります。そのため，カラムストア表に差分圧縮（DELTA）が適用された列があると，UPDATE文またはDELETE文の実行時間が長くなります。

注※1

CREATE TABLE文の圧縮方式指定（COMPRESSION TYPE）で，差分圧縮（DELTA）および圧縮方式の自動選択（AUTO）以外を指定することを推奨します。

注※2

圧縮方式指定を省略した場合，または圧縮方式指定にAUTOを指定した場合，HADBが圧縮方式を自動選択します。その結果，圧縮方式に差分圧縮（DELTA）が適用される可能性があります。

(5)　ローストア表とカラムストア表の使い分けの例

ローストア表とカラムストア表の使い分けの例を，次に示す運用例を基に説明します。

運用例

A社では，各営業所からの売上データを集めた売上データ分析用のデータウェアハウスを構築しようとしている。売上データの分析軸として，日付，営業所，商品，顧客を考えている。このデータウェアハウスを構築するために，スキーマモデルとして，次の図に示すスタースキーマで構築することに決定した。

図5‒2　A社の売上データ分析用のデータウェアハウスのスキーマモデル

上記のスタースキーマの場合，SALES表がファクト表になります。また，PRODUCTS表，CUSTOMERS表，OFFICES表，およびCALENDAR表が，ディメンジョン表になります。各表には，次のデータが格納されています。

SALES表

SALES表には，売れた商品の商品ID，商品個数，単価，顧客ID，売上を計上した営業所のID，売上発生日などの売上データが，過去10年分格納されています。1日当たりおよそ10万件のデータが格納されるため，合計で3億6千万件くらいの売上データが格納されています。

売上データ中の商品ID，顧客ID，営業所ID，売上発生日には，それぞれPRODUCTS表，CUSTOMERS表，OFFICES表，CALENDAR表の主キーに当たるデータ（外部キー）が格納されています。

PRODUCTS表

PRODUCTS表には，A社が扱っている商品のデータ（商品ID，名称，カテゴリなど）が格納されています。

CUSTOMERS表

CUSTOMERS表には，A社の顧客のデータ（顧客ID，顧客名，顧客の業種，顧客の住所など）が格納されています。

OFFICES表

OFFICES表には，A社の営業所のデータ（営業所ID，営業所名，営業所の所在地など）が格納されています。

CALENDAR表

CALENDAR表には，日時に関するディメンジョンデータ（日付，月，四半期，年）が格納されています。

上記のようなスキーマモデルで，月次の売上データの集計，顧客ごとの売上分析，および営業ごとの売上分析などを行った場合，次のような検索が頻繁に実行されると予想されます。

SALES表に対する全件検索

SALES表中の，ある一定期間のデータの検索（今月のデータや前月のデータの検索など）

そのため，SALES表は，カラムストア表として定義します。また，売上発生日に対応する列にレンジインデクスを定義します。

PRODUCTS表，CUSTOMERS表，OFFICES表，およびCALENDAR表は，SALES表のデータにある外部キーによるジョインで使用されるケースが多くなると予想されます。これらの表は，データ件数が比較的多くないため，ローストア表として定義します。また，主キーに対応する列にB-treeインデクスを定義します。

5.2.3　シングルチャンク表とマルチチャンク表の選択基準

最初に，表をローストア表として定義するか，またはカラムストア表として定義するかを決めます。次に，その表をシングルチャンク表とするか，またはマルチチャンク表（レギュラーマルチチャンク表またはアーカイブマルチチャンク表）とするかを決めます。シングルチャンク表とマルチチャンク表の主な特徴を次に示します。

表5‒3　シングルチャンク表とマルチチャンク表（レギュラーマルチチャンク表またはアーカイブマルチチャンク表）の主な特徴

項目

表の種類

シングルチャンク表

マルチチャンク表

レギュラーマルチチャンク表

アーカイブマルチチャンク表

バックグラウンドインポート機能を使用できるかどうか

×

○

○

表に主キーを定義できるかどうか

○

×

×

表にユニークインデクスを定義できるかどうか

○

×

×

ローストア表のデータを圧縮できるかどうか

×

×

○

表のデータを更新または削除できるかどうか（UPDATE文またはDELETE文を実行できるかどうか）

○

○

△※1

検索に掛かる時間

○

○

△※2

（凡例）

○：実行できる，または性能への影響なし

△：更新または削除できないデータがある，または○に比べて性能が劣る

×：実行できない

注※1

アーカイブ状態のチャンク内のデータを更新または削除できません。

注※2

アーカイブ状態のチャンク内のデータを検索する場合が該当します。

なお，上記の表には，シングルチャンク表とマルチチャンク表の主な特徴だけを記載しています。シングルチャンク表とマルチチャンク表のメリット，デメリット，および制限事項などについては，次の個所を参照してください。次の個所を読んで表をシングルチャンク表とするか，またはマルチチャンク表（レギュラーマルチチャンク表またはアーカイブマルチチャンク表）とするかを決めてください。

「5.2.4　マルチチャンク表を定義する場合の考慮点」

「5.2.5　アーカイブマルチチャンク表を定義する場合の考慮点【ローストア表】」

重要

表をカラムストア表として定義する場合は，その表をアーカイブマルチチャンク表とすることはできません。

5.2.4　マルチチャンク表を定義する場合の考慮点

ここでは，実表をマルチチャンク表として定義する場合の考慮点について説明します。

ここをお読みいただいたあとに，「5.6.2　データ用DBエリアにマルチチャンク表を格納する場合の考慮点」の説明もお読みください。

また，実表をアーカイブマルチチャンク表として定義する場合は，ここをお読みいただいたあとに，「5.2.5　アーカイブマルチチャンク表を定義する場合の考慮点【ローストア表】」の説明もお読みください。

(1)　実表をマルチチャンク表として定義する場合のメリット

実表をマルチチャンク表として定義した場合，次に示す運用ができます。

データの検索とデータのインポートを同時に実行できます（バックグラウンドインポート機能を使用できます）。

PURGE CHUNK文で，チャンク単位にデータを一括削除できます。

データを検索できない状態で事前にインポートだけしておき，任意のタイミングでインポートしたデータを検索することができます。運用例については，「11.5.24　バックグラウンドインポートとチャンクを意識した運用例2（待機状態のチャンクを利用した運用）」を参照してください。

メモ

4メガバイト以下の少量のデータだけを頻繁に格納する場合は，バックグラウンドインポート機能ではなく，操作系SQLのINSERT文を使用することを検討してください。バックグラウンドインポートで少量のデータを頻繁に格納すると，むだな領域が発生してしまい，データの格納効率が悪くなります。バックグラウンドインポートを実行すると，すでに割り当てられているセグメントに空きがあっても，新規にセグメントが確保されて割り当てられるためです。

実表をカラムストア表として定義し，そのカラムストア表に対してINSERT文，UPDATE文，およびDELETE文を実行する可能性が高い場合は，カラムストア表かつマルチチャンク表として実表を定義してください。カラムストア表に対してINSERT文，UPDATE文，およびDELETE文を繰り返し実行すると，表の再編成が必要になることがあります。その際，マルチチャンク表であれば，チャンク単位で再編成が実行できるため，次のメリットがあります。

再編成に掛かる時間を短縮できる

再編成時に必要となるディスク容量を抑えることができる

また，実表をアーカイブマルチチャンク表として定義すると，チャンクアーカイブ機能も使用することができます。実表をアーカイブマルチチャンク表として定義する場合は，「5.2.5　アーカイブマルチチャンク表を定義する場合の考慮点【ローストア表】」の説明もお読みください。

(2)　実表をマルチチャンク表として定義する場合のデメリット

マルチチャンク表には，主キーおよびユニークインデクスを定義できません。

チャンクの管理，運用が必要になります。例えば，チャンクのマージを定期的にする必要があります。詳細については，「11.5.9　チャンクをマージする方法（チャンク数を減らす方法）」を参照してください。

(3)　CREATE TABLE文で必要な指定（チャンク数の最大値）

実表をマルチチャンク表として定義する場合は，CREATE TABLE文のチャンク指定でチャンク数の最大値を指定してください。

(4)　チャンク数の最大値の求め方

adbimportコマンドでバックグラウンドインポートを実行するたびに，チャンクが作成されます。また，adbmergechunkコマンドで，作成された複数のチャンクをマージできます。ただし，CREATE TABLE文のチャンク指定で指定したチャンク数の最大値以上のチャンクは作成できません。

そのため，次の3点を踏まえて，チャンク数の最大値を見積もってください。

adbimportコマンドでバックグラウンドインポートを実行する頻度

adbmergechunkコマンドでチャンクをマージする頻度

チャンクを保持する期間

なお，作成したチャンクはPURGE CHUNK文で削除できます。削除したチャンクの数だけ，チャンクを作成できます。また，CREATE TABLE文で指定したチャンク数の最大値は，ALTER TABLE文で変更できます。

変数CHUNK_NUMの値を，次の計算式で求めてください。計算式で求めた値以上の値を，CREATE TABLE文のチャンク数の最大値に指定します。

計算式（単位：個数）

CHUNK_NUM =
    ↑years×↑(import_num÷merge_source_chunk_num)↑×safe_rate↑
    ＋(↑merge_source_chunk_num×safe_rate↑)※

注※：adbmergechunkコマンド実行時にマージ元チャンクが削除仕掛中のチャンクとして残るおそれがあるため，それを考慮して多めに見積もります。

重要

adbmergechunkコマンドの実行時に，マージ元チャンクが削除されなかった場合，マージ元チャンクは削除仕掛中のチャンクとして残ります。その結果，削除仕掛中のチャンクの数だけ，使用できるチャンク数が減ります。そのため，変数CHUNK_NUMの値を求める際は，削除仕掛中のチャンクの数も考慮する必要があります。削除仕掛中のチャンクについては，「11.5.9　チャンクをマージする方法（チャンク数を減らす方法）」の「(3)　adbmergechunkコマンドによるチャンクのマージ」を参照してください。

変数の説明

years

チャンク（実表に格納したデータ）を保持する年数です。

adbimportコマンドでバックグラウンドインポートを実行して作成されたチャンクを，PURGE CHUNK文で削除するまでの年数を代入してください。

import_num

1年間にadbimportコマンドでバックグラウンドインポートを実行する回数を代入してください。

merge_source_chunk_num

adbmergechunkコマンドを実行するときに存在するマージ元チャンクの数です。

例えば，1日1回adbimportコマンドでバックグラウンドインポートを実行して，5日に1回adbmergechunkコマンドでチャンクをマージする場合は，5を代入してください。

safe_rate

安全率です。1.2を代入してください。

変数CHUNK_NUMの求め方の例を次に示します。

■変数CHUNK_NUMの求め方の例

次の条件で，変数CHUNK_NUMを計算します。

チャンク（実表に格納したデータ）を2年間保持する

週に1回，adbimportコマンドでバックグラウンドインポートを実行する

月に1回，adbmergechunkコマンドで4つのチャンクをマージする

安全率を1.2とする

計算式（単位：個数）

この例の場合，変数CHUNK_NUMの値は39となります。そのため，チャンク数の最大値には39以上の値を指定してください。

5.2.5　アーカイブマルチチャンク表を定義する場合の考慮点【ローストア表】

ここでは，実表をアーカイブマルチチャンク表として定義する場合の考慮点について説明します。

なお，ここの説明は，「5.2.4　マルチチャンク表を定義する場合の考慮点」をお読みいただいていることを前提としています。

(1)　実表をアーカイブマルチチャンク表として定義する場合のメリット

チャンク内のデータを圧縮することで，データベースの容量を削減できます。

(2)　実表をアーカイブマルチチャンク表として定義する場合のデメリット

アーカイブされているデータは，UPDATE文による更新またはDELETE文による削除ができません。データを更新または削除する場合は，チャンク内のデータをアンアーカイブする必要があります。UPDATE文またはDELETE文がエラーになる条件については，マニュアルHADB　SQLリファレンスの次の個所を参照してください。

UPDATE文の指定形式および規則の規則

DELETE文の指定形式および規則の規則

アーカイブされているデータを検索する場合，次に示す原因によって，アーカイブされていないデータを検索するときに比べて検索時間が長くなります。

データの伸長に時間が掛かる

インデクスを使用した検索ができない

アーカイブマルチチャンク表を検索する際は，アーカイブレンジ列の情報をSELECT文の探索条件に指定して，検索範囲を絞り込む必要があります。そのため，SELECT文の探索条件にアーカイブレンジ列を指定した条件を指定できない場合，検索範囲を絞り込むことができないため，検索時間が長くなります。

アーカイブマルチチャンク表を検索する際の留意事項については，マニュアルHADB　AP開発ガイドのアーカイブマルチチャンク表を検索する際の考慮点を参照してください。

メモ

アーカイブマルチチャンク表をシングルチャンク表に変更する場合，CREATE TABLE文による表の再定義が必要になります。そのため，メリットおよびデメリットをよく検討してから，アーカイブマルチチャンク表を定義するかどうかを決定してください。

アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更する場合は，CREATE TABLE文による表の再定義は必要ありません。ALTER TABLE文で，変更することができます。

(3)　アーカイブマルチチャンク表に格納するデータの条件

アーカイブマルチチャンク表には，日々発生する時系列データを格納してください。ここでいう時系列データとは，センサから発生したデータや，店舗の売り上げデータなど，データの発生日時順に並んでいるデータを意味しています。また，時系列データには，データの生成日時や，売り上げ発生日時のようなデータが含まれている必要があります。

(4)　アーカイブディレクトリの作成

CREATE TABLE文を実行する前にアーカイブディレクトリを作成してください。また，アーカイブディレクトリに対する各種権限をHADB管理者に与える必要があります。詳細については，マニュアルHADB　SQLリファレンスのCREATE TABLE文の指定形式および規則の指定形式の説明のチャンク指定のチャンクアーカイブ指定を参照してください。

1つのアーカイブマルチチャンク表に対して，専用のアーカイブディレクトリを作成することを推奨します。複数のアーカイブマルチチャンク表に対して，1つのアーカイブディレクトリを共有することもできます。ただし，アーカイブディレクトリに対するアクセスが集中した場合，性能が低下するおそれがあります。

性能面を優先して考えた場合，次のようにアーカイブディレクトリを作成することを推奨します。

アーカイブマルチチャンク表ごとにアーカイブディレクトリを作成する

専用のファイルシステムに1つのアーカイブディレクトリを作成する

専用のファイルシステムには，アーカイブディレクトリだけを作成する

なお，アーカイブディレクトリを作成するディスクには，セクターサイズが512バイトまたは4,096バイトのディスクが使用できます。

(5)　アーカイブレンジ列の指定

アーカイブマルチチャンク表を定義する場合，アーカイブレンジ列の指定は必須となります。次に示すデータ型の列は，アーカイブレンジ列に指定することはできません。

定義長が33バイト以上のCHARACTER型

VARCHAR型

BINARY型

VARBINARY型

アーカイブレンジ列に格納されたデータは，アーカイブマルチチャンク表を検索する際，検索対象を絞り込むために使用されます。そのため，データの生成日時や，売り上げ発生日時などのデータを格納する列を，アーカイブレンジ列としてください。

なお，アーカイブレンジ列には，非ナル値制約が設定されます。

(6)　アーカイブレンジ列に自動的に定義されるレンジインデクス

アーカイブレンジ列には自動的にレンジインデクスが定義されます。このレンジインデクスは，データ量が少ないため，専用のデータ用DBエリアに格納する必要はありません。アーカイブマルチチャンク表に定義するほかのインデクスと同じデータ用DBエリアに格納することを検討してください。

CREATE TABLE文のチャンク指定でレンジインデクスを格納するデータ用DBエリアを指定します。

なお，アーカイブレンジ列に自動的に定義されるレンジインデクスに，インデクス識別子を指定することができます。レンジインデクスのインデクス識別子を指定しない場合は，HADBサーバが自動的にインデクス識別子を決定します。

5.2.6　表の正規化【ローストア表】

表をローストア表として定義する場合は，表の正規化を検討してください。

表中の重複するデータを別表に移動することを，表の正規化といいます。表の格納効率や処理効率を向上させるために，表の正規化を行ってください。表の正規化を繰り返し行うことで，複雑なデータベースを最適な形にできます。

なお，表中に重複データが多く存在する場合は，表に配列型の列を定義することも検討してください。詳細については，「5.2.13　配列型の列の定義【カラムストア表】」を参照してください。

(1)　表の格納効率を向上させる場合

1つの表に同じような情報を持つ列が複数ある場合は，この表を複数の表に分けて，それぞれの表に同じような情報を持つ列が1つだけになるように正規化します。これによって，表に対するデータの格納効率が向上します。

表に同じような情報を持つ列が複数ある場合の正規化を次の図に示します。

図5‒3　表に同じような情報を持つ列が複数ある場合の正規化の例

［説明］

正規化前のSTOCK表のPCODE列とPNAME列，PCODE列とPRICE列はそれぞれ1対1で対応しているため，それぞれの列の情報は冗長になっています。このような場合は，STOCK表から，PCODE列，PNAME列とPRICE列で構成されるPRODUCT表をほかに作成します。

このとき，PRODUCT表では，PCODE列，PNAME列およびPRICE列に重複した情報を持たないようにします。

(2)　アクセス頻度の高い列と低い列がある場合

1つの表に，アクセス頻度が高いと考えられる列と，アクセス頻度が低いと考えられる列がある場合は，この表をアクセス頻度が高い列で構成した表と，アクセス頻度が低い列で構成した表に正規化します。

アクセス頻度が高い列と低い列がある場合の正規化の例を次の図に示します。

図5‒4　アクセス頻度が高い列と低い列がある場合の正規化の例

［説明］

正規化前のSTOCK表は，アクセス頻度の高い列（PNO列，およびQUANTITY列）と，アクセス頻度の低い列（PNAME列，およびPRICE列）が混在しています。このような場合は，STOCK表をアクセス頻度の高い列を集めた表（STOCK表）と，アクセス頻度の低い列を集めた表（PRODUCT表）の2つの表に正規化します。

これによって，全体としての処理効率が向上します。

5.2.7　行長の固定（FIX指定）【ローストア表】

表をローストア表として定義する場合は，ローストア表をFIX表とするかどうかを検討してください。表をカラムストア表として定義する場合は，そのカラムストア表をFIX表とすることはできません。

行長が固定となる表をFIX表といいます。

固定長でナル値がないデータの表にFIXを指定すると，性能が向上します。また，FIXを指定していない表と比べて，物理的な行長が1列で2バイト短くなるため，列数の多い表の場合はディスク所要量を削減できます。

CREATE TABLE文にFIXオプションを指定することで，FIX表として定義されます。次に示す条件をすべて満たす場合は，FIXを指定してください。

ナル値を持つ列がない場合

可変長の列がない場合

5.2.8　列の既定値の設定（DEFAULT句）

データの追加や更新時に，決まった値を自動的に格納したい場合は，列の既定値の設定を検討してください。列の既定値とは，次のときに列に格納されるデフォルトの列値のことです。

INSERT文による行の挿入時

次の場合に列の既定値が格納されます。

挿入値にDEFAULTを指定した場合

DEFAULT VALUESを指定した場合

データを挿入する列の列名の指定を省略した場合（すべての列名を省略した場合を除きます）

ビュー表に行を挿入した場合（ビュー表の列に対応しない基表の列には，列の既定値が格納されます）

UPDATE文による列値の更新時

更新値にDEFAULTを指定した場合に，列の既定値が格納されます。

adbimportコマンドによるデータインポート時

adbimportコマンドでデータをインポートする際，入力データファイルのフィールドデータが空文字列の場合に，列の既定値が格納されます。

ただし，インポートオプションadb_import_null_stringにNULLを指定した場合は，列の既定値ではなくナル値が格納されます。

列の既定値を設定する場合は，CREATE TABLE文でDEFAULT句を指定します。DEFAULT句については，マニュアルHADB　SQLリファレンスのDEFAULT句を参照してください。

メモ

DEFAULT句を省略した場合，ナル値が列の既定値になります。

DEFAULT句を指定して列の既定値を設定したときのデータの格納例を次の図に示します。

図5‒5　DEFAULT句を指定して列の既定値を設定したときのデータの格納例

［説明］

PUR-NUM列にDEFAULT句を指定して，数データの0を列の既定値として定義します。

PUR-DATE列にDEFAULT句を指定して，日付を列の既定値として定義します。CURRENT_DATEは，INSERT文またはUPDATE文が実行された日，またはadbimportコマンドが起動された日を列の既定値とする指定です。

挿入対象列にPUR-NUM列が省略されているため，PUR-NUM列には列の既定値（数データの0）が格納されます。

挿入値にDEFAULTが指定されているため，PUR-DATE列には列の既定値（INSERT文が実行された日）が格納されます。

列の既定値として設定できる値については，マニュアルHADB　SQLリファレンスのDEFAULT句を参照してください。

5.2.9　主キー（一意性制約定義）の指定（PRIMARY KEY）【シングルチャンク表】

表をシングルチャンク表として定義する場合は，主キーを定義するかどうかを検討してください。表をマルチチャンク表として定義する場合は，そのマルチチャンク表に主キーを定義できません。

実表中の行を一意（ユニーク）に識別するためのキーのことを，主キーといいます。主キーを定義することによって，実表のデータの一意性を保つことができます。

主キーを定義する場合，CREATE TABLE文に一意性制約定義を指定します。

主キーを定義すると，主キーを構成する列には，次に示す2つの制約が適用されます。

一意性制約

列値（または複数の列の列値の組み合わせ）が重複することを許さない制約のことです。

非ナル値制約

列値にナル値を許さない制約（NOT NULL）のことです。

また，主キーを構成する列をインデクス構成列とするユニークインデクスが自動的に定義されます。ユニークインデクスのインデクス識別子の名称は，CREATE TABLE文で指定した一意性制約定義中の制約名と同じになります。ユニークインデクスの詳細については，「5.3.5　ユニークインデクスを定義する列を決めるときの考慮点」を参照してください。

主キーを定義する場合は，実表中の行を一意に識別できる列，または列の組み合わせ（候補キー）の中から，主キーを選択してください。候補キーが複数ある場合は，候補キーの中で意味的に最も重要なものに主キーを定義してください。

重要

実表に主キーを定義していても，adbimportコマンドで重複する値をデータインポートした場合，一意性制約は保証されません。その場合，実表中から重複したキーを検索し，検索したキー値を持つ行を削除してください。重複したキーを検索する方法は，「16.9.2　一意性制約に違反した場合の対処方法（KFAA61205-Wメッセージが出力された場合）」の「(2)　一意性制約違反状態を解除する方法」を参照してください。

5.2.10　外部キーの指定（FOREIGN KEY）

ほかの実表の主キーを参照する列（または複数の列の組み合わせ）のことを，外部キーといいます。主キーと外部キーによって，データベース内の表と表の関係を定義できます。

外部キーを定義する場合，CREATE TABLE文に参照制約定義を指定します。

重要

CREATE TABLE文に参照制約定義を指定しても，外部キーによる参照制約のチェックを行いません。そのため，表と表の間のデータの整合性を保つために，外部キーは利用できません。

メモ

BIツールなどでER図を出力したり，データベース内の表と表の関係を定義したりしたい場合に，外部キーを定義してください。

主キーについては，「5.2.9　主キー（一意性制約定義）の指定（PRIMARY KEY）【シングルチャンク表】」を参照してください。

5.2.11　データページ内の未使用領域の確保（PCTFREE）【ローストア表】

表をローストア表として定義する場合は，データページ内の未使用領域の比率の設定を検討してください。表をカラムストア表として定義する場合は，データページ内の未使用領域の比率の設定はできません。

CREATE TABLE文のPCTFREEで，データページ（実表のデータを格納するページ）内の未使用領域の比率を指定できます。

次のコマンドを実行すると，PCTFREEに指定した未使用領域の比率に従って実表のデータが格納されます。

adbimportコマンド

adbunarchivechunkコマンド

実表に対して更新が頻繁に発生すると，同じページ内に行が格納できなくなります。その結果，行の配置に乱れが生じ，性能低下の原因になります。このため，実表に対して更新が頻繁に発生すると想定される場合は，データページ内の未使用領域の比率を高くしてください。

データページ内の未使用領域を確保するときの目安を次に示します。

実表に対して更新する行数が見積もれる場合

次に示す計算式で求めた結果を，PCTFREEに指定してください。

計算式（単位：％）

変数の説明

upd_row_num：更新する行数（単位：個）

row_num：実表全体の行数（単位：個）

実表に対して更新する行数が見積もれない場合

未使用領域には30％（PCTFREEの省略値）を指定してください。

実表に対して更新を行わない場合

未使用領域には0％を指定してください。

5.2.12　可変長データ型の列データの分岐指定（BRANCH）【ローストア表】

表をローストア表として定義する場合は，可変長データ型の列データの分岐指定を指定するかどうかを検討してください。表をカラムストア表として定義する場合は，可変長データ型の列データの分岐指定は指定できません。

ここでは，可変長データ型の列データの分岐指定について説明します。可変長データ型とは，次のデータ型のことです。

VARCHAR型

VARBINARY型

通常，1行のデータは同じページに格納されますが，表に可変長データ型の列を定義した場合，可変長データ型の列データは分岐して別ページに格納されることがあります。

次に示す規則に従って，可変長データ型の列データは格納されます。

定義長が255バイト以下の可変長データ型の列の場合

分岐しません。可変長データ型の列データは，同じページに格納されます。

定義長が256バイト以上の可変長データ型の列の場合

基本行が1ページに収まるときは，可変長データ型の列データは分岐しません。同じページに格納されます。

基本行が1ページに収まらないときは，可変長データ型の列のデータが分岐して別ページに格納されます。

CREATE TABLE文の列定義のBRANCHの指定によって，可変長データ型の列データを，常に別のページに分岐するかどうかを指定できます。分岐するかどうかの目安を次に示します。

可変長データ型の列データの参照頻度が少ない場合

可変長データ型の列データを分岐して，別ページに格納するようにしてください。表の検索処理性能が向上することがあります。

BRANCHにYESを指定すると，指定した可変長データ型の列のデータが分岐します。

可変長データ型（定義長が256バイト以上）の列データの参照頻度が多い場合

可変長データ型の列データを分岐しないようにしてください。表の検索処理性能が向上することがあります。

BRANCHにNOを指定すると，指定した可変長データ型の列のデータは分岐しません。

なお，表オプションのBRANCH ALLを指定すると，表中の全可変長データ型の列データが分岐します。表中の全可変長データ型の列データの参照頻度が少ない場合に，BRANCH ALLを指定してください。

5.2.13　配列型の列の定義【カラムストア表】

HADBでは，順序付けられた一連のデータを要素とする一次元の配列型のデータを扱うことができます（列のデータ型に配列型を定義できます）。表に配列型（ARRAY型）の列を定義すると，複数の配列要素で構成されている配列データを1行にまとめて格納できます。配列型の列を定義した表の例を次の図に示します。

図5‒6　配列型の列を定義した表の例

［説明］

商品表（PRODUCT）に次の配列型の列を定義しています。

SIZE（サイズ）

COLOR（色）

配列型の列には，通常，1行に1つ以上の配列要素が格納されます。この例の場合，SIZE列には商品のサイズを示す配列要素（S，M，L）が，COLOR列には商品の色を示す配列要素（RED，BLUEなど）が格納されます。

なお，表を定義する際，配列要素のデータ型（要素データ型）を指定します。上記の例の場合，SIZE列の要素データ型をCHAR(1)で定義し，COLOR列の要素データ型をVARCHAR(8)で定義しています。要素データ型には，CHAR型やVARCHAR型のほかにINTEGER型やDATE型など，HADBでサポートしているデータ型を指定できます。

メモ

配列型の列を定義した表の定義方法や，検索方法などについては，「11.1.20　配列型の列を定義した実表の運用」を参照してください。

■配列型の列を定義しない場合

配列型の列を定義しない場合，次のどちらかのように表を定義することになります。

重複データが多い表を定義する

（例）

この場合，重複データがある行が増えるため，ディスク容量が増加します。

表の正規化を実施して複数の表を定義する

（例）

この場合，重複データを減らすことができますが，複数の表にアクセスする必要があるため，SQL文の実行時に表の結合が必要になります。そのため，SQL文が複雑になったり，検索性能が低下したりするおそれがあります。

■配列型の列を定義するメリット

データの重複がなくなり，ディスク容量が削減されます。

アクセス対象の表が1つになるため，表の結合が不要になり，SQL文がシンプルになります。

関連するデータが物理的に近くに格納されるため，表の結合で複数の表にアクセスするよりも性能面で優れています。

■前提条件および制限事項

配列型の列を定義した表は，カラムストア表として定義する必要があります。ローストア表としては定義できません。

カラムストア表の概要については，「2.2.1　ローストア表とカラムストア表」を参照してください。カラムストア表を設計する際の考慮点については，「5.2.2　ローストア表とカラムストア表の選択基準」を参照してください。

配列型の列を定義した表には，B-treeインデクスおよび一意性制約を定義できません。

配列型の列には，DEFAULT句を指定できません。

配列型の列を定義した表は，SQL文（INSERT文，UPDATE文，DELETE文）による行の追加，更新，および削除ができません。

■最大要素数の決め方

CREATE TABLE文で表を定義する際，配列型の列の配列要素の最大数（最大要素数）を指定します。最大要素数の指定値が，実際の配列要素の数よりも著しく大きい場合，リソースを必要以上に使用するため，メモリ不足や性能低下の原因となるおそれがあります。そのため，最大要素数には，想定される配列要素の最大数を目安にした値を指定するようにしてください。

なお，最大要素数は，ALTER TABLE文で後から大きくすることができます。ただし，最大要素数を大きくした表に依存するビュー表が無効化されます。ALTER TABLE文による最大要素数の変更方法，およびその際の留意事項については，「11.1.20　配列型の列を定義した実表の運用」の「(4)　最大要素数の変更」を参照してください。

重要

最大要素数を小さくする場合は，CREATE TABLE文で表を再定義する必要があります。

■データ用DBエリアに関する留意事項

配列型の列を定義した表を格納するデータ用DBエリアのページサイズは，8,192バイト以上にしてください。

配列型の列を定義した表を格納するデータ用DBエリアの1セグメントの容量は，次の計算式を満たすようにしてください。

1セグメントの容量（単位：バイト）≧ARRAY_ROWSZ（配列型の列を定義した表の行長）

ARRAY_ROWSZの求め方については，「5.8.2　行の種別ごとの格納ページ数の求め方」の「(3)　配列型の列を定義した表の行長（変数ARRAY_ROWSZ）の求め方」を参照してください。

メモ

データ用DBエリアのページサイズおよび1セグメントの容量は，adbinitコマンドまたはadbmodareaコマンドでデータ用DBエリアを作成する際に指定します。

1セグメントの容量は，adbinitコマンドまたはadbmodareaコマンドの-sオプションで指定しますが，-sオプションの指定単位はメガバイト単位になっています。上記の計算式の単位はバイトのため，注意してください。

5.3　B-treeインデクスの設計

ここでは，B-treeインデクスを設計する際に検討する項目について説明します。

B-treeインデクスはAPの性能に大きく影響するため，どの列にB-treeインデクスを定義するかを十分に検討する必要があります。

重要

カラムストア表に定義したB-treeインデクスが，カラムストア表の検索時に使用されるケースは限定されています。カラムストア表で，B-treeインデクスを使用する代表的な例を次に示します。次のような絞り込みが有効な場合にだけ，カラムストア表にB-treeインデクスを定義することを推奨します。

SQL文の実行時に，インデクス指定で使用するインデクスを指定する場合

集合関数MINまたはMAXを指定して，最小値や最大値を求める場合

探索条件を指定して，UPDATE文またはDELETE文を実行する場合

特定の年や月のデータにアクセスするような場合は，レンジインデクスを定義して検索範囲を絞り込むことを推奨します。

カラムストア表の検索時に使用されるB-treeインデクスの規則については，マニュアルHADB　AP開発ガイドのSQL文の実行時に使用されるB-treeインデクスおよびテキストインデクスを参照してください。

5.3.1　B-treeインデクスを定義する場合の注意点（B-treeインデクスの未完状態）

B-treeインデクスを定義する場合は，実表を作成後，データを格納する前にCREATE INDEX文で定義してください。

行を格納するセグメントが割り当てられている状態の実表に対してB-treeインデクスを定義した場合，定義されたB-treeインデクスは未完状態になります。未完状態になると，定義したB-treeインデクスは無効な状態となり，使用できなくなります。

未完状態を解除するには，B-treeインデクスを再作成する必要があります。そのため，実表にデータを格納する前に，B-treeインデクスをどの列に定義するかを事前によく検討してください。

未完状態のB-treeインデクスに対して，次に示す操作を行うとエラーになります。

■エラーになる操作

未完状態のB-treeインデクスを使用する検索系SQLの実行

未完状態のB-treeインデクスが定義された表に対するINSERT文，UPDATE文，およびDELETE文の実行

未完状態のB-treeインデクスが定義された実表に対する-dオプションを指定しないadbimportコマンドの実行

未完状態のB-treeインデクスが定義された実表に対するadbmergechunkコマンドの実行

未完状態のB-treeインデクスが定義されたアーカイブマルチチャンク表に対するadbunarchivechunkコマンドの実行

B-treeインデクスの未完状態の解除方法については，「16.9.1　B-treeインデクスが未完状態になったときの対処方法」を参照してください。

メモ

次に示すときなどは，行を格納するセグメントが割り当てられていない状態です。このときに，CREATE INDEX文を実行すると，B-treeインデクスは正常に作成されます。

実表の定義直後

TRUNCATE TABLE文の実行直後

例えば，DELETE文で表の全行を削除しても，行を格納するセグメントは割り当てられている状態のままです。そのため，DELETE文で表の全行を削除したあとにCREATE INDEX文を実行した場合，そのB-treeインデクスは未完状態になります。

5.3.2　B-treeインデクスを定義する列を決めるときの考慮点

HADBは，追記型の更新処理方式を採用しています。そのため，列の値が更新されると，行全体が更新されます（更新前の行は無効になり，更新後の行が新たに挿入されます）。表にB-treeインデクスが定義されている場合，行が更新されると，B-treeインデクスのキー値も更新されます。行の更新が頻繁に発生するような表にB-treeインデクスを必要以上に定義すると，更新処理の性能がその分低下します。

B-treeインデクスを定義する列を決める場合，次に示す点を考慮してください。

(1)　B-treeインデクスを定義した方がよい列

B-treeインデクスを定義した方がよい列の例を次に示します。

データを絞り込むための条件に指定する列

WHERE句に探索条件（検索条件）を指定して検索する場合，探索条件に指定する列にB-treeインデクスを定義しておくと，検索するページ数を削減できます（検索範囲を絞り込めます）。検索性能の向上につながるため，探索条件に指定する列の中で，データの検索範囲を絞り込める列にB-treeインデクスを定義することを検討してください。

表の結合の条件に指定する列（複数の表を指定して検索する場合）

複数の表に検索対象のデータが分散していて，共通の情報を持つ列を対応づけて検索する（表の結合を行う）場合，結合条件に指定する列にB-treeインデクスを定義しておくと，結合条件の評価回数（行の突き合わせ回数）を削減できます。検索性能の向上につながるため，結合条件に指定する列にB-treeインデクスを定義することを検討してください。

また，次の条件をすべて満たす場合は，結合条件に指定する列にレンジインデクスも定義することも検討してください。

B-treeインデクスを定義する表がマルチチャンク表である

結合条件に指定する列が，「5.5.1　レンジインデクスを定義する際の考慮点」の「(1)　レンジインデクスを定義した方がよいケース」の条件を満たしている

(2)　B-treeインデクスを定義しない方がよい列

B-treeインデクスを定義しない方がよい列の例を次に示します。

データの重複が多い列

データの重複が多い列にB-treeインデクスを定義しても，データの検索範囲を絞り込めないため，検索するページ数を削減できません。検索性能が低下する原因になるため，データの重複が多い列にはB-treeインデクスを定義しないようにしてください。

5.3.3　単一列インデクスと複数列インデクスの使い分け

B-treeインデクスには，単一列インデクスと複数列インデクスがあります。

単一列インデクス

表の1つの列で1つのB-treeインデクスを作成したものを指します。単一列インデクスは，1つの列をキーにして検索する場合に指定します。

複数列インデクス

表の複数の列で1つのB-treeインデクスを作成したものを指します。

単一列インデクスと複数列インデクスの使い分けについて，次で説明します。

(1)　単一列インデクスを定義した方がよい場合

1つの列をキーにして検索する場合は，単一列インデクスを定義してください。

例えば，次のような検索をする場合には，列C1に単一列インデクスを定義します。

SQLの指定例

SELECT * FROM "T1"
     WHERE "C1" = 1

B-treeインデクスの定義例

CREATE INDEX "T1IX_C1"
     ON "T1" ("C1" ASC) IN DBAREA01 EMPTY

(2)　複数列インデクスを定義した方がよい場合

1つの列だけでは検索する行を十分に絞り込めないため，複数の列をキーにして検索する行を絞り込む場合は，複数列インデクスを定義してください。

例えば，次のような検索をする場合に，列C1と列C2に対してそれぞれ単一列インデクスを定義していると，列C1または列C2のどちらか1つのB-treeインデクスしか使用されません。そのため，列C1と列C2を構成列とする複数列インデクス（T1IX_C1C2）を定義します。

SQLの指定例

SELECT * FROM "T1"
      WHERE "C1" = 1 AND "C2" = 'A'

B-treeインデクスの定義例

CREATE INDEX "T1IX_C1C2"
      ON "T1"("C1" ASC,"C2" ASC) IN DBAREA01 EMPTY

なお，複数列インデクスを使って探索条件を評価する場合，複数列インデクスを定義したときの列の指定順に値を評価します。そのため，複数列インデクスを定義する際は，検索時に指定する探索条件などを考慮して列の指定順序を決定してください。

例えば，上記の「SQLの指定例」を実行する場合，「B-treeインデクスの定義例」のとおりCREATE INDEX文を実行することを推奨します。

(3)　複数列インデクスを使用するときの留意事項

探索条件によるデータの絞り込み範囲について説明します。

複数列インデクスを使用して検索する行を絞り込む場合，WHERE句に指定する探索条件によって検索範囲の絞り込み方が異なります。インデクス構成列の指定順序は，「＝条件」を指定することが多い列を先に指定する方が検索範囲を小さくできます。

WHERE句の探索条件の指定と検索範囲の関係を次に示します。

B-treeインデクスの定義例

CREATE INDEX "T1IX_C1C2C3"
        ON "T1"("C1" ASC,"C2" ASC,"C3" ASC) IN DBAREA01 EMPTY

図5‒7　WHERE句の探索条件とB-treeインデクスの検索範囲

注※1

列C2に対する条件が「＝条件」または「IS NULL条件」ではないため，列C3に対する条件は検索範囲の絞り込みには使用されません。

注※2

列C2に対する条件がないため，列C3に対する条件は検索範囲の絞り込みには使用されません。

注※3

列C1に対する条件が「＝条件」または「IS NULL条件」ではないため，列C2と列C3に対する条件は検索範囲の絞り込みには使用されません。

注※4

列C1に対する条件がないため，列C2や列C3に対する条件は検索範囲の絞り込みには使用されません。

5.3.4　B-treeインデクスのインデクスページ内の未使用領域の確保（PCTFREE）

CREATE INDEX文のPCTFREEで，B-treeインデクスのインデクスページ内の未使用領域をどれだけ確保するか指定できます。

B-treeインデクスが定義されている表に対して行を追加した場合，または行を更新した場合に，インデクスキーの格納対象となるインデクスページに未使用領域がないと，B-treeインデクスのインデクスページスプリットが発生します。B-treeインデクスのインデクスページスプリットについては，「(2)　B-treeインデクスのインデクスページスプリット」を参照してください。

B-treeインデクスのインデクスページスプリットが発生すると，ディスクのI/O回数が増加するため，HADBの性能が低下するおそれがあります。そのため，操作系SQLのINSERT文による行の追加，およびUPDATE文による行の更新を行う表に定義するB-treeインデクスについては，インデクスページ内に未使用領域を確保してください。

(1)　B-treeインデクスのインデクスページ内に未使用領域を確保するときの目安

B-treeインデクスのインデクスページ内に未使用領域を確保するときの目安を次に示します。

表に対して追加および更新する行数が見積もれる場合

表に対して追加および更新する行数分，インデクスキーが増加します。未使用領域には，次に示す計算式で求めた値を指定してください。

計算式（単位：％）

データページ構築時の行数とは，対象の表に初めてadbimportコマンドを実行して格納した表データの行数のことです。

表に対して追加および更新する行数が見積もれない場合

未使用領域には30％（PCTFREEの省略値）を指定してください。

表に対して追加および更新を行わない場合（参照だけを行う場合）

未使用領域には0％を指定してください。

次に示すコマンドを実行すると，PCTFREEに指定した未使用領域の比率に従ってデータが格納されます。

adbimportコマンド

作成モードでデータインポートする場合（-dオプションを指定した場合）

バックグラウンドインポート機能を使用する場合（-bオプションを指定した場合）

追加モードでデータインポートする場合（-dオプションと-bオプションを指定しない場合）

adbidxrebuildコマンド

adbmergechunkコマンド

adbunarchivechunkコマンド

(2)　B-treeインデクスのインデクスページスプリット

B-treeインデクスはページごとに管理するキーの範囲を決定しています。キー追加時に，本来そのキーを格納するためのインデクスページに空きがない場合，該当ページが管理しているキー群を2つに分割します。これを，B-treeインデクスのインデクスページスプリットといいます。B-treeインデクスのインデクスページスプリットの例を次の図に示します。

図5‒8　B-treeインデクスのインデクスページスプリットの例

5.3.5　ユニークインデクスを定義する列を決めるときの考慮点

ユニークインデクスとは，キー値（B-treeインデクスを定義した列の値）の重複を許さないB-treeインデクスのことです。キー値の重複を許さない制約を一意性制約といいます。

B-treeインデクスを定義する列に対して，重複したキー値がないことを保証したい場合に，ユニークインデクスを定義することを検討してください。

メモ

実表の定義時に主キー（一意性制約定義）を定義した場合も，ユニークインデクスが自動的に定義されます。主キーについては，「5.2.9　主キー（一意性制約定義）の指定（PRIMARY KEY）【シングルチャンク表】」を参照してください。

ただし，次に示す場合は重複したキー値があっても重複キー値にはなりません（一意性制約に違反しません）。

ナル値を含むキー値の場合

複数列インデクスで，どれか1つの列の値が異なる場合

ユニークインデクスは，CREATE INDEX文のUNIQUEを指定することで定義できます。UNIQUEを指定した場合，キー値が重複するようなデータの更新および追加はできません。また，あるキー値を持つ行を追加しようとした際に，実行中の別のトランザクションがすでに同じキー値を持つ行を追加していた場合も追加できません。

重要

ユニークインデクスを定義していても，次の場合には一意性制約は保証されません（キー値の重複が発生するおそれがあります）。

adbimportコマンドでデータインポートした場合

adbidxrebuildコマンドでB-treeインデクスを再作成した場合

5.3.6　ナル値除外指定の設定（EXCLUDE NULL VALUES）

B-treeインデクスの定義時にナル値除外指定を設定すると，ナル値だけで構成されるキーを含まないB-treeインデクスが作成されます（ナル値だけで構成されるキーは作成されません）。

例えば，列の大半の値がナル値だけで構成される列を，インデクス構成列にする場合は，ナル値除外指定を設定することを検討してください。ナル値除外指定を設定することで，ナル値だけで構成されるキーは作成されないため，B-treeインデクスの作成時間を短縮できます。また，B-treeインデクスのデータ容量を削減できます。

ナル値除外指定は，CREATE INDEX文でB-treeインデクスを定義するときに，EXCLUDE NULL VALUESを指定することで設定できます。

なお，表の検索範囲にナル値が含まれることがある場合，ナル値除外指定を設定したB-treeインデクスは，検索に使用されるインデクスの候補にはならないため，注意してください。例えば，検索条件がない場合，IS NULL述語が指定されている場合などが，これに該当します。

5.4　テキストインデクスの設計

ここでは，テキストインデクスを設計する際に検討する項目について説明します。

なお，テキストインデクスはCREATE INDEX文で定義します。

重要

カラムストア表にはテキストインデクスを定義できません。

5.4.1　テキストインデクスを定義する列を決めるときの考慮点

テキストインデクスを定義する列を決める場合，次に示す点を考慮してください。

(1)　テキストインデクスを定義した方がよいケース

次に示す検索を行う場合に，テキストインデクスを定義することを検討してください。

LIKE述語による中間一致検索または後方一致検索を行う場合

テキストインデクスを使用すると，B-treeインデクスを使用するよりも，読み込むページ数を削減できます。そのため，B-treeインデクスを定義するよりも，テキストインデクスを定義した方が，高速に検索できます。テキストインデクスは，LIKE述語の一致値に指定する列に定義します。

LIKE_REGEX述語を指定した検索を実行する場合

テキストインデクスを使用すると，読み込むページ数を削減できます。そのため，テキストインデクスを定義した方が，高速に検索できます。

スカラ関数CONTAINSを指定した検索を実行する場合

テキストインデクスを使用すると，読み込むページ数を削減できます。そのため，テキストインデクスを定義した方が，高速に検索できます。

表記ゆれ補正検索を行う場合

表記ゆれ補正検索用のテキストインデクスを使用すると，読み込むページ数を削減できます。そのため，表記ゆれ補正検索用のテキストインデクスを定義した方が，高速に検索できます。表記ゆれ補正検索については，「2.17.1　表記ゆれ補正検索」を参照してください。

ワード検索を行う場合

ワード検索用のテキストインデクスを使用すると，読み込むページ数を削減できます。そのため，ワード検索用のテキストインデクスを定義した方が，高速に検索できます。ワード検索については，「2.17.4　ワード検索」を参照してください。

検索対象データとテキストインデクスの関係を次の表に示します。

表5‒4　検索対象データとテキストインデクスの関係

項番

検索対象データ

テキストインデクスの有効性

注意事項

1

文書データ（100文字以上の文書資料やメールなど）

◎

文字列が長い場合は，テキストインデクスのデータ容量が大きくなるおそれがあります。

また，文書データの場合，検索条件に使用しないような文字列もテキストインデクスのデータに含まれるため，ほかの検索対象データに比べて，テキストインデクスのデータ容量が大きくなる傾向にあります。

2

英語で書かれた文書データ（100文字以上の文書資料やメールなど）

◎

英語で書かれた文章に含まれる英単語を検索する場合は，テキストインデクスワード検索指定を指定して，テキストインデクスを定義してください。また，スカラ関数CONTAINSを使用してワード検索を行ってください。テキストインデクスワード検索指定については，「5.4.5　ワード検索用のテキストインデクスの指定（TEXT WORDCONTEXT）」を参照してください。

なお，文字列が長い場合は，テキストインデクスのデータ容量が大きくなるおそれがあります。また，文書データの場合，検索条件に使用しないような文字列もテキストインデクスのデータに含まれるため，ほかの検索対象データに比べて，テキストインデクスのデータ容量が大きくなる傾向にあります。

さらに，テキストインデクスワード検索指定を指定すると，指定しない場合に比べて，テキストインデクスのデータ容量が大きくなります。

3

英数字だけの文字列（URLやアクセスログなど）

○

次の場合は，テキストインデクスを定義しても，効果がない可能性があります。

極端にデータ長が短い場合

使われている文字のバリエーションが少ない場合

4

名称データ（10文字前後の商品名など）

△

次の場合は，テキストインデクスを定義しても，効果がない可能性があります。

10文字前後の文字列でも，購入履歴のような同じ名称データが大量に存在する場合

5

数字だけの文字列（IDやコードなど）

×

仮に，検索結果が一意に決まる場合であっても，数字だけの文字列のときは文字の組み合わせが少ないため，検索に時間が掛かる可能性があります。そのため，テキストインデクスを定義しても，効果を期待できません。

（凡例）

◎：有効である可能性が非常に高い

○：有効である可能性が高い

△：有効である可能性が低い

×：有効ではない

(2)　テキストインデクスを定義しない方がよいケース

次のケースに該当する場合は，対象列にテキストインデクスを定義しないようにしてください。

列のデータに重複（部分一致または完全一致）が多い場合

数字だけの番号列（IDなど）のような文字の種類が少ない場合

検索する文字列が「a」や「0」のような単純で短い文字列の場合

検索する文字列が長過ぎる場合（1,000文字を超える場合）

仮に，テキストインデクスを定義しても，データの検索範囲を絞り込めないため，検索するページ数が削減できません。そのため，テキストインデクスの効果が期待できません。

(3)　テキストインデクスを定義できる列

次の条件を満たす列だけに，テキストインデクスを定義できます。

テキストインデクスを定義できる列

CHARACTER型の列

VARCHAR型の列

5.4.2　テキストインデクスのインデクスページ内の未使用領域の確保（PCTFREE）

CREATE INDEX文のPCTFREEで，テキストインデクスのインデクスページ内の未使用領域をどれだけ確保するか指定できます。

テキストインデクスが定義されている表に対して行を追加した場合，または行を更新した場合に，インデクスキーの格納対象となるインデクスページに未使用領域がないと，テキストインデクスのインデクスページスプリットが発生します。テキストインデクスのインデクスページスプリットについては，「(2)　テキストインデクスのインデクスページスプリット」を参照してください。

テキストインデクスのインデクスページスプリットが発生すると，ディスクのI/O回数が増加するため，HADBの性能が低下するおそれがあります。そのため，操作系SQLのINSERT文による行の追加，およびUPDATE文による行の更新を行う表に定義するテキストインデクスについては，インデクスページ内に未使用領域を確保してください。

(1)　テキストインデクスのインデクスページ内に未使用領域を確保するときの目安

テキストインデクスのインデクスページ内に未使用領域を確保するときの目安を次に示します。

表に対して追加および更新する行数が見積もれる場合

表に対して追加および更新する行数分，インデクスキーが増加します。未使用領域には，次に示す計算式で求めた値を指定してください。

計算式（単位：％）

データページ構築時の行数とは，対象の表に初めてadbimportコマンドを実行して格納した表データの行数のことです。

表に対して追加および更新する行数が見積もれない場合

未使用領域には30％（PCTFREEの省略値）を指定してください。

表に対して追加および更新を行わない場合（参照だけを行う場合）

未使用領域には0％を指定してください。

次に示すコマンドを実行すると，PCTFREEに指定した未使用領域の比率に従ってデータが格納されます。

adbimportコマンド

作成モードでデータインポートする場合（-dオプションを指定した場合）

バックグラウンドインポート機能を使用する場合（-bオプションを指定した場合）

追加モードでデータインポートする場合（-dオプションと-bオプションを指定しない場合）

adbidxrebuildコマンド

adbmergechunkコマンド

adbunarchivechunkコマンド

(2)　テキストインデクスのインデクスページスプリット

テキストインデクスを定義した実表にデータを追加したり，データを更新したりした場合，テキストインデクスのインデクスページにデータが追加されます。このとき，データを追加するインデクスページに空きがない場合，新規にテキストインデクスのインデクスページを確保します。これを，テキストインデクスのインデクスページスプリットといいます。テキストインデクスのインデクスページスプリットの例を次の図に示します。

図5‒9　テキストインデクスのインデクスページスプリットの例

5.4.3　テキストインデクスを定義する場合の注意点（テキストインデクスの未完状態）

テキストインデクスを定義する場合は，実表を作成後，データを格納する前にCREATE INDEX文で定義してください。

行を格納するセグメントが割り当てられている状態の実表に対してテキストインデクスを定義した場合，定義されたテキストインデクスは未完状態になります。未完状態のテキストインデクスは無効な状態であるため，使用できません。

未完状態を解除するには，テキストインデクスを再作成する必要があります。そのため，実表にデータを格納する前に，テキストインデクスをどの列に定義するかを検討してください。

未完状態のテキストインデクスに対して，次に示す操作を行うとエラーになります。

■エラーになる操作

未完状態のテキストインデクスを使用する検索系SQLの実行

未完状態のテキストインデクスが定義された表に対するINSERT文，UPDATE文，およびDELETE文の実行

未完状態のテキストインデクスが定義された実表に対する-dオプションを指定しないadbimportコマンドの実行

未完状態のテキストインデクスが定義された実表に対するadbmergechunkコマンドの実行

未完状態のテキストインデクスが定義されたアーカイブマルチチャンク表に対するadbunarchivechunkコマンドの実行

テキストインデクスの未完状態の解除方法については，「16.10.1　テキストインデクスが未完状態になったときの対処方法」を参照してください。

メモ

次に示すときなどは，行を格納するセグメントが割り当てられていない状態です。このときに，CREATE INDEX文を実行すると，テキストインデクスは正常に作成されます。

実表の定義直後

TRUNCATE TABLE文の実行直後

例えば，DELETE文で表の全行を削除しても，行を格納するセグメントは割り当てられている状態のままです。そのため，DELETE文で表の全行を削除したあとにCREATE INDEX文を実行した場合，そのテキストインデクスは未完状態になります。

5.4.4　テキストインデクスの表記ゆれ補正指定の指定（CORRECTIONRULE）

表記ゆれ補正検索を行う場合は，表記ゆれ補正検索に対応しているテキストインデクスを定義してください。表記ゆれ補正検索については，「2.17.1　表記ゆれ補正検索」を参照してください。

また，表記ゆれ補正検索に対応しているテキストインデクスを定義すると，次に示す検索を行う場合に読み込むページ数を少なくすることができます。その分，表の検索性能を向上させることができます。

スカラ関数CONTAINSを指定して，表記ゆれ補正検索を実行する

LIKE_REGEX述語で，FLAGに「I」または「IGNORECASE」を指定して，正規表現を使用して検索を実行する（英大文字と英小文字を同一の文字と判断して検索する）

表記ゆれ補正検索に対応しているテキストインデクスを定義する場合は，CREATE INDEX文でCORRECTIONRULE（テキストインデクス表記ゆれ補正指定）を指定します。

なお，表記ゆれ補正検索に対応しているテキストインデクスは，通常のテキストインデクスに比べて，インデクスデータの容量が増加します。そのため，テキストインデクスを定義する前に，インデクスデータの容量を求めて，問題がないことを確認してください。詳細については，「5.8.5　テキストインデクスのセグメントごとの格納ページ数の求め方」を参照してください。

重要

HADBサーバで使用する文字コードがShift-JISの場合（環境変数ADBLANGの指定値がSJISの場合），表記ゆれ補正検索に対応しているテキストインデクスを定義することはできません。

表記ゆれ補正検索に対応しているテキストインデクスは，通常のテキストインデクスとしても使用できます。

5.4.5　ワード検索用のテキストインデクスの指定（TEXT WORDCONTEXT）

ワード検索を行う場合は，ワード検索用のテキストインデクスを定義してください。ワード検索については，「2.17.4　ワード検索」を参照してください。

また，ワード検索用のテキストインデクスを定義すると，スカラ関数CONTAINSを指定してワード検索を行う場合に読み込むページ数を少なくすることができます。その分，表の検索性能を向上させることができます。

ワード検索用のテキストインデクスを定義する場合は，CREATE INDEX文のINDEXTYPEにTEXT WORDCONTEXTを指定します。TEXT WORDCONTEXTの指定を，テキストインデクスワード検索指定といいます。

メモ

ワード検索用のテキストインデクスを定義する場合は，DELIMITER（テキストインデクス区切り文字指定）も指定する必要があります。DELIMITERについては，「5.4.6　ワード検索時の区切り文字の選択（DELIMITER）」を参照してください。

重要

1～2文字のような短い文字列を指定してワード検索の前方一致検索を行う場合は，ワード検索用のテキストインデクスを定義しないでください。ワード検索用のテキストインデクスを使用しても，データの検索範囲を絞り込めないため，検索性能が低下します。1～2文字のような短い文字列を指定して前方一致検索を行いたい場合は，ワード検索以外の検索を行うようにしてください。

なお，ワード検索用のテキストインデクスは，通常のテキストインデクスに比べて，インデクスデータの容量が増加します。そのため，テキストインデクスを定義する前に，インデクスデータの容量を求めて，問題がないことを確認してください。詳細については，「5.8.5　テキストインデクスのセグメントごとの格納ページ数の求め方」を参照してください。

ワード検索用のテキストインデクスは，通常のテキストインデクスとしても使用できます。

5.4.6　ワード検索時の区切り文字の選択（DELIMITER）

ワード検索に対応するテキストインデクスを定義する際，単語と単語の間を区切る区切り文字の種類を指定する必要があります。ワード検索に対応するテキストインデクスについては，「5.4.5　ワード検索用のテキストインデクスの指定（TEXT WORDCONTEXT）」を参照してください。

区切り文字は，CREATE INDEX文のDELIMITER（テキストインデクス区切り文字指定）で指定します。DELIMITERは，INDEXTYPEにTEXT WORDCONTEXTを指定しているときに指定する必要があります。

区切り文字の種類には，DEFAULTとALLがあります。DELIMITERの指定時に，どちらかを指定する必要があります。DEFAULTとALLが区切り文字として扱う文字を次に示します。

DEFAULT

ワード検索をする際，次の文字を区切り文字として扱います。

半角空白（0x20）

タブ（0x09）

改行（0x0A）

復帰（0x0D）

ピリオド（0x2E）

疑問符（0x3F）

感嘆符（0x21）

ALL

ワード検索をする際，次の文字を区切り文字として扱います。

半角空白（0x20）

タブ（0x09）

改行（0x0A）

復帰（0x0D）

ピリオド，疑問符，および感嘆符を含む1バイトの記号（0x21～0x2F，0x3A～0x40，0x5B～0x60，0x7B～0x7E）

記号を含む英語の文章を検索する場合，区切り文字によって検索結果が異なります。その点を考慮して，区切り文字の種類を選択してください。DEFAULTを指定した方がよいケースとALLを指定した方がよいケースを，それぞれ次に示します。

■DEFAULTを指定した方がよいケース

ワード検索で，記号を含めて検索を行いたい場合は，DEFAULTを指定することを推奨します。例えば，URL，メールアドレスなどを検索する場合が該当します。DEFAULTを指定すると，「taro@hitachi.com」で検索するときに，「taro@hitachi」が1つの単語として扱われます。そのため，「taro@hitachi」が含まれるデータだけを検索できます。

もし，ALLを指定した場合，「taro」と「hitachi」が別々の単語として扱われます。そのため，「xxxxx@taro.hitachi.com」や「taro.hitachi@com」のようなデータも一緒に検索されます。

■ALLを指定した方がよいケース

ワード検索で，記号を含めないで検索を行いたい場合は，ALLを指定することを推奨します。例えば，「high△speed」のような複数の単語（熟語）を検索する場合が該当します。ALLを指定すると，「high△speed」で検索するときに，「high△speed」だけでなく，「high-speed」，「high_speed」のような熟語もまとめて検索することができます。なお，「△」は半角空白を示します。

■留意事項

ワード検索の対象表に内部導出表が適用された場合，DELIMITERの指定が無効になることがあります。

導出表が展開される場合

導出表が展開された結果の列に定義されているワード検索用のテキストインデクスのDELIMITERの指定が有効になります。

導出表が展開されない場合

DELIMITERにALLを指定してもその指定は無効になります。DELIMITERにDEFAULTを指定したときに仮定される区切り文字で，ワード検索が実行されます。

なお，アーカイブマルチチャンク表を等価変換した内部導出表については，上記の規則は適用されません。

導出表の展開規則については，マニュアルHADB　SQLリファレンスの構成要素の内部導出表を参照してください。

5.5　レンジインデクスの設計

ここでは，レンジインデクスを設計する際に検討する項目について説明します。

なお，レンジインデクスはCREATE INDEX文で定義します。

5.5.1　レンジインデクスを定義する際の考慮点

(1)　レンジインデクスを定義した方がよいケース

レンジインデクスを使用した検索では，レンジインデクスを定義した列の値域を基に検索データを絞り込みます。そのため，次に示すような場合にレンジインデクスを定義します。

入力データファイル中のデータが昇順（降順でもよい）に格納されている，またはそれに近い形で格納されている列がある場合

例えば，表にデータの取得日を格納する列があり，データの取得日が昇順または降順に近い形で入力データファイルに格納されている場合，その列にレンジインデクスを定義すると効果があります。例を次の図に示します。

図5‒10　レンジインデクスを定義した方がよいケース（その1）

表を検索する際，レンジインデクスを定義した列（上記の図のC2列）を検索条件に指定します。ただし，指定した検索条件によっては，レンジインデクスが使用されないこともあります。レンジインデクスが使用される条件については，マニュアルHADB　AP開発ガイドのSQL文の実行時に使用されるレンジインデクスを参照してください。

入力データファイルごとに，ある決まった範囲のデータが格納されている列がある場合

例えば，表に商品番号を格納する列があり，入力データファイルごとに商品番号の値の範囲がある程度決まっている場合，その列にレンジインデクスを定義すると効果があります。例を次の図に示します。

図5‒11　レンジインデクスを定義した方がよいケース（その2）

表を検索する際，レンジインデクスを定義した列（上記の図のC2列）を検索条件に指定します。ただし，指定した検索条件によっては，レンジインデクスが使用されないこともあります。レンジインデクスが使用される条件については，マニュアルHADB　AP開発ガイドのSQL文の実行時に使用されるレンジインデクスを参照してください。

バックグラウンドインポートで格納するデータがチャンク間で重複しない場合

例えば，センサから発生したデータ（1日分）を，毎日バックグラウンドインポートで表に格納するとします。バックグラウンドインポート対象の表に，データの発生日時を格納する列がある場合，その列にレンジインデクスを定義すると効果があります。例を次の図に示します。

図5‒12　レンジインデクスを定義した方がよいケース（その3）

［説明］

1つの入力データファイルには1日分のデータが格納されています。バックグラウンドインポートを実行した場合，C2列に格納される「データの発生日時」のデータは，各チャンクで重複しません。

この場合，チャンクごとに値域が管理されているため，探索条件を満たさない値域のデータを格納しているチャンクの検索処理をスキップできます。そのため，効率良く検索できます。

表を検索する際，レンジインデクスを定義した列（上記の図のC2列）を検索条件に指定します。ただし，指定した検索条件によっては，レンジインデクスが使用されないこともあります。レンジインデクスが使用される条件については，マニュアルHADB　AP開発ガイドのSQL文の実行時に使用されるレンジインデクスを参照してください。

(2)　レンジインデクスを定義しない方がよいケース

次に示すような場合は，各セグメントの値域が広がるため，レンジインデクスを定義しても，セグメントのスキップの効果が期待できません。

入力データファイル中のデータが，昇順または降順に近い形で並んでいる列がない場合

行の追加，更新，削除を頻繁に行う場合

なお，行を削除する場合は，セグメントの値域は広がりませんが，セグメント内に格納されているデータの値域に比べて，レンジインデクスの値域が広くなるため，レンジインデクスの効果が期待できません。

また，次に示すような場合は，各チャンクの値域が重複するため，レンジインデクスを定義しても，チャンクのスキップの効果が期待できません。

バックグラウンドインポートを適用したデータインポートで格納するデータが，チャンク間で重複する場合

セグメントのスキップ，およびチャンクのスキップのどちらの効果も期待できない列には，レンジインデクスを定義しないようにしてください。検索性能が低下する原因になります。

(3)　レンジインデクスを定義できない列

次に示す条件を満たす列にレンジインデクスは定義できません。

定義長が33バイト以上のCHAR型の列

VARCHAR型の列

BINARY型の列

VARBINARY型の列

5.5.2　レンジインデクス専用のグローバルバッファのページ数の見積もり

レンジインデクスを格納するDBエリアに割り当てるグローバルバッファをサーバ定義のadbbuffオペランドで指定します。その際，adbbuffオペランドの-aオプションに指定するレンジインデクス専用のグローバルバッファのページ数を正しく見積もってください。見積もり方法については，「7.2.18　グローバルバッファに関するオペランドおよびオプション（コマンド形式）」のadbbuffオペランドの-aオプションの説明を参照してください。

5.5.3　レンジインデクスの一括先読み

HADBサーバの開始時にレンジインデクスをグローバルバッファ上に一括して読み込むことができます。これをレンジインデクスの一括先読みといいます。レンジインデクスの一括先読みをする場合は，サーバ定義のadb_sql_rngidx_prereadオペランドを指定してください。

(1)　レンジインデクスの一括先読みを行うメリット

HADBサーバの開始後，初回の表検索時，グローバルバッファ上にはレンジインデクスのデータがありません。そのため，グローバルバッファ上にレンジインデクスのデータを読み込むためのI/Oが必ず発生し，それが原因で表の検索性能が低下します。レンジインデクスの一括先読みを実行しておくと，このI/Oをなくすことができます。

(2)　一括先読みしたレンジインデクスのデータの掃き出しを防ぐ方法

一括先読みしたレンジインデクスのデータも，グローバルバッファ上からの掃き出しの対象になります。一括先読みしたレンジインデクスのデータの掃き出しを防ぎたい場合は，次に示すことを実施してください。

掃き出しを防ぎたいレンジインデクスを専用のデータ用DBエリアに格納する

掃き出しを防ぎたいレンジインデクスを格納するデータ用DBエリアに割り当てるグローバルバッファのページ数を正しく見積もる（サーバ定義adbbuffオペランドの-aオプションの指定値を正しく見積もる）

-aオプションの見積もり式については，「7.2.18　グローバルバッファに関するオペランドおよびオプション（コマンド形式）」のadbbuffオペランドの-aオプションの説明を参照してください。

5.5.4　レンジインデクスを定義する場合の注意点（レンジインデクスの未完状態）

レンジインデクスを定義する場合，B-treeインデクスを定義するときと同様に，実表を作成後，データを格納する前にCREATE INDEX文で定義してください。

行を格納するセグメントが割り当てられている状態の実表に対してレンジインデクスを定義した場合，定義されたレンジインデクスは未完状態になります。未完状態になると，定義したレンジインデクスは無効な状態となり，使用できなくなります。

未完状態を解除するには，レンジインデクスを再作成する必要があります。そのため，実表にデータを格納する前に，レンジインデクスをどの列に定義するかを事前によく検討してください。

未完状態のレンジインデクスに対して，次に示す操作を行うとエラーになります。

■エラーになる操作

未完状態のレンジインデクスを使用するSQL文の実行

未完状態のレンジインデクスが定義された表に対するINSERT文，およびUPDATE文の実行

未完状態のレンジインデクスが定義された実表に対する-dオプションを指定しないadbimportコマンドの実行

未完状態のレンジインデクスが定義された実表に対するadbmergechunkコマンドの実行

未完状態のレンジインデクスが定義されたアーカイブマルチチャンク表に対するadbunarchivechunkコマンドの実行

レンジインデクスの未完状態の解除方法については，「16.11.1　レンジインデクスが未完状態になったときの対処方法」を参照してください。

メモ

次に示すときなどは，行を格納するセグメントが割り当てられていない状態です。このときに，CREATE INDEX文を実行すると，レンジインデクスは正常に作成されます。

実表の定義直後

TRUNCATE TABLE文の実行直後

例えば，DELETE文で表の全行を削除しても，行を格納するセグメントは割り当てられている状態のままです。そのため，DELETE文で表の全行を削除したあとにCREATE INDEX文を実行した場合，そのレンジインデクスは未完状態になります。

5.6　データ用DBエリアの設計

データ用DBエリアはセグメントおよびページで構成されています。データの格納効率を上げるためには，ページサイズや1セグメントの容量を正しい指針に基づいて設計する必要があります。

また，ページサイズや1セグメントの容量が適切でないと，データへのアクセス効率が悪くなり，性能が低下します。

データ用DBエリアを設計するときの考慮点を次に示します。

どのデータ用DBエリアにどの表（インデクス）をどれだけ格納するか

1つのデータ用DBエリアを何個のデータ用DBエリアファイルで構成するか

データ用DBエリアにマルチチャンク表を格納するかどうか

カラムストア表とローストア表の両方を同じデータ用DBエリアに格納するかどうか

1ページのサイズをどうするか

1セグメントの容量をどうするか

各考慮点の詳細については，次項以降で説明します。

メモ

ページサイズや1セグメントの容量を設計してから，データ用DBエリアの容量を見積もってください。データ用DBエリアの容量見積もりについては，「5.8　データ用DBエリアの容量見積もり」を参照してください。

5.6.1　データ用DBエリアを設計する際の考慮点

データ用DBエリアを設計する際の考慮点について説明します。

なお，データ用DBエリアにマルチチャンク表を格納する場合は，「5.6.2　データ用DBエリアにマルチチャンク表を格納する場合の考慮点」の説明もお読みください。

(1)　表とインデクスを格納するデータ用DBエリアの考慮点

表とインデクスをデータ用DBエリアに格納する際の考慮点を次に示します。

データ量が多い表は，データ用DBエリアにその表だけを格納することを推奨します。

データ量が多いインデクスは，データ用DBエリアにそのインデクスだけを格納することを推奨します。

データ量が少ない（数メガバイト）表やインデクスの場合は，複数の表や複数のインデクスを1つのデータ用DBエリアにまとめて格納しても問題ありません。

カラムストア表を定義する場合，そのカラムストア表だけを格納する専用のデータ用DBエリアを用意してください。

データ量が多い表やインデクスを1つのデータ用DBエリアにまとめて格納した場合，次に示すような検索を実行すると，同一のDBエリアに対してI/Oが集中し性能が低下するおそれがあります。

1つのデータ用DBエリアに複数の表を格納して，結合を行うSQLを使用した検索を実行した場合

1つのデータ用DBエリアに複数のインデクスを格納して，インデクスを利用する検索を実行した場合

また，次のような問題も発生するおそれがあります。

データ用DBエリアに掛かる排他によって，ある表に対する操作（SQL文またはコマンド）が実行されている間は，同じデータ用DBエリアに格納されている別の表に対する操作が実行できなくなる

グローバルバッファを共有している場合，ある表へのSQL文の実行によって，同じデータ用DBエリアに格納されている別の表に対する検索性能に影響を及ぼす

特に，カラムストア表を格納するデータ用DBエリアと，ローストア表やインデクスを格納するデータ用DBエリアを同じグローバルバッファに割り当てると，ローストア表の検索性能や，インデクスを使用した検索性能が低下するおそれがあります。

(2)　レンジインデクスを格納するデータ用DBエリアの考慮点

レンジインデクス固有の考慮点を次に示します。

レンジインデクスを定義した表を格納するデータ用DBエリアには，ほかの表またはインデクスを格納しないことを推奨します。ほかの表またはインデクスを格納すると，レンジインデクスの容量が増加することがあります。

(3)　データ用DBエリアを構成するデータ用DBエリアファイルの考慮点

メモ

クラウドストレージ機能を使用する場合は，ここで説明している考慮点は該当しないため，お読みいただく必要はありません。

1つのデータ用DBエリアを，複数のデータ用DBエリアファイルで構成すると，データ用DBエリアファイルへのアクセスが並列化されるため，負荷を分散させることができます。そのため，アクセス頻度が高い表やインデクスを格納するデータ用DBエリアは，複数のデータ用DBエリアファイルで構成することを検討してください。1つのデータ用DBエリアを構成するデータ用DBエリアファイル数の目安は，HADBサーバをインストールしたマシンのコア数の20%〜40%になります。

1つのデータ用DBエリアを，複数のデータ用DBエリアファイルで構成した場合のメリットを次に示します。

adbimportコマンドによるデータインポートを実行する場合

データ用DBエリアファイルごとに処理リアルスレッドを割り当てて，データの格納処理およびインデクスの作成処理を並列に行います。

割り当てられたセグメントが解放される場合

データ用DBエリアファイルごとに処理リアルスレッドを割り当てて，セグメントの解放処理を並列に行います。

SQLパラレル実行機能を使用する場合

データ用DBエリアファイルごとに検索系SQLの処理を並列に実行します。そのため，データ用DBエリアファイル数が多い方が処理の並列度が上がります（ただし，マルチノード構成の全ノード数が上限となります）。SQLパラレル実行機能については，「2.20.8　SQLパラレル実行機能」を参照してください。

5.6.2　データ用DBエリアにマルチチャンク表を格納する場合の考慮点

マルチチャンク表とマルチチャンク表に定義したインデクスを1つのデータ用DBエリアにまとめて格納する場合，次のことを考慮してください。

1つのデータ用DBエリアが管理できるチャンク数の上限は30,000個です。

表のチャンク数だけではなく，インデクスのチャンク数も考慮してください。

例

1つのデータ用DBエリアに，次のようにマルチチャンク表とインデクスを格納したとします。

マルチチャンク表T1に，B-treeインデクスIDX1とレンジインデクスRIDX1を定義しています。マルチチャンク表T1に指定したチャンク数の最大値を1,000とします。

マルチチャンク表T2に，B-treeインデクスIDX2を定義しています。マルチチャンク表T2に指定したチャンク数の最大値を500とします。

この場合，T1，IDX1とRIDX1で作成されるチャンク数の最大値は3,000個となります。また，T2とIDX2で作成されるチャンク数の最大値は1,000個となります。

このため，1つのデータ用DBエリアに作成されるチャンク数の最大値は4,000個となります。

この合計値が30,000個を超えることはできません。

1つのデータ用DBエリアに複数の表やインデクスを格納した場合，バックグラウンドインポートを実行すると，格納した表やインデクスの分だけチャンクが作成されます。複数の表やインデクスを格納する場合，1つのデータ用DBエリアが管理できるチャンク数の上限を超えないようにしてください。

メモ

チャンク数の最大値の求め方については，「5.2.4　マルチチャンク表を定義する場合の考慮点」を参照してください。

adbdbstatusコマンドのDBエリアのサマリ情報で，データ用DBエリア内に格納されている表およびインデクスのチャンク数の最大値の合計（Created_chunks）を確認できます。また，データ用DBエリア内に作成できるチャンク数の上限（Creatable_chunks）も確認できます。詳細については，マニュアルHADB　コマンドリファレンスのDBエリアのサマリ情報で出力される項目の一覧を参照してください。

■アーカイブマルチチャンク表の場合

アーカイブマルチチャンク表の場合は，次に示すことにも考慮してください。

アーカイブレンジ列に自動的に定義されるレンジインデクスのチャンク数

アーカイブレンジ列に自動的に定義されるレンジインデクスについてもチャンクが作成されます。そのため，このレンジインデクスのチャンク数についても，計算する必要があります。

ロケーション表のチャンク数

ロケーション表は，アーカイブマルチチャンク表と同じデータ用DBエリアに格納されます。このロケーション表についてもチャンクが作成されます。そのため，ロケーション表のチャンク数についても，計算する必要があります。ロケーション表のチャンク数は，次に示す計算式で求められます。

計算式

5.6.3　データ用DBエリアのページサイズを決める際の考慮点

データ用DBエリアのページサイズを決めるときの考慮点を説明します。

データ用DBエリアのページサイズの指定方法を次に示します。

adbinitコマンドの初期設定オプションadbinitdbareaの-pオプションにキロバイト単位で指定する

adbmodareaコマンドのDBエリア追加・変更オプションadbaddareaの-pオプションにキロバイト単位で指定する

(1)　表を格納するデータ用DBエリアの場合

表を格納するデータ用DBエリアのページサイズを決めるときの考慮点を次に示します。

ページサイズは，基本行を格納できる長さが必要になります。1つのデータ用DBエリアに複数の表を格納する場合は，表の中で最大の基本行を格納できる長さにしてください。基本行を格納できる長さがないと，表定義時にエラーとなります。基本行の長さの求め方については，「5.8.2　行の種別ごとの格納ページ数の求め方」を参照してください。

1ページ中に格納できる最大行数は255行です。そのため，行長の合計に比べてページサイズが大き過ぎると，使用できないむだな領域が発生し，データの格納効率が悪くなります。例えば，行長が100バイトの時に，1ページに格納できるデータは，最大「100バイト×255行＝25,500バイト」となります。このとき，ページサイズを32,768バイト（32キロバイト）にすると，「32,768バイト−25,500バイト−管理領域≒約7,000バイト」の領域が使用できないため，むだな領域になります。

カラムストア表を格納するデータ用DBエリアのページサイズには，32,768バイト（32キロバイト）を指定することを推奨します。それによって圧縮率の向上が見込まれます。

配列型の列が定義された表は，ページサイズが4,096バイト（4キロバイト）のデータ用DBエリアには格納できません。

(2)　B-treeインデクスを格納するデータ用DBエリアの場合

ページサイズには，8キロバイトまたは16キロバイトを指定してください。

(3)　テキストインデクスを格納するデータ用DBエリアの場合

ページサイズには，8キロバイトを指定してください。

(4)　レンジインデクスを格納するデータ用DBエリアの場合

ページサイズには，最大値である32キロバイトを指定してください。

5.6.4　データ用DBエリアの1セグメントの容量を決める際の考慮点

データ用DBエリアを作成する際に，データ用DBエリアの1セグメントの容量を指定します。ここでは，1セグメントの容量の推奨値，および1セグメントの容量を決める際の考慮点を説明します。

なお，データ用DBエリアの1セグメントの容量は，次の方法で指定します。

adbinitコマンドの初期設定オプションadbinitdbareaの-sオプションにメガバイト単位で指定する

adbmodareaコマンドのDBエリア追加・変更オプションadbaddareaの-sオプションにメガバイト単位で指定する

(1)　表を格納するデータ用DBエリアの場合

表を格納するデータ用DBエリアの1セグメントの容量の推奨値と考慮点を説明します。

重要

1つのデータ用DBエリアに1つの表を格納するのが基本ですが，1つのデータ用DBエリアに複数の表を格納する場合は，1セグメントの容量の推奨値が同じ表を格納することを推奨します。

なお，1つのデータ用DBエリアに1セグメントの容量の推奨値が異なる表を格納する場合は，格納する表の中でいちばん大きい推奨値を1セグメントの容量に指定してください。

■ローストア表を格納するデータ用DBエリアの場合

1セグメントの容量には4メガバイトを指定してください。

■カラムストア表を格納するデータ用DBエリアの場合

1セグメントの容量を大きくすると，辞書圧縮方式の圧縮率が向上することがあります。1セグメントの容量の推奨値を求める計算式を次に示します。

計算式

変数の説明

col_num

表の列数（単位：個）

elm_num(k)

表のk番目に定義した列の配列要素数の平均値（単位：個）

配列型以外の列の場合は，1としてください。

COLDATASIZE(k)

表のk番目に定義した列のデータ長の平均値（単位：バイト）

列のデータ長については，「5.8.2　行の種別ごとの格納ページ数の求め方」の「(3)　配列型の列を定義した表の行長（変数ARRAY_ROWSZ）の求め方」の変数COLDATASIZE(k)を参照してください。

1セグメントの容量の推奨値

1セグメントの容量の推奨値は，計算結果によって異なります。

計算結果が640を超える場合

16メガバイトを指定することを推奨します。

計算結果が1,280を超える場合

32メガバイトを指定することを推奨します。

計算結果が上記以外の場合

4メガバイトを指定してください。

1セグメントの容量が小さいデータ用DBエリアに配列型の列を定義した表を格納する場合，表の定義時または表への列の追加時にコマンドがエラーになります。このとき，KFAA31737-Eメッセージが出力されます。このメッセージの対処方法に従って1セグメントの容量を大きくしてください。配列型の列を定義した表を格納するデータ用DBエリアの1セグメントの容量の条件については，「5.2.13　配列型の列の定義【カラムストア表】」の「■データ用DBエリアに関する留意事項」を参照してください。

なお，1セグメントの容量が最大値である32メガバイトの場合にKFAA31737-Eメッセージが出力されたときは，次のどれかの対処をしてください。

表に定義する列数を減らす

表に定義する配列型の最大要素数を減らす

列定義の圧縮方式指定に，NONE（データ圧縮なし），RUNLENGTH（ランレングス圧縮方式），DELTA（差分圧縮方式），またはDELTA_RUNLENGTH（差分ランレングス圧縮方式）を指定する

表に格納するデータ量が少ないときに1セグメントの容量が大きいと，セグメントの格納効率や検索性能に影響を及ぼします。1スレッドの平均格納量，または1スレッドの平均検索量が1セグメントの容量よりも小さいときは，1セグメントの容量を小さくすることを検討してください。1スレッドの平均格納量，および1スレッドの平均検索量の計算式を次に示します。

計算式

変数の説明

import_csv_size

1回のインポートで格納するデータの総量（単位：バイト）

import_rthd_num

adbimportコマンドが使用する処理リアルスレッド数

詳細については，マニュアルHADB　コマンドリファレンスのadbimport（データのインポート）を参照してください。

table_csv_size

表に格納するデータの総量（単位：バイト）

sql_rthd_num

サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値

uthd_num

サーバ定義adb_sys_uthd_numオペランドの指定値

adbimportコマンドを実行すると，セグメントの格納効率を確認できます。1回のインポートに使用するデータでadbimportコマンドを実行し，KFAA82004-Iメッセージに出力される次の項目を確認してください。

データが格納されたセグメント数

データが格納されたセグメント中の未使用ページ数

これらの値でセグメントの空比率を計算してください。セグメントの空比率が20%を超える場合は，1セグメントの容量を小さくすることを検討してください。

セグメントの空比率の計算式を次に示します。

計算式（単位：％）

変数の説明

page_size

表を格納するデータ用DBエリアのページサイズ（単位：バイト）

メモ

1セグメントの大きさを表す用語には，次の2つがあります。

1セグメントの容量

1セグメントの大きさをメガバイト単位で表すときの用語です。

セグメントサイズ

1セグメントの大きさをページ数単位で表すときの用語です。

セグメントサイズは，「1セグメントの容量÷ページサイズ」で求められます。

(2)　インデクスを格納するデータ用DBエリアの場合

1セグメントの容量には，4メガバイトを指定してください。

5.7　作業表用DBエリアの設計

作業表用DBエリアは，作業表を格納するために使用します。作業表は，作業表を作成するSQL文を実行すると作成されます。

作業表用DBエリアのページサイズは，adbinitコマンドの初期設定オプションのadb_init_wrk_page_sizeオペランドに，キロバイト単位で指定します。通常は，作業表用DBエリアのページサイズには256キロバイトを指定してください。

なお，作業表用DBエリアのページサイズが小さ過ぎる場合，行長が長い作業表を格納できません。実行するSQL文によっては，エラーとなるおそれがあります。例えば，作業表の構成列に定義長が大きい列を含むために，作業表の行長が長くなるSQL文を実行する場合などが該当します。そのため，作成される作業表の行長を考慮して，作業表用DBエリアのページサイズを指定してください。作業表の行長の求め方については，「5.9.2　作業表を格納するために必要な基本行用ページ数の求め方」を参照してください。

作業表用DBエリアのページサイズを変更するには，サーバ定義のadb_dbarea_wrk_page_sizeオペランドに，変更後のページサイズをキロバイト単位で指定してください。その後，HADBサーバを再起動してください。

また，作業表を作成するSQL文については，マニュアルHADB　AP開発ガイドのAPの性能向上に関する設計の作業表が作成されるSQLを実行する際の考慮点のSQLを実行した場合に作成される作業表についてを参照してください。

5.8　データ用DBエリアの容量見積もり

データ用DBエリアの容量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

データ用DBエリアの容量＝ DATA_PAGE_NUM×page_size÷1,024

変数の説明

DATA_PAGE_NUM：データ用DBエリアの総ページ数

page_size：データ用DBエリアのページサイズ（単位：バイト）

DATA_PAGE_NUMについては，「5.8.1　データ用DBエリアの総ページ数の求め方」を参照してください。

5.8.1　データ用DBエリアの総ページ数の求め方

データ用DBエリアの総ページ数（DATA_PAGE_NUM）は，次に示す計算式から求めてください。

(1)　計算式

データ用DBエリアの総ページ数（DATA_PAGE_NUM）の計算式を次に示します。

計算式

(2)　変数の説明

データ用DBエリアの総ページ数（DATA_PAGE_NUM）を求める際に使用する変数を次に示します。

変数の説明

dbarea_file_num

データ用DBエリアファイルの数（単位：個）

page_size

ページサイズ（単位：バイト）

SEGBF

セグメントブロック化係数

セグメントブロック化係数は，データ用DBエリアのページサイズおよび1セグメントの容量によって決まります。次の表から求めてください。

表5‒5　データ用DBエリアのページサイズおよび1セグメントの容量ごとのセグメントブロック化係数

項番

ページサイズ

（単位：キロバイト）

1セグメントの容量

（単位：メガバイト）

セグメントブロック化係数

1

4

4

12

2

8

42

3

16

127

4

32

341

5

16

170

6

32

102

SGPAGENUM

データ用DBエリアのセグメントのページ数

次に示す計算式から求めてください。

クラウドストレージ機能を使用しない場合

SGPAGENUM＝ SGDATA×SEGSIZE

クラウドストレージ機能を使用する場合

SGPAGENUM＝ PGDATA

SEGSIZE

セグメントサイズ（単位：ページ数）

次に示す計算式から求めてください。

SEGSIZE＝ 1セグメントの容量（単位：バイト）÷page_size

SGDATA

データ用DBエリアのセグメント数

次に示す計算式から求めてください。

なお，変数SGROWTBL，SGCOLUMNTBL，SGIDX，SGRIX，およびSGTIXは，シングルチャンク表とマルチチャンク表で求め方が異なります。また，1つのデータ用DBエリア内に，シングルチャンク表とマルチチャンク表の両方を格納する場合，それぞれの変数SGROWTBL，SGCOLUMNTBL，SGIDX，SGRIX，およびSGTIXを求めて，すべて合計する必要があります。変数SGROWTBL，SGCOLUMNTBL，SGIDX，SGRIX，およびSGTIXの求め方を次に示します。

■シングルチャンク表の場合

SGROWTBL（シングルチャンク表の場合）

データ用DBエリア内のローストア表のデータページを管理するセグメント数

「(a)　変数SGROWTBLおよびPGROWTBLの求め方（シングルチャンク表の場合）」を参照してください。

SGCOLUMNTBL（シングルチャンク表の場合）

データ用DBエリア内のカラムストア表のデータページを管理するセグメント数

「(b)　変数SGCOLUMNTBLおよびPGCOLUMNTBLの求め方（シングルチャンク表の場合）」を参照してください。

SGIDX（シングルチャンク表の場合）

データ用DBエリア内のB-treeインデクスページを管理するセグメント数

「(c)　変数SGIDXおよびPGIDXの求め方（シングルチャンク表の場合）」を参照してください。

SGRIX（シングルチャンク表の場合）

データ用DBエリア内のレンジインデクスページを管理するセグメント数

「(d)　変数SGRIXの求め方（シングルチャンク表の場合）」を参照してください。

SGTIX（シングルチャンク表の場合）

データ用DBエリア内のテキストインデクスページを管理するセグメント数

「(e)　変数SGTIXの求め方（シングルチャンク表の場合）」を参照してください。

■マルチチャンク表の場合

SGROWTBL（マルチチャンク表の場合）

データ用DBエリア内のローストア表のデータページを管理するセグメント数

「(f)　変数SGROWTBLおよびPGROWTBLの求め方（マルチチャンク表の場合）」を参照してください。

SGCOLUMNTBL（マルチチャンク表の場合）

データ用DBエリア内のカラムストア表のデータページを管理するセグメント数

「(g)　変数SGCOLUMNTBLおよびPGCOLUMNTBLの求め方（マルチチャンク表の場合）」を参照してください。

SGIDX（マルチチャンク表の場合）

データ用DBエリア内のB-treeインデクスページを管理するセグメント数

「(h)　変数SGIDXおよびPGIDXの求め方（マルチチャンク表の場合）」を参照してください。

SGRIX（マルチチャンク表の場合）

データ用DBエリア内のレンジインデクスページを管理するセグメント数

「(i)　変数SGRIXの求め方（マルチチャンク表の場合）」を参照してください。

SGTIX（マルチチャンク表の場合）

データ用DBエリア内のテキストインデクスページを管理するセグメント数

「(j)　変数SGTIXの求め方（マルチチャンク表の場合）」を参照してください。

PGDATA

データ用DBエリアのセグメントのページ数

次に示す計算式から求めてください。

PGDATA＝PGROWTBL＋PGCOLUMNTBL＋PGIDX＋SGRIX×SEGSIZE

なお，変数PGROWTBL，PGCOLUMNTBL，PGIDX，およびSGRIXは，シングルチャンク表とマルチチャンク表で求め方が異なります。また，1つのデータ用DBエリア内に，シングルチャンク表とマルチチャンク表の両方を格納する場合，それぞれの変数PGROWTBL，PGCOLUMNTBL，PGIDX，およびSGRIXを求めて，すべて合計する必要があります。変数PGROWTBL，PGCOLUMNTBL，PGIDX，およびSGRIXの求め方を次に示します。

■シングルチャンク表の場合

PGROWTBL（シングルチャンク表の場合）

データ用DBエリア内のローストア表のデータページを管理するセグメントのページ数

「(a)　変数SGROWTBLおよびPGROWTBLの求め方（シングルチャンク表の場合）」を参照してください。

PGCOLUMNTBL（シングルチャンク表の場合）

データ用DBエリア内のカラムストア表のデータページを管理するセグメントのページ数

「(b)　変数SGCOLUMNTBLおよびPGCOLUMNTBLの求め方（シングルチャンク表の場合）」を参照してください。

PGIDX（シングルチャンク表の場合）

データ用DBエリア内のB-treeインデクスページを管理するセグメントのページ数

「(c)　変数SGIDXおよびPGIDXの求め方（シングルチャンク表の場合）」を参照してください。

SGRIX（シングルチャンク表の場合）

データ用DBエリア内のレンジインデクスページを管理するセグメント数

「(d)　変数SGRIXの求め方（シングルチャンク表の場合）」を参照してください。

■マルチチャンク表の場合

PGROWTBL（マルチチャンク表の場合）

データ用DBエリア内のローストア表の表データを格納するために必要なページ数

「(f)　変数SGROWTBLおよびPGROWTBLの求め方（マルチチャンク表の場合）」を参照してください。

PGCOLUMNTBL（マルチチャンク表の場合）

データ用DBエリア内のカラムストア表のデータページを管理するセグメントのページ数

「(g)　変数SGCOLUMNTBLおよびPGCOLUMNTBLの求め方（マルチチャンク表の場合）」を参照してください。

PGIDX（マルチチャンク表の場合）

データ用DBエリア内のB-treeインデクスページを管理するセグメントのページ数

「(h)　変数SGIDXおよびPGIDXの求め方（マルチチャンク表の場合）」を参照してください。

SGRIX（マルチチャンク表の場合）

データ用DBエリア内のレンジインデクスページを管理するセグメント数

「(i)　変数SGRIXの求め方（マルチチャンク表の場合）」を参照してください。

(a)　変数SGROWTBLおよびPGROWTBLの求め方（シングルチャンク表の場合）

変数SGROWTBLおよびPGROWTBLは，次に示す計算式から求めてください。

SGROWTBL

データ用DBエリア内のローストア表のデータページを管理するセグメント数

PGROWTBL

データ用DBエリア内のローストア表のデータページを管理するセグメントのページ数

row_tbl_num_in_dbarea

データ用DBエリア中のすべての表数（単位：個）

BP（i）

各表を格納するために必要な基本行用ページ数

「5.8.2　行の種別ごとの格納ページ数の求め方」の「(1)　基本行用ページ数（変数BP（i））の求め方」を参照してください。

VP（i）

各表を格納するために必要な分岐行用ページ数

「5.8.2　行の種別ごとの格納ページ数の求め方」の「(2)　分岐行用ページ数（変数VP（i））の求め方」を参照してください。

(b)　変数SGCOLUMNTBLおよびPGCOLUMNTBLの求め方（シングルチャンク表の場合）

カラムストア表にはデータが圧縮されて格納されるため，ローストア表のようにレコード長から順に見積もり式を計算していくことができません。そのため，実際に少量のデータを格納し，その圧縮率を基にセグメント数（SGCOLUMNTBL）またはセグメントのページ数（PGCOLUMNTBL）を見積もります。

SGCOLUMNTBL

データ用DBエリア内のカラムストア表のデータページを管理するセグメント数

次に示す計算式から求めてください。

PGCOLUMNTBL

データ用DBエリア内のカラムストア表のデータページを管理するセグメントのページ数

次に示す計算式から求めてください。

column_tbl_num_in_dbarea

データ用DBエリア中のすべてのカラムストア表の数（単位：個）

SEGSIZE

セグメントサイズ（単位：ページ数）

次に示す計算式から求めてください。

SEGSIZE＝ 1セグメントの容量（単位：バイト）÷page_size

COLUMNTBLSIZE（i）

i番目のカラムストア表のデータサイズ（単位：メガバイト）

次に示す計算式から求めてください。

COLUMNTBLSIZE(i)＝IMPORTDATASIZE(i)×COMPRESSION_RATE＋COLUMNIZESIZE(i)

IMPORTDATASIZE（i）

i番目のカラムストア表に格納する元データ（CSVファイル）のサイズ（単位：メガバイト）

COMPRESSION_RATE

元データの圧縮率

i番目のカラムストア表に格納する元データの一部をadbimportコマンドで格納してください。そのあと，次に示す計算式から求めてください。

testdbsize

元データの一部をadbimportコマンドでインポートした際の，データベースの使用量（単位：メガバイト）

計算式を求めるためにインポートする元データの一部には，100～500メガバイト程度の実データに近いデータを用意することを推奨します。adbimportコマンドを実行するときは，インポートオプションadb_import_rthd_numに2を指定してください。

adbimportコマンド実行後に，adbdbstatusコマンドで，表のサマリ情報に含まれるUsed_segments（表の使用中セグメント数）をメガバイト単位で出力してください。そして，データベースの使用量を確認してください。

adbimportコマンドおよびadbdbstatusコマンドについては，マニュアルHADB　コマンドリファレンスを参照してください。

testcsvsize

adbimportコマンドでインポートした元データの一部のCSVファイルのサイズ（単位：メガバイト）

pgtestdbsize

元データの一部をadbimportコマンドでインポートした際の，データベースの使用量（単位：メガバイト）

計算式を求めるためにインポートする元データの一部には，100～500メガバイト程度の実データに近いデータを用意することを推奨します。adbimportコマンドを実行するときは，インポートオプションadb_import_rthd_numに2を指定してください。

adbimportコマンド実行後に，adbdbstatusコマンドで，表のサマリ情報に含まれるUsed_pages（表の使用中ページ数）をメガバイト単位で出力してください。そして，データベースの使用量を確認してください。

adbimportコマンドおよびadbdbstatusコマンドについては，マニュアルHADB　コマンドリファレンスを参照してください。

COLUMNIZESIZE（i）

i番目のカラムストア表に，更新行のカラム化機能のメンテナンス処理で格納されるカラムストア形式のデータのサイズ（単位：メガバイト）

変数COLUMNIZESIZE（i）は更新行のカラム化機能を有効にしている場合にだけ加算してください。なお，i番目のカラムストア表にB-treeインデクスを定義している場合は，0として見積もってください。

計算式を次に示します。

IMPORTDATASIZE（i）

i番目のカラムストア表に格納する元データ（CSVファイル）のサイズ（単位：メガバイト）

COMPRESSION_RATE

元データの圧縮率

上記にある変数COMPRESSION_RATEを参照して求めてください。

insert_row_num（i）

i番目のカラムストア表で，INSERT文またはUPDATE文によって，追加または更新される行数

import_row_num（i）

i番目のカラムストア表に格納する元データ（CSVファイル）の行数

ADDTBLPGNUM（i）

i番目のカラムストア表にINSERT文またはUPDATE文で追加するデータのページ数

次に示す計算式から求めてください。

ADDTBLPGNUM(i)＝ BP(i)＋VP(i)

BP（i）

i番目のカラムストア表にINSERT文またはUPDATE文で追加するデータの基本行用ページ数

i番目のカラムストア表にINSERT文またはUPDATE文で追加する行数を基に，「5.8.2　行の種別ごとの格納ページ数の求め方」の「(1)　基本行用ページ数（変数BP（i））の求め方」を参照して求めてください。

VP（i）

i番目のカラムストア表にINSERT文またはUPDATE文で追加するデータの分岐行用ページ数

i番目のカラムストア表にINSERT文またはUPDATE文で追加する行数を基に，「5.8.2　行の種別ごとの格納ページ数の求め方」の「(2)　分岐行用ページ数（変数VP（i））の求め方」を参照して求めてください。

DELTBLPGNUM（i）

i番目のカラムストア表にUPDATE文またはDELETE文で無効情報管理用ページに追加するデータのページ数

次に示す計算式から求めてください。

DELTBLPGNUM(i)＝ DELLEAFPGNUM(i)＋DELUPPERPGNUM(i)

DELLEAFPGNUM（i）

次に示す計算式から求めてください。

update_row_num

i番目のカラムストア表に対してUPDATE文で更新する行数

delete_row_num

i番目のカラムストア表に対してDELETE文で削除する行数

page_size

i番目のカラムストア表が定義されているDBエリアのページサイズ（単位：バイト）

DELUPPERPGNUM（i）

次に示す計算式から求めてください。

また，変数SGCOLUMNTBLおよびPGCOLUMNTBLについては，すべての列で圧縮方式に無圧縮（NONE）が選択された場合を仮定し，そのサイズを求めることで見積もり値を求めることもできます。ただし，選択された圧縮方式や圧縮率によっては，実際に格納した場合のサイズに比べて見積もり値が大きくなることがあります。

すべての列で圧縮方式に無圧縮（NONE）が選択された場合の見積もり値は，それぞれ次に示す計算式から求めてください。

SGCOLUMNTBL

PGCOLUMNTBL

COLUMNDATASEGNUM（i）

i番目のカラムストア表のカラムデータ用セグメント数

次に示す計算式から求めてください。

PAGE_ROW_NUM

セグメント内の格納行数

次に示す計算式から求めてください。

COLUMNDATAPGNUM（i）

i番目のカラムストア表のカラムデータ用セグメントのページ数

次に示す計算式から求めてください。

PAGE_ROW_NUM≦262,144の場合

PAGE_ROW_NUM＞262,144の場合

row_num

i番目のカラムストア表に格納する行数

column_num

i番目のカラムストア表の列数

page_size

データ用DBエリアのページサイズ（単位：バイト）

COL_PAGE_NUM

変数COL_PAGE_NUMに代入する値は，データ用DBエリアのページサイズおよび1セグメントの容量によって決まります。次の表のデータ用DBエリアのページサイズおよび1セグメントの容量に対応する値を代入してください。

表5‒6　変数COL_PAGE_NUMに代入する値

項番

ページサイズ

（単位：キロバイト）

1セグメントの容量

（単位：メガバイト）

COL_PAGE_NUMの値

1

4

4

1,021

2

8

510

3

16

255

4

32

127

5

16

511

6

32

1,023

COL_MAX_SIZE

i番目のカラムストア表の列データの最大データ長

次に示す計算式から求めてください。

例えば，i番目のカラムストア表にC1列，C2列，C3列が定義されている場合，次の計算をしてください。計算結果の最大値がCOL_MAX_SIZEの値になります。

COLUMNDATASIZE(1)×elm_num(1)

COLUMNDATASIZE(2)×elm_num(2)

COLUMNDATASIZE(3)×elm_num(3)

COLUMNDATASIZE（k）

k列目の列データのデータ長（単位：バイト）

変数COLUMNDATASIZEに代入する値は，列データのデータ型によって異なります。次の表で該当する値を代入してください。

表5‒7　各列データのデータ型のデータ長の一覧

項番

分類

データ型

データ長（単位：バイト）

1

数データ

BIGINT

10

2

INTEGER

6※2

3

SMALLINT

4※3

4

DECIMAL(m,n)※1

NUMERIC(m,n)※1

m≦4

4

5

5≦m≦8

6

6

9≦m≦16

10

7

17≦m

18

8

DOUBLE PRECISION

10

9

FLOAT

10

REAL

6

11

文字データ

CHARACTER(n)

n≦127

12

128≦n

10

13

VARCHAR(n)

n≦127

14

128≦n≦255

128

15

256≦n

130

16

日時データ

DATE

6

17

TIME(p)

18

TIMESTAMP(p)

19

バイナリデータ

BINARY(n)

n≦127

20

128≦n

10

21

VARBINARY(n)

n≦127

22

128≦n≦255

128

23

256≦n

130

24

論理データ

BOOLEAN

2

25

UUIDデータ

UUID

18

（凡例）

m，n：正の整数

p：0，3，6，9または12

注※1

全体の桁数がm桁で，小数点以下の桁数がn桁の固定小数点数を示します。mを省略した場合は38が仮定されます。

注※2

整数データ型のデータ形式がレガシー形式の場合，データ長は10バイトになります。

注※3

整数データ型のデータ形式がレガシー形式の場合，データ長は6バイトになります。

elm_num（k）

k列目の配列要素数の平均値（単位：個）

k列目の列が配列型以外の列の場合は，1としてください。

ROWDATASEGNUM（i）

i番目のカラムストア表のローデータ用セグメント数

次に示す計算式から求めてください。

ROWDATAPGNUM（i）

i番目のカラムストア表のローデータ用セグメントのページ数

次に示す計算式から求めてください。

row_num

i番目のカラムストア表に格納する行数

page_size

データ用DBエリアのページサイズ（単位：バイト）

var_num

分岐行として管理される列の列数（単位：個）

CHAR型，またはBINARY型の場合，定義長が128バイト以上の列の列数を求めてください。

VARCHAR型，またはVARBINARY型の場合，実長が128バイト以上のデータを含む列の列数を求めてください。

var_size

分岐行の列のデータ長（単位：バイト）

変数var_sizeに代入する値は，データ型によって異なります。次の表で該当する値を代入してください。

表5‒8　変数var_sizeに代入する値

項番

分類

データ型

データ長（単位：バイト）

1

文字データ

CHAR

定義長

2

VARCHAR

d

3

バイナリデータ

BINARY

定義長

4

VARBINARY

d

（凡例）

d：実際のデータ長

COLUMNIZESEGNUM（i）

i番目のカラムストア表に，更新行のカラム化機能のメンテナンス処理で格納されるカラムデータ用セグメント数

変数COLUMNIZESEGNUM（i）は，更新行のカラム化機能を有効にしている場合にだけ加算してください。なお，i番目のカラムストア表にB-treeインデクスを定義している場合は，0として見積もってください。

計算式を次に示します。

COLUMNIZESEGNUM(i)＝ COLUMNDATASEGNUM(i)

変数COLUMNDATASEGNUM（i）の求め方については，上記にある変数COLUMNDATASEGNUM（i）を参照してください。その際，変数row_numにはi番目のカラムストア表で，INSERT文またはUPDATE文によって，追加または更新される行数を代入してください。

(c)　変数SGIDXおよびPGIDXの求め方（シングルチャンク表の場合）

変数SGIDXおよびPGIDXは，次に示す計算式から求めてください。

SGIDX

データ用DBエリア内のB-treeインデクスページを管理するセグメント数

PGIDX

データ用DBエリア内のB-treeインデクスページを管理するセグメントのページ数

idx_num_in_dbarea

データ用DBエリア中のすべてのB-treeインデクス数（単位：個）

IP_LOWER(i)

各B-treeインデクスの下位ページ用のセグメントで使用するページ数

「5.8.3　B-treeインデクスのセグメントごとの格納ページ数の求め方」の「(1)　下位ページ用のセグメントで使用する格納ページ数（変数IP_LOWER（i））の求め方」を参照してください。

IP_UPPER(i)

各B-treeインデクスの上位ページ用のセグメントで使用するページ数

「5.8.3　B-treeインデクスのセグメントごとの格納ページ数の求め方」の「(2)　上位ページ用のセグメントで使用する格納ページ数（変数IP_UPPER（i））の求め方」を参照してください。

(d)　変数SGRIXの求め方（シングルチャンク表の場合）

次に示す計算式から求めてください。

rng_num_in_dbarea

データ用DBエリア中のレンジインデクス数（単位：個）

RS（i）

各レンジインデクスを格納するために必要なセグメント数

「5.8.6　レンジインデクスを格納するセグメント数の求め方」を参照してください。

(e)　変数SGTIXの求め方（シングルチャンク表の場合）

次に示す計算式から求めてください。

idx_num_in_dbarea

データ用DBエリア中のすべてのテキストインデクス数（単位：個）

TIP_STRSEG(i)

各テキストインデクスの文字列管理部用のセグメントで使用するページ数

「5.8.5　テキストインデクスのセグメントごとの格納ページ数の求め方」の「(1)　文字列管理部用のセグメントで使用する格納ページ数（変数TIP_STRSEG（i））の求め方」を参照してください。

TIP_APPSEG(i)

各テキストインデクスの出現情報管理部用のセグメントで使用するページ数

「5.8.5　テキストインデクスのセグメントごとの格納ページ数の求め方」の「(2)　出現情報管理部用のセグメントで使用する格納ページ数（変数TIP_APPSEG（i））の求め方」を参照してください。

(f)　変数SGROWTBLおよびPGROWTBLの求め方（マルチチャンク表の場合）

変数SGROWTBLおよびPGROWTBLは，次に示す計算式から求めてください。

SGROWTBL

データ用DBエリア内のローストア表のデータページを管理するセグメント数

PGROWTBL

データ用DBエリア内のローストア表の表データを格納するために必要なページ数

row_tbl_num_in_dbarea

データ用DBエリア中のすべてのローストア表数（単位：個）

chunk_num

作成されるアーカイブ状態ではないチャンク数（単位：個）

CHBP（i，k）

各チャンクの表を格納するために必要な基本行用ページ数

対象のチャンクに-bオプションを指定したadbimportコマンド，INSERT文，およびUPDATE文で格納するデータ量から見積もった値を代入してください。

CHVP（i，k）

各チャンクの表を格納するために必要な分岐行用ページ数

対象のチャンクに-bオプションを指定したadbimportコマンド，INSERT文，およびUPDATE文で格納するデータ量から見積もった値を代入してください。

SGLTBL(i)

i番目のアーカイブマルチチャンク表に対応するロケーション表を格納するために必要なセグメント数

アーカイブマルチチャンク表の場合に求める必要があります。

次に示す計算式から求めてください。

計算式

SEGSIZE

「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」にある「SEGSIZE」を参照してください。

LBP(i)

次に示す計算式から求めてください。

計算式

page_size

アーカイブマルチチャンク表を定義したデータ用DBエリアのページサイズ（単位：バイト）

row_size

1行のサイズ（単位：バイト）

変数row_sizeに代入する値は，アーカイブレンジ列のデータ型によって異なります。変数row_sizeとアーカイブレンジ列のデータ型の関係を，次の表に示します。

表5‒9　変数row_sizeとアーカイブレンジ列のデータ型の関係

項番

アーカイブレンジ列のデータ型

変数row_sizeに代入する値

1

BIGINT

102

2

INTEGER

94※1

3

SMALLINT

90※2

4

DECIMAL(m,n)

NUMERIC(m,n)

1≦m≦4

90

5

5≦m≦8

94

6

9≦m≦16

102

7

17≦m≦38

118

8

DOUBLE PRECISION

102

9

FLOAT

10

REAL

94

11

CHARCTER(p)

88＋2×p

12

DATE

94

13

TIME

104

14

TIMESTAMP

112

（凡例）

m：精度

n：位取り

p：文字列の長さ（単位：バイト）

注※1

整数データ型のデータ形式がレガシー形式の場合，変数row_sizeに代入する値は102になります。

注※2

整数データ型のデータ形式がレガシー形式の場合，変数row_sizeに代入する値は94になります。

LROWNUM

ロケーション表に格納する行数（単位：個）

次に示す計算式から求めてください。

計算式

archive_chunk_num

adbarchivechunkコマンドの実行回数

merge_chunk_num

adbmergechunkコマンドの実行回数

FILENUM(i)

i回目のadbarchivechunkコマンドで作成されるアーカイブファイル数の合計

次に示す計算式から求めてください。

計算式

FILENUM(j)

j回目のadbmergechunkコマンドでマージするアーカイブ状態のチャンクに対応するアーカイブファイル数の合計

変数FILENUM(i)の計算式を使用して求めてください。その際，「i」を「j」に置き換えてください。

chunk_num

コマンドの対象となるチャンク数（単位：個）

thd_num

次の値を代入してください。

adbarchivechunkコマンドで作成されるアーカイブファイル数を求める場合

次に示す計算式から求めてください。

↓（adbarchivechunkコマンド実行時のアーカイブチャンクオプションadb_arcv_rthd_numの指定値－1）÷2↓

adbmergechunkコマンドでマージするアーカイブ状態のチャンクに対応するアーカイブファイル数を求める場合

次の値を指定してください。

adbmergechunkコマンドの処理対象チャンクに対して，adbarchivechunkコマンド実行時のアーカイブチャンクオプションadb_arcv_rthd_numの指定値

SGMTGRPNUM

変数SGMTGRPNUMは，変数sgmtnum_in_chunkの値で異なります。変数sgmtnum_in_chunkと変数SGMTGRPNUMの関係を，次の表に示します。

表5‒10　変数sgmtnum_in_chunkと変数SGMTGRPNUMの関係

項番

変数sgmtnum_in_chunkの値

変数SGMTGRPNUMの値（単位：個数）

1

sgmtnum_in_chunk＜16

SGMTGRPNUMには，1を代入してください。

2

16≦sgmtnum_in_chunk

かつ

sgmtnum_in_chunk＜32

SGMTGRPNUMには，4を代入してください。

3

32≦sgmtnum_in_chunk

かつ

sgmtnum_in_chunk＜64

SGMTGRPNUMには，8を代入してください。

4

64≦sgmtnum_in_chunk

かつ

sgmtnum_in_chunk＜256

SGMTGRPNUMには，16を代入してください。

5

256≦sgmtnum_in_chunk

SGMTGRPNUMは，次に示す計算式で求めてください。

sgmtnum_in_chunk

アーカイブ対象のチャンクの中で，最も大きな表のセグメント数

次に示す計算式から求めてください。

計算式

CHBP(j)

「CHBP（i，k）」を参照してください。

CHVP(j)

「CHVP（i，k）」を参照してください。

SEGSIZE

「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」にある「SEGSIZE」を参照してください。

page_size

「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」にある「page_size」を参照してください。

LVP(i)

次に示す計算式から求めてください。

計算式

SGLIDX(i)

i番目のアーカイブマルチチャンク表に対応するロケーション表に定義されたインデクスを格納するために必要なセグメント数

アーカイブマルチチャンク表の場合に求める必要があります。

次に示す計算式から求めてください。

計算式

LICHKIDP_LOWER(i)

アーカイブファイルに対応するチャンクのチャンクIDに定義されたインデクスの下位ページ用セグメントで使用するページ数（単位：ページ）

LICHKIDP_UPPER(i)

アーカイブファイルに対応するチャンクのチャンクIDに定義されたインデクスの上位ページ用セグメントで使用するページ数（単位：ページ）

LIRNG01P_LOWER(i)

アーカイブファイルに格納されたデータについて，アーカイブレンジ列の値の範囲（上限値と下限値）に定義されたインデクスの下位ページ用セグメントで使用するページ数（単位：ページ）

LIRNG01P_UPPER(i)

アーカイブファイルに格納されたデータについて，アーカイブレンジ列の値の範囲（上限値と下限値）に定義されたインデクスの上位ページ用セグメントで使用するページ数（単位：ページ）

LIRNG02P_LOWER(i)

アーカイブファイルに格納されたデータについて，アーカイブレンジ列の値の下限値に定義されたインデクスの下位ページ用セグメントで使用するページ数（単位：ページ）

LIRNG02P_UPPER(i)

アーカイブファイルに格納されたデータについて，アーカイブレンジ列の値の下限値に定義されたインデクスの上位ページ用セグメントで使用するページ数（単位：ページ）

LICHKIDP_LOWER(i)，LIRNG01P_LOWER(i)，およびLIRNG02P_LOWER(i)については，「5.8.3　B-treeインデクスのセグメントごとの格納ページ数の求め方」の「(1)　下位ページ用のセグメントで使用する格納ページ数（変数IP_LOWER（i））の求め方」の変数IP_LOWER(i)の計算式で求めてください。LICHKIDP_UPPER(i)，LIRNG01P_UPPER(i)，およびLIRNG02P_UPPER(i)については，「5.8.3　B-treeインデクスのセグメントごとの格納ページ数の求め方」の「(2)　上位ページ用のセグメントで使用する格納ページ数（変数IP_UPPER（i））の求め方」の変数IP_UPPER(i)の計算式で求めてください。その際，各変数には次の値を代入してください。

R

1.5を代入してください。

key_num

0を代入してください。

dup_key_num

次の計算式で求めた値を代入してください。

計算式

page_size

アーカイブマルチチャンク表を格納するデータ用DBエリアのページサイズを，バイト単位で代入してください。

pctfree

30を代入してください。

key_dup

0を代入してください。

KEYSZDB

次の表で該当する値を代入してください。

表5‒11　変数KEYSZDBに代入する値

項番

見積もり対象の変数

アーカイブレンジ列のデータ型

変数KEYSZDBに代入する値

1

見積もり対象の変数は次のとおりです。

LICHKIDP_LOWER(i)

LICHKIDP_UPPER(i)

−

8

2

見積もり対象の変数は次のとおりです。

LIRNG01P_LOWER(i)

LIRNG01P_UPPER(i)

BIGINT

16

3

INTEGER

8※

4

SMALLINT

4※

5

DECIMAL(m,n)

NUMERIC(m,n)

1≦m≦4

4

6

5≦m≦8

8

7

9≦m≦16

16

8

17≦m≦38

32

9

DOUBLE PRECISION

16

10

FLOAT

11

REAL

8

12

CHARACTER(p)

2×p

13

DATE

8

14

TIME

18

15

TIMESTAMP

26

16

見積もり対象の変数は次のとおりです。

LIRNG02P_LOWER(i)

LIRNG02P_UPPER(i)

BIGINT

8

17

INTEGER

4※

18

SMALLINT

2※

19

DECIMAL(m,n)

NUMERIC(m,n)

1≦m≦4

2

20

5≦m≦8

4

21

9≦m≦16

8

22

17≦m≦38

16

23

DOUBLE PRECISION

8

24

FLOAT

25

REAL

4

26

CHARACTER(p)

p

27

DATE

4

28

TIME

9

29

TIMESTAMP

13

（凡例）

−：該当しません。

m：精度

n：位取り

p：文字列の長さ（単位：バイト）

注※

整数データ型のデータ形式がレガシー形式の場合，次の表で該当する値をKEYSZDBに代入してください。

表5‒12　整数データ型のデータ形式がレガシー形式の場合に変数KEYSZDBに代入する値

項番

見積もり対象の変数

アーカイブレンジ列のデータ型

変数KEYSZDBに代入する値

1

見積もり対象の変数は次のとおりです。

LIRNG01P_LOWER(i)

LIRNG01P_UPPER(i)

INTEGER

16

2

SMALLINT

8

3

見積もり対象の変数は次のとおりです。

LIRNG02P_LOWER(i)

LIRNG02P_UPPER(i)

INTEGER

8

4

SMALLINT

4

(g)　変数SGCOLUMNTBLおよびPGCOLUMNTBLの求め方（マルチチャンク表の場合）

カラムストア表にはデータが圧縮されて格納されるため，ローストア表のようにレコード長から順に見積もり式を計算していくことができません。そのため，実際に少量のデータを格納し，その圧縮率を基にセグメント数（SGCOLUMNTBL）またはセグメントのページ数（PGCOLUMNTBL）を見積もります。

SGCOLUMNTBL

データ用DBエリア内のカラムストア表のデータページを管理するセグメント数

次に示す計算式から求めてください。

PGCOLUMNTBL

データ用DBエリア内のカラムストア表のデータページを管理するセグメントのページ数

次に示す計算式から求めてください。

column_tbl_num_in_dbarea

データ用DBエリア中のすべてのカラムストア表の数（単位：個）

COLUMNTBLSIZE（i）

i番目のカラムストア表のデータサイズ（単位：メガバイト）

次に示す計算式から求めてください。

chunk_num

作成されるチャンク数（単位：個）

IMPORTDATASIZE（i，k）

i番目のカラムストア表の，k番目のチャンクに格納する元データ（CSVファイル）のサイズ（単位：メガバイト）

COMPRESSION_RATE

元データの圧縮率

i番目のカラムストア表に格納する元データの一部をadbimportコマンドで格納してください。そのあと，次に示す計算式から求めてください。

testdbsize

元データの一部をadbimportコマンドでインポートした際の，データベースの使用量（単位：メガバイト）

計算式を求めるためにインポートする元データの一部には，100～500メガバイト程度の実データに近いデータを用意することを推奨します。adbimportコマンドを実行するときは，インポートオプションadb_import_rthd_numに2を指定してください。

adbimportコマンド実行後に，adbdbstatusコマンドで，表のサマリ情報に含まれるUsed_segments（表の使用中セグメント数）をメガバイト単位で出力してください。そして，データベースの使用量を確認してください。

adbimportコマンドおよびadbdbstatusコマンドについては，マニュアルHADB　コマンドリファレンスを参照してください。

testcsvsize

adbimportコマンドでインポートした元データの一部のCSVファイルのサイズ（単位：メガバイト）

pgtestdbsize

元データの一部をadbimportコマンドでインポートした際の，データベースの使用量（単位：メガバイト）

計算式を求めるためにインポートする元データの一部には，100～500メガバイト程度の実データに近いデータを用意することを推奨します。adbimportコマンドを実行するときは，インポートオプションadb_import_rthd_numに2を指定してください。

adbimportコマンド実行後に，adbdbstatusコマンドで，表のサマリ情報に含まれるUsed_pages（表の使用中ページ数）をメガバイト単位で出力してください。そして，データベースの使用量を確認してください。

adbimportコマンドおよびadbdbstatusコマンドについては，マニュアルHADB　コマンドリファレンスを参照してください。

COLUMNIZESIZE（i，k）

i番目のカラムストア表のk番目のチャンクに，更新行のカラム化機能のメンテナンス処理で格納されるカラムストア形式のデータのサイズ（単位：メガバイト）

COLUMNIZESIZE（i，k）は更新行のカラム化機能を有効にしている場合にだけ加算してください。なお，i番目のカラムストア表にB-treeインデクスを定義している場合は，0として見積もってください。

計算式を次に示します。

IMPORTDATASIZE（i，k）

i番目のカラムストア表のk番目のチャンクに格納する元データ（CSVファイル）のサイズ（単位：メガバイト）

COMPRESSION_RATE

元データの圧縮率

上記にある変数COMPRESSION_RATEを参照して求めてください。

insert_row_num（i，k）

i番目のカラムストア表のk番目のチャンクで，INSERT文またはUPDATE文によって，追加または更新される行数

import_row_num（i，k）

i番目のカラムストア表のk番目のチャンクに格納する元データ（CSVファイル）の行数

UPDATESEGNUM（i）

i番目のカラムストア表に対して，更新系SQLの実行で増えるセグメント数

次に示す計算式から求めてください。

SEGSIZE

セグメントサイズ（単位：ページ数）

次に示す計算式から求めてください。

SEGSIZE＝ 1セグメントの容量（単位：バイト）÷page_size

page_size

i番目のカラムストア表が定義されているDBエリアのページサイズ（単位：バイト）

ADDTBLPGNUM（i，k）

i番目のカラムストア表の，k番目のチャンクにINSERT文またはUPDATE文で追加するデータのページ数

次に示す計算式から求めてください。

ADDTBLPGNUM(i,k)＝ BP(i,k)＋VP(i,k)

BP（i，k）

i番目のカラムストア表の，k番目のチャンクにINSERT文またはUPDATE文で追加するデータの基本行用ページ数

i番目のカラムストア表の，k番目のチャンクにINSERT文またはUPDATE文で追加する行数を基に，「5.8.2　行の種別ごとの格納ページ数の求め方」の「(1)　基本行用ページ数（変数BP（i））の求め方」を参照して求めてください。

VP（i，k）

i番目のカラムストア表の，k番目のチャンクにINSERT文またはUPDATE文で追加するデータの分岐行用ページ数

i番目のカラムストア表の，k番目のチャンクにINSERT文またはUPDATE文で追加する行数を基に，「5.8.2　行の種別ごとの格納ページ数の求め方」の「(2)　分岐行用ページ数（変数VP（i））の求め方」を参照して求めてください。

DELTBLPGNUM（i，k）

i番目のカラムストア表の，k番目のチャンクにUPDATE文またはDELETE文で無効情報管理用ページに追加するデータのページ数

次に示す計算式から求めてください。

DELTBLPGNUM(i,k)＝ DELLEAFPGNUM(i,k)＋DELUPPERPGNUM(i,k)

DELLEAFPGNUM（i，k）

次に示す計算式から求めてください。

update_row_num

i番目のカラムストア表の，k番目のチャンクに対してUPDATE文で更新する行数

delete_row_num

i番目のカラムストア表の，k番目のチャンクに対してDELETE文で削除する行数

page_size

i番目のカラムストア表が定義されているDBエリアのページサイズ（単位：バイト）

DELUPPERPGNUM（i，k）

次に示す計算式から求めてください。

また，変数SGCOLUMNTBLおよびPGCOLUMNTBLについては，すべての列で圧縮方式に無圧縮（NONE）が選択された場合を仮定し，そのサイズを求めることで見積もり値を求めることもできます。ただし，選択された圧縮方式や圧縮率によっては，実際に格納した場合のサイズに比べて見積もり値が大きくなることがあります。

すべての列で圧縮方式に無圧縮（NONE）が選択された場合の見積もり値は，それぞれ次に示す計算式から求めてください。

SGCOLUMNTBL

PGCOLUMNTBL

COLUMNTBLSEGNUM（i）

i番目のカラムストア表のセグメント数

次に示す計算式から求めてください。

COLUMNDATASEGNUM（i，k）

i番目のカラムストア表の，k番目のチャンクのカラムデータ用セグメント数

次に示す計算式から求めてください。

PAGE_ROW_NUM

セグメント内の格納行数

次に示す計算式から求めてください。

COLUMNDATAPGNUM（i，k）

i番目のカラムストア表の，k番目のチャンクのカラムデータ用セグメントのページ数

次に示す計算式から求めてください。

PAGE_ROW_NUM≦262,144の場合

PAGE_ROW_NUM＞262,144の場合

row_num

i番目のカラムストア表の，k番目のチャンクに格納する行数

column_num

i番目のカラムストア表の列数

page_size

データ用DBエリアのページサイズ（単位：バイト）

COL_PAGE_NUM

変数COL_PAGE_NUMに代入する値は，データ用DBエリアのページサイズおよび1セグメントの容量によって決まります。次の表のデータ用DBエリアのページサイズおよび1セグメントの容量に対応する値を代入してください。

表5‒13　変数COL_PAGE_NUMに代入する値

項番

ページサイズ

（単位：キロバイト）

1セグメントの容量

（単位：メガバイト）

COL_PAGE_NUMの値

1

4

4

1,021

2

8

510

3

16

255

4

32

127

5

16

511

6

32

1,023

COL_MAX_SIZE

i番目のカラムストア表の列データの最大データ長

次に示す計算式から求めてください。

例えば，i番目のカラムストア表にC1列，C2列，C3列が定義されている場合，次の計算をしてください。計算結果の最大値がCOL_MAX_SIZEの値になります。

COLUMNDATASIZE(1)×elm_num(1)

COLUMNDATASIZE(2)×elm_num(2)

COLUMNDATASIZE(3)×elm_num(3)

COLUMNDATASIZE（s）

s列目の列データのデータ長（単位：バイト）

変数COLUMNDATASIZEに代入する値は，列データのデータ型によって異なります。次の表で該当する値を代入してください。

表5‒14　各列データのデータ型のデータ長の一覧

項番

分類

データ型

データ長（単位：バイト）

1

数データ

BIGINT

10

2

INTEGER

6※2

3

SMALLINT

4※3

4

DECIMAL(m,n)※1

NUMERIC(m,n)※1

m≦4

4

5

5≦m≦8

6

6

9≦m≦16

10

7

17≦m

18

8

DOUBLE PRECISION

10

9

FLOAT

10

REAL

6

11

文字データ

CHARACTER(n)

n≦127

12

128≦n

10

13

VARCHAR(n)

n≦127

14

128≦n≦255

128

15

256≦n

130

16

日時データ

DATE

6

17

TIME(p)

18

TIMESTAMP(p)

19

バイナリデータ

BINARY(n)

n≦127

20

128≦n

10

21

VARBINARY(n)

n≦127

22

128≦n≦255

128

23

256≦n

130

24

論理データ

BOOLEAN

2

25

UUIDデータ

UUID

18

（凡例）

m，n：正の整数

p：0，3，6，9または12

注※1

全体の桁数がm桁で，小数点以下の桁数がn桁の固定小数点数を示します。mを省略した場合は38が仮定されます。

注※2

整数データ型のデータ形式がレガシー形式の場合，データ長は10バイトになります。

注※3

整数データ型のデータ形式がレガシー形式の場合，データ長は6バイトになります。

elm_num（s）

s列目の配列要素数の平均値（単位：個）

s列目の列が配列型以外の列の場合は，1としてください。

ROWDATASEGNUM（i，k）

i番目のカラムストア表の，k番目のチャンクのローデータ用セグメント数

次に示す計算式から求めてください。

ROWDATAPGNUM（i，k）

i番目のカラムストア表の，k番目のチャンクのローデータ用セグメントのページ数

次に示す計算式から求めてください。

row_num

i番目のカラムストア表の，k番目のチャンクに格納する行数

page_size

データ用DBエリアのページサイズ（単位：バイト）

var_num

分岐行として管理される列の列数（単位：個）

CHAR型，またはBINARY型の場合，定義長が128バイト以上の列の列数を求めてください。

VARCHAR型，またはVARBINARY型の場合，実長が128バイト以上のデータを含む列の列数を求めてください。

var_size

分岐行の列のデータ長（単位：バイト）

変数var_sizeに代入する値は，データ型によって異なります。次の表で該当する値を代入してください。

表5‒15　変数var_sizeに代入する値

項番

分類

データ型

データ長（単位：バイト）

1

文字データ

CHAR

定義長

2

VARCHAR

d

3

バイナリデータ

BINARY

定義長

4

VARBINARY

d

（凡例）

d：実際のデータ長

COLUMNIZESEGNUM（i，k）

i番目のカラムストア表のk番目のチャンクに，更新行のカラム化機能のメンテナンス処理で格納されるカラムデータ用セグメント数

COLUMNIZESEGNUM（i，k）は，更新行のカラム化機能を有効にしている場合にだけ加算してください。なお，i番目のカラムストア表にB-treeインデクスを定義している場合は，0として見積もってください。

計算式を次に示します。

COLUMNIZESEGNUM(i，k)＝ COLUMNDATASEGNUM(i，k)

COLUMNDATASEGNUM（i，k）の求め方については，上記にある変数COLUMNDATASEGNUM（i，k）を参照してください。その際，変数row_numにはi番目のカラムストア表のk番目のチャンクで，INSERT文またはUPDATE文によって，追加または更新される行数を代入してください。

(h)　変数SGIDXおよびPGIDXの求め方（マルチチャンク表の場合）

変数SGIDXおよびPGIDXは，次に示す計算式から求めてください。

SGIDX

データ用DBエリア内のB-treeインデクスページを管理するセグメント数

PGIDX

データ用DBエリア内のB-treeインデクスページを管理するセグメントのページ数

idx_num_in_dbarea

データ用DBエリア中のすべてのB-treeインデクス数（単位：個）

chunk_num

作成されるアーカイブ状態ではないチャンク数（単位：個）

CHIP_LOWER（i，k）

各チャンクのB-treeインデクスの下位ページ用のセグメントで使用するページ数

「5.8.3　B-treeインデクスのセグメントごとの格納ページ数の求め方」の「(1)　下位ページ用のセグメントで使用する格納ページ数（変数IP_LOWER（i））の求め方」を参照してください。

その際，対象のチャンクに-bオプションを指定したadbimportコマンド，INSERT文，およびUPDATE文で格納するデータ量から見積もった値を代入してください。

CHIP_UPPER（i，k）

各チャンクのB-treeインデクスの上位ページ用のセグメントで使用するページ数

「5.8.3　B-treeインデクスのセグメントごとの格納ページ数の求め方」の「(2)　上位ページ用のセグメントで使用する格納ページ数（変数IP_UPPER（i））の求め方」を参照してください。

その際，対象のチャンクに-bオプションを指定したadbimportコマンド，INSERT文，およびUPDATE文で格納するデータ量から見積もった値を代入してください。

(i)　変数SGRIXの求め方（マルチチャンク表の場合）

次に示す計算式から求めてください。

rng_num_in_dbarea

データ用DBエリア中のレンジインデクス数（単位：個）

chunk_num

作成されるアーカイブ状態ではないチャンク数（単位：個）

CHRS（i，k）

各チャンクのレンジインデクスを格納するために必要なセグメント数

対象のチャンクに-bオプションを指定したadbimportコマンド，INSERT文，およびUPDATE文で格納するデータ量から見積もった値を代入してください。

(j)　変数SGTIXの求め方（マルチチャンク表の場合）

次に示す計算式から求めてください。

idx_num_in_dbarea

データ用DBエリア中のすべてのテキストインデクス数（単位：個）

chunk_num

作成されるアーカイブ状態ではないチャンク数（単位：個）

CHTIP_STRSEG（i，k）

各チャンクのテキストインデクスの文字列管理部用のセグメントで使用するページ数

「5.8.5　テキストインデクスのセグメントごとの格納ページ数の求め方」の「(1)　文字列管理部用のセグメントで使用する格納ページ数（変数TIP_STRSEG（i））の求め方」を参照してください。

その際，対象のチャンクに-bオプションを指定したadbimportコマンド，INSERT文，およびUPDATE文で格納するデータ量から見積もった値を代入してください。

CHTIP_APPSEG（i，k）

各チャンクのテキストインデクスの出現情報管理部用のセグメントで使用するページ数

「5.8.5　テキストインデクスのセグメントごとの格納ページ数の求め方」の「(2)　出現情報管理部用のセグメントで使用する格納ページ数（変数TIP_APPSEG（i））の求め方」を参照してください。

その際，対象のチャンクに-bオプションを指定したadbimportコマンド，INSERT文，およびUPDATE文で格納するデータ量から見積もった値を代入してください。

5.8.2　行の種別ごとの格納ページ数の求め方

ここでは，各表を格納するために必要な基本行用ページ数（変数BP（i）），および各表を格納するために必要な分岐行用ページ数（変数VP（i））の求め方について説明します。

(1)　基本行用ページ数（変数BP（i））の求め方

基本行用ページ数（変数BP（i））は，次に示す計算式から求めてください。変数BP（i）の分母の括弧部は1ページに格納される行数であり，最小1，最大255となります。

計算式

変数の説明

row_num

表に格納する行数（単位：個）

page_size

データ用DBエリアのページサイズ（単位：バイト）

pctfree

CREATE TABLE文のPCTFREEで指定する未使用領域の比率（単位：％）

未使用領域の比率を指定しない場合は，30％と仮定して計算してください。

カラムストア表にINSERT文またはUPDATE文で追加するデータの基本行用ページ数を求める場合は，0％と仮定して計算してください。

なお，pctfreeの値は，次に示す計算式を満たすように値を決めてください。

計算式（pctfreeの値）

CTRLSIZE

ローストア表の場合は56を指定してください。

カラムストア表にINSERT文またはUPDATE文で追加するデータの基本行用ページ数を求める場合は80を指定してください。

また，行長ROWSZは次に示す計算式から求めてください。非FIX表（表オプションBRANCH ALLの指定なし），非FIX表（表オプションBRANCH ALLの指定あり）およびFIX表で計算式が異なります。

カラムストア表にINSERT文またはUPDATE文で追加するデータの基本行用ページ数を求める場合には，「計算式（非FIX表で表オプションBRANCH ALLの指定なしの場合）」に従って求めてください。

計算式（非FIX表で表オプションBRANCH ALLの指定なしの場合）

計算式（非FIX表で表オプションBRANCH ALLの指定ありの場合）

計算式（FIX表の場合）

変数の説明

col_num

表の列の総数（単位：個）

col_size（i）

各列のデータ長（単位：バイト）

次に示す表を基に，各列のデータ長を求めてください。そのあとに，すべての列の合計を求めてください。

表5‒16　各データ型のデータ長の一覧

項番

分類

データ型

データ長（単位：バイト）

1

数データ

BIGINT

8

2

INTEGER

4※2

3

SMALLINT

2※3

4

DECIMAL(m,n)※1

NUMERIC(m,n)※1

1≦m≦4

2

5

5≦m≦8

4

6

9≦m≦16

8

7

17≦m≦38

16

8

DOUBLE PRECISION

8

9

FLOAT

10

REAL

4

11

文字データ

CHARACTER(n)

n

12

VARCHAR(n)

var_col_size

13

日時データ

DATE

4

14

TIME(p)

3＋↑p÷2↑

15

TIMESTAMP(p)

7＋↑p÷2↑

16

バイナリデータ

BINARY(n)

n

17

VARBINARY(n)

var_col_size

18

配列データ

ARRAY

11

19

論理データ

BOOLEAN

1

（凡例）

m，n：正の整数

p：0，3，6，9または12

注※1

全体の桁数がm桁で，小数点以下の桁数がn桁の固定小数点数を示します。mを省略した場合は38が仮定されます。

注※2

整数データ型のデータ形式がレガシー形式の場合，データ長は8バイトになります。

注※3

整数データ型のデータ形式がレガシー形式の場合，データ長は4バイトになります。

var_col_size：VARCHAR型およびVARBINARY型の列のデータ長

次に示す表を基にデータ長を求めてください。

表5‒17　VARCHAR型およびVARBINARY型の列のデータ長の一覧

項番

表オプション

BRANCH ALLの指定有無

列定義

BRANCHの指定

定義長n

（単位：バイト）

データ長

（単位：バイト）

1

指定あり

−

−

9

2

指定なし

YES

−

11

3

NO

1≦n≦255

d＋2

4

256≦n≦32,000

d＋3

5

AUTOまたは指定なし

1≦n≦255

d＋2

6

256≦n≦32,000

11

（凡例）

n：正の整数

d：実際のデータ長

−：該当しません。

(2)　分岐行用ページ数（変数VP（i））の求め方

分岐行用ページ数（変数VP（i））は，次に示す計算式から求めてください。

計算式

変数の説明

row_num

表に格納する行数（単位：個）

var_num

分岐行として管理される列の列数（単位：個）

次に示す列の数を求めてください。

表オプションBRANCH ALLの指定ありの場合

・VARCHAR型，およびVARBINARY型の列の数

表オプションBRANCH ALLの指定なしの場合

次のどれかに該当するVARCHAR型，およびVARBINARY型の列の数の合計

・列定義BRANCHにYESを指定した列

・定義長256バイト以上で列定義BRANCHにAUTOを指定した列

・定義長256バイト以上で列定義BRANCHを省略した列

page_size

データ用DBエリアのページサイズ（単位：バイト）

pctfree

CREATE TABLE文のPCTFREEで指定する未使用領域の比率（単位：％）

未使用領域の比率を指定しない場合は，30％と仮定して計算してください。

カラムストア表にINSERT文またはUPDATE文で追加するデータの分岐行用ページ数を求める場合は，0％と仮定して計算してください。

なお，pctfreeの値は，「(1)　基本行用ページ数（変数BP（i））の求め方」の変数「pctfree」を参照して，計算式を満たすように値を決定してください。

var_size

分岐行の列の平均データ長（単位：バイト）

次に示す表を基に求めてください。

表5‒18　分岐行となる列のデータ長の一覧

分類

データ型

データ長（単位：バイト）

文字データ

VARCHAR

d

バイナリデータ

VARBINARY

d

（凡例）

d：実際のデータ長

CTRLSIZE

ローストア表の場合は56を指定してください。

カラムストア表にINSERT文またはUPDATE文で追加するデータの分岐行用ページ数を求める場合は80を指定してください。

(3)　配列型の列を定義した表の行長（変数ARRAY_ROWSZ）の求め方

配列型の列を定義した表の行長（変数ARRAY_ROWSZ）は，次に示す計算式から求めてください。

計算式

変数の説明

col_num

表の列の総数

page_size

データ用DBエリアのページサイズ（単位：バイト）

ARRAY_DICSIZE(k)

表のk番目に定義された列の圧縮用辞書のサイズ

次に示す計算式から求めてください。なお，列定義の圧縮方式指定に，NONE（データ圧縮なし），RUNLENGTH（ランレングス圧縮方式），DELTA（差分圧縮方式），またはDELTA_RUNLENGTH（差分ランレングス圧縮方式）を指定する列については，ARRAY_DICSIZE(k)は0になります。

計算式

elm_num(k)

表のk番目に定義した列の最大要素数（単位：個）

配列型以外の列の場合は，1としてください。

COLDATASIZE(k)

表のk番目に定義した列のデータ長（単位：バイト）

次に示す計算式で求めてください。

計算式

COLDATASIZE_NOBOUND(k)

配列型の列の要素データ型および定義長を基に，次に示す表から求めてください。

表5‒19　変数COLDATASIZE_NOBOUNDの値

項番

分類

要素データ型

COLDATASIZE_NOBOUNDの値（単位：バイト）

1

数データ

BIGINT

9

2

INTEGER

5※2

3

SMALLINT

3※3

4

DECIMAL(m,n)※1

NUMERIC(m,n)※1

m≦4

3

5

5≦m≦8

5

6

9≦m≦16

9

7

17≦m

17

8

DOUBLE PRECISION

9

9

FLOAT

10

REAL

5

11

文字データ

CHARACTER(n)

n≦127

n＋1

12

128≦n

9

13

VARCHAR(n)

n≦127

n＋2

14

128≦n≦255

129

15

256≦n

130

16

日時データ

DATE

5

17

TIME(p)

4＋↑p÷2↑

18

TIMESTAMP(p)

8＋↑p÷2↑

19

バイナリデータ

BINARY(n)

n≦127

n＋1

20

128≦n

9

21

VARBINARY(n)

n≦127

n＋2

22

128≦n≦255

129

23

256≦n

130

24

論理データ

BOOLEAN

2

25

UUIDデータ

UUID

17

（凡例）

m，n：正の整数

p：0，3，6，9または12

注※1

全体の桁数がm桁で，小数点以下の桁数がn桁の固定小数点数を示します。mを省略した場合は38が仮定されます。

注※2

整数データ型のデータ形式がレガシー形式の場合，COLDATASIZE_NOBOUNDの値は9バイトになります。

注※3

整数データ型のデータ形式がレガシー形式の場合，COLDATASIZE_NOBOUNDの値は5バイトになります。

ARRAY_DATAPAGENUM

次の手順で求めてください。

■前提条件

ARRAY_DATAPAGENUMの初期値は1です。

列の定義順を示すkの初期値は1です。

変数については，変数ARRAY_DICSIZE(k)を参照してください。

■手順

free_sizeを求める

次の計算式で求めてください。

free_size ＝ page_size － 56

k番目の列の次の値を求める

（COLDATASIZE(k)＋8）×elm_num(k)

手順2.の値が「page_size － 56」（手順1.の値）を超える場合は，「page_size － 56」（手順1.の値）を手順2.の値としてください。

k番目の列の次の値を求める

手順1.の値 － 手順2.の値

手順3.の値を確認する

手順3.の値＜0の場合

ARRAY_DATAPAGENUMに1を加算して，手順1.に戻って手順を繰り返してください。

0≦手順3.の値の場合

kに1を加算してください。

kが表に定義した列数を超えたら計算は完了です。超えていない場合は手順2.に戻って手順を繰り返してください。

5.8.3　B-treeインデクスのセグメントごとの格納ページ数の求め方

ここでは，B-treeインデクスのセグメントごとの格納ページ数の求め方について説明します。

B-treeインデクスのセグメントは次のとおりです。

下位ページ用のセグメント

上位ページ用のセグメント

(1)　下位ページ用のセグメントで使用する格納ページ数（変数IP_LOWER（i））の求め方

下位ページ用のセグメントで使用する格納ページ数（変数IP_LOWER（i））は，次に示す計算式から求めてください。

なお，B-treeインデクスにナル値除外指定が指定されている場合，ナル値だけで構成されるキーについては，キーの種類の個数，およびキー値の重複数の平均値を求める計算式から除いてください。

計算式

IP_LOWER（i） ＝ （PIDX_LEAF＋PDUP）×R

PIDX_LEAFは，計算式1から求めてください。

PDUPは，計算式2から求めてください。PDUPLISTはキー値ごとの行IDリストページ数の平均，PDUPDIRはキー値ごとの行IDディレクトリページ数の平均になります。

Rは，B-treeインデクスページごとにキーの重複数，またはキー長にばらつきがある場合には1.2〜1.5とし，平均値近辺に収束している場合には1としてください。

計算式1（PIDX_LEAFの求め方）

計算式2（PDUPの求め方）

変数の説明

key_num

キー値の重複が255以下のキーの種類の個数（単位：個）

dup_key_num

キー値の重複が256以上のキーの種類の個数（単位：個）

dup_key_dup

キー値の重複が256以上のキーの重複数の平均値（単位：個）

page_size

データ用DBエリアのページサイズ（単位：バイト）

KNPP

1B-treeインデクスページ当たりの平均キー格納件数

次に示す計算式から求めてください。

計算式（KNPPの求め方）

pctfree

CREATE INDEX文で指定する未使用領域の比率（単位：％）

未使用領域の比率を指定しない場合は，30%と仮定して計算してください。

key_dup

キー値の重複が255以下のキーの重複数の平均値（単位：個）

dbarea_file_num

データ用DBエリアファイルの数（単位：個）

KEYSZDB

データベース格納キー長（単位：バイト）

「5.8.4　B-treeインデクスのキー長（KEYSZ）の求め方」によって算出された値KEYSZを使用して，次に示す計算式から求めてください。

計算式（KEYSZDBの求め方）

(2)　上位ページ用のセグメントで使用する格納ページ数（変数IP_UPPER（i））の求め方

上位ページ用のセグメントで使用する格納ページ数（変数IP_UPPER（i））は，次に示す計算式から求めてください。

計算式

PIDX（k）は，計算式1に示す漸化式から求めてください。PIDX（2）は必ず計算し，PIDX（n）＝1になるまで，PIDX（k＋1）の計算式を繰り返してください。

Rは，B-treeインデクスページごとにキーの重複数，またはキー長にばらつきがある場合には1.2〜1.5とし，平均値近辺に収束している場合には1としてください。

計算式1（PIDX（k）の求め方）

変数の説明

PIDX_LEAF

「(1)　下位ページ用のセグメントで使用する格納ページ数（変数IP_LOWER（i））の求め方」の計算式1（PIDX_LEAFの求め方）に従って求めてください。

page_size

データ用DBエリアのページサイズ（単位：バイト）

pctfree

CREATE INDEX文で指定する未使用領域の比率（単位：％）

未使用領域の比率を指定しない場合は，30%と仮定して計算してください。

KEYSZDB

データベース格納キー長（単位：バイト）

「(1)　下位ページ用のセグメントで使用する格納ページ数（変数IP_LOWER（i））の求め方」の変数KEYSZDBに従って求めてください。

5.8.4　B-treeインデクスのキー長（KEYSZ）の求め方

B-treeインデクスのキー長（変数KEYSZ）の計算方法を次に示します。

まず，次に示す図に従ってB-treeインデクスの種別を特定してください。

図5‒13　B-treeインデクスの種別を特定する方法

次に，特定したB-treeインデクスの種別ごとの計算式によって，KEYSZを求めてください。ただし，各インデクス構成列のキー長は，次に示す表を参照してください。

表5‒20　B-treeインデクスのキー長一覧

項番

分類

データ型

キー長（単位：バイト）

1

数データ

BIGINT

8

2

INTEGER

4※1

3

SMALLINT

2※2

4

DECIMAL（m，n）

NUMERIC（m，n）

1≦m≦4

2

5

5≦m≦8

4

6

9≦m≦16

8

7

17≦m≦38

16

8

DOUBLE PRECISION

8

9

FLOAT

10

REAL

4

11

文字データ

CHARACTER（n）

n

12

VARCHAR（n）

d

13

日時データ

DATE

4

14

TIME（p）

3＋↑p÷2↑

15

TIMESTAMP（p）

7＋↑p÷2↑

16

バイナリデータ

BINARY（n）

n

17

VARBINARY（n）

d

18

論理データ

BOOLEAN

1

19

UUIDデータ

UUID

16

（凡例）

d：実際のデータ長

m，n：正の整数

p：0，3，6，9または12

注※1

整数データ型のデータ形式がレガシー形式の場合，キー長は8バイトになります。

注※2

整数データ型のデータ形式がレガシー形式の場合，キー長は4バイトになります。

(1)　単一列インデクスの場合

計算式（単一列インデクス）（単位：バイト）

KEYSZ＝ flag_size＋key_size

変数の説明

flag_size

次に示すどれかの値（単位：バイト）

・インデクス構成列が，VARCHAR列またはVARBINARY列以外の場合：0

・インデクス構成列が，定義長255バイト以下のVARCHAR列またはVARBINARY列の場合：1

・インデクス構成列が，定義長256バイト以上のVARCHAR列またはVARBINARY列の場合：2

key_size

インデクス構成列のキー長（単位：バイト）

(2)　固定長列だけの複数列インデクスの場合

計算式（固定長列だけの複数列インデクス）（単位：バイト）

変数の説明

idx_col_num

インデクス構成列の数

flag_null

次に示すどちらかの値（単位：バイト）

・インデクス構成列中にナル値を含まないキーの場合：0

・インデクス構成列中にナル値を含むキーの場合：1

key_size（i）

i番目のインデクス構成列のキー長（単位：バイト）

(3)　可変長列を含む複数列インデクスの場合

計算式（可変長列を含む複数列インデクス）（単位：バイト）

変数の説明

idx_col_num

インデクス構成列の数

flag_type

次に示すどちらかの値（単位：バイト）

・B-treeインデクスを構成する列の長さが255バイト以下の場合：1

・B-treeインデクスを構成する列の長さが256バイト以上の場合：2

複数列インデクスを構成する列の長さについては，マニュアルHADB　SQLリファレンスの定義系SQLのCREATE INDEX（インデクスの定義）を参照してください。

key_size（i）

i番目のインデクス構成列のキー長（単位：バイト）

5.8.5　テキストインデクスのセグメントごとの格納ページ数の求め方

ここでは，テキストインデクスのセグメントごとの格納ページ数の求め方について説明します。

テキストインデクスのセグメントは次のとおりです。

文字列管理部用のセグメント

出現情報管理部用のセグメント

(1)　文字列管理部用のセグメントで使用する格納ページ数（変数TIP_STRSEG（i））の求め方

文字列管理部用のセグメントで使用する格納ページ数（変数TIP_STRSEG（i））は，次に示す計算式から求めてください。

計算式

変数の説明

TIXSTR

テキストインデクスの文字列管理部のページ総数

次に示す計算式から求めてください。

なお，1文字1文字に関連性がない文字列（ランダムな文字列など）に対してテキストインデクスを追加した場合は，次の計算式に収束しないことがあります。

計算式

page_size

データ用DBエリアのページサイズ（単位：バイト）

pctfree

CREATE INDEX文で指定する未使用領域の比率（単位：％）

未使用領域の比率を指定しない場合は，30%と仮定して計算してください。

TIXCOR

テキストインデクスの表記ゆれ補正検索で必要なページ総数

テキストインデクスの定義時に，「テキストインデクス表記ゆれ補正指定」を指定した場合に求める必要があります。

次に示す計算式から求めてください。

なお，1文字1文字に関連性がない文字列（ランダムな文字列など）に対してテキストインデクスを追加した場合は，次の計算式に収束しないことがあります。

計算式

page_size

データ用DBエリアのページサイズ（単位：バイト）

pctfree

CREATE INDEX文で指定する未使用領域の比率（単位：％）

未使用領域の比率を指定しない場合は，30%と仮定して計算してください。

TIXWORD

テキストインデクスのワード検索で必要なページ総数

テキストインデクスの定義時に，「テキストインデクスワード検索指定」を指定した場合に求める必要があります。

次に示す計算式から求めてください。

なお，1文字1文字に関連性がない文字列（ランダムな文字列など）に対してテキストインデクスを追加した場合は，次の計算式に収束しないことがあります。

計算式

subarea_num

テキストインデクスを定義した実表が格納されているデータ用DBエリアを構成するデータ用DBエリアファイルの総数

datapage_num

テキストインデクスを定義した実表のデータページ数（基本行と分岐行のページ数を合計した値）

page_size

データ用DBエリアのページサイズ（単位：バイト）

pctfree

CREATE INDEX文で指定する未使用領域の比率（単位：％）

未使用領域の比率を指定しない場合は，30%と仮定して計算してください。

(2)　出現情報管理部用のセグメントで使用する格納ページ数（変数TIP_APPSEG（i））の求め方

出現情報管理部用のセグメントで使用する格納ページ数（変数TIP_APPSEG（i））は，次に示す計算式から求めてください。

計算式

TIP_APPSEG（i）＝TIXAPP×1.5

変数の説明

TIXAPP

テキストインデクスの出現情報管理部のページ総数

次に示す計算式から求めてください。

なお，1文字1文字に関連性がない文字列（ランダムな文字列など）に対してテキストインデクスを追加した場合は，次の計算式に収束しないことがあります。

計算式

subarea_num

テキストインデクスを定義した実表が格納されているデータ用DBエリアを構成するデータ用DBエリアファイルの総数

datapage_num

テキストインデクスを定義した実表のデータページ数（基本行と分岐行のページ数を合計した値）

page_size

データ用DBエリアのページサイズ（単位：バイト）

pctfree

CREATE INDEX文で指定する未使用領域の比率（単位：％）

未使用領域の比率を指定しない場合は，30%と仮定して計算してください。

5.8.6　レンジインデクスを格納するセグメント数の求め方

各レンジインデクスを格納するために必要なセグメント数（変数RS（i））は，次に示す計算式から求めてください。

計算式（単位：セグメント数）

RS（i）＝ SGRI＋SGSAM

変数の説明

SGRI：「(1)　変数SGRIの求め方」を参照してください。

SGSAM：「(2)　変数SGSAMの求め方」を参照してください。

(1)　変数SGRIの求め方

変数SGRIは，次に示す計算式から求めてください。

計算式（単位：セグメント数）

変数の説明

SEGSIZE

レンジインデクスを定義したDBエリアのセグメントサイズ（単位：ページ数）

次に示す計算式から求めてください。

計算式

SEGSIZE＝ 1セグメントの容量（単位：バイト）÷page_size

page_size

レンジインデクスを格納するDBエリアのページサイズ（単位：バイト）

PGGRPRI

次に示す計算式から求めてください。

計算式（単位：ページグループ数）

DBASGM

次に示す計算式から求めてください。

計算式（単位：個）

SUBAREANUM

次に示す計算式から求めてください。

計算式（単位：個）

cmd_num

レンジインデクスを定義した表が格納されたDBエリアを，次のコマンドで初期化した回数，または追加した回数の合計

adbinitコマンド

adbmodareaコマンド

tbl_dbareafile_num(i)

レンジインデクスを定義した表が格納されたDBエリアを，i番目に実行した次のコマンドで初期化したとき，または追加したときに，作成されたDBエリアファイルの数（単位：個）

adbinitコマンド

adbmodareaコマンド

tbl_dbarea_initsize(i)

レンジインデクスを定義した表が格納されたDBエリアを，i番目に実行した次のコマンドで初期化したとき，または追加したときに，初期確保サイズのオプションに指定したサイズ（単位：ギガバイト）

adbinitコマンド

adbmodareaコマンド

SGTBL

レンジインデクスを定義した表，およびその表と同じデータ用DBエリアに格納されている表を格納するセグメント数（単位：個）

「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」の次の個所を参照してください。なお，表の種類によって参照先が異なります。

シングルチャンク表かつローストア表の場合

「(a)　変数SGROWTBLおよびPGROWTBLの求め方（シングルチャンク表の場合）」

シングルチャンク表かつカラムストア表の場合

「(b)　変数SGCOLUMNTBLおよびPGCOLUMNTBLの求め方（シングルチャンク表の場合）」

マルチチャンク表かつローストア表の場合

「(f)　変数SGROWTBLおよびPGROWTBLの求め方（マルチチャンク表の場合）」

マルチチャンク表かつカラムストア表の場合

「(g)　変数SGCOLUMNTBLおよびPGCOLUMNTBLの求め方（マルチチャンク表の場合）」

SGIDX

レンジインデクスを定義した表と同じデータ用DBエリアに格納されているB-treeインデクスのセグメント数（単位：個）

「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」の次の個所を参照してください。なお，表の種類によって参照先が異なります。

シングルチャンク表の場合

「(c)　変数SGIDXおよびPGIDXの求め方（シングルチャンク表の場合）」

マルチチャンク表の場合

「(h)　変数SGIDXおよびPGIDXの求め方（マルチチャンク表の場合）」

SGTIX

レンジインデクスを定義した表と同じデータ用DBエリアに格納されているテキストインデクスのセグメント数（単位：個）

「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」の次の個所を参照してください。なお，表の種類によって参照先が異なります。

シングルチャンク表の場合

「(e)　変数SGTIXの求め方（シングルチャンク表の場合）」

マルチチャンク表の場合

「(j)　変数SGTIXの求め方（マルチチャンク表の場合）」

rng_num_in_table_dbarea

レンジインデクスを定義した表が格納されているデータ用DBエリア内のレンジインデクス数（単位：個）

ASGRI（i）

レンジインデクスを定義した表と同じデータ用DBエリアに格納されているレンジインデクスのセグメント数（単位：個）

計算式（単位：個）

SGSAM

「(2)　変数SGSAMの求め方」を参照してください。

SGTBL

レンジインデクスを定義した表と同じデータ用DBエリアに格納されているi番目のレンジインデクスを定義した表のセグメント数（単位：個）

「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」にある次の個所を参照してください。なお，表の種類によって参照先が異なります。

シングルチャンク表かつローストア表の場合

「(a)　変数SGROWTBLおよびPGROWTBLの求め方（シングルチャンク表の場合）」

シングルチャンク表かつカラムストア表の場合

「(b)　変数SGCOLUMNTBLおよびPGCOLUMNTBLの求め方（シングルチャンク表の場合）」

マルチチャンク表かつローストア表の場合

「(f)　変数SGROWTBLおよびPGROWTBLの求め方（マルチチャンク表の場合）」

マルチチャンク表かつカラムストア表の場合

「(g)　変数SGCOLUMNTBLおよびPGCOLUMNTBLの求め方（マルチチャンク表の場合）」

col_size

レンジインデクスを定義した列のデータ長（単位：バイト）

各列のデータ長を求める場合は，「5.8.2　行の種別ごとの格納ページ数の求め方」の「(1)　基本行用ページ数（変数BP（i））の求め方」の「表5‒16　各データ型のデータ長の一覧」を参照してください。

PGGRPSGM

次に示す計算式から求めてください。

計算式（単位：ページグループ数）

PGGRPSIZE

変数PGGRPSIZEは，次に示す計算式で求めた変数TMPPGGRPSIZE以上の，最小の2のべき乗数となります。

重要

変数PGGRPSIZEの計算結果が255より大きくなった場合は，変数PGGRPSIZEに255を代入してください。

対象のレンジインデクスが，バージョン02-02より前に定義されたレンジインデクスであり，かつadbidxrebuildコマンドを一度も実行したことがないレンジインデクスである場合，変数PGGRPSIZEには変数SEGSIZEの値を代入してください。

計算式

TBLSGMTMAXNUM

次に示す計算式から求めてください。

計算式

TABLESGMTCAPA

レンジインデクスを定義した表を格納するデータ用DBエリアの1セグメントの容量（単位：バイト）

rng_page_size

レンジインデクスを格納するデータ用DBエリアのページサイズ（単位：バイト）

(2)　変数SGSAMの求め方

変数SGSAMは，次に示す計算式から求めてください。

計算式（単位：セグメント数）

変数の説明

SUBAREAPTRNUM

次に示す計算式から求めてください。

計算式（単位：個）

cmd_num

レンジインデクスを定義した表が格納されたDBエリアを，次のコマンドで初期化した回数，または追加した回数の合計

adbinitコマンド

adbmodareaコマンド

tbl_dbareafile_num(i)

レンジインデクスを定義した表が格納されたDBエリアを，i番目に実行した次のコマンドで初期化したとき，または追加したときに，作成されたDBエリアファイルの数（単位：個）

adbinitコマンド

adbmodareaコマンド

tbl_dbarea_max_initsize

レンジインデクスを定義した表が格納されたDBエリアを，次のコマンドで初期化したとき，または追加したときに，実行したすべてのコマンドの中で，初期確保サイズのオプションに指定したサイズが最も大きいサイズ（単位：ギガバイト）

adbinitコマンド

adbmodareaコマンド

col_size

レンジインデクスを定義した列のデータ長（単位：バイト）

各列のデータ長を求める場合は，「5.8.2　行の種別ごとの格納ページ数の求め方」の「(1)　基本行用ページ数（変数BP（i））の求め方」の「表5‒16　各データ型のデータ長の一覧」を参照してください。

なお，対象のレンジインデクスがチャンクのスキップができないレンジインデクスの場合，変数col_sizeには0を代入してください。対象のレンジインデクスがチャンクのスキップができるかどうかを確認する場合は「11.4.6　レンジインデクスの確認（チャンクのスキップの可否）」を参照してください。

page_size

レンジインデクスを格納するDBエリアのページサイズ（単位：バイト）

SEGSIZE

セグメントサイズ（単位：ページ数）

次に示す計算式から求めてください。

計算式

SEGSIZE＝ 1セグメントの容量（単位：バイト）÷page_size

5.9　作業表用DBエリアの容量見積もり

作業表用DBエリアの容量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

作業表用DBエリアの容量＝ WRK_PAGE_NUM×page_size÷1,024

変数の説明

WRK_PAGE_NUM：作業表用DBエリアの総ページ数

「5.9.1　作業表用DBエリアの総ページ数の求め方」を参照して求めてください。

page_size：作業表用DBエリアのページサイズ

「5.7　作業表用DBエリアの設計」を基に決めた，初期設定オプションadb_init_wrk_page_sizeの指定値を代入してください。

ただし，adb_init_wrk_page_sizeの指定値の単位はキロバイトですが，変数page_sizeの単位はバイトなので注意してください。

初期設定オプションadb_init_wrk_page_sizeについては，マニュアルHADB　コマンドリファレンスのadbinit（データベースの初期設定）を参照してください。

5.9.1　作業表用DBエリアの総ページ数の求め方

作業表用DBエリアの総ページ数（変数WRK_PAGE_NUM）は，次に示す計算式から求めてください。

計算式

変数の説明

dbarea_file_num

作業表用DBエリアファイルの数（単位：個）

作業表用DBエリアファイルは1個であるため，変数dbarea_file_numには1を代入してください。

tbl_num

同時に作成する作業表の総数（単位：個）

WP（i）

作業表を格納するために必要な基本行用ページ数

変数WP（i）については，「5.9.2　作業表を格納するために必要な基本行用ページ数の求め方」を参照して求めてください。

作業表の用途がソート処理の場合，求めた値を2倍にしてください。作業表の用途については，マニュアルHADB　AP開発ガイドのAPの性能向上に関する設計の作業表が作成されるSQLを実行する際の考慮点を参照してください。

5.9.2　作業表を格納するために必要な基本行用ページ数の求め方

作業表を格納するために必要な基本行用ページ数（変数WP（i））は，次に示す計算式から求めてください。

計算式

変数の説明

row_num

表に格納する行数（単位：個）

page_size

作業表用DBエリアのページサイズ（単位：バイト）

「5.7　作業表用DBエリアの設計」を基に決めた，初期設定オプションadb_init_wrk_page_sizeの指定値を代入してください。

ただし，adb_init_wrk_page_sizeの指定値の単位はキロバイトですが，変数page_sizeの単位はバイトです。単位が異なるため，注意してください。

初期設定オプションadb_init_wrk_page_sizeについては，マニュアルHADB　コマンドリファレンスのadbinit（データベースの初期設定）を参照してください。

変数ROWSZについては，次に示す計算式から求めてください。

なお，計算式で求めた値が「ROWSZ＞32,704」となる場合は，計算式で求めた値に，「2×（col_num＋1）」で求めた値を加算してください。

計算式

変数の説明

col_num：作業表を構成する列の総数（単位：個）

col_size（i）：各列のデータ長（単位：バイト）

変数col_size（i）については，次に示す表を基に各列のデータ長を求めてください。そのあと，すべての列の合計値を求めてください。

表5‒21　各データ型のデータ長の一覧

項番

分類

データ型

データ長（単位：バイト）

1

数データ

BIGINT

8

2

INTEGER

4※2

3

SMALLINT

2※3

4

DECIMAL(m,n)※1

NUMERIC(m,n)※1

1≦m≦4

2

5

5≦m≦8

4

6

9≦m≦16

8

7

17≦m≦38

16

8

DOUBLE PRECISION

8

9

FLOAT

10

REAL

4

11

文字データ

CHARACTER(n)

n

12

VARCHAR(n)

wrk_var_col_size

13

STRING

d＋16

14

日時データ

DATE

4

15

TIME(p)

3＋↑p÷2↑

16

TIMESTAMP(p)

7＋↑p÷2↑

17

バイナリデータ

BINARY(n)

n

18

VARBINARY(n)

d＋2

19

配列データ

ARRAY

14

20

構造データ

STRUCT

field_data_size ＋ field_num

21

論理データ

BOOLEAN

1

22

UUIDデータ

UUID

16

（凡例）

m，n：正の整数

d：実際のデータ長

p：0，3，6，9または12

注※1

全体の桁数がm桁で，小数点以下の桁数がn桁の固定小数点数を示します。mを省略した場合は38が仮定されます。

注※2

整数データ型のデータ形式がレガシー形式の場合，データ長は8バイトになります。

注※3

整数データ型のデータ形式がレガシー形式の場合，データ長は4バイトになります。

field_data_size

STRUCT型の列のフィールドのデータ長の合計

STRUCT型のフィールドがある場合は，STRUCT型のフィールドを構成するフィールドのデータ長も加算してください。各フィールドのデータ長は，フィールドデータ型に対応するデータ長から求めてください。

field_num

STRUCT型の列のフィールド数の合計

STRUCT型のフィールドがある場合は，STRUCT型のフィールドを構成するフィールド数も加算してください。

wrk_var_col_size：作業表に関するVARCHAR型の列のデータ長

次に示す表を基にデータ長を求めてください。

表5‒22　作業表に関するVARCHAR型の列のデータ長の一覧

項番

定義長n（単位：バイト）

データ長（単位：バイト）

1

1≦n≦32,000

d＋2

2

32,001≦n≦64,000

d＋16

（凡例）

n：正の整数

d：実際のデータ長

変数WORK_ARRAY_ROWSZについては，次に示す計算式から求めてください。

計算式

変数の説明

col_num

作業表を構成する列の総数

col_size（i）

各列のデータ長（単位：バイト）

「表5‒21　各データ型のデータ長の一覧」を基に各列のデータ長を求めてください。そのあと，すべての列の合計値を求めてください。

elm_num（i）

列の最大要素数

配列型以外の列の場合は，0としてください。

5.10　マスタディレクトリ用DBエリアの容量見積もり

マスタディレクトリ用DBエリアの容量は，8.1メガバイトとして見積もってください。

なお，マスタディレクトリ用DBエリアを構成するマスタディレクトリ用DBエリアファイル（ファイル名：ADBMST）は，DBディレクトリ下のレギュラーファイル，またはDBディレクトリ下以外のブロックスペシャルファイルに1つだけ作成されます。

クラウドストレージ機能を使用する場合，マスタディレクトリ用DBエリアファイル（ファイル名：ADBMST）は作成されません。AWS環境の場合は，S3バケット内のS3オブジェクトにマスタディレクトリ用DBエリアのデータが格納されます。Azure環境の場合は，コンテナー内のBLOBにマスタディレクトリ用DBエリアのデータが格納されます。

5.11　ディクショナリ用DBエリアの容量見積もり

ディクショナリ用DBエリアの容量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

ディクショナリ用DBエリアの容量(ADBDICSIZE)＝
     (ADBDICSIZE_INIT＋ADBDICSIZE_OPERATION)×2※

注※

adbreorgsystemdataコマンド（ディクショナリ表およびシステム表の再編成）を実行する運用の場合は，2倍で計算してください。

メモ

adbreorgsystemdataコマンドを定期的に実行する運用の場合，adbreorgsystemdataコマンドを実行してから次にadbreorgsystemdataコマンドを実行するまでの間に実行する定義系SQLの回数を見積もってください。adbreorgsystemdataコマンドを使用した運用については，「11.20　ディクショナリ表およびシステム表の再編成」を参照してください。

変数の説明

ADBDICSIZE_INIT

データベースの大きさから求められるディクショナリ用DBエリアの容量

次に示す計算式から求めてください。

計算式（単位：キロバイト）

USERSCM

HADBユーザが定義したスキーマの数

USERTBL

HADBユーザが定義した実表および外部表の数

変数USERTBLには，アーカイブマルチチャンク表の数も含みます。

USERIDX

HADBユーザが定義したインデクスの数

USERVIEW

HADBユーザが定義したビュー表の数

DBAREANUM

DBエリアの数

USERNUM

CREATE USER文で作成したHADBユーザの数＋1

1は，adbinitコマンド実行時に作成されたHADBユーザになります。

USERFKEYNUM

HADBユーザが定義した外部キーの数

USERARCHIVE

アーカイブマルチチャンク表の数

ADBDICSIZE_OPERATION

データベースの運用に従って求められるディクショナリ用DBエリアの容量

次に示す計算式から求めてください。

計算式（単位：キロバイト）

ADBDICSIZE_OPERATION＝
   ↑CREATE_USER＋CREATE_SCHEMA＋CREATE_TABLE＋CREATE_VIEW＋CREATE_INDEX
     ＋CREATE_AUDIT＋CREATE_SERVER＋CREATE_FOREIGN_TABLE
     ＋GRANT＋ALTER_USER＋ALTER_TABLE＋ALTER_VIEW＋ALTER_SERVER
     ＋DROP_USER＋DROP_SCHEMA＋DROP_TABLE
     ＋DROP_VIEW＋DROP_INDEX＋DROP_SERVER＋DROP_FOREIGN_TABLE
     ＋REVOKE↑

CREATE_USER

次に示す計算式から求めてください。

計算式（単位：キロバイト）

CREATE_USER = 4×CREATE_USER_EXEC_NUM

CREATE_USER_EXEC_NUM

CREATE USER文を実行する回数を代入してください。

CREATE_SCHEMA

次に示す計算式から求めてください。

計算式（単位：キロバイト）

CREATE_SCHEMA = 4×CREATE_SCHEMA_EXEC_NUM

CREATE_SCHEMA_EXEC_NUM

CREATE SCHEMA文を実行する回数を代入してください。

CREATE_TABLE

次に示す計算式から求めてください。

計算式（単位：キロバイト）

CREATE_TABLE = 600×CREATE_TABLE_EXEC_NUM

CREATE_TABLE_EXEC_NUM

CREATE TABLE文を実行する回数を代入してください。

CREATE_VIEW

次に示す計算式から求めてください。

計算式（単位：キロバイト）

CREATE_VIEW = 810×CREATE_VIEW_EXEC_NUM

CREATE_VIEW_EXEC_NUM

CREATE VIEW文を実行する回数を代入してください。

CREATE_INDEX

次に示す計算式から求めてください。

計算式（単位：キロバイト）

CREATE_INDEX = 24×CREATE_INDEX_EXEC_NUM

CREATE_INDEX_EXEC_NUM

CREATE INDEX文を実行する回数を代入してください。

CREATE_AUDIT

次に示す計算式から求めてください。

計算式（単位：キロバイト）

CREATE_AUDIT = 472 × CREATE_AUDIT_EXEC_NUM

CREATE_AUDIT_EXEC_NUM

CREATE AUDIT文を実行する回数を代入してください。

CREATE_SERVER

次に示す計算式から求めてください。

計算式（単位：キロバイト）

CREATE_SERVER = 4×CREATE_SERVER_EXEC_NUM

CREATE_SERVER_EXEC_NUM

CREATE SERVER文を実行する回数を代入してください。

CREATE_FOREIGN_TABLE

次に示す計算式から求めてください。

計算式（単位：キロバイト）

CREATE_FOREIGN_TABLE = 152×CREATE_FOREIGN_TABLE_EXEC_NUM

CREATE_FOREIGN_TABLE_EXEC_NUM

CREATE FOREIGN TABLE文を実行する回数を代入してください。

GRANT

次に示す計算式から求めてください。

計算式（単位：キロバイト）

GRANT = 657×GRANT_EXEC_NUM

GRANT_EXEC_NUM

GRANT文を実行する回数を代入してください。

ALTER_USER

次に示す計算式から求めてください。

計算式（単位：キロバイト）

ALTER_USER = 4×ALTER_USER_EXEC_NUM

ALTER_USER_EXEC_NUM

ALTER USER文を実行する回数を代入してください。

ALTER_TABLE

次に示す計算式から求めてください。

計算式（単位：キロバイト）

ALTER_TABLE＝
   ADD_COLUMN＋RENAME_TABLE＋RENAME_COLUMN＋CHANGE_DATA_TYPE
   ＋CHANGE_CHUNK_MAX＋CHANGE_CHUNK_ARCHIVE＋CHANGE_CHUNK_UNARCHIVE
   ＋DROP_COLUMN

ADD_COLUMN

次に示す計算式から求めてください。

計算式（単位：キロバイト）

ADD_COLUMN = 36×ADD_COLUMN_EXEC_NUM

ADD_COLUMN_EXEC_NUM

ALTER TABLE文で，表に列を追加する回数を代入してください。

RENAME_TABLE

次に示す計算式から求めてください。

計算式（単位：キロバイト）

RENAME_TABLE = 756×RENAME_TABLE_EXEC_NUM

RENAME_TABLE_EXEC_NUM

ALTER TABLE文で，表名を変更する回数を代入してください。

RENAME_COLUMN

次に示す計算式から求めてください。

計算式（単位：キロバイト）

RENAME_COLUMN = 76×RENAME_COLUMN_EXEC_NUM

RENAME_COLUMN_EXEC_NUM

ALTER TABLE文で，表の列名を変更する回数を代入してください。

CHANGE_DATA_TYPE

次に示す計算式から求めてください。

計算式（単位：キロバイト）

CHANGE_DATA_TYPE＝40×CHANGE_DATA_TYPE_EXEC_NUM

CHANGE_DATA_TYPE_EXEC_NUM

ALTER TABLE文で，列のデータ型を変更する回数を代入してください。

CHANGE_CHUNK_MAX

次に示す計算式から求めてください。

計算式（単位：キロバイト）

CHANGE_CHUNK_MAX = 4×CHANGE_CHUNK_MAX_EXEC_NUM

CHANGE_CHUNK_MAX_EXEC_NUM

ALTER TABLE文で，マルチチャンク表のチャンク数の最大値を変更する回数を代入してください。

CHANGE_CHUNK_ARCHIVE

次に示す計算式から求めてください。

計算式（単位：キロバイト）

CHANGE_CHUNK_ARCHIVE = 84×CHANGE_CHUNK_ARCHIVE_EXEC_NUM

CHANGE_CHUNK_ARCHIVE_EXEC_NUM

ALTER TABLE文で，レギュラーマルチチャンク表からアーカイブマルチチャンク表に変更する回数を代入してください。

CHANGE_CHUNK_UNARCHIVE

次に示す計算式から求めてください。

計算式（単位：キロバイト）

CHANGE_CHUNK_UNARCHIVE = 48×CHANGE_CHUNK_UNARCHIVE_EXEC_NUM

CHANGE_CHUNK_UNARCHIVE_EXEC_NUM

ALTER TABLE文で，アーカイブマルチチャンク表からレギュラーマルチチャンク表に変更する回数を代入してください。

DROP_COLUMN

次に示す計算式から求めてください。

計算式（単位：キロバイト）

DROP_COLUMN ＝ 120×DROP_COLUMN_EXEC_NUM

DROP_COLUMN_EXEC_NUM

ALTER TABLE文で，表から列を削除する回数を代入してください。

ALTER_VIEW

次に示す計算式から求めてください。

計算式（単位：キロバイト）

ALTER_VIEW = 746×ALTER_VIEW_EXEC_NUM

ALTER_VIEW_EXEC_NUM

ALTER VIEW文を実行する回数を代入してください。

ALTER_SERVER

次に示す計算式から求めてください。

計算式（単位：キロバイト）

ALTER_SERVER = 4×ALTER_SERVER_EXEC_NUM

ALTER_SERVER_EXEC_NUM

ALTER SERVER文を実行する回数を代入してください。

DROP_USER

次に示す計算式から求めてください。

計算式（単位：キロバイト）

DROP_USER = 1,993×DROP_USER_EXEC_NUM

DROP_USER_EXEC_NUM

DROP USER文を実行する回数を代入してください。

DROP_SCHEMA

次に示す計算式から求めてください。

計算式（単位：キロバイト）

DROP_SCHEMA = 1,992×DROP_SCHEMA_EXEC_NUM

DROP_SCHEMA_EXEC_NUM

DROP SCHEMA文を実行する回数を代入してください。

DROP_TABLE

次に示す計算式から求めてください。

計算式（単位：キロバイト）

DROP_TABLE = 204×DROP_TABLE_EXEC_NUM

DROP_TABLE_EXEC_NUM

DROP TABLE文を実行する回数を代入してください。

DROP_VIEW

次に示す計算式から求めてください。

計算式（単位：キロバイト）

DROP_VIEW = 36×DROP_VIEW_EXEC_NUM

DROP_VIEW_EXEC_NUM

DROP VIEW文を実行する回数を代入してください。

DROP_INDEX

次に示す計算式から求めてください。

計算式（単位：キロバイト）

DROP_INDEX = 8×DROP_INDEX_EXEC_NUM

DROP_INDEX_EXEC_NUM

DROP INDEX文を実行する回数を代入してください。

DROP_SERVER

次に示す計算式から求めてください。

計算式（単位：キロバイト）

DROP_SERVER = 1,492×DROP_SERVER_EXEC_NUM

DROP_SERVER_EXEC_NUM

DROP SERVER文を実行する回数を代入してください。

DROP_FOREIGN_TABLE

次に示す計算式から求めてください。

計算式（単位：キロバイト）

DROP_FOREIGN_TABLE = 188×DROP_FOREIGN_TABLE_EXEC_NUM

DROP_FOREIGN_TABLE_EXEC_NUM

DROP FOREIGN TABLE文を実行する回数を代入してください。

REVOKE

次に示す計算式から求めてください。

計算式（単位：キロバイト）

REVOKE = 1,992×REVOKE_EXEC_NUM

REVOKE_EXEC_NUM

REVOKE文を実行する回数を代入してください。

なお，ディクショナリ用DBエリアを構成するディクショナリ用DBエリアファイル（ファイル名：ADBDIC）は，DBディレクトリ下のレギュラーファイル，またはDBディレクトリ下以外のブロックスペシャルファイルに1つだけ作成されます。

クラウドストレージ機能を使用する場合，ディクショナリ用DBエリアファイル（ファイル名：ADBDIC）は作成されません。AWS環境の場合は，S3バケット内のS3オブジェクトにディクショナリ用DBエリアのデータが格納されます。Azure環境の場合は，コンテナー内のBLOBにディクショナリ用DBエリアのデータが格納されます。

5.12　システム表用DBエリアの容量見積もり

システム表用DBエリアの容量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

STBLSIZE_SUM

各システム表の容量を合計した値

次に示す計算式から求めてください。

計算式（単位：キロバイト）

STBLTABLESSIZE

STATUS_TABLES表の容量

STBLCOLUMNSSIZE

STATUS_COLUMNS表の容量

STBLINDEXESSIZE

STATUS_INDEXES表の容量

STBLCHUNKSSIZE

STATUS_CHUNKS表の容量

STBLSYNONYMDICSIZE

STATUS_SYNONYM_DICTIONARIES表の容量

各システム表の容量は「5.12.1　システム表の容量見積もり」を参照して求めてください。

REORGSDAREASIZE

adbreorgsystemdataコマンドの実行用領域の容量

adbreorgsystemdataコマンドを実行する場合に加算してください。

次に示す計算式から求めてください。

計算式（単位：キロバイト）

次に示す各システム表の容量の中で，最も大きな値です。

STBLTABLESSIZE

STATUS_TABLES表の容量

STBLCOLUMNSSIZE

STATUS_COLUMNS表の容量

STBLINDEXESSIZE

STATUS_INDEXES表の容量

STBLCHUNKSSIZE

STATUS_CHUNKS表の容量

STBLSYNONYMDICSIZE

STATUS_SYNONYM_DICTIONARIES表の容量

各システム表の容量は「5.12.1　システム表の容量見積もり」を参照して求めてください。

なお，システム表用DBエリアを構成するシステム表用DBエリアファイル（ファイル名：ADBSTBL）は，DBディレクトリ下のレギュラーファイル，またはDBディレクトリ下以外のブロックスペシャルファイルに1つだけ作成されます。

クラウドストレージ機能を使用する場合，システム表用DBエリアファイル（ファイル名：ADBSTBL）は作成されません。AWS環境の場合は，S3バケット内のS3オブジェクトにシステム表用DBエリアのデータが格納されます。Azure環境の場合は，コンテナー内のBLOBにシステム表用DBエリアのデータが格納されます。

5.12.1　システム表の容量見積もり

ここでは，次に示すシステム表の容量を見積もる方法について説明します。

STATUS_TABLES表

「(1)　STATUS_TABLES表の容量見積もり」を参照して求めてください。

STATUS_COLUMNS表

「(2)　STATUS_COLUMNS表の容量見積もり」を参照して求めてください。

STATUS_INDEXES表

「(3)　STATUS_INDEXES表の容量見積もり」を参照して求めてください。

STATUS_CHUNKS表

「(4)　STATUS_CHUNKS表の容量見積もり」を参照して求めてください。

STATUS_SYNONYM_DICTIONARIES表

「(5)　STATUS_SYNONYM_DICTIONARIES表の容量見積もり」を参照して求めてください。

(1)　STATUS_TABLES表の容量見積もり

STATUS_TABLES表の容量（STBLTABLESSIZE）は，次に示す計算式から求めてください。

なお，adbgetcstコマンドを実行しない場合は0を代入してください。

計算式（単位：キロバイト）

変数の説明

COSTTBL_NUM

コスト情報を収集する表の数

GETCOST_NUM

1つの表にadbgetcstコマンドを実行する回数

adbreorgsystemdataコマンドを実行してから再実行するまでの間に，adbgetcstコマンドを実行する回数を見積もってください。

adbreorgsystemdataコマンドを実行する間隔については，「11.20.2　ディクショナリ表およびシステム表を再編成するタイミング」を参照してください。

次の条件で運用する場合を例に説明します。

■運用の条件

1日に1回，コスト情報を収集する

6か月に1回，システム表（実表）の再編成を行う

■条件を基にした変数GETCOST_NUMの求め方

上記の条件で運用する場合，変数GETCOST_NUMには，186を代入してください。

ALTERTBL_NUM

ALTER TABLE文を使用して，表名を変更する回数

(2)　STATUS_COLUMNS表の容量見積もり

STATUS_COLUMNS表の容量（STBLCOLUMNSSIZE）は，次に示す計算式から求めてください。

なお，adbgetcstコマンドを実行しない場合は0を代入してください。

計算式（単位：キロバイト）

変数の説明

COSTCOL_NUM

コスト情報を収集する表の列数を合計した値

例えば，コスト情報を収集する表Aの列数が10，表Bの列数が20の場合は，30となります。

GETCOST_NUM

「(1)　STATUS_TABLES表の容量見積もり」の変数GETCOST_NUMを参照してください。

ALTTBLCOL_NUM

ALTER TABLE文を使用して，表名を変更する表の列数を合計した値

例えば，表名を2回変更する表Cの列数が10，表名を1回変更する表Dの列数が20の場合は，次に示すとおり40となります。

10×2＋20＝40

ALTERCOL_NUM

ALTER TABLE文で列の名称を変更する回数

(3)　STATUS_INDEXES表の容量見積もり

STATUS_INDEXES表の容量（STBLINDEXESSIZE）は，次に示す計算式から求めてください。

なお，adbgetcstコマンドを実行しない場合は0を代入してください。

計算式（単位：キロバイト）

変数の説明

COSTIDX_NUM

コスト情報を収集する表に定義されたインデクス数を合計した値

例えば，コスト情報を収集する表Aに定義されたインデクス数が2，表Bに定義されたインデクス数が1の場合は，3となります。

GETCOST_NUM

「(1)　STATUS_TABLES表の容量見積もり」の変数GETCOST_NUMを参照してください。

ALTTBLIDX_NUM

ALTER TABLE文を使用して，表名を変更する表に定義されたインデクス数を合計した値

例えば，表名を2回変更する表Cに定義されたインデクス数が2，表名を1回変更する表Dに定義されたインデクス数が1の場合は，次に示すとおり5となります。

2×2＋1＝5

(4)　STATUS_CHUNKS表の容量見積もり

STATUS_CHUNKS表の容量（STBLCHUNKSSIZE）は，次に示す計算式から求めてください。

なお，マルチチャンク表を定義しない場合は0を代入してください。

計算式（単位：キロバイト）

変数の説明

CHUNK_COMMENT_SIZE

チャンクのコメントの平均データ長（単位：キロバイト）

STBLCHUNKS_ROWNUM

STATUS_CHUNKS表の行数

次に示す計算式から求めてください。

計算式

TOTAL_CHUNKNUM

運用中の各マルチチャンク表のチャンク数を合計した値

例えば，マルチチャンク表Aのチャンク数が700，マルチチャンク表Bのチャンク数が600の場合は，1,300となります。

STBLCHUNK_INVALID_ROWNUM

STATUS_CHUNKS表に発生する無効な行データの行数

adbreorgsystemdataコマンドを実行してから再実行するまでの間に，STATUS_CHUNKS表に発生する無効な行データの行数を見積もってください。計算式を次に示します。

計算式

reorg_period

adbreorgsystemdataコマンドを実行する間隔（単位：月）

例えば，6か月に1回，adbreorgsystemdataコマンドを実行する場合は，6を代入してください。

adbreorgsystemdataコマンドを実行する間隔については，「11.20.2　ディクショナリ表およびシステム表を再編成するタイミング」を参照してください。

backgroundimport_table_num

バックグラウンドインポートを行うマルチチャンク表の数（単位：個数）

例えば，毎日5つのマルチチャンク表にバックグラウンドインポートを行う場合は，5を代入してください。

INVALID_ROW_NUM

1つのマルチチャンク表に対して，1か月の間に発生する無効な行データの数

マルチチャンク表に対して想定されるSQL文とコマンドの実行回数を見積もってください。そして，次に示す表から，発生する無効な行データの行数を求めてください。

表5‒23　SQL文やコマンドとSTATUS_CHUNKS表に発生する無効な行データの行数の関係

項番

マルチチャンク表に対して実行するSQL文とコマンド

STATUS_CHUNKS表に発生する無効な行データの行数※1

1

定義系SQLの実行

マルチチャンク表を削除する場合が対象です。

各削除対象表のチャンク数の総和

2

PURGE CHUNK文の実行

削除したチャンク数

3

TRUNCATE TABLE文の実行

処理対象表のチャンク数

4

adbimportコマンドの実行

作成モードで実行する場合が対象です。

処理対象表のチャンク数

5

adbimportコマンドの実行

バックグラウンドインポートで実行する場合が対象です。

1

6

adbidxrebuildコマンドの実行

adbimportコマンドによるバックグラウンドインポートが中断した場合が対象です。

1

7

adbmergechunkコマンドの実行

マージ対象のチャンク数×2※2

8

adbchgchunkcommentコマンドの実行

1

9

adbchgchunkstatusコマンドの実行

状態を変更するチャンク数

10

adbarchivechunkコマンドの実行

アーカイブするチャンク数

11

adbunarchivechunkコマンドの実行

アーカイブ状態を解除するチャンク数

注※1

左記の列「マルチチャンク表に対して実行するSQL文とコマンド」を1回実行した場合に，発生する無効な行データの行数です。複数回実行する場合は，その分だけ加算する必要があります。

注※2

次の理由でマージ元チャンクを削除できなかった場合は，無効な行データは発生しません。

・実行中のadbmergechunkコマンドが，マージ先チャンクの完成からマージ元チャンクの削除完了までの間に中断した場合

・adbmergechunkコマンドの--purge-chunkオプションにNOWAITを指定して実行した場合に，マージチャンク対象の表を参照している処理が存在したとき

変数STBLCHUNK_INVALID_ROWNUMの計算例

変数STBLCHUNK_INVALID_ROWNUMの求め方について，次に示す条件で運用する場合を例に説明します。

■運用の条件

6か月に1回，システム表（実表）の再編成を行う

10個のマルチチャンク表に対して，バックグラウンドインポートを行う

5分に1回（1日で288回），バックグラウンドインポートを行う

バックグラウンドインポートで作成された288個のチャンクを，1日分のチャンクとしてマージする

1日分のチャンク31個を，1か月分のチャンクとして，月末にマージする（1か月は31日と仮定する）

2年以上経過した1か月分のチャンク1個を，月末に削除する

■条件を基にした変数STBLCHUNK_INVALID_ROWNUMの求め方

変数reorg_periodは，adbreorgsystemdataコマンドを実行する間隔であるため，6を代入してください。

変数backgroundimport_table_numは，バックグラウンドインポートを行うマルチチャンク表の数であるため，10を代入してください。

変数INVALID_ROW_NUMは，1つのマルチチャンク表に対して，1か月の間に発生する無効な行データの数であるため，次の計算式から求めます。

変数INVALID_ROW_NUMの計算式

変数INVALID_ROW_NUMには，26,847を代入してください。

各変数の値を代入して，変数STBLCHUNK_INVALID_ROWNUMを求めてください。6か月の間にSTATUS_CHUNKS表に発生する無効な行データの数は，1,610,820であると見積もることができます。

ALTTBLCNK_NUM

ALTER TABLE文を使用して，表名を変更するマルチチャンク表のチャンク数を合計した値

例えば，表名を2回変更するマルチチャンク表Cのチャンク数が700，表名を1回変更するマルチチャンク表Dのチャンク数が600の場合は，次に示すとおり2,000となります。

700×2＋600＝2,000

マルチチャンク表のチャンク数については，「付録C.9　システム表の検索」の「(3)　表名から表内の全チャンクの情報を調べる場合」を参照してください。SQL文の検索結果の行数が，マルチチャンク表のチャンク数になります。

(5)　STATUS_SYNONYM_DICTIONARIES表の容量見積もり

STATUS_SYNONYM_DICTIONARIES表の容量（STBLSYNONYMDICSIZE）は，次に示す計算式から求めてください。

なお，同義語辞書を1つも作成しない場合は0を代入してください。

計算式（単位：キロバイト）

変数の説明

BINARY_PATH_SIZE

同義語辞書ファイルの格納ディレクトリのパス名のデータ長（単位：キロバイト）

SYNONYMDIC_COMMENT_SIZE

同義語辞書のコメントの平均データ長（単位：キロバイト）

SYNONYMDIC_NUM

作成する同義語辞書の数

SYNONYMDIC_INVALID_ROWNUM

STATUS_SYNONYM_DICTIONARIES表に発生する無効な行データの行数

adbreorgsystemdataコマンドを実行してから再実行するまでの間に，STATUS_SYNONYM_DICTIONARIES表に発生する無効な行データの行数を見積もってください。adbreorgsystemdataコマンドを実行する間隔については，「11.20.2　ディクショナリ表およびシステム表を再編成するタイミング」を参照してください。

次に示す表から，STATUS_SYNONYM_DICTIONARIES表に発生する無効な行データの行数を求めてください。その際，対象のコマンドを実行する回数も見積もってください。

表5‒24　コマンドとSTATUS_SYNONYM_DICTIONARIES表に発生する無効な行データの行数の関係

項番

実行するコマンド

STATUS_SYNONYM_DICTIONARIES表に発生する無効な行データの行数※

1

adbsyndictコマンドの実行

同義語辞書を更新する場合が対象です。

更新した同義語辞書の数

2

adbsyndictコマンドの実行

同義語辞書を削除する場合が対象です。

削除した同義語辞書の数

注※

左記の列「実行するコマンド」を1回実行した場合に，発生する無効な行データの行数です。複数回実行する場合は，その分だけ加算する必要があります。

6　リソースの設計

この章では，ディスクの設計，および各リソースの見積もりについて説明します。

6.1　ディスクの設計

ここでは，ディスクの設計時に考慮する点について説明します。

メモ

AWS環境でクラウドストレージ機能を使用する場合は，次のDBエリアのデータはS3バケット内のS3オブジェクトに格納されます。また，Azure環境でクラウドストレージ機能を使用する場合は，次のDBエリアのデータはコンテナー内のBLOBに格納されます。そのため，ここで説明されている次のDBエリアについての考慮点は該当しません。

データ用DBエリア

マスタディレクトリ用DBエリア

ディクショナリ用DBエリア

システム表用DBエリア

6.1.1　ディスク設計時の考慮点

HADBの処理性能を向上させるには，I/Oが分散するようにディスク設計することが重要なポイントになります。例えば，データを1つのディスクに格納した場合，そのディスクに対してI/Oが集中します。ディスクの処理性能を超える数のI/Oが発生すると，I/O待ちによって処理性能が低下します。そのため，データを複数のディスクに分散させて，1つのディスクに対するI/Oを減らすように設計します。

特に，大規模なデータを扱う場合，次の表に示すファイルを格納するディスクを分けるとI/Oの分散に効果があります。

表6‒1　格納先のディスクを分散すると性能上の効果があるファイル

項番

ファイルまたはディレクトリの種類

ファイルの詳細

1

DBエリアファイル

マスタディレクトリ用DBエリアファイル

ディクショナリ用DBエリアファイル

システム表用DBエリアファイル

作業表用DBエリアファイル

データ用DBエリアファイル

2

HADBサーバが使用するディレクトリおよびファイル

サーバディレクトリとサーバディレクトリ下のファイル

DBディレクトリとDBディレクトリ下のファイル

3

作業用一時ファイル

次に示すコマンドの実行時に作成される作業用一時ファイル

adbimportコマンド

adbidxrebuildコマンド

adbmergechunkコマンド

adbunarchivechunkコマンド

adbreorgsystemdataコマンド

4

入力データファイル

adbimportコマンドの実行時に使用する入力データファイル

ADB_CSVREAD関数の実行時に使用する入力データファイル（CSVファイル）

5

出力データファイル

adbexportコマンドの実行時に使用する出力データファイル

6

アーカイブディレクトリ

アーカイブファイル

7

同義語辞書ファイルの格納ディレクトリ

同義語辞書ファイル

8

アンロードファイル

adbreorgsystemdataコマンドの実行時に作成されるアンロードファイル

上記の表で説明しているファイルの格納先ディスクを分散する場合，通常はRAID構成にします。RAIDグループ（RAID構成のディスク群）が複数ある場合は，次のどちらかの構成にすると，よりI/Oを分散させることができます。

ストレージの機能によるディスクの仮想化でデータを分散配置する

OSの機能であるLVMを使用してストライピング構成にする

■例1

ストレージの機能によるディスクの仮想化でデータを分散配置する例を次の図に示します。

図6‒1　ストレージの機能によるディスクの仮想化でデータを分散配置する例

上記の例では，DBエリアファイル用の4つのRAIDグループを，まとめて1つのストレージプール（仮想ディスク）としています。このとき，4つのRAIDグループに分散してデータを記憶する方式（ストライピング）を使用しています。

仮想ディスクで幾つかのロジカルユニットを作成し，DBエリアファイルを構成するブロックスペシャルファイルとして割り当てます。これによって，DBエリアファイル中のデータにアクセスするときは，4つのRAIDグループに対してほぼ均等にI/Oが発生します。そのため，RAIDグループが1つのときに比べてより多くのI/Oを発行できます。

また，上記の例では，DBエリアファイル用のストレージプールと，そのほかのストレージプールを分けていますが，使用できるRAIDグループが少ない場合は，ストレージプールを1つにしてDBエリアファイルのI/O分散を優先するようにしてください。

ストレージの設定方法については，ストレージ製品のマニュアルを参照してください。

■例2

OSの機能であるLVMを使用してストライピング構成にする例を次の図に示します。

図6‒2　OSの機能であるLVMを使用してストライピング構成にする例

上記の例では，DBエリアファイル用の4つのRAIDグループをボリュームグループに登録しています。また，ボリュームグループからロジカルボリュームをストライピング指定で作成しています。これによって，DBエリアファイル中のデータにアクセスするときは，4つのRAIDグループに対してほぼ均等にI/Oが発生します。そのため，RAIDグループが1つのときに比べてより多くのI/Oを発行できます。

また，上記の例では，DBエリアファイル用のボリュームグループと，そのほかのボリュームグループを分けていますが，使用できるRAIDグループが少ない場合は，ボリュームグループを1つにしてDBエリアファイルのI/O分散を優先するようにしてください。

LVMの設定方法については，各OSのマニュアルを参照してください。

6.1.2　LVM設定時の考慮点

ここでは，LVMを設定する際の考慮点について説明します。LVMの設定方法については，OSのマニュアルを参照してください。

「8.2.1　HADBサーバのインストール前に実施する作業」でOSに設定するHADB管理者が，ロジカルボリューム（LV）にアクセスできるように，アクセス権限を与えてください。

なお，LVMで作成したロジカルボリュームの場合，OSを再起動するたびにアクセス権限情報が初期化されることがあります。そのため，OSを再起動した場合は，アクセス権限が初期化されていないかどうかを確認してください。

処理性能を向上させるためには，ストライピングに使用するディスク数をできるだけ増やしてください。ディスク数が多いほど，データの格納先が分散されて，1つのディスクに対するI/Oを減らすことができ，その分処理性能が向上します。

1つのDBエリアを複数のロジカルボリューム（DBエリアファイル）で構成すると，ロジカルボリュームへのアクセスが分散されるため，処理性能がより向上します。1つのDBエリアを構成するロジカルボリュームの個数の目安は，HADBサーバをインストールしたマシンのCPUのコア数の20%〜40%となります。例えば，マシンのCPUのコア数が40個である場合，1つのDBエリアは8個〜16個のロジカルボリュームで構成してください。

LVMで設定するストライプサイズは，4,096キロバイトを設定することを推奨します。ほかの値を設定する場合は，DBエリアのページサイズ以上，16,384キロバイト以下で，かつDBエリアのページサイズの整数倍となるような値を設定してください。

ストレージの機能によってデータの格納先が十分に分散されている場合は，I/Oを分散させる目的のために，LVMを使用してストライピング構成にする必要はありません。

複数のRAIDグループに分散してデータを記憶させるストライピングが，ストレージの機能でできない場合は，LVMでストライピングを設定してください。例えば，ディスクが60台ある場合に，1つのRAIDグループを構成するディスク数の上限が15台のときは，4つのRAIDグループを作成し，各RAIDグループに対してストライピングを設定してください。

アクセスの競合による処理性能の低下を防ぐため，1つのロジカルボリューム（DBエリアファイル）のサイズは，16テラバイト以下に設定することを推奨します。

マルチノード機能またはコールドスタンバイ構成を使用する際に，共有ディスクのSCSIリザーブを使用する場合は，SCSIリザーブの指定はストレージのディスク（RAIDグループ）単位にしてください。SCSIリザーブの対象となる領域と，それ以外の領域は必ずディスクを分けてください。SCSIリザーブの対象とする領域については，次の個所を参照してください。

マルチノード機能の場合：「18.2.4　ストレージ構成」

コールドスタンバイ構成の場合：「19.2.4　ストレージ構成」

6.1.3　電源断に対する考慮点

電源断に対応するための考慮点を次に示します。

ファイルシステムは，ext4またはXFSを使用してください。

ディスクのキャッシュは，ライトスルー（Write Through）に設定するなどして，電源断時にディスクのキャッシュが失われないようにしてください。

6.2　カーネルパラメタの見積もり

ここでは，カーネルパラメタ（Linuxのオペレーティングシステムパラメタ）の見積もりについて説明します。

HADBサーバを動作させるためには，カーネルパラメタを適切に設定する必要があります。カーネルパラメタの値が小さいと，HADBが正常に動作しないおそれがあります。カーネルパラメタの指定値の目安，カーネルパラメタを設定するファイル，および対象のパラメタ名を次の表に示します。

表6‒2　カーネルパラメタの指定値の目安および設定先

項番

カーネルパラメタ

指定値の目安

設定ファイルとパラメタ名

1

shmmax

共有メモリセグメントの大きさの上限をバイト単位で指定します。「6.3.1　共有メモリの所要量の求め方」で求めた最大値以上の値を指定してください。

設定ファイル

/etc/sysctl.conf

パラメタ名

kernel.shmmax

2

shmmni

システム全体の共有メモリセグメント数の上限を指定します。2,000以上を指定してください。

設定ファイル

/etc/sysctl.conf

パラメタ名

kernel.shmmni

3

shmall

システム全体の共有メモリページ数の上限を指定します。次に示す計算式から求められる値が，SHMMAXに指定した値以上になるように，SHMALLの値を指定してください。

計算式

共有メモリのページサイズ×SHMALL

設定ファイル

/etc/sysctl.conf

パラメタ名

kernel.shmall

4

threads-max

HADBが使用するリアルスレッド数の上限を指定します。

次の条件をすべて満たす値を推奨します。

「図6‒3　カーネルパラメタthreads-maxの求め方」に示す計算式から求められる値以上の値

「図6‒3　カーネルパラメタthreads-maxの求め方」はこの表の後ろに記載しています。

ほかの業務で使用するプロセス数も考慮した余裕のある値

なお，見積もりの時点でこのカーネルパラメタに指定されている値（OSのデフォルト値）が，上記の条件をすべて満たす場合には，指定値の変更は不要です。

設定ファイル

/etc/sysctl.conf

パラメタ名

kernel.threads-max

5

core_pattern

コアファイルのパターン名を指定します。

このカーネルパラメタは通常指定する必要はありません。コアファイルの出力がsystemd-coredumpによって制御されている場合に，コアファイルの出力制御を従来の伝統的なLinuxの動作に戻したいときは，このカーネルパラメタにcoreを指定します。

設定ファイル

/etc/sysctl.conf

パラメタ名

kernel.core_pattern

6

aio-max-nr

「図6‒4　カーネルパラメタaio-max-nrの求め方」に示す計算式から求められる値以上の値を指定します。「図6‒4　カーネルパラメタaio-max-nrの求め方」はこの表の後ろに記載しています。

設定ファイル

/etc/sysctl.conf

パラメタ名

fs.aio-max-nr

7

rmem_default

受信用ウィンドウサイズのデフォルト値を指定します。33,554,432以上を指定してください。

設定ファイル

/etc/sysctl.conf

パラメタ名

net.core.rmem_default

8

rmem_max

受信用ウィンドウサイズの上限を指定します。33,554,432以上を指定してください。

設定ファイル

/etc/sysctl.conf

パラメタ名

net.core.rmem_max

9

wmem_default

送信用ウィンドウサイズのデフォルト値を指定します。33,554,432以上を指定してください。

設定ファイル

/etc/sysctl.conf

パラメタ名

net.core.wmem_default

10

wmem_max

送信用ウィンドウサイズの上限を指定します。33,554,432以上を指定してください。

設定ファイル

/etc/sysctl.conf

パラメタ名

net.core.wmem_max

11

nr_hugepages

共有メモリにHugePagesを適用する場合，HugePagesの確保ページ数を指定します。次に示す計算式から求められる値以上の値を指定してください。

HADBサーバが使用する共有メモリの所要量については「6.3.1　共有メモリの所要量の求め方」を参照してください。

HugePagesの1ページ当たりのページサイズは次に示すコマンドで確認できます。数値の単位に注意してください。

実行するコマンド

grep Hugepagesize /proc/meminfo

実行結果の例

Hugepagesize: 2048 kB

なお，HugePagesは，サーバマシンのOS起動時に，このカーネルパラメタに指定したページ数分のメモリを確保します。HADBサーバをインストールしたサーバマシンに搭載されたメモリサイズ以上となるページ数をこのカーネルパラメタに指定すると，OSが起動できません。

そのため，このカーネルパラメタには，必ずHADBサーバをインストールしたサーバマシンに搭載されたメモリサイズ以下となるページ数を指定してください。

設定ファイル

/etc/sysctl.conf

パラメタ名

vm.nr_hugepages

12

hugetlb_shm_group

スーパユーザではないユーザで共有メモリにHugePagesを適用してHADBサーバを開始する場合，そのユーザのグループIDをLinuxカーネルケーパビリティのhugetlb_shm_groupに追加する必要があります。ユーザのグループIDはOSのidコマンドで取得してください。

設定ファイル

/etc/sysctl.conf

パラメタ名

vm.hugetlb_shm_group

13

nofile

「図6‒5　カーネルパラメタnofileの求め方」に示す計算式から求められる値以上の値を指定します。「図6‒5　カーネルパラメタnofileの求め方」はこの表の後ろに記載しています。

設定ファイル※

/etc/security/limits.conf

パラメタ名

soft nofile

hard nofile

14

file-max

このカーネルパラメタには，nofileに指定した値以上の値を指定してください。

設定ファイル

/etc/sysctl.conf

パラメタ名

fs.file-max

15

memlock

共有メモリのメモリロックの上限値を設定します。

HADBサーバをインストールしたサーバマシンに搭載されたメモリサイズを指定してください。

設定ファイル※

/etc/security/limits.conf

パラメタ名

soft memlock

hard memlock

16

nproc

HADBが使用するリアルスレッド数の上限を指定します。

次の条件をすべて満たす値を推奨します。

「図6‒6　カーネルパラメタnprocの求め方」に示す計算式から求められる値以上の値

「図6‒6　カーネルパラメタnprocの求め方」はこの表の後ろに記載しています。

ほかの業務で使用するプロセス数も考慮した余裕のある値

なお，見積もりの時点でこのカーネルパラメタに指定されている値（OSのデフォルト値）が，上記の条件をすべて満たす場合には，指定値の変更は不要です。

設定ファイル※

/etc/security/limits.conf

パラメタ名

soft nproc

hard nproc

17

/sys/block/デバイス名/queue/nr_requests

カーネル側のI/Oキューの深さを設定します。

2,048を指定することを推奨します。

上記の値を設定できない場合は，設定可能な最大値を指定してください。

また，コマンド側のキューの深さqueue_depthも変更してください。queue_depthパラメタの設定方法については，OSやHBAなどのドキュメントを参照してください。

設定ファイル

/sys/block/デバイス名/queue/nr_requests

18

/sys/block/デバイス名/queue/scheduler

デバイスごとのI/Oスケジューラを設定します。

デバイスがハードディスクの場合は，mq-deadlineを指定することを推奨します。デバイスがフラッシュドライブの場合は，kyberを指定することを推奨します。

設定ファイル

/sys/block/デバイス名/queue/scheduler

19

/sys/block/デバイス名/queue/rq_affinity

フラッシュドライブの場合は2を指定してください。

設定ファイル

/sys/block/デバイス名/queue/rq_affinity

20

/sys/block/デバイス名/queue/add_random

フラッシュドライブの場合は0を指定してください。

設定ファイル

/sys/block/デバイス名/queue/add_random

21

/sys/block/デバイス名/queue/rotational

フラッシュドライブの場合は0を指定してください。

設定ファイル

/sys/block/デバイス名/queue/rotational

注※

HADBサーバをJP1/AJS3から自動起動するように設定する場合，カーネルパラメタを/etc/security/limits.confに設定しても有効となりません。そのため，次のどちらかの方法でカーネルパラメタを設定してください。

ジョブ実行環境の環境設定パラメーターに，カーネルパラメタを設定する。

JP1/AJS3の自動起動スクリプトに，カーネルパラメタを設定する。

詳細については，マニュアルJP1/AJS3　設計ガイド（業務設計編）のUNIXジョブ使用時の注意事項にあるJP1/AJS3サービスを自動起動している場合の注意を参照してください。

「表6‒2　カーネルパラメタの指定値の目安および設定先」のカーネルパラメタthreads-maxの指定値は，次の計算式から求めてください。

図6‒3　カーネルパラメタthreads-maxの求め方

「表6‒2　カーネルパラメタの指定値の目安および設定先」のカーネルパラメタaio-max-nrの指定値は，次の計算式から求めてください。

図6‒4　カーネルパラメタaio-max-nrの求め方

「表6‒2　カーネルパラメタの指定値の目安および設定先」のカーネルパラメタnofileの指定値は，次の計算式から求めてください。

図6‒5　カーネルパラメタnofileの求め方

「表6‒2　カーネルパラメタの指定値の目安および設定先」のカーネルパラメタnprocの指定値は，次の計算式から求めてください。

図6‒6　カーネルパラメタnprocの求め方

6.3　HADBサーバのメモリ所要量の見積もり

ここでは，HADBサーバが使用するメモリ所要量を見積もる方法について説明します。

HADBサーバが使用するメモリの最大サイズは，次に示す計算式で求められます。次に示す計算式で求めた値以上の値を，サーバ定義adb_sys_memory_limitオペランドに指定してください。詳細については，「7.2.2　性能に関するオペランド（set形式）」のadb_sys_memory_limitオペランドを参照してください。

計算式（単位：キロバイト）

HADBサーバが使用するメモリの最大サイズ※1＝
　共有メモリ管理
 ＋グローバルバッファページ
 ＋プロセス共通メモリ
 ＋リアルスレッド固有メモリ※2×（サーバ定義adb_sys_max_usersオペランドの指定値＋10※3）
 ＋（リアルスレッド固有メモリ※2×（2×マルチノード機能で使用するノード数＋3））※4
 ＋MAX（900,000 , リアルスレッド固有メモリ※2）
                ×サーバ定義adb_sys_rthd_numオペランドの指定値
 ＋リアルスレッド固有メモリ※5
 ＋ヒープメモリ

注※1

クラウドストレージ機能を使用する場合，上記のHADBサーバが使用するメモリの最大サイズとは別に，「6.3.24　クラウドストレージ機能使用時のメモリ所要量の求め方」で算出されるサイズのメモリが必要です。そのため，クラウドストレージ機能を使用する際には，それぞれで算出される値の合計値以上のメモリを確保することが可能なインスタンスタイプまたは仮想マシンのサイズを選ぶ必要があります。

外部表を使用する場合，またはCOPY文を実行する場合，上記のHADBサーバが使用するメモリの最大サイズとは別に，「6.3.25　外部データアクセス用ライブラリ使用時のメモリ所要量の求め方」で算出されるサイズのメモリが必要です。そのため，外部表を使用する場合，またはCOPY文を実行する場合は，それぞれで算出される値の合計値以上のメモリを確保する必要があります。

注※2

「6.3.1　共有メモリの所要量の求め方」の「(4)　リアルスレッド固有メモリの所要量の求め方」の次に示す変数を除いた変数が該当します。

RTHD_IMPORTSZ

RTHD_IDXRBLDSZ

RTHD_GETCOSTSZ

RTHD_DBSTATUSSZ

RTHD_EXPORTSZ

RTHD_MERCHKSZ

RTHD_CHGCSTSZ

RTHD_ARCCKSZ

RTHD_UNARCCKSZ

RTHD_REORGSZ

RTHD_CLTDEFMNG

RTHD_SYNDICTSZ

RTHD_AUDTRAILSZ

RTHD_CONVERTAUDSZ

RTHD_UPDDMKSZ

注※3

クラウドストレージ機能を使用する場合は11を加算してください。

注※4

マルチノード機能を使用する場合に加算してください。

注※5

「6.3.1　共有メモリの所要量の求め方」の「(4)　リアルスレッド固有メモリの所要量の求め方」の次に示す変数が該当します。

RTHD_IMPORTSZ

RTHD_IDXRBLDSZ

RTHD_GETCOSTSZ

RTHD_DBSTATUSSZ

RTHD_EXPORTSZ

RTHD_MERCHKSZ

RTHD_CHGCSTSZ

RTHD_ARCCKSZ

RTHD_UNARCCKSZ

RTHD_REORGSZ

RTHD_CLTDEFMNG

RTHD_SYNDICTSZ

RTHD_AUDTRAILSZ

RTHD_CONVERTAUDSZ

RTHD_UPDDMKSZ

HADBサーバが使用するメモリは，共有メモリおよびプロセスメモリです。

■共有メモリの種類

共有メモリを求める場合，次に示す4種類に分けて計算する必要があります。

共有メモリ管理

グローバルバッファページ

プロセス共通メモリ

リアルスレッド固有メモリ

■プロセスメモリの種類

ヒープメモリ

HADBサーバが各メモリを使用するときを次に示します。

HADBサーバ開始時

通常運用時（HADBクライアントがHADBサーバに接続するとき，およびSQL文を実行するとき）

adbinitコマンド実行時

adbimportコマンド実行時

adbidxrebuildコマンド実行時

adbgetcstコマンド実行時

adbdbstatusコマンド実行時

adbexportコマンド実行時

adbstatコマンド実行時

adbmodareaコマンド実行時

adbmergechunkコマンド実行時

adbchgchunkcommentコマンド実行時

adbchgchunkstatusコマンド実行時

adbarchivechunkコマンド実行時

adbunarchivechunkコマンド実行時

adbreorgsystemdataコマンド実行時

adbclientdefmangコマンド実行時

adbsyndictコマンド実行時

adbconvertaudittrailfileコマンド実行時

adbupddmkコマンド実行時

メモ

サーバ定義adb_sys_memory_limitオペランドを指定しない場合は，プロセス共通メモリの最大サイズを，サーバ定義adb_sys_proc_area_maxオペランドに指定してください。また，1リアルスレッド当たりのリアルスレッド固有メモリの最大サイズを，サーバ定義adb_sys_rthd_area_maxオペランドに指定してください。

6.3.1　共有メモリの所要量の求め方

ここでは，HADBサーバが使用する共有メモリの所要量の求め方について説明します。

HADBサーバが使用する共有メモリの所要量は次に示す計算式から求めてください。

計算式

共有メモリ＝
     共有メモリ管理＋グローバルバッファページ＋プロセス共通メモリ
     ＋リアルスレッド固有メモリ※1
     ×（サーバ定義adb_sys_max_usersオペランドの指定値
       ＋サーバ定義adb_sys_rthd_numオペランドの指定値＋10）
       ＋リアルスレッド固有メモリ※2

注※1

「(4)　リアルスレッド固有メモリの所要量の求め方」の次に示す変数を除いた変数が該当します。

RTHD_IMPORTSZ

RTHD_IDXRBLDSZ

RTHD_GETCOSTSZ

RTHD_DBSTATUSSZ

RTHD_EXPORTSZ

RTHD_MERCHKSZ

RTHD_CHGCSTSZ

RTHD_ARCCKSZ

RTHD_UNARCCKSZ

RTHD_REORGSZ

RTHD_CLTDEFMNG

RTHD_SYNDICTSZ

RTHD_AUDTRAILSZ

RTHD_CONVERTAUDSZ

RTHD_UPDDMKSZ

注※2

「(4)　リアルスレッド固有メモリの所要量の求め方」の次に示す変数が該当します。

RTHD_IMPORTSZ

RTHD_IDXRBLDSZ

RTHD_GETCOSTSZ

RTHD_DBSTATUSSZ

RTHD_EXPORTSZ

RTHD_MERCHKSZ

RTHD_CHGCSTSZ

RTHD_ARCCKSZ

RTHD_UNARCCKSZ

RTHD_REORGSZ

RTHD_CLTDEFMNG

RTHD_SYNDICTSZ

RTHD_AUDTRAILSZ

RTHD_CONVERTAUDSZ

RTHD_UPDDMKSZ

共有メモリ管理，グローバルバッファページ，プロセス共通メモリ，およびリアルスレッド固有メモリの所要量の求め方を次に示します。

(1)　共有メモリ管理の所要量の求め方

共有メモリ管理は，次に示すときに使用されます。そのため，それぞれで使用される共有メモリ管理の所要量を求めてください。

HADBサーバ開始時

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(1)　共有メモリ管理の所要量の求め方（HADBサーバ開始時）」を参照してください。

adbinitコマンド実行時

「6.3.5　adbinitコマンド実行時のメモリ所要量の求め方」の「(1)　共有メモリ管理の所要量の求め方（adbinitコマンド実行時）」を参照してください。

(2)　グローバルバッファページの所要量の求め方

グローバルバッファページは，HADBサーバ開始時に使用されます。グローバルバッファページの所要量を求める場合，「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」を参照してください。

(3)　プロセス共通メモリの所要量の求め方

プロセス共通メモリの所要量は次に示す計算式から求めてください。

計算式（単位：メガバイト）

注※

変数PROC_STARTSZの値から，変数PROC_STAINFの値を除いた値を加算してください。

変数の説明

PROC_STARTSZ

HADBサーバ開始時に使用するプロセス共通メモリ

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」を参照して求めてください。

PROC_EXECSZ

通常運用時に使用するプロセス共通メモリ

「6.3.4　通常運用時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（通常運用時）」を参照して求めてください。

PROC_STAINF

統計情報の制御情報を格納するプロセス共通メモリ

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(s)　変数PROC_STAINFの求め方」を参照して求めてください。

(4)　リアルスレッド固有メモリの所要量の求め方

リアルスレッド固有メモリの所要量は次に示す計算式から求めてください。

計算式（単位：メガバイト）

リアルスレッド固有メモリ＝↑｛RTHD_STARTSZ
                            ＋MAX ( RTHD_EXECSZ，RTHD_IMPORTSZ，RTHD_IDXRBLDSZ，
                                    RTHD_GETCOSTSZ，RTHD_DBSTATUSSZ，RTHD_EXPORTSZ，
                                    RTHD_MERCHKSZ，RTHD_CHGCSTSZ，RTHD_ARCCKSZ，
                                    RTHD_UNARCCKSZ，RTHD_REORGSZ，RTHD_CLTDEFMNG，
                                    RTHD_SYNDICTSZ，RTHD_AUDTRAILSZ，RTHD_CONVERTAUDSZ，
                                    RTHD_UPDDMKSZ )
                           ｝÷1,024 ↑×1.01

変数の説明

RTHD_STARTSZ

HADBサーバ開始時に使用するリアルスレッド固有メモリ

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(4)　リアルスレッド固有メモリの所要量の求め方（HADBサーバ開始時）」を参照して求めてください。

RTHD_EXECSZ

通常運用時に使用するリアルスレッド固有メモリ

「6.3.4　通常運用時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（通常運用時）」を参照して求めてください。

RTHD_IMPORTSZ

adbimportコマンド実行時に使用するリアルスレッド固有メモリ

「6.3.6　adbimportコマンド実行時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（adbimportコマンド実行時）」を参照して求めてください。

RTHD_IDXRBLDSZ

adbidxrebuildコマンド実行時に使用するリアルスレッド固有メモリ

「6.3.7　adbidxrebuildコマンド実行時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（adbidxrebuildコマンド実行時）」を参照して求めてください。

RTHD_GETCOSTSZ

adbgetcstコマンド実行時に使用するリアルスレッド固有メモリ

「6.3.8　adbgetcstコマンド実行時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（adbgetcstコマンド実行時）」を参照して求めてください。

RTHD_DBSTATUSSZ

adbdbstatusコマンド実行時に使用するリアルスレッド固有メモリ

「6.3.9　adbdbstatusコマンド実行時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（adbdbstatusコマンド実行時）」を参照して求めてください。

RTHD_EXPORTSZ

adbexportコマンド実行時に使用するリアルスレッド固有メモリ

「6.3.10　adbexportコマンド実行時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（adbexportコマンド実行時）」を参照して求めてください。

RTHD_MERCHKSZ

adbmergechunkコマンド実行時に使用するリアルスレッド固有メモリ

「6.3.13　adbmergechunkコマンド実行時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（adbmergechunkコマンド実行時）」を参照して求めてください。

RTHD_CHGCSTSZ

adbchgchunkstatusコマンド実行時に使用するリアルスレッド固有メモリ

「6.3.15　adbchgchunkstatusコマンド実行時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（adbchgchunkstatusコマンド実行時）」を参照して求めてください。

RTHD_ARCCKSZ

adbarchivechunkコマンド実行時に使用するリアルスレッド固有メモリ

「6.3.16　adbarchivechunkコマンド実行時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（adbarchivechunkコマンド実行時）」を参照して求めてください。

RTHD_UNARCCKSZ

adbunarchivechunkコマンド実行時に使用するリアルスレッド固有メモリ

「6.3.17　adbunarchivechunkコマンド実行時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（adbunarchivechunkコマンド実行時）」を参照して求めてください。

RTHD_REORGSZ

adbreorgsystemdataコマンド実行時に使用するリアルスレッド固有メモリ

「6.3.18　adbreorgsystemdataコマンド実行時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（adbreorgsystemdataコマンド実行時）」を参照して求めてください。

RTHD_CLTDEFMNG

adbclientdefmangコマンド実行時に使用するリアルスレッド固有メモリ

「6.3.19　adbclientdefmangコマンド実行時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（adbclientdefmangコマンド実行時）」を参照して求めてください。

RTHD_SYNDICTSZ

adbsyndictコマンド実行時に使用するリアルスレッド固有メモリ

「6.3.20　adbsyndictコマンド実行時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（adbsyndictコマンド実行時）」を参照して求めてください。

RTHD_AUDTRAILSZ

adbaudittrailコマンド実行時に使用するリアルスレッド固有メモリ

「6.3.21　adbaudittrailコマンド実行時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（adbaudittrailコマンド実行時）」を参照して求めてください。

RTHD_CONVERTAUDSZ

adbconvertaudittrailfileコマンド実行時に使用するリアルスレッド固有メモリ

「6.3.22　adbconvertaudittrailfileコマンド実行時のメモリ所要量の求め方」を参照して求めてください。

RTHD_UPDDMKSZ

「6.3.23　adbupddmkコマンド実行時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（adbupddmkコマンド実行時）」を参照して求めてください。

6.3.2　プロセスメモリの所要量の求め方

プロセスメモリ（ヒープメモリ）の所要量は次に示す計算式から求めてください。

計算式（単位：メガバイト）

変数の説明

HEAP_STARTSZ

HADBサーバ開始時に使用するプロセスメモリ（ヒープメモリ）

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(5)　ヒープメモリの所要量の求め方（HADBサーバ開始時）」を参照して求めてください。

HEAP_EXECSZ

通常運用時に使用するプロセスメモリ（ヒープメモリ）

「6.3.4　通常運用時のメモリ所要量の求め方」の「(3)　ヒープメモリの所要量の求め方（通常運用時）」を参照して求めてください。

HEAP_IMPORTSZ

adbimportコマンド実行時に使用するプロセスメモリ（ヒープメモリ）

「6.3.6　adbimportコマンド実行時のメモリ所要量の求め方」の「(3)　ヒープメモリの所要量の求め方（adbimportコマンド実行時）」を参照して求めてください。

HEAP_IDXRBLDSZ

adbidxrebuildコマンド実行時に使用するプロセスメモリ（ヒープメモリ）

「6.3.7　adbidxrebuildコマンド実行時のメモリ所要量の求め方」の「(3)　ヒープメモリの所要量の求め方（adbidxrebuildコマンド実行時）」を参照して求めてください。

HEAP_EXPORTSZ

adbexportコマンド実行時に使用するプロセスメモリ（ヒープメモリ）

「6.3.10　adbexportコマンド実行時のメモリ所要量の求め方」の「(3)　ヒープメモリの所要量の求め方（adbexportコマンド実行時）」を参照して求めてください。

HEAP_MERCHKSZ

adbmergechunkコマンド実行時に使用するプロセスメモリ（ヒープメモリ）

「6.3.13　adbmergechunkコマンド実行時のメモリ所要量の求め方」の「(3)　ヒープメモリの所要量の求め方（adbmergechunkコマンド実行時）」を参照して求めてください。

HEAP_ARCCKSZ

adbarchivechunkコマンド実行時に使用するプロセスメモリ（ヒープメモリ）

「6.3.16　adbarchivechunkコマンド実行時のメモリ所要量の求め方」の「(3)　ヒープメモリの所要量の求め方（adbarchivechunkコマンド実行時）」を参照して求めてください。

HEAP_UNARCCKSZ

adbunarchivechunkコマンド実行時に使用するプロセスメモリ（ヒープメモリ）

「6.3.17　adbunarchivechunkコマンド実行時のメモリ所要量の求め方」の「(3)　ヒープメモリの所要量の求め方（adbunarchivechunkコマンド実行時）」を参照して求めてください。

HEAP_REORGSZ

adbreorgsystemdataコマンド実行時に使用するプロセスメモリ（ヒープメモリ）

「6.3.18　adbreorgsystemdataコマンド実行時のメモリ所要量の求め方」の「(3)　ヒープメモリの所要量の求め方（adbreorgsystemdataコマンド実行時）」を参照して求めてください。

HEAP_CLTDEFMNG

adbclientdefmangコマンド実行時に使用するプロセスメモリ（ヒープメモリ）

「6.3.19　adbclientdefmangコマンド実行時のメモリ所要量の求め方」の「(3)　ヒープメモリの所要量の求め方（adbclientdefmangコマンド実行時）」を参照して求めてください。

6.3.3　HADBサーバ開始時のメモリ所要量の求め方

adbstartコマンドでHADBサーバを開始する場合，HADBサーバは次に示すメモリを使用します。各メモリの所要量を求めてください。

■共有メモリ

共有メモリ管理

グローバルバッファページ

プロセス共通メモリ

リアルスレッド固有メモリ

■プロセスメモリ

ヒープメモリ

それぞれのメモリ所要量の計算式を次に示します。

(1)　共有メモリ管理の所要量の求め方（HADBサーバ開始時）

HADBサーバ開始時の共有メモリ管理（SHMMAN）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

SHMMAN＝
      245,150＋1,232×(rthd_num＋max_users＋10＋multi_num＋worker_num＋cloud_num)
      ＋(3,207×max_users)＋SHM_LSGBUF＋SHM_LSLBUF

変数の説明

rthd_num

サーバ定義adb_sys_rthd_numオペランドの指定値

max_users

サーバ定義adb_sys_max_usersオペランドの指定値

multi_num

次に示す計算式から求めてください。

計算式

worker_num

サーバ定義adb_sys_multi_max_worker_nodesオペランドの指定値×2

cloud_num

クラウドストレージ機能を使用する場合

1を代入してください。

クラウドストレージ機能を使用しない場合

0を代入してください。

SHM_LSGBUF

adbls -d gbufコマンドの表示内容が格納される共有メモリ

次に示す値を代入してください。

値（単位：キロバイト）

SHM_LSGBUF＝ 337

SHM_LSLBUF

adbls -d lbufコマンドの表示内容が格納される共有メモリ

次に示す値を代入してください。

値（単位：キロバイト）

SHM_LSLBUF＝ 33

(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）

HADBサーバ開始時のグローバルバッファページ（SHM_BUFGLOBAL）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

MSTPAGES：マスタディレクトリ用DBエリアのページ

次に示す計算式から求めてください。

計算式（単位：バイト）

RTHNUM：「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(a)　変数SCIの求め方」の変数RTHNUMを参照してください。

WRKPAGES：作業表用DBエリアのページ

次に示す計算式から求めてください。

計算式（単位：バイト）

WRKPAGES＝ （wrk_page_num＋1）×wrk_page_size

wrk_page_num

サーバ定義adb_dbbuff_wrktbl_glb_blk_numオペランドの指定値

wrk_page_size

「表6‒3　DBエリアのページサイズ」の作業表用DBエリアのページサイズを参照して，バイト単位で求めてください。

Σ（BUFPAGES＋SCANPAGES）：指定したすべてのadbbuffオペランドについて，BUFPAGESとSCANPAGESを計算した結果の合計値

この合計値には次に示すadbbuffオペランドも含まれます。

-oオプションを指定したadbbuffオペランド

-nオプションおよび-oオプションを指定しなかったadbbuffオペランド

それぞれの詳細について説明します。

-oオプションを指定したadbbuffオペランド

-oオプションを指定した場合，adbbuffオペランドの-nオプションに指定しなかったDBエリアはページサイズごとに分類されて自動的にadbbuffオペランドが定義されます。それを踏まえて，BUFPAGESを求めてください。例を次に示します。

例：次に示す4つのDBエリアを-nオプションで指定しなかった場合

■対象のDBエリア

ADBDIC，ADBSTBL，ADBUTBL01，ADBUTBL02（ページサイズ：4キロバイト）

ADBUTBL03（ページサイズ：32キロバイト）

■サーバ定義の指定例

adbbuff -g SAMPLEBUF -o -p 100

この場合，4つのDBエリアはページサイズごとに分類されて自動的に定義されます。-oオプションを指定したadbbuffオペランドに各オプション（-p，-a）を指定した場合，オプションの指定値も自動的に定義されます。

■自動的に定義された例

adbbuff -g SAMPLEBUF#0000004096 -n ADBDIC, ADBSTBL, ADBUTBL01, ADBUTBL02 -p 100
adbbuff -g SAMPLEBUF#0000032768 -n ADBUTBL03 -p 100

注　下線部分は自動的に定義されたときに追加されたグローバルバッファ名です。

-nオプションおよび-oオプションを指定しなかったadbbuffオペランド

adbbuffオペランドの-nオプションに指定しなかったDBエリアがあり，-oオプションも指定しなかった場合，-oオプションを指定したときと同じように，DBエリアはページサイズごとに分類されて自動的にadbbuffオペランドが定義されます。それを踏まえて，BUFPAGESを求めてください。例を次に示します。

例：次に示す4つのDBエリアを-nオプションに指定しないで，-oオプションも指定しなかった場合

■対象のDBエリア

ADBDIC，ADBSTBL，ADBUTBL01，ADBUTBL02（ページサイズ：4キロバイト）

ADBUTBL03（ページサイズ：32キロバイト）

■サーバ定義の指定例

指定なし

この場合，4つのDBエリアはページサイズごとに分類されて自動的に定義されます。-pオプションを省略した場合に仮定される値が定義されます。

■自動的に定義された例

adbbuff -g ##ADBOTHER#0000004096 -n ADBDIC, ADBSTBL, ADBUTBL01, ADBUTBL02
adbbuff -g ##ADBOTHER#0000032768 -n ADBUTBL03

注　下線部分は自動的に定義されたグローバルバッファ名です。

BUFPAGES：ページ領域

次に示す計算式から求めてください。

計算式（単位：バイト）

BUFPAGES＝ （GLBPAGES＋OPTTYPES）×page_size

GLBPAGES：

サーバ定義adbbuffオペランドの各オプション（-p，-a）の指定値の合計値

OPTTYPES：

サーバ定義adbbuffオペランドの各オプション（-p，-a）の指定数

すべてのオプションを省略した場合，OPTTYPESは1としてください。例えば，次に示す指定例の場合，-pおよび-aの2つのオプションが指定されているため，OPTTYPESは2となります。

指定例

adbbuff -g SAMPLEBUF -n ADBUTBL01 -p 10 -a 10

page_size：

サーバ定義adbbuffオペランドの-nオプションに指定したDBエリアのページサイズ（単位：バイト）

「表6‒3　DBエリアのページサイズ」のデータ用DBエリアのページサイズを参照して求めてください。

SCANPAGES：テーブルスキャンページ

次に示す計算式から求めてください。ただし，サーバ定義adbbuffオペランドの-vオプション，および-kオプションを省略した場合，SCANPAGESに0を代入してください。

計算式（単位：バイト）

SCANPAGES＝ SCANBLOCKS × 4,194,304

SCANBLOCKS：

テーブルスキャンバッファのブロック数

次に示す計算式から求めてください。

adbbuff_opt_v：

サーバ定義adbbuffオペランドの-vオプションのテーブルスキャンバッファに使用するメモリサイズの指定値

サーバ定義adbbuffオペランドの-kオプションを指定した場合は次の計算式から求めてください。

adbbuffオペランドの-kオプションの指定値 × 4

page_size：

サーバ定義adbbuffオペランドの-nオプションに指定したDBエリアのページサイズ（単位：バイト）

「表6‒3　DBエリアのページサイズ」のデータ用DBエリアのページサイズを参照して求めてください。

表6‒3　DBエリアのページサイズ

項番

DBエリアの種類

ページサイズ（単位：バイト）

1

マスタディレクトリ用DBエリア

4,096

2

ディクショナリ用DBエリア

3

システム表用DBエリア

4

作業表用DBエリア

↑work_page_size÷32↑×32×1,024

work_page_sizeには次の値を指定してください。

サーバ定義にadb_dbarea_wrk_page_sizeオペランドを指定している場合

サーバ定義のadb_dbarea_wrk_page_sizeオペランドの指定値

サーバ定義にadb_dbarea_wrk_page_sizeオペランドを指定していない場合

adbinitコマンドの初期設定オプションのadb_init_wrk_page_sizeオペランドの指定値

5

データ用DBエリア

対象のDBエリアをadbinitコマンドで作成した場合

次に示す計算式から求めてください。

  初期設定オプションadbinitdbareaに指定した
  -pオプションの指定値×1,024

対象のDBエリアをadbmodareaコマンドで作成した場合

次に示す計算式から求めてください。

  DBエリア追加・変更オプションadbaddareaに指定した
  -pオプションの指定値×1,024

メモ

データベースを構築していれば，次に示すコマンドでDBエリアのページサイズを調べることもできます。

作業表用DBエリアの場合

adbls -d gbufコマンドで，グローバルバッファの情報を取得する

adbls -d lbufコマンドで，ローカル作業表用バッファの情報を取得する

データ用DBエリアの場合

adbdbstatus -d summary -c dbareaコマンドで，DBエリアのサマリ情報を取得する

adbls -d gbufコマンドで，グローバルバッファの情報を取得する

rthd_num：

サーバ定義adb_sys_rthd_numオペランドの指定値

(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）

HADBサーバ開始時のプロセス共通メモリ（PROC_STARTSZ）の所要量は，次の計算式から求めてください。

計算式（単位：キロバイト）

PROC_STARTSZ ＝ SCI＋RPCS＋DICS＋BUFGLOBAL＋BUFENCRYPTION＋DBAREAINF＋DBSYSINF
               ＋RECCTL＋DBUPDINFMNG＋RNGPREREADINF＋RNGPREREADHANDLE＋MODA
               ＋PROC_CNCTSZ＋LSINF＋DBHTRC＋LSTCMNINF＋LSTRTHDINF＋CLDSTGINF
               ＋ARWINF＋PROC_STAINF＋SYNDICTINF＋AUDINF＋CLMNZ＋CHACINF

変数の説明

SCI

システム管理制御情報

「(a)　変数SCIの求め方」を参照してください。

RPCS

通信サービス管理情報

「(b)　変数RPCSの求め方」を参照してください。

DICS

ディクショナリ表，およびシステム表の検索用領域

「(c)　変数DICSの求め方」を参照してください。

BUFGLOBAL

グローバルバッファ

「(d)　変数BUFGLOBALの求め方」を参照してください。

BUFENCRYPTION

DBエリア暗号化機能領域

「(e)　変数BUFENCRYPTIONの求め方」を参照してください。

DBAREAINF

DBエリア情報

「(f)　変数DBAREAINFの求め方」を参照してください。

DBSYSINF

HADBサーバ起動用システム情報

「(g)　変数DBSYSINFの求め方」を参照してください。

RECCTL

回復制御領域

「(h)　変数RECCTLの求め方」を参照してください。

DBUPDINFMNG

DBエリア，表，インデクス，およびチャンク更新情報管理領域

「(i)　変数DBUPDINFMNGの求め方」を参照してください。

RNGPREREADINF

レンジインデクスの先読み

「(j)　変数RNGPREREADINFの求め方」を参照してください。

RNGPREREADHANDLE

レンジインデクス先読み開始処理

「(k)　変数RNGPREREADHANDLEの求め方」を参照してください。

MODA

DBエリア変更制御情報

「(l)　変数MODAの求め方」を参照してください。

PROC_CNCTSZ

データベース接続時

「6.3.4　通常運用時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（通常運用時）」の「(a)　変数PROC_CNCTSZの求め方」を参照してください。

LSINF

adblsコマンドの管理情報

「(m)　変数LSINFの求め方」を参照してください。

DBHTRC

バッファ，ディスクI/O，HADBサーバ間通信トレース，および作業表の状態遷移トレースで使用する格納領域

「(n)　変数DBHTRCの求め方」を参照してください。

LSTCMNINF

作業表の共通管理情報

「(o)　変数LSTCMNINFの求め方」を参照してください。

LSTRTHDINF

ローカル作業表の管理情報

「(p)　変数LSTRTHDINFの求め方」を参照してください。

CLDSTGINF

クラウドストレージ機能の管理情報

「(q)　変数CLDSTGINFの求め方」を参照してください。

ARWINF

外部データへのアクセス用メモリの管理

「(r)　変数ARWINFの求め方」を参照してください。

PROC_STAINF

統計情報の制御情報

「(s)　変数PROC_STAINFの求め方」を参照してください。

SYNDICTINF

同義語辞書へのアクセス情報

「(t)　変数SYNDICTINFの求め方」を参照してください。

AUDINF

監査証跡の管理情報

「(u)　変数AUDINFの求め方」を参照してください。

CLMNZ

更新行のカラム化機能を有効にする場合に必要なメモリ

「(v)　変数CLMNZの求め方」を参照してください。

CHACINF

チャンクへのアクセス情報

「(w)　変数CHACINFの求め方」を参照してください。

(a)　変数SCIの求め方

変数SCIは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

SCI＝↑（35,168＋CON＋RTH＋UTH＋TRN＋DEF＋MLT※1＋CGR※2＋CMI※3＋CLD※4）÷1,024↑

注※1

マルチノード機能を使用する場合に加算してください。

注※2

クライアントグループ機能を使用する場合に加算してください。

注※3

クライアント定義の集中管理機能を使用する場合に加算してください。

注※4

クラウドストレージ機能を使用する場合に加算してください。

変数の説明

CON：コネクション制御情報

次に示す計算式から求めてください。

計算式（単位：バイト）

CON＝11,008×max_users

max_users

サーバ定義adb_sys_max_usersオペランドの指定値

RTH：リアルスレッド制御情報

次に示す計算式から求めてください。

計算式（単位：バイト）

RTH＝ RTHNUM×1,776

RTHNUM：総リアルスレッド数

計算式

RTHNUM＝ 7＋rthd_num＋CTHNUM＋MLTNUM※＋cloud_num

注※

マルチノード機能を使用する場合に加算してください。

rthd_num

サーバ定義adb_sys_rthd_numオペランドの指定値

CTHNUM：コネクションスレッド数

計算式

CTHNUM＝ 3＋max_users

max_users

サーバ定義adb_sys_max_usersオペランドの指定値

MLTNUM：マルチノード機能専用スレッド数

マルチノード機能を使用する場合に求めてください。

計算式

MLTNUM＝（multi_node_num＋worker_node_num）×2＋3

multi_node_num

サーバ定義adb_sys_multi_node_infoオペランドに指定したホスト名の数

worker_node_num

サーバ定義adb_sys_multi_max_worker_nodesオペランドの指定値

cloud_num

クラウドストレージ機能を使用する場合

1を代入してください。

クラウドストレージ機能を使用しない場合

0を代入してください。

UTH：擬似リアルスレッド制御情報

次に示す計算式から求めてください。

計算式（単位：バイト）

UTH＝UTHNUM×RTHNUM×1,776

UTHNUM：総擬似スレッド数

計算式

UTHNUM＝ 2＋uthd_num

uthd_num：サーバ定義adb_sys_uthd_numオペランドの指定値

RTHNUM

変数RTHの変数RTHNUMを参照してください。

TRN：トランザクション管理情報

次に示す計算式から求めてください。

計算式（単位：バイト）

max_users

サーバ定義adb_sys_max_usersオペランドの指定値

DEF：定義解析結果情報

次に示す計算式から求めてください。

計算式（単位：バイト）

DEF＝ 3,701＋475×dbbuff_defnum

dbbuff_defnum：サーバ定義に指定されたadbbuffオペランドの数

MLT：マルチノード制御情報

マルチノード機能を使用する場合に求めてください。

計算式（単位：バイト）

MLT＝23,616
     ＋｛23,184＋792×RTHNUM
         ＋（RNGPREREADINF×1,024＋BUFDEF＋BUFINT＋200＋40×cltgrp_num＋105,528※1）※2
        ｝×（multi_node_num＋worker_node_num）

注※1

クラウドストレージ機能を使用する場合に加算してください。

注※2

サーバ定義adb_sys_max_parallel_exec_numオペランドに1以上が指定された場合に加算してください。

RTHNUM

変数RTHの変数RTHNUMを参照してください。

RNGPREREADINF

「(j)　変数RNGPREREADINFの求め方」を参照してください。

BUFDEF

「(d)　変数BUFGLOBALの求め方」の変数BUFDEFを参照してください。

BUFINT

「(d)　変数BUFGLOBALの求め方」の変数BUFINTを参照してください。

cltgrp_num

サーバ定義adbcltgrpオペランドに指定したクライアントグループの数

multi_node_num

サーバ定義adb_sys_multi_node_infoオペランドに指定したホスト名の数

worker_node_num

サーバ定義adb_sys_multi_max_worker_nodesオペランドの指定値

CGR：クライアントグループ制御情報

クライアントグループ機能を使用する場合に求めてください。

計算式（単位：バイト）

cltgrp_num

サーバ定義adbcltgrpオペランドに指定したクライアントグループの数

CMI：クライアント定義の集中管理情報

クライアント定義の集中管理機能を使用する場合に求めてください。

計算式（単位：バイト）

CMI＝（↑（50,384＋768×（cltmng_num－1））÷32↑×32＋64）＋224×authid_num

cltmng_num

クライアント管理定義ファイルに指定された，クライアント管理定義のadbclientmangオペランドの総数

authid_num

クライアント管理定義のadbclientmangオペランドに指定された，認可識別子の総数

CLD：クラウドストレージ機能の制御情報

クラウドストレージ機能を使用する場合に次の値を代入してください。

値（単位：バイト）

CLD＝360

(b)　変数RPCSの求め方

変数RPCSは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

CTHNUM

「(a)　変数SCIの求め方」の変数CTHNUMを参照してください。

MLTNUM

「(a)　変数SCIの求め方」の変数MLTNUMを参照してください。

ipv4_num

自ノードの有効なIPv4アドレスの数（単位：個）

(c)　変数DICSの求め方

変数DICSは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

DICS＝ tbldef_cache_size ＋ 84

変数の説明

tbldef_cache_size：サーバ定義adb_sql_tbldef_cache_sizeオペランドの指定値

(d)　変数BUFGLOBALの求め方

変数BUFGLOBALは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

注※

マルチノード機能を使用する場合に加算してください。

変数の説明

BUFDEF：adbbuffオペランド解析

次に示す計算式から求めてください。

計算式（単位：バイト）

BUFDEF＝ 3,640＋608×BUFOPE_NUM

BUFOPE_NUM：サーバ定義adbbuffオペランドの定義数

この合計値には次に示すadbbuffオペランドも含まれます。

-oオプションを指定したadbbuffオペランド

-nオプションおよび-oオプションを指定しなかったadbbuffオペランド

それぞれの詳細について説明します。

-oオプションを指定したadbbuffオペランド

-oオプションを指定した場合，adbbuffオペランドの-nオプションに指定しなかったDBエリアはページサイズごとに分類されて自動的にadbbuffオペランドが定義されます。それを踏まえて，BUFOPE_NUMを求めてください。例を次に示します。

例：次に示す4つのDBエリアを-nオプションで指定しなかった場合

■対象のDBエリア

ADBDIC，ADBSTBL，ADBUTBL01，ADBUTBL02（ページサイズ：4キロバイト）

ADBUTBL03（ページサイズ：32キロバイト）

■サーバ定義の指定例

adbbuff -g SAMPLEBUF -o

この場合，4つのDBエリアはページサイズごとに分類されて自動的に定義されます。そのため，BUFOPE_NUMは2となります。

■自動的に定義された例

adbbuff -g SAMPLEBUF#0000004096 -n ADBDIC, ADBSTBL, ADBUTBL01, ADBUTBL02
adbbuff -g SAMPLEBUF#0000032768 -n ADBUTBL03

注　下線部分は自動的に定義されたときに追加されたグローバルバッファ名です。

-nオプションおよび-oオプションを指定しなかったadbbuffオペランド

adbbuffオペランドの-nオプションに指定しなかったDBエリアがあり，-oオプションも指定しなかった場合，-oオプションを指定したときと同じように，DBエリアはページサイズごとに分類されて自動的にadbbuffオペランドが定義されます。それを踏まえて，BUFOPE_NUMを求めてください。例を次に示します。

例：DBエリア（ADBDIC，ADBSTBL）を-nオプションに指定しないで，-oオプションも指定しなかった場合

■対象のDBエリア

ADBDIC，ADBUTBL01，ADBUTBL02（ページサイズ：4キロバイト）

ADBUTBL03（ページサイズ：32キロバイト）

■サーバ定義の指定例

adbbuff -g SAMPLEBUF01 -n ADBUTBL01, ADBUTBL02
adbbuff -g SAMPLEBUF02 -n ADBUTBL03

この場合，指定されていないADBDICおよびADBSTBLは自動的に定義されます。そのため，BUFOPE_NUMは指定した2つと合わせて4となります。

■自動的に定義された例

adbbuff -g ##ADBOTHER#0000004096 -n ADBDIC, ADBSTBL

注　下線部分は自動的に定義されたグローバルバッファ名です。

BUFCTL：グローバルバッファ管理領域

次に示す計算式から求めてください。

計算式（単位：バイト）

ΣOPTTYPES：各adbbuffオペランドに指定したオプション（-p，-a）の指定数の合計値

この合計値には次に示すadbbuffオペランドも含まれます。

-oオプションを指定したadbbuffオペランド

-nオプションおよび-oオプションを指定しなかったadbbuffオペランド

詳細については，「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」の変数Σ（BUFPAGES＋SCANPAGES）を参照してください。

オプションの指定数の求め方について，例を次に示します。

例

adbbuffオペランドを次に示すとおりに定義した場合，ADBDICおよびADBSTBLへの自動定義を含め，オプションの指定数は合計5（1＋2＋1＋1）となります。

■サーバ定義の指定例

    adbbuff -g SAMPLEBUF1 -n ADBUTBL01 -p 100
    adbbuff -g SAMPLEBUF2 -n ADBUTBL02 -p 100 -a 100
    adbbuff -g SAMPLEBUF3 -n ADBUTBL03※

注※　-pオプションが仮定されます。

■自動的に定義された例

adbbuff -g ##ADBOTHER#0000004096 -n ADBDIC, ADBSTBL※

注　下線部分は自動的に定義されたグローバルバッファ名です。

注※　-pオプションが仮定されます。

DBAREA_NUM：

DBエリアの総数

BUFOPT_V_NUM：

-vオプション，または-kオプションが指定されているadbbuffオペランドの定義数

RTHNUM：

「(a)　変数SCIの求め方」の変数RTHNUMを参照してください。

BUFINT：多重初期化用一時領域

次に示す計算式から求めてください。

計算式（単位：バイト）

BUFINT＝ 480＋80×ΣBUFWRK_NUM＋8×rthd_num＋INITQUE

rthd_num：

サーバ定義adb_sys_rthd_numオペランドの指定値

INITQUE：初期化処理待ちキュー

次に示す計算式から求めてください。

計算式（単位：バイト）

INITQUE＝ 80×RTHNUM×RTHNUM＋632×RTHNUM＋960＋64×ΣBUFWRK_NUM

RTHNUM：「(a)　変数SCIの求め方」の変数RTHNUMを参照してください。

ΣBUFWRK_NUM：adbbuffオペランドごとに計算した変数BUFWRK_NUMの合計値

この合計値には次に示すadbbuffオペランドも含まれます。

-oオプションを指定したadbbuffオペランド

-nオプションおよび-oオプションを指定しなかったadbbuffオペランド

詳細については，「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」の変数Σ（BUFPAGES＋SCANPAGES）を参照してください。

BUFWRK_NUM：次に示す計算式から求めてください。

計算式（単位：個）

OPTTYPES：

「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」の変数OPTTYPESを参照してください。

adbbuff_opt_p：

adbbuffオペランドの-pオプションの指定値

adbbuff_opt_a：

adbbuffオペランドの-aオプションの指定値

BUFOPT_V：adbbuffオペランドの-vオプション，または-kオプションの指定有無

-vオプション，または-kオプションが指定されている場合は1，それ以外の場合は0を代入してください。

SCAN_INIT：テーブルスキャンバッファのマルチ初期化用領域

adbbuffオペランドの-vオプション，または-kオプションが指定されている場合は，サーバ定義adb_sys_rthd_numオペランドの指定値を代入してください。-vオプション，および-kオプションが指定されていない場合は0を代入してください。

BUFPGE：ページ管理領域

次に示す計算式から求めてください。

計算式（単位：バイト）

BUFPGE＝ ΣTYPEBUF＋MSTBUF＋WRKBUF

ΣTYPEBUF：各adbbuffオペランドに指定したオプション（-p，-a）ごとに求めた変数TYPEBUFの合計値

この合計値には次に示すadbbuffオペランドも含まれます。

-oオプションを指定したadbbuffオペランド

-nオプションおよび-oオプションを指定しなかったadbbuffオペランド

詳細については，「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」の変数Σ（BUFPAGES＋SCANPAGES）を参照してください。

TYPEBUF：次に示す計算式から求めてください。

計算式（単位：バイト）

TYPEBUF＝ GCLBUF（page_num）＋BUFMEM（page_num）

page_num：

サーバ定義adbbuffオペランドに指定した各オプション（-p，-a）のどれかの指定値

GCLBUF：次に示す計算式から求めてください。

計算式（単位：バイト）

GCLBUF（X）＝ 192×RTHNUM＋192＋X×（176＋BUFLOG）

RTHNUM：

「(a)　変数SCIの求め方」の変数RTHNUMを参照してください。

X：

対象となるページ数

BUFLOG：ログ領域

次に示す計算式から求めてください。

計算式（単位：バイト）

BUFLOG＝ ↓（（（16＋（（RTHNUM−6）÷8＋1））＋15）÷16）↓×16

BUFMEM：次に示す計算式から求めてください。

計算式（単位：バイト）

BUFMEM（X）＝
    480×RTHNUM×RTHNUM＋（584＋24×UTHNUM）×RTHNUM
    ＋（352＋16×RTHNUM）×HASHTBL_NUM＋80×X＋24×UTHNUM＋368

RTHNUM：

「(a)　変数SCIの求め方」の変数RTHNUMを参照してください。

UTHNUM：

「(a)　変数SCIの求め方」の変数UTHNUMを参照してください。

X：

対象となるページ数

HASHTBL_NUM：次に示す計算式から求めてください。

計算式

HASHTBL_NUM＝ X÷4

MSTBUF：次に示す計算式から求めてください。

計算式（単位：バイト）

MSTBUF＝ RTHNUM×2

RTHNUM：

「(a)　変数SCIの求め方」の変数RTHNUMを参照してください。

WRKBUF：

サーバ定義adb_dbbuff_wrktbl_glb_blk_numオペランドの指定値

BUFTBL：テーブルスキャンバッファ

次に示す計算式から求めてください。

計算式（単位：バイト）

BUFTBL＝ ΣSCANBUF

ΣSCANBUF：各adbbuffオペランドに指定したテーブルスキャン用一括読み込みバッファの数

adbbuffオペランドに指定した-vオプション，または-kオプションごとに計算した変数SCANBUFの合計値になります。

SCANBUF：次に示す計算式から求めてください。

計算式（単位：バイト）

なお，-vオプション，および-kオプションを指定しなかったadbbuffオペランドについては，SCANBUFを0としてください。

SCANBLOCKS

テーブルスキャンバッファのブロック数

「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」の変数SCANBLOCKSを参照して求めてください。

page_size

-vオプション，または-kオプションを指定したadbbuffオペランドの-nオプションに指定したDBエリアのページサイズ（単位：バイト）

「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」にある「表6‒3　DBエリアのページサイズ」を参照して求めてください。

rthd_num

サーバ定義adb_sys_rthd_numオペランドの指定値

BUFUPDLISTCTL

ノード間更新リスト管理領域

次に示す値を代入してください。

値（単位：バイト）

(e)　変数BUFENCRYPTIONの求め方

変数BUFENCRYPTIONは，次に示す計算式から求めてください。サーバ定義adb_crypto_dmkey_pathオペランドを指定しているときに加算してください。

計算式（単位：キロバイト）

BUFENCRYPTION＝ rthd_num × 32

変数の説明

rthd_num：サーバ定義adb_sys_rthd_numオペランドの指定値

(f)　変数DBAREAINFの求め方

変数DBAREAINFは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

dbarea_num

すべてのDBエリア数

dbarea_file_num

すべてのDBエリアファイル数

cloud_storage_coefficient

クラウドストレージ機能を使用している場合は64を，クラウドストレージ機能を使用していない場合は1を代入してください。

table_num

ユーザが定義した実表の総数

column_table_num

ユーザが定義したカラムストア表の実表の総数

index_num

ユーザが定義したインデクスの総数

SEGSIZE

DBエリアファイルを定義したDBエリアのセグメントサイズ（単位：ページ数）

次に示す計算式から求めてください。クラウドストレージ機能を使用する場合は，1,024になります。

SEGSIZE＝ 1セグメントの容量（単位：バイト）÷page_size

page_size

DBエリアファイルを定義したDBエリアのページサイズ（単位：バイト）

「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」にある「表6‒3　DBエリアのページサイズ」を参照して求めてください。

max_users

サーバ定義adb_sys_max_usersオペランドの指定値

rthd_num

サーバ定義adb_sys_rthd_numオペランドの指定値

(g)　変数DBSYSINFの求め方

変数DBSYSINFには，次に示す値を代入してください。

値（単位：キロバイト）

DBSYSINF＝ 1,308

(h)　変数RECCTLの求め方

変数RECCTLは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

RECCTL ＝ 2,177
         ＋（65＋64×log_usrbuf_num×log_usrbuf_crypto）×（log_usrfile_num）
         ＋max_users

変数の説明

log_usrbuf_num：サーバ定義adb_log_usrbuf_numオペランドの指定値

log_usrbuf_crypto：サーバ定義adb_crypto_dmkey_pathオペランドを指定してない場合は1を，サーバ定義adb_crypto_dmkey_pathオペランドを指定している場合は2を代入してください。

log_usrfile_num：サーバ定義adb_log_usrfile_numオペランドの指定値

max_users：サーバ定義adb_sys_max_usersオペランドの指定値

(i)　変数DBUPDINFMNGの求め方

変数DBUPDINFMNGには，次に示す値を代入してください。

なお，マルチノード機能を使用するかどうかで，値が異なります。

値（単位：キロバイト）

(j)　変数RNGPREREADINFの求め方

変数RNGPREREADINFは，次に示す計算式から求めてください。サーバ定義adb_sql_rngidx_prereadオペランドに指定した項目によって計算式が異なります。

なお，adb_sql_rngidx_prereadオペランドにNOを指定した場合は，変数RNGPREREADINFは0になります。

■adb_sql_rngidx_prereadオペランドにALLを指定した場合

計算式（単位：キロバイト）

変数の説明

uthd_num：サーバ定義adb_sys_uthd_numオペランドの指定値

■adb_sql_rngidx_prereadオペランドにレンジインデクス名を指定した場合

計算式（単位：キロバイト）

変数の説明

preread_rng_num：adb_sql_rngidx_prereadオペランドに指定したレンジインデクス名の数

uthd_num：サーバ定義adb_sys_uthd_numオペランドの指定値

(k)　変数RNGPREREADHANDLEの求め方

変数RNGPREREADHANDLEは，次に示す値を代入してください。

値（単位：キロバイト）

RNGPREREADHANDLE＝ 1

(l)　変数MODAの求め方

変数MODAは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

MODA＝ 9,216＋262,144※＋↑wrk_page_size÷1,024↑

注※

クラウドストレージ機能を使用する場合に加算してください。

変数の説明

wrk_page_size

作業表用DBエリアのページサイズ（単位：バイト）

「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」にある「表6‒3　DBエリアのページサイズ」を参照して求めてください。

(m)　変数LSINFの求め方

変数LSINFは，次に示す値を代入してください。

値（単位：キロバイト）

LSINF＝ 1

(n)　変数DBHTRCの求め方

変数DBHTRCは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

RTHNUM

「(a)　変数SCIの求め方」の変数RTHNUMを参照してください。

(o)　変数LSTCMNINFの求め方

変数LSTCMNINFは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

max_users

サーバ定義adb_sys_max_usersオペランドの指定値

(p)　変数LSTRTHDINFの求め方

変数LSTRTHDINFは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

RTHNUM

「(a)　変数SCIの求め方」の変数RTHNUMを参照してください。

(q)　変数CLDSTGINFの求め方

変数CLDSTGINFは，次に示す計算式から求めてください。クラウドストレージ機能を使用する場合に加算してください。

計算式（単位：キロバイト）

CLDSTGINF＝CLDSTGCACHE＋CLDSTGACSREQ＋CLDSTGACSMEM

変数の説明

CLDSTGCACHE：キャッシュファイルの管理

次に示す計算式から求めてください。

計算式（単位：キロバイト）

CLDSTGCACHE＝↑（3,136＋384×(cachegrp_grpnum＋2)＋68×cachegrp_areanum
               ＋192×（max_users＋1）＋64×CACHEENTNUM÷10
               ＋（1,408＋72×（max_users＋1））×CACHEENTNUM）÷1,024↑

cachegrp_grpnum

サーバ定義のadbcachegrpオペランドの指定数（指定していない場合は1）

ただし，-dオプションを指定したadbcachegrpオペランドは指定数に加算しないでください。

cachegrp_areanum

サーバ定義の全adbcachegrpオペランドの-nオプションに指定したデータ用DBエリアの総数

max_users

サーバ定義adb_sys_max_usersオペランドの指定値

CACHEENTNUM

キャッシュエントリ数

次に示す計算式から求めてください。

CACHEENTNUM＝MAX（20,000 , cache_total_size×64）

cache_total_size

次のどちらかの値

サーバ定義の全adbcachegrpオペランドの-sオプションの指定値の合計（単位：ギガバイト）

サーバ定義adb_sys_cld_cache_total_sizeオペランドの指定値（単位：ギガバイト）

CLDSTGACSREQ：クラウドストレージへのアクセス要求の管理

次に示す値を代入してください。

値（単位：キロバイト）

CLDSTGACSREQ＝ 1

CLDSTGACSMEM：クラウドストレージへのアクセス用メモリの管理

次に示す計算式から求めてください。

計算式（単位：キロバイト）

CLDSTGACSMEM＝↑（↑（access_area_size÷32）↑×33,554,624＋226,624）÷1,024↑

access_area_size

サーバ定義adb_sys_cld_access_area_sizeオペランドの指定値（単位：メガバイト）

(r)　変数ARWINFの求め方

変数ARWINFは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

ARWINF＝ 24×RTHNUM

変数の説明

RTHNUM

「(a)　変数SCIの求め方」の変数RTHNUMを参照してください。

(s)　変数PROC_STAINFの求め方

変数PROC_STAINFは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

max_users

サーバ定義adb_sys_max_usersオペランドの指定値

(t)　変数SYNDICTINFの求め方

変数SYNDICTINFは，次に示す値を代入してください。

値（単位：キロバイト）

(u)　変数AUDINFの求め方

変数AUDINFは，次に示す計算式から求めてください。監査証跡機能が有効な場合に加算してください。監査証跡機能を無効にすると，変数AUDINFで求めた値は解放されます。

計算式（単位：キロバイト）

AUDINF＝ 1＋PROC_AUDINFSZ

変数の説明

PROC_AUDINFSZ：監査証跡の情報

次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_AUDINFSZ＝ 2＋（↑sql_text_size÷1,024↑）※1
             ＋（↑PARAM_INFO_SIZE÷1,024↑）※2
             ＋OBJECT_INFO_SIZE※3
             ＋system_info_size

注※1

SQL文の実行時に加算してください。

注※2

？パラメタを含むSQL文の実行時に加算してください。

注※3

SQL文，またはコマンドの実行時に加算してください。

sql_text_size

SQLテキスト長（単位：バイト）

PARAM_INFO_SIZE

パラメタ格納領域（単位：バイト）

「6.3.4　通常運用時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（通常運用時）」の「(c)　変数RTHD_EXESQLSZの求め方」にある変数PARAM_INFO_SIZEを参照してください。

OBJECT_INFO_SIZE

オブジェクト情報（単位：キロバイト）

次に示す計算式から求めてください。

OBJECT_INFO_SIZE＝ 1×obj_num×user_num

obj_num

SQL文，またはコマンドに指定したオブジェクト数

GRANT文やREVOKE文にALL TABLESを指定した場合は，ALL TABLESの対象となる表数となります。

user_num

GRANT文やREVOKE文に指定した権限受領者数

権限受領者を指定しないSQL文やコマンドの場合は，1になります。

system_info_size

システム情報（単位：キロバイト）

HADBサーバ開始時のメモリ所要量を求める場合は，次の計算式で求めてください。

system_info_size = ↑サーバ定義ファイルのファイルサイズ※÷1,024↑

注※

サーバ定義ファイルのファイルサイズの単位はバイトです。

HADBサーバ開始時以外のメモリ所要量を求める場合は，次のどちらかで求めてください。

adbclientdefmangコマンド実行時

system_info_size = 2×↑クライアント管理定義ファイルのファイルサイズ※÷1,024↑

注※

クライアント管理定義ファイルのファイルサイズの単位はバイトです。

adbclientdefmangコマンド実行時以外

system_info_size = 0

(v)　変数CLMNZの求め方

変数CLMNZは，次に示す値を代入してください。

値（単位：キロバイト）

CLMNZ ＝ 5,120＋1

(w)　変数CHACINFの求め方

変数CHACINFは，次に示す値を代入してください。

値（単位：キロバイト）

CHACINF＝1,680

(4)　リアルスレッド固有メモリの所要量の求め方（HADBサーバ開始時）

HADBサーバ開始時のリアルスレッド固有メモリ（RTHD_STARTSZ）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

RTHD_STARTSZ ＝ RTI＋BUFINF＋DICL＋DICL2※1＋RTHD_STAINF＋MLTMNG※2
               ＋TRCMON＋AUDTHDINF※3＋CACHEINF※4

注※1

HADBサーバのバージョンアップを実施するときに加算してください。

注※2

マルチノード機能を使用するときに加算してください。

注※3

監査証跡機能が有効なときに加算してください。

注※4

クラウドストレージ機能を使用するときに加算してください。

変数の説明

RTI

リアルスレッド管理情報

次に示す計算式で求めてください。

計算式（単位：キロバイト）

AIO

非同期I/O管理情報

次に示す計算式で求めてください。

計算式（単位：バイト）

AIO＝ 32×UTHNUM

UTHNUM

「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(a)　変数SCIの求め方」の変数UTHNUMを参照してください。

DBI

次に示す計算式で求めてください。

計算式（単位：バイト）

DBI＝ 336×UTHNUM

BUFINF

バッファ定義の解析用領域

次に示す計算式で求めてください。

計算式（単位：キロバイト）

BUFINF＝ ↑(48×adbbuff_num)÷1,024↑

adbbuff_num：サーバ定義のadbbuffオペランドの指定数

DICL

次に示す値を代入してください。

値（単位：キロバイト）

DICL2

次に示す値を代入してください。

値（単位：キロバイト）

RTHD_STAINF

統計情報の制御情報

次に示す計算式で求めてください。

計算式（単位：キロバイト）

tables

1トランザクション内で実行するSQL文に出現する表の延べ数の合計

max_sql_concurrent_exec_num

1トランザクション内で同時に実行するSQL文の数の最大値

MLTMNG

マルチノード機能管理情報

次に示す計算式で求めてください。

計算式（単位：キロバイト）

MLTMNG＝
  ↑｛2,120＋↑（1,216×authid_num）÷4,096↑×4,096
     ＋（8,536＋760×UTHNUM）×（multi_node_num＋worker_node_num）
     ｝÷1,024↑

authid_num

クライアント管理定義のadbclientmangオペランドに指定した認可識別子の総数

multi_node_num

サーバ定義adb_sys_multi_node_infoオペランドに指定したホスト名の数

worker_node_num

サーバ定義adb_sys_multi_max_worker_nodesオペランドの指定値

TRCMON

SQLトレース機能のモニタアウトスレッド管理情報

次に示す計算式で求めてください。

計算式（単位：キロバイト）

注※

SQLトレースバッファ拡張時に確保されるメモリです。

RTHD_EXPSQLTRCSZ

SQLトレースバッファの拡張時に使用するリアルスレッド固有メモリ

「6.3.4　通常運用時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（通常運用時）」の「(i)　変数RTHD_EXPSQLTRCSZの求め方」を参照して求めてください。

AUDTHDINF

監査証跡の管理情報

次に示す計算式で求めてください。監査証跡機能を無効にすると，変数AUDTHDINFで求めた値は解放されます。

計算式（単位：キロバイト）

AUDTHDINF＝↑（272,631,408＋CTHNUM×260,000）÷1,024↑

CTHNUM

「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(a)　変数SCIの求め方」の変数CTHNUMを参照してください。

CACHEINF

クラウドストレージ機能のキャッシュ管理情報

値（単位：キロバイト）

CACHEINF ＝ 104

(5)　ヒープメモリの所要量の求め方（HADBサーバ開始時）

HADBサーバ開始時のヒープメモリ（HEAP_STARTSZ）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

HEAP_STARTSZ = 161 × UTHNUM × RTHNUM

変数の説明

UTHNUM

「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(a)　変数SCIの求め方」の変数UTHNUMを参照してください。

RTHNUM

「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(a)　変数SCIの求め方」の変数RTHNUMを参照してください。

6.3.4　通常運用時のメモリ所要量の求め方

HADBサーバ開始後，通常運用時（HADBクライアントがHADBサーバに接続するとき，およびSQL文を実行するとき）に，HADBサーバは次に示すメモリを使用します。各メモリの所要量を求めてください。

■共有メモリ

プロセス共通メモリ（PROC_EXECSZ）

リアルスレッド固有メモリ（RTHD_EXECSZ）

■プロセスメモリ

ヒープメモリ（HEAP_EXECSZ）

それぞれのメモリ所要量の計算式を次に示します。

(1)　プロセス共通メモリの所要量の求め方（通常運用時）

通常運用時のプロセス共通メモリ（PROC_EXECSZ）の所要量は，次の計算式から求めてください。

計算式（単位：キロバイト）

PROC_EXECSZ ＝ PROC_CNCTSZ＋PROC_TOTALSQLSSZ＋PROC_EXECSQLSZ＋PROC_BUFWORK_CTL
               ＋PROC_DEFSQLSZ＋PROC_IMPORTSZ＋PROC_IDXRBLDSZ＋PROC_GETCOSTSZ
               ＋PROC_DBSTATUSSZ＋PROC_MODASZ＋PROC_EXPORTSZ＋PROC_MERGCSZ
               ＋PROC_UPDSZ＋PROC_CHGCCMSZ＋PROC_CHGCSTSZ＋PROC_UPDLISTSZ※
               ＋PROC_ARCCKSZ＋PROC_UNARCCKSZ＋PROC_REORGSZ＋PROC_SYNDICTSZ
               ＋PROC_AUDTRAILSZ＋PROC_UPDDMKSZ

注※

マルチノード機能を使用する場合に加算してください。

変数の説明

PROC_CNCTSZ

データベース接続時に使用するプロセス共通メモリ

「(a)　変数PROC_CNCTSZの求め方」を参照してください。

PROC_TOTALSQLSSZ

SQL前処理時に使用するプロセス共通メモリ

「(b)　変数PROC_TOTALSQLSSZの求め方」を参照してください。

PROC_EXECSQLSZ

SQL実行時に使用するプロセス共通メモリ

「(c)　変数PROC_EXECSQLSZの求め方」を参照してください。

PROC_BUFWORK_CTL

作業表使用時に使用するプロセス共通メモリ

「(d)　変数PROC_BUFWORK_CTLの求め方」を参照してください。

PROC_DEFSQLSZ

定義系SQL実行時に使用するプロセス共通メモリ

「(e)　変数PROC_DEFSQLSZの求め方」を参照してください。

PROC_IMPORTSZ

adbimportコマンド実行時に使用するプロセス共通メモリ

「6.3.6　adbimportコマンド実行時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（adbimportコマンド実行時）」を参照して求めてください。

PROC_IDXRBLDSZ

adbidxrebuildコマンド実行時に使用するプロセス共通メモリ

「6.3.7　adbidxrebuildコマンド実行時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（adbidxrebuildコマンド実行時）」を参照して求めてください。

PROC_GETCOSTSZ

adbgetcstコマンド実行時に使用するプロセス共通メモリ

「6.3.8　adbgetcstコマンド実行時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（adbgetcstコマンド実行時）」を参照して求めてください。

PROC_DBSTATUSSZ

adbdbstatusコマンド実行時に使用するプロセス共通メモリ

「6.3.9　adbdbstatusコマンド実行時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（adbdbstatusコマンド実行時）」を参照して求めてください。

PROC_MODASZ

adbmodareaコマンド実行時に使用するプロセス共通メモリ

「6.3.12　adbmodareaコマンド実行時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（adbmodareaコマンド実行時）」を参照してください。

PROC_EXPORTSZ

adbexportコマンド実行時に使用するプロセス共通メモリ

「6.3.10　adbexportコマンド実行時のメモリ所要量の求め方」を参照して求めてください。

PROC_MERGCSZ

adbmergechunkコマンド実行時に使用するプロセス共通メモリ

「6.3.13　adbmergechunkコマンド実行時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（adbmergechunkコマンド実行時）」を参照して求めてください。

PROC_UPDSZ

データベース接続後の定義系SQLの初回実行時，および更新系SQLの初回実行時に使用するプロセス共通メモリ

「(f)　変数PROC_UPDSZの求め方」を参照して求めてください。

PROC_CHGCCMSZ

adbchgchunkcommentコマンド実行時に使用するプロセス共通メモリ

「6.3.14　adbchgchunkcommentコマンド実行時のメモリ所要量の求め方」を参照して求めてください。

PROC_CHGCSTSZ

adbchgchunkstatusコマンド実行時に使用するプロセス共通メモリ

「6.3.15　adbchgchunkstatusコマンド実行時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（adbchgchunkstatusコマンド実行時）」を参照して求めてください。

PROC_UPDLISTSZ

マルチノード機能適用時に使用するプロセス共通メモリ

「(g)　変数PROC_UPDLISTSZの求め方」を参照してください。

PROC_ARCCKSZ

adbarchivechunkコマンド実行時に使用するプロセス共通メモリ

「6.3.16　adbarchivechunkコマンド実行時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（adbarchivechunkコマンド実行時）」を参照してください。

PROC_UNARCCKSZ

adbunarchivechunkコマンド実行時に使用するプロセス共通メモリ

「6.3.17　adbunarchivechunkコマンド実行時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（adbunarchivechunkコマンド実行時）」を参照してください。

PROC_REORGSZ

adbreorgsystemdataコマンド実行時に使用するプロセス共通メモリ

「6.3.18　adbreorgsystemdataコマンド実行時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（adbreorgsystemdataコマンド実行時）」を参照してください。

PROC_SYNDICTSZ

adbsyndictコマンド実行時に使用するプロセス共通メモリ

「6.3.20　adbsyndictコマンド実行時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（adbsyndictコマンド実行時）」を参照してください。

PROC_AUDTRAILSZ

adbaudittrailコマンド実行時に使用するプロセス共通メモリ

「6.3.21　adbaudittrailコマンド実行時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（adbaudittrailコマンド実行時）」を参照してください。

PROC_UPDDMKSZ

adbupddmkコマンド実行時に使用するプロセス共通メモリ

「6.3.23　adbupddmkコマンド実行時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（adbupddmkコマンド実行時）」を参照してください。

(a)　変数PROC_CNCTSZの求め方

変数PROC_CNCTSZは，データベース接続時に加算します。次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_CNCTSZ＝
    BUFCNCT＋SQLWQUE＋SQLACTB＋RTHDLOG＋OBJDELCTL※＋2

注※

クラウドストレージ機能を使用する場合に加算してください。

変数の説明

BUFCNCT：コネクションバッファ

次に示す計算式から求めてください。

計算式（単位：キロバイト）

BUFCNCT＝
       ↑（56＋8,216×rthd_num）×max_users÷1,024↑

rthd_num

次の計算式から求めてください。

サーバ定義adb_sys_rthd_numオペランドの指定値 ＋ 1

ただし，サーバ定義に-vオプション，または-kオプションを指定したadbbuffオペランドがない場合は，変数rthd_numは0としてください。

max_users

サーバ定義adb_sys_max_usersオペランドの指定値

SQLWQUE：SQL文実行待ちキュー

次に示す計算式から求めてください。

計算式（単位：キロバイト）

SQLWQUE＝ ↑8×max_users÷1,024↑

max_users：サーバ定義adb_sys_max_usersオペランドの指定値

SQLACTB：SQL文テーブルアクセス情報

次に示す計算式から求めてください。

計算式（単位：キロバイト）

max_table_num：対象のコネクションで実行する各SQL文でアクセスする表数の最大値

RTHDLOG

処理リアルスレッド用ログ管理領域

次に示す計算式から求めてください。

計算式（単位：キロバイト）

rthd_num

サーバ定義adb_sys_rthd_numオペランドの指定値

OBJDELCTL

S3オブジェクトまたはBLOBの削除制御領域

次に示す計算式から求めてください。

計算式（単位：キロバイト）

OBJDELCTL＝↑（16×rthd_num）÷1,024↑

rthd_num

サーバ定義adb_sys_rthd_numオペランドの指定値

(b)　変数PROC_TOTALSQLSSZの求め方

変数PROC_TOTALSQLSSZは，SQLの前処理時に加算します。次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_TOTALSQLSSZ＝ PREDICSZ＋PROC_AUDINFSZ

変数の説明

PREDICSZ

次に示す値を代入してください。

値（単位：キロバイト）

PREDICSZ ＝ 19,273

PROC_AUDINFSZ

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(u)　変数AUDINFの求め方」にある変数PROC_AUDINFSZを参照してください。

(c)　変数PROC_EXECSQLSZの求め方

変数PROC_EXECSQLSZは，SQL実行時に加算します。次に示す計算式から求めてください。

計算式（単位：キロバイト）

注※

PURGE CHUNK文およびTRUNCATE TABLE文を実行する場合に加算してください。

変数の説明

TRANSNAP

トランザクション情報スナップショット

次に示す計算式から求めてください。

計算式（単位：キロバイト）

max_users

サーバ定義adb_sys_max_usersオペランドの指定値

RTHDUPDINF

処理リアルスレッド更新情報

次に示す計算式から求めてください。

計算式（単位：キロバイト）

rthd_num

サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値

なお，クライアント定義adb_sql_exe_max_rthd_numオペランドを指定した場合は，クライアント定義adb_sql_exe_max_rthd_numオペランドの指定値を代入してください。ただし，クライアント定義adb_sql_exe_max_rthd_numオペランドの指定値が，サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値よりも大きい場合は，サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値を代入してください。

詳細については，「7.2.2　性能に関するオペランド（set形式）」のadb_sql_exe_max_rthd_numオペランドを参照してください。

DBUPDINF

DBエリア，表，インデクス，およびチャンク更新情報

次に示す計算式から求めてください。なお，マルチノード機能を使用するかどうかで，計算式が異なります。

計算式：（単位：キロバイト）

archive_file_num

アーカイブ状態のチャンクに対応しているアーカイブファイル数

adbdbstatusコマンドで「アーカイブ状態のチャンクのサマリ情報」を出力して，「Archive_file_num」を確認してください。「Archive_file_num」については，マニュアルHADB　コマンドリファレンスのadbdbstatus（データベースの状態解析）のアーカイブ状態のチャンクのサマリ情報で出力される項目のアーカイブ状態のチャンクのサマリ情報で出力される項目の一覧を参照してください。

(d)　変数PROC_BUFWORK_CTLの求め方

変数PROC_BUFWORK_CTLは，作業表使用時に加算します。次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_BUFWORK_CTL＝ max_users＋rthd_num

変数の説明

max_users：サーバ定義adb_sys_max_usersオペランドの指定値

rthd_num：サーバ定義adb_sys_rthd_numオペランドの指定値

(e)　変数PROC_DEFSQLSZの求め方

変数PROC_DEFSQLSZは，定義系SQL実行時に加算します。次に示す値を代入してください。

なお，マルチノード機能を使用するかどうかで，代入する値が異なります。

マルチノード機能を使用しない場合に代入する値（単位：キロバイト）

PROC_DEFSQLSZ ＝ 2,237

マルチノード機能を使用する場合に代入する値（単位：キロバイト）

PROC_DEFSQLSZ ＝ 7,183

注

実表を定義した場合，または実表にインデクスを定義した場合は，プロセス共通メモリ（DBエリア情報）の所要量が増加します。「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(f)　変数DBAREAINFの求め方」を参照して，変数DBAREAINFを再度求めてください。

(f)　変数PROC_UPDSZの求め方

変数PROC_UPDSZは，データベース接続後の定義系SQLの初回実行時，および更新系SQLの初回実行時に加算します。次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_UPDSZ＝ BUFUPD×upd_users

変数の説明

upd_users

更新ページ管理用のプロセス共通メモリを取得するコネクション（APおよびコマンド）の同時実行数

BUFUPD

更新ページ管理用のプロセス共通メモリ

次に示す計算式から求めてください。

計算式（単位：キロバイト）

BUFUPD＝
    ↑（56＋BUFHIST＋BUFFLU＋BUFBLK）÷1,024↑

更新ページ管理用のプロセス共通メモリは，次に示すタイミングで確保されます。

表6‒4　メモリが確保されるタイミング

項番

実行する種別

確保の有無

1

AP実行時

adbsqlコマンド実行時

定義系SQLを実行したコネクション

更新系SQLを実行したコネクション

○※1

2

検索系SQLだけを実行したコネクション

×※2，※3

3

adbinitコマンド実行時

○

4

adbimportコマンド実行時

○

5

adbidxrebuildコマンド実行時

○

6

adbgetcstコマンド実行時

○※4

7

adbdbstatusコマンド実行時

×

8

adbstatコマンド実行時

×

9

adbmodareaコマンド実行時

○

10

adbexportコマンド実行時

×※2

11

adbmergechunkコマンド実行時

○

12

adbchgchunkcommentコマンド実行時

○※4

13

adbmodbuffコマンド実行時

×

14

adbarchivechunkコマンド実行時

○

15

adbunarchivechunkコマンド実行時

○

（凡例）

○：更新ページ管理用のプロセス共通メモリを確保します。

×：更新ページ管理用のプロセス共通メモリを確保しません。

注※1

前処理でエラーになった場合は，更新ページ管理用のプロセス共通メモリを確保しません。

注※2

作業表への書き込みのためには，更新ページ管理用のプロセス共通メモリを確保しません。

注※3

一度でも定義系SQL，または更新系SQLを実行したコネクションでは，コネクションバッファを確保したままとなります。

注※4

システム表を更新するため，更新ページ管理用のプロセス共通メモリを確保します。

BUFHIST

次に示す計算式から求めてください。

計算式（単位：バイト）

BUFHIST＝
    116×RTHNUM＋44,052＋BUFMEM（RTHNUM＋257）＋BUFMEM（RTHNUM＋4,097）

BUFMEM

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(d)　変数BUFGLOBALの求め方」の変数BUFMEMを参照してください。

BUFFLU

次に示す計算式から求めてください。

計算式（単位：バイト）

BUFFLU＝
    8×uthd_num＋96×RTHNUM＋393,312

uthd_num

サーバ定義adb_sys_uthd_numオペランドの指定値

BUFBLK

次に示す計算式から求めてください。

計算式（単位：バイト）

BUFBLK＝
    33,734,656＋1,024×BUFLOG

BUFLOG

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(d)　変数BUFGLOBALの求め方」の変数BUFLOGを参照してください。

(g)　変数PROC_UPDLISTSZの求め方

変数PROC_UPDLISTSZは，マルチノード機能適用時に加算します。次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

max_users

サーバ定義adb_sys_max_usersオペランドの指定値

(2)　リアルスレッド固有メモリの所要量の求め方（通常運用時）

通常運用時のリアルスレッド固有メモリ（RTHD_EXECSZ）の所要量は，次の計算式から求めてください。

計算式（単位：キロバイト）

RTHD_EXECSZ ＝ RTHD_CNCTSZ＋RTHD_DEFSQLSZ＋RTHD_EXESQLSZ＋RTHD_ROLLBKSZ
               ＋RTHD_DBEXTSZ＋RTHD_WORKBUF＋RTHD_EXESQLDICSZ
               ＋RTHD_COMMUSZ＋RTHD_MODASZ＋RTHD_EXPSQLTRCSZ
               ＋RTHD_AUDINFSZ＋RTHD_COLUMNIZESZ＋RTHD_UPDDMKSZ
               ＋RTHD_CHGCSTSZ＋RTHD_TOTALSQLSSZ

変数の説明

RTHD_CNCTSZ

データベース接続時に使用するリアルスレッド固有メモリ

「(a)　変数RTHD_CNCTSZの求め方」を参照して求めてください。

RTHD_DEFSQLSZ

定義系SQLの実行時に使用するリアルスレッド固有メモリ

「(b)　変数RTHD_DEFSQLSZの求め方」を参照して求めてください。

RTHD_EXESQLSZ

操作系SQLの実行時に使用するリアルスレッド固有メモリ

「(c)　変数RTHD_EXESQLSZの求め方」を参照して求めてください。

RTHD_ROLLBKSZ

ロールバック処理時，またはHADBサーバの再開始時に使用するリアルスレッド固有メモリ

「(d)　変数RTHD_ROLLBKSZの求め方」を参照して求めてください。

RTHD_DBEXTSZ

DBエリア拡張時に使用するリアルスレッド固有メモリ

「(e)　変数RTHD_DBEXTSZの求め方」を参照して求めてください。

RTHD_WORKBUF

作業表使用時に使用するリアルスレッド固有メモリ

「(f)　変数RTHD_WORKBUFの求め方」を参照して求めてください。

RTHD_EXESQLDICSZ

操作系SQLの前処理時に使用するリアルスレッド固有メモリ

「(g)　変数RTHD_EXESQLDICSZの求め方」を参照して求めてください。

RTHD_COMMUSZ

通信処理時に使用するリアルスレッド固有メモリ

「(h)　変数RTHD_COMMUSZの求め方」を参照して求めてください。

RTHD_MODASZ

adbmodareaコマンド実行時に使用するリアルスレッド固有メモリ

「6.3.12　adbmodareaコマンド実行時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（adbmodareaコマンド実行時）」を参照して求めてください。

RTHD_EXPSQLTRCSZ

SQLトレースバッファの拡張時に使用するリアルスレッド固有メモリ

「(i)　変数RTHD_EXPSQLTRCSZの求め方」を参照して求めてください。

RTHD_AUDINFSZ

監査証跡機能の有効時に使用するリアルスレッド固有メモリ

「(j)　変数RTHD_AUDINFSZの求め方」を参照して求めてください。

RTHD_COLUMNIZESZ

更新行のカラム化機能の有効時に使用するリアルスレッド固有メモリ

「(k)　変数RTHD_COLUMNIZESZの求め方」を参照して求めてください。

RTHD_UPDDMKSZ

adbupddmkコマンド実行時に使用するリアルスレッド固有メモリ

「6.3.23　adbupddmkコマンド実行時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（adbupddmkコマンド実行時）」を参照して求めてください。

RTHD_CHGCSTSZ

adbchgchunkstatusコマンド実行時に使用するリアルスレッド固有メモリ

「6.3.15　adbchgchunkstatusコマンド実行時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（adbchgchunkstatusコマンド実行時）」を参照して求めてください。

RTHD_TOTALSQLSSZ

SQL前処理時に使用するリアルスレッド固有メモリ

「(l)　変数RTHD_TOTALSQLSSZの求め方」を参照して求めてください。

(a)　変数RTHD_CNCTSZの求め方

変数RTHD_CNCTSZは，データベース接続時に加算します。次に示す計算式から求めてください。

計算式（単位：キロバイト）

RTHD_CNCTSZ＝TRANSNAP＋SQLTRC＋OBJDELLIST※

注※

クラウドストレージ機能を使用する場合に加算してください。

変数の説明

TRANSNAP

「(1)　プロセス共通メモリの所要量の求め方（通常運用時）」の「(c)　変数PROC_EXECSQLSZの求め方」の変数TRANSNAPを参照してください。

SQLTRC

SQLトレース機能の管理情報

65,536キロバイトを代入してください。

OBJDELLIST

S3オブジェクトまたはBLOBの削除リスト

1,524キロバイトを代入してください。

(b)　変数RTHD_DEFSQLSZの求め方

変数RTHD_DEFSQLSZは，定義系SQL実行時に加算します。次に示す計算式から求めてください。

計算式（単位：キロバイト）

RTHD_DEFSQLSZ＝
      54＋SZ_ALTER_SERVER＋SZ_ALTER_TABLE＋SZ_ALTER_VIEW
        ＋SZ_CREATE_FOREIGN_TABLE＋SZ_CREATE_INDEX＋SZ_CREATE_SERVER
        ＋SZ_CREATE_TABLE＋SZ_CREATE_VIEW＋SZ_DROP_FOREIGN_TABLE
        ＋SZ_DROP_INDEX＋SZ_DROP_SERVER＋SZ_DROP_TABLE
        ＋SZ_DROP_VIEW＋SZ_GRANT＋SZ_REVOKE

変数の説明

SZ_ALTER_SERVER

外部サーバの定義を変更するときに，次に示す値を代入してください。

値（単位：キロバイト）

SZ_ALTER_SERVER = 5

SZ_ALTER_TABLE

実表の定義を変更するときに，次に示す値を代入してください。

値（単位：キロバイト）

SZ_ALTER_TABLE = 869

SZ_ALTER_VIEW

ビュー表の定義を変更するときに，次に示す値を代入してください。

値（単位：キロバイト）

SZ_CREATE_FOREIGN_TABLE

外部表を定義するときに，次に示す値を代入してください。

値（単位：キロバイト）

SZ_CREATE_FOREIGN_TABLE = 57

SZ_CREATE_INDEX

インデクスを定義するときに，次に示す値を代入してください。

また，CREATE TABLE文で一意性制約定義，またはチャンクアーカイブ指定を指定するときにも，次に示す値を代入してください。

値（単位：キロバイト）

SZ_CREATE_SERVER

外部サーバを定義するときに，次に示す値を代入してください。

値（単位：キロバイト）

SZ_CREATE_SERVER = 1

SZ_CREATE_TABLE

実表を定義するときに，次に示す値を代入してください。

値（単位：キロバイト）

SZ_CREATE_TABLE = 1,402

SZ_CREATE_VIEW

ビュー表を定義するときに，次に示す値を代入してください。

値（単位：キロバイト）

SZ_DROP_FOREIGN_TABLE

外部表を削除するときに，次に示す値を代入してください。

また，DROP USER文，DROP SCHEMA文，またはREVOKE文を実行した場合に，処理の延長で外部表が削除されるときにも，次に示す値を代入してください。

値（単位：キロバイト）

SZ_DROP_FOREIGN_TABLE = 211

SZ_DROP_INDEX

インデクスを削除するときに，次に示す値を代入してください。

また，DROP USER文，DROP SCHEMA文，またはDROP TABLE文を実行した場合に，処理の延長でインデクスが削除されるときにも，次に示す値を代入してください。

値（単位：キロバイト）

SZ_DROP_SERVER

外部サーバを削除するときに，次に示す値を代入してください。

また，DROP USER文，またはREVOKE文を実行した場合に，処理の延長で外部サーバが削除されるときにも，次に示す値を代入してください。

値（単位：キロバイト）

SZ_DROP_SERVER = 5

SZ_DROP_TABLE

実表を削除するときに，次に示す値を代入してください。

また，DROP USER文またはDROP SCHEMA文を実行した場合に，処理の延長で実表が削除されるときにも，次に示す値を代入してください。

値（単位：キロバイト）

SZ_DROP_VIEW

ビュー表を削除するときに，次に示す値を代入してください。

また，DROP USER文，DROP SCHEMA文またはDROP TABLE文を実行した場合に，処理の延長でビュー表が削除されるときにも，次に示す値を代入してください。

値（単位：キロバイト）

SZ_GRANT

権限を付与するときに，次に示す値を代入してください。

値（単位：キロバイト）

SZ_REVOKE

権限を取り消すときに，次に示す値を代入してください。

また，DROP USER文，DROP SCHEMA文またはDROP TABLE文を実行した場合に，処理の延長で権限が取り消されるときにも，次に示す値を代入してください。

値（単位：キロバイト）

(c)　変数RTHD_EXESQLSZの求め方

変数RTHD_EXESQLSZは，操作系SQL実行時に加算します。次に示す計算式から求めてください。

計算式（単位：キロバイト）

注※

アーカイブマルチチャンク表に対してPURGE CHUNK文およびTRUNCATE TABLE文を実行する場合に加算してください。

変数の説明

max_sql（）：

実行する各SQLについて括弧内の変数の計算結果を求めて，それらの最大値を代入します。

max_sql_concurrent_exec_num：

1トランザクション内で同時に実行するSQLの数の最大値

SQL_CNCT_SIZE：操作系SQLの管理領域

次に示す計算式から求めてください。

計算式（単位：キロバイト）

SQL_CNCT_SIZE＝ STATEMENT_SIZE＋CNCT_THD_SIZE＋0.3

STATEMENT_SIZE：文ハンドル管理情報

次に示す計算式から求めてください。

計算式（単位：キロバイト）

注※

SQLパラレル実行機能を使用する場合に加算してください。

PREPARE_INFO_SIZE：SQL文の前処理情報

次に示す計算式から求めてください。

計算式（単位：バイト）

PREPARE_INFO_SIZE＝ col_num×214＋param_num×80＋idx_num×512

col_num：SQLに指定した選択式の数

param_num：SQLに指定した？パラメタの数

idx_num：SQLで使用するインデクス数

PARAM_INFO_SIZE：パラメタ格納領域

次に示す計算式から求めてください。

計算式（単位：バイト）

param_num：SQLに指定した？パラメタの数

param_size（i）：各？パラメタの最大データ長

APATHVIEW：アクセスパスを表示する際に作成されるアクセスパス情報管理領域

「(l)　変数RTHD_TOTALSQLSSZの求め方」にある変数APATHVIEWを参照してください。

PARALLEL_INFO_SIZE：SQLパラレル実行機能情報

SQLパラレル実行機能を使用する場合に，次に示す計算式から求めてください。

計算式（単位：バイト）

PARALLEL_INFO_SIZE＝
        2,212＋sql_length＋128×（MAX_NODE_NUM－1）
             ＋48×MAX_NODE_NUM×（sql_rthd_num＋1）

sql_length：SQL文長

sql_rthd_num：最大SQL処理リアルスレッド数（クライアント定義のadb_sql_exe_max_rthd_numオペランドの指定値）

MAX_NODE_NUM：SQL文を処理するノード数の最大値

次に示す計算式から求めてください。

MAX_NODE_NUM＝ MIN（db_area_file_num ，multi_node_num＋worker_node_num）

db_area_file_num：処理対象表が格納されているDBエリアファイルの数

multi_node_num：サーバ定義adb_sys_multi_node_infoオペランドに指定されたホスト名の数

worker_node_num：サーバ定義adb_sys_multi_max_worker_nodesオペランドの指定値

CNCT_THD_SIZE：SQL実行管理領域

次に示す計算式から求めてください。

計算式（単位：キロバイト）

重要

■ビュー表または問合せ名を指定する場合の留意事項

SQL文中にビュー表または問合せ名を指定する場合は，それぞれに対応する内部的な導出表を適用したものとして見積もりを行ってください。ただし，再帰的問合せ内にある，対象となる再帰的問合せを参照している再帰的問合せ名については，その再帰的問合せの結果が格納される作業表と仮定して見積もりを行ってください。

（例）

・ビュー表を定義するSQL文

CREATE VIEW "V1" AS SELECT * FROM "T1","T2" WHERE "T1"."C1"="T2"."C2"

・実行するSQL文

SELECT * FROM "V1","T3"
           WHERE "V1"."C1"="T3"."C3"

・見積もり対象とするSQL文

SELECT * FROM (SELECT * FROM "T1","T2" WHERE "T1"."C1"="T2"."C2"),"T3"
           WHERE "V1"."C1"="T3"."C3"

■アーカイブマルチチャンク表を指定する場合の留意事項

SQL文中にアーカイブマルチチャンク表を指定する場合は，導出表に等価変換されたものとして見積もりを行ってください。アーカイブマルチチャンク表の等価変換については，マニュアルHADB　AP開発ガイドのアーカイブマルチチャンク表を検索するSQL文の等価変換を参照してください。

tbl_num：指定した表数

FULL OUTER JOINを指定した場合は，FULL OUTER JOINの数を加算してください。

sql_rthd_num：

サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値

setop_num：SQL文中に指定した集合演算子の数

FULL OUTER JOINを指定した場合は，FULL OUTER JOINの数を加算してください。

query_num：問合せの数

SQL文中に指定したFROM句の数から求めてください。

また，FULL OUTER JOINを指定した場合は，FULL OUTER JOINの数×2で求めた値を加算してください。

window_num：SQL文中に指定したウィンドウ関数の数

1つの問合せ指定中に，引数の異なるDISTINCT集合関数を複数指定している場合は，その指定数－1で求めた値も加算してください。

drvtbl_num：SQL文中に指定した導出表の数

FULL OUTER JOINを指定した場合は，FULL OUTER JOINの数を加算してください。

tblfunc_num：

表関数導出表の個数

Σ（HASHGRP_SIZE）：

SQL文に指定した問合せ単位にHASHGRP_SIZEを計算した合計値（単位：バイト）

Σ（WRK_TABLE_OPE_SIZE）：

作成される作業表単位にWRK_TABLE_OPE_SIZEを計算した合計値（単位：バイト）

次に示すことについては，「6.25　作業表に関する見積もり」およびマニュアルHADB　AP開発ガイドのAPの性能向上に関する設計の作業表が作成されるSQLを実行する際の考慮点を参照してください。

SQL文の実行時に作業表が作成されるかどうか

作成される作業表の個数および構成列

Σ（LMTWRK_SIZE）：

作成される作業表単位にLMTWRK_SIZEを計算した合計値（単位：バイト）

次に示すことについては，「6.25　作業表に関する見積もり」およびマニュアルHADB　AP開発ガイドのAPの性能向上に関する設計の作業表が作成されるSQLを実行する際の考慮点を参照してください。

LIMIT句を指定したSQL文が作業表を作成するかどうか

作成される作業表の個数

なお，LIMIT句で集合演算の結果の取得行数の最大値を設定する場合は，集合演算を構成する問合せ指定ごとに，LIMIT句の指定値が適用されます。

MAX（CSVREAD_WORK_SIZE）：

ADB_CSVREAD関数を指定した表関数導出表ごとに変数CSVREAD_WORK_SIZEをバイト単位で求めてください。その中で，最も大きい値を代入してください。

tvc_num：

SQL文中に指定した表値構成子の数

in_query_num：

次に示す条件を満たす述語の数の合計値

IN述語の場合

右側に表副問合せを指定し，左側の値式に指定した列が検索に使用するB-treeインデクスの先頭構成列

限定述語の場合

＝ANYまたは＝SOMEで左側の値式に指定した列が検索に使用するB-treeインデクスの先頭構成列

RESULT_WORK_SIZE：SQL実行結果格納領域

次に示す計算式から求めてください。データ長の計算は，「表6‒10　SQL結果格納領域中の各データのデータ長」を参照してください。

計算式（単位：バイト）

RESULT_WORK_SIZE＝
    ↑（40＋sum_col_size＋row_size
    ＋2×（sum_grp_size＋sum_window_spec_size）
    ＋3×（sum_set_func_size＋sum_dist_col_size＋sum_window_func_size）
    ＋8×（all_col_num＋row_num＋2×（grp_col_num＋window_spec_col_num）
    ＋3×（set_func_num＋dist_col_num＋window_func_num））
    ＋sum_inpred_size＋sum_reg_size
    ＋8×group_query_num＋12×list_num
    ＋16×join_num＋supquery_num
    ＋sum_setop_size×3＋full_join_drvc_size×3
    ＋（func_filepath_size＋4）×（csvread_num＋auditread_num）)÷16↑×16

sum_col_size

指定したすべての列のデータ長の合計値

row_size

ROWでデータを取得する表の行長の合計値

sum_grp_size

グループ化列のデータ長の合計値

sum_window_spec_size

ウィンドウ指定に指定した列のデータ長の合計値

sum_set_func_size

集合関数の結果のデータ長の合計値

sum_dist_col_size

DISTINCT集合関数の引数に指定した列のデータ長の合計値

sum_window_func_size

ウィンドウ関数の結果のデータ長の合計値

all_col_num

指定したすべての列の数

row_num

指定したROWの数

grp_col_num

GROUP BY句に指定したグループ化列の数

window_spec_col_num

ウィンドウ指定に指定した列の数

set_func_num

集合関数の数

dist_col_num

DISTINCT集合関数の引数に指定した列の数

window_func_num

ウィンドウ関数の数

sum_inpred_size

指定したすべてのIN述語の結果作成用領域（29＋8×IN述語のINの右側に指定した値式の数）の合計値。ただし，IN述語を指定していない場合は0

sum_reg_size

指定したすべての日時情報取得関数およびユーザ情報取得関数のデータ長の合計値

group_query_num

GROUP BY句を指定した問合せ指定の数

list_num

作業表の個数

次の個数を合計したものを代入してください。

・ORDER BY句を指定した場合は＋1

・GROUP BY句を指定した問合せ指定の数

・SELECT DISTINCTを指定した問合せ指定の数

・DISTINCT集合関数の指定数

・逆分布関数の指定数

・ウィンドウ関数の指定数

・FROM句に複数の表参照を指定した問合せ指定の数

・導出表の数

・ビュー表の指定数

・WITH句の数

・結合表の指定数（FULL OUTER JOINの場合は2とカウントする）

・副問合せの指定数

・集合演算の指定数＋1

・LISTAGG集合関数でALL（省略値）を指定した数

・LISTAGG集合関数でDISTINCTを指定した数×2

・ARRAY_AGG集合関数の指定数

join_num

結合表の数

FULL OUTER JOINの場合は，1つ当たり2とカウントしてください。

supquery_num

副問合せの数

sum_setop_size

各集合演算について，集合演算の結果の選択式のデータ長を合計してください。そして，それらを合計した値を代入してください。

full_join_drvc_size

FULL OUTER JOINを指定した各問合せ指定について，選択式のデータ長を求めてください。そして，それらを合計した値を代入してください。

func_filepath_size

ADB_CSVREAD関数およびADB_AUDITREAD関数に指定するファイルパス名の最大長

csvread_num

ADB_CSVREAD関数の数

auditread_num

ADB_AUDITREAD関数の数

OPE_WORK_SIZE：演算管理領域

次に示す計算式から求めてください。データ長の計算は，「表6‒9　一時領域上に格納する各データのデータ長」を参照してください。

ただし，次に示すどの項目も指定していない場合は0になります。

四則演算

論理演算

CASE式

スカラ関数

ANYを指定した配列要素参照

行値構成子を指定したIN述語

計算式（単位：バイト）

arith_num

各値式中の四則演算子（＋，−，＊または／）の数の最大値

concat_num

各値式中の連結演算子（＋または||）およびスカラ関数CONCATの数の合計値の中で最大の値

logical_num

探索条件中の論理演算子の数の最大値

case_size

CASE式の結果長の合計値（単位：バイト）

sclfunc_size

スカラ関数の結果長の合計値（単位：バイト）

array_any_num

ANYを指定した配列要素参照の数

array_any_id_num

ANYを指定した配列要素参照で，異なる識別番号を指定した配列要素参照の数（同じ識別番号を指定した配列要素参照は全部で1と数える）と，識別番号を省略した配列要素参照の数の合計

array_any_max_cardinality

ANYを指定した配列要素参照に指定した配列データの最大要素数

該当する配列データが複数ある場合は，その中で最も大きい最大要素数で計算してください。

inpred_rvc_elm_num

IN述語に指定した行値構成子の行値構成子要素数の最大値

HASHGRP_SIZE：ハッシュグループ化作業領域

次に示す計算式から求めてください。ただし，サーバ定義のadb_sql_exe_hashgrp_area_sizeオペランドに0を指定している場合，またはSQLにGROUP BY句と集合関数が指定されていない場合は0になります。データ長の計算は，「表6‒10　SQL結果格納領域中の各データのデータ長」を参照してください。

計算式（単位：バイト）

HASHGRP_SIZE＝
  160＋24×（grp_col_num＋set_func_num）＋sum_grp_size
  ＋sum_set_func_size＋hashgrp_byte
  ＋↓（hashgrp_byte×4−MIN（8,192×128，
    ↓（hashgrp_byte×10）÷25↓））
  ÷（↑（16＋↑（sum_grp_size）÷4↑×4
  ＋sum_set_func_size）÷8↑×8）↓

grp_col_num

GROUP BY句に指定したグループ化列の数

set_func_num

集合関数の数

sum_grp_size

グループ化列のデータ長の合計値

sum_set_func_size

集合関数の結果のデータ長の合計値

hashgrp_byte

ハッシュグループ化領域サイズの指定値

次に示す計算式から求めてください。

サーバ定義adb_sql_exe_hashgrp_area_sizeオペランドの指定値×1,024

HASHTBL_CNCT_SIZE：ハッシュテーブルを使用した検索時の管理領域

SQL文中に，次に示すどれかを含む場合は求めてください。すべて含まない場合は，0になります。また，最大SQL処理リアルスレッド数，またはハッシュテーブル領域サイズが0の場合も，0になります。

複数の表を＝で結合する問合せ指定

副問合せ

GROUP BY句

DISTINCT集合関数

SELECT DISTINCT

UNIONまたはUNION DISTINCT

計算式（単位：バイト）

sql_rthd_num

サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値

hashtbl_row_num

ハッシュテーブルの最大行長

「6.25.3　ハッシュテーブルを使用した検索時に作成される作業表の数」を参照してください。

hashtbl_col_num

SQL文中の指定内容に従って求めた値のうち，最大値を代入

■複数の表を＝で結合する問合せ指定

ハッシュテーブル列数の最大のものになります。問合せ指定ごとのハッシュテーブルの列数を求める場合，＝で結合している各表に対して選択式および探索条件中に指定したすべての列の数を求めてください。そのあとで求めた表ごとの値のうち，最小値を除いた合計値を求めてください。

■副問合せ

副問合せごとに，次に示す値の合計を求めてください。その中で最大の値が副問合せの値になります。

・副問合せの選択式に指定した列数

・副問合せに指定した集合関数の数

・探索条件中の外への参照列を含む述語に指定した列の数

■GROUP BY句，およびDISTINCTを指定した集合関数

GROUP BY句，およびDISTINCT集合関数を指定した問合せごとに次に示す値の合計を求めてください。その中で最大の値がGROUP BY句およびDISTINCTを指定した集合関数の値になります。

・GROUP BY句に指定したグループ化列の数

・集合関数の数

■SELECT DISTINCT

SELECT DISTINCTを指定した問合せ指定ごとに，次に示す値を求めてください。その中で最大の値がSELECT DISTINCTの値になります。

・選択式に指定した列数

■UNIONまたはUNION DISTINCT

UNIONまたはUNION DISTINCTを指定した問合せ式本体ごとに，次に示す値を求めてください。その中で最大の値が，UNIONまたはUNION DISTINCTの値になります。

・問合せ式本体の結果導出される表の列の列数

bucket_num

ハッシュテーブルを使用した検索時に作成される作業表の数

「6.25.3　ハッシュテーブルを使用した検索時に作成される作業表の数」を参照してください。

hashtbl_num

ハッシュテーブル数

「6.25.3　ハッシュテーブルを使用した検索時に作成される作業表の数」を参照してください。

HASHFLT_CNCT_SIZE：ハッシュフィルタ管理領域

次のどちらかの指定がSQL文中にある場合に求めてください。どちらの指定もない場合は，0になります。また，ハッシュフィルタ領域サイズ（サーバ定義のadb_sql_exe_hashflt_area_sizeオペランドの指定値）が0の場合も，0になります。

複数の表を＝で結合する問合せ指定

副問合せ

計算式（単位：バイト）

HASHFLT_CNCT_SIZE ＝ 256＋256×hashflt_num

hashflt_num

SQL文中のハッシュフィルタの総数

次のすべての値の合計値を求めてください。

・複数の表を＝で結合する問合せ指定の，＝指定の結合条件の数

・外への参照列を含まない副問合せの数

・外への参照列を含む副問合せの，外への参照列を含む＝条件の数

HASHRNG_CNCT_SIZE：ハッシュ検索でのレンジインデクスの条件評価の管理領域

次のどちらかの指定がSQL文中にある場合に求めてください。どちらの指定もない場合は，0になります。

複数の表を＝で結合する問合せ指定

副問合せ

計算式（単位：バイト）

HASHRNG_CNCT_SIZE ＝ 64＋136×hash_retrieval_rngidx_num＋56×hash_cond_rngidx_num

hash_retrieval_rngidx_num

SQL文中のハッシュ検索のうち，レンジインデクスを使用するハッシュ検索の総数

次のすべての値の合計値を求めてください。この合計数が0の場合，HASHRNG_CNCT_SIZEは0になります。

複数の表を＝で結合する問合せ指定のうち，レンジインデクスの構成列を＝に指定している各問合せ指定について，次の計算式で求めた値

＝で結合する表の総数 － ＝で結合する問合せ指定の総数

レンジインデクスの構成列を左側に指定している限定述語の数

レンジインデクスの構成列を左側に指定し，右側に表副問合せを指定しているIN述語の数

上記2つの副問合せ以外で，次のすべての条件を満たす副問合せの数

・探索条件中に＝で外への参照列を指定している

・指定した外への参照列がレンジインデクスの構成列である

hash_cond_rngidx_num

SQL文中のハッシュ検索のうち，レンジインデクスを使用する条件の総数

次のすべての値の合計値を求めてください。

複数の表を＝で結合する問合せ指定のうち，レンジインデクスの構成列を指定している＝結合条件の数

レンジインデクスの構成列を左側に指定している限定述語の数

レンジインデクスの構成列を左側に指定し，右側に表副問合せを指定しているIN述語の数

上記2つの副問合せ以外で，次のすべての条件を満たす＝条件の数

・探索条件中に＝で外への参照列を指定している

・指定した外への参照列がレンジインデクスの構成列である

GRSETS_CNCT_SIZE：DISTINCT集合関数の作業領域

SQL文中に，引数の異なるDISTINCT集合関数を複数指定した問合せ指定を含む場合に求めてください。引数の異なるDISTINCT集合関数を複数指定した問合せ指定を含まない場合は，0になります。

計算式（単位：バイト）

GRSETS_CNCT_SIZE ＝
 （1,640＋8,328×dset_func_num＋sql_rthd_num×（664＋72×dset_func_num）
   ）×dset_query_num

dset_func_num

引数の異なるDISTINCT集合関数の数

sql_rthd_num

最大SQL処理リアルスレッド数（サーバ定義のadb_sql_exe_max_rthd_numオペランドの指定値）

dset_query_num

引数の異なるDISTINCT集合関数を指定した問合せ指定の数

HASHLOCAL_CNCT_SIZE：部分集計管理領域

次に示すどれかの指定がSQL文中にある場合に求めてください。指定がない場合は，0になります。

GROUP BY句

DISTINCT集合関数

SELECT DISTINCT

UNIONまたはUNION DISTINCT

計算式（単位：バイト）

HASHLOCAL_CNCT_SIZE＝
          128＋8×hashtbl_num＋192×hashtbl_aggr_num＋64×hashtbl_aggr_col_num

hashtbl_num

ハッシュテーブル数

「6.25.3　ハッシュテーブルを使用した検索時に作成される作業表の数」を参照してください。

hashtbl_aggr_num

SQL処理リアルスレッドごとの部分集計を適用するハッシュ検索の総数

次に示す数の合計を求めてください。

GROUP BY句の指定数

DISTINCT集合関数を指定した問合せ指定の数

SELECT DISTINCTの指定数

UNION，またはUNION DISTINCTの指定数

hashtbl_aggr_col_num

SQL処理リアルスレッドごとの部分集計を適用するハッシュ検索のうち，集計に関係する列の総数

次に示す数の合計を求めてください。

GROUP BY句の指定を含む場合

グループ化列の数，および集合関数の数の合計数

DISTINCT集合関数を指定した問合せ指定を含む場合

グループ化列の数，引数の異なるDISTINCT集合関数の数，およびDISTINCT集合関数ではない集合関数の数の合計数

SELECT DISTINCTの指定を含む場合

選択式に指定した列数

UNION，またはUNION DISTINCTを指定した問合せ式本体を含む場合

問合せ式本体によって導出される表の列の数

DHJOIN_CNCT_SIZE：ハッシュジョイン分割実行管理領域

SQL文中に，次のすべての条件に該当する問合せ指定を含む場合に求めてください。条件に該当する問合せ指定を含まない場合は，0になります。

コンマ結合，INNER JOIN，またはCROSS JOINを使用して，複数の表を＝で結合する問合せ指定である

1.の条件の表に，マルチチャンク表が2つ以上含まれている

2.の条件のマルチチャンク表を結合する＝の1つに，レンジインデクスを定義しているマルチチャンク表の列が指定されている

計算式（単位：バイト）

DHJOIN_CNCT_SIZE＝
       128＋dhjoin_tbl_num×64＋（dhjoin_tbl_num－dhjoin_query_num）×832

dhjoin_tbl_num

コンマ結合，INNER JOIN，またはCROSS JOINを使用して，＝で結合する表の数

dhjoin_query_num

コンマ結合，INNER JOIN，またはCROSS JOINを使用して，＝で結合する表が指定されている問合せ指定の数

IN_PRD_SIZE：IN述語，限定述語実行管理領域

次に示す計算式から求めてください。ただし，IN述語，限定述語を指定していない場合は0になります。なお，変数in_pred_numが0の場合もIN_PRD_SIZEは0になります。

計算式（単位：バイト）

IN_PRD_SIZE＝ 48＋in_pred_num×（96＋sql_rthd_num×48）

sql_rthd_num：サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値

in_pred_num：次に示す条件を満たす述語の数の合計値

IN述語の場合

左側の値式に指定した列が検索に使用するB-treeインデクスの先頭構成列

限定述語の場合

＝ANYまたは＝SOMEで左側の値式に指定した列が検索に使用するB-treeインデクスの先頭構成列

LIKE_PRD_SIZE：LIKE述語実行管理領域

次に示す計算式から求めてください。ただし，LIKE述語を指定していない場合は0になります。また，すべてのLIKE述語の一致値に指定した列が検索に使用するB-treeインデクスの構成列に含まれない場合は0になります。データ長の計算は，「表6‒11　各データ型のデータ長の一覧」を参照してください。

計算式（単位：バイト）

LIKE_PRD_SIZE＝ 16＋like_param_num×（64＋like_param_size×2）

like_param_num

パターン文字列に？パラメタを指定したLIKE述語の数。ただし，一致値に指定した列が検索に使用するB-treeインデクスの構成列に含まれないLIKE述語は除きます。

like_param_size

パターン文字列に指定した？パラメタが仮定するデータの長さの最大値。ただし，一致値に指定した列が検索に使用するB-treeインデクスの構成列に含まれないLIKE述語の分は除きます。

REG_SIZE：日時情報取得関数およびユーザ情報取得関数の管理領域

次に示す計算式から求めてください。ただし，日時情報取得関数およびユーザ情報取得関数を指定していない場合は0になります。データ長の計算は，「表6‒11　各データ型のデータ長の一覧」を参照してください。

計算式（単位：バイト）

REG_SIZE＝ 24×date_spec＋32×time_spec＋32×timestmp_spec＋120×user_spec＋24

date_spec

CURRENT_DATEを指定した場合は1，指定していない場合は0

time_spec

CURRENT_TIMEを指定した場合は1，指定していない場合は0

timestmp_spec

CURRENT_TIMESTAMPを指定した場合は1，指定していない場合は0

user_spec

CURRENT_USERを指定した場合は1，指定していない場合は0

WRK_TABLE_OPE_SIZE

作業表の処理領域

次に示す計算式から求めてください。ただし，作業表が作成されない場合は0になります。

計算式（単位：バイト）

arrray_col_num

配列型の列の列数

作業表の構成列に配列型の列が存在しない場合は0を代入してください。

clt_wrk_page_num

クライアント定義adb_dbbuff_wrktbl_clt_blk_numオペランドの指定値（ただし，adbexportコマンド実行時はエクスポートオプションadb_export_wrktbl_blk_numの指定値）

LMTWRK_SIZE

作業表の管理領域

ただし，LIMIT句を指定していない場合，または作業表が作成されない場合は0になります。

計算式（単位：バイト）

LMTWRK_SIZE＝
  ↑（96×↑（offset_num＋limit_num）÷↓（wrk_page_size−64）÷ROWSZ↓↑
  ＋（4＋ROWSZ）×（offset_num＋limit_num））÷1,024↑

offset_num

LIMIT句のオフセット行数の指定値

limit_num

LIMIT句のリミット行数の指定値

wrk_page_size

作業表用DBエリアのページサイズ（単位：バイト）

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」にある「表6‒3　DBエリアのページサイズ」を参照してください。

ROWSZ

作業表の行長（単位：バイト）

作業表の行長については，「5.9.2　作業表を格納するために必要な基本行用ページ数の求め方」の変数ROWSZの計算式を基に求めてください。ただし，変数col_size（i）を求める場合で，かつデータ型が可変長の列のときは，d（実際のデータ長）にn（定義長）を代入してください。

COR_QUERY_SIZE

外への参照列を含む副問合せの作業領域

16,777,216バイトを代入してください。ただし，外への参照列を含む副問合せを指定していない場合は0を代入してください。

TXT_WORK_SIZE

テキストインデクスの作業領域

次に示す計算式から求めてください。ただし，テキストインデクスを定義していない場合，またはテキストインデクスを使用しない場合は0を代入してください。

計算式（単位：バイト）

scan_str_num

テキストインデクスを使用するLIKE述語のパターン文字列に指定した文字列の文字数

CSVREAD_WORK_SIZE

ADB_CSVREAD関数の検索作業領域

次に示す計算式から求めてください。ただし，ADB_CSVREAD関数を使用しない場合は0を代入してください。

計算式（単位：バイト）

decomp_areasize

伸長処理領域サイズ（単位：バイト）

入力データファイルの伸長処理に使用する領域サイズです。ADB_CSVREAD関数の圧縮形式オプションCOMPRESSION_FORMATの指定値によって，代入する値が異なります。

伸長処理領域サイズについては，次に示す表から求めてください。

表6‒5　伸長処理領域サイズの一覧

項番

圧縮形式オプションCOMPRESSION_FORMATの指定値

伸長処理領域サイズ（単位：バイト）

1

GZIP

112

2

NONE

40

col_num

入力データファイル中から取り出すフィールドデータの数

temp_coldata_areasize（i）

一時格納領域サイズ（単位：バイト）

入力データファイル中から取り出したi番目のフィールドデータを一時的に格納する領域サイズです。iは表関数導出表の列名リストの順番に対応します。

一時格納領域サイズについては，次に示す表から求めてください。

表6‒6　各データ型の一時格納領域サイズの一覧

項番

分類

データ型

一時格納領域サイズ（単位：バイト）

1

数データ

BIGINT

24

2

INTEGER※1

16

3

SMALLINT※2

8

4

DECIMAL

48

5

NUMERIC

6

DOUBLE PRECISION

512

7

FLOAT

8

REAL

9

文字データ

CHAR

（（2＋定義長×2＋7）÷8）×8

10

VARCHAR

（（2＋定義長×2＋7）÷8）×8

11

日時データ

DATE

16

12

TIME

24

13

TIMESTAMP WITHOUT TIME ZONE

40

14

TIMESTAMP WITH TIME ZONE

40

15

バイナリデータ

BINARY

入力データファイル中の記述形式が16進の場合

（（2＋定義長×2＋7）÷8）×8

16

入力データファイル中の記述形式が2進の場合

（（2＋定義長×8＋7）÷8）×8

17

VARBINARY

入力データファイル中の記述形式が16進の場合

（（2＋定義長×2＋7）÷8）×8

18

入力データファイル中の記述形式が2進の場合

（（2＋定義長×8＋7）÷8）×8

19

論理データ

BOOLEAN

8

20

UUIDデータ

UUID

40

注※1

整数データ型のデータ形式がレガシー形式の場合，一時格納領域サイズは24バイトとして計算してください。

注※2

整数データ型のデータ形式がレガシー形式の場合，一時格納領域サイズは16バイトとして計算してください。

REGEXP_WORK_SIZE

正規表現の評価用作業領域（単位：バイト）

LIKE_REGEX述語を指定していない場合は，0を代入してください。

変数REGEXP_WORK_SIZEは，LIKE_REGEX述語のパターン文字列に指定された正規表現内に，0文字の繰り返しが存在するかどうかで計算式が異なります。

0文字の繰り返しとは，メタ文字や繰り返し因子の組み合わせによって，該当する文字が0文字になる可能性がある記述を指します。例えば，「*」，「?」，「{0,}」，および「{0,x}」（x：1以上の整数）をネストした記述です。

0文字の繰り返しになる記述例

(a*)+，(c{0,2})*，(e?){3}

変数REGEXP_WORK_SIZEを求める計算式を，それぞれ次に示します。

計算式（正規表現内に0文字の繰り返しが存在しない場合）

計算式（正規表現内に0文字の繰り返しが存在する場合）

重要

正規表現内に0文字の繰り返しが存在する場合，大量のメモリを使用するおそれがあります。ただし，0文字となる可能性がある場合でも，量指定子や繰り返し因子をネストして記述しなければ，大量のメモリを使用しません。

push_instr_num

次に示す計算式で求めてください。

変数C（繰り返し因子に指定された繰り返しの数）の求め方を，次の表に示します。

表6‒7　繰り返し因子に指定された繰り返しの数の求め方

項番

繰り返し因子に指定された内容

変数Cに代入する値

例

1

上限値と下限値の両方が指定されている

「上限値−下限値」で求めた値

「{10,20}」と指定されている場合は，10を代入します。

2

次に示す条件を満たしている

下限値だけが指定されている

下限値の後ろにコンマが存在しない

下限値

「{10}」と指定されている場合は，10を代入します。

3

次に示す条件を満たしている

下限値だけが指定されている

下限値の後ろにコンマが存在する

「256−下限値」で求めた値

「{10,}」と指定されている場合は，246を代入します。

scan_str_num

パターン文字列に指定した文字列の文字数

ostrrep_instr_num

0文字の繰り返しの合計値

正規表現の記述例と，変数REGEXP_WORK_SIZEの計算式の例を，次に示します。

正規表現の記述例1

KFAA11[0-9]{3}-E

計算式の例（単位：バイト）

正規表現の記述例2

KFAA6000[2-9]-E.*uid=12345.*

計算式の例（単位：バイト）

RECURSIVE_QUERY_CNCT_SIZE

再帰的問合せ管理領域（単位：バイト）

SQL文中に再帰的問合せを含まない場合は，0としてください。

sql_rthd_num

最大SQL処理リアルスレッド数（サーバ定義のadb_sql_exe_max_rthd_numオペランドの指定値）

recursive_query_num

SQL文中に指定した再帰的問合せの数

recurmb_query_num

再帰的メンバ内に指定したFROM句の数

recurmb_setop_num

再帰的メンバ内に指定した集合演算子の数

recurmb_list_num

再帰的メンバ内に指定した次の数の合計値

ウィンドウ関数の指定数

FROM句に複数の表参照を指定した問合せの指定数

結合表の指定数

副問合せの指定数

recurmb_subquery_num

再帰的メンバ内に指定した副問合せの数

recurmb_hashtbl_num

再帰的メンバ内に指定したハッシュテーブル数

詳細については，マニュアルHADB　AP開発ガイドのSQLを実行した場合に作成される作業表についてを参照してください。

RANDOMCURSOR_WORK_SIZE

スカラ関数RANDOMCURSOR用の作業領域

SQL文中にスカラ関数RANDOMCURSORを含む場合に，次に示す値を代入してください。ただし，SQL文中にスカラ関数RANDOMCURSORを含まない場合は0を代入してください。

値（単位：バイト）

RANDOMCURSOR_WORK_SIZE＝ 3,176

RANDOM_NUM_WORK_SIZE

擬似乱数生成用の作業領域（単位：バイト）

RANDOM_NUM_WORK_SIZE ＝ RANDOM_NUM_UNIFORM_WORK_SIZE
                     ＋ RANDOM_NUM_NORMAL_WORK_SIZE
                     ＋ RANDOMROW_WORK_SIZE

RANDOM_NUM_UNIFORM_WORK_SIZE

一様分布に従う擬似乱数生成用の作業領域

SQL文中にスカラ関数RANDOMを含む場合に，次に示す値を代入してください。ただし，SQL文中にスカラ関数RANDOMを含まない場合は0を代入してください。

値（単位：バイト）

RANDOM_NUM_UNIFORM_WORK_SIZE＝ 3,176

RANDOM_NUM_NORMAL_WORK_SIZE

正規分布に従う擬似乱数生成用の作業領域

SQL文中にスカラ関数RANDOM_NORMALを含む場合に，次に示す値を代入してください。ただし，SQL文中にスカラ関数RANDOM_NORMALを含まない場合は0を代入してください。

値（単位：バイト）

RANDOM_NUM_NORMAL_WORK_SIZE＝ 6,288

RANDOMROW_WORK_SIZE

スカラ関数RANDOMROW用の作業領域

SQL文中にスカラ関数RANDOMROWを含む場合に，次に示す値を代入してください。ただし，SQL文中にスカラ関数RANDOMROWを含まない場合は0を代入してください。

値（単位：バイト）

RANDOMROW_WORK_SIZE＝ 3,176

SORTGRP_CNCT_SIZE

ソートグループ化の作業領域

次のどちらかの集合関数をSQL文中に指定する場合に求めてください。どちらの指定もない場合は，0を代入してください。

LISTAGG集合関数

ARRAY_AGG集合関数

LAG関数

LEAD関数

計算式（単位：バイト）

SORTGRP_CNCT_SIZE＝
         352×Σ（sortgrp_wrk_num）×sql_rthd_num
         ＋LISTAGG_CNCT_SIZE＋ARRAY_AGG_CNCT_SIZE
         ＋LAG_LEAD_CNCT_SIZE

Σ（sortgrp_wrk_num）

SQL文中にLISTAGG集合関数，またはARRAY_AGG集合関数を指定した問合せ指定ごとに変数sortgrp_wrk_numを求めてください。そして，それぞれ求めた値を合計してください。

sortgrp_wrk_num

ソートグループ化の作業領域の個数

次の数を合計したものを代入してください。

ALL（省略値）を指定したLISTAGG集合関数の指定数

DISTINCTを指定したLISTAGG集合関数の指定数×2

ARRAY_AGG集合関数の指定数

DISTINCT集合関数の指定数

逆分布関数の指定数

LAG関数の指定数

LEAD関数の指定数

sql_rthd_num

最大SQL処理リアルスレッド数

サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値です。指定値が0の場合は1を代入してください。

LISTAGG_CNCT_SIZE

LISTAGG集合関数の作業領域

SQL文中に，LISTAGG集合関数を含む場合に求めてください。LISTAGG集合関数を含まない場合は，0を代入してください。

計算式（単位：バイト）

LISTAGG_CNCT_SIZE＝128×listagg_num×sql_rthd_num

listagg_num

SQL文中に指定したLISTAGG集合関数の数

sql_rthd_num

最大SQL処理リアルスレッド数

サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値です。指定値が0の場合は1を代入してください。

ARRAY_AGG_CNCT_SIZE

ARRAY_AGG集合関数の作業領域

ARRAY_AGG集合関数をSQL文中に指定する場合に求めてください。ARRAY_AGG集合関数を指定しない場合は，0を代入してください。

計算式（単位：バイト）

ARRAY_AGG_CNCT_SIZE＝
   Σ｛array_agg_num×（（array_agg_num＋1）×sql_rthd_num×104＋RESULT_WORK_SIZE）｝

ARRAY_AGG_CNCT_SIZEを算出するには，ARRAY_AGG集合関数を指定した問合せ指定ごとに，次の値を求めてください。そして，それぞれ求めた値を合計してください。

array_agg_num×（（array_agg_num＋1）×sql_rthd_num×104＋RESULT_WORK_SIZE）

array_agg_num

問合せ指定に指定したARRAY_AGG集合関数の数

sql_rthd_num

最大SQL処理リアルスレッド数

サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値です。指定値が0の場合は1を代入してください。

RT_AGGR_CNCT_WORK_SIZE

リアルスレッド単位の集計作業領域

SQL文中に，次に示すどれかの要素を含む場合に求めてください。含まない場合は，0を代入してください。

LISTAGG集合関数

ARRAY_AGG集合関数

逆分布関数

ウィンドウ関数

データ長の計算は，「表6‒10　SQL結果格納領域中の各データのデータ長」を参照してください。

計算式（単位：バイト）

RT_AGGR_CNCT_WORK_SIZE＝
        （400＋328×sql_rthd_num）×rt_aggr_num
         ＋Σ（sum_grp_size）×sql_rthd_num

sql_rthd_num

最大SQL処理リアルスレッド数

サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値です。指定値が0の場合は1を代入してください。

rt_aggr_num

該当する要素の数

Σ（sum_grp_size）

SQL文中に該当する要素を指定した問合せ指定ごとに変数sum_grp_sizeを求めてください。そして，それぞれ求めた値を合計してください。

sum_grp_size

SQL文中に含む要素によって，値が異なります。どちらの要素も含む場合は，それぞれ求めた値を合計してください。

LISTAGG集合関数，ARRAY_AGG集合関数または逆分布関数の場合

グループ化列のデータ長の合計

ウィンドウ関数の場合

ウィンドウ分割句に指定された列のデータ長の合計

LAG_LEAD_CNCT_SIZE

LAG関数およびLEAD関数の作業領域

SQL文中にLAG関数またはLEAD関数を指定する場合に求めてください。指定しない場合は，0を代入してください。

計算式（単位：バイト）

LAG_LEAD_CNCT_SIZE＝(400×lag_num＋352×lead_num)×sql_rthd_num

sql_rthd_num

最大SQL処理リアルスレッド数

サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値です。指定値が0の場合は1を代入してください。

lag_num

SQL文中に指定するLAG関数の数

lead_num

SQL文中に指定するLEAD関数の数

PRL_CNCT_SIZE

SQLパラレル実行機能用管理領域

SQLパラレル実行機能が適用される場合に求めてください。SQLパラレル実行機能が適用されない場合は，0を代入してください。

計算式（単位：バイト）

PRL_CNCT_SIZE＝
   1,438＋8×(1＋order_by_num＋group_by_num×7)
   ＋128×prl_scan_num＋202×node_num
   ＋PRL_NDMRG_CNCT_SIZE＋PRL_HASH_CNCT_SIZE
   ＋PRL_SCAN_NODE_MAP_SIZE

order_by_num

ORDER BY句を指定する場合は1を代入してください。ORDER BY句を指定しない場合は0を代入してください。

group_by_num

GROUP BY句の指定数を代入してください。GROUP BY句を指定しない場合は0を代入してください。

prl_scan_num

1を代入してください。

node_num

マルチノード構成のノード数

PRL_NDMRG_CNCT_SIZE

ノード間マージの管理領域

SQLパラレル実行機能が適用される場合に求めてください。SQLパラレル実行機能が適用されない場合は，0を代入してください。

計算式（単位：バイト）

PRL_NDMRG_CNCT_SIZE＝
   （128＋PRL_MAIN_NDMRG_CNCT_SIZE＋PRL_NDMRG_SORT_SIZE）×prl_scan_num

prl_scan_num

1を代入してください。

PRL_MAIN_NDMRG_CNCT_SIZE

SQLメインノードのノード間マージの管理領域

SQLパラレル実行機能が適用される場合に求めてください。SQLパラレル実行機能が適用されない場合は，0を代入してください。

データ長の計算は，「表6‒10　SQL結果格納領域中の各データのデータ長」を参照してください。

計算式（単位：バイト）

PRL_MAIN_NDMRG_CNCT_SIZE＝
   8,448＋（8,754＋RESULT_WORK_SIZE＋MAX（131,072 ，max_def_row_size）×2）
        ×node_num

max_def_row_size

選択式の結果のデータ長の合計値を問合せ指定ごとに求めてください。そして，求めた値の最大値を代入してください。

node_num

マルチノード構成のノード数

PRL_NDMRG_SORT_SIZE

ノード間マージの結果をソートする際の管理領域

SQLパラレル実行機能が適用され，かつSQL文中にORDER BY句を含む場合に求めてください。SQLパラレル実行機能が適用されない場合，またはORDER BY句を含まない場合は，0を代入してください。

計算式（単位：バイト）

PRL_NDMRG_SORT_SIZE＝64＋16×node_num

node_num

マルチノード構成のノード数

PRL_HASH_CNCT_SIZE

ノード間共有するハッシュテーブルを使用した検索時の管理領域

SQLパラレル実行機能が適用され，かつSQL文中にGROUP BY句を含む場合に求めてください。SQLパラレル実行機能が適用されない場合，またはGROUP BY句を含まない場合は，0を代入してください。また，最大SQL処理リアルスレッド数，またはハッシュテーブル領域サイズが0の場合も，0を代入してください。

計算式（単位：バイト）

PRL_HASH_CNCT_SIZE＝
   4,175＋8×hashtbl_num＋（12,757＋（8,875＋72×sql_rthd_num）×node_num）
        ×prl_hashtbl_num

hashtbl_num

ハッシュテーブル数

「6.25.3　ハッシュテーブルを使用した検索時に作成される作業表の数」を参照してください。

sql_rthd_num

最大SQL処理リアルスレッド数（サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値）

node_num

マルチノード構成のノード数

prl_hashtbl_num

GROUP BY句の数

PRL_SCAN_NODE_MAP_SIZE

検索ノード決定情報の管理領域

クラウドストレージ機能を使用していて，かつSQLパラレル実行機能が適用される場合に求めてください。クラウドストレージ機能を使用していない場合，またはSQLパラレル実行機能が適用されない場合は，0を代入してください。

計算式（単位：バイト）

PRL_SCAN_NODE_MAP_SIZE＝2,944＋1,600×node_num

node_num

マルチノード構成のノード数

IN_PRD_RVCHASH_TOTAL_SIZE

全行値構成子用のIN述語実行管理領域

行値構成子を指定したIN述語を指定していない場合は，0を代入してください。

計算式（単位：バイト）

IN_PRD_RVCHASH_TOTAL_SIZE＝
       64＋16×↑inpred_rvc_num ÷ 2↑＋Σ（IN_PRD_RVCHASH_SIZE）

Σ（IN_PRD_RVCHASH_SIZE）

行値構成子を指定したIN述語ごとに変数IN_PRD_RVCHASH_SIZEを求めてください。そして，それぞれ求めた値を合計してください。

inpred_rvc_num

行値構成子を指定したIN述語の数

IN_PRD_RVCHASH_SIZE

行値構成子用のIN述語実行管理領域

行値構成子を指定したIN述語ごとに求めてください。

計算式（単位：バイト）

IN_PRD_RVCHASH_SIZE＝64＋40×inpred_condval_num

inpred_condval_num

IN述語の条件値の数（IN述語の右側に指定した行値構成子の数）

IN_PRD_RVC_SCOND_SIZE

行値構成子用のIN述語（サーチ条件時）実行管理領域

次に示す条件をすべて満たすIN述語を指定している場合に求めてください。指定していない場合は0を代入してください。

行値構成子を指定している

IN述語の左側の行値構成子要素に，B-treeインデクスの複数のインデクス構成列のうち2つ以上のインデクス構成列を指定している

条件2.で指定しているB-treeインデクスのインデクス構成列の行値構成子要素に対応するIN述語の右側の行値構成子要素に，次のどれかを1つ以上指定している

？パラメタ

日時情報取得関数

ユーザ情報取得関数

計算式（単位：バイト）

IN_PRD_RVC_SCOND_SIZE＝
   79＋8×SCAN_MNG_NUM
     ＋Σ｛8×（inpred_condval_num＋inpred_notsubq_num）＋158｝

Σ｛8×（inpred_condval_num＋inpred_notsubq_num）＋158｝

上記の条件1.～3.をすべて満たすIN述語ごとに次の値を求めてください。そして，それぞれ求めた値を合計してください。

8×（inpred_condval_num＋inpred_notsubq_num）＋158

inpred_condval_num

上記の条件1.～3.をすべて満たすIN述語の条件値の数（IN述語の右側に指定した行値構成子の数）

inpred_notsubq_num

上記の条件1.～3.をすべて満たすIN述語が指定された問合せ指定（またはWHERE 探索条件）の中で，右側が副問合せではないIN述語の数

SCAN_MNG_NUM

SQL文実行時の検索処理管理領域の数

SCAN_MNG_NUM＝
   query_spec_num＋additional_query_num＋drvtbl_num＋1
    ＋hashtbl_num×5

query_spec_num

SQL文中に指定された問合せ指定の数

additional_query_num

SQL文中に指定された次の個数を合計した値

逆分布関数

LISTAGG集合関数

ARRAY_AGG集合関数

ウィンドウ関数

集合演算

ORDER BY句

drvtbl_num

SQL文中に指定された導出表の数

hashtbl_num

ハッシュテーブル数

「6.25.3　ハッシュテーブルを使用した検索時に作成される作業表の数」を参照してください。

SCAN_CHUNK_MNG_SIZE

検索対象となるチャンクの管理領域

SQL文中にマルチチャンク表を指定している場合に求めてください。指定していない場合は0を代入してください。

計算式（単位：バイト）

SCAN_CHUNK_MNG_SIZE＝
   48＋↑（8×mchunk_tbl_num）÷16↑×16＋Σ（32＋32×chunk_num）

mchunk_tbl_num

SQL文中に指定されたマルチチャンク表の数

Σ（32＋32×chunk_num）

SQL文中に指定するマルチチャンク表ごとに「32＋32×chunk_num」を計算し，その合計値を求めてください。

chunk_num

検索対象のマルチチャンク表のチャンク数

FRGN_TBL_MNG_SIZE

外部表検索時の管理領域

外部表を指定するSQL文，またはCOPY文を実行する場合に求めてください。それ以外の場合は0を代入してください。

計算式（単位：バイト）

FRGN_TBL_MNG_SIZE＝64＋8×（↑num_fgntbl÷2↑×2）＋64×num_fgntbl

num_fgntbl：外部表の指定数

COPY文を実行する場合は，外部表の指定数に1を加算してください。

COPY_MNG_SIZE

COPY文実行時の処理管理領域

COPY文を実行する場合に求めてください。COPY文を実行しない場合は0を代入してください。

計算式（単位：バイト）

COPY_MNG_SIZE＝1,152×（sql_rthd_num＋1）

sql_rthd_num

最大SQL処理リアルスレッド数（サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値）

Σ（GL_WRK_TBL_MNG_SIZE）

作成されるグローバル作業表ごとにGL_WRK_TBL_MNG_SIZEを計算した合計値（単位：バイト）

次に示すことについては，「6.25　作業表に関する見積もり」およびマニュアルHADB　AP開発ガイドのAPの性能向上に関する設計の作業表が作成されるSQLを実行する際の考慮点を参照してください。

SQL文がグローバル作業表を作成するかどうか

作成される作業表の個数

GL_WRK_TBL_MNG_SIZE

グローバル作業表の作成管理領域（単位：バイト）

計算式

GL_WRK_TBL_MNG_SIZE = 128＋↑(72×sql_rthd_num)÷64↑×64

sql_rthd_num

最大SQL処理リアルスレッド数（サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値）

PROC_THD_SIZE：SQL処理リアルスレッド管理領域

次に示す計算式から求めてください。なお，変数RESULT_WORK_SIZE，変数OPE_WORK_SIZE，変数HASHGRP_SIZE，変数COR_QUERY_SIZE，変数REGEXP_WORK_SIZE，および変数RANDOM_NUM_WORK_SIZEについては，上記にある各計算式から求めた値を代入してください。

計算式（単位：キロバイト）

重要

ビュー表または問合せ名を指定する場合の留意事項

SQL文中にビュー表または問合せ名を指定する場合は，それぞれに対応する内部的な導出表を適用したものとして見積もりを行ってください。ただし，再帰的問合せ内にある，対象となる再帰的問合せを参照している再帰的問合せ名については，その再帰的問合せの結果が格納される作業表と仮定して見積もりを行ってください。

アーカイブマルチチャンク表を指定する場合の留意事項

SQL文中にアーカイブマルチチャンク表を指定する場合は，導出表に等価変換されたものとして見積もりを行ってください。アーカイブマルチチャンク表の等価変換については，マニュアルHADB　AP開発ガイドのアーカイブマルチチャンク表を検索するSQL文の等価変換を参照してください。

tbl_num：指定した表数

FULL OUTER JOINを指定した場合は，FULL OUTER JOINの数を加算してください。

sql_rthd_num：

サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値

idx_col_num：

検索に使用するB-treeインデクスおよびテキストインデクスの構成列数

idx_size：

使用する各B-treeインデクスおよびテキストインデクスの構成列の定義長の合計値

uthd_num：

サーバ定義adb_sys_uthd_numオペランドの指定値

Σ_[i =cor_query](HASHGRP_SIZE(i))：

SQL文中の外への参照列を含む副問合せごとにHASHGRP_SIZEを計算した合計値（単位：バイト）

Σ_[j =not_cor_query](HASHGRP_SIZE(j))：

SQL文中の外への参照列を含む副問合せではない問合せ指定単位にHASHGRP_SIZEを計算した合計値（単位：バイト）

HASHTBL_PROC_SIZE：ハッシュテーブルを使用した検索時のリアルスレッド管理領域

SQL文中に，次に示すどれかを含む場合は求めてください。すべて含まない場合は，0になります。また，最大SQL処理リアルスレッド数，またはハッシュテーブル領域サイズが0の場合も，0となります。

複数の表を＝で結合する問合せ指定

副問合せ

GROUP BY句

DISTINCT集合関数

SELECT DISTINCT

UNIONまたはUNION DISTINCT

計算式（単位：バイト）

hashtbl_byte

次に示す計算式で求めた値

sql_rthd_num

クライアント定義adb_sql_exe_max_rthd_numオペランドの指定値

uthd_num

サーバ定義adb_sys_uthd_numオペランドの指定値

clt_wrk_page_num

クライアント定義adb_dbbuff_wrktbl_clt_blk_numオペランドの指定値（ただし，adbexportコマンド実行時はエクスポートオプションadb_export_wrktbl_blk_numの指定値）

hashtbl_num

ハッシュテーブル数

「6.25.3　ハッシュテーブルを使用した検索時に作成される作業表の数」を参照してください。

HASHFLT_PROC_SIZE：SQL処理リアルスレッド用ハッシュフィルタ管理領域

次のどちらかの指定がSQL文中にある場合に求めてください。どちらの指定もない場合は，0になります。また，ハッシュフィルタ領域サイズ（サーバ定義adb_sql_exe_hashflt_area_sizeオペランドの指定値）が0の場合も，0になります。

複数の表を＝で結合する問合せ指定

副問合せ

計算式（単位：バイト）

HASHFLT_PROC_SIZE ＝ ↑hashflt_byte÷sql_rthd_num↑＋136＋192×hashflt_num

hashflt_byte

次に示す計算式で求めた値

サーバ定義adb_sql_exe_hashflt_area_sizeオペランドの指定値×1,024×1,024

sql_rthd_num

クライアント定義adb_sql_exe_max_rthd_numオペランドの指定値

hashflt_num

SQL文中のハッシュフィルタの総数

次のすべての値の合計値を求めてください。

・複数の表を＝で結合する問合せ指定の，＝指定の結合条件の数

・外への参照列を含まない副問合せの数

・外への参照列を含む副問合せの，外への参照列を含む＝条件の数

HASHRNG_PROC_SIZE：ハッシュ検索でのSQL処理リアルスレッド用のレンジインデクスの条件評価の管理領域

次のどちらかの指定がSQL文中にある場合に求めてください。どちらの指定もない場合は，0になります。

複数の表を＝で結合する問合せ指定

副問合せ

計算式（単位：バイト）

HASHRNG_PROC_SIZE ＝ 64＋72×hash_retrieval_rngidx_num＋64×hash_cond_rngidx_num
                  ＋Σ（↑（hash_cond_rngidx_len）÷16↑×32）

データ長の計算は，「表6‒11　各データ型のデータ長の一覧」を参照してください。

hash_retrieval_rngidx_num

SQL文中のハッシュ検索のうち，レンジインデクスを使用するハッシュ検索の総数

次のすべての値の合計値を求めてください。この合計数が0の場合，HASHRNG_PROC_SIZEは0になります。

複数の表を＝で結合する問合せ指定のうち，レンジインデクスの構成列を＝に指定している各問合せ指定について，次の計算式で求めた値

＝で結合する表の総数 － ＝で結合する問合せ指定の総数

レンジインデクスの構成列を左側に指定している限定述語の数

レンジインデクスの構成列を左側に指定し，右側に表副問合せを指定しているIN述語の数

上記2つの副問合せ以外で，次のすべての条件を満たす副問合せの数

・探索条件中に＝で外への参照列を指定している

・指定した外への参照列がレンジインデクスの構成列である

hash_cond_rngidx_num

SQL文中のハッシュ検索のうち，レンジインデクスを使用する条件の総数

次のすべての値の合計値を求めてください。

複数の表を＝で結合する問合せ指定のうち，レンジインデクスの構成列を指定している＝結合条件の数

レンジインデクスの構成列を左側に指定している限定述語の数

レンジインデクスの構成列を左側に指定し，右側に表副問合せを指定しているIN述語の数

上記2つの副問合せ以外で，次のすべての条件を満たす＝条件の数

・探索条件中に＝で外への参照列を指定している

・指定した外への参照列がレンジインデクスの構成列である

Σ（↑（hash_cond_rngidx_len）÷16↑×32）

SQL文中のハッシュ検索のうち，レンジインデクスを使用する条件ごとに値を算出し，その値を合計してください。

hash_cond_rngidx_len

ハッシュ検索でレンジインデクスを使用する条件ごとに次の値を求めてください。

複数の表を＝で結合する問合せ指定のうち，レンジインデクスの構成列を指定している＝結合条件について，その＝結合条件の左右に指定した値式の結果のデータ長の，どちらか大きい方の値

レンジインデクスの構成列を左側に指定している限定述語で，次のどちらか大きい方の値

・右側に指定した表副問合せの選択式の結果のデータ長の合計値

・左側に指定したレンジインデクスの構成列の列長

レンジインデクスの構成列を左側に指定し，右側に表副問合せを指定しているIN述語で，次のどちらか大きい方の値

・右側に指定した表副問合せの選択式の結果のデータ長の合計値

・左側に指定したレンジインデクスの構成列の列長

副問合せの探索条件中に指定した＝条件の左右の値式の結果のデータ長のうち，どちらか大きい方の値（上記2つの副問合せに該当しない副問合せで，次の2つの条件を満たす副問合せであること）

・副問合せの探索条件中に，＝で外への参照列を指定している

・指定した外への参照列がレンジインデクスの構成列である

HASHLOCAL_PROC_SIZE：SQL処理リアルスレッド用の部分集計管理領域

次に示すどれかの指定がSQL文中にある場合に求めてください。指定がない場合は，0になります。また，サーバ定義adb_sql_exe_hashgl_area_sizeオペランドの値が0の場合も，0になります。

GROUP BY句

DISTINCT集合関数

SELECT DISTINCT

UNIONまたはUNION DISTINCT

計算式（単位：バイト）

HASHLOCAL_PROC_SIZE＝
          192＋8×hashtbl_num＋hashgl_byte×hashtbl_aggr_num

hashtbl_num

ハッシュテーブル数

「6.25.3　ハッシュテーブルを使用した検索時に作成される作業表の数」を参照してください。

hashgl_byte

SQL処理リアルスレッドごとのハッシュテーブル領域サイズ

次に示す計算式で求めた値を代入してください。

hashgl_byte ＝
  (サーバ定義adb_sql_exe_hashgl_area_sizeオペランドの指定値×1,024×1,024)

hashtbl_aggr_num

SQL処理リアルスレッドごとの部分集計を適用するハッシュ検索の総数

次に示す数の合計を求めてください。

GROUP BY句の指定数

DISTINCT集合関数を指定した問合せ指定の数

SELECT DISTINCTの指定数

UNION，またはUNION DISTINCTの指定数

DHJOIN_PROC_SIZE：ハッシュジョイン分割実行のリアルスレッド管理領域

SQL文中に，次のすべての条件に該当する問合せ指定を含む場合に求めてください。条件に該当する問合せ指定を含まない場合は，0になります。

コンマ結合，INNER JOIN，またはCROSS JOINを使用して，複数の表を＝で結合する問合せ指定である

1.の条件の表に，マルチチャンク表が2つ以上含まれている

2.の条件のマルチチャンク表を結合する＝の1つに，レンジインデクスを定義しているマルチチャンク表の列が指定されている

計算式（単位：バイト）

DHJOIN_PROC_SIZE＝
       64＋320×（dhjoin_tbl_num－dhjoin_query_num）

dhjoin_tbl_num

コンマ結合，INNER JOIN，またはCROSS JOINを使用して，＝で結合する表の数

dhjoin_query_num

コンマ結合，INNER JOIN，またはCROSS JOINを使用して，＝で結合する表が指定されている問合せ指定の数

setop_num：SQL文中に指定した集合演算子の数

FULL OUTER JOINを指定した場合は，FULL OUTER JOINの数を加算してください。

drvtbl_num：SQL文中に指定した導出表の数

FULL OUTER JOINを指定した場合は，FULL OUTER JOINの数を加算してください。

in_query_num：次に示す条件を満たすIN述語，限定述語の数の合計値

IN述語の場合

右側に表副問合せを指定し，左側の値式に指定した列が検索に使用するB-treeインデクスの先頭構成列

限定述語の場合

＝ANYまたは＝SOMEで左側の値式に指定した列が検索に使用するB-treeインデクスの先頭構成列

inprd_cor_query_num：

外への参照列を含む副問合せ中に指定されており，かつ変数in_query_numに示した条件を満たすIN述語，限定述語の数の合計値

max_cor_query（X）：

SQL文中の外への参照列を含む副問合せごとに，その副問合せ中に指定したXの最大値を代入します。

setop_cor_query_num：

外への参照列を含む副問合せ中に指定されている集合演算子の数

window_cor_query_num：外への参照列を含む副問合せ中に指定されているウィンドウ関数の数

外への参照列を含む副問合せ中で，1つの問合せ指定中に，引数の異なるDISTINCT集合関数を複数指定している場合は，その指定数－1で求めた値も加算してください。

limit_cor_query_num：

外への参照列を含む副問合せ中に指定されているLIMIT句の数

cor_query_num：

外への参照列を含む副問合せ，およびその副問合せ中に含まれる副問合せの合計値

Σ（drvtbl_row_len×MIN（drvtbl_row_num，1,044,480））：

導出表を指定する場合に，導出表ごとに（drvtbl_row_len×MIN（drvtbl_row_num，1,044,480））を求めてください。そして，求めた値を合計してください。

drvtbl_row_len

導出表の選択式のデータ長を合計した値を代入してください。

データ長の計算は，「表6‒9　一時領域上に格納する各データのデータ長」を参照してください。

drvtbl_row_num

導出表の行数を代入してください。行数がわからない場合は，1,044,480を代入してください。

Σ（in_query_drvc_len×MIN（in_query_drvc_num，1,044,480））：

変数in_query_numの対象となる述語ごとに（in_query_drvc_len×MIN（in_query_drvc_num，1,044,480））を求めてください。そして，求めた値を合計してください。

in_query_drvc_len

変数in_query_numの対象となる述語の副問合せの選択式のデータ長を代入してください。

データ長の計算は，「表6‒9　一時領域上に格納する各データのデータ長」を参照してください。

in_query_drvc_num

変数in_query_numの対象となる述語の副問合せの行数を代入してください。行数がわからない場合は，1,044,480を代入してください。

leftouter_num：

LEFT OUTER JOINの指定数

Σ（WRK_TABLE_OPE_SIZE）：

作成される作業表単位にWRK_TABLE_OPE_SIZEを計算した合計値（単位：バイト）

次に示すことについては，「6.25　作業表に関する見積もり」およびマニュアルHADB　AP開発ガイドのAPの性能向上に関する設計の作業表が作成されるSQLを実行する際の考慮点を参照してください。

SQL文の実行時に作業表が作成されるかどうか

作成される作業表の個数および構成列

Σ（LMTWRK_SIZE）：

作成される作業表単位にLMTWRK_SIZEを計算した合計値（単位：バイト）

次に示すことについては，「6.25　作業表に関する見積もり」およびマニュアルHADB　AP開発ガイドのAPの性能向上に関する設計の作業表が作成されるSQLを実行する際の考慮点を参照してください。

LIMIT句を指定したSQL文が作業表を作成するかどうか

作成される作業表の個数

なお，LIMIT句で集合演算の結果の取得行数の最大値を設定する場合は，集合演算を構成する問合せ指定ごとに，LIMIT句の指定値が適用されます。

tblfunc_num

表関数導出表の個数

Σ（tblfunc_filename_len＋5）

表関数導出表ごとに（tblfunc_filename_len＋5）を求めてください。そして，求めた値を合計してください。

tblfunc_filename_len

アクセスするファイルのファイル名（フルパス）の長さ

Σ（（tblfunc_row_len＋4）×MIN（tblfunc_row_num，65,025））

表関数導出表ごとに（（tblfunc_row_len＋4）×MIN（tblfunc_row_num，65,025））を求めてください。そして，求めた値を合計してください。

tblfunc_row_len

表関数導出表の列のデータ長の合計

データ長の計算は，「表6‒9　一時領域上に格納する各データのデータ長」を参照してください。

tblfunc_row_num

表関数導出表の行数

行数がわからない場合は，65,025を代入してください。

Σ（CSVREAD_WORK_SIZE）

ADB_CSVREAD関数を指定した表関数導出表ごとに変数CSVREAD_WORK_SIZEをバイト単位で求めてください。そして，求めた値を合計してください。

Σ（AUDITREAD_WORK_SIZE）

ADB_AUDITREAD関数を指定した表関数導出表ごとに変数AUDITREAD_WORK_SIZEをバイト単位で求めてください。そして，求めた値を合計してください。

query_num

問合せの数

SQL文中に指定したFROM句の数から求めてください。

また，FULL OUTER JOINを指定した場合は，FULL OUTER JOINの数×2で求めた値を加算してください。

tvc_num

SQL文中に指定した表値構成子の数

SCAN_WORK_SIZE：検索作業領域

次に示す計算式から求めてください。

計算式（単位：バイト）

SCAN_WORK_SIZE ＝ MAX（SCB_SIZE）＋24

MAX（SCB_SIZE）：検索内部処理用の作業領域の最大値

検索する表ごとに変数SCB_SIZEを求めてください。その中で，最も大きい値を代入してください。

SCB_SIZE：検索内部処理用の作業領域

次に示す計算式から求めてください。

計算式（単位：バイト）

KEYSZ：検索に使用するB-treeインデクスのキー長

「5.8.4　B-treeインデクスのキー長（KEYSZ）の求め方」を参照してください。

idx_col_num

検索に使用するB-treeインデクスの構成列数

logical_num

探索条件中の論理演算子の数の最大値

scan_str_num

次に示すどちらかの文字数を代入してください。

テキストインデクスを使用するLIKE述語のパターン文字列に指定した文字列の文字数

スカラ関数CONTAINSに指定した検索文字列の文字数

なお，スカラ関数CONTAINSに，ワード検索指定のWORDCONTEXT_PREFIXを指定して，単語単位の前方一致検索を行う場合は，「検索文字列に指定した単語の数×32」で求めた値を代入してください。

パターン文字列が1文字の場合，または，パターン文字列が1,000文字を超える場合は，1,000を代入してください。

txt_nest_num

次に示すネスト数を合計した値※

テキストインデクスを使用するLIKE述語のOR条件のネスト数

スカラ関数CONTAINSのOR条件のネスト数

txt_contains_str

スカラ関数CONTAINSに指定した検索文字列の文字数※

注※

変数txt_nest_num，および変数txt_contains_strに代入した値の合計値の上限は1,001です。合計値が1,001を超える場合は，1,001を代入してください。

CS_WORK_SIZE：カラムストア表検索用の作業領域

次に示す計算式から求めてください。カラムストア表を検索しない場合は，0になります。

計算式（単位：バイト）

col_num

実表の選択式の数

unnest_col_num

集まり導出表に指定する列指定の数

in_projcol_num

IN述語の右側の値式に指定した列名の数

IN述語を指定していない場合，またはIN述語の右側の値式に列名を指定しない場合は，0を代入してください。

tbl_col_num

表の列数

SEGSIZE

DBエリアファイルを定義したDBエリアのセグメントサイズ（単位：ページ数）

次に示す計算式から求めてください。クラウドストレージ機能を使用する場合は，1,024になります。

SEGSIZE＝ 1セグメントの容量（単位：バイト）÷page_size

page_size

表が定義されているDBエリアのページサイズ（単位：バイト）

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」にある「表6‒3　DBエリアのページサイズ」を参照してください。

pred_num

述語の数

探索条件を指定しない場合は，1を代入してください。

branch_col_size

データ型が文字データ，またはバイナリデータの列の最大定義長（単位：バイト）

選択式，または探索条件に指定する列に定義長が128バイト以上の列が含まれる場合に，その定義長の最大値を代入してください。

Σ（DECOMPRESS_WORK_SIZE）

選択式，および探索条件に指定する列ごとに，変数DECOMPRESS_WORK_SIZEを求めてください。そして，求めた値を合計してください。

grp_col_num

GROUP BY句に指定した列の数

Σ（↑grp_col_size÷8↑×8）

GROUP BY句に指定した列ごとに（↑grp_col_size÷8↑×8）を算出し，それぞれ算出した値を合計してください。

grp_col_size

GROUP BY句に指定した各列のデータ長

データ長の計算は，「表6‒11　各データ型のデータ長の一覧」を参照してください。

GROUPING_IN_SGMT_WORK_SIZE

セグメント内のグループ化作業領域

次に示す計算式から求めてください。なお，GROUP BY句を指定していない場合は0を代入してください。

計算式（単位：バイト）

grp_col_num

GROUP BY句に指定した列の数

set_func_num

集合関数の数

grouping_col_data_size(i)

各列のデータ長

データ長については，次に示す表から求めてください。

表6‒8　grouping_col_data_sizeに代入する値

項番

分類

データ型

データ長（単位：バイト）

1

数データ

INTEGER

8

2

BIGINT

3

SMALLINT

4

DECIMAL

NUMERIC

1≦精度≦4

8

5

5≦精度≦8

6

9≦精度≦16

7

17≦精度≦38

16

8

DOUBLE PRECISION

8

9

FLOAT

10

REAL

11

文字データ

CHAR

定義長＋7

12

VARCHAR

1≦定義長≦32,000

定義長＋9

13

32,001≦定義長≦64,000

定義長＋11

14

日時データ

DATE

8

15

TIME(p)

3＋↑p÷2↑＋7

16

TIMESTAMP(p)

7＋↑p÷2↑＋7

17

バイナリデータ

BINARY

定義長＋7

18

VARBINARY

定義長＋9

19

論理データ

BOOLEAN

8

20

UUIDデータ

UUID

16

（凡例）

p：小数秒の桁数（0，3，6，9または12。省略した場合は0を仮定）

grouping_set_func_size(i)

各集合関数の結果のデータ長

集合関数の結果のデータ長は，集合関数の結果のデータ型を基に「表6‒8　grouping_col_data_sizeに代入する値」を参照して求めてください。

Σ（unnest_col_size）

集まり導出表に指定する列指定ごとに変数unnest_col_sizeを算出し，それぞれ算出した値を合計してください。

unnest_col_size

集まり導出表に指定する各列指定の列のデータ長

データ長の計算は，「表6‒11　各データ型のデータ長の一覧」を参照してください。

DECOMPRESS_WORK_SIZE

伸長作業領域

次に示す計算式から求めてください。

計算式（単位：バイト）

col_data_size(i)

各列のデータ長

データ長の計算は，「表6‒11　各データ型のデータ長の一覧」を参照してください。

page_size

表を格納するDBエリアのページサイズ（単位：バイト）

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」にある「表6‒3　DBエリアのページサイズ」を参照してください。

TXT_WORK_SIZE

テキストインデクスの作業領域

次の計算式から求めてください。なお，テキストインデクスを定義していない場合，またはテキストインデクスを使用しない場合は0を代入してください。

計算式（単位：バイト）

AUDITREAD_WORK_SIZE

ADB_AUDITREAD関数の検索作業領域（単位：バイト）

次に示す計算式から求めてください。ただし，ADB_AUDITREAD関数を使用しない場合は0を代入してください。

AUDITREAD_WORK_SIZE＝（AUDREADSZ＋AUDBLOCKSZ）×1,024

AUDREADSZ

監査証跡ファイルの管理領域

次に示す値を代入してください。ただし，ADB_AUDITREAD関数を使用しない場合は0を代入してください。

値（単位：キロバイト）

AUDREADSZ＝1

AUDBLOCKSZ

監査証跡ファイルの作業領域

次に示す値を代入してください。ただし，ADB_AUDITREAD関数を使用しない場合は0を代入してください。

値（単位：キロバイト）

AUDBLOCKSZ＝262,144

SCAN_INFO_SIZE：表検索用管理領域（単位：バイト）

検索する表ごとに変数SCAN_INFO_DATA_SIZEを算出し，それぞれ算出した値を合計してください。

ハッシュジョインから導出される結果が，ネストループジョインの最も外側の表に対応する場合，そのハッシュジョインごとに変数SCAN_INFO_HASH_SIZEを算出してください。また，副問合せのハッシュ実行から導出される結果が，ネストループジョインの最も外側に対応する場合，その副問合せのハッシュ実行ごとに変数SCAN_INFO_HASH_SIZEを算出してください。それぞれ算出した値を合計してください。

SCAN_INFO_DATA_SIZE：実表および結合表検索時の表検索用管理領域（単位：バイト）

SCAN_INFO_DATA_SIZE ＝ tbl_access_num × (TBL_ACCESS_INFO_SIZE ＋ OUTERJOIN_INFO_SIZE)

tbl_access_num：表の検索回数

次の条件のうち該当する値を代入してください。

結合していない表の場合：1

ネストループジョインで結合している表の場合

・ネストループジョインの最も外側の表の場合：1

・ネストループジョインの内表の場合：その内表に対応する外表の行数

ハッシュジョインで結合している表の場合

・ハッシュジョインの外表の場合：1

・ハッシュジョインの内表の場合：1

なお，表が外への参照列を含む副問合せの中に指定されていて，かつその副問合せの処理方式がネストループ作業表実行またはネストループ行値実行の場合，上記の値に「uthd_num×sql_rthd_num」を掛けた値を表の検索回数としてください。

uthd_num

サーバ定義のadb_sys_uthd_numオペランドの指定値

sql_rthd_num

サーバ定義のadb_sql_exe_max_rthd_numオペランドの指定値

＜表の検索回数の計算例＞

SELECT * FROM "T1" A,"T2" B,"T3" C
           WHERE A."C1"=B."C1" AND B."C2"=C."C2"

上記のSELECT文を実行する際，表T1，T2，T3をこの順番で外側からネストループジョインする場合，表の検索回数は次のようになります。

表T1の検索回数：1

表T2の検索回数：表T1を検索して得られる結果の行数

表T3の検索回数：表T1，表T2を検索して得られる結果の行数

TBL_ACCESS_INFO_SIZE：表検索情報領域

次の条件のうち該当する値を代入してください。

検索対象の表の検索方式がテーブルスキャンの場合：TBL_SCI_MEM

検索対象の表の検索方式がB-treeインデクスを使用したインデクススキャンまたはキースキャンの場合：IDX_SCI_MEM

検索対象の表の検索方式がテキストインデクスを使用したインデクススキャンの場合：IDX_SCI_TXT_MEM

検索対象の表の検索方式が作業表の検索の場合：WRKTBL_SCI_MEM

TBL_SCI_MEM：テーブルスキャン時の表検索情報領域（単位：バイト）

TBL_SCI_MEM ＝ (336＋RESULT_WORK_SIZE) × (dbarea_file_num＋chunk_num＋SGTBL－2)

dbarea_file_num

検索対象表が格納されているDBエリアのDBエリアファイル数

chunk_num

検索対象表のチャンク数（検索対象表がシングルチャンク表の場合は1）

SGTBL

検索対象表のセグメント数

SGTBLを求める計算式については，「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」にある次の個所を参照してください。なお，検索対象表の種類によって参照先が異なります。

シングルチャンク表かつローストア表の場合

「(a)　変数SGROWTBLおよびPGROWTBLの求め方（シングルチャンク表の場合）」

シングルチャンク表かつカラムストア表の場合

「(b)　変数SGCOLUMNTBLおよびPGCOLUMNTBLの求め方（シングルチャンク表の場合）」

マルチチャンク表かつローストア表の場合

「(f)　変数SGROWTBLおよびPGROWTBLの求め方（マルチチャンク表の場合）」

マルチチャンク表かつカラムストア表の場合

「(g)　変数SGCOLUMNTBLおよびPGCOLUMNTBLの求め方（マルチチャンク表の場合）」

IDX_SCI_MEM：B-treeインデクスを使用した検索時の表検索情報領域（単位：バイト）

IDX_SCI_MEM＝IDX_CHUNK_SCI_MEM ＋ IDX_SCAN_IDX_MEM

IDX_CHUNK_SCI_MEM

B-treeインデクスを使用した検索時のチャンクに関する表検索情報領域（単位：バイト）

IDX_CHUNK_SCI_MEM＝368＋RESULT_WORK_SIZE

ただし，次に示すどちらかの条件を満たす場合は，IDX_CHUNK_SCI_MEM＝0になります。

検索対象表が，チャンクが1個のマルチチャンク表の場合

検索対象表がシングルチャンク表の場合

IDX_SCAN_IDX_MEM

B-treeインデクスを使用した検索時の全チャンクの表検索情報領域（単位：バイト）

ただし，検索対象のチャンク数が0個の場合は，IDX_SCAN_IDX_MEM＝0になります。

chunk_num

検索対象となるチャンク数

IDX_SCAN_IDX_MEM(s)

s番目のチャンクのB-treeインデクスに関する表検索情報領域（単位：バイト）

r

サーチ条件を満たす行のキー値が2種類以上の場合は2，1種類の場合は0になります。

n

PIDX(k)＝1となる最小のkになります。

PIDX(k)

「5.8.3　B-treeインデクスのセグメントごとの格納ページ数の求め方」の「(2)　上位ページ用のセグメントで使用する格納ページ数（変数IP_UPPER（i））の求め方」の計算式1（PIDX（k）の求め方）に従って求めてください。

なお，PIDX(k)を求める計算式に使用されている変数key_num，dup_key_num，およびkey_dupについては，サーチ条件を満たすキーについて，キーの種類の個数やキーの重複数の平均値を求めてください。キーの種類やキーの重複数を計算する際，DELETE文による行の削除や，UPDATE文による行の更新によって無効となった行データも含めて計算してください。また，INSERT文による行の追加，またはUPDATE文による行の変更を繰り返した場合や，キーの重複数やキー長にばらつきがある場合は，求めた値を1.2～1.5倍した値を用いてください。

PDUP

「5.8.3　B-treeインデクスのセグメントごとの格納ページ数の求め方」の「(1)　下位ページ用のセグメントで使用する格納ページ数（変数IP_LOWER（i））の求め方」の計算式2（PDUPの求め方）に従って求めてください。

なお，PDUPを求める計算式に使用されている変数dup_key_numとdup_key_dupについては，サーチ条件を満たすキーについて，キーの種類の個数やキーの重複数の平均値を求めてください。キーの種類やキーの重複数を計算する際，DELETE文による行の削除や，UPDATE文による行の更新によって無効となった行データも含めて計算してください。また，INSERT文による行の追加，またはUPDATE文による行の変更を繰り返した場合や，キーの重複数やキー長にばらつきがある場合は，求めた値を1.2～1.5倍した値を用いてください。

PIDX_MEM

B-treeインデクスの上位またはリーフページに関する表検索情報領域（単位：バイト）

idx_col_num

B-treeインデクスのインデクス構成列数

key_size(i)

i番目のインデクス構成列のキー長

「5.8.4　B-treeインデクスのキー長（KEYSZ）の求め方」を参照して，key_size(i)を計算してください。

なお，「表5‒20　B-treeインデクスのキー長一覧」中の「実際のデータ長」は，「データの定義長」と読み替えて計算してください。

PDUP_MEM

B-treeインデクスのローIDディレクトリページ，またはローIDリストページに関する表検索情報領域（単位：バイト）

idx_col_num

B-treeインデクスのインデクス構成列数

key_size(i)

i番目のインデクス構成列のキー長

「5.8.4　B-treeインデクスのキー長（KEYSZ）の求め方」を参照して，key_size(i)を計算してください。

なお，「表5‒20　B-treeインデクスのキー長一覧」中の「実際のデータ長」は，「データの定義長」と読み替えて計算してください。

IDX_SCI_TXT_MEM

テキストインデクスを使用した検索時の表検索情報領域（単位：バイト）

IDX_SCI_TXT_MEM ＝ IDX_CHUNK_TXT_MEM ＋ IDX_SCAN_TXT_MEM

IDX_CHUNK_TXT_MEM

テキストインデクスを使用した検索時のチャンクに関する表検索情報領域（単位：バイト）

ただし，次に示すどちらかの条件を満たす場合は，IDX_CHUNK_TXT_MEM＝0になります。

検索対象表が，チャンクが1個のマルチチャンク表の場合

検索対象表がシングルチャンク表の場合

scan_str_num

テキストインデクスを使用するLIKE述語，LIKE_REGEX述語，スカラ関数CONTAINSに指定した検索文字列の文字数の合計（1,001を超える場合は1,001とする）

TXT_SCAN_NODE_NUM

テキストインデクス内部の検索に使用するノード数

TXT_SCAN_NODE_NUM ＝ scan_nest_num ＋ sortcode_str_num ＋ TXT_SYNONYM_NUM

scan_nest_num

テキストインデクスを使用するLIKE述語，LIKE_REGEX述語，スカラ関数CONTAINSのOR条件のネスト数

sortcode_str_num

スカラ関数CONTAINSで表記ゆれ補正検索を行う場合の検索文字列の文字数

TXT_SYNONYM_NUM

スカラ関数CONTAINSで同義語検索を使用する場合の同義語グループの同義語数の平均値

all_synonym_num

スカラ関数CONTAINSで同義語検索を行う場合に指定した同義語辞書に登録されている同義語数

すべての同義語グループの同義語の合計数です。同義語検索を行わない場合は，0になります。

synonym_group_num

スカラ関数CONTAINSで同義語検索を行う場合に指定した同義語辞書に登録されている同義語グループ数

IDX_SCAN_TXT_MEM

テキストインデクスを使用した検索時の全チャンクの表検索情報領域（単位：バイト）

ただし，検索対象のチャンク数が0個の場合は，IDX_SCAN_TXT_MEM＝0になります。

chunk_num

検索対象のチャンク数

IDX_SCAN_TXT_MEM(s)

s番目のチャンクのテキストインデクスに関する表検索情報領域（単位：バイト）

WRKTBL_SCI_MEM

作業表検索時の表検索情報領域（単位：バイト）

WRKTBL_SCI_MEM ＝ (304＋RESULT_WORK_SIZE) × WRKTBL_PGNUM

WRKTBL_PGNUM

検索対象の作業表のページ数

「5.9.2　作業表を格納するために必要な基本行用ページ数の求め方」を参照して，WP(i)を計算してください。

SCAN_INFO_HASH_SIZE

ハッシュテーブルを使用した検索時の表検索用管理領域（単位：バイト）

hashtbl_row_len

ハッシュテーブル行長

「6.25.3　ハッシュテーブルを使用した検索時に作成される作業表の数」を参照して，ハッシュテーブル行長を計算してください。

hashtbl_row_num

ハッシュジョインまたは副問合せのハッシュ実行から導出される結果行数

わからない場合は，1,044,480としてください。

sql_rthd_num

最大SQL処理リアルスレッド数（サーバ定義のadb_sql_exe_max_rthd_numオペランドの指定値）

OUTERJOIN_INFO_SIZE

外結合管理領域（単位：バイト）

OUTERJOIN_INFO_SIZE ＝ 120＋16×sql_rthd_num ＋ RESULT_WORK_SIZE

ただし，次の条件をすべてを満たす場合は，OUTERJOIN_INFO_SIZE＝0になります。

検索対象の表が外結合の左側に指定されていない場合

検索対象の表が外結合の右側に指定されていない場合

sql_rthd_num

最大SQL処理リアルスレッド数（サーバ定義のadb_sql_exe_max_rthd_numオペランドの指定値）

SCAN_INFO_FGNTBL_SIZE：外部表検索時の表検索用の管理領域（単位：バイト）

外部表を使用しない場合は，0を代入してください。

SCAN_INFO_FGNTBL_SIZE ＝ （RESULT_WORK_SIZE＋192）×num_fgntbl

num_fgntbl：外部表の指定数

COPY文を実行する場合は，外部表の指定数に1を加算してください。

VARIOA_MNG_SIZE：データサイズの大きい可変長データの管理領域（単位：バイト）

値式中にSTRING型のデータを指定する場合

472を代入してください。

値式中にSTRING型のデータを指定しない場合

0を代入してください。

SORTGRP_PROC_SIZE

SQL処理リアルスレッド用のソートグループ化の作業領域

次のどちらかの集合関数をSQL文中に指定する場合に求めてください。どちらの指定もない場合は，0を代入してください。

LISTAGG集合関数

ARRAY_AGG集合関数

LAG関数

LEAD関数

計算式（単位：バイト）

SORTGRP_PROC_SIZE＝
       352×Σ（sortgrp_cor_query_wrk_num）×uthd_num
       ＋LISTAGG_PROC_SIZE＋ARRAY_AGG_PROC_SIZE＋LAG_LEAD_PROC_SIZE

Σ（sortgrp_cor_query_wrk_num）

外への参照列を含む副問合せ中に含まれるLISTAGG集合関数，またはARRAY_AGG集合関数を指定した問合せ指定ごとに，変数sortgrp_cor_query_wrk_numを求めてください。そして，それぞれ求めた値を合計してください。

sortgrp_cor_query_wrk_num

外への参照列を含む副問合せ中に含まれるソートグループ化の作業領域の個数

次の数を合計したものを代入してください。

ALL（省略値）を指定したLISTAGG集合関数の指定数

DISTINCTを指定したLISTAGG集合関数の指定数×2

ARRAY_AGG集合関数の指定数

DISTINCT集合関数の指定数

逆分布関数の指定数

LAG関数の指定数

LEAD関数の指定数

uthd_num

1リアルスレッドで生成できる擬似スレッド数（サーバ定義adb_sys_uthd_numオペランドの指定値）

LISTAGG_PROC_SIZE

SQL処理リアルスレッド用のLISTAGG集合関数の作業領域

SQL文中に，LISTAGG集合関数を含む場合に求めてください。LISTAGG集合関数を含まない場合は，0になります。

計算式（単位：バイト）

LISTAGG_PROC_SIZE＝128×listagg_cor_query_num×uthd_num

listagg_cor_query_num

外への参照列を含む副問合せ中に指定されているLISTAGG集合関数の数

uthd_num

1リアルスレッドで生成できる擬似スレッド数（サーバ定義adb_sys_uthd_numオペランドの指定値）

ARRAY_AGG_PROC_SIZE

SQL処理リアルスレッド用のARRAY_AGG集合関数の作業領域

ARRAY_AGG集合関数をSQL文中に指定する場合に求めてください。ARRAY_AGG集合関数を指定しない場合は，0を代入してください。

計算式（単位：バイト）

ARRAY_AGG_PROC_SIZE＝
  Σ｛array_agg_cor_query_num×（（array_agg_cor_query_num＋1）×104＋RESULT_WORK_SIZE）
     ｝×uthd_num
＋Σ（array_agg_not_cor_query_num）×RESULT_WORK_SIZE

Σ｛array_agg_cor_query_num×（（array_agg_cor_query_num＋1）×104＋RESULT_WORK_SIZE）｝

外への参照列を含む副問合せ中の，ARRAY_AGG集合関数を指定した問合せ指定ごとに，次の値を求めてください。そして，それぞれ求めた値を合計してください。

array_agg_cor_query_num×（（array_agg_cor_query_num＋1）×104＋RESULT_WORK_SIZE）

array_agg_cor_query_num

外への参照列を含む副問合せ中の問合せ指定に指定されているARRAY_AGG集合関数の数

uthd_num

1リアルスレッドで生成できる擬似スレッド数（サーバ定義adb_sys_uthd_numオペランドの指定値）

Σ（array_agg_not_cor_query_num）

外への参照列を含む副問合せ中には指定されていない問合せ指定ごとに，変数array_agg_not_cor_query_numを求めてください。そして，それぞれ求めた値を合計してください。

array_agg_not_cor_query_num

外への参照列を含む副問合せ中には指定されていない問合せ指定に指定されているARRAY_AGG集合関数の数

RT_AGGR_PROC_WORK_SIZE

SQL処理リアルスレッド用のリアルスレッド単位の集計作業領域

SQL文中に，次に示すどれかの要素を含む場合に求めてください。含まない場合は，0を代入してください。

LISTAGG集合関数

ARRAY_AGG集合関数

逆分布関数

ウィンドウ関数

データ長の計算は，「表6‒11　各データ型のデータ長の一覧」を参照してください。

計算式（単位：バイト）

RT_AGGR_PROC_WORK_SIZE＝
       （64×RESULT_WORK_SIZE×sql_rthd_num）×rt_aggr_num

sql_rthd_num

最大SQL処理リアルスレッド数

サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値です。指定値が0の場合は1を代入してください。

rt_aggr_num

該当する要素の数

LAG_LEAD_PROC_SIZE

SQL処理リアルスレッド用のLAG関数およびLEAD関数の作業領域

SQL文中にLAG関数またはLEAD関数を指定する場合に求めてください。指定しない場合は，0を代入してください。

計算式（単位：バイト）

LAG_LEAD_PROC_SIZE＝(400×lag_cor_query_num＋352×lead_cor_query_num)×uthd_num

lag_cor_query_num

外への参照列を含む副問合せ中に指定するLAG関数の数

lead_cor_query_num

外への参照列を含む副問合せ中に指定するLEAD関数の数

uthd_num

サーバ定義adb_sys_uthd_numオペランドの指定値

PRL_PROC_SIZE

SQLパラレル実行機能のリアルスレッド管理領域

SQLパラレル実行機能が適用される場合に求めてください。SQLパラレル実行機能が適用されない場合は，0を代入してください。

値（単位：バイト）

PRL_PROC_SIZE＝512＋PRL_HASH_PROC_SIZE

PRL_HASH_PROC_SIZE

ノード間共有するハッシュテーブルのリアルスレッド管理領域

SQLパラレル実行機能が適用され，かつSQL文中にGROUP BY句を含む場合に求めてください。SQLパラレル実行機能が適用されない場合，またはGROUP BY句を含まない場合は，0を代入してください。また，最大SQL処理リアルスレッド数，またはハッシュテーブル領域サイズが0の場合も，0を代入してください。

計算式（単位：バイト）

PRL_HASH_PROC_SIZE＝
   4,175＋8×hashtbl_num＋（8,512＋（13,632＋MAX（131,072 ，hashtbl_row_len）×80）
        ×node_num）×prl_hashtbl_num

hashtbl_num

ハッシュテーブル数

「6.25.3　ハッシュテーブルを使用した検索時に作成される作業表の数」を参照してください。

hashtbl_row_len

ハッシュテーブル行長

「6.25.3　ハッシュテーブルを使用した検索時に作成される作業表の数」を参照してください。

node_num

マルチノード構成のノード数

prl_hashtbl_num

GROUP BY句の数

SQL_PRL_COMM_SIZE

操作系SQLの通信管理領域

次の値を代入してください。

値（単位：バイト）

SQLパラレル実行機能が適用される場合

SQL_PRL_COMM_SIZE＝8,256

SQLパラレル実行機能が適用されない場合

SQL_PRL_COMM_SIZE＝0

BUF_DLYSZ

更新ページの通知領域

次の値を代入してください。

値（単位：キロバイト）

ARC_DIR_PATH

削除対象のアーカイブディレクトリのパス名を管理する領域

次に示す計算式から求めてください。

計算式（単位：キロバイト）

archivedir_path_num

TRUNCATE TABLE文を実行する場合は，1を代入してください。

PURGE CHUNK文を実行する場合は，削除対象のチャンク数を代入してください。

RNGIDX_INFO_SIZE

チャンクのレンジインデクス情報領域

次に示す計算式から求めてください。

計算式（単位：バイト）

rngidx_num

SQL文の実行時に，チャンクのスキップに使用されるレンジインデクスのうち，B-treeインデクスを使用して検索する表の検索に使用されるレンジインデクスの合計数

同じレンジインデクスでSQL文が複数回実行される場合は1として合計数を求めてください。合計数が0の場合，RNGIDX_INFO_SIZEは0としてください。

なお，この値はアクセスパス情報の表示結果から，次の手順で求めることができます。

アクセスパス情報の表示結果の詳細表示の，表の検索方式に関する情報とインデクスに関する情報を確認してください。次のどちらかの条件に該当するものをすべて探してください。

表の検索方式がINDEX SCANであり，インデクスに関する情報の1つ目のインデクス情報のINDEX TYPEがB-TREE（B-treeインデクス）である

表の検索方式がKEY SCANである

手順1.の条件に該当し，かつインデクスに関する情報が次の両方の条件に該当するものをすべて探してください。

INDEX TYPEがRANGE（レンジインデクス）である

SKIP CONDがCHUNKである

手順2.に該当するインデクスに関する情報にあるINDEX NAMEのうち，同じ名前のものは重複排除して合計数を求めてください。求めた値がrngidx_numとなります。

次に示すアクセスパス情報の表示結果の例の場合，INDEX NAMEは，「T1RIX1」（2つ）と，「T2RIX1」（1つ）の2種類です。そのため，rngidx_numは2となります。

アクセスパスについては，マニュアルHADB　AP開発ガイドのアクセスパスの見方（SQL文の実行計画の見方）を参照してください。

chunk_num(i)

i番目のレンジインデクスが定義されている表に作成されたチャンク数

アーカイブチャンクの数は除いてください。シングルチャンク表の場合は1となります。

RNGIDX_INFO_ENTRY_SIZE(i)

レンジインデクス情報エントリ長

次に示す計算式から求めてください。

計算式（単位：バイト）

col_size(i)

レンジインデクスを定義した列のデータ長（単位：バイト）

各列のデータ長は，「表6‒11　各データ型のデータ長の一覧」を参照してください。

一時領域に格納する各データのデータ長については，次に示す表から求めてください。

表6‒9　一時領域上に格納する各データのデータ長

項番

分類

データ型

データ長（単位：バイト）

1

数データ

BIGINT

8

2

INTEGER※1

4

3

SMALLINT※2

2

4

DECIMAL

NUMERIC

1≦精度≦4

2

5

5≦精度≦8

4

6

9≦精度≦16

8

7

17≦精度≦38

16

8

DOUBLE PRECISION

8

9

FLOAT

10

REAL

4

11

文字データ

CHAR

定義長

12

VARCHAR

1≦定義長≦32,000

定義長＋2

13

32,001≦定義長≦64,000

定義長＋4

14

STRING

処理対象データのデータサイズの最大値＋4

15

日時データ

DATE

4

16

TIME(p)

3＋↑p÷2↑

17

TIMESTAMP(p)

7＋↑p÷2↑

18

バイナリデータ

BINARY

定義長

19

VARBINARY

定義長＋2

20

配列データ

ARRAY

要素データ型がSTRING型の場合

要素データ型のデータ長×m＋2

上記以外

要素データ型のデータ長×n＋2

21

構造データ

STRUCT

フィールドごとに求めた，「フィールドデータ型のデータ長＋1」の合計値

22

論理データ

BOOLEAN

1

23

UUIDデータ

UUID

16

（凡例）

p：小数秒の桁数（0，3，6，9または12。省略した場合は0を仮定）

m：処理対象の配列データの実際の最大要素数

n：配列データの最大要素数（2～30,000の整数）

注

CURRENT_USERは，VARCHAR(100)として計算してください。

注※1

整数データ型のデータ形式がレガシー形式の場合は，データ長の値を8バイトとして計算してください。

注※2

整数データ型のデータ形式がレガシー形式の場合は，データ長の値を4バイトとして計算してください。

SQL結果格納領域中の各データのデータ長については，次に示す表から求めてください。

表6‒10　SQL結果格納領域中の各データのデータ長

項番

分類

データ型

データ長（単位：バイト）

1

数データ

BIGINT

8

2

INTEGER※1

4

3

SMALLINT※2

2

4

DECIMAL

NUMERIC

1≦精度≦4

2

5

5≦精度≦8

4

6

9≦精度≦16

8

7

17≦精度≦38

16

8

DOUBLE PRECISION

8

9

FLOAT

10

REAL

4

11

文字データ

CHAR

定義長

12

VARCHAR

1≦定義長≦32,000

定義長＋2

13

32,001≦定義長≦64,000

定義長＋4

14

STRING

MAX（132 , 処理対象データのデータサイズの最大値）＋64

15

日時データ

DATE

4

16

TIME(p)

3＋↑p÷2↑

17

TIMESTAMP(p)

7＋↑p÷2↑

18

バイナリデータ

BINARY

定義長

19

VARBINARY

定義長＋2

20

配列データ

ARRAY

要素データ型のデータ長×n＋2

21

構造データ

STRUCT

フィールドごとに求めた，「フィールドデータ型のデータ長＋1」の合計値

22

論理データ

BOOLEAN

1

23

UUIDデータ

UUID

16

（凡例）

p：小数秒の桁数（0，3，6，9または12。省略した場合は0を仮定）

n：配列データの最大要素数（2～30,000の整数）

注

CURRENT_USERは，VARCHAR(100)として計算してください。

注※1

整数データ型のデータ形式がレガシー形式の場合は，データ長の値を8バイトとして計算してください。

注※2

整数データ型のデータ形式がレガシー形式の場合は，データ長の値を4バイトとして計算してください。

データ長については，次に示す表から求めてください。

表6‒11　各データ型のデータ長の一覧

項番

分類

データ型

データ長（単位：バイト）

1

数データ

BIGINT

8

2

INTEGER※1

4

3

SMALLINT※2

2

4

DECIMAL

NUMERIC

1≦精度≦4

2

5

5≦精度≦8

4

6

9≦精度≦16

8

7

17≦精度≦38

16

8

DOUBLE PRECISION

8

9

FLOAT

10

REAL

4

11

文字データ

CHAR

定義長

12

VARCHAR

1≦定義長≦32,000

定義長＋2

13

32,001≦定義長≦64,000

定義長＋4

14

STRING

32,000,004

15

日時データ

DATE

4

16

TIME(p)

3＋↑p÷2↑

17

TIMESTAMP(p)

7＋↑p÷2↑

18

バイナリデータ

BINARY

定義長

19

VARBINARY

定義長＋2

20

配列データ

ARRAY

要素データ型のデータ長×n＋2

21

構造データ

STRUCT

フィールドごとに求めた，「フィールドデータ型のデータ長＋1」の合計値

22

論理データ

BOOLEAN

1

23

UUIDデータ

UUID

16

（凡例）

p：小数秒の桁数（0，3，6，9または12。省略した場合は0を仮定）

n：配列データの最大要素数（2～30,000の整数）

注

CURRENT_USERはデータ型VARCHAR，定義長100として計算してください。

注※1

整数データ型のデータ形式がレガシー形式の場合は，データ長の値を8バイトとして計算してください。

注※2

整数データ型のデータ形式がレガシー形式の場合は，データ長の値を4バイトとして計算してください。

(d)　変数RTHD_ROLLBKSZの求め方

変数RTHD_ROLLBKSZは，ロールバック処理時，またはHADBサーバの再開始時に加算します。次に示す値を代入してください。

値（単位：キロバイト）

RTHD_ROLLBKSZ＝ 67

(e)　変数RTHD_DBEXTSZの求め方

変数RTHD_DBEXTSZは，DBエリア拡張時に加算します。次に示す値を代入してください。

値（単位：キロバイト）

RTHD_DBEXTSZ＝ 32,768

(f)　変数RTHD_WORKBUFの求め方

変数RTHD_WORKBUFは，作業表使用時に加算します。次に示す計算式から求めてください。

計算式（単位：キロバイト）

RTHD_WORKBUF＝
   ↑（clt_wrk_page_num×（wrk_page_size＋304）＋8
     ×（clt_wrk_page_num＋WIO_NUM）＋wrk_page_size）÷1,024↑×1.05

変数の説明

clt_wrk_page_num

クライアント定義adb_dbbuff_wrktbl_clt_blk_numオペランドの指定値（ただし，adbexportコマンド実行時はエクスポートオプションadb_export_wrktbl_blk_numの指定値）

wrk_page_size

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」の「表6‒3　DBエリアのページサイズ」の作業表用DBエリアのページサイズを参照して，バイト単位で求めてください。

WIO_NUM

クライアント定義adb_dbbuff_wrktbl_clt_blk_numオペランドの指定値（ただし，adbexportコマンド実行時はエクスポートオプションadb_export_wrktbl_blk_numの指定値）と変数UTHNUMのうち，小さい方の値を代入してください。変数UTHNUMについては，「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(a)　変数SCIの求め方」を参照してください。

(g)　変数RTHD_EXESQLDICSZの求め方

変数RTHD_EXESQLDICSZは，操作系SQLの前処理時に加算します。次に示す計算式から求めてください。

なお，対象表がビュー表の場合は，計算式で求めた値に39キロバイトを加算してください。

計算式（単位：キロバイト）

変数の説明

LIKE_REG_PRD_SIZE

LIKE_REGEX述語の実行管理領域（単位：バイト）

次に示す計算式から求めてください。

なお，LIKE_REGEX述語を指定していない場合は，変数LIKE_REG_PRD_SIZEに0を代入してください。

scan_str_num

パターン文字列に指定した文字列の文字数

normal_factor_size

パターン文字列に指定された正規表現内の正規因子の数

paren_nest_num

パターン文字列に指定された正規表現内の丸括弧のネスト数

vertical_line_num

パターン文字列に指定された正規表現内の垂直棒の数

quantifier_nest_num

パターン文字列に指定された正規表現内の量指定子のネストの数

repetition_factor_sum

パターン文字列に指定された正規表現内の繰り返し因子に指定された上限値の合計値

繰り返し因子に指定された上限値が存在しない場合は，繰り返し因子に指定された下限値の値を代入してください。

正規表現の記述例

((a{2}){5}){8,10}

計算式（単位：個数）

正規表現の記述例と，変数LIKE_REG_PRD_SIZEの計算式の例を，次に示します。

正規表現の記述例1

KFAA11[0-9]{3}-E

計算式の例（単位：バイト）

正規表現の記述例2

KFAA6000[2-9]-E.*uid=12345.*

計算式の例（単位：バイト）

BYTE_CODE_SIZE

LIKE_REGEX述語の実行管理領域内のパターン文字列に指定された正規表現を評価用に変換したバイトコードを格納する領域（単位：バイト）

次に示す計算式から求めてください。

char_specifier_num

パターン文字列に指定された正規表現内の文字指定子の数の合計値

文字指定子に繰り返し因子が指定されている場合は，その繰り返し数を加算してください。また，「(a{10}){10}」のように繰り返し因子がネストしている場合は，繰り返し数を乗算してください。そして，乗算した結果を，変数char_specifier_numに加算してください。

繰り返し因子に指定された繰り返しの数については，「(c)　変数RTHD_EXESQLSZの求め方」の「表6‒7　繰り返し因子に指定された繰り返しの数の求め方」を参照してください。

quantifier_num

パターン文字列に指定された正規表現内の繰り返し因子を除く量指定子の数

char_class_num

パターン文字列に指定された正規表現内の文字クラスの数の合計値

文字クラスに繰り返し因子が指定されている場合は，その繰り返し数を加算してください。また，「(¥d{10}){10}」のように繰り返し因子がネストしている場合は，繰り返し数を乗算してください。そして，乗算した結果を，変数char_class_numに加算してください。

繰り返し因子に指定された繰り返しの数については，「(c)　変数RTHD_EXESQLSZの求め方」の「表6‒7　繰り返し因子に指定された繰り返しの数の求め方」を参照してください。

normal_char_set_num

パターン文字列に指定された正規表現内の正規文字集合識別子指定の数の合計値

正規文字集合識別子指定に繰り返し因子が指定されている場合は，その繰り返し数を加算してください。また，「([[:alpha:]]{10}){10}」のように繰り返し因子がネストしている場合は，繰り返し数を乗算してください。そして，乗算した結果を，変数normal_char_set_numに加算してください。

繰り返し因子に指定された繰り返しの数については，「(c)　変数RTHD_EXESQLSZの求め方」の「表6‒7　繰り返し因子に指定された繰り返しの数の求め方」を参照してください。

メモ

「([[:alpha:]]{10}){10}」の場合は，正規文字集合も繰り返しているため，変数char_list_numにも100を加算する必要があります。

char_list_num

パターン文字列に指定された正規表現内の正規文字集合の数の合計値

正規文字集合に繰り返し因子が指定されている場合は，その繰り返し数を加算してください。また，「([abc]{10}){10}」のように繰り返し因子がネストしている場合は，繰り返し数を乗算してください。そして，乗算した結果を，変数char_list_numに加算してください。

繰り返し因子に指定された繰り返しの数については，「(c)　変数RTHD_EXESQLSZの求め方」の「表6‒7　繰り返し因子に指定された繰り返しの数の求め方」を参照してください。

repetition_factor_sum

パターン文字列に指定された正規表現内の繰り返し因子に指定された上限値の合計値

繰り返し因子に指定された上限値が存在しない場合は，繰り返し因子に指定された下限値の値を代入してください。

正規表現の記述例

((a{2}){5}){8,10}

計算式（単位：個数）

正規表現の記述例と，変数BYTE_CODE_SIZEの計算式の例を，次に示します。

正規表現の記述例1

KFAA11[0-9]{3}-E

計算式の例（単位：バイト）

正規表現の記述例2

KFAA6000[2-9]-E.*uid=12345.*

計算式の例（単位：バイト）

CONTAINS_PRD_SIZE

スカラ関数CONTAINSの実行管理領域（単位：バイト）

次に示す計算式から求めてください。

なお，スカラ関数CONTAINSを指定していない場合は，変数CONTAINS_PRD_SIZEに0を代入してください。

scan_str_num

パターン文字列に指定した文字列の文字数

SYN_LIST_SIZE

同義語の格納領域（単位：バイト）

次に示す計算式から求めてください。

なお，スカラ関数CONTAINSで同義語検索指定を指定していない場合は，変数SYN_LIST_SIZEに0を代入してください。

syn_str_num

同義語の平均文字数

syn_group_size

1同義語グループ中に指定されている同義語数の平均

(h)　変数RTHD_COMMUSZの求め方

変数RTHD_COMMUSZは，通信処理時に加算します。次に示す計算式から求めてください。

計算式（単位：キロバイト）

RTHD_COMMUSZ＝ RCVBUF＋SNDBUF

変数の説明

RCVBUF：受信バッファ

次に示す計算式から求めてください。

計算式（単位：キロバイト）

RCVBUF＝ ↑（352＋CMSG）÷1,024↑

CMSG：HADBクライアントからの送信データサイズ

マニュアルHADB　AP開発ガイドのHADBクライアントのメモリ所要量の見積もりのHADBクライアントとHADBサーバの通信時に使用するメモリ所要量にある変数CMSGを参照してください。

SNDBUF：送信バッファ

初期確保時の送信バッファは次に示す値を代入してください。

値（単位：キロバイト）

SNDBUF＝ 4

初期確保した送信バッファを超える送信データが作成されると，HADBサーバは次に示す計算式で求められた値を再確保します。

計算式（単位：キロバイト）

SNDBUF＝ ↑SMSG÷4,096↑×4

SMSG：HADBサーバの送信データサイズ

送信データサイズは処理の内容によって異なります。各処理で確保される送信データサイズを次の表に示します。

表6‒12　各処理で確保される送信データサイズの一覧

項番

処理内容

送信データサイズの計算式（単位：バイト）

1

SQL文を実行した場合

2

SQL文の実行がNOROWの場合

3

FETCHの場合

4

FETCHがNOROWの場合（一括転送で1行以上FETCHできた場合）

5

SQL文の前処理をした場合

6

adbdbstatusコマンドを実行した場合

（凡例）

srv_base_info：送信データの基本情報

152バイトを代入してください。

srv_execute：実行固有情報

24バイトを代入してください。

srv_fetch：FETCH固有情報

16バイトを代入してください。

srv_norow：NOROW固有情報

520バイトを代入してください。

srv_prepare：前処理固有情報

56バイトを代入してください。

srv_status_info：データベース状態解析固有情報

1,048,576バイトを代入してください。

ARRAY_RESULT：一括更新結果

次に示す計算式から求めてください。

計算式（単位：バイト）

ARRAY_RESULT＝ （array_num−1）×8

array_num：一括更新した？パラメタの組の数

APの実装方法によって異なります。

CLI関数を使用したAPの場合

a_rdb_SQLBindArrayParams()の引数ArrayCountに指定した数になります。a_rdb_SQLBindParams()を使用してパラメタ結合した場合は，1で固定されます。

JDBCドライバを使用したAPの場合

addBatchメソッドで登録したパラメタリストの数になります。executeBatchメソッドまたはexecuteLargeBatchメソッドを使用しない場合は，1で固定されます。

FETCH_DATA：一括転送行データ

次に示す計算式から求めてください。

計算式（単位：バイト）

col_num

SQL文に指定した選択式の数

col_size（i）

各選択式のデータ長

fetch_size：FETCH処理時の一括送信行数

クライアント定義adb_clt_fetch_sizeオペランドの指定値を代入してください。クライアント定義adb_clt_fetch_sizeオペランドについては，マニュアルHADB　AP開発ガイドの性能に関するオペランドを参照してください。

PREPARE_INFO_SIZE：SQL文の前処理情報

「(c)　変数RTHD_EXESQLSZの求め方」の変数PREPARE_INFO_SIZEを参照してください。

APATHVIEW：アクセスパスを表示する際に作成されるアクセスパス情報管理領域

「(l)　変数RTHD_TOTALSQLSSZの求め方」の変数APATHVIEWを参照してください。

(i)　変数RTHD_EXPSQLTRCSZの求め方

変数RTHD_EXPSQLTRCSZは，SQLトレースバッファの拡張時に加算します（変数RTHD_EXPSQLTRCSZの値が32,768キロバイトを超えると，SQLトレースバッファが拡張されます）。次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

PARAM_INFO_SIZE

「(c)　変数RTHD_EXESQLSZの求め方」の変数PARAM_INFO_SIZEを参照してください。

array_num

一括更新する際に指定した？パラメタセットの数

(j)　変数RTHD_AUDINFSZの求め方

変数RTHD_AUDINFSZは，監査証跡機能が有効な場合に加算します。次に示す値を代入してください。

値（単位：キロバイト）

RTHD_AUDINFSZ＝ 3

(k)　変数RTHD_COLUMNIZESZの求め方

変数RTHD_COLUMNIZESZは，更新行のカラム化機能が有効な場合に加算します。次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

TABLELIST：表名リスト情報

次に示す値を代入してください。

値（単位：キロバイト）

TABLELIST＝ 833

table_num：更新行のカラム化機能の対象となるカラムストア表の総数

更新行のカラム化機能の対象となるカラムストア表については，「11.21.2　準備作業」の「(1)　機能の適用対象となるカラムストア表を確認する」を参照してください。

TABLEINFO（i）：更新行のカラム化機能の対象となるi番目のカラムストア表の情報

次に示す計算式から求めてください。

計算式（単位：キロバイト）

column_num

更新行のカラム化機能の対象となるi番目のカラムストア表の列数

index_num

更新行のカラム化機能の対象となるi番目のカラムストア表に定義されたレンジインデクス数

chunk_num

更新行のカラム化機能の対象となるi番目のカラムストア表のチャンク数

シングルチャンク表の場合は1としてください。

SEGMENTLIST（k）：k番目のチャンクのセグメントリスト情報

次に示す計算式から求めてください。

計算式（単位：キロバイト）

SEGMENTLIST(k)＝↑24×segment_num÷1,024↑

segment_num

k番目のチャンクのローデータ用セグメント数

「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」にある次の変数を参照して求めてください。

■マルチチャンク表の場合

「(g)　変数SGCOLUMNTBLおよびPGCOLUMNTBLの求め方（マルチチャンク表の場合）」の変数ROWDATASEGNUM（i，k）

■シングルチャンク表の場合

「(b)　変数SGCOLUMNTBLおよびPGCOLUMNTBLの求め方（シングルチャンク表の場合）」の変数ROWDATASEGNUM（i）

RELOCATE_DAT（i）：更新行のカラム化機能の対象となるi番目のカラムストア表の再配置用作業領域

次に示す計算式から求めてください。

計算式（単位：キロバイト）

RELOCATE_DAT(i)＝
  ↑（max_rowsz×2＋1,768＋16×col_num
      ＋↓（96＋216※＋544＋（652＋page_size）×col_num
            ＋（80＋page_size）×SEGSIZE＋7）÷8↓×8
      ＋432＋128×col_num
      ＋↓（2×col_num＋7）÷8↓×8
      ＋（1,736＋16×col_num）×col_num＋max_rowsz
     ）÷1,024↑
  ＋16,384＋1,024×col_num

注※

更新行のカラム化機能の対象となるi番目のカラムストア表にレンジインデクスが定義されているときに加算してください。

max_rowsz

最大行長（単位：バイト）

最大行長については，「5.8.2　行の種別ごとの格納ページ数の求め方」の「(1)　基本行用ページ数（変数BP（i））の求め方」の行長ROWSZの計算式を基に求めてください。

page_size

更新行のカラム化機能の対象となるi番目のカラムストア表が格納されているデータ用DBエリアのページサイズ（単位：バイト）

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」にある「表6‒3　DBエリアのページサイズ」を参照して求めてください。

col_num

更新行のカラム化機能の対象となるi番目のカラムストア表の列数

SEGSIZE

更新行のカラム化機能の対象となるi番目のカラムストア表が格納されているデータ用DBエリアのセグメントサイズ（単位：ページ数）

次に示す計算式から求めてください。

SEGSIZE＝ 1セグメントの容量（単位：バイト）÷page_size

RTHD_DATACOMPRESS（i）：更新行のカラム化機能の対象となるi番目のカラムストア表のデータ圧縮用作業領域

「6.3.6　adbimportコマンド実行時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（adbimportコマンド実行時）」の「(d)　変数RTHD_DATALOADの求め方」の変数RTHD_DATACOMPRESSを参照して求めてください。

(l)　変数RTHD_TOTALSQLSSZの求め方

変数RTHD_TOTALSQLSSZは，SQL文の前処理時に加算します。次に示す計算式から求めてください。

計算式（単位：キロバイト）

RTHD_TOTALSQLSSZ＝ MAXSQLWRK＋TOTALSQLSCT＋PREDICACCSZ

変数の説明

MAXSQLWRK

1トランザクション中に，SQL文の前処理で使用される作業領域

次に示す計算式から求めてください。

計算式（単位：キロバイト）

MAXSQLWRK＝ （max_sql（SQLPSZ）＋20）×max_users

max_sql（）

SQLPSZの計算結果から最大値を代入します。

max_users

サーバ定義adb_sys_max_usersオペランドの指定値

SQLPSZ

SQL文の前処理で使用される作業領域

次に示す計算式から求めてください。

計算式（単位：キロバイト）

tbln

FROM句に指定した表数

gbycoln

GROUP BY句に指定した列の数

obysorn

ORDER BY句に指定したソートキーの数

updsetn

UPDATE文のSET句の数

inscolnamn

INSERT文の挿入対象列の数

identn

識別子の数

drvt_num

導出表の個数

max_query_spec

1SQL文に指定できる問合せ指定の最大数

vtbl

1SQL文中のビュー表の数

vquery_num

ビュー定義に指定した問合せ指定の数

vjotbl_num

ビュー定義に指定した結合表の数

vtbl_num

ビュー定義に指定した表の数

jointbln

結合表の数

subqun

副問合せの数

queryn

問合せ指定の数

col_num

選択式の数

pwl

WITH句の個数

drvtbln

FROM句に指定した導出表の数

drvcolnum

導出表の列数

fmt_len

スカラ関数CONVERTの書式サイズ（単位：バイト）

drvtblnum

導出表の数

viewcolnum

ビュー表の列数

viewtblnum

ビュー表の数

qurycolnum

問合せ名の列数

qurytblnum

問合せ名の数

charnum

1SQL文のバイト数

vcol_num

ビュー定義に指定した列の数

vwindow_num

ビュー定義に指定したウィンドウ関数の数

vgroup_num

ビュー定義に指定したGROUP BY句の数

vsetf_num

ビュー定義に指定した集合関数の数

gbyn

GROUP BY句の数

qexp

集合演算の数

drvjotblnum

導出表に指定した結合表の数

drvquerynum

導出表に指定した問合せの数

drvwindownum

導出表に指定したウィンドウ関数の数

drvgroupnum

導出表に指定したGROUP BY句の数

drvsetfnum

導出表に指定した集合関数の数

projn

値式の数

max_drvtbln

FROM句に指定できる表数の最大値

fjoin_drvquerynum

FULL OUTER JOIN中に含まれる導出表に指定した問合せの数

fjoin_tbln

FULL OUTER JOIN中の表参照の数

fjoin_tblcoln

FULL OUTER JOIN中の表参照の列数

winfuncn

ウィンドウ関数の数

query_expn

問合せ式の数

setfuncn

集合関数の数（AVGの場合は＋2とします）

drv_setopnum

導出表に指定した集合演算の数

archk_tbln

アーカイブマルチチャンク表の数

csvrd_fieldnonum

ADB_CSVREAD関数に指定されたフィールドデータ番号の数

predn

述語の数

qurytblfuncn

問合せ名に指定した表関数導出表の数

tblfuncn

表関数導出表の数

colspen

列指定の数

concat_n

連結演算の数

gname_coln

グループ化列の列名の数

inscoln

挿入列の数

prep_tbln

前処理表の数

withlistnum_recursion

再帰的問合せのWITHリスト要素の数

withlistnum_recursion_query

再帰的問合せ中の問合せ指定の数

vsetop_num

ビュー定義に指定した集合演算の数

audrd_flpthn

ADB_AUDITREAD関数に指定した監査証跡ファイルのパス名の数

tblfunc_coln

表関数導出表の列数

setfunc_distn

DISTINCT集合関数の数

inn

IN述語の数

any_elmrefn

ANYを指定した配列要素参照の数

unnestn

集まり導出表の数

arraggn

ARRAY_AGG集合関数の数

psetfuncn

逆分布関数の数

listaggn

LISTAGG集合関数の数

casen

CASE式の数

TOTALSQLSCT

1トランザクション中で作成される，SQL文の前処理の前処理結果管理領域の合計

なお，JDBCドライバからSQL文を実行する場合は，1コネクション内で同時に作成されるSQL文の前処理の前処理結果管理領域の合計となります。

次に示す計算式から求めてください。

計算式（単位：キロバイト）

TOTALSQLSCT＝ sum_sql（SQLPSSZ＋SQLSSZ＋APATHVIEW）×max_users

max_users

サーバ定義adb_sys_max_usersオペランドの指定値

sum_sql（）

1トランザクション内で実行するSQL文ごとに，「SQLPSSZ＋SQLSSZ＋APATHVIEW」を計算し，その中の最大値を代入してください。

なお，JDBCドライバからSQL文を実行する場合は，1コネクション内で実行するSQL文ごとに，「SQLPSSZ＋SQLSSZ＋APATHVIEW」を計算し，その中の最大値を代入してください。

SQLPSSZ

SQL文の前処理時に取得される前処理結果制御領域

次に示す計算式から求めてください。

計算式（単位：キロバイト）

SQLPSSZ＝ ↑184÷1,024↑

SQLSSZ

SQL文の前処理で使用される前処理結果管理領域

次に示す計算式から求めてください。

計算式（単位：キロバイト）

注※

コスト情報を収集した表の場合は，32,776となります。

tblcoln

処理対象表の列数

tblidxn

処理対象表に定義したインデクス数

tbln

FROM句に指定した表の数

col_num

選択式の数

insvaln

挿入値の数

inscoln

挿入列の数

updcoln

更新列の数

colspen

列指定の数

gbycoln

GROUP BY句に指定したグループ化列の数

operan

四則演算の数

liken

LIKE述語の数

inn

IN述語の数

scafuncn

スカラ関数の数

setfuncn

集合関数の数（AVGの場合は＋2とします）

notn

NOTの数

orn

ORの数

param_num

？パラメタの数

sregn

日時情報取得関数およびユーザ情報取得関数の総数

rown

ROWの数

jointbln

結合表の数

inscolnamn

INSERT文の挿入対象列の数

subqun

副問合せの数

ord_num

ORDER BY句に指定した列の数

queryn

問合せ指定の数

logicn

AND，ORおよびNOTの論理演算の数

predn

述語の数

base_num

ビュー定義に指定した基表の数

sel_num

ビュー定義に指定した問合せ指定の選択式の数

pwg

ラベル付き間隔の数

scl

列数（列指定の数と，*指定の展開後の列指定の数の総和）

sgc

グループ化列数

ssk

ORDER BY句に指定したソートキーの数

srw

ROWの対象表に含まれるDECIMAL型，NUMERIC型，TIMESTAMP型の数

exp_num

値式の総数

sum_view_object（）

括弧内のものについて，1SQL文内で指定したビュー表のビューオブジェクトサイズの合計値（単位：バイト）

view_size

ビューオブジェクトのサイズ（ディクショナリ表（実表）のSQL_VIEWS表のVIEW_OBJECT_SIZE列の値）（単位：バイト）

qexp_coln

集合演算中の問合せ式の列数

gname_coln

グループ化列の列名の数

default_coln

DEFAULT句を指定した列数

act_num

CASE式のTHENとELSEの総数

decode_revn

スカラ関数DECODEの返却値の数

fmt_len

スカラ関数CONVERTの書式サイズ（単位：バイト）

obysorn

ORDER BY句に指定したソート項目の数

pw29

WHENの個数

projn

値式の数

fulljoin_num

SQL文に指定されたFULL OUTER JOINの数

fj_join_num

FULL OUTER JOINに指定された結合表の数

gbyn

GROUP BY句の数

qexp

集合演算の数

query_expn

問合せ式の数

winfuncn

ウィンドウ関数の数

withlistnum

WITHリスト要素の数

likeregn

LIKE_REGEX述語の数

listaggn

LISTAGG集合関数の数

tblfuncn

表関数導出表の数

multisetn

マルチ集合値式の数

rowvaluecon

行値構成子の数

tablevaluecon

表値構成子の数

rowvaluecon_coln

行値構成子の列数

gexp_coln

グループ値式の数

fucall_paramn

関数呼び出しの引数の数

csvrd_n

ADB_CSVREAD関数の数

csvrd_fieldnonum

ADB_CSVREAD関数に指定されたフィールドデータ番号の数

multiset_projn

マルチ集合値式のマルチ集合要素の数

archk_tbln

アーカイブマルチチャンク表の数

archk_coln

アーカイブマルチチャンク表の導出列の数

drvtblnum

導出表の数

comp_dec_num

比較演算項にDECIMAL型またはNUMERIC型のデータと，INTEGER型，BIGINT型，またはSMALLINT型のデータを指定している演算数

contains_n

スカラ関数CONTAINSの数

def_char_datesn

日時データの既定の文字列表現の数

drvcolnum

導出表の列数

tblfunc_coln

表関数導出表の列数

pw_when

CASE式に指定したWHENの個数

regex_num

LIKE_REGEX述語の指定数

scalfunc_paramn

スカラ関数の引数の数

setfuncn0

集合関数の数

winf_part_projn

ウィンドウ分割句中の値式の数

audrd_n

ADB_AUDITREAD関数の数

ltdecode_revn

スカラ関数LTDECODEの返却値の数

randcursornum

スカラ関数RANDOMCURSORの数

randrownum

スカラ関数RANDOMROWの数

elmrefn

配列要素参照の数

unnestn

集まり導出表の数

unnest_coln

集まり導出表の列数

arraggn

ARRAY_AGG集合関数の数

setfunc_distn

DISTINCT集合関数の数

psetfuncn

逆分布関数の数

randnum

スカラ関数RANDOMの数

rand_normalnum

スカラ関数RANDOM_NORMALの数

pred_rvcn

述語に指定した行値構成子の数

pred_rvcen

述語に指定した行値構成子要素の数

APATHVIEW

アクセスパスを表示する際に作成されるアクセスパス情報管理領域

次に示す計算式から求めてください。

計算式（単位：キロバイト）

APATHVIEW＝
   ↑（（9,728＋1,024×scl）×tbln＋2,200）÷4,096↑×5

tbln

FROM句に指定した表の数

scl

列数（列指定の数と，*指定の展開後の列指定の数の総和）

PREDICACCSZ

次に示す値を代入してください。

値（単位：キロバイト）

PREDICACCSZ ＝ 31

(3)　ヒープメモリの所要量の求め方（通常運用時）

通常運用時のヒープメモリ（HEAP_EXECSZ）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

HEAP_EXECSZ＝ max_sql( UTHD_WORKSZ )×rthd_num

変数の説明

rthd_num

サーバ定義adb_sys_rthd_numオペランドの指定値

max_sql( )

実行する各SQL文について，括弧内の変数の計算結果を求めてください。その中で最も大きい値を代入してください。

UTHD_WORKSZ：擬似スレッド用作業領域

次に示す計算式から求めてください。なお，次の条件に該当する場合は，0を代入してください。

実行するSQL文が検索系SQLではない

計算式（単位：キロバイト）

UTHD_WORKSZ＝ ↑QE×uthd_num÷2＋max_ftcond_num×3↑

uthd_num

サーバ定義adb_sys_uthd_numオペランドの指定値

max_ftcond_num

SQL文に外部表を指定する場合，その外部表に関する探索条件中の述語と論理演算の合計数を代入してください。1SQL文中に複数の外部表を指定する場合は，外部表ごとに探索条件中の述語と論理演算の合計数を計算し，その中で最も大きい値を代入してください。

次のどちらかの条件に該当する場合は，0を代入してください。

SQL文に外部表を指定しない場合

SQL文に外部表を指定するが，その外部表に関する探索条件を指定していない場合

QE

問合せ式の問合せ式本体に対して，変数QBの規則を適用して求められた値

QB

問合せ式本体に集合演算子を含むかどうかによって，求め方が異なります。

■問合せ式本体に集合演算子を含まない場合

問合せ式本体の問合せ指定に対して，変数QSの規則を適用して求められた値

■問合せ式本体に集合演算子を含む場合

次の計算式から求めてください。

QB＝ MAX(ST1, ... , STi)＋setop_num

ST1, ... , STi

集合演算項の各問合せ指定に対して，変数QSの規則を適用して求められた値

setop_num

問合せ式本体に指定された集合演算の数

QS

問合せ式本体に副問合せを含むかどうかによって，求め方が異なります。

■問合せ指定に副問合せを含まない場合

次の計算式から求めてください。

QS＝ scan_num＋1

■問合せ指定に副問合せを含む場合

次の計算式から求めてください。

QS＝ MAX(SQ1, ... , SQi)＋scan_num＋1

SQ1, ... , SQi

問合せ指定に指定された各副問合せに対して，変数QBの規則を適用して求められた値

scan_num

問合せ指定に指定された次の個数を合計した値

GROUP BY句

SELECT DISTINCT

DISTINCT集合関数

逆分布関数

LISTAGG集合関数

ARRAY_AGG集合関数

ウィンドウ関数

導出表の数

結合表の数（FULL OUTER JOINの場合は，1つ当たり3とカウントしてください）

結合表でない表参照の数−1

アーカイブマルチチャンク表の数×3

変数QEの求め方の例を次に示します。

■変数QEの求め方の例

ビュー表または問合せ名を指定した場合の注意事項を次に示します。

■ビュー表または問合せ名を指定した場合の注意事項

実行するSQL文中にビュー表または問合せ名を指定した場合は，それぞれに対応する内部的な導出表を適用したものとして見積もってください。例を次に示します。

例：ビュー定義

CREATE VIEW "V1" AS SELECT * FROM "T1","T2" WHERE "T1"."C1"="T2"."C2"

例：実行するSQL文

SELECT * FROM "V1","T3" WHERE "V1"."C1"="T3"."C3"

上記のようなビュー定義と実行するSQL文の場合，見積もり対象となるSQL文は，次のとおりです。

見積もり対象となるSQL文

SELECT * FROM (SELECT * FROM "T1","T2" WHERE "T1"."C1"="T2"."C2"),"T3"
         WHERE "V1"."C1"="T3"."C3"

6.3.5　adbinitコマンド実行時のメモリ所要量の求め方

adbinitコマンドを実行する場合，HADBサーバは次に示すメモリを使用します。各メモリの所要量を求めてください。

■共有メモリ

共有メモリ管理（INIT_CMN）

■プロセスメモリ

ヒープメモリ（INIT_MEM）

それぞれのメモリ所要量の計算式を次に示します。

(1)　共有メモリ管理の所要量の求め方（adbinitコマンド実行時）

adbinitコマンド実行時の共有メモリ管理（INIT_CMN）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

INIT_CMN＝SHMMAN＋CLDSTGINF※

注※

クラウドストレージ機能を使用する場合に加算してください。

変数の説明

SHMMAN

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(1)　共有メモリ管理の所要量の求め方（HADBサーバ開始時）」を参照してください。

CLDSTGINF

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(q)　変数CLDSTGINFの求め方」を参照してください。その際，サーバ定義の各オペランドの指定値には次の値を代入してください。

adb_sys_max_usersオペランド

1を代入してください。

adb_sys_cld_cache_total_sizeオペランド

1を代入してください。

adb_sys_cld_access_area_sizeオペランド

256を代入してください。

adbcachegrpオペランド

このオペランドの指定がないと仮定して計算してください。

(2)　ヒープメモリの所要量の求め方（adbinitコマンド実行時）

adbinitコマンド実行時のヒープメモリ（INIT_MEM）の所要量は，次に示す計算式から求めてください。

計算式（単位：メガバイト）

INIT_MEM＝ ↑（16,384＋DBAINF＋IOCTL）÷1,024↑＋557

変数の説明

DBAINF：DBエリア情報

次に示す計算式から求めてください。

計算式（単位：キロバイト）

DBAINF＝ 1,024×dbarea_defnum

dbarea_defnum：初期設定オプションadbinitdbareaの指定数

IOCTL：DBエリアファイル出力制御情報

次に示す計算式から求めてください。

計算式（単位：キロバイト）

IOCTL＝（8,209＋262,144※）×multi_max

注※

クラウドストレージ機能を使用する場合に加算してください。

multi_max

初期設定オプションadb_init_multi_maxの指定値

クラウドストレージ機能を使用する場合は1を代入してください。

6.3.6　adbimportコマンド実行時のメモリ所要量の求め方

adbimportコマンドを実行する場合，HADBサーバは次に示すメモリを使用します。各メモリの所要量を求めてください。

■共有メモリ

プロセス共通メモリ（PROC_IMPORTSZ）

リアルスレッド固有メモリ（RTHD_IMPORTSZ）

■プロセスメモリ

ヒープメモリ（HEAP_IMPORTSZ）

それぞれのメモリ所要量の計算式を次に示します。

(1)　プロセス共通メモリの所要量の求め方（adbimportコマンド実行時）

adbimportコマンド実行時のプロセス共通メモリ（PROC_IMPORTSZ）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_IMPORTSZ＝
  Σ（PROC_IMPT＋PROC_IDX※1＋PROC_IDXBUILD※1
     ＋PROC_RNGIDX※2＋PROC_INFILE※3＋PROC_DBUPDINF＋PROC_RTHDUPDINF
       ＋PROC_OBJDELENT※4＋PROC_IDXEST※6）※5

変数の説明

PROC_IMPT

データインポート処理で使用するプロセス共通メモリ

「(a)　変数PROC_IMPTの求め方」を参照して求めてください。

PROC_IDX

B-treeインデクスを作成するときに使用するプロセス共通メモリ

「(b)　変数PROC_IDXの求め方」を参照して求めてください。

PROC_IDXBUILD

B-treeインデクスを作成するときに使用するプロセス共通メモリ

「(c)　変数PROC_IDXBUILDの求め方」を参照して求めてください。

PROC_RNGIDX

レンジインデクスを作成するときに使用するプロセス共通メモリ

「(d)　変数PROC_RNGIDXの求め方」を参照して求めてください。

PROC_INFILE

入力データファイル数が1,024個を超える場合に使用するプロセス共通メモリ

「(e)　変数PROC_INFILEの求め方」を参照して求めてください。

PROC_DBUPDINF

DBエリア，表，インデクス，およびチャンク更新情報の格納で必要なプロセス共通メモリ

「(f)　変数PROC_DBUPDINFの求め方」を参照して求めてください。

PROC_RTHDUPDINF

処理リアルスレッド更新情報

「(g)　変数PROC_RTHDUPDINFの求め方」を参照して求めてください。

PROC_OBJDELENT

S3オブジェクトまたはBLOBの削除情報

「(h)　変数PROC_OBJDELENTの求め方」を参照して求めてください。

PROC_IDXEST

B-treeインデクスの容量見積もり情報

「(i)　変数PROC_IDXESTの求め方」を参照して求めてください。

注※1

B-treeインデクスを定義した表にデータインポートする場合に加算します。

注※2

レンジインデクスを定義した表にデータインポートする場合に加算します。

注※3

入力データパスファイル名に指定した入力データファイル数が1,024個を超える場合に加算します。

注※4

クラウドストレージ機能を使用し，-dオプションを指定してadbimportコマンドを実行する場合に加算します。

注※5

複数のadbimportコマンドを同時に実行する場合は，各adbimportコマンドが使用するメモリ所要量を求めてください。そして，それぞれで求めたメモリ所要量を合計してください。

注※6

次のどちらかの条件に該当する場合に加算します。

インポートオプションadb_import_dvbix_rthd_useにVARIABLEを指定してadbimportコマンドを実行する場合

サーバ定義のadb_cmd_dvbix_rthd_useオペランドにVARIABLEを指定し，インポートオプションadb_import_dvbix_rthd_useの指定を省略してadbimportコマンドを実行する場合

(a)　変数PROC_IMPTの求め方

変数PROC_IMPTは，データインポート処理で使用するプロセス共通メモリの所要量を求めるときに使用します。次に示す計算式から求めてください。

計算式（単位：キロバイト）

注※1

監査証跡機能が有効な場合に加算してください。

注※2

カラムストア表にデータインポートする場合に加算してください。

変数の説明

DIC：インポート対象表の定義情報を取得するためのメモリ

次に示す計算式から求めてください。

計算式（単位：キロバイト）

注※1

コスト情報を収集したことがある表の場合に加算してください。

コスト情報を収集したことがある表かどうかを確認する方法については，「付録C.9　システム表の検索」の「(1)　コスト情報を収集した全実表の表名と収集日時を調べる場合」を参照してください。

注※2

処理対象表がアーカイブマルチチャンク表の場合に加算してください。

col_num

インポート対象表の列数

max_rowsz

最大行長（単位：バイト）

最大行長については，「5.8.2　行の種別ごとの格納ページ数の求め方」の「(1)　基本行用ページ数（変数BP（i））の求め方」の行長ROWSZの計算式を基に求めてください。

idx_num

インポート対象表に定義されたインデクス数

IOA：表に格納するデータイメージを作成するためのメモリ

次に示す計算式から求めてください。

計算式（単位：キロバイト）

IOA＝
  ↑（max_rowsz＋436＋448×col_num＋124×idx_num＋4×dba_num）
    ÷1,024↑×load_rthd

max_rowsz

最大行長（単位：バイト）

最大行長については，「5.8.2　行の種別ごとの格納ページ数の求め方」の「(1)　基本行用ページ数（変数BP（i））の求め方」の行長ROWSZの計算式を基に求めてください。

col_num

インポート対象表の列数

idx_num

インポート対象表に定義されたインデクス数

dba_num

インポート対象表のデータ用DBエリアのDBエリアファイル数

load_rthd

次に示す計算式から求めてください。

インポートオプションadb_import_rthd_numの指定値－1

LOD：データの格納処理で必要となるメモリ

次に示す計算式から求めてください。

計算式（単位：キロバイト）

LOD＝
   ↑（ （（read_size×read_buff_num＋decomp_buff_size※1＋1）×1,024×load_rthd）
      ＋（（5,200＋4,096,000※2＋input_edit_area）×load_rthd）
      ＋（511×input_file_num） ）÷1,024↑

注※1

入力データファイルに圧縮ファイル（GZIP形式）を指定したときに加算してください。

注※2

列構成情報ファイルを指定したときに加算してください。

read_size

インポートオプションadb_import_read_sizeの指定値

read_buff_num

3を代入してください。

decomp_buff_size

インポートオプションadb_import_decompress_buff_sizeの指定値

load_rthd

次に示す計算式から求めてください。

インポートオプションadb_import_rthd_numの指定値－1

input_file_num

1,024を代入してください。

input_edit_area

入力データの編集領域長

次に示す計算式から求めてください。

計算式

input_recsize

入力レコード長

固定長データ形式の場合

インポートオプションadb_import_input_record_sizeの指定値を代入してください。

CSV形式の場合

次に示す計算式から求めてください。

計算式

フィールドデータ数

列構成情報ファイルに指定した各列のフィールドデータ番号，または指定を省略した際の仮定値を求めてください。その中で最大の値を代入してください。

Σ(DATASIZE)

処理対象表にある各列のデータ型のデータを文字形式で表した場合の最大長の合計

各データ型のデータを文字形式で表したときの最大長については，次に示す表から求めてください。

表6‒13　各データ型のデータを文字形式で表した場合の最大長の一覧

項番

分類

データ型

文字形式のデータ最大長

1

数データ

BIGINT

23

2

INTEGER

13※1

3

SMALLINT

8※2

4

DECIMAL(m,n)

m＋5

5

NUMERIC(m,n)

6

DOUBLE PRECISION

511

7

FLOAT

8

REAL

9

文字データ

CHAR(n)

n×2＋2

10

VARCHAR(n)

n×2＋2

11

日時データ

DATE

12

12

TIME(p)

8＋p＋3

13

TIMESTAMP(p) WITHOUT TIME ZONE

19＋p＋3

TIMESTAMP(p) WITH TIME ZONE

25＋p＋3

14

バイナリデータ

BINARY(n)

n×8＋2

15

VARBINARY(n)

n×8＋2

16

配列データ

ARRAY

要素データ型の文字形式のデータ最大長×最大要素数

17

論理データ

BOOLEAN

7

18

UUIDデータ

UUID

38

（凡例）

m，n，p：マニュアルHADB　SQLリファレンスのデータ型の種類を参照してください。

注※1

整数データ型のデータ形式がレガシー形式の場合，データ最大長は23になります。

注※2

整数データ型のデータ形式がレガシー形式の場合，データ最大長は13になります。

IMPORTBUF_CTL：データインポートおよびインデクス作成用バッファを制御するために使用するメモリ

次に示す値を代入してください。

値（単位：キロバイト）

IMPORTBUF_CTL＝ ↑（248＋BUFBLK）÷1,024↑×load_rthd

BUFBLK

「6.3.4　通常運用時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（通常運用時）」の「(f)　変数PROC_UPDSZの求め方」の変数BUFBLKを参照してください。

load_rthd

次に示す計算式から求めてください。

インポートオプションadb_import_rthd_numの指定値－1

STS：ステータス情報を退避するためのメモリ

次に示す計算式から求めてください。

計算式（単位：キロバイト）

idx_num

インポート対象表に定義されたインデクス数

b_tree_idx_num

インポート対象表に定義されたB-treeインデクスの数

range_idx_num

インポート対象表に定義されたレンジインデクスの数

load_rthd

次に示す計算式から求めてください。

インポートオプションadb_import_rthd_numの指定値－1

text_idx_num

インポート対象表に定義されたテキストインデクスの数

PAGEALLOC：データインポート用ページ割り当て制御情報

次に示す計算式から求めてください。

計算式（単位：キロバイト）

PAGEALLOC＝ import_rthd×310

import_rthd

次に示す計算式から求めてください。

インポートオプションadb_import_rthd_numの指定値－1

PROC_AUDINFSZ

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(u)　変数AUDINFの求め方」にある変数PROC_AUDINFSZを参照してください。

PROC_IMPT_COLUMN：カラムストア表へのデータインポートで使用するメモリ

次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_IMPT_COLUMN＝
           ↑（（16,128＋8×col_num）×rthd_num
          ＋576×（infile_num＋workfile_num））÷1,024↑

col_num

インポート対象表の列数

rthd_num

次に示す計算式から求めてください。

インポートオプションadb_import_rthd_numの指定値－1

infile_num

入力データファイルの数

workfile_num

作業用一時ファイルの格納先ディレクトリの数

(b)　変数PROC_IDXの求め方

変数PROC_IDXは，インデクスを作成する場合に使用するプロセス共通メモリの所要量を求めるときに使用します。次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

idxf_buff_size

1,024を代入してください。

KEYSZ

B-treeインデクスのキー長（単位：バイト）

「5.8.4　B-treeインデクスのキー長（KEYSZ）の求め方」を基に，B-treeインデクスのキー長を求めてください。

なお，可変長データのB-treeインデクスのキー長を求める際は，「表5‒20　B-treeインデクスのキー長一覧」中の「実際のデータ長」を「データの定義長」で計算してください。

また，処理対象表に複数のB-treeインデクスが定義されている場合は，定義されたB-treeインデクスの中で最大のキー長を使用してください。

idx_num

処理対象表に定義されたB-treeインデクスの数

load_rthd

次に示す計算式から求めてください。

インポートオプションadb_import_rthd_numの指定値－1

cmd_d_opt

adbimportコマンドのオプションの指定有無，およびインポート対象表の状態によって，変数cmd_d_optの値は異なります。次に示す表に従って，変数cmd_d_optの値を求めてください。

項番

adbimportコマンドのオプションの指定有無，およびインポート対象表の状態

cmd_d_optの値

1

adbimportコマンドに-dオプションを指定し，-bオプションを指定しないで実行するとき

行を格納するセグメントが割り当てられていない状態のインポート対象表に対して，adbimportコマンドに-dオプションと-bオプションを指定しないで実行するとき

マルチチャンク表に対して，adbimportコマンドに-bオプションを指定し，-dオプションを指定しないで実行するとき

1

2

行を格納するセグメントが割り当てられている状態のインポート対象表に対して，adbimportコマンドに-dオプションと-bオプションを指定しないで実行するとき

3

rd_buff_size

インポートオプションadb_import_dividx_rd_buff_sizeの指定値

ld_buff_size

インポートオプションadb_import_dividx_wt_buff_sizeの指定値

CTRL

インデクスのインデクス構成列が固定長の場合

10バイトを代入してください。

インデクスのインデクス構成列に可変長を含む場合

12バイトを代入してください。

text_idx_num

処理対象表に定義されたテキストインデクスの数

dividx_rthd

次に示す計算式から求めてください。

インポートオプションadb_import_rthd_numの指定値－1

(c)　変数PROC_IDXBUILDの求め方

変数PROC_IDXBUILDは，B-treeインデクスを作成する場合に使用するプロセス共通メモリの所要量を求めるときに使用します。

PROC_IDXBUILDの値は，adbimportコマンドの-dオプションと-bオプションの指定有無，およびインポート対象表の状態によって，次に示すどちらかになります。

PROC_IDXBUILDの値（単位：キロバイト）

PROC_IDXBUILD＝ PROC_IDXCREATE，またはPROC_IDXCREATE＋PROC_IDXMAINT

■PROC_IDXBUILDの値がPROC_IDXCREATEになる場合

次に示すどれかに該当するときは，PROC_IDXCREATEになります。

adbimportコマンドに-dオプションを指定し，-bオプションを指定しないで実行するとき

行を格納するセグメントが割り当てられていない状態のインポート対象表に対して，adbimportコマンドに-dオプションと-bオプションを指定しないで実行するとき

マルチチャンク表に対して，adbimportコマンドに-bオプションを指定し，-dオプションを指定しないで実行するとき

■PROC_IDXBUILDの値がPROC_IDXCREATE＋PROC_IDXMAINTになる場合

次に該当するときは，PROC_IDXCREATE＋PROC_IDXMAINTになります。

行を格納するセグメントが割り当てられている状態のインポート対象表に対して，adbimportコマンドに-dオプションと-bオプションを指定しないで実行するとき

PROC_IDXCREATE，およびPROC_IDXMAINTは次に示す計算式から求めてください。

変数の説明

PROC_IDXCREATE：次に示す計算式から求めてください。

計算式（単位：キロバイト）

idx_num

インポート対象表に定義されたB-treeインデクスの数

PROC_IDXCREATE_MEM（k）

次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_IDXCREATE_MEM（k）＝
  ↑（456＋256×idx_col_num＋（24＋144×↑idx_lv÷16↑）
   ×（dividx_rthd＋1）＋（KEYSZ＋（idx_col_num＋1）×2＋12）
   ×2＋page_size×2＋268）÷1,024↑

idx_col_num

B-treeインデクスのインデクス構成列の数

idx_lv：B-treeインデクスの段数

「5.8.3　B-treeインデクスのセグメントごとの格納ページ数の求め方」の「(2)　上位ページ用のセグメントで使用する格納ページ数（変数IP_UPPER（i））の求め方」の計算式1（PIDX（k）の求め方）の漸化式を計算して，PIDX（n）＝1となったときのnの値を代入してください。

ただし，PIDX（1）＝1の場合は，B-treeインデクスの段数は2としてください。

dividx_rthd

次に示す計算式から求めてください。

インポートオプションadb_import_rthd_numの指定値－1

KEYSZ：B-treeインデクスのキー長（単位：バイト）

「5.8.4　B-treeインデクスのキー長（KEYSZ）の求め方」を基に，B-treeインデクスのキー長を求めてください。

なお，可変長データのB-treeインデクスのキー長を求める際は，「表5‒20　B-treeインデクスのキー長一覧」中の「実際のデータ長」を「データの定義長」で計算してください。

page_size

B-treeインデクスが定義されているデータ用DBエリアのページサイズ（単位：バイト）

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」にある「表6‒3　DBエリアのページサイズ」のデータ用DBエリアのページサイズを参照して求めてください。

PROC_IDXMAINT：次に示す計算式から求めてください。

計算式（単位：キロバイト）

idx_num

インポート対象表に定義されたB-treeインデクスの数

PROC_IDXMAINT_MEM（k）

次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_IDXMAINT_MEM（k）＝
   ↑（16＋（8＋KEYSZ＋idx_col_num＋1）×（dividx_rthd−1）
    ＋528＋144×idx_col_num
    ＋↑（KEYSZ＋（idx_col_num＋1）×2＋12）÷8↑×8
    ＋（176＋48×（idx_lv−1）＋32×（idx_lv＋1）
    ＋page_size×2
    ＋↑（KEYSZ＋（idx_col_num＋1）×2＋3,068）÷8↑×8
    ＋↑（KEYSZ＋（idx_col_num＋1）×2＋4）÷8↑×16
    ＋↑（KEYSZ＋（idx_col_num＋1）×2＋12）÷8↑×8）
    ×dividx_rthd）÷1,024↑

KEYSZ：B-treeインデクスのキー長（単位：バイト）

「5.8.4　B-treeインデクスのキー長（KEYSZ）の求め方」を基に，B-treeインデクスのキー長を求めてください。

なお，可変長データのB-treeインデクスのキー長を求める際は，「表5‒20　B-treeインデクスのキー長一覧」中の「実際のデータ長」を「データの定義長」で計算してください。

idx_col_num

B-treeインデクスのインデクス構成列の数

dividx_rthd

次に示す計算式から求めてください。

インポートオプションadb_import_rthd_numの指定値－1

idx_lv：B-treeインデクスの段数

「5.8.3　B-treeインデクスのセグメントごとの格納ページ数の求め方」の「(2)　上位ページ用のセグメントで使用する格納ページ数（変数IP_UPPER（i））の求め方」の計算式1（PIDX（k）の求め方）の漸化式を計算して，PIDX（n）＝1となったときのnの値を代入してください。

ただし，PIDX（1）＝1の場合は，B-treeインデクスの段数は2としてください。

page_size

B-treeインデクスが定義されているデータ用DBエリアのページサイズ（単位：バイト）

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」にある「表6‒3　DBエリアのページサイズ」のデータ用DBエリアのページサイズを参照して求めてください。

(d)　変数PROC_RNGIDXの求め方

変数PROC_RNGIDXは，レンジインデクスを作成する場合に使用するプロセス共通メモリの所要量を求めるときに使用します。次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_RNGIDX＝ ↑64×rngidx_num÷1,024↑

変数の説明

rngidx_num：インポート対象表に定義されたレンジインデクスの数

(e)　変数PROC_INFILEの求め方

変数PROC_INFILEは，入力データパスファイル名に指定した入力データファイル数が1,024個を超える場合に加算する必要があります。次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_INFILE＝ ↑（（16＋511）×（INFMAX−1,024））÷1,024↑

変数の説明

INFMAX：入力データパスファイル名に指定した入力データファイル数

(f)　変数PROC_DBUPDINFの求め方

変数PROC_DBUPDINFは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

DBUPDINF_ENT_NUM

DBエリア，表，インデクス，およびチャンク更新情報のエントリ数

次に示す計算式から求めてください。なお，マルチノード機能を使用するかどうかで，計算式が異なります。

マルチノード機能を使用しない場合の計算式（単位：個数）

マルチノード機能を使用する場合の計算式（単位：個数）

idx_num

処理対象表に定義しているB-treeインデクス数

rngidx_num

処理対象表に定義しているレンジインデクス数

txtidx_num

処理対象表に定義しているテキストインデクス数

(g)　変数PROC_RTHDUPDINFの求め方

変数PROC_RTHDUPDINFは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

rthd_num

処理リアルスレッド数

次に示す計算式から求めてください。

インポートオプションadb_import_rthd_numの指定値－1

(h)　変数PROC_OBJDELENTの求め方

変数PROC_OBJDELENTは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_OBJDELENT＝↑（（80＋32,768）×128×dbarea_num）÷1,024↑

変数の説明

dbarea_num：adbimportコマンドの実行対象表，およびその表に定義するインデクスを格納するDBエリアの数

(i)　変数PROC_IDXESTの求め方

変数PROC_IDXESTは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_IDXEST＝↑｛4,120＋8×RTHNUM＋(8×idx_num＋Σ(ESTINF)＋4,096)×load_rthd｝÷1,024↑

変数の説明

RTHNUM：総リアルスレッド数

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(a)　変数SCIの求め方」の変数RTHNUMを参照してください。

idx_num

処理対象表に定義するB-treeインデクスの数

Σ(ESTINF)

処理対象表に定義するB-treeインデクスごとにESTINFを次に示す計算式から求めて，求めた値を合計してください。

計算式（単位：バイト）

ESTINF＝56＋8×MIN(65,535 ，ESTENT_NUM)＋48×ESTENT_NUM

ESTENT_NUM

次に示す計算式から求めてください。

ESTENT_NUM＝
      MAX｛256 ，
           ↓MAX｛1 ，↓(↓(page_size×(100－pctfree))÷100↓－80)÷(KEYSZDB＋22)↓｝
             ×↓2,097,152÷page_size↓÷load_rthd↓×2
           ｝

page_size

B-treeインデクスを格納するデータ用DBエリアのページサイズ（単位：バイト）

pctfree

CREATE INDEX文のPCTFREEオペランドに指定する未使用領域の比率（単位：％）

未使用領域の比率を指定しない場合は，30%と仮定して計算してください。

KEYSZDB

データベース格納キー長（単位：バイト）

「5.8.3　B-treeインデクスのセグメントごとの格納ページ数の求め方」の「(1)　下位ページ用のセグメントで使用する格納ページ数（変数IP_LOWER（i））の求め方」の変数KEYSZDBを参照してください。ただし，可変長のデータは，常にキー長を定義長として求めてください。

load_rthd

次に示す計算式から求めてください。

インポートオプションadb_import_rthd_numの指定値－1

(2)　リアルスレッド固有メモリの所要量の求め方（adbimportコマンド実行時）

adbimportコマンド実行時のリアルスレッド固有メモリ（RTHD_IMPORTSZ）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

IMPORTBUF

データインポート処理時およびインデクス作成時に使用するバッファ

「(a)　変数IMPORTBUFの求め方」を参照して求めてください。

SORTIOBUF

ソート処理I/Oバッファ

「(b)　変数SORTIOBUFの求め方」を参照して求めてください。

SORTBUF

インデクス作成用ソートバッファ

「(c)　変数SORTBUFの求め方」を参照して求めてください。

RTHD_DATALOAD

データインポート処理時に使用するバッファ

「(d)　変数RTHD_DATALOADの求め方」を参照して求めてください。

RTHD_IDXREC

B-treeインデクス作成時に使用するバッファ

「(e)　変数RTHD_IDXRECの求め方」を参照して求めてください。

RTHD_IDXBUILD

B-treeインデクス作成時に使用するバッファ

「(f)　変数RTHD_IDXBUILDの求め方」を参照して求めてください。

RTHD_RNGIDX

レンジインデクス作成時に使用するバッファ

「(g)　変数RTHD_RNGIDXの求め方」を参照して求めてください。

RTHD_TXTIDX

テキストインデクス作成時に使用するバッファ

「(h)　変数RTHD_TXTIDXの求め方」を参照して求めてください。

注※1

B-treeインデクスを定義した表にデータインポートする場合に加算します。

注※2

レンジインデクスを定義した表にデータインポートする場合に加算します。

注※3

テキストインデクスを定義した表にデータインポートする場合に加算します。

(a)　変数IMPORTBUFの求め方

変数IMPORTBUFは，データインポート処理時，およびインデクスの作成時に使用するリアルスレッド固有メモリの所要量を求めるときに使用します。次に示す計算式から求めてください。

計算式（単位：キロバイト）

IMPORTBUF＝↑（IMP_SQBUF※1＋IMP_COBUF※2）÷1,024↑

注※1

クラウドストレージ機能を使用しない場合に加算してください。

注※2

クラウドストレージ機能を使用する場合に加算してください。

変数の説明

IMP_SQBUF：次に示す計算式から求めてください。

計算式（単位：バイト）

IMP_SQBUF＝
     IMP_SQBLK＋IMP_SQIO＋IMP_SQPGE＋IMP_SQHS

IMP_SQBLK：次に示す計算式から求めてください。

計算式（単位：バイト）

IMP_SQBLK＝
   imp_blknum×（136＋↑IMP_BLKSZ÷imp_pagesize÷64↑×40）

imp_blknum：

インポートオプションadb_import_buff_blk_numの指定値

IMP_BLKSZ：次に示す計算式から求めてください。

IMP_BLKSZ＝ 4,096×1,024

imp_pagesize：

次のDBエリアのページサイズのうち，最小の値（単位：バイト）

処理対象表が格納されているDBエリア

処理対象表に定義されているB-treeインデクスまたはテキストインデクスが格納されているDBエリア

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」にある「表6‒3　DBエリアのページサイズ」のデータ用DBエリアのページサイズを参照して求めてください。

IMP_SQIO：次に示す計算式から求めてください。

計算式（単位：バイト）

IMP_SQIO＝ 568×imp_blknum

imp_blknum：

インポートオプションadb_import_buff_blk_numの指定値

IMP_SQPGE：次に示す計算式から求めてください。

計算式（単位：バイト）

IMP_SQPGE＝
   （176＋imp_pagesize＋BUFLOG）×（IMP_BLKSZ÷imp_pagesize）
    ×imp_blknum

imp_pagesize：

次のDBエリアのページサイズのうち，最小の値（単位：バイト）

処理対象表が格納されているDBエリア

処理対象表に定義されているB-treeインデクスまたはテキストインデクスが格納されているDBエリア

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」にある「表6‒3　DBエリアのページサイズ」のデータ用DBエリアのページサイズを参照して求めてください。

BUFLOG：

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(d)　変数BUFGLOBALの求め方」の変数BUFLOGを参照してください。

IMP_BLKSZ：次に示す計算式から求めてください。

IMP_BLKSZ＝ 4,096×1,024

imp_blknum：

インポートオプションadb_import_buff_blk_numの指定値

IMP_SQHS：次に示す計算式から求めてください。

計算式（単位：バイト）

IMP_SQHS＝ 48×imp_blknum

imp_blknum：

インポートオプションadb_import_buff_blk_numの指定値

IMP_COBUF：次に示す計算式から求めてください。

計算式（単位：バイト）

IMP_COBUF＝IMP_COBLK＋IMP_COIO＋IMP_COPGE＋IMP_COHS

IMP_COBLK：次に示す計算式から求めてください。

計算式（単位：バイト）

IMP_COBLK＝imp_blknum×72

imp_blknum：

インポートオプションadb_import_buff_blk_numの指定値

IMP_COIO：次に示す計算式から求めてください。

計算式（単位：バイト）

IMP_COIO＝136×imp_blknum

imp_blknum：

インポートオプションadb_import_buff_blk_numの指定値

IMP_COPGE：次に示す計算式から求めてください。

計算式（単位：バイト）

IMP_COPGE
     ＝（（176＋BUFLOG）×SEGSIZE＋IMP_COBLKSZ）×imp_blknum

BUFLOG：

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(d)　変数BUFGLOBALの求め方」の変数BUFLOGを参照してください。

SEGSIZE：

次のDBエリアのセグメントサイズのうち，最大の値（単位：ページ数）

処理対象表が格納されているDBエリア

処理対象表に定義されているB-treeインデクスまたはテキストインデクスが格納されているDBエリア

次に示す計算式で求めてください。

SEGSIZE＝ 1セグメントの容量（単位：バイト）÷page_size

IMP_COBLKSZ：次に示す計算式から求めてください。

IMP_COBLKSZ＝32×1,024×1,024

imp_blknum：

インポートオプションadb_import_buff_blk_numの指定値

IMP_COHS：次に示す計算式から求めてください。

計算式（単位：バイト）

IMP_COHS＝40×imp_blknum

imp_blknum：

インポートオプションadb_import_buff_blk_numの指定値

(b)　変数SORTIOBUFの求め方

変数SORTIOBUFは，ソート処理時に使用するリアルスレッド固有メモリの所要量を求めるときに使用します。次に示す計算式から求めてください。

計算式（単位：キロバイト）

SORTIOBUF＝ sort_io_buff_size

変数の説明

sort_io_buff_size

2,048を代入してください。

(c)　変数SORTBUFの求め方

変数SORTBUFは，ソート処理時のインデクス作成で使用するリアルスレッド固有メモリの所要量を求めるときに使用します。次に示す計算式から求めてください。

計算式（単位：キロバイト）

SORTBUF＝ 48＋sort_buff_size×1,024

変数の説明

sort_buff_size

インポートオプションadb_import_sort_buff_sizeの指定値※

注※

ソート処理では，作業用ワークファイルが作成されます。このファイルの容量を最小にする変数sort_buff_sizeの計算式を次に示します。変数sort_buff_sizeは，次に示す計算式を満たすようにしてください。ただし，メモリに余裕がない場合，またはほとんどのデータがインデクスキー順に並んでいる場合は，必要以上に大きな値を指定しないでください。

計算式

変数の説明

REC_SIZE：次に示す計算式から求めてください。

計算式

REC_SIZE＝ （KEYSZ＋SYS1）＋SYS2

KEYSZ：B-treeインデクスのキー長（単位：バイト）

「5.8.4　B-treeインデクスのキー長（KEYSZ）の求め方」を基に，B-treeインデクスのキー長を求めてください。

なお，可変長データのB-treeインデクスのキー長を求める際は，「表5‒20　B-treeインデクスのキー長一覧」中の「実際のデータ長」を「データの定義長」で計算してください。

また，処理対象表に複数のB-treeインデクスが定義されている場合は，定義されたB-treeインデクスの中で最大のキー長を使用してください。

SYS1：次に示す値を仮定してください。

インポート対象表に定義されたインデクスのインデクス構成列が固定長の場合：10

インポート対象表に定義されたインデクスのインデクス構成列に可変長を含む場合：12

SYS2：次に示す値を仮定してください。

インポート対象表に定義されたインデクスが可変長の複数列インデクスの場合：（インデクス構成列数×4）

そのほかのインデクスの場合：0

BLK：次に示す計算式から求めてください。

計算式

BLK＝ REC_SIZE＋（KEYSZ＋8）＋56

row_num：

adbimportコマンドで表に格納する行数

KEY_INF：次に示す計算式から求めてください。

計算式

KEY_INF＝ REC_SIZE＋（KEYSZ＋8）＋28

COL_INFO：次に示す計算式から求めてください。

計算式

COL_INFO＝ 2,112＋（MULTI_KEY_INFO×32）＋（KEYSZ＋8）

MULTI_KEY_INFO：次に示す値を仮定してください。

インポート対象表に定義されたB-treeインデクスが可変長の複数列インデクスの場合：（インデクス構成列数×2）＋2

そのほかの場合：5

(d)　変数RTHD_DATALOADの求め方

変数RTHD_DATALOADは，データインポート処理時に使用するリアルスレッド固有メモリの所要量を求めるときに使用します。次に示す計算式から求めてください。

なお，インポート対象表がローストア表の場合と，カラムストア表の場合で計算式が異なります。

■ローストア表の場合

計算式（単位：キロバイト）

注※1

インポート対象表にレンジインデクスが定義されている場合に加算してください。

注※2

インポート対象表が非FIX表の場合に加算してください。

注※3

アーカイブマルチチャンク表に対して，-dオプションを指定してadbimportコマンドを実行する場合に加算してください。

変数の説明

col_num

インポート対象表の列数（単位：個）

var_col_num

インポート対象表にあるVARCHAR型，およびVARBINARY型の列数（単位：個）

■カラムストア表の場合

計算式（単位：キロバイト）

注※

インポート対象表にレンジインデクスが定義されている場合に加算してください。

変数の説明

page_size

インポート対象表を格納するDBエリアのページサイズ（単位：バイト）

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」にある「表6‒3　DBエリアのページサイズ」を参照してください。

col_num

インポート対象表の列数（単位：個）

SEGSIZE

DBエリアファイルを定義したDBエリアのセグメントサイズ

次に示す計算式から求めてください。クラウドストレージ機能を使用する場合は，1,024になります。

計算式（単位：ページ数）

SEGSIZE＝ 1セグメントの容量（単位：バイト）÷page_size

IMP_COLUMN

カラムストア表へのデータインポート用作業領域

次に示す計算式から求めてください。

計算式（単位：キロバイト）

IMP_COLUMN＝
   1,024×col_num
   ＋↑（（376＋16×col_num）×col_num＋1,824＋input_recsize＋8×col_num
   ＋MAX(input_recsize ,  2,097,152)＋IMP_ERRDATA※1＋IMP_ARRAY※2）
   ÷1,024↑

注※1

インポートオプションadb_import_errdata_file_nameを指定し，かつCSV形式のデータをインポートする場合に加算してください。

注※2

配列型の列を定義している表にデータをインポートする場合に加算してください。

col_num

インポート対象表の列数（単位：個）

input_recsize

入力レコード長

「(1)　プロセス共通メモリの所要量の求め方（adbimportコマンド実行時）」の「(a)　変数PROC_IMPTの求め方」の変数LODを参照してください。

IMP_ERRDATA

エラーレコード出力用バッファ

次に示す計算式から求めてください。

計算式（単位：バイト）

IMP_ERRDATA＝input_recsize×1.2

input_recsize

入力レコード長

「(1)　プロセス共通メモリの所要量の求め方（adbimportコマンド実行時）」の「(a)　変数PROC_IMPTの求め方」の変数LODを参照してください。

IMP_ARRAY

配列型の列にデータをインポートする際のデータインポート用作業領域

次に示す計算式から求めてください。

計算式（単位：バイト）

IMP_ARRAY＝56×arr_col_num＋160×col_num

arr_col_num

インポート対象表に定義されている配列型の列数（単位：個）

col_num

インポート対象表の列数（単位：個）

RTHD_DATACOMPRESS

データ圧縮用の作業領域

次に示す計算式から求めてください。

計算式（単位：キロバイト）

col_num_in_table

インポート対象表の構成列数（単位：個）

col_compress_work_size（i）

各列を圧縮するのに必要な作業領域（単位：バイト）

CREATE TABLE文でインポート対象表を定義する際に，各列に指定した列データの圧縮方式によって，代入する値が異なります。次の表に示す列データの圧縮方式に対応する値を代入してください。列データの圧縮方式の指定については，マニュアルHADB　SQLリファレンスの定義系SQLのCREATE TABLE（表の定義）を参照してください。

表6‒14　各列を圧縮するのに必要な作業領域（変数col_compress_work_sizeに代入する値）

項番

列データの圧縮方式

各列を圧縮するのに必要な作業領域（変数col_compress_work_sizeに代入する値）（単位：バイト）

1

NONE

65,552

2

RUNLENGTH

65,552

3

DICTIONARY

23,270,960

4

DELTA

65,552

5

DELTA_RUNLENGTH

65,552

6

AUTO

23,270,960

arr_col_num

インポート対象表に定義されている配列型の列数（単位：個）

page_size

インポート対象表を格納するデータ用DBエリアのページサイズ（単位：バイト）

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」にある「表6‒3　DBエリアのページサイズ」を参照してください。

data_len（j）

j番目の配列型の列のデータ長（単位：バイト）

配列型の列のデータ長については，「6.3.4　通常運用時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（通常運用時）」の「(c)　変数RTHD_EXESQLSZの求め方」にある「表6‒11　各データ型のデータ長の一覧」の「配列データ」を参照して求めてください。

n（j）

j番目の配列型の列の最大要素数（単位：個）

(e)　変数RTHD_IDXRECの求め方

変数RTHD_IDXRECは，B-treeインデクス作成時に使用するリアルスレッド固有メモリの所要量を求めるときに使用します。次に示す計算式から求めてください。

計算式（単位：キロバイト）

RTHD_IDXREC＝
   ↑（386＋328×（idx_num−1）＋32×max_idx_col_num
   ＋（64＋buf_size×1,024）×2×idx_num）÷1,024↑

変数の説明

idx_num

インポート対象表に定義されたB-treeインデクスの数

max_idx_col_num

インポート対象表に定義されたB-treeインデクスのインデクス構成列数の最大値

buf_size

1,024を代入してください。

(f)　変数RTHD_IDXBUILDの求め方

変数RTHD_IDXBUILDは，B-treeインデクス作成時に使用するリアルスレッド固有メモリの所要量を求めるときに使用します。変数RTHD_IDXBUILDは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

idx_num

インポート対象表に定義されたB-treeインデクスの数

RTHD_IDXBUILD_MEM（k）

次に示す計算式から求めてください。

計算式（単位：キロバイト）

RTHD_IDXBUILD_MEM（k）＝
   ↑（61,474＋↑MAX（255，KEYSZ）÷2↑×2＋3,070
   ＋↑KEYSZ＋CTRL÷8↑×8＋MAX（255，KEYSZ）
   ＋14＋↓8＋page_size×95÷100↓×2）÷1,024↑

page_size

B-treeインデクスが定義されているデータ用DBエリアのページサイズ（単位：バイト）

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」にある「表6‒3　DBエリアのページサイズ」のデータ用DBエリアのページサイズを参照して求めてください。

KEYSZ

B-treeインデクスのキー長（単位：バイト）

「5.8.4　B-treeインデクスのキー長（KEYSZ）の求め方」を基に，B-treeインデクスのキー長を求めてください。

なお，可変長データのB-treeインデクスのキー長を求める際は，「表5‒20　B-treeインデクスのキー長一覧」中の「実際のデータ長」を「データの定義長」で計算してください。

CTRL

インデクス構成列のキー長がすべて固定長の場合

10バイトを代入してください。

インデクス構成列のキー長に可変長を含む場合

12バイトを代入してください。

(g)　変数RTHD_RNGIDXの求め方

変数RTHD_RNGIDXは，レンジインデクス作成時に使用するリアルスレッド固有メモリの所要量を求めるときに使用します。

次に示す計算式から求めてください。

計算式（単位：キロバイト）

RTHD_RNGIDX＝ ↑（16＋128×rngidx_num）×load_rthd÷1,024↑

変数の説明

rngidx_num

インポート対象表に定義されたレンジインデクスの数

load_rthd

次に示す計算式から求めてください。

インポートオプションadb_import_rthd_numの指定値－1

(h)　変数RTHD_TXTIDXの求め方

変数RTHD_TXTIDXは，テキストインデクス作成時に使用するリアルスレッド固有メモリの所要量を求めるときに使用します。

次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

idx_num

処理対象表に定義されたテキストインデクスの数

RTHD_TXTIDXBUILD_MEM(k)

次に示す計算式から求めてください。

計算式（単位：キロバイト）

buff_blk_size

4,096を代入してください。

buff_blk_num

インポートオプションadb_import_buff_blk_numの指定値

idx_div_num

k番目のテキストインデクスのインデクス構成列定義長

txt_sort_buff_size

インポートオプションadb_import_txt_buff_sizeの指定値

(3)　ヒープメモリの所要量の求め方（adbimportコマンド実行時）

adbimportコマンド実行時のヒープメモリ（HEAP_IMPORTSZ）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

注※

複数のadbimportコマンドを同時に実行する場合は，各adbimportコマンドが使用するメモリ所要量を求めてください。そして，それぞれで求めたメモリ所要量を合計してください。

変数の説明

HEAP_ZLIB

「(a)　変数HEAP_ZLIBの求め方」を参照してください。

HEAP_SRTHMEM

「(b)　変数HEAP_SRTHMEMの求め方」を参照してください。

(a)　変数HEAP_ZLIBの求め方

変数HEAP_ZLIBは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

load_rthd

次に示す計算式から求めてください。

インポートオプションadb_import_rthd_numの指定値－1

(b)　変数HEAP_SRTHMEMの求め方

変数HEAP_SRTHMEMは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

sort_rthd

次に示す計算式から求めてください。

インポートオプションadb_import_rthd_numの指定値－1

6.3.7　adbidxrebuildコマンド実行時のメモリ所要量の求め方

adbidxrebuildコマンドを実行する場合，HADBサーバは次に示すメモリを使用します。各メモリの所要量を求めてください。

■共有メモリ

プロセス共通メモリ（PROC_IDXRBLDSZ）

リアルスレッド固有メモリ（RTHD_IDXRBLDSZ）

■プロセスメモリ

ヒープメモリ（HEAP_IDXRBLDSZ）

それぞれのメモリ所要量の計算式を次に示します。

(1)　プロセス共通メモリの所要量の求め方（adbidxrebuildコマンド実行時）

adbidxrebuildコマンド実行時のプロセス共通メモリ（PROC_IDXRBLDSZ）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_IDXRBLDSZ＝
   Σ（PROC_MNG＋PROC_IDX※1＋PROC_IDXREBUILD※1＋PROC_RNGIDX※2
      ＋PROC_DBUPDINF※3＋PROC_RTHDUPDINF＋PROC_OBJDELENT※4＋PROC_IDXEST※6）※5

変数の説明

PROC_MNG

インデクス再作成の管理で使用するプロセス共通メモリ

「(a)　変数PROC_MNGの求め方」を参照して求めてください。

PROC_IDX

インデクス一括作成で使用するプロセス共通メモリ

「(b)　変数PROC_IDXの求め方」を参照して求めてください。

PROC_IDXREBUILD

B-treeインデクスの再作成で使用するプロセス共通メモリ

「(c)　変数PROC_IDXREBUILDの求め方」を参照して求めてください。

PROC_RNGIDX

レンジインデクスの一括更新で使用するプロセス共通メモリ

「(d)　変数PROC_RNGIDXの求め方」を参照して求めてください。

PROC_DBUPDINF

DBエリア，表，インデクス，およびチャンク更新情報の格納で必要なプロセス共通メモリ

「(e)　変数PROC_DBUPDINFの求め方」を参照して求めてください。

PROC_RTHDUPDINF

処理リアルスレッドの更新情報の管理で必要なプロセス共通メモリ

「(f)　変数PROC_RTHDUPDINFの求め方」を参照して求めてください。

PROC_OBJDELENT

S3オブジェクトまたはBLOBの削除情報

「(g)　変数PROC_OBJDELENTの求め方」を参照して求めてください。

PROC_IDXEST

B-treeインデクスの容量見積もり情報

「(h)　変数PROC_IDXESTの求め方」を参照して求めてください。

注※1

処理対象インデクスにB-treeインデクスが含まれる場合に加算してください。

注※2

処理対象インデクスにレンジインデクスが含まれる場合に加算してください。

注※3

マルチノード機能を使用する場合に加算してください。

注※4

クラウドストレージ機能を使用する場合に加算してください。

注※5

複数のadbidxrebuildコマンドを同時に実行する場合は，各adbidxrebuildコマンドが使用するメモリ所要量を求めてください。そして，それぞれで求めたメモリ所要量を合計してください。

注※6

次のどちらかの条件に該当する場合に加算します。

インデクス再作成オプションadb_idxrebuild_dvbix_rthd_useにVARIABLEを指定してadbidxrebuildコマンドを実行する場合

サーバ定義のadb_cmd_dvbix_rthd_useオペランドにVARIABLEを指定し，インデクス再作成オプションadb_idxrebuild_dvbix_rthd_useの指定を省略してadbidxrebuildコマンドを実行する場合

(a)　変数PROC_MNGの求め方

変数PROC_MNGは，インデクス再作成の管理で使用するプロセス共通メモリの所要量を求めるときに使用します。次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_MNG＝
    3＋DIC＋IOA＋SCAN＋IDXRBLDBUF_CTL＋STS＋PAGEALLOC＋PROC_AUDINFSZ※

注※

監査証跡機能が有効な場合に加算してください。

変数の説明

DIC：処理対象表の定義情報を取得するメモリ

「6.3.6　adbimportコマンド実行時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（adbimportコマンド実行時）」の「(a)　変数PROC_IMPTの求め方」の変数DICを参照してください。

IOA：データベースアクセスで使用するメモリ

次に示す計算式から求めてください。

計算式（単位：キロバイト）

IOA＝ 1,056＋（scan_buff_size＋offset_area×2）×scan_rthd

scan_buff_size

次に示す計算式から求めてください。

インデクス再作成オプションadb_idxrebuild_scan_buff_sizeの指定値×1,024

offset_area

次に示す計算式から求めてください。

（8×処理対象インデクスの構成列数×（scan_buff_size×1,024

÷（処理対象インデクスの構成列長の合計値＋8）））÷1,024

scan_rthd

次に示す計算式から求めてください。

↓（インデクス再作成オプションadb_idxrebuild_rthd_numの指定値－1）÷2↓

SCAN：インデクスレコードファイルの出力処理で必要となるメモリ

次に示す計算式から求めてください。

計算式（単位：キロバイト）

SCAN＝
   ↑（write_size×scan_rthd×b-tree_index_num）↑

write_size

インデクス再作成オプションadb_idxrebuild_dvix_wtbuff_sizeの指定値

scan_rthd

次に示す計算式から求めてください。

↓（インデクス再作成オプションadb_idxrebuild_rthd_numの指定値－1）÷2↓

b-tree_index_num

処理対象のB-treeインデクス数

IDXRBLDBUF_CTL：インデクス再作成用バッファ制御情報

次に示す計算式から求めてください。

計算式（単位：キロバイト）

IDXRBLDBUF_CTL＝
   ↑（248＋BUFBLK）÷1,024↑×scan_rthd

BUFBLK

「6.3.4　通常運用時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（通常運用時）」の「(f)　変数PROC_UPDSZの求め方」の変数BUFBLKを参照してください。

scan_rthd

次に示す計算式から求めてください。

↓（インデクス再作成オプションadb_idxrebuild_rthd_numの指定値－1）÷2↓

STS：ステータス情報を退避するメモリ

次に示す計算式から求めてください。

計算式（単位：キロバイト）

idx_num

処理対象のインデクス数

b_tree_idx_num

処理対象表に定義されたB-treeインデクスの数

range_idx_num

処理対象表に定義されたレンジインデクスの数

scan_rthd

次に示す計算式から求めてください。

↓（インデクス再作成オプションadb_idxrebuild_rthd_numの指定値－1）÷2↓

text_idx_num

処理対象表に定義されたテキストインデクスの数

imp_sts

adbimportコマンドのステータス情報を退避するメモリ

adbimportコマンドが中断したあとで，--create-temp-fileオプションを指定してadbidxrebuildコマンドを実行する場合に，「6.3.6　adbimportコマンド実行時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（adbimportコマンド実行時）」の「(a)　変数PROC_IMPTの求め方」にある変数STSで求めた値を加算してください。

PAGEALLOC：インデクス再作成用ページ割り当て制御情報

次に示す計算式から求めてください。

計算式（単位：キロバイト）

PAGEALLOC＝ dividx_rthd×310

dividx_rthd

次に示す計算式から求めてください。

インデクス再作成オプションadb_idxrebuild_rthd_numの指定値－1

PROC_AUDINFSZ

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(u)　変数AUDINFの求め方」にある変数PROC_AUDINFSZを参照してください。

(b)　変数PROC_IDXの求め方

変数PROC_IDXは，インデクス一括作成で使用するプロセス共通メモリの所要量を求めるときに使用します。次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

KEYSZ

B-treeインデクスのキー長（単位：バイト）

「5.8.4　B-treeインデクスのキー長（KEYSZ）の求め方」を基に，B-treeインデクスのキー長を求めてください。

なお，可変長データのB-treeインデクスのキー長を求める際は，「表5‒20　B-treeインデクスのキー長一覧」中の「実際のデータ長」を「データの定義長」で計算してください。

また，処理対象表に複数のB-treeインデクスが定義されている場合は，定義されたB-treeインデクスの中で最大のキー長を使用してください。

scan_rthd

次に示す計算式から求めてください。

↓（インデクス再作成オプションadb_idxrebuild_rthd_numの指定値－1）÷2↓

rd_buff_size

インデクス再作成オプションadb_idxrebuild_dvix_rdbuff_sizeの指定値

ld_buff_size

インデクス再作成オプションadb_idxrebuild_dvix_wtbuff_sizeの指定値

dividx_rthd

次に示す計算式から求めてください。

インデクス再作成オプションadb_idxrebuild_rthd_numの指定値－1

CTRL

インデクスのインデクス構成列がすべて固定長の場合

10バイトを代入してください。

インデクスのインデクス構成列に可変長を含む場合

12バイトを代入してください。

b_tree_idx_num

処理対象のB-treeインデクス数

text_idx_num

処理対象表に定義されたテキストインデクスの数

(c)　変数PROC_IDXREBUILDの求め方

変数PROC_IDXREBUILDは，B-treeインデクスの再作成で使用するプロセス共通メモリの所要量を求めるときに使用します。次に示す計算式から求めてください。

計算式（単位：キロバイト）

idx_num

再作成対象のB-treeインデクス数

PROC_IDXREBUILD_MEM（k）

次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_IDXREBUILD_MEM（k）＝
  ↑（184＋256×idx_col_num＋（18＋256×↑idx_lv÷16↑）×dividx_rthd
    ＋KEYSZ＋（idx_col_num＋1）×2＋4）÷1,024↑

idx_col_num

B-treeインデクスのインデクス構成列数

idx_lv

B-treeインデクスの段数

「5.8.3　B-treeインデクスのセグメントごとの格納ページ数の求め方」の「(2)　上位ページ用のセグメントで使用する格納ページ数（変数IP_UPPER（i））の求め方」の計算式1（PIDX（k）の求め方）の漸化式を計算して，PIDX（n）＝1となったときのnの値を代入してください。

ただし，PIDX（1）＝1の場合は，B-treeインデクスの段数は2としてください。

dividx_rthd

次に示す計算式から求めてください。

インデクス再作成オプションadb_idxrebuild_rthd_numの指定値－1

KEYSZ：B-treeインデクスのキー長（単位：バイト）

「5.8.4　B-treeインデクスのキー長（KEYSZ）の求め方」を基に，B-treeインデクスのキー長を求めてください。

なお，可変長データのB-treeインデクスのキー長を求める際は，「表5‒20　B-treeインデクスのキー長一覧」中の「実際のデータ長」を「データの定義長」で計算してください。

(d)　変数PROC_RNGIDXの求め方

変数PROC_RNGIDXは，レンジインデクスの一括更新で使用するプロセス共通メモリの所要量を求めるときに使用します。次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_RNGIDX＝ ↑64×rngidx_num÷1,024↑

変数の説明

rngidx_num：再作成対象のレンジインデクス数

(e)　変数PROC_DBUPDINFの求め方

変数PROC_DBUPDINFは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

DBUPDINF_ENT_NUM

DBエリア，表，インデクス，およびチャンク更新情報のエントリ数

次に示す計算式から求めてください。

計算式（単位：個数）

idx_num

再作成対象のB-treeインデクス数

rngidx_num

再作成対象のレンジインデクス数

txtidx_num

再作成対象のテキストインデクス数

chunk_num

再作成対象のインデクスを定義している表のチャンク数

(f)　変数PROC_RTHDUPDINFの求め方

変数PROC_RTHDUPDINFは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

rthd_num

処理リアルスレッド数

次に示す計算式から求めてください。

インデクス再作成オプションadb_idxrebuild_rthd_numの指定値－1

(g)　変数PROC_OBJDELENTの求め方

変数PROC_OBJDELENTは，次に示す値を代入してください。

値（単位：キロバイト）

PROC_OBJDELENT＝4,106

(h)　変数PROC_IDXESTの求め方

変数PROC_IDXESTは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_IDXEST＝↑｛4,120＋8×RTHNUM＋(8×idx_num＋Σ(ESTINF)＋4,096)×scan_rthd｝÷1,024↑

変数の説明

RTHNUM：総リアルスレッド数

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(a)　変数SCIの求め方」の変数RTHNUMを参照してください。

idx_num

処理対象表に定義するB-treeインデクスの数

Σ(ESTINF)

adbidxrebuildコマンドで再作成するB-treeインデクスごとにESTINFを次に示す計算式から求めて，求めた値を合計してください。

計算式（単位：バイト）

ESTINF＝56＋8×MIN(65,535 ，ESTENT_NUM)＋48×ESTENT_NUM

ESTENT_NUM

次に示す計算式から求めてください。

ESTENT_NUM＝
      MAX｛256 ，
           ↓MAX｛1 ，↓(↓(page_size×(100－pctfree))÷100↓－80)÷(KEYSZDB＋22)↓｝
             ×↓2,097,152÷page_size↓÷scan_rthd↓×2
           ｝

page_size

B-treeインデクスを格納するデータ用DBエリアのページサイズ（単位：バイト）

pctfree

CREATE INDEX文のPCTFREEオペランドに指定する未使用領域の比率（単位：％）

未使用領域の比率を指定しない場合は，30%と仮定して計算してください。

KEYSZDB

データベース格納キー長（単位：バイト）

「5.8.3　B-treeインデクスのセグメントごとの格納ページ数の求め方」の「(1)　下位ページ用のセグメントで使用する格納ページ数（変数IP_LOWER（i））の求め方」の変数KEYSZDBを参照してください。ただし，可変長のデータは，常にキー長を定義長として求めてください。

scan_rthd

次に示す計算式から求めてください。

↓(インデクス再作成オプションadb_idxrebuild_rthd_numの指定値－1)÷2↓

(2)　リアルスレッド固有メモリの所要量の求め方（adbidxrebuildコマンド実行時）

adbidxrebuildコマンド実行時のリアルスレッド固有メモリ（RTHD_IDXRBLDSZ）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

IDXRBLDBUF

インデクス再作成で使用するバッファ

「(a)　変数IDXRBLDBUFの求め方」を参照して求めてください。

RTHD_SCAN

インデクスレコードファイル作成時の表検索に使用するリアルスレッド固有メモリ

「(b)　変数RTHD_SCANの求め方」を参照して求めてください。

SORTIOBUF

ソート処理I/Oバッファ

「(c)　変数SORTIOBUFの求め方」を参照して求めてください。

SORTBUF

インデクス作成用ソートバッファ

「(d)　変数SORTBUFの求め方」を参照して求めてください。

RTHD_IDXREC

インデクス再作成時に使用するリアルスレッド固有メモリ

「(e)　変数RTHD_IDXRECの求め方」を参照して求めてください。

RTHD_IDXREBUILD

B-treeインデクス再作成時に使用するリアルスレッド固有メモリ

「(f)　変数RTHD_IDXREBUILDの求め方」を参照して求めてください。

RTHD_RNGIDX

レンジインデクス一括更新時に使用するリアルスレッド固有メモリ

「(g)　変数RTHD_RNGIDXの求め方」を参照して求めてください。

RTHD_TXTIDX

テキストインデクス一括更新時に使用するリアルスレッド固有メモリ

「(h)　変数RTHD_TXTIDXの求め方」を参照して求めてください。

注※1

処理対象インデクスがレンジインデクスだけの場合は，0として計算してください。

注※2

B-treeインデクスを対象にした場合に加算してください。

注※3

処理対象インデクスにレンジインデクスが含まれる場合に加算してください。

注※4

処理対象インデクスにテキストインデクスが含まれる場合に加算してください。

(a)　変数IDXRBLDBUFの求め方

変数IDXRBLDBUFは，インデクス再作成で使用するリアルスレッド固有メモリの所要量を求めるときに使用します。次に示す計算式から求めてください。

計算式（単位：キロバイト）

IDXRBLDBUF＝↑（RBLD_SQBUF※1＋RBLD_COBUF※2)÷1,024↑

注※1

クラウドストレージ機能を使用しない場合に加算してください。

注※2

クラウドストレージ機能を使用する場合に加算してください。

変数の説明

RBLD_SQBUF：次に示す計算式から求めてください。

計算式（単位：バイト）

RBLD_SQBUF＝
     RBLD_SQBLK＋RBLD_SQIO＋RBLD_SQPGE＋RBLD_SQHS

RBLD_SQBLK：次に示す計算式から求めてください。

計算式（単位：バイト）

RBLD_SQBLK＝
  rbld_blknum×（136＋↑RBLD_BLKSZ÷rbld_pagesize÷64↑×40）

rbld_blknum

インデクス再作成オプションadb_idxrebuild_buff_blk_numの指定値

RBLD_BLKSZ

4,194,304を代入してください。

rbld_pagesize

インデクス一括作成の対象であるB-treeインデクスまたはテキストインデクスが格納されているDBエリアのページサイズのうち，最小の値（単位：バイト）

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」にある「表6‒3　DBエリアのページサイズ」のデータ用DBエリアのページサイズを参照して求めてください。

RBLD_SQIO：次に示す計算式から求めてください。

計算式（単位：バイト）

RBLD_SQIO＝ 568×rbld_blknum

rbld_blknum

インデクス再作成オプションadb_idxrebuild_buff_blk_numの指定値

RBLD_SQPGE：次に示す計算式から求めてください。

計算式（単位：バイト）

RBLD_SQPGE＝
  （176＋rbld_pagesize＋BUFLOG）×（RBLD_BLKSZ÷rbld_pagesize）
  ×rbld_blknum

rbld_pagesize

インデクス一括作成の対象であるB-treeインデクスまたはテキストインデクスが格納されているDBエリアのページサイズのうち，最小の値（単位：バイト）

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」にある「表6‒3　DBエリアのページサイズ」のデータ用DBエリアのページサイズを参照して求めてください。

BUFLOG

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(d)　変数BUFGLOBALの求め方」の変数BUFLOGを参照してください。

RBLD_BLKSZ

4,194,304を代入してください。

rbld_blknum

インデクス再作成オプションadb_idxrebuild_buff_blk_numの指定値

RBLD_SQHS：次に示す計算式から求めてください。

計算式（単位：バイト）

RBLD_SQHS＝ 48×rbld_blknum

rbld_blknum

インデクス再作成オプションadb_idxrebuild_buff_blk_numの指定値

RBLD_COBUF：次に示す計算式から求めてください。

計算式（単位：バイト）

RBLD_COBUF
     ＝RBLD_COBLK＋RBLD_COIO＋RBLD_COPGE＋RBLD_COHS

RBLD_COBLK：次に示す計算式から求めてください。

計算式（単位：バイト）

RBLD_COBLK＝rbld_blknum×72

rbld_blknum

インデクス再作成オプションadb_idxrebuild_buff_blk_numの指定値

RBLD_COIO：次に示す計算式から求めてください。

計算式（単位：バイト）

RBLD_COIO＝136×rbld_blknum

rbld_blknum

インデクス再作成オプションadb_idxrebuild_buff_blk_numの指定値

RBLD_COPGE：次に示す計算式から求めてください。

計算式（単位：バイト）

RBLD_COPGE
     ＝（（176＋BUFLOG）×SEGSIZE＋RBLD_COBLKSZ）×rbld_blknum

BUFLOG

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(d)　変数BUFGLOBALの求め方」の変数BUFLOGを参照してください。

SEGSIZE

次のDBエリアのセグメントサイズのうち，最大の値（単位：ページ数）

処理対象表が格納されているDBエリア

処理対象表に定義されているB-treeインデクスまたはテキストインデクスが格納されているDBエリア

次に示す計算式で求めてください。

SEGSIZE＝ 1セグメントの容量（単位：バイト）÷page_size

RBLD_COBLKSZ：次に示す計算式から求めてください。

RBLD_COBLKSZ＝32×1,024×1,024

rbld_blknum

インデクス再作成オプションadb_idxrebuild_buff_blk_numの指定値

RBLD_COHS：次に示す計算式から求めてください。

計算式（単位：バイト）

RBLD_COHS＝40×rbld_blknum

rbld_blknum

インデクス再作成オプションadb_idxrebuild_buff_blk_numの指定値

(b)　変数RTHD_SCANの求め方

変数RTHD_SCANは，インデクスレコードファイル作成時の表検索に使用するリアルスレッド固有メモリの所要量を求めるときに使用します。次に示す計算式から求めてください。

計算式（単位：キロバイト）

RTHD_SCAN ＝ MAX（ RTHD_EXESQLSZ , RTHD_EXESQLDICSZ ）

注

次に示すSQL文を実行したものと仮定して，変数RTHD_EXESQLSZおよび変数RTHD_EXESQLDICSZの値をそれぞれ求めてください。

SELECT 選択式※ FROM "対象表名"

注※

CHAR(16)の列と，処理対象インデクスの全インデクス構成列について重複を排除した列を指定したものとして求めてください。

変数の説明

RTHD_EXESQLSZ

「6.3.4　通常運用時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（通常運用時）」の「(c)　変数RTHD_EXESQLSZの求め方」を参照してください。

RTHD_EXESQLDICSZ

「6.3.4　通常運用時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（通常運用時）」の「(g)　変数RTHD_EXESQLDICSZの求め方」を参照してください。

(c)　変数SORTIOBUFの求め方

変数SORTIOBUFは，ソート処理で使用するリアルスレッド固有メモリの所要量を求めるときに使用します。次に示す計算式から求めてください。

計算式（単位：キロバイト）

SORTIOBUF＝ sort_io_buff_size×sort_rthd

変数の説明

sort_io_buff_size

16を代入してください。

sort_rthd

次に示す計算式から求めてください。

インデクス再作成オプションadb_idxrebuild_rthd_numの指定値－1

(d)　変数SORTBUFの求め方

変数SORTBUFは，インデクス再作成時のソート処理で使用するリアルスレッド固有メモリの所要量を求めるときに使用します。次に示す計算式から求めてください。

計算式（単位：キロバイト）

SORTBUF＝ （48＋sort_buff_size×1,024）×sort_rthd

変数の説明

sort_rthd

次に示す計算式から求めてください。

インデクス再作成オプションadb_idxrebuild_rthd_numの指定値－1

sort_buff_size

インデクス再作成オプションadb_idxrebuild_sort_buff_sizeの指定値※

注※

ソート処理では，作業用ワークファイルが作成されます。このファイルの容量を最小にする変数sort_buff_sizeの計算式を次に示します。変数sort_buff_sizeは，次に示す計算式を満たすようにしてください。ただし，メモリに余裕がない場合，またはほとんどのデータがインデクスキー順に並んでいる場合は，必要以上に大きな値を指定しないでください。

計算式

変数の説明

REC_SIZE：次に示す計算式から求めてください。

計算式

REC_SIZE＝ （KEYSZ＋SYS1）＋SYS2

KEYSZ：処理対象表に定義されたB-treeインデクスのインデクスキー長

「5.8.4　B-treeインデクスのキー長（KEYSZ）の求め方」を基に，B-treeインデクスのキー長を求めてください。

なお，可変長データのB-treeインデクスのキー長を求める際は，「表5‒20　B-treeインデクスのキー長一覧」中の「実際のデータ長」を「データの定義長」で計算してください。

また，処理対象表に複数のB-treeインデクスが定義されている場合は，定義されたB-treeインデクスの中で最大のキー長を使用してください。

SYS1：次に示す値を仮定してください。

処理対象表に定義されたインデクスのインデクス構成列が固定長の場合：10

処理対象表に定義されたインデクスのインデクス構成列に可変長を含む場合：12

SYS2：次に示す値を仮定してください。

処理対象表に定義されたインデクスが可変長の複数列インデクスの場合：（インデクス構成列数×4）

そのほかのインデクスの場合：0

BLK：次に示す計算式から求めてください。

計算式

BLK＝ REC_SIZE＋（KEYSZ＋8）＋56

row_num：

処理対象表に格納されている行数

KEY_INF：次に示す計算式から求めてください。

計算式

KEY_INF＝ REC_SIZE＋（KEYSZ＋8）＋28

COL_INFO：次に示す計算式から求めてください。

計算式

COL_INFO＝ 2,112＋（MULTI_KEY_INFO×32）＋（KEYSZ＋8）

MULTI_KEY_INFO：次に示す値を仮定してください。

処理対象表に定義されたB-treeインデクスが可変長の複数列インデクスの場合

（インデクス構成列数×2）＋2

そのほかの場合

5

(e)　変数RTHD_IDXRECの求め方

変数RTHD_IDXRECは，インデクス再作成時に使用するリアルスレッド固有メモリの所要量を求めるときに使用します。次に示す計算式から求めてください。

計算式（単位：キロバイト）

RTHD_IDXREC＝
   ↑（386＋328×（idx_num−1）＋32×max_idx_col_num
     ＋（64＋buf_size×1,024）×2×idx_num）÷1,024↑

変数の説明

idx_num

再作成対象のB-treeインデクス数

max_idx_col_num

再作成対象のB-treeインデクスのインデクス構成列数の最大値

buf_size

1,024を代入してください。

(f)　変数RTHD_IDXREBUILDの求め方

変数RTHD_IDXREBUILDは，B-treeインデクス再作成時に使用するリアルスレッド固有メモリの所要量を求めるときに使用します。次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

idx_num

再作成対象のB-treeインデクス数

RTHD_IDXREBUILD_MEM（k）

次に示す計算式から求めてください。

計算式（単位：キロバイト）

RTHD_IDXREBUILD_MEM（k）＝
  ↑（61,458＋↑MAX（255，KEYSZ）÷2↑×2＋3,070
   ＋↑KEYSZ＋CTRL÷8↑×8＋MAX（255，KEYSZ）＋14
   ＋↓8＋page_size×95÷100↓×2）÷1,024↑

page_size

B-treeインデクスが定義されているデータ用DBエリアのページサイズ（単位：バイト）

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」にある「表6‒3　DBエリアのページサイズ」のデータ用DBエリアのページサイズを参照して求めてください。

KEYSZ

B-treeインデクスのキー長（単位：バイト）

「5.8.4　B-treeインデクスのキー長（KEYSZ）の求め方」を基に，B-treeインデクスのキー長を求めてください。

なお，可変長データのB-treeインデクスのキー長を求める際は，「表5‒20　B-treeインデクスのキー長一覧」中の「実際のデータ長」を「データの定義長」で計算してください。

CTRL

インデクス構成列のキー長がすべて固定長の場合：10バイト

インデクス構成列のキー長に可変長を含む場合：12バイト

(g)　変数RTHD_RNGIDXの求め方

変数RTHD_RNGIDXは，レンジインデクス一括更新時に使用するリアルスレッド固有メモリの所要量を求めるときに使用します。次に示す計算式から求めてください。

計算式（単位：キロバイト）

RTHD_RNGIDX＝ ↑（16＋128×rngidx_num）×scan_rthd÷1,024↑

変数の説明

rngidx_num

再作成対象のレンジインデクス数

scan_rthd

次に示す計算式から求めてください。

↓（インデクス再作成オプションadb_idxrebuild_rthd_numの指定値－1）÷2↓

(h)　変数RTHD_TXTIDXの求め方

変数RTHD_TXTIDXは，テキストインデクス一括更新時に使用するリアルスレッド固有メモリの所要量を求めるときに使用します。次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

idx_num

処理対象表に定義されたテキストインデクスの数

RTHD_TXTIDXBUILD_MEM(k)

次に示す計算式から求めてください。

計算式（単位：キロバイト）

buff_blk_size

4,096を代入してください。

buff_blk_num

インデクス再作成オプションadb_idxrebuild_buff_blk_numの指定値

idx_div_num

k番目のテキストインデクスのインデクス構成列定義長

txt_sort_buff_size

インデクス再作成オプションadb_idxrebuild_txt_buff_sizeの指定値

(3)　ヒープメモリの所要量の求め方（adbidxrebuildコマンド実行時）

adbidxrebuildコマンド実行時のヒープメモリ（HEAP_IDXRBLDSZ）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

HEAP_IDXRBLDSZ＝ Σ（505×sort_rthd）※

変数の説明

sort_rthd

次に示す計算式から求めてください。

インデクス再作成オプションadb_idxrebuild_rthd_numの指定値－1

注※

複数のadbidxrebuildコマンドを同時に実行する場合は，各adbidxrebuildコマンドが使用するヒープメモリの所要量を求めてください。そして，それぞれで求めたヒープメモリの所要量を合計してください。

6.3.8　adbgetcstコマンド実行時のメモリ所要量の求め方

adbgetcstコマンドを実行する場合，HADBサーバは次に示すメモリを使用します。各メモリの所要量を求めてください。

■共有メモリ

プロセス共通メモリ（PROC_GETCOSTSZ）

リアルスレッド固有メモリ（RTHD_GETCOSTSZ）

それぞれのメモリ所要量の計算式を次に示します。

(1)　プロセス共通メモリの所要量の求め方（adbgetcstコマンド実行時）

adbgetcstコマンド実行時のプロセス共通メモリ（PROC_GETCOSTSZ）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_GETCOSTSZ＝ Σ（PROC_MNG＋PROC_CST）※

変数の説明

PROC_MNG

コスト情報収集時の管理で使用するプロセス共通メモリ

「(a)　変数PROC_MNGの求め方」を参照して求めてください。

PROC_CST

コスト情報収集時にバッファとして使用するプロセス共通メモリ

「(b)　変数PROC_CSTの求め方」を参照して求めてください。

注※

複数のadbgetcstコマンドを同時に実行する場合は，各adbgetcstコマンドが使用するメモリ所要量を求めてください。そして，それぞれで求めたメモリ所要量を合計してください。

(a)　変数PROC_MNGの求め方

変数PROC_MNGは，コスト情報収集時の管理で使用するプロセス共通メモリの所要量を求めるときに使用します。次に示す計算式から求めてください。

計算式（単位：キロバイト）

注※

監査証跡機能が有効な場合に加算してください。

変数の説明

DIC

処理対象表の定義情報を取得するメモリ

「6.3.6　adbimportコマンド実行時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（adbimportコマンド実行時）」の「(a)　変数PROC_IMPTの求め方」の変数DICを参照して求めてください。

IOA

データベースアクセスで使用するメモリ

計算式（単位：キロバイト）

TBL

処理対象表の管理で使用するメモリ

計算式（単位：キロバイト）

tbl_num

処理対象表の数

DBSTA

データベース状態解析で使用するメモリ

計算式（単位：キロバイト）

PROC_AUDINFSZ

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(u)　変数AUDINFの求め方」にある変数PROC_AUDINFSZを参照して求めてください。

(b)　変数PROC_CSTの求め方

変数PROC_CSTは，コスト情報収集時にバッファとして使用するプロセス共通メモリの所要量を求めるときに使用します。

adbgetcstコマンドの-tオプションを省略して実行した場合は，-uオプションに指定した認可識別子のスキーマ内のすべての表について，変数PROC_CSTを求めてください。その中で最も大きい値が，変数PROC_CSTとなります。

次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_CST＝ DBHTBLINF＋DICTBLINF

変数の説明

DBHTBLINF

処理対象表のコスト情報を収集するときに使用するメモリ

計算式（単位：キロバイト）

col_num

処理対象表の列数

coldata（i）

各列のデータ長

「6.3.4　通常運用時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（通常運用時）」の「(c)　変数RTHD_EXESQLSZの求め方」の「表6‒11　各データ型のデータ長の一覧」を参照して求めてください。

collen（i）

各列の定義長

sql_rthd_num

次に示す計算式から求めてください。

コスト情報収集オプションadb_getcst_rthd_numの指定値－1

DICTBLINF

処理対象表のコスト情報をシステム表に格納するときに使用するメモリ

計算式（単位：キロバイト）

col_num

処理対象表の列数

b_tree_idx_num

処理対象表に定義されたB-treeインデクスの数

text_idx_num

処理対象表に定義されたテキストインデクスの数

row_size

処理対象表の行長

計算式

coldata（i）：各列のデータ長

「6.3.4　通常運用時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（通常運用時）」の「(c)　変数RTHD_EXESQLSZの求め方」の「表6‒11　各データ型のデータ長の一覧」を参照して求めてください。

(2)　リアルスレッド固有メモリの所要量の求め方（adbgetcstコマンド実行時）

adbgetcstコマンド実行時のリアルスレッド固有メモリ（RTHD_GETCOSTSZ）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

RTHD_GETCOSTSZ＝ COSTSQL

変数の説明

COSTSQL

コスト情報収集時に実行される検索系SQLで使用するメモリ

adbgetcstコマンドを実行すると，処理対象表のコスト情報を収集するために，次に示すSQL文が実行されます。

SELECT COUNT(*) FROM "対象表名"
SELECT MIN("列名1"),MAX("列名1") FROM "対象表名"
    :
SELECT MIN("列名n"),MAX("列名n") FROM "対象表名"
SELECT * FROM "対象表名"

注　列名1～列名nは，対象表に定義されている列名です。

「6.3.4　通常運用時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（通常運用時）」の「(c)　変数RTHD_EXESQLSZの求め方」および「(g)　変数RTHD_EXESQLDICSZの求め方」を参照して，検索系SQLの実行時に使用されるメモリの所要量を，処理対象表ごとに求めてください。その中で，最も大きい値を代入してください。

6.3.9　adbdbstatusコマンド実行時のメモリ所要量の求め方

adbdbstatusコマンドを実行する場合，HADBサーバは次に示すメモリを使用します。各メモリの所要量を求めてください。

■共有メモリ

プロセス共通メモリ（PROC_DBSTATUSSZ）

リアルスレッド固有メモリ（RTHD_DBSTATUSSZ）

それぞれのメモリ所要量の計算式を次に示します。

(1)　プロセス共通メモリの所要量の求め方（adbdbstatusコマンド実行時）

adbdbstatusコマンド実行時のプロセス共通メモリ（PROC_DBSTATUSSZ）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_DBSTATUSSZ＝ Σ（PROC_MNG）※

注※

複数のadbdbstatusコマンドを同時に実行する場合は，各adbdbstatusコマンドが使用するメモリ所要量を求めてください。そして，それぞれで求めたメモリ所要量を合計してください。

変数の説明

PROC_MNG

データベース状態解析管理で使用するプロセス共通メモリ

計算式（単位：キロバイト）

PROC_MNG＝ 1,353＋DICINF＋DBINF＋ARCINF※1＋PROC_AUDINFSZ※2

注※1

adbdbstatusコマンドの-cオプションに，archivechunkを指定した場合に加算してください。

注※2

監査証跡機能が有効な場合に加算してください。

DICINF

定義情報を管理するメモリ

計算式（単位：キロバイト）

dbarea_num

データ用DBエリアの数

table_num

ユーザが定義した実表の数

arctable_num

ユーザが定義した実表のうち，アーカイブマルチチャンク表の数

index_num

ユーザが定義したインデクスの数

DBINF

データベース情報を管理するメモリ

計算式（単位：キロバイト）

file_num

解析対象のDBエリア，および解析対象の実表やインデクスを格納するDBエリアのうち，最も多いDBエリアファイルの数

chunk_num

解析対象の実表やインデクスに作成されたチャンクのうち，最も多いチャンクの数

「付録C.9　システム表の検索」の「(10)　作成されたチャンクの数を調べる場合」を参照して求めてください。

uthd_num

サーバ定義adb_sys_uthd_numオペランドの指定値

adbdbstatusコマンドの-d reorginfoオプションを指定しない場合は，0としてください。

ARCINF

アーカイブマルチチャンク表を管理するメモリ

計算式（単位：キロバイト）

col_num

処理対象表の列数

max_rowsz

最大行長（単位：バイト）

最大行長については，「5.8.2　行の種別ごとの格納ページ数の求め方」の「(1)　基本行用ページ数（変数BP（i））の求め方」の行長ROWSZの計算式を基に求めてください。

idx_num

処理対象表に定義されたインデクス数

PROC_AUDINFSZ

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(u)　変数AUDINFの求め方」にある変数PROC_AUDINFSZを参照して求めてください。

(2)　リアルスレッド固有メモリの所要量の求め方（adbdbstatusコマンド実行時）

adbdbstatusコマンド実行時のリアルスレッド固有メモリ（RTHD_DBSTATUSSZ）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

RTHD_DBSTATUSSZ＝ 3＋CHUNKINF

変数の説明

CHUNKINF

処理対象表のチャンク情報

計算式（単位：キロバイト）

CHUNKINF＝↑（32＋32×chunk_num）÷1,024↑

chunk_num

処理対象表，または処理対象表のインデクスに作成されるチャンク数のうち，最大値を代入してください。

6.3.10　adbexportコマンド実行時のメモリ所要量の求め方

adbexportコマンドを実行する場合，HADBサーバは次に示すメモリを使用します。各メモリの所要量を求めてください。

■共有メモリ

プロセス共通メモリ（PROC_EXPORTSZ）

リアルスレッド固有メモリ（RTHD_EXPORTSZ）

■プロセスメモリ

ヒープメモリ（HEAP_EXPORTSZ）

(1)　プロセス共通メモリの所要量の求め方（adbexportコマンド実行時）

adbexportコマンド実行時に使用するプロセス共通メモリ（PROC_EXPORTSZ）は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

注※1

出力データパスファイル名に指定した出力データファイル数が1,024個を超える場合に加算します。

注※2

複数のadbexportコマンドを同時に実行する場合は，各adbexportコマンドが使用するメモリ所要量を求めてください。そして，それぞれで求めたメモリ所要量を合計してください。

変数の説明

PROC_MNG

次に示す計算式から求めてください。

計算式（単位：キロバイト）

注※1

adbexportコマンドに-nオプションを指定した場合に加算してください。

注※2

監査証跡機能が有効な場合に加算してください。

DIC

「6.3.6　adbimportコマンド実行時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（adbimportコマンド実行時）」の「(a)　変数PROC_IMPTの求め方」の変数DICを参照して求めてください。

IOA

次に示す計算式から求めてください。

計算式（単位：キロバイト）

sql_size

次に示す計算式から求めてください。

計算式

sql_size＝ （SQL記述ファイルのサイズ）×2＋1＋1,024

scan_buff_size

次に示す計算式から求めてください。

計算式

エクスポートオプションadb_export_scan_buff_sizeの指定値×1,024

offset_area

次に示す計算式から求めてください。

計算式

（8×検索結果の列数×（scan_buff_size×1,024÷検索結果のデータ長））÷1,024

scan_rthd

次に示す計算式から求めてください。

計算式

↓（エクスポートオプションadb_export_rthd_numの指定値－1）÷2↓

EXPF

次に示す計算式から求めてください。

計算式（単位：キロバイト）

注※

adbexportコマンドの--compress GZIPオプションを指定したときに加算してください。

exp_rthd

次に示す計算式から求めてください。

計算式

↓（エクスポートオプションadb_export_rthd_numの指定値－1）÷2↓

PROC_EXPSQLS

adbexportコマンドを実行すると，処理対象表からデータをエクスポートするために，次に示すSQL文が1回実行されます。

-nオプションを指定した場合

SELECT * FROM 対象表名;

-qオプションを指定した場合

SQL記述ファイルに記述したSELECT文

「6.3.4　通常運用時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（通常運用時）」の「(c)　変数PROC_EXECSQLSZの求め方」を参照して，検索系SQLの実行時に使用されるメモリの所要量を，処理対象表ごとに求めてください。その中で，最も大きい値を代入してください。

PROC_AUDINFSZ

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(u)　変数AUDINFの求め方」にある変数PROC_AUDINFSZを参照して求めてください。

PROC_OUTFILE

出力データパスファイル名に指定した出力データファイル数が1,024個を超える場合に加算する必要があります。次に示す計算式から求めてください。

計算式（単位：キロバイト）

OUTFMAX

出力データパスファイル名に指定した出力データファイル数

(2)　リアルスレッド固有メモリの所要量の求め方（adbexportコマンド実行時）

adbexportコマンド実行時に使用するリアルスレッド固有メモリ（RTHD_EXPORTSZ）は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

EXPORTSQL

adbexportコマンドを実行すると，処理対象表からデータをエクスポートするために，次に示すSQL文が1回実行されます。

-nオプションを指定した場合

SELECT * FROM 対象表名;

-qオプションを指定した場合

SQL記述ファイルに記述したSELECT文

「6.3.4　通常運用時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（通常運用時）」の「(c)　変数RTHD_EXESQLSZの求め方」および「(g)　変数RTHD_EXESQLDICSZの求め方」を参照して，検索系SQLの実行時に使用されるメモリの所要量を，処理対象表ごとに求めてください。その中で，最も大きい値を代入してください。

(3)　ヒープメモリの所要量の求め方（adbexportコマンド実行時）

adbexportコマンド実行時に使用するヒープメモリ（HEAP_EXPORTSZ）は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

注※

複数のadbexportコマンドを同時に実行する場合は，各adbexportコマンドが使用するメモリ所要量を求めてください。そして，それぞれで求めたメモリ所要量を合計してください。

変数の説明

HEAP_ZLIB

--compress GZIPオプションを指定した場合に，次に示す計算式から求めてください。

計算式（単位：キロバイト）

file_num

出力データファイル数

6.3.11　adbstatコマンド実行時のメモリ所要量の求め方

adbstatコマンドを実行する場合，HADBサーバは次に示すメモリを使用します。

■プロセスメモリ

ヒープメモリ（STATMEMSZ）

adbstatコマンド実行時に使用するヒープメモリ（STATMEMSZ）は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

exec_num：同時に実行するadbstatコマンドの数

6.3.12　adbmodareaコマンド実行時のメモリ所要量の求め方

adbmodareaコマンドを実行する場合，HADBサーバは次に示すメモリを使用します。各メモリの所要量を求めてください。

■共有メモリ

プロセス共通メモリ（PROC_MODASZ）

リアルスレッド固有メモリ（RTHD_MODASZ）

■プロセスメモリ

ヒープメモリ（MODA_MEM）

(1)　プロセス共通メモリの所要量の求め方（adbmodareaコマンド実行時）

adbmodareaコマンド実行時のプロセス共通メモリ（PROC_MODASZ）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_MODASZ＝ MODA_ROWS＋MODA_CTL＋MODA_DBH＋PROC_AUDINFSZ※＋8

注※

監査証跡機能が有効な場合に加算してください。

変数の説明

MODA_ROWS

「(a)　変数MODA_ROWSの求め方」を参照して求めてください。

MODA_CTL

「(b)　変数MODA_CTLの求め方」を参照して求めてください。

MODA_DBH

「(c)　変数MODA_DBHの求め方」を参照して求めてください。

PROC_AUDINFSZ

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(u)　変数AUDINFの求め方」にある変数PROC_AUDINFSZを参照して求めてください。

(a)　変数MODA_ROWSの求め方

変数MODA_ROWSは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

MODA_ROWS＝ ↑（256×row_cnt）÷1,024↑

変数の説明

row_cnt

ディクショナリ表SQL_DBAREASの行数

(b)　変数MODA_CTLの求め方

変数MODA_CTLは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

MODA_CTL＝
    36,867＋MODA_REQ＋↑（（8×row_cnt）
    ＋（64×（bdev_num_new＋bdev_num_alloc））
    ＋（8×bdev_num_area）＋（256×bdev_num_file））÷1,024↑

変数の説明

MODA_REQ

「(2)　リアルスレッド固有メモリの所要量の求め方（adbmodareaコマンド実行時）」の変数MODA_REQを参照してください。

row_cnt

ディクショナリ表SQL_DBAREASの行数

bdev_num_new

新規に割り当てるブロックスペシャルファイル数

クラウドストレージ機能を使用する場合は，0を代入してください。

bdev_num_alloc

割り当て済みのブロックスペシャルファイル数

クラウドストレージ機能を使用する場合は，1を代入してください。

bdev_num_area

ブロックスペシャルファイルを割り当てたDBエリア数

クラウドストレージ機能を使用する場合は，1を代入してください。

bdev_num_file

ブロックスペシャルファイルを割り当てたDBエリアのDBエリアファイル数の合計値

クラウドストレージ機能を使用する場合は，1を代入してください。

(c)　変数MODA_DBHの求め方

変数MODA_DBHは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

注※

複数のDBエリアを追加する場合，または複数のDBエリアを拡張する場合は，DBエリアごとに求めてください。そして，求めた値を合計してください。

変数の説明

add_dbarea_file_num

adbmodareaコマンドによるDBエリアの追加，およびDBエリアの拡張によって増加するDBエリアファイルの数

add_dbarea_file_num_all

既存のDBエリアファイルの数と，DBエリアの拡張によって増加するDBエリアファイルの数を合計した値

(2)　リアルスレッド固有メモリの所要量の求め方（adbmodareaコマンド実行時）

adbmodareaコマンド実行時のリアルスレッド固有メモリ（RTHD_MODASZ）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

RTHD_MODASZ＝20,480＋262,660※＋MODA_REQ

注※

クラウドストレージ機能を使用する場合に加算してください。

変数の説明

MODA_REQ

次に示す計算式から求めてください。

bdev_num_new

新規に割り当てるブロックスペシャルファイル数

クラウドストレージ機能を使用する場合は，0を代入してください。

(3)　ヒープメモリの所要量の求め方（adbmodareaコマンド実行時）

adbmodareaコマンド実行時のヒープメモリ（MODA_MEM）の所要量は，次に示す計算式から求めてください。

計算式（単位：メガバイト）

変数の説明

bdev_num_new

新規に割り当てるブロックスペシャルファイル数

クラウドストレージ機能を使用する場合は，0を代入してください。

重要

adbmodareaコマンドで，DBエリアの追加およびDBエリアの削除を実行した場合は，次に示すメモリ所要量が変化します。そのため，再見積もりしてください。

グローバルバッファページの所要量（変数SHM_BUFGLOBAL）

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」を参照してください。

プロセス共通メモリの所要量（変数BUFGLOBAL）

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」を参照してください。

6.3.13　adbmergechunkコマンド実行時のメモリ所要量の求め方

adbmergechunkコマンドを実行する場合，HADBサーバは次に示すメモリを使用します。各メモリの所要量を求めてください。

■共有メモリ

プロセス共通メモリ（PROC_MERGCSZ）

リアルスレッド固有メモリ（RTHD_MERCHKSZ）

■プロセスメモリ

ヒープメモリ（HEAP_MERCHKSZ）

それぞれのメモリ所要量の計算式を次に示します。

(1)　プロセス共通メモリの所要量の求め方（adbmergechunkコマンド実行時）

adbmergechunkコマンド実行時のプロセス共通メモリ（PROC_MERGCSZ）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_MERGCSZ＝
  Σ（PROC_MNG＋PROC_IDX※1＋PROC_IDXREBUILD※1＋PROC_RNGIDX※2
     ＋PROC_CHUNK_INFO＋PROC_DBUPDINF＋PROC_RTHDUPDINF
        ＋PROC_OBJDELENT※3＋PROC_IDXEST※5）※4

変数の説明

PROC_MNG

「(a)　変数PROC_MNGの求め方」を参照して求めてください。

PROC_IDX

「(b)　変数PROC_IDXの求め方」を参照して求めてください。

PROC_IDXREBUILD

「(c)　変数PROC_IDXREBUILDの求め方」を参照して求めてください。

PROC_RNGIDX

「(d)　変数PROC_RNGIDXの求め方」を参照して求めてください。

PROC_CHUNK_INFO

「(e)　変数PROC_CHUNK_INFOの求め方」を参照して求めてください。

PROC_DBUPDINF

「(f)　変数PROC_DBUPDINFの求め方」を参照して求めてください。

PROC_RTHDUPDINF

「(g)　変数PROC_RTHDUPDINFの求め方」を参照して求めてください。

PROC_OBJDELENT

「(h)　変数PROC_OBJDELENTの求め方」を参照して求めてください。

PROC_IDXEST

B-treeインデクスの容量見積もり情報

「(i)　変数PROC_IDXESTの求め方」を参照して求めてください。

注※1

処理対象インデクスにB-treeインデクスが含まれる場合に加算してください。

注※2

処理対象インデクスにレンジインデクスが含まれる場合に加算してください。

注※3

クラウドストレージ機能を使用する場合に加算してください。

注※4

複数のadbmergechunkコマンドを同時に実行する場合は，各adbmergechunkコマンドが使用するメモリ所要量を求めてください。そして，それぞれで求めたメモリ所要量を合計してください。

注※5

次のどちらかの条件に該当する場合に加算します。

マージチャンクオプションadb_mergechunk_dvbix_rthd_useにVARIABLEを指定してadbmergechunkコマンドを実行する場合

サーバ定義のadb_cmd_dvbix_rthd_useオペランドにVARIABLEを指定し，マージチャンクオプションadb_mergechunk_dvbix_rthd_useの指定を省略してadbmergechunkコマンドを実行する場合

(a)　変数PROC_MNGの求め方

変数PROC_MNGは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_MNG＝
    5＋DIC＋IOA＋SCAN＋IDXRBLDBUF_CTL＋STS＋PAGEALLOC＋CHUNK＋PROC_AUDINFSZ※

注※

監査証跡機能が有効な場合に加算してください。

変数の説明

DIC：処理対象表の定義情報を取得するメモリ

「6.3.6　adbimportコマンド実行時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（adbimportコマンド実行時）」の「(a)　変数PROC_IMPTの求め方」の変数DICを参照してください。

IOA：データベースアクセスで使用するメモリ

次に示す計算式から求めてください。

計算式（単位：キロバイト）

IOA＝ sql_size＋（scan_buff_size＋offset_area×2）×scan_rthd

sql_size

次に示す計算式から求めてください。

32＋1,024

scan_buff_size

次に示す計算式から求めてください。

マージチャンクオプションadb_mergechunk_scan_buff_sizeの指定値×1,024

offset_area

次に示す計算式から求めてください。

（8×処理対象インデクスの構成列数×（scan_buff_size×1,024

÷（処理対象インデクスの構成列長の合計値＋8）））÷1,024

scan_rthd

次に示す計算式から求めてください。

↓（マージチャンクオプションadb_mergechunk_rthd_numの指定値－1）÷2↓

SCAN：インデクスレコードファイルの出力処理で必要となるメモリ

次に示す計算式から求めてください。

計算式（単位：キロバイト）

SCAN＝
   ↑（write_size×scan_rthd×b-tree_index_num）↑

write_size

マージチャンクオプションadb_mergechunk_dvix_wtbuff_sizeの指定値

scan_rthd

次に示す計算式から求めてください。

↓（マージチャンクオプションadb_mergechunk_rthd_numの指定値－1）÷2↓

b-tree_index_num

処理対象のB-treeインデクス数

IDXRBLDBUF_CTL：マージチャンク用バッファ制御情報

次に示す計算式から求めてください。

計算式（単位：キロバイト）

IDXRBLDBUF_CTL＝
   ↑（248＋BUFBLK）÷1,024↑×scan_rthd

BUFBLK

「6.3.4　通常運用時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（通常運用時）」の「(f)　変数PROC_UPDSZの求め方」の変数BUFBLKを参照してください。

scan_rthd

次に示す計算式から求めてください。

↓（マージチャンクオプションadb_mergechunk_rthd_numの指定値－1）÷2↓

STS：ステータス情報を退避するメモリ

次に示す計算式から求めてください。

計算式（単位：キロバイト）

idx_num

処理対象のインデクス数

b_tree_idx_num

処理対象表に定義されたB-treeインデクスの数

range_idx_num

処理対象表に定義されたレンジインデクスの数

scan_rthd

次に示す計算式から求めてください。

↓（マージチャンクオプションadb_mergechunk_rthd_numの指定値－1）÷2↓

text_idx_num

処理対象表に定義されたテキストインデクスの数

PAGEALLOC：マージチャンク用ページ割り当て制御情報

次に示す計算式から求めてください。

計算式（単位：キロバイト）

PAGEALLOC＝ dividx_rthd×310

dividx_rthd

次に示す計算式から求めてください。

マージチャンクオプションadb_mergechunk_rthd_numの指定値－1

CHUNK：チャンク管理ブロック

次に示す計算式から求めてください。

計算式

CHUNK＝ ↑（8×（chunk_num×2）＋30,000）÷1,024↑

chunk_num

処理対象表に作成されているチャンク数

PROC_AUDINFSZ

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(u)　変数AUDINFの求め方」にある変数PROC_AUDINFSZを参照してください。

(b)　変数PROC_IDXの求め方

変数PROC_IDXは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

KEYSZ

B-treeインデクスのキー長（単位：バイト）

「5.8.4　B-treeインデクスのキー長（KEYSZ）の求め方」を基に，B-treeインデクスのキー長を求めてください。

なお，可変長データのB-treeインデクスのキー長を求める際は，「表5‒20　B-treeインデクスのキー長一覧」中の「実際のデータ長」を「データの定義長」で計算してください。

また，処理対象表に複数のB-treeインデクスが定義されている場合は，定義されたB-treeインデクスの中で最大のキー長を使用してください。

scan_rthd

次に示す計算式から求めてください。

↓（マージチャンクオプションadb_mergechunk_rthd_numの指定値－1）÷2↓

rd_buff_size

マージチャンクオプションadb_mergechunk_dvix_rdbuff_sizeの指定値

ld_buff_size

マージチャンクオプションadb_mergechunk_dvix_wtbuff_sizeの指定値

CTRL

インデクスのインデクス構成列が固定長の場合

10バイトを代入してください。

インデクスのインデクス構成列に可変長を含む場合

12バイトを代入してください。

text_idx_num

処理対象表に定義されたテキストインデクス数

dividx_rthd

次に示す計算式から求めてください。

マージチャンクオプションadb_mergechunk_rthd_numの指定値－1

b_tree_idx_num

処理対象のB-treeインデクス数

(c)　変数PROC_IDXREBUILDの求め方

変数PROC_IDXREBUILDは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

idx_num

再作成対象のB-treeインデクス数

PROC_IDXREBUILD_MEM（k）

次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_IDXREBUILD_MEM（k）＝
  ↑（184＋256×idx_col_num＋（18＋256×↑idx_lv÷16↑）×dividx_rthd
    ＋KEYSZ＋（idx_col_num＋1）×2＋4）÷1,024↑

idx_col_num

B-treeインデクスのインデクス構成列数

idx_lv

B-treeインデクスの段数

「5.8.3　B-treeインデクスのセグメントごとの格納ページ数の求め方」の「(2)　上位ページ用のセグメントで使用する格納ページ数（変数IP_UPPER（i））の求め方」の，計算式1（PIDX（k）の求め方）の漸化式を計算して，PIDX（n）＝1となったときのnの値を代入してください。

ただし，PIDX（1）＝1の場合は，B-treeインデクスの段数は2としてください。

dividx_rthd

次に示す計算式から求めてください。

マージチャンクオプションadb_mergechunk_rthd_numの指定値－1

KEYSZ：B-treeインデクスのキー長（単位：バイト）

「5.8.4　B-treeインデクスのキー長（KEYSZ）の求め方」を基に，B-treeインデクスのキー長を求めてください。

なお，可変長データのB-treeインデクスのキー長を求める際は，「表5‒20　B-treeインデクスのキー長一覧」中の「実際のデータ長」を「データの定義長」で計算してください。

(d)　変数PROC_RNGIDXの求め方

変数PROC_RNGIDXは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_RNGIDX＝ PROC_RNG_BATCREATE※1＋PROC_RNG_BATCRT_WITHREC※2

注※1

--concurrency-priorオプションを指定しないでadbmergechunkコマンドを実行する場合に加算してください。

注※2

--concurrency-priorオプションを指定してadbmergechunkコマンドを実行する場合に加算してください。

変数の説明

PROC_RNG_BATCREATE

次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_RNG_BATCREATE＝ ↑64×rngidx_num÷1,024↑

rngidx_num

一括更新対象のレンジインデクスの数

PROC_RNG_BATCRT_WITHREC

次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_RNG_BATCRT_WITHREC＝
   ↑（ （8,576＋128×pageimg_entcnt＋1,104×crt_recfile_rthd）×rngidx_num
       ＋sum_pageimg_size ）÷1,024↑

pageimg_entcnt

次に示す計算式から求めてください。

計算式（単位：個）

pageimg_entcnt＝ MAX（128 , crt_recfile_rthd×2）

crt_recfile_rthd

次に示す計算式から求めてください。

計算式（単位：個）

crt_recfile_rthd＝
   ↓（マージチャンクオプションadb_mergechunk_rthd_numの指定値－1）÷2↓

rngidx_num

一括更新対象のレンジインデクスの数

sum_pageimg_size

次に示す計算式から求めてください。

計算式（単位：キロバイト）

rngidx_num

一括更新対象のレンジインデクスの数

page_size(i)

一括更新の対象となるi番目のレンジインデクスが格納されているデータ用DBエリアのページサイズ（単位：バイト）

「表6‒3　DBエリアのページサイズ」のデータ用DBエリアのページサイズを参照して求めてください。

PGGRPRI(i)

一括更新の対象となるi番目のレンジインデクスのページグループ数

「5.8.6　レンジインデクスを格納するセグメント数の求め方」の「(1)　変数SGRIの求め方」の「PGGRPRI」を参照してください。

(e)　変数PROC_CHUNK_INFOの求め方

変数PROC_CHUNK_INFOは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_CHUNK_INFO＝ ↑（1＋index_num）×120×（chunk_num＋1）÷1,024↑

変数の説明

index_num：マージチャンク対象表に対して定義したインデクスの数

chunk_num：マージチャンク対象表のチャンク数の最大値

なお，adbmergechunkコマンドを実行すると，変数PROC_CHUNK_INFOで求められるサイズ分，プロセス共通メモリが確保されます。adbmergechunkコマンドが完了すると，確保されたプロセス共通メモリは解放されます。

しかし，次の理由で削除仕掛中のチャンクが残っている場合，確保されたプロセス共通メモリは解放されません。削除仕掛中のチャンクをすべて削除すると，解放されます。

実行中のadbmergechunkコマンドが，マージ先チャンクの完成からマージ元チャンクの削除完了までの間に中断した場合

adbcancelコマンドを実行したとき，HADBサーバでメモリ不足が発生したときなどが該当します。

adbmergechunkコマンドの--purge-chunkオプションにNOWAITを指定して実行した場合に，マージチャンク対象の表を参照している処理が存在したとき

(f)　変数PROC_DBUPDINFの求め方

変数PROC_DBUPDINFは，次に示す計算式から求めてください。なお，マルチノード機能を使用するかどうかで，計算式が異なります。

マルチノード機能を使用しない場合の計算式（単位：キロバイト）

マルチノード機能を使用する場合の計算式（単位：キロバイト）

変数の説明

DBUPDINF_ENT_NUM

DBエリア，表，インデクス，およびチャンク更新情報のエントリ数

次に示す計算式から求めてください。なお，マルチノード機能を使用するかどうかで，計算式が異なります。

マルチノード機能を使用しない場合の計算式（単位：個数）

マルチノード機能を使用する場合の計算式（単位：個数）

index_num

マージチャンク対象表に定義しているインデクス数

chunk_num

マージするチャンク数

(g)　変数PROC_RTHDUPDINFの求め方

変数PROC_RTHDUPDINFは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

rthd_num

次に示す計算式から求めてください。

マージチャンクオプションadb_mergechunk_rthd_numの指定値－1

(h)　変数PROC_OBJDELENTの求め方

変数PROC_OBJDELENTは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_OBJDELENT＝↑（（80＋32,768）×128×dbarea_num）÷1,024↑

変数の説明

dbarea_num

adbmergechunkコマンドの実行対象表，およびその表に定義するインデクスを格納するDBエリアの数

(i)　変数PROC_IDXESTの求め方

変数PROC_IDXESTは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_IDXEST＝↑｛4,120＋8×RTHNUM＋(8×idx_num＋Σ(ESTINF)＋4,096)×scan_rthd｝÷1,024↑

変数の説明

RTHNUM：総リアルスレッド数

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(a)　変数SCIの求め方」の変数RTHNUMを参照してください。

idx_num

処理対象表に定義するB-treeインデクスの数

Σ(ESTINF)

処理対象表に定義するB-treeインデクスごとにESTINFを次に示す計算式から求めて，求めた値を合計してください。

計算式（単位：バイト）

ESTINF＝56＋8×MIN(65,535 ，ESTENT_NUM)＋48×ESTENT_NUM

ESTENT_NUM

次に示す計算式から求めてください。

ESTENT_NUM＝
      MAX｛256 ，
           ↓MAX｛1 ，↓(↓(page_size×(100－pctfree))÷100↓－80)÷(KEYSZDB＋22)↓｝
             ×↓2,097,152÷page_size↓÷scan_rthd↓×2
           ｝

page_size

B-treeインデクスを格納するデータ用DBエリアのページサイズ（単位：バイト）

pctfree

CREATE INDEX文のPCTFREEオペランドに指定する未使用領域の比率（単位：％）

未使用領域の比率を指定しない場合は，30%と仮定して計算してください。

KEYSZDB

データベース格納キー長（単位：バイト）

「5.8.3　B-treeインデクスのセグメントごとの格納ページ数の求め方」の「(1)　下位ページ用のセグメントで使用する格納ページ数（変数IP_LOWER（i））の求め方」の変数KEYSZDBを参照してください。ただし，可変長のデータは，常にキー長を定義長として求めてください。

scan_rthd

次に示す計算式から求めてください。

↓(マージチャンクオプションadb_mergechunk_rthd_numの指定値－1)÷2↓

(2)　リアルスレッド固有メモリの所要量の求め方（adbmergechunkコマンド実行時）

adbmergechunkコマンド実行時のリアルスレッド固有メモリ（RTHD_MERCHKSZ）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

RTHD_MERCHKSZ＝
   IDXRBLDBUF＋RTHD_SCAN＋SORTIOBUF※1＋SORTBUF※1＋RTHD_IDXREC※1
   ＋RTHD_IDXREBUILD※1＋RTHD_RNGIDX※2＋RTHD_TXTIDX※3＋CHUNKINF※4

変数の説明

IDXRBLDBUF

「(a)　変数IDXRBLDBUFの求め方」を参照して求めてください。

RTHD_SCAN

「(b)　変数RTHD_SCANの求め方」を参照して求めてください。

SORTIOBUF

「(c)　変数SORTIOBUFの求め方」を参照して求めてください。

SORTBUF

「(d)　変数SORTBUFの求め方」を参照して求めてください。

RTHD_IDXREC

「(e)　変数RTHD_IDXRECの求め方」を参照して求めてください。

RTHD_IDXREBUILD

「(f)　変数RTHD_IDXREBUILDの求め方」を参照して求めてください。

RTHD_RNGIDX

「(g)　変数RTHD_RNGIDXの求め方」を参照して求めてください。

RTHD_TXTIDX

「(h)　変数RTHD_TXTIDXの求め方」を参照して求めてください。

CHUNKINF

「(i)　変数CHUNKINFの求め方」を参照して求めてください。

注※1

B-treeインデクスを対象にした場合に加算してください。

注※2

処理対象インデクスにレンジインデクスが含まれる場合に加算してください。

注※3

処理対象インデクスにテキストインデクスが含まれる場合に加算してください。

注※4

--concurrency-priorオプションを指定する場合に加算してください。

(a)　変数IDXRBLDBUFの求め方

変数IDXRBLDBUFは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

IDXRBLDBUF＝↑（RBLD_SQBUF※1＋RBLD_COBUF※2）÷1,024↑

注※1

クラウドストレージ機能を使用しない場合に加算してください。

注※2

クラウドストレージ機能を使用する場合に加算してください。

変数の説明

RBLD_SQBUF：次に示す計算式から求めてください。

計算式（単位：バイト）

RBLD_SQBUF＝
     RBLD_SQBLK＋RBLD_SQIO＋RBLD_SQPGE＋RBLD_SQHS

RBLD_SQBLK：次に示す計算式から求めてください。

計算式（単位：バイト）

RBLD_SQBLK＝
  rbld_blknum×（136＋↑RBLD_BLKSZ÷rbld_pagesize÷64↑×40）

rbld_blknum

マージチャンクオプションadb_mergechunk_buff_blk_numの指定値

RBLD_BLKSZ

次に示す計算式から求めてください。

4,096×1,024

rbld_pagesize

処理対象表に定義されているB-treeインデクスまたはテキストインデクスが格納されているDBエリアのページサイズのうち，最小の値（単位：バイト）

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」にある「表6‒3　DBエリアのページサイズ」のデータ用DBエリアのページサイズを参照して求めてください。

RBLD_SQIO：次に示す計算式から求めてください。

計算式（単位：バイト）

RBLD_SQIO＝ 568×rbld_blknum

rbld_blknum

マージチャンクオプションadb_mergechunk_buff_blk_numの指定値

RBLD_SQPGE：次に示す計算式から求めてください。

計算式（単位：バイト）

RBLD_SQPGE＝
  （176＋rbld_pagesize＋BUFLOG）×（RBLD_BLKSZ÷rbld_pagesize）×rbld_blknum

rbld_pagesize

処理対象表に定義されているB-treeインデクスまたはテキストインデクスが格納されているDBエリアのページサイズのうち，最小の値（単位：バイト）

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」にある「表6‒3　DBエリアのページサイズ」のデータ用DBエリアのページサイズを参照して求めてください。

BUFLOG

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(d)　変数BUFGLOBALの求め方」の変数BUFLOGを参照してください。

RBLD_BLKSZ

次に示す計算式から求めてください。

4,096×1,024

rbld_blknum

マージチャンクオプションadb_mergechunk_buff_blk_numの指定値

RBLD_SQHS：次に示す計算式から求めてください。

計算式（単位：バイト）

RBLD_SQHS＝ 48×rbld_blknum

rbld_blknum

マージチャンクオプションadb_mergechunk_buff_blk_numの指定値

RBLD_COBUF：次に示す計算式から求めてください。

計算式（単位：バイト）

RBLD_COBUF＝RBLD_COBLK＋RBLD_COIO＋RBLD_COPGE＋RBLD_COHS

RBLD_COBLK：次に示す計算式から求めてください。

計算式（単位：バイト）

RBLD_COBLK＝rbld_blknum×72

rbld_blknum

マージチャンクオプションadb_mergechunk_buff_blk_numの指定値

RBLD_COIO：次に示す計算式から求めてください。

計算式（単位：バイト）

RBLD_COIO＝136×rbld_blknum

rbld_blknum

マージチャンクオプションadb_mergechunk_buff_blk_numの指定値

RBLD_COPGE：次に示す計算式から求めてください。

計算式（単位：バイト）

RBLD_COPGE
     ＝（（176＋BUFLOG）×SEGSIZE＋RBLD_COBLKSZ）×rbld_blknum

BUFLOG

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(d)　変数BUFGLOBALの求め方」の変数BUFLOGを参照してください。

SEGSIZE

次のDBエリアのセグメントサイズのうち，最大の値（単位：ページ数）

処理対象表が格納されているDBエリア

処理対象表に定義されているB-treeインデクスまたはテキストインデクスが格納されているDBエリア

次に示す計算式で求めてください。

SEGSIZE＝ 1セグメントの容量（単位：バイト）÷page_size

RBLD_COBLKSZ：次に示す計算式から求めてください。

RBLD_COBLKSZ＝32×1,024×1,024

rbld_blknum

マージチャンクオプションadb_mergechunk_buff_blk_numの指定値

RBLD_COHS：次に示す計算式から求めてください。

計算式（単位：バイト）

RBLD_COHS＝40×rbld_blknum

rbld_blknum

マージチャンクオプションadb_mergechunk_buff_blk_numの指定値

(b)　変数RTHD_SCANの求め方

変数RTHD_SCANは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

RTHD_SCAN ＝ MAX（ RTHD_EXESQLSZ , RTHD_EXESQLDICSZ ）

注

次に示すSQL文を実行したものと仮定して，変数RTHD_EXESQLSZおよび変数RTHD_EXESQLDICSZの値をそれぞれ求めてください。

SELECT 選択式※ FROM "対象表名"

注※

CHAR(16)の列と，処理対象表に定義したインデクスの全インデクス構成列について重複を排除した列を指定したものとして求めてください。

変数の説明

RTHD_EXESQLSZ

「6.3.4　通常運用時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（通常運用時）」の「(c)　変数RTHD_EXESQLSZの求め方」を参照してください。

RTHD_EXESQLDICSZ

「6.3.4　通常運用時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（通常運用時）」の「(g)　変数RTHD_EXESQLDICSZの求め方」を参照してください。

(c)　変数SORTIOBUFの求め方

変数SORTIOBUFは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

SORTIOBUF＝ sort_io_buff_size×sort_rthd

変数の説明

sort_io_buff_size

16を代入してください。

sort_rthd

次に示す計算式から求めてください。

マージチャンクオプションadb_mergechunk_rthd_numの指定値－1

(d)　変数SORTBUFの求め方

変数SORTBUFは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

SORTBUF＝ （48＋sort_buff_size×1,024）×sort_rthd

変数の説明

sort_rthd

次に示す計算式から求めてください。

マージチャンクオプションadb_mergechunk_rthd_numの指定値－1

sort_buff_size

マージチャンクオプションadb_mergechunk_sort_buff_sizeの指定値※

注※

ソート処理では，作業用ワークファイルが作成されます。このファイルの容量を最小にする変数sort_buff_sizeの計算式を次に示します。変数sort_buff_sizeは，次に示す計算式を満たすようにしてください。ただし，メモリに余裕がない場合，またはほとんどのデータがインデクスキー順に並んでいる場合は，必要以上に大きな値を指定しないでください。

計算式

変数の説明

REC_SIZE：次に示す計算式から求めてください。

計算式

REC_SIZE＝ （KEYSZ＋SYS1）＋SYS2

KEYSZ：処理対象表に定義されたB-treeインデクスのキー長

「5.8.4　B-treeインデクスのキー長（KEYSZ）の求め方」を基に，B-treeインデクスのキー長を求めてください。

なお，可変長データのB-treeインデクスのキー長を求める際は，「表5‒20　B-treeインデクスのキー長一覧」中の「実際のデータ長」を「データの定義長」で計算してください。

また，処理対象表に複数のB-treeインデクスが定義されている場合は，定義されたB-treeインデクスの中で最大のキー長を使用してください。

SYS1：次に示す値を仮定してください。

処理対象表に定義されたインデクスのインデクス構成列がすべて固定長の場合：10

処理対象表に定義されたインデクスのインデクス構成列に可変長を含む場合：12

SYS2：次に示す値を仮定してください。

処理対象表に定義されたインデクスが可変長の複数列インデクスの場合

次に示す計算式から求めてください。

（インデクス構成列数×4）

そのほかのインデクスの場合

0

BLK：次に示す計算式から求めてください。

計算式

BLK＝ REC_SIZE＋（KEYSZ＋8）＋56

row_num：

処理対象表に格納されている行数

KEY_INF：次に示す計算式から求めてください。

計算式

KEY_INF＝ REC_SIZE＋（KEYSZ＋8）＋28

COL_INFO：次に示す計算式から求めてください。

計算式

COL_INFO＝ 2,112＋（MULTI_KEY_INFO×32）＋（KEYSZ＋8）

MULTI_KEY_INFO：次に示す値を仮定してください。

処理対象表に定義されたB-treeインデクスが可変長の複数列インデクスの場合

次に示す計算式から求めてください。

（インデクス構成列数×2）＋2

そのほかのB-treeインデクスの場合

5

(e)　変数RTHD_IDXRECの求め方

変数RTHD_IDXRECは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

RTHD_IDXREC＝
   ↑（386＋328×（idx_num−1）＋32×max_idx_col_num
     ＋（64＋buf_size×1,024）×2×idx_num）÷1,024↑

変数の説明

idx_num

再作成対象のB-treeインデクス数

max_idx_col_num

再作成対象のB-treeインデクスのインデクス構成列数の最大値

buf_size

1,024を代入してください。

(f)　変数RTHD_IDXREBUILDの求め方

変数RTHD_IDXREBUILDは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

idx_num

再作成対象のB-treeインデクス数

RTHD_IDXREBUILD_MEM（k）

次に示す計算式から求めてください。

計算式（単位：キロバイト）

RTHD_IDXREBUILD_MEM（k）＝
  ↑（61,458＋↑MAX（255，KEYSZ）÷2↑×2＋3,070
   ＋↑KEYSZ＋CTRL÷8↑×8＋MAX（255，KEYSZ）＋14
   ＋↓8＋page_size×95÷100↓×2）÷1,024↑

KEYSZ

B-treeインデクスのキー長（単位：バイト）

「5.8.4　B-treeインデクスのキー長（KEYSZ）の求め方」を基に，B-treeインデクスのキー長を求めてください。

なお，可変長データのB-treeインデクスのキー長を求める際は，「表5‒20　B-treeインデクスのキー長一覧」中の「実際のデータ長」を「データの定義長」で計算してください。

CTRL

インデクス構成列のキー長がすべて固定長の場合

10バイトを代入してください。

インデクス構成列のキー長に可変長を含む場合

12バイトを代入してください。

page_size

B-treeインデクスが定義されているデータ用DBエリアのページサイズ（単位：バイト）

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」にある「表6‒3　DBエリアのページサイズ」のデータ用DBエリアのページサイズを参照して求めてください。

(g)　変数RTHD_RNGIDXの求め方

変数RTHD_RNGIDXは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

RTHD_RNGIDX＝ RTHD_RNG_BATCREATE※1＋RTHD_RNG_BATCRT_WITHREC※2

注※1

--concurrency-priorオプションを指定しないでadbmergechunkコマンドを実行する場合に加算してください。

注※2

--concurrency-priorオプションを指定してadbmergechunkコマンドを実行する場合に加算してください。

変数の説明

RTHD_RNG_BATCREATE

次に示す計算式から求めてください。

計算式（単位：キロバイト）

RTHD_RNG_BATCREATE= ↑（32＋208×rngidx_num）×scan_rthd÷1,024↑

rngidx_num

一括更新対象のレンジインデクスの数

scan_rthd

次に示す計算式から求めてください。

計算式（単位：個）

scan_rthd＝
   ↓（マージチャンクオプションadb_mergechunk_rthd_numの指定値－1）÷2↓

RTHD_RNG_BATCRT_WITHREC

次に示す計算式から求めてください。

計算式（単位：キロバイト）

RTHD_RNG_BATCRT_WITHREC＝ ↑MAX（CRT_RECFILE , CRT_RNGIDX）÷1,024↑

CRT_RECFILE

次に示す計算式から求めてください。

計算式（単位：バイト）

CRT_RECFILE＝ （32＋272×rngidx_num＋RNG_IDXREC_WRITE）×crt_recfile_rthd

rngidx_num

一括更新対象のレンジインデクスの数

RNG_IDXREC_WRITE

次に示す計算式から求めてください。

計算式（単位：バイト）

RNG_IDXREC_WRITE＝ 640＋1,049,040×rngidx_num

rngidx_num

一括更新対象のレンジインデクスの数

crt_recfile_rthd

次に示す計算式から求めてください。

計算式（単位：個）

crt_recfile_rthd＝
   ↓（マージチャンクオプションadb_mergechunk_rthd_numの指定値－1）÷2↓

CRT_RNGIDX

次に示す計算式から求めてください。

計算式（単位：バイト）

page_size(i)

一括更新の対象となるi番目のレンジインデクスが格納されているデータ用DBエリアのページサイズ（単位：バイト）

「表6‒3　DBエリアのページサイズ」のデータ用DBエリアのページサイズを参照して求めてください。

PGGRPRI(i)

一括更新の対象となるi番目のレンジインデクスのページグループ数

「5.8.6　レンジインデクスを格納するセグメント数の求め方」の「(1)　変数SGRIの求め方」の「PGGRPRI」を参照してください。

RNG_IDXREC_READ

次に示す計算式から求めてください。

計算式（単位：バイト）

RNG_IDXREC_READ＝ 64＋128×rngidx_num＋16×page_size

rngidx_num

再作成対象のレンジインデクスの数

page_size

レンジインデクスが定義されているデータ用DBエリアのページサイズ（単位：バイト）

crt_rngidx_rthd

次に示す計算式から求めてください。

計算式（単位：個）

crt_rngidx_rthd＝ マージチャンクオプションadb_mergechunk_rthd_numの指定値－1

(h)　変数RTHD_TXTIDXの求め方

変数RTHD_TXTIDXは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

idx_num

処理対象表に定義されたテキストインデクスの数

RTHD_TXTIDXBUILD_MEM(k)

次に示す計算式から求めてください。

計算式（単位：キロバイト）

buff_blk_size

4,096を代入してください。

buff_blk_num

マージチャンクオプションadb_mergechunk_buff_blk_numの指定値

idx_div_num

k番目のテキストインデクスのインデクス構成列定義長

txt_sort_buff_size

マージチャンクオプションadb_mergechunk_txt_buff_sizeの指定値

(i)　変数CHUNKINFの求め方

変数CHUNKINFは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

CHUNKINF＝ ↑（32＋32×chunk_num）÷1,024↑

変数の説明

chunk_num

処理対象表のチャンク数

(3)　ヒープメモリの所要量の求め方（adbmergechunkコマンド実行時）

adbmergechunkコマンド実行時のヒープメモリ（HEAP_MERCHKSZ）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

HEAP_MERCHKSZ＝ Σ（505×sort_rthd）※

注※

複数のadbmergechunkコマンドを同時に実行する場合は，各adbmergechunkコマンドが使用するヒープメモリの所要量を求めてください。そして，それぞれで求めたヒープメモリの所要量を合計してください。

変数の説明

sort_rthd

次に示す計算式から求めてください。

マージチャンクオプションadb_mergechunk_rthd_numの指定値－1

6.3.14　adbchgchunkcommentコマンド実行時のメモリ所要量の求め方

adbchgchunkcommentコマンドを実行する場合，HADBサーバは次に示すメモリを使用します。

■共有メモリ

プロセス共通メモリ（PROC_CHGCCMSZ）

adbchgchunkcommentコマンド実行時に使用するプロセス共通メモリ（PROC_CHGCCMSZ）は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_CHGCCMSZ＝ Σ（5＋DIC＋PROC_AUDINFSZ※1）※2

注※1

監査証跡機能が有効な場合に加算してください。

注※2

複数のadbchgchunkcommentコマンドを同時に実行する場合は，各adbchgchunkcommentコマンドが使用するメモリ所要量を求めてください。そして，それぞれで求めたメモリ所要量を合計してください。

変数の説明

DIC

処理対象表の定義情報を取得するメモリ

「6.3.6　adbimportコマンド実行時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（adbimportコマンド実行時）」の「(a)　変数PROC_IMPTの求め方」の変数DICを参照して求めてください。

PROC_AUDINFSZ

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(u)　変数AUDINFの求め方」にある変数PROC_AUDINFSZを参照して求めてください。

6.3.15　adbchgchunkstatusコマンド実行時のメモリ所要量の求め方

adbchgchunkstatusコマンドを実行する場合，HADBサーバは次に示すメモリを使用します。各メモリの所要量を求めてください。

■共有メモリ

プロセス共通メモリ（PROC_CHGCSTSZ）

リアルスレッド固有メモリ（RTHD_CHGCSTSZ）

それぞれのメモリ所要量の計算式を次に示します。

(1)　プロセス共通メモリの所要量の求め方（adbchgchunkstatusコマンド実行時）

adbchgchunkstatusコマンド実行時に使用するプロセス共通メモリ（PROC_CHGCSTSZ）は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

注※

マルチノード機能を使用する場合に加算してください。

変数の説明

PROC_MCS

チャンクの状態変更の管理で使用するプロセス共通メモリ

計算式（単位：キロバイト）

注※

監査証跡機能が有効な場合に加算してください。

DIC

処理対象表の定義情報を取得するメモリ

「6.3.6　adbimportコマンド実行時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（adbimportコマンド実行時）」の「(a)　変数PROC_IMPTの求め方」の変数DICを参照して求めてください。

chunk_num

処理対象表に作成されたチャンク数

PROC_AUDINFSZ

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(u)　変数AUDINFの求め方」にある変数PROC_AUDINFSZを参照して求めてください。

PROC_DBUPDINF

DBエリア，表，インデクス，およびチャンク更新情報の格納で必要なプロセス共通メモリ

値（単位：キロバイト）

(2)　リアルスレッド固有メモリの所要量の求め方（adbchgchunkstatusコマンド実行時）

adbchgchunkstatusコマンド実行時に使用するリアルスレッド固有メモリ（RTHD_CHGCSTSZ）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

RTHD_CHGCSTSZ ＝ CHUNKINFWK＋CHGCSTCTL※

注※

-mオプションを指定した場合に加算してください。

変数の説明

CHUNKINFWK

チャンク情報作成用の作業領域

次の値を代入してください。

値（単位：キロバイト）

CHUNKINFWK ＝ 1,876

CHGCSTCTL

チャンクの状態の変更管理領域

次の計算式から求めてください。

計算式（単位：キロバイト）

CHGCSTCTL ＝ ↑(482,444×table_num＋16×dbarea_num＋960,000)÷1,024↑

table_num

チャンクの状態の一括変更設定ファイルに指定した表の数

dbarea_num

チャンクの状態の一括変更設定ファイルに指定した表と，その表のインデクスを格納するデータ用DBエリアの数

データ用DBエリアの数を確定できない場合は，「表数＋インデクス数」としてください。

6.3.16　adbarchivechunkコマンド実行時のメモリ所要量の求め方

adbarchivechunkコマンドを実行する場合，HADBサーバは次に示すメモリを使用します。各メモリの所要量を求めてください。

■共有メモリ

プロセス共通メモリ（PROC_ARCCKSZ）

リアルスレッド固有メモリ（RTHD_ARCCKSZ）

■プロセスメモリ

ヒープメモリ（HEAP_ARCCKSZ）

それぞれのメモリ所要量の計算式を次に示します。

(1)　プロセス共通メモリの所要量の求め方（adbarchivechunkコマンド実行時）

adbarchivechunkコマンド実行時のプロセス共通メモリ（PROC_ARCCKSZ）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

PROC_ARCCON

「(a)　変数PROC_ARCCONの求め方」を参照して求めてください。

PROC_MAC

「(b)　変数PROC_MACの求め方」を参照して求めてください。

PROC_OUTFILE

「(c)　変数PROC_OUTFILEの求め方」を参照して求めてください。

PROC_DBUPDINF

「(d)　変数PROC_DBUPDINFの求め方」を参照して求めてください。

注※1

複数のチャンクを処理対象にしてadbarchivechunkコマンドを実行する場合は，チャンク単位にメモリ所要量を求めてください。そして，求めた値の最大値を加算してください。

注※2

複数のadbarchivechunkコマンドを同時に実行する場合は，各adbarchivechunkコマンドが使用するメモリ所要量を求めてください。そして，それぞれで求めたメモリ所要量を合計してください。

(a)　変数PROC_ARCCONの求め方

変数PROC_ARCCONは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

注※

監査証跡機能が有効な場合に加算してください。

変数の説明

PROC_AUDINFSZ

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(u)　変数AUDINFの求め方」にある変数PROC_AUDINFSZを参照して求めてください。

(b)　変数PROC_MACの求め方

変数PROC_MACは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

DIC

「6.3.6　adbimportコマンド実行時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（adbimportコマンド実行時）」の「(a)　変数PROC_IMPTの求め方」の変数DICを参照してください。

IOA

次に示す計算式から求めてください。

計算式（単位：キロバイト）

sql_size

次に示す計算式から求めてください。

計算式

scan_buff_size

次に示す計算式から求めてください。

計算式

offset_area

次に示す計算式から求めてください。

計算式

scan_rthd

次に示す計算式から求めてください。

↓（アーカイブチャンクオプションadb_arcv_rthd_numの指定値－1）÷2↓

EXPF

次に示す計算式から求めてください。

計算式（単位：キロバイト）

exp_rthd

次に示す計算式から求めてください。

↓（アーカイブチャンクオプションadb_arcv_rthd_numの指定値－1）÷2↓

PROC_EXPSQLS

adbarchivechunkコマンドを実行すると，チャンク内のデータをアーカイブするために，次に示すSQL文が1回実行されます。

SELECT * FROM 対象表名;

「6.3.4　通常運用時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（通常運用時）」の「(c)　変数PROC_EXECSQLSZの求め方」を参照して，検索系SQLの実行時に使用されるメモリの所要量を，処理対象表ごとに求めてください。その中で，最も大きい値を代入してください。

SGMTGRP

次に示す計算式から求めてください。

計算式（単位：キロバイト）

SGMTIDLIST

次に示す計算式から求めてください。

計算式（単位：キロバイト）

max_sgmtnum_in_chunks

アーカイブ対象のチャンクの中で，最も大きな表のセグメント数

なお，インデクスのセグメント数は除きます。

チャンクごとの表のセグメント数は，次に示すどちらかの方法で確認してください。

adbdbstatusコマンドに-d usedオプションと-c tableオプションを指定して，「DBエリア，表とインデクスの使用量情報」を出力してください。そして，出力項目の「Used_segments」の値を基に，チャンクごとの表のセグメント数を求めてください。

アーカイブ対象のチャンクごとに，次に示す計算式で変数chunk_sgmtnumの値を求めてください。求めた値の中から，最も大きい変数chunk_sgmtnumの値を代入してください。

計算式

chunk_sgmtnum

チャンク内に格納された表のセグメント数

なお，インデクスのセグメント数は除きます。

CHBP

「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」の「(f)　変数SGROWTBLおよびPGROWTBLの求め方（マルチチャンク表の場合）」にある「CHBP（i，k）」を参照してください。

CHVP

「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」の「(f)　変数SGROWTBLおよびPGROWTBLの求め方（マルチチャンク表の場合）」にある「CHVP（i，k）」を参照してください。

SEGSIZE

「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」の「SEGSIZE」を参照してください。

page_size

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」にある「表6‒3　DBエリアのページサイズ」を参照してください。

SGMTGRPLIST

次に示す計算式から求めてください。

計算式（単位：キロバイト）

SGMTGRPNUM

変数SGMTGRPNUMは，変数max_sgmtnum_in_chunksの値で異なります。変数max_sgmtnum_in_chunksと変数SGMTGRPNUMの関係を，次の表に示します。

表6‒15　変数max_sgmtnum_in_chunksと変数SGMTGRPNUMの関係

項番

変数max_sgmtnum_in_chunksの値

変数SGMTGRPNUMの値（単位：個数）

1

max_sgmtnum_in_chunks＜16

SGMTGRPNUMには，1を代入してください。

2

16≦max_sgmtnum_in_chunks

かつ

max_sgmtnum_in_chunks＜32

SGMTGRPNUMには，4を代入してください。

3

32≦max_sgmtnum_in_chunks

かつ

max_sgmtnum_in_chunks＜64

SGMTGRPNUMには，8を代入してください。

4

64≦max_sgmtnum_in_chunks

かつ

max_sgmtnum_in_chunks＜256

SGMTGRPNUMには，16を代入してください。

5

256≦max_sgmtnum_in_chunks

SGMTGRPNUMは，次に示す計算式で求めてください。

BINTREE

次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数SGMTGRPNUMの計算式については，「表6‒15　変数max_sgmtnum_in_chunksと変数SGMTGRPNUMの関係」を参照してください。

(c)　変数PROC_OUTFILEの求め方

変数PROC_OUTFILEは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

OUTFMAX

次に示す計算式から求めてください。

↓（アーカイブチャンクオプションadb_arcv_rthd_numの指定値－1）÷2↓

(d)　変数PROC_DBUPDINFの求め方

変数PROC_DBUPDINFは，次に示す計算式から求めてください。なお，マルチノード機能を使用するかどうかで，計算式が異なります。

マルチノード機能を使用しない場合の計算式（単位：キロバイト）

マルチノード機能を使用する場合の計算式（単位：キロバイト）

変数の説明

DBUPDINF_ENT_NUM

次に示す計算式から求めてください。

計算式（単位：個数）

SGMTGRPNUM

「(b)　変数PROC_MACの求め方」の「表6‒15　変数max_sgmtnum_in_chunksと変数SGMTGRPNUMの関係」を参照してください。

scan_rthd_num

次に示す計算式から求めてください。

↓（アーカイブチャンクオプションadb_arcv_rthd_numの指定値－1）÷2↓

(2)　リアルスレッド固有メモリの所要量の求め方（adbarchivechunkコマンド実行時）

adbarchivechunkコマンド実行時のリアルスレッド固有メモリ（RTHD_ARCCKSZ）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

RTHD_ARCSQL

「(a)　変数RTHD_ARCSQLの求め方」を参照して求めてください。

RTHD_ARCDIRPATH

「(b)　変数RTHD_ARCDIRPATHの求め方」を参照して求めてください。

(a)　変数RTHD_ARCSQLの求め方

変数RTHD_ARCSQLの求め方を次に示します。

adbarchivechunkコマンドを実行すると，チャンク内のデータをアーカイブするために，次に示すSQL文が1回実行されます。

SELECT * FROM 対象表名;

「6.3.4　通常運用時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（通常運用時）」の「(c)　変数RTHD_EXESQLSZの求め方」および「(g)　変数RTHD_EXESQLDICSZの求め方」を参照して，検索系SQLの実行時に使用されるメモリの所要量を，処理対象表ごとに求めてください。その中で，最も大きい値を代入してください。

(b)　変数RTHD_ARCDIRPATHの求め方

変数RTHD_ARCDIRPATHは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

SGMTGRPNUM

「(1)　プロセス共通メモリの所要量の求め方（adbarchivechunkコマンド実行時）」の「(b)　変数PROC_MACの求め方」の「表6‒15　変数max_sgmtnum_in_chunksと変数SGMTGRPNUMの関係」を参照してください。

scan_rthd_num

次に示す計算式から求めてください。

↓（アーカイブチャンクオプションadb_arcv_rthd_numの指定値－1）÷2↓

(3)　ヒープメモリの所要量の求め方（adbarchivechunkコマンド実行時）

adbarchivechunkコマンド実行時のヒープメモリ（HEAP_ARCCKSZ）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

注※

複数のadbarchivechunkコマンドを同時に実行する場合は，各adbarchivechunkコマンドが使用するヒープメモリの所要量を求めてください。そして，それぞれで求めたヒープメモリの所要量を合計してください。

変数の説明

HEAP_ZLIB

次に示す計算式から求めてください。

計算式（単位：キロバイト）

archive_file_num

アーカイブ状態のチャンクに対応しているアーカイブファイル数

複数のチャンクに対してadbarchivechunkコマンドを実行する場合は，各チャンクの中で，チャンクに対応するアーカイブファイル数が，最も多いアーカイブファイル数を代入してください。

adbdbstatusコマンドで「アーカイブ状態のチャンクのサマリ情報」を出力して，「Archive_file_num」を確認してください。「Archive_file_num」については，マニュアルHADB　コマンドリファレンスのadbdbstatus（データベースの状態解析）のアーカイブ状態のチャンクのサマリ情報で出力される項目のアーカイブ状態のチャンクのサマリ情報で出力される項目の一覧を参照してください。

6.3.17　adbunarchivechunkコマンド実行時のメモリ所要量の求め方

adbunarchivechunkコマンドを実行する場合，HADBサーバは次に示すメモリを使用します。各メモリの所要量を求めてください。

■共有メモリ

プロセス共通メモリ（PROC_UNARCSZ）

リアルスレッド固有メモリ（RTHD_UNARCCKSZ）

■プロセスメモリ

ヒープメモリ（HEAP_UNARCCKSZ）

それぞれのメモリ所要量の計算式を次に示します。

(1)　プロセス共通メモリの所要量の求め方（adbunarchivechunkコマンド実行時）

adbunarchivechunkコマンド実行時のプロセス共通メモリ（PROC_UNARCSZ）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

注※1

B-treeインデクスを定義した表に，adbunarchivechunkコマンドを実行する場合に加算します。

注※2

レンジインデクスを定義した表に，adbunarchivechunkコマンドを実行する場合に加算します。

注※3

チャンクに対応するアーカイブファイル数が，1,024個を超える場合に加算します。

注※4

複数のチャンクに対してadbunarchivechunkコマンドを実行する場合は，チャンク単位にメモリ所要量を求めてください。そして，求めた値の最大値を加算してください。

注※5

複数のadbunarchivechunkコマンドを同時に実行する場合は，各adbunarchivechunkコマンドが使用するメモリ所要量を求めてください。そして，それぞれで求めたメモリ所要量を合計してください。

変数の説明

PROC_UNARCCON

「(a)　変数PROC_UNARCCONの求め方」を参照して求めてください。

PROC_UMAC

「(b)　変数PROC_UMACの求め方」を参照して求めてください。

PROC_IDX

「(c)　変数PROC_IDXの求め方」を参照して求めてください。

PROC_IDXBUILD

「(d)　変数PROC_IDXBUILDの求め方」を参照して求めてください。

PROC_RNGIDX

「(e)　変数PROC_RNGIDXの求め方」を参照して求めてください。

PROC_INFILE

「(f)　変数PROC_INFILEの求め方」を参照して求めてください。

PROC_DBUPDINF

「(g)　変数PROC_DBUPDINFの求め方」を参照して求めてください。

PROC_RTHDUPDINF

「(h)　変数PROC_RTHDUPDINFの求め方」を参照して求めてください。

(a)　変数PROC_UNARCCONの求め方

変数PROC_UNARCCONは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

注※

監査証跡機能が有効な場合に加算してください。

変数の説明

PROC_AUDINFSZ

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(u)　変数AUDINFの求め方」にある変数PROC_AUDINFSZを参照して求めてください。

(b)　変数PROC_UMACの求め方

変数PROC_UMACは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

DIC

「6.3.6　adbimportコマンド実行時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（adbimportコマンド実行時）」の「(a)　変数PROC_IMPTの求め方」の変数DICを参照してください。

IOA

次に示す計算式から求めてください。

計算式（単位：キロバイト）

max_rowsz

最大行長（単位：バイト）

最大行長については，「5.8.2　行の種別ごとの格納ページ数の求め方」の「(1)　基本行用ページ数（変数BP（i））の求め方」の行長ROWSZの計算式を基に求めてください。

col_num

処理対象表の列数

idx_num

処理対象表に定義されたインデクス数

dba_num

処理対象表を格納するDBエリアのDBエリアファイル数

load_rthd

次に示す計算式から求めてください。

アンアーカイブチャンクオプションadb_unarcv_rthd_numの指定値－1

LOD

次に示す計算式から求めてください。

計算式（単位：キロバイト）

注※

チャンクをアーカイブ状態にしたあとに，列を追加した場合は，追加した列に対する情報を加算してください。

read_size

アンアーカイブチャンクオプションadb_unarcv_read_sizeの指定値

read_buff_num

3を代入してください。

decomp_buff_size

アンアーカイブチャンクオプションadb_unarcv_decompress_buff_sizeの指定値

load_rthd

次に示す計算式から求めてください。

アンアーカイブチャンクオプションadb_unarcv_rthd_numの指定値－1

input_file_num

1,024を代入してください。

input_edit_area

次に示す計算式から求めてください。

計算式

input_recsize

次に示す計算式から求めてください。

計算式

Σ（DATASIZE）

処理対象表にある各列のデータ型のデータを文字形式で表した場合の最大長の合計

各データ型のデータを文字形式で表した場合の最大長については，次に示す表から求めてください。

表6‒16　各データ型のデータを文字形式で表した場合の最大長の一覧

項番

分類

データ型

文字形式のデータ最大長

1

数データ

BIGINT

23

2

INTEGER

13※1

3

SMALLINT

8※2

4

DECIMAL(m,n)

m＋5

5

NUMERIC(m,n)

6

DOUBLE PRECISION

511

7

FLOAT

8

REAL

9

文字データ

CHAR(n)

n×2＋2

10

VARCHAR(n)

n×2＋2

11

日時データ

DATE

12

12

TIME(p)

8＋p＋3

13

TIMESTAMP(p) WITHOUT TIME ZONE

19＋p＋3

TIMESTAMP(p) WITH TIME ZONE

25＋p＋3

14

バイナリデータ

BINARY(n)

n×8＋2

15

VARBINARY(n)

n×8＋2

16

論理データ

BOOLEAN

7

17

UUIDデータ

UUID

38

（凡例）

m，n，p：マニュアルHADB　SQLリファレンスのデータ型の種類を参照してください。

注※1

整数データ型のデータ形式がレガシー形式の場合，データ最大長は23になります。

注※2

整数データ型のデータ形式がレガシー形式の場合，データ最大長は13になります。

IMPORTBUF_CTL

次に示す計算式から求めてください。

計算式（単位：キロバイト）

BUFBLK

「6.3.4　通常運用時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（通常運用時）」の「(f)　変数PROC_UPDSZの求め方」の変数BUFBLKを参照してください。

load_rthd

次に示す計算式から求めてください。

アンアーカイブチャンクオプションadb_unarcv_rthd_numの指定値－1

STS

次に示す計算式から求めてください。

計算式（単位：キロバイト）

idx_num

処理対象表に定義されたインデクスの数

b_tree_idx_num

処理対象表に定義されたB-treeインデクスの数

range_idx_num

処理対象表に定義されたレンジインデクスの数

load_rthd

次に示す計算式から求めてください。

アンアーカイブチャンクオプションadb_unarcv_rthd_numの指定値－1

text_idx_num

処理対象表に定義されたテキストインデクスの数

PAGEALLOC

次に示す計算式から求めてください。

計算式（単位：キロバイト）

unarcv_rthd

次に示す計算式から求めてください。

アンアーカイブチャンクオプションadb_unarcv_rthd_numの指定値－1

(c)　変数PROC_IDXの求め方

変数PROC_IDXは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

idxf_buff_size

1,024を代入してください。

KEYSZ

B-treeインデクスのキー長（単位：バイト）

「5.8.4　B-treeインデクスのキー長（KEYSZ）の求め方」を基に，B-treeインデクスのキー長を求めてください。

なお，可変長データのB-treeインデクスのキー長を求める際は，「表5‒20　B-treeインデクスのキー長一覧」中の「実際のデータ長」を「データの定義長」で計算してください。

また，処理対象表に複数のB-treeインデクスが定義されている場合は，定義されたB-treeインデクスの中で最大のキー長を使用してください。

idx_num

処理対象表に定義されたB-treeインデクスの数

load_rthd

次に示す計算式から求めてください。

アンアーカイブチャンクオプションadb_unarcv_rthd_numの指定値－1

cmd_d_opt

1を代入してください。

rd_buff_size

アンアーカイブチャンクオプションadb_unarcv_dividx_rd_buff_sizeの指定値

ld_buff_size

アンアーカイブチャンクオプションadb_unarcv_dividx_wt_buff_sizeの指定値

CTRL

インデクスのインデクス構成列が固定長の場合

10バイトを代入してください。

インデクスのインデクス構成列に可変長を含む場合

12バイトを代入してください。

text_idx_num

処理対象表に定義されたテキストインデクスの数

dividx_rthd

次に示す計算式から求めてください。

アンアーカイブチャンクオプションadb_unarcv_rthd_numの指定値－1

(d)　変数PROC_IDXBUILDの求め方

変数PROC_IDXBUILDは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

PROC_IDXCREATE：次に示す計算式から求めてください。

計算式（単位：キロバイト）

idx_num

処理対象表に定義されたB-treeインデクスの数

PROC_IDXCREATE_MEM(k)

次に示す計算式から求めてください。

計算式（単位：キロバイト）

idx_col_num

B-treeインデクスのインデクス構成列の数

idx_lv

B-treeインデクスの段数

「5.8.3　B-treeインデクスのセグメントごとの格納ページ数の求め方」の「(2)　上位ページ用のセグメントで使用する格納ページ数（変数IP_UPPER（i））の求め方」の計算式1（PIDX（k）の求め方）の漸化式を計算して，PIDX（n）＝1となったときのnの値を代入してください。

ただし，PIDX（1）＝1の場合は，B-treeインデクスの段数は2としてください。

dividx_rthd

次に示す計算式から求めてください。

アンアーカイブチャンクオプションadb_unarcv_rthd_numの指定値－1

KEYSZ

B-treeインデクスのキー長（単位：バイト）

「5.8.4　B-treeインデクスのキー長（KEYSZ）の求め方」を基に，B-treeインデクスのキー長を求めてください。

なお，可変長データのB-treeインデクスのキー長を求める際は，「表5‒20　B-treeインデクスのキー長一覧」中の「実際のデータ長」を「データの定義長」で計算してください。

page_size

B-treeインデクスが定義されているデータ用DBエリアのページサイズ（単位：バイト）

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」にある「表6‒3　DBエリアのページサイズ」のデータ用DBエリアのページサイズを参照して求めてください。

(e)　変数PROC_RNGIDXの求め方

変数PROC_RNGIDXは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

rngidx_num

処理対象表に定義されたレンジインデクス数

(f)　変数PROC_INFILEの求め方

変数PROC_INFILEは，1つのチャンクに対応したアーカイブファイルが1,024個を超える場合に加算する必要があります。次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

INFMAX

チャンクに対応したアーカイブファイル数

(g)　変数PROC_DBUPDINFの求め方

変数PROC_DBUPDINFは，次に示す計算式から求めてください。なお，マルチノード機能を使用するかどうかで，計算式が異なります。

マルチノード機能を使用しない場合の計算式（単位：キロバイト）

マルチノード機能を使用する場合の計算式（単位：キロバイト）

変数の説明

DBUPDINF_ENT_NUM

次に示す計算式から求めてください。

計算式（単位：個数）

archive_file_num

アーカイブ状態のチャンクに対応しているアーカイブファイル数

adbdbstatusコマンドで「アーカイブ状態のチャンクのサマリ情報」を出力して，「Archive_file_num」を確認してください。「Archive_file_num」については，マニュアルHADB　コマンドリファレンスのadbdbstatus（データベースの状態解析）のアーカイブ状態のチャンクのサマリ情報で出力される項目のアーカイブ状態のチャンクのサマリ情報で出力される項目の一覧を参照してください。

(h)　変数PROC_RTHDUPDINFの求め方

変数PROC_RTHDUPDINFは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

rthd_num

次に示す計算式から求めてください。

アンアーカイブチャンクオプションadb_unarcv_rthd_numの指定値－1

(2)　リアルスレッド固有メモリの所要量の求め方（adbunarchivechunkコマンド実行時）

adbunarchivechunkコマンド実行時のリアルスレッド固有メモリ（RTHD_UNARCCKSZ）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

注※1

B-treeインデクスを定義した表に，adbunarchivechunkコマンドを実行する場合に加算します。

注※2

レンジインデクスを定義した表に，adbunarchivechunkコマンドを実行する場合に加算します。

注※3

テキストインデクスを定義した表に，adbunarchivechunkコマンドを実行する場合に加算します。

変数の説明

IMPORTBUF

「(a)　変数IMPORTBUFの求め方」を参照して求めてください。

SORTIOBUF

「(b)　変数SORTIOBUFの求め方」を参照して求めてください。

SORTBUF

「(c)　変数SORTBUFの求め方」を参照して求めてください。

RTHD_DATALOAD

「(d)　変数RTHD_DATALOADの求め方」を参照して求めてください。

RTHD_IDXREC

「(e)　変数RTHD_IDXRECの求め方」を参照して求めてください。

RTHD_IDXBUILD

「(f)　変数RTHD_IDXBUILDの求め方」を参照して求めてください。

RTHD_RNGIDX

「(g)　変数RTHD_RNGIDXの求め方」を参照して求めてください。

RTHD_TXTIDX

「(h)　変数RTHD_TXTIDXの求め方」を参照して求めてください。

RTHD_ARCDIRPATH

「(i)　変数RTHD_ARCDIRPATHの求め方」を参照して求めてください。

(a)　変数IMPORTBUFの求め方

変数IMPORTBUFは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

IMP_SQBLK

次に示す計算式から求めてください。

計算式（単位：バイト）

IMP_SQBLK＝imp_blknum×(136＋↑IMP_BLKSZ÷imp_pagesize÷64↑×40)

imp_blknum

アンアーカイブチャンクオプションadb_unarcv_buff_blk_numの指定値

IMP_BLKSZ

次に示す計算式から求めてください。

計算式

imp_pagesize

次のDBエリアのページサイズのうち，最小の値（単位：バイト）

処理対象表が格納されているDBエリア

処理対象表に定義されているB-treeインデクスまたはテキストインデクスが格納されているDBエリア

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」にある「表6‒3　DBエリアのページサイズ」のデータ用DBエリアのページサイズを参照して求めてください。

IMP_SQIO

次に示す計算式から求めてください。

計算式（単位：バイト）

imp_blknum

アンアーカイブチャンクオプションadb_unarcv_buff_blk_numの指定値

IMP_SQPGE

次に示す計算式から求めてください。

計算式（単位：バイト）

imp_pagesize

次のDBエリアのページサイズのうち，最小の値（単位：バイト）

処理対象表が格納されているDBエリア

処理対象表に定義されているB-treeインデクスまたはテキストインデクスが格納されているDBエリア

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」にある「表6‒3　DBエリアのページサイズ」のデータ用DBエリアのページサイズを参照して求めてください。

BUFLOG

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(d)　変数BUFGLOBALの求め方」の変数BUFLOGを参照してください。

IMP_BLKSZ

次に示す計算式から求めてください。

計算式

imp_blknum

アンアーカイブチャンクオプションadb_unarcv_buff_blk_numの指定値

IMP_SQHS

次に示す計算式から求めてください。

計算式（単位：バイト）

IMP_SQHS＝ 48×imp_blknum

imp_blknum

アンアーカイブチャンクオプションadb_unarcv_buff_blk_numの指定値

(b)　変数SORTIOBUFの求め方

変数SORTIOBUFは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

sort_io_buff_size

16を代入してください。

sort_rthd

次に示す計算式から求めてください。

アンアーカイブチャンクオプションadb_unarcv_rthd_numの指定値－1

(c)　変数SORTBUFの求め方

変数SORTBUFは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

sort_rthd

次に示す計算式から求めてください。

アンアーカイブチャンクオプションadb_unarcv_rthd_numの指定値－1

sort_buff_size

アンアーカイブチャンクオプションadb_unarcv_sort_buff_sizeの指定値※

注※

ソート処理では，作業用ワークファイルが作成されます。このファイルの容量を最小にする変数sort_buff_sizeの計算式を次に示します。変数sort_buff_sizeは，次に示す計算式を満たすようにしてください。ただし，メモリに余裕がない場合，またはほとんどのデータがインデクスキー順に並んでいる場合は，必要以上に大きな値を指定しないでください。

計算式

REC_SIZE

次に示す計算式から求めてください。

計算式

KEYSZ

B-treeインデクスのキー長（単位：バイト）

「5.8.4　B-treeインデクスのキー長（KEYSZ）の求め方」を基に，B-treeインデクスのキー長を求めてください。

なお，可変長データのB-treeインデクスのキー長を求める際は，「表5‒20　B-treeインデクスのキー長一覧」中の「実際のデータ長」を「データの定義長」で計算してください。

また，処理対象表に複数のB-treeインデクスが定義されている場合は，定義されたB-treeインデクスの中で最大のキー長を使用してください。

SYS1

処理対象表に定義されたインデクスのインデクス構成列が固定長の場合

10を代入してください。

処理対象表に定義されたインデクスのインデクス構成列に可変長を含む場合

12を代入してください。

SYS2

処理対象表に定義されたインデクスが可変長の複数列インデクスの場合

次に示す計算式から求めてください。

計算式

そのほかのインデクスの場合

0を代入してください。

BLK

次に示す計算式から求めてください。

計算式

row_num

adbunarchivechunkコマンドで表に格納する行数

KEY_INF

次に示す計算式から求めてください。

計算式

COL_INFO

次に示す計算式から求めてください。

計算式

MULTI_KEY_INFO

処理対象表に定義されたB-treeインデクスが可変長の複数列インデクスの場合

次に示す計算式から求めてください。

計算式

そのほかの場合

5を代入してください。

(d)　変数RTHD_DATALOADの求め方

変数RTHD_DATALOADは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

注※1

処理対象表にレンジインデクスが定義されている場合に加算してください。

注※2

処理対象表が非FIX表の場合に加算してください。

変数の説明

col_num

処理対象表の列数

var_col_num

処理対象表にあるVARCHAR型，およびVARBINARY型の列数

(e)　変数RTHD_IDXRECの求め方

変数RTHD_IDXRECは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

idx_num

処理対象表に定義されたB-treeインデクスの数

max_idx_col_num

処理対象表に定義されたB-treeインデクスのインデクス構成列数の最大値

buf_size

1,024を代入してください。

(f)　変数RTHD_IDXBUILDの求め方

変数RTHD_IDXBUILDは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

idx_num

処理対象表に定義されたB-treeインデクスの数

RTHD_IDXBUILD_MEM(k)

次に示す計算式から求めてください。

計算式（単位：キロバイト）

page_size

B-treeインデクスが定義されているデータ用DBエリアのページサイズ（単位：バイト）

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」にある「表6‒3　DBエリアのページサイズ」のデータ用DBエリアのページサイズを参照して求めてください。

KEYSZ

B-treeインデクスのキー長（単位：バイト）

「5.8.4　B-treeインデクスのキー長（KEYSZ）の求め方」を基に，B-treeインデクスのキー長を求めてください。

なお，可変長データのB-treeインデクスのキー長を求める際は，「表5‒20　B-treeインデクスのキー長一覧」中の「実際のデータ長」を「データの定義長」で計算してください。

CTRL

インデクス構成列のキー長がすべて固定長の場合

10バイトを代入してください。

インデクス構成列のキー長に可変長を含む場合

12バイトを代入してください。

(g)　変数RTHD_RNGIDXの求め方

変数RTHD_RNGIDXは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

rngidx_num

処理対象表に定義されたレンジインデクスの数

load_rthd

次に示す計算式から求めてください。

アンアーカイブチャンクオプションadb_unarcv_rthd_numの指定値－1

(h)　変数RTHD_TXTIDXの求め方

変数RTHD_TXTIDXは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

idx_num

処理対象表に定義されたテキストインデクスの数

RTHD_TXTIDXBUILD_MEM(k)

次に示す計算式から求めてください。

計算式（単位：キロバイト）

buff_blk_size

4,096を代入してください。

buff_blk_num

アンアーカイブチャンクオプションadb_unarcv_buff_blk_numの指定値

idx_div_num

k番目のテキストインデクスのインデクス構成列定義長

txt_sort_buff_size

アンアーカイブチャンクオプションadb_unarcv_txt_buff_sizeの指定値

(i)　変数RTHD_ARCDIRPATHの求め方

変数RTHD_ARCDIRPATHには，次に示す値を代入してください。

値（単位：キロバイト）

(3)　ヒープメモリの所要量の求め方（adbunarchivechunkコマンド実行時）

adbunarchivechunkコマンド実行時のヒープメモリ（HEAP_UNARCCKSZ）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

注※

複数のadbunarchivechunkコマンドを同時に実行する場合は，各adbunarchivechunkコマンドが使用するヒープメモリの所要量を求めてください。そして，それぞれで求めたヒープメモリの所要量を合計してください。

変数の説明

HEAP_ZLIB

「(a)　変数HEAP_ZLIBの求め方」を参照して求めてください。

HEAP_SRTHMEM

「(b)　変数HEAP_SRTHMEMの求め方」を参照して求めてください

(a)　変数HEAP_ZLIBの求め方

変数HEAP_ZLIBは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

load_rthd

次に示す計算式から求めてください。

アンアーカイブチャンクオプションadb_unarcv_rthd_numの指定値－1

(b)　変数HEAP_SRTHMEMの求め方

変数HEAP_SRTHMEMは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

sort_rthd

次に示す計算式から求めてください。

アンアーカイブチャンクオプションadb_unarcv_rthd_numの指定値－1

6.3.18　adbreorgsystemdataコマンド実行時のメモリ所要量の求め方

adbreorgsystemdataコマンドを実行する場合，HADBサーバは次に示すメモリを使用します。各メモリの所要量を求めてください。

なお，ここでの「処理対象表」とは，「ディクショナリ表（実表）」または「システム表（実表）」のことです。

■共有メモリ

プロセス共通メモリ（PROC_REORGSZ）

リアルスレッド固有メモリ（RTHD_REORGSZ）

■プロセスメモリ

ヒープメモリ（HEAP_REORGSZ）

それぞれのメモリ所要量の計算式を次に示します。

(1)　プロセス共通メモリの所要量の求め方（adbreorgsystemdataコマンド実行時）

adbreorgsystemdataコマンド実行時のプロセス共通メモリ（PROC_REORGSZ）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_REORGSZ＝
     PROC_MNG＋PROC_IDX＋PROC_IDXBUILD
     ＋PROC_DBUPDINF＋PROC_RTHDUPDINF＋PROC_UNLOAD_BUFF＋PROC_OBJDELENT※

変数の説明

PROC_MNG

ディクショナリ表およびシステム表の再編成の管理で使用するプロセス共通メモリ

「(a)　変数PROC_MNGの求め方」を参照して求めてください。

PROC_IDX

B-treeインデクスを作成するときに使用するプロセス共通メモリ

「(b)　変数PROC_IDXの求め方」を参照して求めてください。

PROC_IDXBUILD

B-treeインデクスを作成するときに使用するプロセス共通メモリ

「(c)　変数PROC_IDXBUILDの求め方」を参照して求めてください。

PROC_DBUPDINF

DBエリア，表，インデクス，およびチャンク更新情報の格納で必要なプロセス共通メモリ

「(d)　変数PROC_DBUPDINFの求め方」を参照して求めてください。

PROC_RTHDUPDINF

処理リアルスレッド更新情報

「(e)　変数PROC_RTHDUPDINFの求め方」を参照して求めてください。

PROC_UNLOAD_BUFF

ディクショナリ表およびシステム表の再編成時に使用するバッファ

「(f)　変数PROC_UNLOAD_BUFFの求め方」を参照して求めてください。

PROC_OBJDELENT

S3オブジェクトまたはBLOBの削除情報

「(g)　変数PROC_OBJDELENTの求め方」を参照して求めてください。

注※

クラウドストレージ機能を使用する場合に加算してください。

(a)　変数PROC_MNGの求め方

変数PROC_MNGは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

注※

監査証跡機能が有効な場合に加算してください。

変数の説明

DIC

処理対象表の定義情報を取得するメモリ

次に示す計算式から求めてください。

計算式（単位：キロバイト）

DIC ＝ ↑(1,012＋32,520×col_num＋max_rowsz＋1,156×idx_num)÷1,024↑

col_num

処理対象表の列数

「表6‒17　ディクショナリ表とシステム表に対応する変数の値」を参照して，処理対象表名に対応する値を代入してください。

max_rowsz

最大行長

「表6‒17　ディクショナリ表とシステム表に対応する変数の値」を参照して，処理対象表名に対応する値を代入してください。

idx_num

処理対象表に定義されたインデクス数

「表6‒17　ディクショナリ表とシステム表に対応する変数の値」を参照して，処理対象表名に対応する値を代入してください。

表6‒17　ディクショナリ表とシステム表に対応する変数の値

項番

処理対象表名

変数col_numの値

変数var_col_numの値

変数max_rowszの値

変数Σ(DATASIZE)の値

変数idx_numの値

変数max_idx_col_numの値

変数max_keyszの値

1

ディクショナリ表

48

19

4,441

8,695

2

2

203

2

STATUS_TABLES表

12

2

318

1,556

1

2

203

3

STATUS_COLUMNS表

11

6

32,588

257,088

1

3

304

4

STATUS_INDEXES表

8

3

476

701

2

2

203

5

STATUS_CHUNKS表

10

3

1,312

2,575

1

3

212

6

STATUS_SYNONYM_DICTIONARIES表

10

6

2,108

4,152

1

1

121

IOA

データベースに格納するデータイメージを作成するためのメモリ

次に示す計算式から求めてください。

計算式（単位：キロバイト）

IOA_UNLOAD

アンロード処理で使用するメモリ

次に示す計算式から求めてください。

計算式

sql_size

次に示す計算式から求めてください。

scan_buff_size

次に示す計算式から求めてください。

offset_area

次に示す計算式から求めてください。

col_num

処理対象表の列数

「表6‒17　ディクショナリ表とシステム表に対応する変数の値」を参照して，処理対象表名に対応する値を代入してください。

Σ（DATASIZE）

処理対象表にある各列のデータ型のデータを文字形式で表した場合の最大長の合計

「表6‒17　ディクショナリ表とシステム表に対応する変数の値」を参照して，処理対象表名に対応する値を代入してください。

scan_rthd

1を代入してください。

IOA_RELOAD

リロード処理で使用するメモリ

次に示す計算式から求めてください。

計算式

max_rowsz

最大行長

「表6‒17　ディクショナリ表とシステム表に対応する変数の値」を参照して，処理対象表名に対応する値を代入してください。

col_num

処理対象表の列数

「表6‒17　ディクショナリ表とシステム表に対応する変数の値」を参照して，処理対象表名に対応する値を代入してください。

idx_num

処理対象表に定義されたインデクス数

「表6‒17　ディクショナリ表とシステム表に対応する変数の値」を参照して，処理対象表名に対応する値を代入してください。

dba_num

1を代入してください。

load_rthd

1を代入してください。

LOD

リロード処理で必要となるメモリ

次に示す計算式から求めてください。

計算式（単位：キロバイト）

read_size

1,024を代入してください。

read_buff_num

3を代入してください。

load_rthd

1を代入してください。

input_edit_area

入力データの編集領域長

次に示す計算式から求めてください。

計算式

input_recsize

入力レコード長

次に示す計算式から求めてください。

計算式

Σ（DATASIZE）

処理対象表にある各列のデータ型のデータを文字形式で表した場合の最大長の合計

「表6‒17　ディクショナリ表とシステム表に対応する変数の値」を参照して，処理対象表名に対応する値を代入してください。

col_num

処理対象表の列数

「表6‒17　ディクショナリ表とシステム表に対応する変数の値」を参照して，処理対象表名に対応する値を代入してください。

input_file_num

1,024を代入してください。

IMPORTBUF_CTL

ディクショナリ表およびシステム表の再編成用バッファ制御情報

次に示す計算式から求めてください。

計算式（単位：キロバイト）

BUFBLK

「6.3.4　通常運用時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（通常運用時）」の「(f)　変数PROC_UPDSZの求め方」の変数BUFBLKを参照してください。

load_rthd

1を代入してください。

STS

ステータス情報を退避するためのメモリ

次に示す計算式から求めてください。

計算式（単位：キロバイト）

idx_num

処理対象表に定義されたインデクスの数

「表6‒17　ディクショナリ表とシステム表に対応する変数の値」を参照して，処理対象表名に対応する値を代入してください。

load_rthd

1を代入してください。

PAGEALLOC

リロード用ページ割り当て制御情報

次に示す計算式から求めてください。

計算式（単位：キロバイト）

dataload_rthd

1を代入してください。

dividx_rthd

1を代入してください。

EXPF

ファイル処理で使用するメモリ

次に示す計算式から求めてください。

計算式（単位：キロバイト）

exp_rthd

1を代入してください。

PROC_AUDINFSZ

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(u)　変数AUDINFの求め方」にある変数PROC_AUDINFSZを参照してください。

(b)　変数PROC_IDXの求め方

変数PROC_IDXは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

idxf_buff_size

1,024を代入してください。

max_keysz

処理対象表に定義されたインデクスの中で，最大のインデクスキー長（単位：バイト）

「6.3.18　adbreorgsystemdataコマンド実行時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（adbreorgsystemdataコマンド実行時）」の「(a)　変数PROC_MNGの求め方」の「表6‒17　ディクショナリ表とシステム表に対応する変数の値」を参照して，処理対象表名に対応する値を代入してください。

idx_num

処理対象表に定義されたインデクスの数

「6.3.18　adbreorgsystemdataコマンド実行時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（adbreorgsystemdataコマンド実行時）」の「(a)　変数PROC_MNGの求め方」の「表6‒17　ディクショナリ表とシステム表に対応する変数の値」を参照して，処理対象表名に対応する値を代入してください。

load_rthd

1を代入してください。

cmd_d_opt

1を代入してください。

rd_buff_size

1,024を代入してください。

ld_buff_size

1,024を代入してください。

dividx_rthd

1を代入してください。

(c)　変数PROC_IDXBUILDの求め方

変数PROC_IDXBUILDは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

idx_num

処理対象表に定義されたインデクスの数

「6.3.18　adbreorgsystemdataコマンド実行時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（adbreorgsystemdataコマンド実行時）」の「(a)　変数PROC_MNGの求め方」の「表6‒17　ディクショナリ表とシステム表に対応する変数の値」を参照して，処理対象表名に対応する値を代入してください。

PROC_IDXCREATE_MEM(k)

処理対象表に定義されたk番目のインデクスの一括作成に必要なメモリ

次に示す計算式から求めてください。

計算式（単位：キロバイト）

idx_col_num

インデクスのインデクス構成列の数

「表6‒18　ディクショナリ表とシステム表のインデクスに対応する変数idx_col_numとKEYSZの値」を参照して，インデクス名に対応する値を代入してください。

idx_lv

インデクスの段数

「5.8.3　B-treeインデクスのセグメントごとの格納ページ数の求め方」の「(2)　上位ページ用のセグメントで使用する格納ページ数（変数IP_UPPER（i））の求め方」の計算式1（PIDX（k）の求め方）の漸化式を計算して，PIDX（n）＝1となったときのnの値を代入してください。

ただし，PIDX（1）＝1の場合は，B-treeインデクスの段数は2としてください。

計算式を求める際，各変数には次の値を代入してください。

page_size

4,096を代入してください。

pctfree

0を代入してください。

dbarea_file_num

1を代入してください。

dividx_rthd

1を代入してください。

KEYSZ

インデクスのキー長（単位：バイト）

「表6‒18　ディクショナリ表とシステム表のインデクスに対応する変数idx_col_numとKEYSZの値」を参照して，インデクス名に対応する値を代入してください。

page_size

4,096を代入してください。

表6‒18　ディクショナリ表とシステム表のインデクスに対応する変数idx_col_numとKEYSZの値

項番

処理対象表名

インデクス名

変数idx_col_numの値

変数KEYSZの値

1

ディクショナリ表

ディクショナリ表の全インデクス

ディクショナリ表のインデクスに対応する変数の値を求める場合，すべて右記の値になります。

2

203

2

STATUS_TABLES表

STATUSINDEXM01

2

203

3

STATUS_COLUMNS表

STATUSINDEXM02

3

304

4

STATUS_INDEXES表

STATUSINDEXM03

2

203

5

STATUSINDEXM04

2

203

6

STATUS_CHUNKS表

STATUSINDEXM05

3

212

7

STATUS_SYNONYM_DICTIONARIES表

STATUSINDEXS01

1

121

(d)　変数PROC_DBUPDINFの求め方

変数PROC_DBUPDINFは，次に示す計算式から求めてください。

マルチノード機能を使用しない場合の計算式（単位：キロバイト）

マルチノード機能を使用する場合の計算式（単位：キロバイト）

変数の説明

DBUPDINF_ENT_NUM

DBエリア，表，インデクス，およびチャンク更新情報のエントリ数

マルチノード機能を使用するかどうかで，値が異なります。

マルチノード機能を使用しない場合

1を代入してください。

マルチノード機能を使用する場合

次に示す計算式から求めてください。

計算式（単位：個数）

idx_num

処理対象表に定義されたインデクスの数

(e)　変数PROC_RTHDUPDINFの求め方

変数PROC_RTHDUPDINFは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

rthd_num

1を代入してください。

(f)　変数PROC_UNLOAD_BUFFの求め方

変数PROC_UNLOAD_BUFFは，次に示す値を代入してください。

値（単位：キロバイト）

(g)　変数PROC_OBJDELENTの求め方

変数PROC_OBJDELENTは，次に示す値を代入してください。

値（単位：キロバイト）

PROC_OBJDELENT＝4,203

(2)　リアルスレッド固有メモリの所要量の求め方（adbreorgsystemdataコマンド実行時）

adbreorgsystemdataコマンド実行時に使用するリアルスレッド固有メモリ（RTHD_REORGSZ）は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

RTHD_UNLOADSZ

アンロード処理時にadbreorgsystemdataコマンドが使用するリアルスレッド固有メモリ

「(a)　変数RTHD_UNLOADSZの求め方」を参照して求めてください。

RTHD_RELOADSZ

リロード処理時にadbreorgsystemdataコマンドが使用するリアルスレッド固有メモリ

「(b)　変数RTHD_RELOADSZの求め方」を参照して求めてください。

(a)　変数RTHD_UNLOADSZの求め方

変数RTHD_UNLOADSZは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

処理対象表によって計算式が異なります。

■ディクショナリ表の場合

RTHD_UNLOADSZ ＝ 5,228＋5×uthd_num＋75×MAX(128 ，uthd_num)＋5×SGTBL

■STATUS_TABLES表の場合

RTHD_UNLOADSZ ＝ 809＋5×uthd_num＋6×MAX(128 ，uthd_num)＋SGTBL

■STATUS_COLUMNS表の場合

RTHD_UNLOADSZ ＝ 33,452＋5×uthd_num＋511×MAX(128 ，uthd_num)＋33×SGTBL

■STATUS_INDEXES表の場合

RTHD_UNLOADSZ ＝ 877＋5×uthd_num＋7×MAX(128 ，uthd_num)＋SGTBL

■STATUS_CHUNKS表の場合

RTHD_UNLOADSZ ＝ 1,808＋5×uthd_num＋22×MAX(128 ，uthd_num)＋2×SGTBL

■STATUS_SYNONYM_DICTIONARIES表の場合

RTHD_UNLOADSZ ＝ 2,612＋5×uthd_num＋35×MAX(128 ，uthd_num)＋3×SGTBL

変数の説明

uthd_num

サーバ定義adb_sys_uthd_numオペランドの指定値

SGTBL

処理対象表のセグメント数

次の表を参照して，処理対象表名に対応する値を求めてください。

表6‒19　ディクショナリ表とシステム表のセグメントサイズの見積もり

項番

処理対象表名

変数SGTBLの求め方

1

ディクショナリ表

↑(ADBDICSIZE÷32)↑

2

STATUS_TABLES表

↑(STBLTABLESSIZE÷64)↑

3

STATUS_COLUMNS表

↑(STBLCOLUMNSSIZE÷64)↑

4

STATUS_INDEXES表

↑(STBLINDEXESSIZE÷64)↑

5

STATUS_CHUNKS表

↑(STBLCHUNKSSIZE÷64)↑

6

STATUS_SYNONYM_DICTIONARIES表

↑(STBLSYNONYMDICSIZE÷64)↑

変数ADBDICSIZEについては，「5.11　ディクショナリ用DBエリアの容量見積もり」を参照してください。

変数STBLTABLESSIZE，STBLCOLUMNSSIZE，STBLINDEXESSIZE，STBLCHUNKSSIZE，およびSTBLSYNONYMDICSIZEについては，「5.12　システム表用DBエリアの容量見積もり」を参照してください。

(b)　変数RTHD_RELOADSZの求め方

変数RTHD_RELOADSZは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

RELOADBUF

次に示す計算式から求めてください。

計算式（単位：キロバイト）

RELOADBUF＝↑（IMP_SQBUF※1＋IMP_COBUF※2）÷1,024↑

注※1

クラウドストレージ機能を使用しない場合に加算してください。

注※2

クラウドストレージ機能を使用する場合に加算してください。

IMP_SQBUF：次に示す計算式から求めてください。

計算式（単位：バイト）

IMP_SQBUF＝
     IMP_SQBLK＋IMP_SQIO＋IMP_SQPGE＋IMP_SQHS

IMP_SQBLK

次に示す計算式から求めてください。

計算式（単位：バイト）

IMP_SQBLK＝ imp_blknum×（136＋↑IMP_BLKSZ÷imp_pagesize÷64↑×40）

imp_blknum

64を代入してください。

IMP_BLKSZ

次に示す計算式から求めてください。

IMP_BLKSZ＝ 4,096×1,024

imp_pagesize

4,096を代入してください。

IMP_SQIO

次に示す計算式から求めてください。

計算式（単位：バイト）

IMP_SQIO＝ 568×imp_blknum

IMP_SQPGE

次に示す計算式から求めてください。

計算式（単位：バイト）

IMP_SQPGE＝（176＋imp_pagesize＋BUFLOG）×（IMP_BLKSZ÷imp_pagesize）×imp_blknum

BUFLOG

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(d)　変数BUFGLOBALの求め方」の変数BUFLOGを参照してください。

IMP_SQHS

次に示す計算式から求めてください。

計算式（単位：バイト）

IMP_SQHS＝ 48×imp_blknum

IMP_COBUF

次に示す計算式から求めてください。

計算式（単位：バイト）

IMP_COBUF＝IMP_COBLK＋IMP_COIO＋IMP_COPGE＋IMP_COHS

IMP_COBLK

次に示す計算式から求めてください。

計算式（単位：バイト）

IMP_COBLK＝imp_blknum×72

imp_blknum

64を代入してください。

IMP_COIO

次に示す計算式から求めてください。

計算式（単位：バイト）

IMP_COIO＝136×imp_blknum

IMP_COPGE

次に示す計算式から求めてください。

計算式（単位：バイト）

IMP_COPGE
     ＝（（176＋BUFLOG）×SEGSIZE＋IMP_COBLKSZ）×imp_blknum

BUFLOG

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(d)　変数BUFGLOBALの求め方」の変数BUFLOGを参照してください。

SEGSIZE

16を代入してください。

IMP_COBLKSZ

次に示す計算式から求めてください。

IMP_COBLKSZ＝16×4,096

IMP_COHS：次に示す計算式から求めてください。

計算式（単位：バイト）

IMP_COHS＝40×imp_blknum

SORTIOBUF

次に示す計算式から求めてください。

計算式（単位：キロバイト）

SORTIOBUF＝ sort_io_buff_size×sort_rthd

sort_io_buff_size

16を代入してください。

sort_rthd

1を代入してください。

SORTBUF

次に示す計算式から求めてください。

計算式（単位：キロバイト）

SORTBUF＝ （48＋sort_buff_size×1,024）×sort_rthd

sort_buff_size

256を代入してください。

RTHD_DATALOAD

次に示す計算式から求めてください。

計算式（単位：キロバイト）

col_num

処理対象表の列数

「6.3.18　adbreorgsystemdataコマンド実行時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（adbreorgsystemdataコマンド実行時）」の「(a)　変数PROC_MNGの求め方」の「表6‒17　ディクショナリ表とシステム表に対応する変数の値」を参照して，処理対象表名に対応する値を代入してください。

var_col_num

処理対象表にあるVARCHAR型，およびVARBINARY型の列数

「6.3.18　adbreorgsystemdataコマンド実行時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（adbreorgsystemdataコマンド実行時）」の「(a)　変数PROC_MNGの求め方」の「表6‒17　ディクショナリ表とシステム表に対応する変数の値」を参照して，処理対象表名に対応する値を代入してください。

RTHD_IDXREC

次に示す計算式から求めてください。

計算式（単位：キロバイト）

RTHD_IDXREC＝

↑（386＋328×（idx_num−1）＋32×max_idx_col_num＋（64＋buf_size×1,024）×2×idx_num）÷1,024↑

idx_num

処理対象表に定義されたインデクスの数

「6.3.18　adbreorgsystemdataコマンド実行時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（adbreorgsystemdataコマンド実行時）」の「(a)　変数PROC_MNGの求め方」の「表6‒17　ディクショナリ表とシステム表に対応する変数の値」を参照して，処理対象表名に対応する値を代入してください。

max_idx_col_num

処理対象表に定義されたインデクスのインデクス構成列数の最大値

「6.3.18　adbreorgsystemdataコマンド実行時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（adbreorgsystemdataコマンド実行時）」の「(a)　変数PROC_MNGの求め方」の「表6‒17　ディクショナリ表とシステム表に対応する変数の値」を参照して，処理対象表名に対応する値を代入してください。

buf_size

1,024を代入してください。

RTHD_IDXBUILD

次に示す計算式から求めてください。

計算式（単位：キロバイト）

idx_num

処理対象表に定義されたインデクスの数

「6.3.18　adbreorgsystemdataコマンド実行時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（adbreorgsystemdataコマンド実行時）」の「(a)　変数PROC_MNGの求め方」の「表6‒17　ディクショナリ表とシステム表に対応する変数の値」を参照して，処理対象表名に対応する値を代入してください。

RTHD_IDXBUILD_MEM（k）

処理対象表に定義されたk番目のB-treeインデクスの一括作成に必要なメモリ

次に示す計算式から求めてください。

計算式（単位：キロバイト）

KEYSZ

B-treeインデクスのキー長（単位：バイト）

「6.3.18　adbreorgsystemdataコマンド実行時のメモリ所要量の求め方」の「(1)　プロセス共通メモリの所要量の求め方（adbreorgsystemdataコマンド実行時）」の「(a)　変数PROC_MNGの求め方」の「表6‒17　ディクショナリ表とシステム表に対応する変数の値」を参照して，処理対象表名に対応する値を代入してください。

CTRL

12バイトを代入してください。

page_size

4,096バイトを代入してください。

(3)　ヒープメモリの所要量の求め方（adbreorgsystemdataコマンド実行時）

adbreorgsystemdataコマンド実行時のヒープメモリ（HEAP_REORGSZ）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

sort_rthd

1を代入してください。

6.3.19　adbclientdefmangコマンド実行時のメモリ所要量の求め方

adbclientdefmangコマンドを実行する場合，HADBサーバは次に示すメモリを使用します。各メモリの所要量を求めてください。

■共有メモリ

プロセス共通メモリ（PROC_CLTDEFMNG）

リアルスレッド固有メモリ（RTHD_CLTDEFMNG）

■プロセスメモリ

ヒープメモリ（HEAP_CLTDEFMNG）

それぞれのメモリ所要量の計算式を次に示します。

(1)　プロセス共通メモリの所要量の求め方（adbclientdefmangコマンド実行時）

adbclientdefmangコマンド実行時のプロセス共通メモリ（PROC_CLTDEFMNG）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_CLTDEFMNG = ↑(CMI + CDM_WORK)÷1,024↑ + PROC_AUDINFSZ※

注※

監査証跡機能が有効な場合に加算してください。

変数の説明

CMI

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(a)　変数SCIの求め方」の変数CMIを参照してください。

変数CMIの計算式に出てくる各変数は，adbclientdefmangコマンド実行時のクライアント管理定義ファイルの内容によって変わります。

なお，adbclientdefmangコマンドの実行中は，次に示す変数CMIのメモリ領域を同時に確保します。

adbclientdefmangコマンド実行前に確保していた変数CMIのメモリ領域

変更前のクライアント管理定義ファイルの内容です。ただし，adbclientdefmangコマンド実行時に，クライアント定義の集中管理機能を使用していなかった場合は存在しません。

adbclientdefmangコマンド実行時に確保した変数CMIのメモリ領域

変更後のクライアント管理定義ファイルの内容です。

また，adbclientdefmangコマンドの実行結果によって，解放されるメモリ領域が異なります。

adbclientdefmangコマンドが正常終了した場合

HADBサーバは，adbclientdefmangコマンド実行前に確保していた変数CMIのメモリ領域を解放します。

adbclientdefmangコマンドがエラーになった場合

HADBサーバは，adbclientdefmangコマンド実行時に確保した変数CMIのメモリ領域を解放します。

CDM_WORK

次に示す計算式から求めてください。

計算式（単位：バイト）

CDM_WORK = ↑8×authid_num÷32↑×32 + 64

authid_num

クライアント管理定義のadbclientmangオペランドに指定された認可識別子の総数

PROC_AUDINFSZ

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(u)　変数AUDINFの求め方」にある変数PROC_AUDINFSZを参照してください。

(2)　リアルスレッド固有メモリの所要量の求め方（adbclientdefmangコマンド実行時）

adbclientdefmangコマンド実行時のリアルスレッド固有メモリ（RTHD_CLTDEFMNG）の所要量は，次に示す計算式から求めてください。

変数RTHD_CLTDEFMNGは，マルチノード機能を使用する場合に求めてください。マルチノード機能を使用しない場合は求める必要はありません。

計算式（単位：キロバイト）

RTHD_CLTDEFMNG = ↑MLT_COMP÷1,024↑

変数の説明

MLT_COMP

次に示す計算式から求めてください。

計算式（単位：バイト）

MLT_COMP = ↑(8 + 608×authid_num)÷32↑×32 + 64

authid_num

クライアント管理定義のadbclientmangオペランドに指定された認可識別子の総数

(3)　ヒープメモリの所要量の求め方（adbclientdefmangコマンド実行時）

adbclientdefmangコマンド実行時のヒープメモリ（HEAP_CLTDEFMNG）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

HEAP_CLTDEFMNG = ↑(MNGANA + CLTANA)÷1,024↑

変数の説明

MNGANA

次に示す計算式から求めてください。

計算式（単位：バイト）

MNGANA = 512×cltmng_num

cltmng_num

クライアント管理定義ファイルに指定されたクライアント管理定義のadbclientmangオペランドの総数

CLTANA

次に示す値を代入してください。

値（単位：バイト）

CLTANA = 10,240

6.3.20　adbsyndictコマンド実行時のメモリ所要量の求め方

adbsyndictコマンドを実行する場合，HADBサーバは次に示すメモリを使用します。各メモリの所要量を求めてください。

■共有メモリ

プロセス共通メモリ（PROC_SYNDICTSZ）

リアルスレッド固有メモリ（RTHD_SYNDICTSZ）

それぞれのメモリ所要量の計算式を次に示します。

(1)　プロセス共通メモリの所要量の求め方（adbsyndictコマンド実行時）

adbsyndictコマンド実行時のプロセス共通メモリ（PROC_SYNDICTSZ）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

注※

監査証跡機能が有効な場合に加算してください。

変数の説明

SYNDICDEFSZ

同義語辞書の情報を管理するメモリ

次の値を代入してください。

値（単位：キロバイト）

PROC_AUDINFSZ

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(u)　変数AUDINFの求め方」にある変数PROC_AUDINFSZを参照して求めてください。

(2)　リアルスレッド固有メモリの所要量の求め方（adbsyndictコマンド実行時）

adbsyndictコマンド実行時のリアルスレッド固有メモリ（RTHD_SYNDICTSZ）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

syn_group_num

同義語グループの数（単位：個）

SYNDICACCSZ

同義語辞書の情報を操作するメモリ

次の値を代入してください。

値（単位：キロバイト）

6.3.21　adbaudittrailコマンド実行時のメモリ所要量の求め方

adbaudittrailコマンドを実行する場合，HADBサーバは次に示すメモリを使用します。各メモリの所要量を求めてください。

■共有メモリ

プロセス共通メモリ（PROC_AUDTRAILSZ）

リアルスレッド固有メモリ（RTHD_AUDTRAILSZ）

それぞれのメモリ所要量の計算式を次に示します。

(1)　プロセス共通メモリの所要量の求め方（adbaudittrailコマンド実行時）

adbaudittrailコマンド実行時のプロセス共通メモリ（PROC_AUDTRAILSZ）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

PROC_AUDTRAILSZ ＝ AUDINF ＋ AUDTBLDEFSZ

変数の説明

AUDINF

監査証跡の管理情報

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(u)　変数AUDINFの求め方」を参照して求めてください。

監査証跡機能を有効にすると変数AUDINFで求めた値が確保され，無効にすると解放されます。

AUDTBLDEFSZ

監査対象定義の管理情報

--startオプションを指定してadbaudittrailコマンドを実行する場合だけ加算してください。--startオプション以外を指定する場合は，AUDTBLDEFSZの加算は不要です。

次に示す値を代入してください。

値（単位：キロバイト）

AUDTBLDEFSZ＝ 4

(2)　リアルスレッド固有メモリの所要量の求め方（adbaudittrailコマンド実行時）

adbaudittrailコマンド実行時のリアルスレッド固有メモリ（RTHD_AUDTRAILSZ）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

RTHD_AUDTRAILSZ ＝ AUDTHDINF ＋ AUDTBLACCSZ

変数の説明

AUDTHDINF

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(4)　リアルスレッド固有メモリの所要量の求め方（HADBサーバ開始時）」の変数AUDTHDINFを参照して求めてください。

監査証跡機能を有効にすると変数AUDTHDINFで求めた値が確保され，無効にすると解放されます。

AUDTBLACCSZ

監査対象定義の操作情報

--startオプションを指定してadbaudittrailコマンドを実行する場合だけ加算してください。--startオプション以外を指定する場合は，AUDTBLACCSZの加算は不要です。

次の値を代入してください。

値（単位：キロバイト）

AUDTBLACCSZ＝ 1

6.3.22　adbconvertaudittrailfileコマンド実行時のメモリ所要量の求め方

adbconvertaudittrailfileコマンドを実行する場合，HADBサーバは次に示すメモリを使用します。

■共有メモリ

リアルスレッド固有メモリ（RTHD_CONVERTAUDSZ）

adbconvertaudittrailfileコマンド実行時に使用するリアルスレッド固有メモリ（RTHD_CONVERTAUDSZ）の所要量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

RTHD_CONVERTAUDSZ = AUDREADSZ ＋ AUDBLOCKSZ

変数の説明

AUDREADSZ

監査証跡ファイルの管理領域

次に示す値を代入してください。

値（単位：キロバイト）

AUDREADSZ = 1

AUDBLOCKSZ

監査証跡ファイルの作業領域

次に示す値を代入してください。

値（単位：キロバイト）

AUDBLOCKSZ = 262,144

6.3.23　adbupddmkコマンド実行時のメモリ所要量の求め方

adbupddmkコマンドを実行する場合，HADBサーバは次に示すメモリを使用します。各メモリの所要量を求めてください。

■共有メモリ

プロセス共通メモリ（PROC_UPDDMKSZ）

リアルスレッド固有メモリ（RTHD_UPDDMKSZ）

それぞれのメモリ所要量の計算式を次に示します。

(1)　プロセス共通メモリの所要量の求め方（adbupddmkコマンド実行時）

adbupddmkコマンド実行時のプロセス共通メモリ（PROC_UPDDMKSZ）の所要量は，次に示す値となります。

値（単位：キロバイト）

PROC_UPDDMKSZ ＝ 1

(2)　リアルスレッド固有メモリの所要量の求め方（adbupddmkコマンド実行時）

adbupddmkコマンド実行時のリアルスレッド固有メモリ（RTHD_UPDDMKSZ）の所要量は，次に示す値となります。

値（単位：キロバイト）

RTHD_UPDDMKSZ ＝ 1

6.3.24　クラウドストレージ機能使用時のメモリ所要量の求め方

クラウドストレージ機能を使用する場合，HADBサーバが使用するメモリの最大サイズとは別に，クラウドストレージ機能用ライブラリが使用するメモリ（プロセスメモリ）の最大サイズが必要です。

クラウドストレージ機能用ライブラリが使用するメモリの最大サイズは，次に示す計算式から求めてください。

AWS環境またはAmazon S3互換オブジェクトストレージ環境の場合

計算式（単位：キロバイト）

クラウドストレージ機能用ライブラリが使用するメモリの最大サイズ
         ＝MAX（instance_vcpu×2.2＋5.1 ，40）×1,024×1,024

変数の説明

instance_vcpu

＜AWS環境の場合＞

インスタンスに搭載されているvCPU数

＜Amazon S3互換オブジェクトストレージ環境の場合＞

サーバマシンに搭載されているCPUのコア数

メモ

クラウドストレージ機能を使用する場合，上記の値と，「6.3　HADBサーバのメモリ所要量の見積もり」で算出されるHADBサーバが使用するメモリの最大サイズの合計値以上のメモリを確保することが可能なインスタンスタイプを選ぶ必要があります。

Azure環境の場合

計算式（単位：キロバイト）

クラウドストレージ機能用ライブラリが使用するメモリの最大サイズ
         ＝MAX(instance_vcpu×2.2 ，35)×1,024×1,024

変数の説明

instance_vcpu

仮想マシンに搭載されているvCPU数

メモ

クラウドストレージ機能を使用する場合，上記の値と，「6.3　HADBサーバのメモリ所要量の見積もり」で算出されるHADBサーバが使用するメモリの最大サイズの合計値以上のメモリを確保することが可能な仮想マシンのサイズを選ぶ必要があります。

6.3.25　外部データアクセス用ライブラリ使用時のメモリ所要量の求め方

外部表を使用するか，またはCOPY文を実行する場合，HADBサーバが使用するメモリの最大サイズとは別に，外部データアクセス用ライブラリが使用するメモリ（プロセスメモリ）の最大サイズが必要です。

外部データアクセス用ライブラリが使用するメモリの最大サイズは，次に示す計算式から求めてください。

計算式（単位：キロバイト）

外部データアクセス用ライブラリが使用するメモリの最大サイズ
         ＝ARROW_INIT_SIZE＋（ARROW_SELECT_SIZE※1＋ARROW_COPY_SIZE※2）
                          ×MIN（rthd_num ，max_users×sql_rthd_num）

注※1

外部表を指定したSQL文を実行する場合に加算してください。

注※2

COPY文を実行する場合に加算してください。

変数の説明

ARROW_INIT_SIZE

次に示す計算式から求めてください。

計算式

ARROW_INIT_SIZE＝（cpu_core_num×978＋9,672）×1,024

cpu_core_num

サーバマシンのCPUのコア数

ARROW_SELECT_SIZE

次に示す計算式から求めてください。

計算式

ARROW_SELECT_SIZE＝｛（4.60×MIN(fgntbl_num , uthd_num))
                      ×object_data_size
                     ｝÷1,024

fgntbl_num

1SQL文に指定する外部表の数の最大値

uthd_num

サーバ定義のadb_sys_uthd_numオペランドの指定値

object_data_size

外部表に読み込まれる外部データファイルのうちの最大ファイルサイズ（単位：バイト）

1SQL文に複数の外部表を指定する場合，全外部表の外部データファイルの中で最も大きいファイルサイズを代入してください。ファイルサイズの最大値がわからない場合は，1,073,741,824（1ギガバイト）を代入してください。

ARROW_COPY_SIZE

COPY文実行時最大メモリサイズ

次に示す計算式から求めてください。

計算式（単位：キロバイト）

ARROW_COPY_SIZE＝MAX_ARROW_COPY_SQL_SIZE÷1,024

MAX_ARROW_COPY_SQL_SIZE

実行するCOPY文ごとにARROW_COPY_SQL_SIZEを計算してください。その中で最大値を代入してください。

ARROW_COPY_SQL_SIZE

COPY文実行時メモリサイズ

次に示す計算式から求めてください。

計算式（単位：バイト）

ARROW_COPY_SQL_SIZE＝3,225,419,776＋4×row_size

row_size

COPY文によって出力される1行のデータサイズの最大値

1行のデータサイズは，各列のデータサイズの合計値です。各列のデータサイズは，次に示す表から求めてください。

表6‒20　COPY文で出力される各列のデータサイズ

項番

分類

列のデータ型

列のデータサイズ（単位：バイト）

1

数データ

BIGINT

9

2

INTEGER※1

5

3

SMALLINT※2

3

4

DECIMAL

17

5

NUMERIC

6

DOUBLE PRECISION

9

7

FLOAT

8

REAL

9

文字データ

CHAR

定義長＋5

10

VARCHAR

実長＋5

11

STRING

12

日時データ

DATE

5

13

TIME(p)

pが0，または3の場合

5

14

pが6，または9の場合

9

15

TIMESTAMP(p)

9

16

バイナリデータ

BINARY

定義長＋5

17

VARBINARY

実長＋5

18

配列データ

ARRAY

各配列要素のデータサイズの合計＋5

19

構造データ

STRUCT

各フィールドのデータサイズの合計＋1

20

論理データ

BOOLEAN

2

21

UUIDデータ

UUID

17

（凡例）

p：小数秒の桁数（0，3，6，または9）

注

値がナル値の場合は，データサイズの値を1として計算してください。

注※1

整数データ型のデータ形式がレガシー形式の場合は，列のデータサイズの値を9バイトとして計算してください。

注※2

整数データ型のデータ形式がレガシー形式の場合は，列のデータサイズの値を5バイトとして計算してください。

rthd_num

サーバ定義のadb_sys_rthd_numオペランドの指定値

max_users

SQL文を実行するコネクションの同時実行数

コネクションの同時実行数がわからない場合は，サーバ定義のadb_sys_max_usersオペランドの指定値を代入してください。

sql_rthd_num

最大SQL処理リアルスレッド数（サーバ定義のadb_sql_exe_max_rthd_numオペランドの指定値）

重要

外部表を使用するか，またはCOPY文を実行する場合，上記で求めた外部データアクセス用ライブラリが使用するメモリの最大サイズ（これをAとする）と，「6.3　HADBサーバのメモリ所要量の見積もり」で求めたHADBサーバが使用するメモリの最大サイズ（これをBとする）の合計値以上（A＋B以上）のメモリを確保する必要があります。A＋Bが，サーバマシンで使用できるメモリサイズより大きい場合，サーバ定義の次のオペランドの指定値を小さくすると，A＋Bを削減できます。

adb_sys_rthd_numオペランド

adb_sql_exe_max_rthd_numオペランド

adb_sys_max_usersオペランド

adb_sys_uthd_numオペランド

また，外部表を指定したSQL文の実行時のメモリ所要量が大き過ぎる場合，外部表への読み込み対象となる外部データファイルの個々のファイルサイズを小さくすると，メモリ所要量を削減できます。外部データファイルを分割して，個々のファイルサイズを小さくすることを検討してください。

6.4　HADBサーバの使用時に単調増加するファイル

ここでは，HADBサーバの使用時に単調増加するファイルについて説明します。

HADBサーバの使用時に単調増加するファイルは，次に示すディレクトリに作成されます。

サーバディレクトリ

DBディレクトリ

監査証跡の出力先ディレクトリ※

注※

監査証跡機能を使用する場合に必要なディレクトリです。

重要

単調増加するファイルは，ファイルサイズおよびファイル数の上限がありません。そのため，単調増加するファイルによって，ディスクの空き容量が不足しないように注意する必要があります。

サーバディレクトリで単調増加するファイルを次の表に示します。

表6‒21　サーバディレクトリで単調増加するファイル

項番

ファイル名

ファイルの説明

ファイルの削除方法

1

$ADBDIR/spool/adbdumpYYYYMMDDhhmmss.サーバプロセスのプロセスID※1

HADBダンプファイル

HADBサーバの正常終了時に削除されます。

adbinfosweepコマンドを実行すると削除されます

2

$ADBDIR/spool/adbdumperrorYYYYMMDDhhmmssSSSSSS_TTTTTTTTTTTTTTTTTTTT.サーバプロセスのプロセスID※1，※2

adbinfosweepコマンドを実行すると削除されます。

注※1

ファイル名のYYYYMMDDhhmmssは，ファイルを生成した時刻になります。

注※2

ファイル名のSSSSSSは，HADBダンプファイルを生成した時刻のマイクロ秒になります。また，TTTTTTTTTTTTTTTTTTTTは，HADBサーバの内部矛盾エラーを検知したリアルスレッドのスレッドIDになります。

DBディレクトリで単調増加するファイルを次の表に示します。

表6‒22　DBディレクトリで単調増加するファイル

項番

ファイル名

ファイルの説明

ファイルの削除方法

1

$DBDIR/SPOOL/core.サーバプロセスのプロセスID※1

障害情報（コアファイル）

adbinfosweepコマンドを実行すると削除されます。

2

$DBDIR/ADBWORK/xxxxx※2，※3

コマンド実行時に作成される作業用一時ファイル※4

実行したコマンドが完了すると削除されます。

注※1

サーバ定義adb_core_pathオペランドを指定した場合は，$DBDIR/SPOOLディレクトリ下ではなく，adb_core_pathオペランドに指定したディレクトリ下に，障害情報（コアファイル）が出力されます。

注※2

ファイル名のxxxxxは，任意の値になります。

注※3

実行するコマンドの-wオプションを省略した場合に，このディレクトリに作業用一時ファイルが作成されます。実行するコマンドの-wオプションを指定した場合は，-wオプションに指定したディレクトリに，作業用一時ファイルが作成されます。

注※4

次のコマンドを実行するときに，作業用一時ファイルが作成されます。

adbimportコマンド

adbidxrebuildコマンド

adbmergechunkコマンド

adbunarchivechunkコマンド

adbreorgsystemdataコマンド

監査証跡の出力先ディレクトリで単調増加するファイルを次の表に示します。

表6‒23　監査証跡の出力先ディレクトリで単調増加するファイル

項番

ファイル名

ファイルの説明

ファイルの削除方法

1

$AUDITDIR/adbaud-YYYYMMDD-hhmmss-nnn.aud※1，※2

監査証跡ファイル※3

OSのcpコマンドとrmコマンドで，監査証跡の保存先ディレクトリに監査証跡ファイルを移動してください。

詳細については，「12.3.1　監査証跡ファイルの移動（監査証跡の保存先ディレクトリへの移動）」を参照してください。

注※1

ファイル名の$AUDITDIRは，監査証跡の出力先ディレクトリを示します。サーバ定義のadb_audit_log_pathオペランドに指定したパス名です。

ファイル名のYYYYMMDDとhhmmssは，監査証跡ファイルをリネームした日時になります。

ファイル名のnnnは，監査証跡ファイルをリネームした日時のミリ秒になります。

注※2

マルチノード機能を使用している場合，ファイル名は$AUDITDIR/adbaud-YYYYMMDD-hhmmss-nnn-N.audになります。Nは，監査証跡ファイルが出力されたノードのノード番号を示します。

注※3

サーバ定義のadb_audit_log_max_numオペランドに0を指定した場合，またはadb_audit_log_max_numオペランドを省略した場合は，上限なく監査証跡ファイルが作成されます。

6.5　サーバメッセージログファイルの容量見積もり

ここでは，サーバメッセージログファイルの容量を見積もる方法について説明します。サーバメッセージログファイルについては，「10.4.1　メッセージの出力先」の「(3)　サーバメッセージログファイル」を参照してください。

サーバメッセージログファイルの容量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

サーバメッセージログファイルの容量＝ （env_msglog_size×1,024×4）

変数の説明

env_msglog_size

環境変数ADBMSGLOGSIZEの指定値

指定していない場合は，16を仮定してください。

6.6　障害情報（コアファイル）の容量見積もり

ここでは，障害情報（コアファイル）の容量を見積もる方法について説明します。

障害情報（コアファイル）の容量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

障害情報（コアファイル）の容量＝ adb_core_size＋sysd_core_size

変数の説明

adb_core_size

次のどちらかのコアファイルのサイズです（単位：キロバイト）。この変数には，2,097,152を代入してください。

サーバ定義のadb_core_pathオペランドに指定したディレクトリ下に格納されるコアファイル

$DBDIR/SPOOLディレクトリ下に格納されるコアファイル

sysd_core_size

コアファイルの出力がsystemd-coredumpによって制御されている場合に，HADBサーバが/var/lib/systemd/coredumpディレクトリ下に出力するコアファイルのサイズです（単位：キロバイト）。この変数に代入する値は，次の条件から選択してください。

コアファイルの出力がsystemd-coredumpによって制御されていて，かつ圧縮が有効の場合

この変数には，20,972を代入してください。

コアファイルの出力がsystemd-coredumpによって制御されていて，かつ圧縮が無効（無圧縮）の場合

この変数には，2,097,152を代入してください。

コアファイルの出力がsystemd-coredumpによって制御されていない場合

この変数には，0を代入してください。

メモ

コアファイルの出力がsystemd-coredumpによって制御されているかどうかを確認する方法は，「8.2.1　HADBサーバのインストール前に実施する作業」の「(9)　設定ファイルの変更および作成（コアファイルの出力がsystemd-coredumpで制御されている場合）」を参照してください。

systemd-coredumpによるコアファイルの圧縮が有効であるかどうかは，/etc/systemd/coredump.conf内にあるCoredumpセクション中のCompressオプションの指定値で確認できます。Compressオプションにyesを指定しているか，またはCompressオプションがコメントになっている場合は，圧縮が有効になっています（RHEL 8の場合はLZ4形式で，RHEL 9以降の場合はZstandard形式で圧縮されます）。Compressオプションにnoを指定している場合は，圧縮が無効（無圧縮）になっています。

6.7　HADBダンプファイルの容量見積もり

HADBダンプファイルは，HADBサーバのサーバプロセスが異常終了したときに出力されるトラブルシュート情報のことです。

HADBダンプファイルの容量は，次に示す計算式から求めてください。

計算式（単位：メガバイト）

HADBダンプファイルの容量＝ 25,600＋max_users×106＋rthd_num×1,821

変数の説明

max_users

サーバ定義adb_sys_max_usersオペランドの指定値

rthd_num

サーバ定義adb_sys_rthd_numオペランドの指定値

6.8　統計ログファイルの容量見積もり

ここでは，統計ログファイルの容量を見積もる方法について説明します。

統計ログファイルの容量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

統計ログファイルの容量＝ sta_log_max_size×sta_log_size_unit×1,024×4＋1,024

変数の説明

sta_log_max_size

サーバ定義adb_sta_log_max_sizeオペランドの指定値

「7.2.8　統計情報に関するオペランド（set形式）」のadb_sta_log_max_sizeオペランドを参照してください。

sta_log_size_unit

サーバ定義adb_sta_log_size_unitオペランドを省略した場合，またはサーバ定義adb_sta_log_size_unitオペランドにGを指定した場合

1,024としてください。

サーバ定義adb_sta_log_size_unitオペランドにMを指定した場合

1としてください。

サーバ定義adb_sta_log_size_unitオペランドについては，「7.2.8　統計情報に関するオペランド（set形式）」のadb_sta_log_size_unitオペランドを参照してください。

なお，統計ログファイルの出力先は，サーバ定義adb_sta_log_pathオペランドの指定有無によって異なります。

サーバ定義adb_sta_log_pathオペランドを指定していない場合

統計ログファイルは，$ADBDIR/spoolディレクトリ下に出力されます。

サーバ定義adb_sta_log_pathオペランドを指定している場合

統計ログファイルは，サーバ定義adb_sta_log_pathオペランドに指定したディレクトリ下に出力されます。

サーバ定義adb_sta_log_pathオペランドについては，「7.2.8　統計情報に関するオペランド（set形式）」のadb_sta_log_pathオペランドを参照してください。

6.9　SQLトレースファイルの容量見積もり

ここでは，SQLトレースファイルの容量を見積もる方法について説明します。

SQLトレースファイルの容量は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

sqltxt_size

サーバ定義adb_sql_trc_txtfile_sizeオペランドの指定値

「7.2.6　SQL文に関するオペランド（set形式）」のadb_sql_trc_txtfile_sizeオペランドを参照してください。

6.10　更新行のカラム化機能に必要なファイルの容量見積もり

ここでは，更新行のカラム化機能に必要なファイル容量について説明します。

更新行のカラム化機能で必要なファイルの総容量（COLUMNIZELOG）は，次のとおりです。

ファイルの総容量（単位：キロバイト）

COLUMNIZELOG＝ 131,072

メモ

更新行のカラム化機能に必要なファイルは，更新行のカラム化機能が有効かどうかに関係なく，HADBサーバの開始時に作成されます。

更新行のカラム化機能については，「11.21　更新行のカラム化機能の運用（カラムストア表の検索性能の維持）」を参照してください。

6.11　アクセスパス探索情報ログファイルの容量見積もり

ここでは，アクセスパス探索情報ログファイルの容量について説明します。

アクセスパス探索情報ログファイルの総容量（OPTLOG）は，次のとおりです。

ファイルの総容量（単位：キロバイト）

OPTLOG＝ 131,072 × 2

アクセスパス探索情報ログファイルは，システムが使用するファイルで，HADBサーバの開始時に作成されます。このファイルには，SQL文の実行時にアクセスパスの構築に関する保守情報が出力されます。

6.12　システムログファイルの容量見積もり

ここでは，システムログファイルの容量の見積もり方法について説明します。

システムログファイルは，マスタログファイルおよびユーザログファイル群で構成されます。マスタログファイルは自動的に，ユーザログファイルはサーバ定義の指定値に従って，HADBサーバを開始したときにそれぞれ初期化容量分だけ，DBディレクトリ下（$DBDIR/ADBSYS/ADBSLG）に作成※されます。そのため，システムログファイルの容量を求める場合，マスタログファイルおよびユーザログファイルの容量をそれぞれ求める必要があります。

注※

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合，システムログファイルはDBディレクトリ下（$DBDIR/ADBSYS/ADBSLG）ではなく，オブジェクトストレージに作成されます。

システムログの増加によって，システムログファイルの容量が初期化した容量を超えた場合，システムログファイルは自動的に拡張されます。システムログファイルが拡張すると更新性能への影響が大きいため，システムログファイルの容量見積もりを実施して，必要な初期化容量を指定してください。

システムログファイルの容量を求める計算式を次に示します。なお，システムログファイル中に余分な空き領域が発生することがあるため，ここで求めた容量の1.2倍以上の容量を準備してください。

計算式（単位：キロバイト）

システムログファイルの容量＝ MSTLOG＋USRLOG×user_file_num＋SYSLOG_CLOUD

変数の説明

MSTLOG

マスタログファイルの容量（単位：キロバイト）

「6.12.1　マスタログファイルの容量の求め方」を参照して求めてください。

USRLOG

ユーザログファイルの容量（単位：キロバイト）

「6.12.2　ユーザログファイルの容量の求め方」を参照して求めてください。

user_file_num

ユーザログファイル数（単位：個）

「6.12.15　ユーザログファイル数の求め方」を参照して求めてください。

SYSLOG_CLOUD

システムログファイルの管理部の容量（単位：キロバイト）

次に示す計算式から求めてください。クラウドストレージ機能のシステムディレクトリ対応オプションが無効な場合は0を代入してください。

計算式

SYSLOG_CLOUD ＝ user_file_num×64＋64

6.12.1　マスタログファイルの容量の求め方

マスタログファイルにはイベントログが出力されます。HADBサーバの稼働中はイベントログが出力され続けるため，マスタログファイルの容量は増加し続けます。ただし，HADBサーバの稼働中に，次に示す条件をすべて満たす契機がある場合，マスタログファイルの容量が自動的に縮小されます。

マスタログファイルの容量が2メガバイトを超えている場合

ほかの更新トランザクションが存在しないときに更新トランザクションが決着した場合

また，HADBサーバを再起動したときには，前回稼働時に出力されたイベントログはマスタログファイルから削除されます。

重要

マスタログファイルが作成されるディスクの空き容量が不足すると，トランザクションを決着または回復できなくなり，HADBサーバが異常終了することがあります。そのため，マスタログファイルの容量を正確に見積もって十分なディスク容量を確保するようにしてください。

マスタログファイルの容量は次に示す計算式から求めてください。

ヒント

計算式の変数の説明中に出てくる「見積もり期間」は，次のどちらかから求めてください。

HADBサーバの稼働期間

マスタログファイルの容量が自動的に縮小する契機が生じる期間

例えば，サーバのメンテナンスなどでHADBサーバを半年に一度停止することがある場合は，見積もり期間を半年としてください。マスタログファイルが自動的に縮小する契機が毎日ある場合は，見積もり期間を1日としてください。

計算式（単位：キロバイト）

変数の説明

tran_count

見積もり期間中の更新トランザクションの実行回数

arcdir_remove_count

見積もり期間中に，アーカイブディレクトリ下のファイルが削除される回数

アーカイブマルチチャンク表に対して，対象のSQL文とコマンドを実行した場合に，アーカイブディレクトリ下が削除される回数を代入してください。アーカイブディレクトリ下が削除される回数を，次の表に示します。

表6‒24　アーカイブディレクトリ下が削除される回数

項番

実行するSQL文とコマンド

アーカイブディレクトリ下が削除される回数

1

DROP SCHEMA文

REVOKE文のSCHEMA

削除対象のスキーマに存在するアーカイブマルチチャンク表数を代入してください。

2

ALTER TABLE文（アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更する場合）

DROP TABLE文

TRUNCATE TABLE文

1を代入してください。

3

PURGE CHUNK文

削除対象のチャンク数を代入してください。

4

adbunarchivechunkコマンド

処理対象のチャンク数を代入してください。

utlexec_count

見積もり期間中のコマンドの実行回数

次に示すコマンドを実行した回数の合計になります。

adbimportコマンド

adbidxrebuildコマンド

adbmodareaコマンド

adbmergechunkコマンド

adbgetcstコマンド

adbchgchunkcommentコマンド

adbchgchunkstatusコマンド

adbarchivechunkコマンド

adbunarchivechunkコマンド

adbreorgsystemdataコマンド

adbsyndictコマンド

UTi

見積もり期間中に実行したコマンドごとのデータベース更新スレッド数

コマンドごとのデータベース更新スレッド数は，次に示す計算式から求めてください。

計算式（adbimportコマンドを実行したとき）

計算式（adbidxrebuildコマンドを実行したとき）

計算式（adbmodareaコマンドを実行したとき）

計算式（adbmergechunkコマンドを実行したとき）

計算式（adbgetcstコマンドを実行したとき）

計算式（adbchgchunkcommentコマンドを実行したとき）

計算式（adbchgchunkstatusコマンドを実行したとき）

計算式（adbarchivechunkコマンドを実行したとき）

計算式（adbunarchivechunkコマンドを実行したとき）

計算式（adbreorgsystemdataコマンドを実行したとき）

計算式（adbsyndictコマンドを実行したとき）

メモ

各コマンドについては，マニュアルHADB　コマンドリファレンスを参照してください。

6.12.2　ユーザログファイルの容量の求め方

ユーザログファイルには，データベースの更新処理時にデータベースの更新履歴情報であるユーザログが格納されます。ロールバック処理が発生した場合，HADBサーバはユーザログを使用してトランザクションを回復します。

ユーザログファイルの容量は次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

user_file_init_size

サーバ定義adb_log_usrfile_sizeオペランドの指定値

max_user_log

ユーザログの出力量が最も多いトランザクションのユーザログ容量（単位：バイト）

変数max_user_logを求める場合，まず，次に示す処理ごとにトランザクションのユーザログ容量を求めてください。その中で，最も大きいユーザログ容量の値を変数max_user_logに代入してください。

「6.12.3　定義系SQL実行時に出力されるユーザログ容量（変数max_user_log）の求め方」

「6.12.4　adbimportコマンド実行時に出力されるユーザログ容量（変数max_user_log）の求め方」

「6.12.5　adbidxrebuildコマンド実行時に出力されるユーザログ容量（変数max_user_log）の求め方」

「6.12.6　adbmergechunkコマンド実行時に出力されるユーザログ容量（変数max_user_log）の求め方」

「6.12.7　データベースの更新時に出力されるユーザログ容量（変数max_user_log）の求め方」

「6.12.8　TRUNCATE TABLE文実行時に出力されるユーザログ容量（変数max_user_log）の求め方」

「6.12.9　PURGE CHUNK文実行時に出力されるユーザログ容量（変数max_user_log）の求め方」

「6.12.10　adbchgchunkstatusコマンド実行時に出力されるユーザログ容量（変数max_user_log）の求め方」

「6.12.11　adbarchivechunkコマンド実行時に出力されるユーザログ容量（変数max_user_log）の求め方」

「6.12.12　adbunarchivechunkコマンド実行時に出力されるユーザログ容量（変数max_user_log）の求め方」

「6.12.13　adbreorgsystemdataコマンド実行時に出力されるユーザログ容量（変数max_user_log）の求め方」

「6.12.14　更新行のカラム化機能のメンテナンス処理に必要なユーザログ容量（変数max_user_log）の求め方」

ヒント

ユーザログはトランザクション処理が終了したときに削除されます。そのため，ユーザログの出力量が最も多いトランザクションのユーザログ容量を基準にして計算してください。

メモ

上記以外のSQL文およびコマンドについては，出力されるユーザログ容量がとても少ないため，見積もりは不要です。

6.12.3　定義系SQL実行時に出力されるユーザログ容量（変数max_user_log）の求め方

ここでは，次に示す定義系SQLを実行したときに出力されるユーザログ容量の求め方について説明します。

CREATE TABLE文（実表の定義）

CREATE INDEX文（インデクスの定義）

ALTER TABLE文のCHANGE OPTION CHUNK（チャンク数の最大値の変更）

ALTER TABLE文（アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更する場合）

DROP USER文（HADBユーザの削除）

DROP SCHEMA文（スキーマの削除）

DROP TABLE文（実表の削除）

DROP INDEX文（インデクスの削除）

REVOKE文のSCHEMA（スキーマ操作権限の取り消し）

なお，上記以外の定義系SQLについては，ユーザログファイルの容量を超えるユーザログは出力されないため，見積もりは不要です。

(1)　CREATE TABLE文実行時に出力されるユーザログ容量の求め方

CREATE TABLE文実行時に出力されるユーザログ容量（変数CRTTBLLOG）は，次に示す計算式から求めてください。

計算式（単位：バイト）

変数の説明

dbarea_file_num：定義対象表を格納するデータ用DBエリアのDBエリアファイル数

page_size：定義対象表を格納するデータ用DBエリアのページサイズ（単位：バイト）

(2)　CREATE INDEX文実行時に出力されるユーザログ容量の求め方

CREATE INDEX文実行時に出力されるユーザログ容量（変数CRTIDXLOG）は，次に示す計算式から求めてください。

計算式（単位：バイト）

変数の説明

dbarea_file_num：定義対象インデクスを格納するデータ用DBエリアのDBエリアファイル数

page_size：定義対象インデクスを格納するデータ用DBエリアのページサイズ（単位：バイト）

(3)　ALTER TABLE文のCHANGE OPTION CHUNK実行時に出力されるユーザログ容量の求め方

ALTER TABLE文のCHANGE OPTION CHUNK実行時に出力されるユーザログ容量は，「(7)　DROP TABLE文実行時に出力されるユーザログ容量の求め方」を参照して求めてください。その際，変数SGDATAに0を仮定してください。

また，処理対象表にインデクスが定義されている場合は，定義されているインデクスの数だけ，「(8)　DROP INDEX文実行時に出力されるユーザログ容量の求め方」を参照して求めてください。その際，変数SGIDXに0を仮定してください。

それぞれで求めた値の合計値が，ALTER TABLE文のCHANGE OPTION CHUNK実行時に出力されるユーザログ容量になります。

(4)　ALTER TABLE文実行時に出力されるユーザログ容量の求め方（アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更する場合）

ALTER TABLE文でアーカイブマルチチャンク表をレギュラーマルチチャンク表に変更すると，ロケーション表とロケーション表に定義されたインデクスが削除されます。そのため，ロケーション表とロケーション表に定義されたインデクスが削除されるときに出力されるユーザログ容量を求める必要があります。

なお，ロケーション表とロケーション表に定義されたインデクスは，処理対象のアーカイブマルチチャンク表と同じデータ用DBエリアに格納されています。

アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更するために，ALTER TABLE文を実行する場合に出力されるユーザログ容量（変数ALTTBLLOG）は，次に示す計算式から求めてください。

計算式（単位：バイト）

ALTTBLLOG = DRPLTBLLOG + DRPLIDXLOG

変数の説明

DRPLTBLLOG

ロケーション表の削除ログ

次に示す計算式から求めてください。

計算式（単位：バイト）

dbarea_file_num

削除対象のロケーション表を格納するデータ用DBエリアのデータ用DBエリアファイルの数

SGDATA

削除対象のロケーション表を格納するデータ用DBエリアのセグメント数

SEGBF

削除対象のロケーション表を格納するデータ用DBエリアのセグメントブロック化係数

page_size

削除対象のロケーション表を格納するデータ用DBエリアのページサイズ（単位：バイト）

usrlog_file_num

次に示す計算式から求めてください。

DRPLIDXLOG

ロケーション表に定義されたインデクスの削除ログ

次に示す計算式から求めてください。

計算式（単位：バイト）

dbarea_file_num

削除対象のロケーション表に定義されたインデクスを格納するデータ用DBエリアのデータ用DBエリアファイルの数

SGIDX

削除対象のロケーション表に定義されたインデクスを格納するデータ用DBエリアのセグメント数

SEGBF

削除対象のロケーション表に定義されたインデクスを格納するデータ用DBエリアのセグメントブロック化係数

page_size

削除対象のロケーション表に定義されたインデクスを格納するデータ用DBエリアのページサイズ（単位：バイト）

usrlog_file_num

次に示す計算式から求めてください。

データ用DBエリアのセグメント数，およびセグメントブロック化係数については，「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」を参照してください。

アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更するために，ALTER TABLE文を実行する場合に必要なユーザログファイル数は，「6.12.15　ユーザログファイル数の求め方」の「(1)　ユーザログファイル数を見積もる必要があるSQL文」を参照してください。

(5)　DROP USER文実行時に出力されるユーザログ容量の求め方

削除対象のHADBユーザが所有するスキーマがある場合，「(6)　DROP SCHEMA文実行時に出力されるユーザログ容量の求め方」を参照して，削除するスキーマについてユーザログ容量を求めてください。

(6)　DROP SCHEMA文実行時に出力されるユーザログ容量の求め方

削除対象のスキーマに表を定義している場合は，「(7)　DROP TABLE文実行時に出力されるユーザログ容量の求め方」を参照して，削除するすべての表について，それぞれユーザログ容量を求めてください。そのあとで，その合計値を求めてください。

削除対象のスキーマに表を定義していない場合は，ユーザログファイルの容量を超えるユーザログは出力されないため，見積もりは不要です。

(7)　DROP TABLE文実行時に出力されるユーザログ容量の求め方

DROP TABLE文実行時に出力されるユーザログ容量（変数DRPTBLLOG）は，次に示す計算式から求めてください。

計算式（単位：バイト）

変数の説明

dbarea_file_num

削除対象表を格納するデータ用DBエリアのDBエリアファイル数

SGDATA

削除対象表を格納するデータ用DBエリアのセグメント数

SEGBF

削除対象表を格納するデータ用DBエリアのセグメントブロック化係数

page_size

削除対象表を格納するデータ用DBエリアのページサイズ（単位：バイト）

usrlog_file_num

次に示す計算式から求めてください。

データ用DBエリアのセグメント数，およびセグメントブロック化係数については，「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」を参照してください。

DROP TABLE文実行時に必要なユーザログファイル数は，「6.12.15　ユーザログファイル数の求め方」の「(1)　ユーザログファイル数を見積もる必要があるSQL文」を参照してください。

重要

削除対象の表にインデクスが定義されている場合は，「(8)　DROP INDEX文実行時に出力されるユーザログ容量の求め方」で求めた値を加算してください。

また，削除対象の表がアーカイブマルチチャンク表の場合は，「(4)　ALTER TABLE文実行時に出力されるユーザログ容量の求め方（アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更する場合）」で求めた値を加算してください。

(8)　DROP INDEX文実行時に出力されるユーザログ容量の求め方

DROP INDEX文実行時に出力されるユーザログ容量（変数DRPIDXLOG）は，次に示す計算式から求めてください。

計算式（単位：バイト）

変数の説明

dbarea_file_num

削除対象インデクスを格納するデータ用DBエリアのDBエリアファイル数

SGIDX

削除対象インデクスを格納するデータ用DBエリアのセグメント数

SEGBF

削除対象インデクスを格納するデータ用DBエリアのセグメントブロック化係数

page_size

削除対象インデクスを格納するデータ用DBエリアのページサイズ（単位：バイト）

usrlog_file_num

次に示す計算式から求めてください。

データ用DBエリアのセグメント数，およびセグメントブロック化係数については，「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」を参照してください。

DROP INDEX文実行時に必要なユーザログファイル数は，「6.12.15　ユーザログファイル数の求め方」の「(1)　ユーザログファイル数を見積もる必要があるSQL文」を参照してください。

(9)　REVOKE文のSCHEMA実行時に出力されるユーザログ容量の求め方

REVOKE文のSCHEMA実行時に出力されるユーザログ容量は，「(6)　DROP SCHEMA文実行時に出力されるユーザログ容量の求め方」を参照して求めてください。

6.12.4　adbimportコマンド実行時に出力されるユーザログ容量（変数max_user_log）の求め方

adbimportコマンド実行時に出力されるユーザログ容量は，次に示す計算式から求めてください。

計算式（単位：バイト）

変数の説明

TBLPRGLOG

インポート対象表の行データ削除ログ

「(1)　変数TBLPRGLOGの求め方」を参照してください。

IDXPRGLOG

インポート対象表のインデクスデータ削除ログ

「(2)　変数IDXPRGLOGの求め方」を参照してください。

IMPTBLLOG

インポート対象表の行データ格納ログ

「(3)　変数IMPTBLLOGの求め方」を参照してください。

IMPSTBLLOG

STATUS_CHUNKS表の更新ログ

「(4)　変数IMPSTBLLOGの求め方」を参照してください。

IMPRNGIDXLOG

インポート対象表のレンジインデクスデータ作成ログ

「(5)　変数IMPRNGIDXLOGの求め方」を参照してください。

IMPIDXLOG

インポート対象表のB-treeインデクスデータ作成ログ

「(6)　変数IMPIDXLOGの求め方」を参照してください。

IMPTIXLOG

インポート対象表のテキストインデクスデータ作成ログ

「(7)　変数IMPTIXLOGの求め方」を参照してください。

(1)　変数TBLPRGLOGの求め方

変数TBLPRGLOGは次に示す計算式から求めてください。

ただし，次に示す場合，見積もりは不要です。TBLPRGLOGに0を代入してください。

シングルチャンク表に対して，-dオプションを省略してadbimportコマンドを実行する場合

マルチチャンク表に対して，-dオプションおよび-bオプションを省略してadbimportコマンドを実行する場合

マルチチャンク表に対して，-dオプションを省略して，かつ-bオプションを指定してadbimportコマンドを実行する場合

計算式（単位：バイト）

変数の説明

dbarea_file_num

表を格納するデータ用DBエリアのDBエリアファイル数

SGTBL

表を格納するセグメント数

SEGBF

表を格納するデータ用DBエリアのセグメントブロック化係数

page_size

表を格納するデータ用DBエリアのページサイズ（単位：バイト）

usrlog_file_num

次に示す計算式から求めてください。

データ用DBエリアのセグメント数，およびセグメントブロック化係数については，「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」を参照してください。

adbimportコマンド実行時に必要なユーザログファイル数は，「6.12.15　ユーザログファイル数の求め方」の「(2)　ユーザログファイル数を見積もる必要があるコマンド」を参照してください。

(2)　変数IDXPRGLOGの求め方

変数IDXPRGLOGは次に示す計算式から求めてください。

ただし，次に示す場合，見積もりは不要です。IDXPRGLOGに0を代入してください。

シングルチャンク表に対して，-dオプションを省略してadbimportコマンドを実行する場合

マルチチャンク表に対して，-dオプションおよび-bオプションを省略してadbimportコマンドを実行する場合

マルチチャンク表に対して，-dオプションを省略して，かつ-bオプションを指定してadbimportコマンドを実行する場合

計算式（単位：バイト）

変数の説明

idx_num

削除対象の表に定義されたインデクスの数

dbarea_file_num（i）

インデクスを格納するデータ用DBエリアのDBエリアファイル数

SGIDX（i）

インデクスごとの，インデクスを格納するセグメント数

SEGBF（i）

インデクスごとのデータ用DBエリアのセグメントブロック化係数

page_size（i）

インデクスごとのデータ用DBエリアのページサイズ（単位：バイト）

usrlog_file_num

次に示す計算式から求めてください。

データ用DBエリアのセグメント数，およびセグメントブロック化係数については，「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」を参照してください。

adbimportコマンド実行時に必要なユーザログファイル数は，「6.12.15　ユーザログファイル数の求め方」の「(2)　ユーザログファイル数を見積もる必要があるコマンド」を参照してください。

(3)　変数IMPTBLLOGの求め方

変数IMPTBLLOGは次に示す計算式から求めてください。

計算式（単位：バイト）

変数の説明

dbarea_file_num

表を格納するデータ用DBエリアのDBエリアファイル数

SGDATA

インポート処理で確保する，表を格納するセグメント数

SEGBF

表を格納するデータ用DBエリアのセグメントブロック化係数

page_size

表を格納するデータ用DBエリアのページサイズ（単位：バイト）

imp_load_rthd

次に示す計算式から求めてください。

インポートオプションadb_import_rthd_numの指定値－1

インポートオプションadb_import_rthd_numを省略した場合は，インポートオプションadb_import_rthd_numを省略したときに使用されるスレッド数の値を代入してください。詳細については，マニュアルHADB　コマンドリファレンスのadbimport（データのインポート）を参照してください。

データ用DBエリアのセグメント数，およびセグメントブロック化係数については，「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」を参照してください。また，確保するセグメント数については，インポートするデータサイズを基に見積もってください。

(4)　変数IMPSTBLLOGの求め方

変数IMPSTBLLOGは次に示す計算式から求めてください。

ただし，次に示す場合，見積もりは不要です。IMPSTBLLOGに0を代入してください。

シングルチャンク表に対して，adbimportコマンドを実行する場合

マルチチャンク表に対して，-dオプションおよび-bオプションを省略してadbimportコマンドを実行する場合

計算式（単位：バイト）

IMPSTBLLOG＝ IMPSTBLPRGLOG＋IMPSTBLUPDLOG

次に示す場合，IMPSTBLPRGLOGだけ見積もりが必要です。

マルチチャンク表に対して，-dオプションを指定してadbimportコマンドを実行する場合

また，次に示す場合，IMPSTBLUPDLOGだけ見積もりが必要です。

マルチチャンク表に対して，-dオプションを省略して，かつ-bオプションを指定してadbimportコマンドを実行する場合

変数の説明

IMPSTBLPRGLOG

STATUS_CHUNKS表のデータを削除，追加するときの更新ログ

次に示す計算式から求めてください。

計算式（単位：バイト）

chunk_num

作成されたチャンク数

IMPSTBLUPDLOG

STATUS_CHUNKS表のデータを更新，追加するときの更新ログ

次に示す値を代入してください。

値（単位：バイト）

IMPSTBLUPDLOG＝ 1,464

(5)　変数IMPRNGIDXLOGの求め方

変数IMPRNGIDXLOGは次に示す計算式から求めてください。

計算式（単位：バイト）

変数の説明

n

インポート対象の表に定義されたレンジインデクスの数

IMPRNGIDX(i)LOG

インポート対象の表でi番目に定義されたレンジインデクスのログサイズ

次に示す計算式から求めてください。ただし，adbimportコマンド実行時の-dオプションの指定有無（作成モードまたは追加モード）によって計算式が異なります。

■計算式（-dオプションを指定する場合（作成モードの場合））（単位：バイト）

page_size(i)

インポート対象表でi番目に定義されたレンジインデクスを格納するデータ用DBエリアのページサイズ（単位：バイト）

DIRRNGPGNO(i)

インポート対象表でi番目に定義されたレンジインデクスの管理部のページ数

次に示す計算式から求めてください。

dbarea_file_num(i)

レンジインデクスを格納するデータ用DBエリアのDBエリアファイル数（単位：個）

SGRNGDATA(i)

データインポート処理で確保するレンジインデクスのセグメント数

「5.8.6　レンジインデクスを格納するセグメント数の求め方」を参照してください。

SEGBF(i)

レンジインデクスを格納するデータ用DBエリアのセグメントブロック化係数

「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」の変数「SEGBF」を参照してください。

page_size(i)

インポート対象表でi番目に定義されたレンジインデクスを格納するデータ用DBエリアのページサイズ（単位：バイト）

■計算式（-dオプションを省略する場合（追加モードの場合））（単位：バイト）

DIRRNGPGNO(i)

インポート対象表でi番目に定義されたレンジインデクスの管理部のページ数

■計算式（-dオプションを指定する場合（作成モードの場合））にある変数DIRRNGPGNO（i）を参照してください。

OLDSGRNGDATA

データインポートする前に確保してあったレンジインデクスを格納するデータ用DBエリアのセグメント数

「5.8.6　レンジインデクスを格納するセグメント数の求め方」の変数RS（i）を参照してください。

SEGSIZE(i)

インポート対象表でi番目に定義されたレンジインデクスを格納するデータ用DBエリアのセグメントサイズ

次に示す計算式から求めてください。

SEGSIZE(i)＝ 1セグメントの容量（単位：バイト）÷page_size(i)

page_size(i)

インポート対象表でi番目に定義されたレンジインデクスを格納するデータ用DBエリアのページサイズ（単位：バイト）

(6)　変数IMPIDXLOGの求め方

変数IMPIDXLOGは次に示す計算式から求めてください。

計算式（単位：バイト）

変数の説明

n

インポート対象の表に定義されたB-treeインデクスの数

IMPIDX（i）LOG

インポート対象の表でi番目に定義されたB-treeインデクスのログサイズ

次に示す計算式から求めてください。

計算式（単位：バイト）

unique_key_num

ユニークなキー値の数

・adbimportコマンドに-dオプションを指定した場合は0としてください。

・上記以外の場合は，インポート対象表にi番目に定義されたB-treeインデクスについて，インポートするデータで生成されるキー値から重複を排除した上で，インデクスにすでに格納されているキー値の最小値以上，かつ最大値以下である値の数としてください。

page_size（i）

B-treeインデクスを格納するデータ用DBエリアのページサイズ（単位：バイト）

imp_dividx_rthd

次に示す計算式から求めてください。

インポートオプションadb_import_rthd_numの指定値－1

インポートオプションadb_import_rthd_numを省略した場合は，インポートオプションadb_import_rthd_numを省略したときに使用されるスレッド数の値を代入してください。詳細については，マニュアルHADB　コマンドリファレンスのadbimport（データのインポート）を参照してください。

DIRPGNO（i）

インポート対象表でi番目に定義されたB-treeインデクスの管理部のページ数

次に示す計算式から求めてください。

計算式

dbarea_file_num（i）

B-treeインデクスを格納するデータ用DBエリアのDBエリアファイル数

SGIDX（i）

インポート処理で確保する，B-treeインデクスを格納するセグメント数

SEGBF（i）

B-treeインデクスを格納するデータ用DBエリアのセグメントブロック化係数

データ用DBエリアのセグメント数，およびセグメントブロック化係数については，「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」を参照してください。また，確保するセグメント数については，インポートするデータサイズを基に見積もってください。

(7)　変数IMPTIXLOGの求め方

変数IMPTIXLOGは次に示す計算式から求めてください。

計算式（単位：バイト）

変数の説明

n

インポート対象の表に定義されたテキストインデクスの数

IMPTIX(i)LOG

インポート対象の表でi番目に定義されたテキストインデクスのログサイズ

次に示す計算式から求めてください。ただし，adbimportコマンド実行時の-dオプションの指定有無（作成モードまたは追加モード）によって計算式が異なります。

■計算式（-dオプションを指定する場合（作成モードの場合））（単位：バイト）

page_size(i)

インポート対象表でi番目に定義されたテキストインデクスを格納するデータ用DBエリアのページサイズ（単位：バイト）

DIRTIXPGNO(i)

インポート対象表でi番目に定義されたテキストインデクスの管理部のページ数

次に示す計算式から求めてください。

dbarea_file_num(i)

テキストインデクスを格納するデータ用DBエリアのDBエリアファイル数（単位：個）

SGTXTDATA(i)

データインポート処理で確保するテキストインデクスのセグメント数

SEGBF(i)

テキストインデクスを格納するデータ用DBエリアのセグメントブロック化係数

「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」の変数「SEGBF」を参照してください。

■計算式（-dオプションを省略する場合（追加モードの場合））（単位：バイト）

DIRTIXPGNO(i)

インポート対象表でi番目に定義されたテキストインデクスの管理部のページ数

■計算式（-dオプションを指定する場合（作成モードの場合））にある変数DIRTIXPGNO(i)を参照してください。

OLDPGTIXDATA(i)

データインポートする前に確保してあったテキストインデクスの格納ページ数

次に示す計算式から求めてください。

OLDPGTIXDATA(i)＝↑TIP_STRSEG(i)↑＋↑TIP_APPSEG(i)↑

TIP_STRSEG(i)

「5.8.5　テキストインデクスのセグメントごとの格納ページ数の求め方」の「(1)　文字列管理部用のセグメントで使用する格納ページ数（変数TIP_STRSEG（i））の求め方」を参照してください。

TIP_APPSEG(i)

「5.8.5　テキストインデクスのセグメントごとの格納ページ数の求め方」の「(2)　出現情報管理部用のセグメントで使用する格納ページ数（変数TIP_APPSEG（i））の求め方」を参照してください。

6.12.5　adbidxrebuildコマンド実行時に出力されるユーザログ容量（変数max_user_log）の求め方

adbidxrebuildコマンド実行時に出力されるユーザログ容量は，次に示す計算式から求めてください。

計算式（単位：バイト）

変数の説明

IDXPRGLOG

インデクス再作成対象表のインデクスデータ削除ログ

「(1)　変数IDXPRGLOGの求め方」を参照してください。

TBLPRGLOG

対象表でバックグラウンドインポートを実行した場合の行データ削除ログ

「(2)　変数TBLPRGLOGの求め方」を参照してください。

IDXMAKELOG

インデクス再作成対象表のインデクスデータ作成ログ

「(3)　変数IDXMAKELOGの求め方」を参照してください。

注※

変数TBLPRGLOGは，-bオプションを指定したadbimportコマンドが中断したあとに，--forceオプションを指定してadbidxrebuildコマンドを実行する場合に求めてください。

(1)　変数IDXPRGLOGの求め方

変数IDXPRGLOGは次に示す計算式から求めてください。

計算式（単位：バイト）

変数の説明

idx_num

インデクス再作成対象のインデクスの数

dbarea_file_num（i）

インデクスを格納するデータ用DBエリアのDBエリアファイル数

SGIDX（i）

インデクスを格納するセグメント数

SEGBF（i）

インデクスを格納するデータ用DBエリアのセグメントブロック化係数

page_size（i）

インデクスを格納するデータ用DBエリアのページサイズ（単位：バイト）

usrlog_file_num

次に示す計算式から求めてください。

データ用DBエリアのセグメント数，およびセグメントブロック化係数については，「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」を参照してください。

adbidxrebuildコマンド実行時に必要なユーザログファイル数は，「6.12.15　ユーザログファイル数の求め方」の「(2)　ユーザログファイル数を見積もる必要があるコマンド」を参照してください。

(2)　変数TBLPRGLOGの求め方

変数TBLPRGLOGは次に示す計算式から求めてください。

計算式（単位：バイト）

変数の説明

dbarea_file_num

表を格納するデータ用DBエリアのDBエリアファイル数

SGDATA

バックグラウンドインポートで確保する表のセグメント数

バックグラウンドインポートで格納するデータ量を基に，バックグラウンドインポートで確保する表のセグメント数を見積もってください。

SEGBF

表を格納するデータ用DBエリアのセグメントブロック化係数

page_size

表を格納するデータ用DBエリアのページサイズ（単位：バイト）

usrlog_file_num

次に示す計算式から求めてください。

データ用DBエリアのセグメント数，およびセグメントブロック化係数については，「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」を参照してください。

adbidxrebuildコマンド実行時に必要なユーザログファイル数は，「6.12.15　ユーザログファイル数の求め方」の「(2)　ユーザログファイル数を見積もる必要があるコマンド」を参照してください。

(3)　変数IDXMAKELOGの求め方

変数IDXMAKELOGは次に示す計算式から求めてください。

計算式（単位：バイト）

変数の説明

n

インデクス再作成対象のインデクスの数

IDXMAKE（i）LOG

インデクス再作成対象となるi番目のインデクスのログサイズ

次に示す計算式から求めてください。

計算式（単位：バイト）

page_size（i）

インデクス再作成対象となるi番目のインデクスを格納するデータ用DBエリアのページサイズ（単位：バイト）

rbld_dividx_rthd

次に示す計算式から求めてください。

↓（インデクス再作成オプションadb_idxrebuild_rthd_numの指定値－1）÷2↓

インデクス再作成オプションadb_idxrebuild_rthd_numを省略した場合は，インデクス再作成オプションadb_idxrebuild_rthd_numを省略したときに使用されるスレッド数の値を代入してください。詳細については，マニュアルHADB　コマンドリファレンスのadbidxrebuild（インデクスの再作成）を参照してください。

DIRPGNO（i）

インデクス再作成対象となるi番目のインデクスの管理部のページ数

次に示す計算式から求めてください。

計算式

dbarea_file_num（i）

インデクスを格納するデータ用DBエリアのDBエリアファイル数

SGIDX（i）

インデクス再作成処理でチャンクごとに確保する，インデクスを格納するセグメント数の最大値

次に示す計算式から求めてください。

計算式

m

インデクス再作成対象のインデクスの作成したチャンク数

CHUNKSGIDX（j）LOG

インデクス再作成対象となるインデクスのチャンクごとに確保するインデクスを格納するセグメント数

SEGBF（i）

インデクスを格納するデータ用DBエリアのセグメントブロック化係数

データ用DBエリアのセグメント数，およびセグメントブロック化係数については，「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」を参照してください。

6.12.6　adbmergechunkコマンド実行時に出力されるユーザログ容量（変数max_user_log）の求め方

adbmergechunkコマンド実行時に出力されるユーザログ容量は，次に示す計算式から求めてください。

計算式（単位：バイト）

変数の説明

MERPRGLOG

マージチャンク対象表に定義されているインデクスデータの削除ログ

「(1)　変数MERPRGLOGの求め方」を参照してください。

MERMAKELOG

マージチャンク対象表に定義されているインデクスデータの作成ログ

「(2)　変数MERMAKELOGの求め方」を参照してください。

MERLOCLOG

ロケーション表の更新ログ

「(3)　変数MERLOCLOGの求め方」を参照してください。

(1)　変数MERPRGLOGの求め方

変数MERPRGLOGは次に示す計算式から求めてください。

計算式（単位：バイト）

変数の説明

idx_num

マージチャンク対象表に定義されているインデクスの数

dbarea_file_num（i）

各インデクスを格納するデータ用DBエリアのDBエリアファイル数

SGIDX（i）

各インデクスを格納するセグメント数

SEGBF（i）

各インデクスを格納するデータ用DBエリアのセグメントブロック化係数

page_size（i）

各インデクスを格納するデータ用DBエリアのページサイズ（単位：バイト）

usrlog_file_num

次に示す計算式から求めてください。

データ用DBエリアのセグメント数，およびセグメントブロック化係数については，「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」を参照してください。

adbmergechunkコマンド実行時に必要なユーザログファイル数は，「6.12.15　ユーザログファイル数の求め方」の「(2)　ユーザログファイル数を見積もる必要があるコマンド」を参照してください。

(2)　変数MERMAKELOGの求め方

変数MERMAKELOGは次に示す計算式から求めてください。

計算式（単位：バイト）

変数の説明

n

マージチャンク対象表に定義されているインデクスの数

MERMAKE（i）LOG

マージチャンク対象表に定義されているi番目のインデクスのログサイズ

次に示す計算式から求めてください。

計算式（単位：バイト）

page_size（i）

マージチャンク対象表に定義されているi番目のインデクスを格納するデータ用DBエリアのページサイズ（単位：バイト）

merc_dividx_rthd

次に示す計算式から求めてください。

↓（マージチャンクオプションadb_mergechunk_rthd_numの指定値－1）÷2↓

マージチャンクオプションadb_mergechunk_rthd_numを省略した場合は，マージチャンクオプションadb_mergechunk_rthd_numを省略したときに使用されるスレッド数の値を代入してください。詳細については，マニュアルHADB　コマンドリファレンスのadbmergechunk（チャンクのマージ）を参照してください。

DIRPGNO（i）

マージチャンク対象表に定義されているi番目のインデクスの管理部のページ数

次に示す計算式から求めてください。

計算式

dbarea_file_num（i）

インデクスを格納するデータ用DBエリアのDBエリアファイル数

SGIDX（i）

マージチャンク処理（インデクス再作成時）でチャンクごとに確保するインデクスのセグメント数の最大値

次に示す計算式から求めてください。

計算式

m

マージチャンク対象のチャンク数

CHUNKSGIDX（j）

再作成対象となるインデクスのチャンクごとに確保するインデクスのセグメント数

SEGBF（i）

インデクスを格納するデータ用DBエリアのセグメントブロック化係数

データ用DBエリアのセグメント数，およびセグメントブロック化係数については，「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」を参照してください。

(3)　変数MERLOCLOGの求め方

変数MERLOCLOGは，次に示す計算式から求めてください。

なお，処理対象表がアーカイブマルチチャンク表以外の表である場合は，0を代入してください。また，処理対象のチャンクがアーカイブ状態ではない場合も，0を代入してください。

計算式（単位：バイト）

変数の説明

UPDLOG

「6.12.7　データベースの更新時に出力されるユーザログ容量（変数max_user_log）の求め方」のUPDATE文（行の更新）を実行した場合に出力されるユーザログ容量の計算式から求めてください。ただし，次に示す変数については，代入する値が異なります。対象の変数と代入する値を次に示します。

VRWLOG

0を代入してください。

TIXSLOG

0を代入してください。

IDXSLOG

変数IDXSLOGを求める場合，「6.12.7　データベースの更新時に出力されるユーザログ容量（変数max_user_log）の求め方」の「(3)　B-treeインデクスユーザログ容量の求め方」を参照してください。ただし，次に示す変数については，代入する値が異なります。対象の変数と代入する値を次に示します。

idx_num

1を代入してください。

IDXLOG(i)

次に示す計算式から求めてください。

計算式

SPLITLOG(i)

「6.12.7　データベースの更新時に出力されるユーザログ容量（変数max_user_log）の求め方」の「(3)　B-treeインデクスユーザログ容量の求め方」の変数「SPLITLOG（i）」の計算式（更新対象行のインデクスキーの重複数が256以上の場合）を参照して求めてください。

LROWNUM

adbarchivechunkコマンドで作成されるアーカイブファイル数（単位：個）

「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」の「(f)　変数SGROWTBLおよびPGROWTBLの求め方（マルチチャンク表の場合）」にある変数LROWNUMの計算式から求めてください。ただし，次に示す変数については，代入する値が異なります。対象の変数と代入する値を次に示します。

archive_chunk_num

0を代入してください。

merge_chunk_num

1を代入してください。

upd_row_num

上記の変数LROWNUMで求めた値を代入してください。

SGMTLOG

次に示す計算式から求めてください。

計算式

LBP

「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」の「(f)　変数SGROWTBLおよびPGROWTBLの求め方（マルチチャンク表の場合）」にある変数LBP(i)の計算式から求めてください。ただし，次に示す変数については，代入する値が異なります。対象の変数と代入する値を次に示します。

LROWNUM

上記の変数LROWNUMで求めた値を代入してください。

SEGSIZE

アーカイブマルチチャンク表を格納したデータ用DBエリアのセグメントサイズ

次に示す計算式から求めてください。

計算式（単位：ページ数）

SEGSIZE＝ 1セグメントの容量（単位：バイト）÷page_size

page_size

アーカイブマルチチャンク表を格納するデータ用DBエリアのページサイズ（単位：バイト）

6.12.7　データベースの更新時に出力されるユーザログ容量（変数max_user_log）の求め方

INSERT文（行の挿入），DELETE文（行の削除）およびUPDATE文（行の更新）の実行時に出力されるユーザログ容量の求め方について説明します。

まず，「(1)　基本行ユーザログ容量の求め方」から「(6)　セグメント割り当て時のユーザログ容量の求め方」までのユーザログ容量をそれぞれ求めてください。そのあとで，計算式1〜計算式3に次に示す変数を代入して計算してください。

計算式1（INSERT文を実行した場合に出力されるユーザログ容量）（単位：バイト）

計算式2（DELETE文を実行した場合に出力されるユーザログ容量）（単位：バイト）

計算式3（UPDATE文を実行した場合に出力されるユーザログ容量）（単位：バイト）

変数の説明

BRWLOG

基本行ユーザログ容量（単位：バイト）

BRWLOGについては，「(1)　基本行ユーザログ容量の求め方」を参照して求めてください。

VRWLOG

分岐行ユーザログ容量（単位：バイト）

VRWLOGについては，「(2)　分岐行ユーザログ容量の求め方」を参照して求めてください。

COLUMN_DELLOG

カラムストア表の無効情報管理用ページのログ容量（単位：バイト）

COLUMN_DELLOGについては，「(5)　カラムストア表の無効情報管理用ページのログ容量の求め方」を参照して求めてください。

IDXSLOG

表に定義したすべてのB-treeインデクスユーザログ容量の合計（単位：バイト）

IDXSLOGについては，「(3)　B-treeインデクスユーザログ容量の求め方」を参照して求めてください。

TIXSLOG

表に定義したすべてのテキストインデクスユーザログ容量の合計（単位：バイト）

TIXSLOGについては，「(4)　テキストインデクスユーザログ容量の求め方」を参照して求めてください。

SGMTLOG

セグメント割り当て時のユーザログ容量（単位：バイト）

SGMTLOGについては，「(6)　セグメント割り当て時のユーザログ容量の求め方」を参照して求めてください。

ins_row_num

INSERT文で挿入した行数

del_row_num

DELETE文で削除した行数

upd_row_num

UPDATE文で更新した行数

(1)　基本行ユーザログ容量の求め方

基本行ユーザログ容量（変数BRWLOG）を次の表に示します。

表6‒25　基本行ユーザログ容量（変数BRWLOG）

項番

操作内容

基本行ユーザログ容量（単位：バイト）

1

INSERT文

92

2

DELETE文

3

UPDATE文

184

(2)　分岐行ユーザログ容量の求め方

分岐行ユーザログ容量（変数VRWLOG）の計算式を次の表に示します。

表6‒26　分岐行ユーザログ容量（変数VRWLOG）

項番

操作内容

分岐行ユーザログ容量（単位：バイト）

1

INSERT文

2

DELETE文

項番1と同じです。

3

UPDATE文

変数の説明

var_num

分岐行として管理される列の列数（単位：個）

次に示す列の数を求めてください。

表オプションBRANCH ALLの指定ありの場合

VARCHAR型，およびVARBINARY型の列の数

表オプションBRANCH ALLの指定なしの場合

次のどれかに該当するVARCHAR型，およびVARBINARY型の列の数の合計

列定義BRANCHにYESを指定した列

定義長256バイト以上で列定義BRANCHにAUTOを指定した列

定義長256バイト以上で列定義BRANCHを省略した列

var_num_upd

分岐行として管理される列のうち，更新する列数（単位：個）

var_size

分岐行として管理される列の平均データサイズ（単位：バイト）

「5.8.2　行の種別ごとの格納ページ数の求め方」の「(2)　分岐行用ページ数（変数VP（i））の求め方」の「表5‒18　分岐行となる列のデータ長の一覧」を参照して求めてください。

page_size

データ用DBエリアのページサイズ（単位：バイト）

(3)　B-treeインデクスユーザログ容量の求め方

B-treeインデクスユーザログ容量（変数IDXSLOG）は，次に示す計算式から求めてください。

計算式

変数の説明

idx_num

更新対象列に定義されたB-treeインデクスの数

IDXLOG（i）

更新対象表に定義されたi番目のB-treeインデクスに関するインデクスユーザログのサイズ（単位：バイト）

IDXLOG（i）は次に示す表に従って求めてください。

項番

更新種別

更新対象キーの更新前重複数

IDXLOG（i）の値

1

INSERT文

0（新規キー）

2

1以上254以下

項番1と同じです。

3

255

4

256以上

項番1と同じです。

5

DELETE文

6

UPDATE文

注※

更新対象行の更新後データをINSERTした場合と同じログサイズとなります。

AFTERLOG（i）

更新対象行の更新後データの更新論理ログサイズ（単位：バイト）

BEFORELOG（i）

更新対象行の更新前データの更新論理ログサイズ（単位：バイト）

AFTERLOG（i）およびBEFORELOG（i）の長さは，次に示す計算式で求めてください。

計算式

idx_col_num

対象となるインデクスのインデクス構成列数（単位：個）

KEYSZDB

対象となるインデクスキーのデータベース格納長（単位：バイト）

AFTERLOG（i）の場合は更新後のインデクスキー，BEFORELOG（i）の場合は更新前のインデクスキーになります。

SPLITLOG（i）

インデクスページスプリットが発生した場合のユーザログ容量（単位：バイト）

対象となるインデクスで，インデクスページスプリットが発生した場合のユーザログ容量は，次に示す計算式で求めてください。

計算式（更新対象行のインデクスキーの重複数が254以下の場合）

計算式（更新対象行のインデクスキーの重複数が256以上の場合）

page_size

対象となるB-treeインデクスが定義されたデータ用DBエリアのページサイズ（単位：バイト）

idx_level

対象となるB-treeインデクスの段数（単位：個）

(4)　テキストインデクスユーザログ容量の求め方

テキストインデクスユーザログ容量（変数TIXSLOG）は，次に示す計算式から求めてください。

計算式

変数の説明

tix_num

更新対象列に定義されたテキストインデクスの数

TIXLOG(i)

更新対象表に定義されたi番目のテキストインデクスに関するテキストインデクスユーザログのサイズ（単位：バイト）

TIXLOG(i)は，次に示す表に従って求めてください。

表6‒27　TIXSLOG(i)の値

項番

更新種別

TIXLOG(i)の値

1

INSERT文

SPLITLOG(i)

2

UPDATE文

SPLITLOG(i)

SPLITLOG(i)

テキストインデクスのインデクスページスプリットのログサイズ

次に示す計算式から求めてください。

計算式（単位：バイト）

page_size

対象となるテキストインデクスが定義されたデータ用DBエリアのページサイズ（単位：バイト）

(5)　カラムストア表の無効情報管理用ページのログ容量の求め方

変数COLUMN_DELLOGは，次に示す計算式から求めてください。

なお，処理対象表がローストア表の場合は，0として見積もってください。

計算式（単位：バイト）

COLUMN_DELLOG ＝ 332＋2×page_size

変数の説明

page_size

カラムストア表が定義されているDBエリアのページサイズ（単位：バイト）

(6)　セグメント割り当て時のユーザログ容量の求め方

INSERT文およびUPDATE文を実行して行やインデクスエントリが追加されたときに，行やインデクスエントリを使用中ページに格納できない場合，未使用ページに割り当てます。また，カラムストア形式で格納された行をUPDATE文またはDELETE文を実行して無効化した場合，無効情報管理用ページに対象のデータが無効となったことを示す情報を格納できないときも，未使用ページに割り当てます。

この際，セグメント内のすべてのページを使用している場合は，新規セグメントを割り当てます。

新規セグメント割り当て時のユーザログ容量（変数SGMTLOG）を次の表に示します。

割り当てるセグメント数については，INSERT文で追加する行データおよびUPDATE文で更新する行データを基に，「5.8.1　データ用DBエリアの総ページ数の求め方」，「5.8.2　行の種別ごとの格納ページ数の求め方」，「5.8.3　B-treeインデクスのセグメントごとの格納ページ数の求め方」および「5.8.5　テキストインデクスのセグメントごとの格納ページ数の求め方」を参照して求めてください。

処理対象表がカラムストア表の場合は，DELETE文で削除する行データ数も考慮して見積もってください。

表6‒28　新規セグメント割り当て時のユーザログ容量

項番

操作内容

ユーザログ容量（単位：バイト）

1

INSERT文

2

UPDATE文

3

DELETE文※

注※

削除対象表がローストア表の場合は，0として見積もってください。

6.12.8　TRUNCATE TABLE文実行時に出力されるユーザログ容量（変数max_user_log）の求め方

TRUNCATE TABLE文実行時に出力されるユーザログ容量は，次に示す計算式から求めてください。

計算式（単位：バイト）

変数の説明

dbarea_file_num

処理対象の実表を格納するデータ用DBエリアのDBエリアファイル数

SGDATA

処理対象の実表を格納するデータ用DBエリアのセグメント数

SEGBF

処理対象の実表を格納するデータ用DBエリアのセグメントブロック化係数

page_size

処理対象の実表を格納するデータ用DBエリアのページサイズ（単位：バイト）

usrlog_file_num

次に示す計算式から求めてください。

TRUNCLOCLOG

ロケーション表の更新ログ

次に示す計算式から求めてください。

なお，処理対象表がアーカイブマルチチャンク表以外の表である場合は，0を代入してください。また，処理対象表にアーカイブ状態のチャンクが存在しない場合も，0を代入してください。

計算式（単位：バイト）

DELLOG

「6.12.7　データベースの更新時に出力されるユーザログ容量（変数max_user_log）の求め方」のDELETE文（行の削除）を実行した場合に出力されるユーザログ容量の計算式から求めてください。ただし，次に示す変数については，代入する値が異なります。対象の変数と代入する値を次に示します。

VRWLOG

0を代入してください。

IDXSLOG

変数IDXSLOGを求める場合，「6.12.7　データベースの更新時に出力されるユーザログ容量（変数max_user_log）の求め方」の「(3)　B-treeインデクスユーザログ容量の求め方」を参照してください。ただし，次に示す変数については，代入する値が異なります。対象の変数と代入する値を次に示します。

idx_num

1を代入してください。

IDXLOG(i)

次に示す計算式から求めてください。

計算式

LROWNUM

adbarchivechunkコマンドで作成されるアーカイブファイル数（単位：個）

「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」の「(f)　変数SGROWTBLおよびPGROWTBLの求め方（マルチチャンク表の場合）」にある変数LROWNUMの計算式から求めてください。ただし，次に示す変数については，代入する値が異なります。対象の変数と代入する値を次に示します。

archive_chunk_num

1を代入してください。

merge_chunk_num

0を代入してください。

LBP

「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」の「(f)　変数SGROWTBLおよびPGROWTBLの求め方（マルチチャンク表の場合）」にある変数LBP(i)の計算式から求めてください。ただし，次に示す変数については，代入する値が異なります。対象の変数と代入する値を次に示します。

LROWNUM

上記の変数LROWNUMで求めた値を代入してください。

page_size

アーカイブマルチチャンク表を格納するデータ用DBエリアのページサイズ（単位：バイト）

del_row_num

上記の変数LROWNUMで求めた値を代入してください。

データ用DBエリアのセグメント数，およびセグメントブロック化係数については，「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」を参照してください。

TRUNCATE TABLE文実行時に必要なユーザログファイル数は，「6.12.15　ユーザログファイル数の求め方」の「(1)　ユーザログファイル数を見積もる必要があるSQL文」を参照してください。

なお，TRUNCATE TABLE文を実行する実表にインデクスが定義されている場合は，インデクスごとに次に示す計算式を求めてください。そして，求めた値を上記の計算式の結果に加算してください。

計算式（実表にインデクスが定義されている場合）（単位：バイト）

変数の説明

dbarea_file_num

処理対象のインデクスを格納するデータ用DBエリアのDBエリアファイル数

SGIDX

処理対象のインデクスを格納するデータ用DBエリアのセグメント数

SEGBF

処理対象のインデクスを格納するデータ用DBエリアのセグメントブロック化係数

page_size

処理対象のインデクスを格納するデータ用DBエリアのページサイズ（単位：バイト）

usrlog_file_num

次に示す計算式から求めてください。

データ用DBエリアのセグメント数，およびセグメントブロック化係数については，「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」を参照してください。

TRUNCATE TABLE文実行時に必要なユーザログファイル数は，「6.12.15　ユーザログファイル数の求め方」の「(1)　ユーザログファイル数を見積もる必要があるSQL文」を参照してください。

6.12.9　PURGE CHUNK文実行時に出力されるユーザログ容量（変数max_user_log）の求め方

PURGE CHUNK文実行時に出力されるユーザログ容量は，次に示す計算式から求めてください。

計算式（単位：バイト）

変数の説明

chunk_num

1つのPURGE CHUNK文で削除するチャンク数

TBLCHPRGLOG(j)

実表のチャンクが保持する行データの削除ログ

削除するチャンクごとに，次に示す計算式で求めてください。

計算式（単位：バイト）

dbarea_file_num

実表を格納するデータ用DBエリアのDBエリアファイル数

SGCHTBL

実表のチャンクが確保するセグメント数

SEGBF

実表を格納するデータ用DBエリアのセグメントブロック化係数

page_size

実表を格納するデータ用DBエリアのページサイズ（単位：バイト）

usrlog_file_num

次に示す計算式から求めてください。

データ用DBエリアのセグメント数，およびセグメントブロック化係数については，「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」を参照してください。

PURGE CHUNK文実行時に必要なユーザログファイル数は，「6.12.15　ユーザログファイル数の求め方」の「(1)　ユーザログファイル数を見積もる必要があるSQL文」を参照してください。

IDXCHPRGLOG(j)

処理対象表のチャンクごとのインデクスデータの削除ログ

削除するチャンクごとに，次に示す計算式で求めてください。

計算式（単位：バイト）

idx_num

削除対象の実表に定義されたインデクスの数

dbarea_file_num(i)

インデクスを格納するデータ用DBエリアのDBエリアファイル数

SGCHIDX(i)

インデクスのチャンクが確保するセグメント数

SEGBF(i)

インデクスごとのデータ用DBエリアのセグメントブロック化係数

page_size(i)

インデクスごとのデータ用DBエリアのページサイズ（単位：バイト）

usrlog_file_num

次に示す計算式から求めてください。

データ用DBエリアのセグメント数，およびセグメントブロック化係数については，「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」を参照してください。

PURGE CHUNK文実行時に必要なユーザログファイル数は，「6.12.15　ユーザログファイル数の求め方」の「(1)　ユーザログファイル数を見積もる必要があるSQL文」を参照してください。

STBLUPDLOG

システム表（実表）からデータを削除したときの更新ログ

変数STBLUPDLOGには，480バイトを代入してください。

PRGLOCLOG

ロケーション表の更新ログ

次に示す計算式から求めてください。

なお，処理対象表がアーカイブマルチチャンク表以外の表である場合は，0を代入してください。また，処理対象のチャンクがアーカイブ状態ではない場合も，0を代入してください。

計算式（単位：バイト）

DELLOG

「6.12.7　データベースの更新時に出力されるユーザログ容量（変数max_user_log）の求め方」のDELETE文（行の削除）を実行した場合に出力されるユーザログ容量の計算式から求めてください。ただし，次に示す変数については，代入する値が異なります。対象の変数と代入する値を次に示します。

VRWLOG

0を代入してください。

IDXSLOG

変数IDXSLOGを求める場合，「6.12.7　データベースの更新時に出力されるユーザログ容量（変数max_user_log）の求め方」の「(3)　B-treeインデクスユーザログ容量の求め方」を参照してください。ただし，次に示す変数については，代入する値が異なります。対象の変数と代入する値を次に示します。

idx_num

1を代入してください。

IDXLOG(i)

次に示す計算式から求めてください。

計算式

LROWNUM

adbarchivechunkコマンドで作成されるアーカイブファイル数（単位：個）

「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」の「(f)　変数SGROWTBLおよびPGROWTBLの求め方（マルチチャンク表の場合）」にある変数LROWNUMの計算式から求めてください。ただし，次に示す変数については，代入する値が異なります。対象の変数と代入する値を次に示します。

archive_chunk_num

1を代入してください。

merge_chunk_num

0を代入してください。

LBP

「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」の「(f)　変数SGROWTBLおよびPGROWTBLの求め方（マルチチャンク表の場合）」にある変数LBP(i)の計算式から求めてください。ただし，次に示す変数については，代入する値が異なります。対象の変数と代入する値を次に示します。

LROWNUM

上記の変数LROWNUMで求めた値を代入してください。

page_size

アーカイブマルチチャンク表を格納するデータ用DBエリアのページサイズ（単位：バイト）

del_row_num

上記の変数LROWNUMで求めた値を代入してください。

6.12.10　adbchgchunkstatusコマンド実行時に出力されるユーザログ容量（変数max_user_log）の求め方

adbchgchunkstatusコマンド実行時に出力されるユーザログ容量は，次に示す計算式から求めてください。

計算式（単位：バイト）

adbchgchunkstatusコマンド実行時に出力されるユーザログ容量＝
          TBLCHKSTATLOG＋IDXCHKSTATLOG＋5,760,360×（1＋idx_num）

上記の計算式は，1表当たりの計算式です。adbchgchunkstatusコマンドの実行時に-mオプションを指定して複数の表のチャンクの状態を一括して変更する場合は，表ごとのユーザログ容量を上記の計算式で計算し，その合計値を求めてください。

変数の説明

idx_num

状態変更を行うチャンク内の実表に定義されたインデクスの数

TBLCHKSTATLOG

状態変更を行うチャンク内の実表のログ容量

次に示す計算式から求めてください。

計算式（単位：バイト）

dbarea_file_num

実表を格納するデータ用DBエリアのDBエリアファイル数

change_chunk_num

状態変更を行うチャンクの数

page_size

実表を格納するデータ用DBエリアのページサイズ（単位：バイト）

IDXCHKSTATLOG

状態変更を行うチャンク内の実表に定義されたインデクスのログ容量

次に示す計算式から求めてください。

計算式（単位：バイト）

idx_num

状態変更を行うチャンク内の実表に定義されたインデクスの数

dbarea_file_num（i）

各インデクスのデータ用DBエリアのDBエリアファイル数

change_chunk_num

状態変更を行うチャンクの数

page_size（i）

各インデクスのデータ用DBエリアのページサイズ（単位：バイト）

6.12.11　adbarchivechunkコマンド実行時に出力されるユーザログ容量（変数max_user_log）の求め方

adbarchivechunkコマンド実行時に出力されるユーザログ容量は，次に示す計算式から求めてください。

計算式（単位：バイト）

注

複数のチャンクに対してadbarchivechunkコマンドを実行する場合は，各チャンクの中で，最大のセグメント数を使用しているチャンクを基に求めてください。

変数の説明

TBLARCCHKLOG

adbarchivechunkコマンドの実行時に出力されるアーカイブマルチチャンク表に関するログ容量

「(1)　変数TBLARCCHKLOGの求め方」を参照してください。

IDXARCCHKLOG

adbarchivechunkコマンドの実行時に出力されるアーカイブマルチチャンク表に定義されたインデクスに関するログ容量

「(2)　変数IDXARCCHKLOGの求め方」を参照してください。

STBLUPDLOG

adbarchivechunkコマンドの実行時にシステム表（実表）のデータを更新した場合に出力されるログ容量

「(3)　変数STBLUPDLOGの求め方」を参照してください。

idx_num

adbarchivechunkコマンドを実行するアーカイブマルチチャンク表に定義されたインデクス数

ARCCHKLOCLOG

ロケーション表の更新ログ

「(4)　変数ARCCHKLOCLOGの求め方」を参照してください。

(1)　変数TBLARCCHKLOGの求め方

変数TBLARCCHKLOGは，次に示す計算式から求めてください。

計算式（単位：バイト）

変数の説明

dbarea_file_num

アーカイブマルチチャンク表を格納するデータ用DBエリアのデータ用DBエリアファイル数

SGCHTBL

adbarchivechunkコマンドの処理対象チャンクのうち，アーカイブマルチチャンク表が使用するセグメント数

SEGBF

アーカイブマルチチャンク表を格納するデータ用DBエリアのセグメントブロック化係数

page_size

アーカイブマルチチャンク表を格納するデータ用DBエリアのページサイズ（単位：バイト）

usrlog_file_num

次に示す計算式から求めてください。

データ用DBエリアのセグメント数，およびセグメントブロック化係数については，「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」を参照してください。

adbarchivechunkコマンド実行時に必要なユーザログファイル数は，「6.12.15　ユーザログファイル数の求め方」の「(2)　ユーザログファイル数を見積もる必要があるコマンド」を参照してください。

(2)　変数IDXARCCHKLOGの求め方

変数IDXARCCHKLOGは，次に示す計算式から求めてください。

計算式（単位：バイト）

変数の説明

idx_num

adbarchivechunkコマンドを実行するアーカイブマルチチャンク表に定義されたインデクス数

dbarea_file_num(i)

各インデクスが格納されているデータ用DBエリアのデータ用DBエリアファイル数

SGCHIDX(i)

adbarchivechunkコマンドの処理対象チャンクのうち，アーカイブマルチチャンク表に定義された各インデクスが使用するセグメント数

SEGBF(i)

アーカイブマルチチャンク表に定義された各インデクスを格納するデータ用DBエリアのセグメントブロック化係数

page_size(i)

アーカイブマルチチャンク表に定義された各インデクスを格納するデータ用DBエリアのページサイズ（単位：バイト）

usrlog_file_num

次に示す計算式から求めてください。

データ用DBエリアのセグメント数，およびセグメントブロック化係数については，「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」を参照してください。

adbarchivechunkコマンド実行時に必要なユーザログファイル数は，「6.12.15　ユーザログファイル数の求め方」の「(2)　ユーザログファイル数を見積もる必要があるコマンド」を参照してください。

(3)　変数STBLUPDLOGの求め方

変数STBLUPDLOGは，次に示す値を代入してください。

値（単位：バイト）

(4)　変数ARCCHKLOCLOGの求め方

変数ARCCHKLOCLOGは次に示す計算式から求めてください。

計算式（単位：バイト）

変数の説明

INSLOG

「6.12.7　データベースの更新時に出力されるユーザログ容量（変数max_user_log）の求め方」のINSERT文（行の挿入）を実行した場合に出力されるユーザログ容量の計算式から求めてください。ただし，次に示す変数については，代入する値が異なります。対象の変数と代入する値を次に示します。

VRWLOG

0を代入してください。

TIXSLOG

0を代入してください。

IDXSLOG

変数IDXSLOGを求める場合，「6.12.7　データベースの更新時に出力されるユーザログ容量（変数max_user_log）の求め方」の「(3)　B-treeインデクスユーザログ容量の求め方」を参照してください。ただし，次に示す変数については，代入する値が異なります。対象の変数と代入する値を次に示します。

idx_num

1を代入してください。

IDXLOG(i)

次に示す計算式から求めてください。

計算式

SPLITLOG(i)

「6.12.7　データベースの更新時に出力されるユーザログ容量（変数max_user_log）の求め方」の「(3)　B-treeインデクスユーザログ容量の求め方」の変数「SPLITLOG（i）」の計算式（更新対象行のインデクスキーの重複数が256以上の場合）を参照して求めてください。

LROWNUM

adbarchivechunkコマンドで作成されるアーカイブファイル数（単位：個）

「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」の「(f)　変数SGROWTBLおよびPGROWTBLの求め方（マルチチャンク表の場合）」にある変数LROWNUMの計算式から求めてください。ただし，次に示す変数については，代入する値が異なります。対象の変数と代入する値を次に示します。

archive_chunk_num

1を代入してください。

merge_chunk_num

0を代入してください。

ins_row_num

上記の変数LROWNUMで求めた値を代入してください。

SGMTLOG

次に示す計算式から求めてください。

計算式

LBP

「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」の「(f)　変数SGROWTBLおよびPGROWTBLの求め方（マルチチャンク表の場合）」にある変数LBP(i)の計算式から求めてください。ただし，次に示す変数については，代入する値が異なります。対象の変数と代入する値を次に示します。

LROWNUM

上記の変数LROWNUMで求めた値を代入してください。

SEGSIZE

アーカイブマルチチャンク表を格納したデータ用DBエリアのセグメントサイズ

次に示す計算式から求めてください。

計算式（単位：ページ数）

SEGSIZE＝ 1セグメントの容量（単位：バイト）÷page_size

page_size

アーカイブマルチチャンク表を格納するデータ用DBエリアのページサイズ（単位：バイト）

6.12.12　adbunarchivechunkコマンド実行時に出力されるユーザログ容量（変数max_user_log）の求め方

adbunarchivechunkコマンド実行時に出力されるユーザログ容量は，次に示す場合に出力されるユーザログ容量と同じです。

アーカイブマルチチャンク表に対して，-dオプションを省略して，かつ-bオプションを指定してadbimportコマンドを実行する場合

入力データは，アーカイブ状態を解除するチャンク内のデータです。

adbimportコマンド実行時に出力されるユーザログ容量の求め方については，「6.12.4　adbimportコマンド実行時に出力されるユーザログ容量（変数max_user_log）の求め方」を参照してください。

なお，複数のチャンクに対してadbunarchivechunkコマンドを実行する場合は，各チャンクの中で，最大のセグメント数を使用しているチャンクを基に求めてください。

また，使用するセグメント数を求める場合，adbdbstatusコマンドに-c archivechunkオプションを指定して「アーカイブ状態のチャンクのサマリ情報」を出力してください。次に示す出力項目から，セグメント数を確認できます。

Unarchive_table_size

アーカイブ状態になる前のチャンクで，表を格納するために使用していたセグメントの容量（単位：バイト）

Unarchive_index_size

アーカイブ状態になる前のチャンクで，インデクスを格納するために使用していたセグメントの容量（単位：バイト）

6.12.13　adbreorgsystemdataコマンド実行時に出力されるユーザログ容量（変数max_user_log）の求め方

adbreorgsystemdataコマンド実行時に出力されるユーザログ容量は，次に示す場合に出力されるユーザログ容量と同じです。

マルチチャンク表に対して，-dオプションを指定してadbimportコマンドを実行する場合

adbimportコマンド実行時に出力されるユーザログ容量の求め方については，「6.12.4　adbimportコマンド実行時に出力されるユーザログ容量（変数max_user_log）の求め方」を参照してください。ユーザログ容量（変数max_user_log）を求める際，各変数には次の値を代入してください。

IMPSTBLLOG

0を代入してください。

IMPRNGIDXLOG

0を代入してください。

IMPTIXLOG

0を代入してください。

dbarea_file_num

1を代入してください。

dbarea_file_num(i)

1を代入してください。

SGTBL

再編成対象のディクショナリ表（実表）またはシステム表（実表）に対して，adbdbstatusコマンドを実行し，「表のサマリ情報」を出力してください。そして，出力項目の「Used_segments」の値を代入してください。

STATUS_CHUNKS表を再編成対象にした場合の，adbdbstatusコマンドの実行例を次に示します。

（例）

adbdbstatus -d summary -c table -n HADB.STATUS_CHUNKS

SEGBF

56を代入してください。

SEGBF(i)

56を代入してください。

page_size

4,096を代入してください。

page_size(i)

4,096を代入してください。

pctfree

0を代入してください。

変数pctfreeは，「6.12.4　adbimportコマンド実行時に出力されるユーザログ容量（変数max_user_log）の求め方」の計算式を求める場合に，次の変数を求めるときに使用します。

「5.8.3　B-treeインデクスのセグメントごとの格納ページ数の求め方」の「(1)　下位ページ用のセグメントで使用する格納ページ数（変数IP_LOWER（i））の求め方」にある変数IP_LOWER（i）

「5.8.3　B-treeインデクスのセグメントごとの格納ページ数の求め方」の「(2)　上位ページ用のセグメントで使用する格納ページ数（変数IP_UPPER（i））の求め方」にある変数IP_UPPER（i）

usrlog_file_num

次の値を代入してください。

adbreorgsystemdataコマンド実行時のユーザログファイル数−1

adbreorgsystemdataコマンド実行時のユーザログファイル数については，「6.12.15　ユーザログファイル数の求め方」の「(2)　ユーザログファイル数を見積もる必要があるコマンド」を参照してください。

idx_num

再編成対象のディクショナリ表（実表）またはシステム表（実表）に定義されているインデクス数を代入してください。

再編成対象のディクショナリ表（実表）に定義されているインデクス数については，「付録B.23　ディクショナリ表（実表）のB-treeインデクス」を参照してください。

再編成対象のシステム表（実表）に定義されているインデクス数については，「付録C.8　システム表（実表）のB-treeインデクス」を参照してください。

SGIDX(i)

再編成対象のディクショナリ表（実表）またはシステム表（実表）に定義されているインデクスに対して，adbdbstatusコマンドを実行し，「インデクスのサマリ情報」を出力してください。そして，出力項目の「Used_segments」の値を代入してください。

adbdbstatusコマンドは定義されているインデクスごとに実行してください。

再編成対象のディクショナリ表（実表）に定義されているインデクスについては，「付録B.23　ディクショナリ表（実表）のB-treeインデクス」を参照してください。

再編成対象のシステム表（実表）に定義されているインデクスについては，「付録C.8　システム表（実表）のB-treeインデクス」を参照してください。

STATUS_CHUNKS表のインデクス（STATUSINDEXM05）を再編成対象にした場合の，adbdbstatusコマンドの実行例を次に示します。

（例）

adbdbstatus -d summary -c index -n HADB.STATUSINDEXM05

SEGDATA

SGTBLの値を代入してください。

imp_load_rthd

1を代入してください。

imp_dividx_rthd

1を代入してください。

6.12.14　更新行のカラム化機能のメンテナンス処理に必要なユーザログ容量（変数max_user_log）の求め方

更新行のカラム化機能を有効にする場合は，更新行のカラム化機能のメンテナンス処理に必要なユーザログ容量を求めてください。

更新行のカラム化機能のメンテナンス処理は，カラムストア表のチャンクごとに実行されます。そのため，更新行のカラム化機能の対象となるカラムストア表のチャンクごとにユーザログ容量（COLUMNIZELOG）を計算し，その中で最も大きい値を更新行のカラム化機能のメンテナンス処理に必要なユーザログ容量としてください。チャンクごとのユーザログ容量（COLUMNIZELOG）は，次に示す計算式から求めてください。

計算式（単位：バイト）

COLUMNIZELOG ＝ 1,428
               ＋（rowdata_sgmt_num×112＋var_sgmt_num×1,428
                   ＋dbarea_file_num×SEGSIZE×144）×COMPRESSION_RATE
               ＋dbarea_file_num×2,080

変数の説明

rowdata_sgmt_num

更新行のカラム化機能のメンテナンス処理の対象となるローデータ用セグメント数

「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」の「(g)　変数SGCOLUMNTBLおよびPGCOLUMNTBLの求め方（マルチチャンク表の場合）」にある変数UPDATESEGNUM（i）を参照して，該当するチャンクのローデータ用セグメント数を求めてください。

var_sgmt_num

作成される分岐行を格納するセグメント数

該当するチャンクにINSERT文またはUPDATE文によって追加または更新されたデータを，adbimportコマンドでインポートすると仮定して，次に示す変数を参照して求めてください。

「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」の「(g)　変数SGCOLUMNTBLおよびPGCOLUMNTBLの求め方（マルチチャンク表の場合）」にある変数ROWDATASEGNUM（i，k）

dbarea_file_num

カラムストア表が格納されるDBエリアのDBエリアファイル数

SEGSIZE

セグメントサイズ（単位：ページ数）

次に示す計算式から求めてください。

SEGSIZE＝ 1セグメントの容量（単位：バイト）÷page_size

page_size

データ用DBエリアのページサイズ（単位：バイト）

COMPRESSION_RATE

元データの圧縮率

「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」の「(g)　変数SGCOLUMNTBLおよびPGCOLUMNTBLの求め方（マルチチャンク表の場合）」にある変数COMPRESSION_RATEを参照して求めてください。

圧縮率が不明な場合は0.5を仮定してください。

6.12.15　ユーザログファイル数の求め方

ユーザログファイルは，特定のSQL文やコマンドを実行した場合に，必要な数だけ割り当てられます。そして，割り当てられたユーザログファイルは，SQL文とコマンドが終了したときに解放されます。そのため，ユーザログファイル数（「6.12　システムログファイルの容量見積もり」の変数user_file_num）は，同時に実行するSQL文とコマンドを考慮して見積もる必要があります。

複数のSQL文とコマンドを同時に実行する場合は，次の手順で求めてください。

手順

同時に実行するすべてのSQL文とコマンドのユーザログファイル数を求めてください。

求めたすべてのユーザログファイル数を合計してください。

合計したユーザログファイル数以上の値を，サーバ定義adb_log_usrfile_numオペランドに指定してください。

サーバ定義adb_log_usrfile_numオペランドについては，「7.2.3　システムログに関するオペランド（set形式）」のadb_log_usrfile_numオペランドを参照してください。

(1)　ユーザログファイル数を見積もる必要があるSQL文

ユーザログファイル数を見積もる必要があるSQL文を次に示します。

■定義系SQL

ALTER TABLE文（アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更する場合）

DROP INDEX文

DROP TABLE文

DROP SCHEMA文

DROP USER文

REVOKE文のSCHEMA（スキーマ操作権限の取り消し）

上記以外の定義系SQL

■操作系SQL

PURGE CHUNK文

TRUNCATE TABLE文

DELETE文

INSERT文

UPDATE文

各SQL文のユーザログファイル数の求め方を次に示します。なお，求めた結果が0の場合は，1を仮定してください。

■定義系SQLの場合

ALTER TABLE文（アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更する場合）実行時のユーザログファイル数の求め方（単位：個）

DROP INDEX文実行時のユーザログファイル数の求め方（単位：個）

DROP TABLE文実行時のユーザログファイル数の求め方（単位：個）

DROP SCHEMA文実行時のユーザログファイル数の求め方（単位：個）

処理対象のスキーマが包括するすべての表について，DROP TABLE文実行時のユーザログファイル数の求め方を参照して求めてください。そして，求めた結果のうち，最も大きい値になります。

DROP USER文実行時のユーザログファイル数の求め方（単位：個）

処理対象のユーザが所有するスキーマについて，DROP SCHEMA文実行時のユーザログファイル数の求め方を参照して求めてください。

REVOKE文のSCHEMA実行時のユーザログファイル数の求め方（単位：個）

DROP SCHEMA文実行時のユーザログファイル数の求め方を参照して求めてください。

上記以外の定義系SQL実行時のユーザログファイル数の求め方（単位：個）

1になります。

■操作系SQLの場合

PURGE CHUNK文実行時のユーザログファイル数の求め方（単位：個）

TRUNCATE TABLE文実行時のユーザログファイル数の求め方（単位：個）

DELETE文実行時のユーザログファイル数の求め方（単位：個）

1になります。

INSERT文実行時のユーザログファイル数の求め方（単位：個）

1になります。

UPDATE文実行時のユーザログファイル数の求め方（単位：個）

1になります。

重要

クライアント定義adb_sql_exe_max_rthd_numオペランドを指定している場合，サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値ではなく，クライアント定義adb_sql_exe_max_rthd_numオペランドの指定値を代入してください。

ただし，クライアント定義adb_sql_exe_max_rthd_numオペランドの指定値が，サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値よりも大きい場合は，サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値を代入してください。

サーバ定義adb_sql_exe_max_rthd_numオペランドについては，「7.2.2　性能に関するオペランド（set形式）」のadb_sql_exe_max_rthd_numオペランドを参照してください。

(2)　ユーザログファイル数を見積もる必要があるコマンド

ユーザログファイル数を見積もる必要があるコマンドを次に示します。

adbimportコマンド

adbidxrebuildコマンド

adbmodareaコマンド

adbmergechunkコマンド

adbgetcstコマンド

adbchgchunkcommentコマンド

adbchgchunkstatusコマンド

adbarchivechunkコマンド

adbunarchivechunkコマンド

adbreorgsystemdataコマンド

adbsyndictコマンド

各コマンドのユーザログファイル数の求め方を次に示します。

adbimportコマンド実行時のユーザログファイル数の求め方（単位：個）

インポートオプションadb_import_rthd_numについては，マニュアルHADB　コマンドリファレンスのadbimport（データのインポート）を参照してください。

adbidxrebuildコマンド実行時のユーザログファイル数の求め方（単位：個）

インデクス再作成オプションadb_idxrebuild_rthd_numについては，マニュアルHADB　コマンドリファレンスのadbidxrebuild（インデクスの再作成）を参照してください。

adbmodareaコマンド実行時のユーザログファイル数の求め方（単位：個）

2になります。

adbmergechunkコマンド実行時のユーザログファイル数の求め方（単位：個）

マージチャンクオプションadb_mergechunk_rthd_numについては，マニュアルHADB　コマンドリファレンスのadbmergechunk（チャンクのマージ）を参照してください。

adbgetcstコマンド実行時のユーザログファイル数の求め方（単位：個）

1になります。

adbchgchunkcommentコマンド実行時のユーザログファイル数の求め方（単位：個）

1になります。

adbchgchunkstatusコマンド実行時のユーザログファイル数の求め方（単位：個）

1になります。

adbarchivechunkコマンド実行時のユーザログファイル数の求め方（単位：個）

アーカイブチャンクオプションadb_arcv_rthd_numについては，マニュアルHADB　コマンドリファレンスのadbarchivechunk（チャンクのアーカイブ）を参照してください。

adbunarchivechunkコマンド実行時のユーザログファイル数の求め方（単位：個）

アンアーカイブチャンクオプションadb_unarcv_rthd_numについては，マニュアルHADB　コマンドリファレンスのadbunarchivechunk（チャンクのアンアーカイブ）を参照してください。

adbreorgsystemdataコマンド実行時のユーザログファイル数の求め方（単位：個）

5になります。

adbsyndictコマンド実行時のユーザログファイル数の求め方（単位：個）

1になります。

6.13　アーカイブディレクトリの容量見積もり

ここでは，アーカイブディレクトリの容量の求め方について説明します。アーカイブディレクトリの容量は，アーカイブマルチチャンク表を定義する場合に求める必要があります。

アーカイブディレクトリの容量（ARCVDIRSIZE）については，次に示す計算式から求めてください。

計算式（単位：ギガバイト）

変数の説明

tbl_num_in_arcvdir

対象のアーカイブディレクトリを使用するアーカイブマルチチャンク表の数（単位：個）

対象のアーカイブディレクトリを，CREATE TABLE文のチャンクアーカイブ指定のARCHIVEDIRに指定して，定義したアーカイブマルチチャンク表の数を代入してください。

ALLARCVCHKSIZE(i)

i番目のアーカイブマルチチャンク表にある，アーカイブ状態のチャンクすべての容量を合計した値

変数ALLARCVCHKSIZE（アーカイブマルチチャンク表にある，アーカイブ状態のチャンクすべての容量）については，次に示す計算式から求めてください。

計算式（単位：ギガバイト）

arcvchk_num_in_tbl

アーカイブマルチチャンク表にある，アーカイブ状態のチャンク数を合計した値（単位：個）

ARCVCHKSIZE(i)

アーカイブマルチチャンク表にある，i番目のアーカイブ状態のチャンクの容量

変数ARCVCHKSIZE（アーカイブ状態のチャンクの容量）については，次に示す計算式から求めてください。

計算式（単位：ギガバイト）

chunk_data

チャンクに格納される入力データの容量（単位：ギガバイト）

compression_rate

チャンクに格納される入力データの圧縮率

変数compression_rateについては，入力データの一部を使用して，次に示す手順で求めてください。

手順

アーカイブマルチチャンク表を定義する

アーカイブマルチチャンク表を定義する方法については，マニュアルHADB　SQLリファレンスの定義系SQLのCREATE TABLE（表の定義）を参照してください。

adbimportコマンドに-bオプションを指定して，入力データの一部をアーカイブマルチチャンク表に格納する

adbimportコマンドについては，マニュアルHADB　コマンドリファレンスのadbimport（データのインポート）を参照してください。

手順2.で作成したチャンクの容量をadbdbstatusコマンドで確認する

adbdbstatusコマンドに-d usedオプションと-c tableオプションを指定して，「DBエリア，表とインデクスの使用量情報」を出力してください。出力項目の値を基に，「手順2.で作成したチャンクの容量」を次に示す計算式から求めてください。

計算式

adbdbstatusコマンドについては，マニュアルHADB　コマンドリファレンスのadbdbstatus（データベースの状態解析）を参照してください。

手順2.で作成したチャンクをadbarchivechunkコマンドでアーカイブ状態にする

adbarchivechunkコマンドについては，マニュアルHADB　コマンドリファレンスのadbarchivechunk（チャンクのアーカイブ）を参照してください。

手順4.でアーカイブ状態にしたチャンクの容量をadbdbstatusコマンドで確認する

adbdbstatusコマンドに-d usedオプションと-c archivechunkオプションを指定して，「アーカイブ状態のチャンクの使用量情報」を出力してください。出力項目の「Archive_file_size」の値を確認して，アーカイブ状態にしたチャンクの容量を確認してください。

手順3.と手順5.で確認したチャンクの容量を使用して圧縮率を求める

次に示す計算式で求めてください。

計算式

after_comp_somedata

手順5.で確認したチャンクの容量（単位：バイト）

adbarchivechunkコマンドでアーカイブ状態にしたチャンクの容量です。アーカイブ状態のチャンクのため，入力データが圧縮されています。

before_comp_somedata

手順3.で確認したチャンクの容量（単位：バイト）

adbarchivechunkコマンドでアーカイブ状態にする前のチャンクの容量です。アーカイブ状態ではないチャンクのため，入力データは圧縮されていません。

6.14　同義語辞書ファイルの格納ディレクトリの容量見積もり

ここでは，同義語辞書ファイルの格納ディレクトリの容量の求め方について説明します。同義語辞書ファイルの格納ディレクトリの容量は，同義語検索をする場合に求める必要があります。

メモ

同義語辞書ファイルの格納ディレクトリとは，サーバ定義のadb_syndict_storage_pathオペランドに指定するディレクトリのことです。

同義語辞書ファイルの格納ディレクトリの容量（SYNDIRSIZE）については，次に示す計算式から求めてください。

計算式（単位：ギガバイト）

変数の説明

syndict_num

作成する同義語辞書の数（単位：個）

SYNDICTSIZE(i)

各同義語辞書の同義語辞書ファイルのサイズ

次に示す計算式から求めてください。

計算式（単位：ギガバイト）

syn_num

同義語一覧定義ファイル中に指定した同義語の数を合計した値（単位：個）

syn_list_file_size

同義語一覧定義ファイルのサイズ（単位：バイト）

syn_group_num

同義語グループの数（単位：個）

CORSYNSIZE

表記ゆれ補正検索に対応した同義語辞書のサイズ

表記ゆれ補正オプションに「CORRECTIONRULE」を指定して，同義語辞書を作成する場合に加算してください。

次に示す計算式から求めてください。

計算式（単位：ギガバイト）

6.15　監査証跡の出力先ディレクトリの容量見積もり

ここでは，監査証跡の出力先ディレクトリの容量の求め方について説明します。監査証跡の出力先ディレクトリの容量は，監査証跡機能を使用する場合に求める必要があります。

メモ

監査証跡の出力先ディレクトリとは，サーバ定義のadb_audit_log_pathオペランドに指定するディレクトリのことです。

監査証跡の出力先ディレクトリの容量（AUDFILE）については，次に示す計算式から求めてください。

計算式（単位：メガバイト）

AUDFILE = aud_log_max_size × aud_log_max_num

変数の説明

aud_log_max_size

サーバ定義adb_audit_log_max_sizeオペランドの指定値

adb_audit_log_max_sizeオペランドについては，「7.2.10　監査証跡機能に関するオペランド（set形式）」を参照してください。

aud_log_max_num

サーバ定義adb_audit_log_max_numオペランドの指定値

adb_audit_log_max_numオペランドについては，「7.2.10　監査証跡機能に関するオペランド（set形式）」を参照してください。

なお，adb_audit_log_max_numオペランドに0を指定すると，上限なく監査証跡ファイルが作成されます。そのため，変数AUDFILEを求めることができません。adb_audit_log_max_numオペランドに0を指定する場合は，次に示す監査証跡機能の運用を考慮して，監査証跡の出力先ディレクトリの容量を求めてください。

出力される監査証跡のデータ容量と，作成される監査証跡ファイルの数

監査証跡ファイルを，監査証跡の出力先ディレクトリから監査証跡の保存先ディレクトリに移動する頻度

監査証跡機能の運用については，「12.　監査証跡機能の運用」を参照してください。

6.16　統一フォーマット用監査証跡の出力先ディレクトリの容量見積もり

ここでは，統一フォーマット用監査証跡の出力先ディレクトリの容量の求め方について説明します。統一フォーマット用監査証跡の出力先ディレクトリには，統一フォーマット用監査証跡ファイルが出力されます。

メモ

統一フォーマット用監査証跡の出力先ディレクトリとは，adbconvertaudittrailfileコマンドの-dオプションに指定するディレクトリのことです。

統一フォーマット用監査証跡の出力先ディレクトリの総容量（CMNAUDFILE）については，次に示す計算式から求めてください。

計算式（単位：メガバイト）

CMNAUDFILE = 512 × 4 × 2※

注※

HADBサーバが作成する統一フォーマット用監査証跡ファイルの容量は，1ファイル当たり512メガバイトです。そして，最大4ファイルが作成されます。なお，古いファイルを削除して上書きする際に，一時的にディスク上にデータが残ることがあります。統一フォーマット用監査証跡の出力先ディレクトリの総容量を求める際には，一時的にデータが残ることを考慮するため，2を乗算する必要があります。

6.17　マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリの容量見積もり

マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリの容量の求め方は，「6.14　同義語辞書ファイルの格納ディレクトリの容量見積もり」と同じです。マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリの容量は，マルチノード機能の使用時に同義語検索をする場合に求める必要があります。

なお，マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリは，全ノードで見積もりが必要になります。

メモ

マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリとは，サーバ定義のadb_syndict_node_storage_pathオペランドに指定するディレクトリのことです。

6.18　adbexportコマンドが出力するファイルの容量見積もり

ここでは，adbexportコマンドが出力する出力データファイルの容量の求め方について説明します。

出力データファイルの総容量（EXPORTFILESIZE）については，次に示す計算式から求めてください。

計算式（単位：キロバイト）

EXPORTFILESIZE ＝↑（HEADERSIZE×file_num＋ROWSIZE×row_num）÷1,024↑

変数の説明

HEADERSIZE

出力データファイルに出力する列名のサイズ

adbexportコマンド実行時に--with-column-nameオプションを指定する場合に加算してください。--with-column-nameオプションを指定しない場合は0となります。

次の計算式から求めてください。

計算式（単位：バイト）

HEADERSIZE ＝202×column_num

column_num

出力するデータの列数

file_num

出力データパスファイルに指定した出力データファイルの数

ROWSIZE

データ1行分のサイズ

次の計算式から求めてください。

計算式（単位：バイト）

column_data_size（k）

k列目の列データ長

変数column_data_sizeに代入する値は，列データのデータ型によって異なります。次の表で該当する値を代入してください。

表6‒29　column_data_sizeに代入する値

項番

分類

データ型

データ長（単位：バイト）

1

数データ

BIGINT

20

2

INTEGER

11※2

3

SMALLINT

6※3

4

DECIMAL(m,n)※1

m＋2

5

NUMERIC(m,n)※1

6

DOUBLE PRECISION

24

7

FLOAT

8

REAL

9

文字データ

CHARACTER(n)

2×n＋2

10

VARCHAR(n)

2×d＋2

11

STRING

12

日時データ

DATE

12

13

TIME(p)

11＋p

14

TIMESTAMP(p) WITHOUT TIME ZONE

22＋p

15

TIMESTAMP(p) WITH TIME ZONE

28＋p

16

バイナリデータ

BINARY(n)

2×n＋2

17

VARBINARY(n)

2×d＋2

18

論理データ

BOOLEAN

7

19

UUIDデータ

UUID

38

（凡例）

m，n：正の整数

p：0，3，6，9または12

d：実際のデータ長

注※1

全体の桁数がm桁で，小数点以下の桁数がn桁の固定小数点数を示します。mを省略した場合は38が仮定されます。

注※2

整数データ型のデータ形式がレガシー形式の場合，データ長は20バイトになります。

注※3

整数データ型のデータ形式がレガシー形式の場合，データ長は11バイトになります。

row_num

adbexportコマンドで出力する行数

6.19　実表の再編成に必要なファイルの容量見積もり

ここでは，実表の再編成に必要なファイルの容量の求め方について説明します。

実表の再編成を実施するには，adbexportコマンドで再編成対象の実表のデータを出力し，adbimportコマンドでデータを実表に再格納する必要があります。実表の再編成については，次の個所を参照してください。

「11.1.13　シングルチャンク表を再編成する方法」

「11.5.14　マルチチャンク表を再編成する方法（チャンク単位で再編成する場合）」

「11.5.15　マルチチャンク表を再編成する方法（表全体を再編成する場合）」

「11.5.16　マルチチャンク表を再編成する方法（サンプルシェルを使用して再編成する場合）」

運用上，実表の再編成が必要になる場合には，再編成で使用するファイルの総容量（REORGFILESIZE）を見積もってください。そして，十分な空き領域を確保したディスクを準備しておいてください。

再編成に必要なファイルの総容量（REORGFILESIZE）については，次に示す計算式から求めてください。

計算式（単位：キロバイト）

REORGFILESIZE ＝EXPORTFILESIZE＋IMPORTWRKFILESIZE

変数の説明

EXPORTFILESIZE

再編成対象の実表またはチャンクのデータを，adbexportコマンドで出力したときの出力データファイルの総容量（単位：キロバイト）

「6.18　adbexportコマンドが出力するファイルの容量見積もり」を参照して求めてください。

IMPORTWRKFILESIZE

再編成対象の実表またはチャンクのデータを，adbimportコマンドで格納したときの作業用一時ファイルの容量（単位：キロバイト）

「6.21.1　adbimportコマンド実行時の作業用一時ファイルの容量見積もり」の■インデクス作成用の作業用一時ファイルを参照して求めてください。

6.20　アンロードファイルの容量見積もり

ここでは，adbreorgsystemdataコマンド実行時に出力されるアンロードファイルの容量の求め方について説明します。アンロードファイルの容量は，再編成の対象とするディクショナリ表（実表）またはシステム表（実表）の使用量で決まります。

アンロードファイルの容量（UNLDFILESIZE）については，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

ROWSIZE

アンロードファイル内の1行のデータ長（単位：バイト）

ディクショナリ表（実表）またはシステム表（実表）ごとに異なります。次の表から求めてください。

表6‒30　ディクショナリ表（実表）またはシステム表（実表）ごとのアンロードファイル内の1行のデータ長

項番

ディクショナリ表（実表）またはシステム表（実表）

アンロードファイル内の1行のデータ長（単位：バイト）

1

ディクショナリ表

5,093

2

STATUS_TABLES表

417

3

STATUS_COLUMNS表

32,721

4

STATUS_INDEXES表

472

5

STATUS_CHUNKS表

1,436

6

STATUS_SYNONYM_DICTIONARIES表

2,237

ROWNUM

ディクショナリ表（実表）またはシステム表（実表）の行数

SQL文を実行して，再編成対象のディクショナリ表（実表）またはシステム表（実表）の行数を取得してください。詳細については，「11.20.5　ディクショナリ表およびシステム表の状態や使用量を確認する方法」の「(2)　ディクショナリ表（実表）およびシステム表（実表）の格納効率を確認する」を参照してください。

6.21　コマンド実行時の作業用一時ファイルの容量見積もり

ここでは，次に示すコマンドを実行したときに作成される作業用一時ファイルの容量の求め方について説明します。

adbimportコマンド実行時

adbidxrebuildコマンド実行時

adbmergechunkコマンド実行時

adbunarchivechunkコマンド実行時

adbreorgsystemdataコマンド実行時

adbsyndictコマンド実行時

上記に示すコマンドを同時に実行する場合，コマンドごとに作業用一時ファイルの容量を求めてください。そして，それぞれで求めた容量を合計してください。

なお，上記以外のコマンドを実行しても，作業用一時ファイルは作成されません。

6.21.1　adbimportコマンド実行時の作業用一時ファイルの容量見積もり

ここでは，データをインポートするために，adbimportコマンド実行時に作成される作業用一時ファイルの容量の求め方について説明します。

作成される作業用一時ファイルは次のとおりです。

インデクス作成用の作業用一時ファイル※

データ圧縮用の作業用一時ファイル

注※

インデクス作成用の作業用一時ファイルの容量を求める計算式については，次のコマンドの場合もここで説明しています。

adbidxrebuildコマンド

adbmergechunkコマンド

adbunarchivechunkコマンド

adbreorgsystemdataコマンド

■インデクス作成用の作業用一時ファイル

インデクスを定義している表に対してadbimportコマンドを実行した場合，次に示すディレクトリ下にインデクス作成用の作業用一時ファイルが作成されます。

-wオプションを指定した場合

指定したディレクトリ下に作成されます。

-wオプションを指定しない場合

DBディレクトリ下（$DBDIR/ADBWORK）に作成されます。

インデクス作成用の作業用一時ファイルの容量については，次に示す計算式から求めてください。

計算式（単位：キロバイト）

注※

adbmergechunkコマンドを実行する際に--concurrency-priorオプションを指定する場合に加算してください。

変数の説明

BIDXFILE(i)

計算式Aまたは計算式Bのどちらかの計算式から求めてください。

見積もり対象のコマンド

サーバ定義の指定

使用する計算式

adbimportコマンド

クラウドストレージ機能のシステムディレクトリ対応オプションが無効であり，かつadb_cmd_ixrec_file_useオペランドの指定値がREUSABLEの場合

計算式A

上記以外の場合

計算式B

adbidxrebuildコマンド

クラウドストレージ機能のシステムディレクトリ対応オプションが無効であり，かつadb_cmd_ixrec_file_useオペランドの指定値がREUSABLEの場合

計算式A

上記以外の場合

計算式B

adbmergechunkコマンド

条件なし

計算式B

adbunarchivechunkコマンド

adbreorgsystemdataコマンド

計算式A（単位：バイト）

計算式B（単位：バイト）

idx_num

表に定義するB-treeインデクスの数

RECFILE(i)

インデクスレコードファイル

次に示す計算式から求めてください。

計算式（単位：バイト）

RECFILE(i)＝｛KEYSZ(i)＋CTRL(i)｝×row_num＋1,092

KEYSZ(i)

i番目のB-treeインデクスのキー長（単位：バイト）

「5.8.4　B-treeインデクスのキー長（KEYSZ）の求め方」を基に，B-treeインデクスのキー長を求めてください。

なお，可変長データのB-treeインデクスのキー長を求める際は，「表5‒20　B-treeインデクスのキー長一覧」中の「実際のデータ長」を「データの定義長」で計算してください。

CTRL(i)

i番目のB-treeインデクス制御情報

インデクス構成列のキー長がすべて固定長の場合：10バイト

インデクス構成列のキー長に可変長を含む場合：12バイト

row_num

adbimportコマンドの場合

adbimportコマンドで格納する行数

adbidxrebuildコマンドの場合

adbidxrebuildコマンドの対象表に格納されている行数

adbmergechunkコマンドの場合

adbmergechunkコマンドの対象表のマージ元チャンクに格納されている行数

adbunarchivechunkコマンドの場合

adbunarchivechunkコマンドの対象表のチャンクに対応するアーカイブファイルに格納されている行数

adbreorgsystemdataコマンドの場合

adbreorgsystemdataコマンドの対象となる表に格納されている行数

SORTWORK(i)

ソート用ワークファイル

次に示す計算式から求めてください。変数RECFILE(i)および変数row_numについては，上記のインデクスレコードファイル（変数RECFILE(i)）の計算式を参照してください。

計算式（単位：バイト）

SORTWORK(i)＝RECFILE(i)＋8×row_num

SORTFILE(i)

ソート結果用ファイル

次に示す計算式から求めてください。変数KEYSZ(i)，変数CTRL(i)および変数row_numについては，上記のインデクスレコードファイル（変数RECFILE(i)）の計算式を参照してください。

計算式（単位：バイト）

TCTRL(i)

i番目のテキストインデクス制御情報

テキストインデクスの場合

次に示す計算式から求めてください。

計算式

テキストインデクスではない場合

0を代入してください。

IDXWORK(i)

B-treeインデクス作成用ワークファイル

次に示す計算式から求めてください。

計算式（単位：バイト）

KEYSZDB(i)

i番目のデータベース格納キー長（単位：バイト）

「5.8.3　B-treeインデクスのセグメントごとの格納ページ数の求め方」の「(1)　下位ページ用のセグメントで使用する格納ページ数（変数IP_LOWER（i））の求め方」の変数KEYSZDBを参照してください。ただし，可変長のデータは，常にキー長を定義長として求めてください。

PIDX_LEAF

B-treeインデクスの1段目のページ数（リーフページ）

「5.8.3　B-treeインデクスのセグメントごとの格納ページ数の求め方」の「(1)　下位ページ用のセグメントで使用する格納ページ数（変数IP_LOWER（i））の求め方」の計算式1（PIDX_LEAFの求め方）に従って求めてください。

PIDX(2)

B-treeインデクスの2段目のページ数

「5.8.3　B-treeインデクスのセグメントごとの格納ページ数の求め方」の「(2)　上位ページ用のセグメントで使用する格納ページ数（変数IP_UPPER（i））の求め方」の計算式1（PIDX（k）の求め方）に従って求めてください。

tix_num

テキストインデクスの数

TIXWORK(i)

テキストインデクス作成用ワークファイル

次に示す計算式から求めてください。

計算式（単位：バイト）

row_num

変数RECFILE(i)のrow_numを参照してください。

string_num(i)

テキストインデクスのインデクス構成列に格納されている平均文字数

define_num(i)

テキストインデクスのインデクス構成列の定義長

TIXCORWORK(i)

テキストインデクス作成用ワークファイル（表記ゆれ補正検索向け）

テキストインデクスの定義時に，「テキストインデクス表記ゆれ補正指定」を指定した場合に求める必要があります。

次に示す計算式から求めてください。

計算式（単位：バイト）

row_num

変数RECFILE(i)のrow_numを参照してください。

string_num(i)

テキストインデクスのインデクス構成列に格納されている平均文字数

rix_num

レンジインデクスの数

RIXRECFILE(i)

レンジインデクスのインデクスレコードファイル

次に示す計算式から求めてください。

計算式（単位：バイト）

RIXRECFILE(i)＝SGRI(i)×SEGCAPA(i)×2

SGRI(i)

「5.8.6　レンジインデクスを格納するセグメント数の求め方」の「(1)　変数SGRIの求め方」を参照してください。

SEGCAPA(i)

レンジインデクスを定義するDBエリアの1セグメントの容量（単位：バイト）

1セグメントの容量は，データ用DBエリアのページサイズを基に，「表5‒5　データ用DBエリアのページサイズおよび1セグメントの容量ごとのセグメントブロック化係数」を参照して求めてください。なお，「表5‒5　データ用DBエリアのページサイズおよび1セグメントの容量ごとのセグメントブロック化係数」では，1セグメントの容量がメガバイト単位で表記されているため，求めた値をバイト単位に変換してください。

■データ圧縮用の作業用一時ファイル

カラムストア表へデータを格納する場合だけ，データ圧縮用の作業用一時ファイルが作成されます。

データ圧縮用の作業用一時ファイルの容量については，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

col_num

処理対象表の列の総数（単位：個）

col_size(i)

処理対象表の各列のデータ長（単位：バイト）

各列のデータ長は，「表6‒11　各データ型のデータ長の一覧」を参照してください。

imp_load_rthd

次の計算式から求めてください。

インポートオプションadb_import_rthd_numの指定値 －1

6.21.2　adbidxrebuildコマンド実行時の作業用一時ファイルの容量見積もり

ここでは，インデクスを再作成するために，adbidxrebuildコマンド実行時に作成される作業用一時ファイルの容量の求め方について説明します。

インデクスを定義している表に対してadbidxrebuildコマンドを実行した場合，次に示すディレクトリ下に作業用一時ファイルが作成されます。

-wオプションを指定した場合

指定したディレクトリ下に作成されます。

-wオプションを指定しない場合

DBディレクトリ下（$DBDIR/ADBWORK）に作成されます。

作業用一時ファイルの容量については，「6.21.1　adbimportコマンド実行時の作業用一時ファイルの容量見積もり」に示す計算式から求めてください。

6.21.3　adbmergechunkコマンド実行時の作業用一時ファイルの容量見積もり

ここでは，複数のチャンクをマージするために，adbmergechunkコマンド実行時に作成される作業用一時ファイルの容量の求め方について説明します。

インデクスを定義している表に対してadbmergechunkコマンドを実行した場合，次に示すディレクトリ下に作業用一時ファイルが作成されます。

-wオプションを指定した場合

指定したディレクトリ下に作成されます。

-wオプションを指定しない場合

DBディレクトリ下（$DBDIR/ADBWORK）に作成されます。

作業用一時ファイルの容量については，「6.21.1　adbimportコマンド実行時の作業用一時ファイルの容量見積もり」に示す計算式から求めてください。

6.21.4　adbunarchivechunkコマンド実行時の作業用一時ファイルの容量見積もり

ここでは，チャンクのアーカイブ状態を解除するために，adbunarchivechunkコマンド実行時に作成される作業用一時ファイルの容量の求め方について説明します。

インデクスを定義している表に対してadbunarchivechunkコマンドを実行した場合，次に示すディレクトリ下に作業用一時ファイルが作成されます。

-wオプションを指定した場合

指定したディレクトリ下に作成されます。

-wオプションを指定しない場合

DBディレクトリ下（$DBDIR/ADBWORK）に作成されます。

作業用一時ファイルの容量については，「6.21.1　adbimportコマンド実行時の作業用一時ファイルの容量見積もり」に示す計算式から求めてください。

6.21.5　adbreorgsystemdataコマンド実行時の作業用一時ファイルの容量見積もり

ここでは，ディクショナリ表（実表）またはシステム表（実表）を再編成するために，adbreorgsystemdataコマンド実行時に作成される作業用一時ファイルの容量の求め方について説明します。

インデクスを定義している表に対してadbreorgsystemdataコマンドを実行した場合，次に示すディレクトリ下に作業用一時ファイルが作成されます。

-wオプションを指定した場合

指定したディレクトリ下に作成されます。

-wオプションを指定しない場合

DBディレクトリ下（$DBDIR/ADBWORK）に作成されます。

作業用一時ファイルの容量については，「6.21.1　adbimportコマンド実行時の作業用一時ファイルの容量見積もり」に示す計算式から求めてください。

重要

ディクショナリ表およびシステム表にテキストインデクスは定義されていないため，「6.21.1　adbimportコマンド実行時の作業用一時ファイルの容量見積もり」の計算式の次の変数を見積もる必要はありません。

TCTRL(i)

i番目のテキストインデクス制御情報

tix_num

テキストインデクスの数

TIXWORK(i)

テキストインデクス作成用ワークファイル

TIXCORWORK(i)

テキストインデクス作成用ワークファイル（表記ゆれ補正検索向け）

6.21.6　adbsyndictコマンド実行時の作業用一時ファイルの容量見積もり

ここでは，adbsyndictコマンドの実行時に作成される作業用一時ファイルの容量の求め方について説明します。

作業用一時ファイルの容量については，次に示す計算式から求めてください。

計算式（単位：キロバイト）

変数の説明

syn_list_file_size

同義語一覧定義ファイルのサイズ（単位：バイト）

6.22　コマンド実行時に増加するデータ量の見積もり

ここでは，次に示すコマンドを実行したときに増加するデータ量の求め方について説明します。

adbmergechunkコマンド

6.22.1　adbmergechunkコマンド実行時に増加するデータ量の見積もり

マージチャンク処理の対象表にインデクスを定義している場合，adbmergechunkコマンドの実行中，およびadbmergechunkコマンドの中断時に，インデクスのデータ量が増加します。

そのため，adbmergechunkコマンドを実行する場合は，「5.8.3　B-treeインデクスのセグメントごとの格納ページ数の求め方」，「5.8.5　テキストインデクスのセグメントごとの格納ページ数の求め方」および「5.8.6　レンジインデクスを格納するセグメント数の求め方」で見積もった値に，マージ先チャンクのインデクス再作成に必要なデータ量を加算してください。インデクス再作成時に必要なデータ量については，マージ元チャンクのインデクスのデータ量の合計値と同等と仮定して計算してください。

adbmergechunkコマンド実行時にインデクスのデータ量が増加する理由については，「11.5.9　チャンクをマージする方法（チャンク数を減らす方法）」の「(3)　adbmergechunkコマンドによるチャンクのマージ」のメモを参照してください。

6.23　コマンドを同時実行する際の考慮点

ここでは，次に示すコマンドを同時実行する際の考慮点について説明します。

adbarchivechunkコマンド

adbchgchunkcommentコマンド

adbchgchunkstatusコマンド

adbdbstatusコマンド

adbexportコマンド

adbgetcstコマンド

adbidxrebuildコマンド

adbimportコマンド

adbmergechunkコマンド

adbmkdmkコマンド

adbmodbuffコマンド

adbreorgsystemdataコマンド※

adbsqlコマンド

adbstatコマンド

adbsyndictコマンド

adbunarchivechunkコマンド

注※

処理対象表がシステム表の場合に該当します。処理対象表がディクショナリ表の場合，adbreorgsystemdataコマンドは，ほかのコマンドと同時に実行できません。

なお，これらのコマンドを同時実行する場合，同時に実行するAPもあわせて考慮する必要があります。

6.23.1　コマンドの最大同時実行数について

「6.23　コマンドを同時実行する際の考慮点」で説明したコマンドの最大同時実行数は，サーバ定義adb_sys_max_usersオペランドの値と，HADBサーバに接続中のAPの数によって決まります。コマンドの最大同時実行数を求める計算式を次に示します。

計算式

コマンドの最大同時実行数＝ MAX_USERS − AP_CNCT_NUM

変数の説明

MAX_USERS

サーバ定義adb_sys_max_usersオペランドに指定した最大同時接続数

「7.2.1　システム構成に関するオペランド（set形式）」のadb_sys_max_usersオペランドを参照してください。

AP_CNCT_NUM

HADBサーバに接続中のAPの数

HADBサーバに接続中のAPは，adbls -d cnctコマンドで確認できます。adbls -d cnctコマンドについては，マニュアルHADB　コマンドリファレンスのadbls -d cnct（コネクションの状態表示）を参照してください。

上記の計算式で求めた値を超えた数のコマンドを同時に実行できません。最大同時実行数の上限を超えた場合，エラーとなります（KFAA30932-Eメッセージが出力されます）。

なお，adbstatコマンドについては，最大同時実行数の上限はありません。

6.23.2　コマンドの実行時に使用する処理リアルスレッド数に関する考慮点

(1)　コマンドの実行時に使用する処理リアルスレッド数の最大値

「表6‒31　コマンドの実行時に使用する処理リアルスレッド数を指定するオペランドとコマンドオプションの一覧」に記載しているコマンドを実行する場合，次の計算式で求める「コマンドの実行時に使用する処理リアルスレッド数」が確保できるようにしてください。

計算式

コマンドの実行時に使用する処理リアルスレッド数の最大値＝
                                     SYS_RTHD_NUM − AP_USE_RTHD_NUM

複数のコマンドを同時実行する場合，同時実行するすべてのコマンドで必要な処理リアルスレッド数の合計値となります。

変数の説明

SYS_RTHD_NUM

サーバ定義adb_sys_rthd_numオペランドの指定値

adb_sys_rthd_numオペランドには，SQL文およびコマンドの処理を行う際に使用する処理リアルスレッド数の最大値を指定します。adb_sys_rthd_numオペランドについては，「7.2.2　性能に関するオペランド（set形式）」のadb_sys_rthd_numオペランドを参照してください。

AP_USE_RTHD_NUM

APの実行時に使用する処理リアルスレッド数の合計

APの実行時に使用する処理リアルスレッド数については，次に示すオペランドを参照してください。

サーバ定義adb_sql_exe_max_rthd_numオペランド

「7.2.2　性能に関するオペランド（set形式）」のadb_sql_exe_max_rthd_numオペランドを参照してください。

クライアント定義adb_sql_exe_max_rthd_numオペランド

マニュアルHADB　AP開発ガイドの性能に関するオペランドを参照してください。

(2)　コマンドの実行時に使用する処理リアルスレッド数を指定するオペランドとコマンドオプション

コマンドの実行時に使用する処理リアルスレッド数は，次の表に示すオペランドおよびコマンドオプションで指定できます。

表6‒31　コマンドの実行時に使用する処理リアルスレッド数を指定するオペランドとコマンドオプションの一覧

項番

コマンド名

オペランド名

コマンドオプション名

最低限必要な処理リアルスレッド数

1

adbarchivechunkコマンド

サーバ定義adb_sql_exe_max_rthd_numオペランド

アーカイブチャンクオプションadb_arcv_rthd_num

3

2

adbexportコマンド

エクスポートオプションadb_export_rthd_num

3

3

adbgetcstコマンド

コスト情報収集オプションadb_getcst_rthd_num

2

4

adbidxrebuildコマンド

インデクス再作成オプションadb_idxrebuild_rthd_num

3

5

adbimportコマンド

インポートオプションadb_import_rthd_num

2

6

adbmergechunkコマンド

マージチャンクオプションadb_mergechunk_rthd_num

3

7

adbunarchivechunkコマンド

アンアーカイブチャンクオプションadb_unarcv_rthd_num

2

8

adbsqlコマンド

サーバ定義adb_sql_exe_max_rthd_numオペランド

クライアント定義adb_sql_exe_max_rthd_numオペランド

なし

0

9

adbreorgsystemdataコマンド※

なし

なし

3

注※

adbreorgsystemdataコマンドが使用する処理リアルスレッド数は，3です。コマンドオプションによる指定はできません。

adb_sql_exe_max_rthd_numオペランドには，最大SQL処理リアルスレッド数を指定します。また，コマンドオプションを指定している場合は，adb_sql_exe_max_rthd_numオペランドではなく，コマンドオプションの指定が優先されます。

コマンドを同時実行する場合，「(1)　コマンドの実行時に使用する処理リアルスレッド数の最大値」で求めたコマンドの実行時に使用する処理リアルスレッド数の最大値を超えると，処理リアルスレッドの確保待ちが発生するおそれがあります。発生した場合，ほかのコマンドやAPが終了して必要な処理リアルスレッド数を確保したあとに，コマンドの処理を続行します。

そのため，「表6‒31　コマンドの実行時に使用する処理リアルスレッド数を指定するオペランドとコマンドオプションの一覧」で説明したコマンドを同時実行する場合，「表6‒31　コマンドの実行時に使用する処理リアルスレッド数を指定するオペランドとコマンドオプションの一覧」で説明したオペランドおよびコマンドオプションで，適切な処理リアルスレッド数を指定するようにしてください。

メモ

処理リアルスレッドの確保待ち状態になったコマンドについては，adbls -d cnctコマンドで確認できます。adbls -d cnctコマンドについては，マニュアルHADB　コマンドリファレンスのadbls -d cnct（コネクションの状態表示）を参照してください。

(3)　コマンドを同時実行するときの処理リアルスレッド数の目安

コマンドの実行時に使用する処理リアルスレッド数を適切に見積もらないと，コマンドの実行性能に影響を及ぼします。処理リアルスレッド数の目安を次に示します。

コマンドの同時実行数が少ない期間

「(1)　コマンドの実行時に使用する処理リアルスレッド数の最大値」で求めたコマンドの実行時に使用する処理リアルスレッド数の最大値の8割程度を使用するようにしてください。

コマンドの同時実行数が多い期間

コマンドの同時実行時，処理リアルスレッドの確保待ちが発生しても，運用上問題とならないように，処理リアルスレッド数を使用するようにしてください。

6.23.3　コマンド同時実行時の排他制御に関する考慮点

HADBサーバは，「6.23　コマンドを同時実行する際の考慮点」で示すコマンドを実行すると，「2.10.5　確保される排他資源と排他制御モード」に従って，排他資源を確保します。

複数のコマンドを同時に実行する場合，排他資源が確保される際に競合が発生しないよう注意してください。排他資源が確保される際に競合が発生した場合，通常は，エラーとなります（KFAA50290-Eメッセージが出力されます）。

ただし，一部例外があります（エラーとならないで，排他資源を確保できるまで待つことがあります）。詳細については，「2.10.5　確保される排他資源と排他制御モード」を参照してください。

6.23.4　コマンド同時実行時のメモリ所要量に関する考慮点

コマンドを同時実行する場合に使用するメモリ所要量は，同時実行するコマンドが使用するメモリ所要量の合計になります。

対象のコマンドが使用するメモリ所要量については，「6.3　HADBサーバのメモリ所要量の見積もり」を参照してください。

6.23.5　コマンド同時実行時のシステムログファイルの容量に関する考慮点

コマンドを同時実行する場合に使用するシステムログファイルの容量は，同時実行するコマンドが使用するシステムログファイルの容量の合計になります。

対象のコマンドが使用するシステムログファイルの容量については，「6.12　システムログファイルの容量見積もり」を参照してください。

6.24　クライアントグループ機能を適用する際の考慮点

ここでは，クライアントグループ機能を適用する際の考慮点について説明します。

6.24.1　グループの接続数を設定する際の考慮点

クライアントグループ機能を適用すると，HADBクライアントおよびコマンドが使用できる接続数を，グループごとに設定できます。クライアントグループ機能で設定できる接続数の種別を，次に示します。

最大同時接続数

接続保証数

クライアントグループ機能の最大同時接続数および接続保証数については，「2.12.3　グループごとの接続数・処理リアルスレッド数の設定」を参照してください。

(1)　グループの最大同時接続数および接続保証数を設定する際の考慮点

クライアントグループ機能を適用して，グループの最大同時接続数および接続保証数を設定する際には，次に示す点を考慮する必要があります。

HADBサーバの最大同時接続数をどうするか

サーバ定義adb_sys_max_usersオペランドの指定値を検討します。サーバ定義adb_sys_max_usersオペランドについては，「7.2.1　システム構成に関するオペランド（set形式）」のadb_sys_max_usersオペランドを参照してください。

グループが使用する最大同時接続数および接続保証数を，どれだけ確保するか

グループの最大同時接続数および接続保証数は，サーバ定義adbcltgrpオペランドで指定できます。サーバ定義adbcltgrpオペランドについては，「7.2.19　クライアントグループ機能に関するオペランドおよびオプション（コマンド形式）」を参照してください。

無所属の（グループに所属していない）HADBクライアントやコマンドが使用する接続数は，どの程度必要になるか

HADBサーバの最大同時接続数と，各グループの最大同時接続数および接続保証数に従って，無所属のHADBクライアントやコマンドが使用できる接続数が決まります。

無所属のHADBクライアントやコマンドが使用できる接続数は，「接続数の自由利用枠」の範囲となります。接続数の自由利用枠は，HADBサーバの最大同時接続数から各グループの接続保証数を除いた残りの接続数になります。

この関係性を考慮した上で，各グループの最大同時接続数および接続保証数に適切な値を設定してください。

クライアントグループ機能を適用した場合の，接続数の使用範囲の概要について，次の図に示します。

図6‒7　クライアントグループ機能を適用した場合の，接続数の使用範囲の概要

(2)　クライアントグループ機能を適用した場合の接続数の求め方

クライアントグループ機能を適用した場合の接続数の求め方について，説明します。

■グループの最大同時接続数と接続保証数の求め方

グループの最大同時接続数および接続保証数は，サーバ定義adbcltgrpオペランドの指定値およびサーバ定義adb_sys_max_usersオペランドの指定値に従って決まります。グループの最大同時接続数および接続保証数に設定した範囲で，グループに所属しているHADBクライアントとコマンドは接続数を使用できます。グループの最大同時接続数および接続保証数について，次の表に示します。

表6‒32　グループの最大同時接続数と接続保証数

項番

接続数の種別

各種別の値

1

最大同時接続数

次の計算式で求めた値になります。

2

接続保証数

次の値になります。

所属しているグループを設定したサーバ定義adbcltgrpオペランドの-uオプションの指定値

■接続数の自由利用枠の求め方

接続数の自由利用枠は，グループに所属しているかどうかに関係なく，すべてのHADBクライアントやコマンドが使用できる接続数です。接続数の自由利用枠は，次の計算式で求められます。

計算式

(3)　クライアントグループ機能を適用した場合の接続数の関係

クライアントグループ機能を適用した場合に，「(2)　クライアントグループ機能を適用した場合の接続数の求め方」で示した接続数の種別の値が，それぞれどのように関係しているかについて，次の図に示します。

図6‒8　クライアントグループ機能を適用した場合の接続数の関係

［説明］

HADBサーバの最大同時接続数（60）から，クライアントグループの接続保証数（10）とコマンドグループの接続保証数（5）が確保されます。そのため，接続保証数で確保されていない残りの接続数が，接続数の自由利用枠（45）となります。接続数の自由利用枠は，グループに所属しているかどうかに関係なく，すべてのHADBクライアントとコマンドが使用できる接続数になります。

接続数の自由利用枠（45）の中で，各グループは，自グループの最大同時接続数から接続保証数を除いた数を上限として，接続数を使用できます。この例の場合，クライアントグループは，自グループの最大同時接続数（30）から接続保証数（10）を除いた数（20）を上限として，接続数の自由利用枠を使用できます。また，コマンドグループは，自グループの最大同時接続数（20）から接続保証数（5）を除いた数（15）を上限として，接続数の自由利用枠を使用できます。

メモ

グループの最大同時接続数の合計値によっては，接続数の自由利用枠の一部が「無所属のHADBクライアントやコマンドだけが使用できる接続数」になることがあります。「図6‒8　クライアントグループ機能を適用した場合の接続数の関係」の設定内容を基に，無所属のHADBクライアントやコマンドだけが使用できる接続数と，グループの最大同時接続数の合計値との関係性について，次の図に示します。

図6‒9　無所属のHADBクライアントやコマンドだけが使用できる接続数と，グループの最大同時接続数の合計値との関係性

［説明］

グループに設定した最大同時接続数の合計値が，HADBサーバの最大同時接続数より少ない場合，グループが常に使用しない接続数が発生します。この接続数が，「無所属のHADBクライアントやコマンドだけが使用できる接続数」になります。

この例では，各グループの最大同時接続数の合計値（50）が，HADBサーバの最大同時接続数（60）より少ないため，グループが常に使用しない接続数（10）が発生します。この接続数（10）は，無所属のHADBクライアントやコマンドだけが使用できます。

(4)　最大同時接続数に関する警告メッセージの出力契機の設定

サーバ定義のadbcltgrpオペランドで-wオプションを指定すると，グループが使用できる最大同時接続数の残り枠が少なくなったときに，警告メッセージKFAA40020-Wを出力できます。adbcltgrpオペランドについては，「7.2.19　クライアントグループ機能に関するオペランドおよびオプション（コマンド形式）」のadbcltgrpオペランドを参照してください。

6.24.2　グループの処理リアルスレッド数を設定する際の考慮点

クライアントグループ機能を適用すると，HADBクライアントおよびコマンドが使用できる処理リアルスレッド数を，グループごとに設定できます。クライアントグループ機能で設定できる処理リアルスレッド数の種別を，次に示します。

グループで使用できる処理リアルスレッドの最大数

グループで使用できる処理リアルスレッドの保証数

グループで使用できる処理リアルスレッドの最大数および保証数については，「2.12.3　グループごとの接続数・処理リアルスレッド数の設定」を参照してください。

(1)　グループで使用できる処理リアルスレッドの最大数および保証数を設定する際の考慮点

クライアントグループ機能を適用して，グループで使用できる処理リアルスレッドの最大数および保証数を設定する際には，次に示す点を考慮する必要があります。

HADBサーバの処理リアルスレッド数をどうするか

サーバ定義adb_sys_rthd_numオペランドの指定値を検討します。サーバ定義adb_sys_rthd_numオペランドについては，「7.2.2　性能に関するオペランド（set形式）」のadb_sys_rthd_numオペランドを参照してください。

グループが使用する処理リアルスレッドの最大数および保証数を，どれだけ確保するか

グループで使用できる処理リアルスレッドの最大数および保証数は，サーバ定義adbcltgrpオペランドで指定できます。サーバ定義adbcltgrpオペランドについては，「7.2.19　クライアントグループ機能に関するオペランドおよびオプション（コマンド形式）」を参照してください。

無所属の（グループに所属していない）HADBクライアントやコマンドが使用する処理リアルスレッド数は，どの程度必要になるか

HADBサーバの処理リアルスレッド数と，各グループで使用できる処理リアルスレッドの最大数および保証数に従って，無所属のHADBクライアントやコマンドが使用できる処理リアルスレッド数が決まります。

無所属のHADBクライアントやコマンドが使用できる処理リアルスレッド数は，「処理リアルスレッド数の自由利用枠」の範囲となります。処理リアルスレッド数の自由利用枠は，HADBサーバの処理リアルスレッド数から，各グループで使用できる処理リアルスレッドの保証数を除いた残りの処理リアルスレッド数になります。

この関係性を考慮した上で，各グループで使用できる処理リアルスレッドの最大数および保証数に適切な値を設定してください。

クライアントグループ機能を適用した場合の，処理リアルスレッド数の使用範囲の概要について，次の図に示します。

図6‒10　クライアントグループ機能を適用した場合の，処理リアルスレッド数の使用範囲の概要

(2)　クライアントグループ機能を適用した場合の処理リアルスレッド数の求め方

クライアントグループ機能を適用した場合の処理リアルスレッド数の求め方について，説明します。

■グループで使用できる処理リアルスレッドの最大数および保証数の求め方

グループで使用できる処理リアルスレッドの最大数および保証数は，サーバ定義adbcltgrpオペランドの指定値およびサーバ定義adb_sys_rthd_numオペランドの指定値に従って決まります。グループで使用できる処理リアルスレッドの最大数および保証数に設定した範囲で，グループに所属しているHADBクライアントとコマンドは処理リアルスレッド数を使用できます。グループで使用できる処理リアルスレッドの最大数および保証数について，次の表に示します。

表6‒33　グループで使用できる処理リアルスレッドの最大数および保証数

項番

処理リアルスレッド数の種別

各種別の値

1

処理リアルスレッドの最大数※

次の計算式で求めた値になります。

2

処理リアルスレッドの保証数

次の値になります。

所属しているグループを設定したサーバ定義adbcltgrpオペランドの-eオプションの指定値

注※

次のコマンドは，最低限必要な処理リアルスレッド数が確保されないと実行できません。そのため，処理リアルスレッド数の最大数は，最低限必要な処理リアルスレッド数以上の値が確保されるように調整する必要があります。もし，最低限必要な処理リアルスレッド数以上の値が確保されない場合は，次のコマンドを実行してもエラーとなるおそれがあります。

adbimportコマンド

adbidxrebuildコマンド

adbgetcstコマンド

adbexportコマンド

adbmergechunkコマンド

adbarchivechunkコマンド

adbunarchivechunkコマンド

adbreorgsystemdataコマンド

各コマンドの最低限必要な処理リアルスレッド数は，「6.23.2　コマンドの実行時に使用する処理リアルスレッド数に関する考慮点」の「(2)　コマンドの実行時に使用する処理リアルスレッド数を指定するオペランドとコマンドオプション」の「表6‒31　コマンドの実行時に使用する処理リアルスレッド数を指定するオペランドとコマンドオプションの一覧」を参照してください。

■処理リアルスレッド数の自由利用枠の求め方

処理リアルスレッド数の自由利用枠は，グループに所属しているかどうかに関係なく，すべてのHADBクライアントやコマンドが使用できる処理リアルスレッド数です。処理リアルスレッド数の自由利用枠は，次の計算式で求められます。

計算式

(3)　クライアントグループ機能を適用した場合の処理リアルスレッド数の関係

クライアントグループ機能を適用した場合に，「(2)　クライアントグループ機能を適用した場合の処理リアルスレッド数の求め方」で示した処理リアルスレッド数の種別の値が，それぞれどのように関係しているかについて，次の図に示します。

図6‒11　クライアントグループ機能を適用した場合の処理リアルスレッド数の関係

［説明］

HADBサーバの処理リアルスレッド数（80）から，クライアントグループの処理リアルスレッドの保証数（15）とコマンドグループの処理リアルスレッドの保証数（10）が確保されます。そのため，処理リアルスレッドの保証数で確保されていない残りの処理リアルスレッド数が，処理リアルスレッド数の自由利用枠（55）となります。処理リアルスレッド数の自由利用枠は，グループに所属しているかどうかに関係なく，すべてのHADBクライアントとコマンドが使用できる処理リアルスレッド数になります。

処理リアルスレッド数の自由利用枠（55）の中で，各グループは，自グループで使用できる処理リアルスレッドの最大数から保証数を除いた数を上限として，処理リアルスレッド数を使用できます。この例の場合，クライアントグループは，自グループで使用できる処理リアルスレッドの最大数（35）から保証数（15）を除いた数（20）を上限として，処理リアルスレッド数の自由利用枠を使用できます。また，コマンドグループは，自グループで使用できる処理リアルスレッドの最大数（25）から保証数（10）を除いた数（15）を上限として，処理リアルスレッド数の自由利用枠を使用できます。

メモ

グループで使用できる処理リアルスレッドの最大数の合計値によっては，処理リアルスレッド数の自由利用枠の一部が「無所属のHADBクライアントやコマンドだけが使用できる処理リアルスレッド数」になることがあります。「図6‒11　クライアントグループ機能を適用した場合の処理リアルスレッド数の関係」の設定内容を基に，無所属のHADBクライアントやコマンドだけが使用できる処理リアルスレッド数と，グループで使用できる処理リアルスレッドの最大数の合計値との関係性について，次の図に示します。

図6‒12　無所属のHADBクライアントやコマンドだけが使用できる処理リアルスレッド数と，グループで使用できる処理リアルスレッドの最大数の合計値との関係性

［説明］

グループで使用できる処理リアルスレッドの最大数の合計値が，HADBサーバの処理リアルスレッド数より少ない場合，グループが常に使用しない処理リアルスレッド数が発生します。この処理リアルスレッド数が，「無所属のHADBクライアントやコマンドだけが使用できる処理リアルスレッド数」になります。

この例では，各グループで使用できる処理リアルスレッドの最大数の合計値（60）が，HADBサーバの処理リアルスレッド数（80）より少ないため，グループが常に使用しない処理リアルスレッド数（20）が発生します。この処理リアルスレッド数（20）は，無所属のHADBクライアントやコマンドだけが使用できます。

6.24.3　クライアントグループ機能で使用される接続数と処理リアルスレッド数の関係

ここでは，クライアントグループ機能を適用した場合に使用される接続数と処理リアルスレッド数の関係について，設定例を基に説明します。

(1)　設定例1（使用できる接続数と処理リアルスレッド数の上限を設定する）

ここでは，クライアントグループ機能を適用して，グループの最大同時接続数と，グループで使用できる処理リアルスレッドの最大数を設定する例について，説明します。

グループの最大同時接続数と，グループで使用できる処理リアルスレッドの最大数を設定することで，特定のグループだけが，接続数や処理リアルスレッド数を占有することを防げます。

図6‒13　使用できる接続数と処理リアルスレッド数の上限を設定した例

［説明］

各グループに設定した最大同時接続数に従って，対象のグループは接続数を使用します。最大同時接続数を超えて，接続数を使用できません。そのため，1つのグループが，接続数すべてを占有することを防げます。処理リアルスレッド数についても同様です。

この例の場合，クライアントグループ「client01」は，グループの最大同時接続数（15），およびグループで使用できる処理リアルスレッドの最大数（30）が使用できる上限となります（「client01」が，すべての接続数と処理リアルスレッド数を占有しません）。

この例のように，各グループに設定した最大同時接続数の範囲が重なっている場合，重なっている範囲の接続数については，ほかのグループが接続数を使用していない分だけ使用できます。仮に，クライアントグループ「client01」が接続数（13）を使用している場合，クライアントグループ「client02」は接続数（7）を使用できます。

各グループに設定した，使用できる処理リアルスレッドの最大数の範囲が重なっている場合についても，同様です。

この例では，各クライアントグループに接続保証数を設定していません（接続保証数（0）を指定しています）。そのため，クライアントグループ「client01」および「client02」が接続数を使用していない場合は，無所属のHADBクライアントやコマンドが，接続数を使用できます。無所属のHADBクライアントやコマンドが接続数を使用していると，各グループは，それぞれの最大同時接続数の上限値まで使用できないことがあります。処理リアルスレッド数についても同様です。

この例で設定したクライアントグループの指定例を，次に示します。

■サーバ定義adbcltgrpオペランドの指定例

adbcltgrp -g client01 -m 15 -u 0 -r 30 -e 0
adbcltgrp -g client02 -m 10 -u 0 -r 10 -e 0

■クライアント定義adb_clt_group_nameオペランドの指定例（クライアントグループ「client01」に所属させる場合）

adb_clt_group_name = client01

■クライアント定義adb_clt_group_nameオペランドの指定例（クライアントグループ「client02」に所属させる場合）

adb_clt_group_name = client02

メモ

サーバ定義adbcltgrpオペランドについては，「7.2.19　クライアントグループ機能に関するオペランドおよびオプション（コマンド形式）」のadbcltgrp（クライアントグループを設定する場合），またはadbcltgrp（コマンドグループを設定する場合）を参照してください。

クライアント定義adb_clt_group_nameオペランドについては，マニュアルHADB　AP開発ガイドのシステム構成に関するオペランドを参照してください。

(2)　設定例2（最低限使用できる接続数と処理リアルスレッド数を設定する）

ここでは，クライアントグループ機能を適用して，グループの最大同時接続数，接続保証数，グループで使用できる処理リアルスレッドの最大数，および使用できる処理リアルスレッドの保証数を設定する例について，説明します。

グループの最大同時接続数と，グループで使用できる処理リアルスレッドの最大数を設定することで，特定のグループだけが，接続数や処理リアルスレッド数を占有することを防げます。また，グループの接続保証数と，グループで使用できる処理リアルスレッドの保証数を設定することで，自グループ以外のHADBクライアントの影響を受けなくなります。

図6‒14　最低限使用できる接続数と処理リアルスレッド数を設定した例

［説明］

コマンドグループ「command」は，設定した最大同時接続数と接続保証数に従って，常に1つの接続数を確保します。そのため，「command」以外のHADBクライアントの影響を受けません。クライアントグループ「client01」は，設定した最大同時接続数に従って，接続数を使用します。

また，「command」は，設定した処理リアルスレッドの保証数に従って，常に5個の処理リアルスレッド数を確保します。さらに，「command」には，処理リアルスレッドの最大数に10を指定しています。そのため，「client01」が使用していない処理リアルスレッドがあれば，追加で5個使用できます。

なお，「command」および「client01」が接続数や処理リアルスレッド数を使用していない場合は，無所属のHADBクライアントは，接続数を最大9個，処理リアルスレッド数を最大35個まで使用できます。

この例で設定したクライアントグループとコマンドグループの指定例を，次に示します。

■サーバ定義adbcltgrpオペランドの指定例

adbcltgrp -g client01 -m 9 -u 0 -r 35 -e 0
adbcltgrp -g command -m 1 -u 1 -r 10 -e 5

■クライアント定義adb_clt_group_nameオペランドの指定例（クライアントグループ「client01」に所属させる場合）

adb_clt_group_name = client01

■クライアント定義adb_clt_group_nameオペランドの指定例（コマンドグループ「command」に所属させる場合）

adb_clt_group_name = command

メモ

サーバ定義adbcltgrpオペランドについては，「7.2.19　クライアントグループ機能に関するオペランドおよびオプション（コマンド形式）」のadbcltgrp（クライアントグループを設定する場合），またはadbcltgrp（コマンドグループを設定する場合）を参照してください。

クライアント定義adb_clt_group_nameオペランドについては，マニュアルHADB　AP開発ガイドのシステム構成に関するオペランドを参照してください。

6.25　作業表に関する見積もり

ここでは，次の項目の見積もり方について説明します。

グローバル作業表用のグローバルバッファのページ数

ローカル作業表用バッファのページ数

ハッシュテーブルを使用した検索時に作成される作業表の数

6.25.1　グローバル作業表用のグローバルバッファのページ数の見積もり

ここでは，グローバル作業表用のグローバルバッファのページ数の見積もり方について説明します。

ここで求めた値を，サーバ定義adb_dbbuff_wrktbl_glb_blk_numオペランドに指定してください。adb_dbbuff_wrktbl_glb_blk_numオペランドについては，「7.2.2　性能に関するオペランド（set形式）」のadb_dbbuff_wrktbl_glb_blk_numオペランドを参照してください。

グローバル作業表用のグローバルバッファのページ数の見積もり方を次に示します。

見積もり方

作業表の構成列に関する情報を求める

マニュアルHADB　AP開発ガイドのAPの性能向上に関する設計の作業表が作成されるSQLを実行する際の考慮点のSQLを実行した場合に作成される作業表についてを参照してください。表中の作業表が作成されるSQLのうち，次に示す項目について，作業表の構成列のデータ型，データ長，および作業表への格納行数を求めてください。

FROM句に複数の表参照を指定した場合

導出表を指定した場合

ビュー表を指定した場合

WITH句を指定した場合

表関数導出表を指定した場合

結合表を指定した場合

副問合せを指定した場合

再帰的問合せの指定がある場合

グローバル作業表用のグローバルバッファのページ数を求める

「5.9.1　作業表用DBエリアの総ページ数の求め方」の計算式を使用して，グローバル作業表用のグローバルバッファのページ数を求めてください。

手順1.で求めた値を，計算式に代入する変数としてください。

作業表のページ数が作業表用のバッファサイズ内で収まらない場合，収まらない分の作業表が作業表用DBエリアファイルに出力されるため，処理性能低下の原因となります。そのため，作業表用のバッファサイズを適切に見積もる必要があります。

6.25.2　ローカル作業表用バッファのページ数の見積もり

ここでは，ローカル作業表が使用するローカル作業表用バッファのページ数の見積もり方について説明します。ローカル作業表とは，リアルスレッドごとに作成される，リアルスレッド固有の作業表のことです。

ローカル作業表用バッファのページ数を求めたら，求めた値以上の値をサーバ定義のadb_dbbuff_wrktbl_clt_blk_numオペランドに指定してください。詳細については，「7.2.2　性能に関するオペランド（set形式）」のadb_dbbuff_wrktbl_clt_blk_numオペランドを参照してください。

また，必要に応じて次に示すオペランドおよびオプションにも指定してください。

クライアント定義のadb_dbbuff_wrktbl_clt_blk_numオペランド

マニュアルHADB　AP開発ガイドの性能に関するオペランドを参照してください。

エクスポートオプションadb_export_wrktbl_blk_num

マニュアルHADB　コマンドリファレンスのadbexport（データのエクスポート）のadbexportコマンドの指定形式を参照してください。

ローカル作業表用バッファのページ数を求める計算式を次に示します。

計算式（単位：ページ数）

変数の説明

A：SQL文の実行時に作成される作業表の数×2

B：サーバ定義のadb_sys_uthd_numオペランドの値

SQL文の実行時に作成される作業表の数については，マニュアルHADB　AP開発ガイドのAPの性能向上に関する設計の作業表が作成されるSQLを実行する際の考慮点を参照して求めてください。作業表の数を求める際の注意点を次に示します。

作成される作業表の数は，マニュアルHADB　AP開発ガイドの作成される作業表の個数で説明している例を参照して，SQL文ごとに求めてください。求めた数のうち，最大の数を代入して計算してください。

外への参照列を含む副問合せがある場合，マニュアルHADB　AP開発ガイドの作成される作業表の個数で説明している例を参照して，作成される作業表の数を求めてください。求めた値をSとした場合，次に示す計算式で最終的に作成される作業表の数を計算します。

計算式（単位：個数）

変数の説明

T：サーバ定義のadb_sys_uthd_numオペランドの値

U：外への参照列として参照されている列を検索する問合せ指定の副問合せ評価前の結果の行数

ハッシュテーブルを使用した検索を実行する場合，次の計算式で求めた値を，SQL文の実行時に作成される作業表の数に加算してください。

ハッシュテーブルを使用した検索時に作成される作業表の数の求め方については，「6.25.3　ハッシュテーブルを使用した検索時に作成される作業表の数」を参照してください。

SQL文の実行時に作成される作業表の数の計算例を次に示します。

（例）

次に示すSQL文の実行時に作成される作業表の数を求めます。

SELECT "C1","C2","C3" FROM "T1"
  WHERE "C1"=ANY(                                         ...1
                SELECT COUNT(DISTINCT "C3") FROM "T2"
                  WHERE "T1"."C1"="C2" GROUP BY "C1")     ...2
                  ORDER BY "C1","C2","C3"                 ...3

［説明］

限定述語のための作業表が作成されます。ただし，外への参照列（"T1"."C1"）を含む副問合せのため，作成される作業表の数は次の計算式で求めます。

GROUP BY句のソート処理で使うための作業表が作成されます。ただし，外への参照列（"T1"."C1"）を含む副問合せのため，作成される作業表の数は次の計算式で求めます。

ORDER BY句のソート処理で使う作業表が作成されます。この場合，作成される作業表は1つです。

上記のSQL文の実行時に作成される作業表の数は，1〜3の合計となります。

6.25.3　ハッシュテーブルを使用した検索時に作成される作業表の数

ここでは，ハッシュテーブルを使用した検索時に作成される作業表の数の見積もり方について説明します。

次に示すどれかに該当する場合，ハッシュテーブルを使用した検索が行われます。

表の結合方式でハッシュジョインが適用された場合

副問合せの処理方式でハッシュ実行が適用された場合

グループ化の処理方式，DISTINCT集合関数の処理方式でグローバルハッシュグループ化が適用された場合

SELECT DISTINCTの処理方式でハッシュ実行が適用された場合

集合演算の処理方式でハッシュ実行が適用された場合

サーバ定義およびクライアント定義のadb_sql_exe_hashtbl_area_sizeオペランドの値に従って，ハッシュテーブル領域が確保されて，ハッシュジョイン処理が行われます。このとき，確保されたハッシュテーブル領域が不足した場合，作業表が作成されます。

ハッシュテーブルを使用した検索時に作成される作業表の数は，実行するSQL文ごとに次の計算式で求めてください。

計算式

変数の説明

変数の説明中に出てくる列長およびデータ長については，「表6‒34　各データ型の列長およびデータ長」を参照して求めてください。

A：ハッシュテーブル最大行長（単位：バイト）

各問合せ式本体で，次の単位ごとにハッシュテーブル行長を求めてください。その中で最大の値が，ハッシュテーブル最大行長になります。

複数の表を＝で結合している問合せ指定

＝で結合している各表に対して，選択式および探索条件中に指定したすべての列について，列長の合計を求めてください。

なお，＝の結合条件の左右に列指定を含む値式を指定している場合は，その値式の結果のデータ長も合計に加えてください。

表ごとに求めた値のうち，最小値を除いたすべての値の合計がハッシュテーブル行長になります。

ただし，2表だけを＝で結合していて，その結合の左右に指定した値式の結果のデータ型またはデータ長が異なる場合は，すべての値の合計を求めてください。その際，最小値は除かないでください。

また，アクセスパスの表示結果から，ハッシュテーブル行長を求めることができます。表の結合方式がHASH JOINとなっているツリーの問合せに対して，上記のことを実施し，ハッシュテーブル行長を求めてください。

限定述語の表副問合せ

次に示す4つの値を合計したものが，ハッシュテーブル行長になります。

副問合せの選択式の結果のデータ長の合計値

副問合せに指定した集合関数の結果のデータ長の合計値

探索条件中の外への参照列を含む述語に指定したすべての列の列長の合計値

限定述語またはIN述語の右側の表副問合せの選択式の結果と，その述語の左側に指定している列のデータ型またはデータ長が異なる場合に，その述語の左側に指定している列の列長

なお，アクセスパスの表示結果から，ハッシュテーブル行長を求めることができます。副問合せの処理方式がSUBQUERY HASHとなっているツリーの問合せに対して，上記の4つの値を合計したものが，ハッシュテーブル行長になります。

IN述語中の表副問合せ

ハッシュテーブル行長の求め方は，限定述語の表副問合せを参照してください。

限定述語の表副問合せおよびIN述語中の表副問合せ以外で，探索条件中に＝で外への参照列を指定している副問合せ

ハッシュテーブル行長の求め方は，限定述語の表副問合せを参照してください。

GROUP BY句を含む問合せ指定

グループ化列の列長，および集合関数の結果のデータ長をそれぞれ求めてください。求めた値を合計したものが，ハッシュテーブル行長になります。

なお，アクセスパスの表示結果から，ハッシュテーブル行長を求めることができます。グループ化の処理方式がGLOBAL HASH GROUPINGとなっているツリーの問合せに対して，グループ化列の列長，および集合関数の結果のデータ長をそれぞれ求めてください。求めた値を合計したものが，ハッシュテーブル行長になります。

DISTINCT集合関数を含む問合せ指定

グループ化列の列長，DISTINCT集合関数の引数に指定した値式の結果のデータ長，および集合関数（DISTINCT集合関数を除く）の結果のデータ長をそれぞれ求めてください。求めた値を合計したものが，ハッシュテーブル行長になります。

SELECT DISTINCTが指定された問合せ指定

SELECT DISTINCTの選択式のデータ長の合計が，ハッシュテーブル行長になります。

なお，アクセスパスの表示結果から，ハッシュテーブル行長を求めることができます。SELECT DISTINCTの処理方式がハッシュ実行となっているツリーの問合せに対して，SELECT DISTINCTの選択式のデータ長をそれぞれ求めてください。求めた値を合計したものが，ハッシュテーブル行長になります。

UNION，またはUNION DISTINCTが指定された問合せ式本体

問合せ式本体の結果導出される表の列の列長を求めてください。求めた値を合計したものが，ハッシュテーブル行長になります。

なお，アクセスパスの表示結果から，ハッシュテーブル行長を求めることができます。集合演算の処理方式がハッシュ実行となっているツリーの問合せに対して，問合せ式本体の結果導出される表の列の列長をそれぞれ求めてください。求めた値を合計したものが，ハッシュテーブル行長になります。

B：中間検索結果最大件数

次の計算式から求めてください。

各問合せ式本体で，次の単位ごとに一時中間検索結果の最大件数を求めてください。その中での最大件数が，一時中間検索結果の最大件数になります。

複数の表を＝で結合している問合せ指定

＝の結合それぞれに対して，結合の左右それぞれの検索結果件数のうち，小さい方の値を求めます。求めた結合ごとの値のうち，最大の値が中間検索結果件数になります。

なお，アクセスパスの表示結果から，中間検索結果件数を求めることができます。表の結合方式がHASH JOINとなっているツリーの問合せに対して，外表の結果件数を求めてください。求めた件数のうち，最大の件数が中間検索結果件数になります。

限定述語の表副問合せ

副問合せの結果の行数が中間検索結果件数になります。

なお，アクセスパスの表示結果から，中間検索結果件数を求めることができます。副問合せの処理方式がSUBQUERY HASHとなっているツリーの問合せに対して，副問合せの結果件数を求めてください。求めた件数のうち，最大の件数が中間検索結果件数になります。

IN述語中の表副問合せ

中間検索結果件数の求め方は，限定述語の表副問合せを参照してください。

限定述語の表副問合せおよびIN述語中の表副問合せ以外で，探索条件中に＝で外への参照列を指定している副問合せ

中間検索結果件数の求め方は，限定述語の表副問合せを参照してください。

GROUP BY句を含む問合せ指定

グループ化を適用したあとの結果件数が，中間検索結果件数になります。

なお，アクセスパスの表示結果から，中間検索結果件数を求めることができます。グループ化の処理方式がGLOBAL HASH GROUPINGとなっているツリーの問合せに対して，グループ化を適用したあとの結果件数を求めてください。求めた件数のうち，最大の件数が中間検索結果件数になります。

DISTINCT集合関数を含む問合せ指定

重複排除後の結果件数が中間検索結果件数になります。問合せ指定にGROUP BY句を指定する場合は，DISTINCT集合関数の引数もグループ化列と見なし，そのグループ化を適用したあとの結果件数を目安にしてください。

SELECT DISTINCTが指定された問合せ指定

重複排除後の結果件数が中間検索結果件数になります。

UNION，またはUNION DISTINCTが指定された問合せ式本体

集合演算後の結果件数が中間検索結果件数になります。

C：ハッシュテーブル数

次の計算式から求めてください。

注※

SQLパラレル実行機能が適用される検索系SQLの場合は，GROUP BY句の指定数×2としてください。

ハッシュテーブル数は，アクセスパスの表示結果からも求めることができます。アクセスパスを表示できる場合は，アクセスパスの表示結果と次の計算式からハッシュテーブル数を求めてください。

注※

アクセスパスの表示結果の<<Tree View>>に表示される情報から求めてください。例えば，<<Tree View>>中にHASH JOINが2回表示されている場合，「HASH JOIN（表の結合方式）の表示数」は2と計算してください。

D：ハッシュテーブル領域

次の計算式から求めてください。

クライアント定義のadb_sql_exe_hashtbl_area_sizeオペランドの指定値が，サーバ定義のadb_sql_exe_hashtbl_area_sizeオペランドの指定値よりも小さい場合は，クライアント定義の指定値を代入してください。それ以外は，サーバ定義の指定値を代入してください。

なお，adb_sql_exe_hashtbl_area_sizeオペランドの指定値が0の場合，ハッシュテーブルを使用した検索は適用されません。

表6‒34　各データ型の列長およびデータ長

項番

分類

データ型

列長およびデータ長（単位：バイト）

1

数データ

BIGINT

8

2

INTEGER

4※1

3

SMALLINT

2※2

4

DECIMAL

NUMERIC

1≦精度≦4

2

5

5≦精度≦8

4

6

9≦精度≦16

8

7

17≦精度≦38

16

8

DOUBLE PRECISION

8

9

FLOAT

10

REAL

4

11

文字データ

CHAR

定義長

12

VARCHAR

1≦定義長≦32,000

定義長＋2

13

32,001≦定義長≦64,000

定義長＋4

14

STRING

対象データの実データ長の最大値+4

15

日時データ

DATE

4

16

TIME(p)

3＋↑p÷2↑

17

TIMESTAMP(p)

7＋↑p÷2↑

18

バイナリデータ

BINARY

定義長

19

VARBINARY

定義長＋2

20

論理データ

BOOLEAN

1

21

UUIDデータ

UUID

16

22

配列データ

ARRAY

要素データ型がSTRING型の場合

（要素データ型のデータ長×m）＋2

23

上記以外

（要素データ型のデータ長×n）＋2

（凡例）

p：小数秒の桁数（0，3，6，9または12のどれかになります。省略した場合は0が仮定されます。）

m：対象データの要素数の最大値

n：最大要素数（2～30,000の整数）

注

CURRENT_USERは，VARCHAR(100)として計算してください。

注※1

整数データ型のデータ形式がレガシー形式の場合，列長およびデータ長は8バイトになります。

注※2

整数データ型のデータ形式がレガシー形式の場合，列長およびデータ長は4バイトになります。

6.26　COPY文で出力するファイルの容量見積もり

ここでは，操作系SQLのCOPY文で出力するファイルの容量の求め方について説明します。

COPY文で出力するファイルの容量（COPYFILESIZE）は，次に示す計算式から求めてください。

計算式（単位：バイト）

COPYFILESIZE = row_num × copy_rate

変数の説明

row_num

COPY文で出力するデータ件数

copy_rate

1行ごとの容量の割合

次に示す計算式から求めてください。

copy_rate = file_size ÷ 10,000

file_size

COPY文で10,000行のデータを出力したときのファイルの合計サイズ

実際にCOPY文で10,000行分のデータを出力して，ファイルの合計サイズを確認してください。

7　サーバ定義の設計

この章では，サーバ定義のオペランドの指定形式，内容，および文法規則について説明します。

7.1　サーバ定義のオペランドの指定形式

この節では，サーバ定義の各オペランドの指定形式について説明します。

サーバ定義の各オペランドの内容については，「7.2　サーバ定義のオペランドの内容」を参照してください。

なお，サーバ定義の作成方法および変更方法については，「8.5　サーバ定義の作成および変更方法」を参照してください。

また，サーバ定義の記述形式には，set形式とコマンド形式があります。サーバ定義の各オペランドを指定する際，サーバ定義の記述形式についても確認してください。set形式およびコマンド形式については，「7.3.1　サーバ定義の文法規則の詳細」の「(2)　記述形式」を参照してください。

メモ

クライアント定義のオペランドについては，マニュアルHADB　AP開発ガイドのクライアント定義の設計を参照してください。

サーバ定義の各オペランドの指定形式を次の表に示します。

なお，網掛けが付いているオペランド（色が付いているオペランド）は，指定必須のオペランドです。また，表中の「番号」は，各オペランドに付けた番号と対応しています。

番号

オペランドおよびオプションの指定形式

オペランドの分類

1

set adb_db_path = DBディレクトリ名

システム構成

2

〔set adb_rpc_port = HADBサーバのポート番号〕

3

〔set adb_sys_max_users = 最大同時接続数〕

4

〔set adb_core_path = 障害情報（コアファイル）の出力先ディレクトリ名〕

5

〔set adb_blk_path_wrk = 作業表用DBエリアファイルのブロックスペシャルファイルのパス名〕

6

〔set adb_dbarea_wrk_page_size = 作業表用DBエリアのページサイズ〕

7

〔set adb_sys_rthd_num = 処理リアルスレッド数〕

性能

8

〔set adb_sys_uthd_num = 1リアルスレッドで生成できる擬似スレッド数〕

9

〔set adb_sys_memory_limit = HADBサーバが使用するメモリの最大サイズ〕

10

〔set adb_sql_exe_max_rthd_num = 最大SQL処理リアルスレッド数〕

11

〔set adb_sql_exe_hashgrp_area_size = ハッシュグループ化領域サイズ〕

12

〔set adb_sql_exe_hashtbl_area_size = ハッシュテーブル領域サイズ〕

13

〔set adb_sql_exe_hashflt_area_size = ハッシュフィルタ領域サイズ〕

14

〔set adb_sql_exe_hashgl_area_size = SQL処理リアルスレッドごとのハッシュテーブル領域サイズ〕

15

〔set adb_sql_opt_hashjoin_div = ｛Y｜N｝〕

16

〔set adb_sql_opt_drvtbl_grping_prior =｛LOCAL｜GLOBAL｝〕

17

〔set adb_sys_rthd_area_max = 確保できるリアルスレッド固有メモリの最大サイズ〕

18

〔set adb_sys_proc_area_max = 確保できるプロセス共通メモリの最大サイズ〕

19

〔set adb_sys_shm_huge_page_size = HugePagesの1ページ当たりのページサイズの倍数〕

20

〔set adb_dbbuff_wrktbl_glb_blk_num = グローバル作業表用のグローバルバッファのページ数〕

21

〔set adb_dbbuff_wrktbl_clt_blk_num = ローカル作業表用バッファのページ数〕

22

〔set adb_sql_tbldef_cache_size = 表定義プールサイズ〕

23

〔set adb_log_usrfile_num = ユーザログファイル数〕

システムログ

24

〔set adb_log_usrfile_size = ユーザログファイルの初期化容量〔,ユーザログファイルの容量の縮小契機〕〕

25

〔set adb_log_usrbuf_num = ユーザログバッファ面数〕

26

〔set adb_log_rec_msg_interval =データベースの回復処理の経過時間を示すメッセージの出力間隔〕

27

〔set adb_sys_max_users_wrn_pnt = 最大同時接続数に関する警告メッセージの出力契機〔,警告メッセージの出力済み状態のリセット契機〕〕

状態監視

28

〔set adb_sys_memory_limit_wrn_pnt = HADBサーバのメモリ使用量に関する警告メッセージの出力契機〔,警告メッセージの出力済み状態のリセット契機〕〕

29

〔set adb_dbarea_wrn_pnt_use_rate = データ用DBエリアの使用率〔,データ用DBエリアの使用率〔,データ用DBエリアの使用率〕〕〕

30

〔set adb_dbarea_wrn_pnt_except_name = データ用DBエリア名〔,データ用DBエリア名〕…〕

31

〔set adb_rpc_wait_time = 応答待ち時間の上限〕

32

〔set adb_rpc_tcp_keepalive_time = KeepAliveプローブ開始までの無通信時間〕

33

〔set adb_sys_lck_conflict_behavior =｛NOWAIT｜WAIT｝〕

排他制御

34

〔set adb_sql_prep_delrsvd_words = 削除する予約語〔，削除する予約語〕…〕

SQL文

35

〔set adb_sys_trn_iso_lv =｛READ_COMMITTED｜REPEATABLE_READ｝〕

36

〔set adb_sql_text_out = ｛Y｜N｝〕

37

〔set adb_sql_trc_out = ｛Y｜N｝〕

38

〔set adb_sql_trc_param = ｛Y｜N｝〕

39

〔set adb_sql_trc_accesspath = ｛Y｜N｝〕

40

〔set adb_sql_trc_level = ｛SQL｜CALL｝〕

41

〔set adb_sql_trc_txtfile_size = SQLトレースファイルの最大容量〕

42

〔set adb_sql_order_mode = ｛BYTE｜ISO｝〕

43

〔set adb_sql_prep_dec_div_rs_prior = ｛INTEGRAL_PART｜FRACTIONAL_PART｝〕

44

〔set adb_sql_prep_null_collation = ｛HIGH｜LOW｝〕

45

〔set adb_sql_default_dbarea_shared = 表またはインデクスを格納するデフォルトのデータ用DBエリア名〕

46

〔set adb_sql_opt_col_bidx_sel_mode = ｛DEFAULT｜LIMITED｝〕

インデクス

47

〔set adb_sql_rngidx_preread =｛ALL｜NO｜レンジインデクス名〔，レンジインデクス名〕…｝〕

48

〔set adb_sta_log_max_size = 統計ログファイルの最大容量〕

統計情報

49

〔set adb_sta_log_path = 統計ログファイルの出力先ディレクトリ名〕

50

〔set adb_sta_log_size_unit = ｛G｜M｝〕

51

〔set adb_syndict_storage_path = 同義語辞書ファイルの格納ディレクトリ〕

同義語検索

52

〔set adb_syndict_node_storage_path = マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリ〕

53

〔set adb_audit_log_path = 監査証跡の出力先ディレクトリ〕

監査証跡機能

54

〔set adb_audit_log_max_size = 監査証跡ファイルの最大容量〕

55

〔set adb_audit_log_max_num = 監査証跡ファイルの最大世代数〕

56

〔set adb_crypto_dmkey_path = HADB暗号鍵ファイルのパス名〕

DBエリア暗号化機能

57

〔set adb_auth_passwd_privkey_path = パスワードの復号に使用する秘密鍵ファイルのパス名〕

PAM認証

58

〔set adb_cmd_passwd_pubkey_path = コマンド実行時に指定したパスワードの暗号化に使用する公開鍵ファイルのパス名〕

59

〔set adb_auth_keyc_endpoint = HADBサーバが接続するKeycloakサーバのエンドポイントURL〕

Keycloak認証

60

〔set adb_auth_clt_keyc_endpoint = HADBクライアントが接続するKeycloakサーバのエンドポイントURL〕

61

〔set adb_auth_keyc_realm = Keycloakサーバで作成したレルム名〕

62

〔set adb_auth_keyc_clt_id = Keycloakサーバで作成したクライアントID〕

63

〔set adb_cmd_dvbix_rthd_use = ｛FIXED｜VARIABLE｝〕

コマンド

64

〔set adb_cmd_ixrec_file_use = ｛REUSABLE｜SINGLE-USE｝〕

65

〔set adb_sys_mlg_message_suppress = 出力抑止対象のメッセージID〔,出力抑止対象のメッセージID〕…〕

メッセージ

66

〔set adb_sys_multi_node_info = ノードのホスト名〔:ノードのポート番号〕〔,ノードのホスト名〔:ノードのポート番号〕〕…〕

マルチノード機能

67

〔set adb_sys_multi_worker_node_info = ワーカーノードのホスト名〔:ワーカーノードのポート番号〕〕

68

〔set adb_sys_multi_max_worker_nodes = ワーカーノードの最大数〕

69

〔set adb_sys_node_start_wait_time = 他ノードの起動完了待ち時間の上限〕

70

〔set adb_sys_multi_worker_abort_time = ワーカーノードを異常終了させるまでの待ち時間の上限〕

71

〔set adb_sys_max_parallel_exec_num = SQLパラレル実行機能を適用する検索系SQLの最大同時実行数〕

72

〔set adb_sys_multi_node_clt_host = 自ノードのホスト名〕

73

〔set adb_sys_cld_aws_region = S3オブジェクトの格納先リージョン名〕

クラウドストレージ機能

74

〔set adb_sys_cld_endpoint = Amazon S3またはAmazon S3互換オブジェクトストレージのエンドポイントURL〕

75

〔set adb_sys_cld_aws_bucket = S3オブジェクトの格納先S3バケット名〕

76

〔set adb_sys_cld_az_storage_account = BLOBの格納先ストレージアカウント名〕

77

〔set adb_sys_cld_az_container = BLOBの格納先コンテナー名〕

78

〔set adb_sys_cld_cache_path = キャッシュファイルの格納先ディレクトリ名〕

79

〔set adb_sys_cld_cache_total_size = キャッシュファイルの総容量の上限〕

80

〔set adb_sys_cld_access_area_size = S3オブジェクトまたはBLOBへのアクセス用メモリのサイズ〕

81

〔set adb_sys_cld_throughput = S3オブジェクトのI/Oの目標スループット値〕

82

｛｛

〔adbbuff -g グローバルバッファ名

｛-n DBエリア名〔，DBエリア名〕… | -o ｝

〔-p グローバルバッファのページ数〕

〔-a レンジインデクス専用のグローバルバッファのページ数〕

〔-v テーブルスキャンバッファに使用するメモリサイズ〔，リアルスレッドごとに使用するメモリサイズの上限値〕〕

〔-k セグメントを一括読み込みするためのテーブルスキャンバッファのバッファ面数〕〕

｝｝

グローバルバッファ

83

｛｛

〔adbcltgrp -g クライアントグループ名

〔-m 設定したクライアントグループの最大同時接続数〕

〔-u 設定したクライアントグループの接続保証数〕

〔-r 設定したクライアントグループで使用できる処理リアルスレッドの最大数〕

〔-e 設定したクライアントグループで使用できる処理リアルスレッドの保証数〕

〔-w 設定したクライアントグループの最大同時接続数に関する警告メッセージの出力契機〔,警告メッセージの出力済み状態のリセット契機〕〕〕

｝｝

クライアントグループ機能

84

〔adbcltgrp -g command

〔-m 設定したコマンドグループの最大同時接続数〕

〔-u 設定したコマンドグループの接続保証数〕

〔-r 設定したコマンドグループで使用できる処理リアルスレッドの最大数〕

〔-e 設定したコマンドグループで使用できる処理リアルスレッドの保証数〕

〔-w 設定したコマンドグループの最大同時接続数に関する警告メッセージの出力契機〔,警告メッセージの出力済み状態のリセット契機〕〕〕

85

｛｛

〔adbcachegrp {-g キャッシュグループ名 -n データ用DBエリア名〔,データ用DBエリア名〕…

| -o

| -d }

-s キャッシュグループの容量の上限〕

｝｝

キャッシュグループ

注

環境変数ADB_DEFFILE_UNSUPPORTED_OPERAND_BEHAVIORにINFORMATIONを指定した場合，未サポートのオペランドまたはオプションをサーバ定義に指定してもエラーになりません。未サポートのオペランドまたはオプションを指定した行（継続行を含む）については，オペランドまたはオプションの解析処理は実行されません。環境変数ADB_DEFFILE_UNSUPPORTED_OPERAND_BEHAVIORについては，「8.4　環境変数の設定」を参照してください。

7.2　サーバ定義のオペランドの内容

この節では，サーバ定義の各オペランドの内容について説明します。

サーバ定義の各オペランドの指定形式については，「7.1　サーバ定義のオペランドの指定形式」を参照してください。

なお，サーバ定義の作成方法および変更方法については，「8.5　サーバ定義の作成および変更方法」を参照してください。

また，サーバ定義の記述形式には，set形式とコマンド形式があります。サーバ定義の各オペランドを指定する際，サーバ定義の記述形式についても確認してください。set形式およびコマンド形式については，「7.3.1　サーバ定義の文法規則の詳細」の「(2)　記述形式」を参照してください。

メモ

クライアント定義のオペランドについては，マニュアルHADB　AP開発ガイドのクライアント定義の設計を参照してください。

サーバ定義の各オペランドの内容については，次項以降を参照してください。

7.2.1　システム構成に関するオペランド（set形式）

［1］ adb_db_path = DBディレクトリ名

〜〈パス名〉((2〜510バイト))

DBディレクトリ名を絶対パス名で指定します。このオペランドは必ず指定してください。ここで指定したDBディレクトリ名と，adbinitコマンドで指定するDBディレクトリ名は必ず一致させてください。

このオペランドに指定するパス名の規則を次に示します。

ルートディレクトリは指定できません。

サーバディレクトリ（サブディレクトリも含む）とは異なるディレクトリを指定してください。

半角の英数字，アンダスコア（_），ハイフン（-），シャープ（#），アットマーク（@），スラッシュ（/）だけで構成されるパス名を指定してください。

［2］ adb_rpc_port = HADBサーバのポート番号

〜〈整数〉((5,001〜65,535))《23,650》

HADBサーバとHADBクライアント間の通信で使用する，HADBサーバのポート番号を指定します。

［マルチノード機能］

HAモニタありのマルチノード構成の場合，プライマリノードおよびセカンダリノードのHADBサーバでこのオペランドの指定値を同じにしてください。

ワーカーノードのHADBサーバでは，このオペランドの指定値をプライマリノードのHADBサーバと同じにする必要はありません。

［3］ adb_sys_max_users = 最大同時接続数

〜〈整数〉((1〜1,024))《10》

HADBサーバに接続するHADBクライアントの最大同時接続数を指定します。

クライアントグループ機能を適用する場合は，各グループの接続保証数の合計値よりも，このオペランドの指定値を大きくしてください。各グループの接続保証数の合計値の方が大きい場合は，HADBサーバの開始時にエラーとなります。

各グループの接続保証数については，「7.2.19　クライアントグループ機能に関するオペランドおよびオプション（コマンド形式）」のadbcltgrpオペランドの-uオプションの次の説明を参照してください。

「-u 設定したクライアントグループの接続保証数」

「-u 設定したコマンドグループの接続保証数」

［マルチノード機能］

マルチノード機能を使用する場合は，全ノードのHADBサーバでこのオペランドの指定値を同じにしてください。

このオペランドに指定された値が，マルチノード構成のHADBサーバに対する最大同時接続数になります。

［4］ adb_core_path = 障害情報（コアファイル）の出力先ディレクトリ名

〜〈パス名〉((2〜510バイト))

障害情報（コアファイル）の出力先ディレクトリ名を絶対パスで指定します。このオペランドで指定したディレクトリ下に，障害情報（コアファイル）が出力されます。

通常，このオペランドは指定不要です。このオペランドを省略した場合，障害情報（コアファイル）の出力先ディレクトリは$DBDIR/SPOOLになります。

$DBDIR/SPOOLディレクトリ下以外に，障害情報（コアファイル）を出力したい場合，このオペランドを指定してください。ただし，サーバディレクトリ下のconfディレクトリ（$ADBDIR/conf），およびそのサブディレクトリは指定しないでください。

重要

このオペランドを指定する場合，HADB管理者にアクセス権限（読み取り権限，書き込み権限，および実行権限）が付与されたディレクトリを指定するようにしてください。

コアファイルの出力がsystemd-coredumpによって制御されている場合，コアファイルは/var/lib/systemd/coredumpディレクトリ下に出力されます。デフォルトの設定では，RHEL 8の場合はLZ4形式で，RHEL 9以降の場合はZstandard形式で圧縮されて出力されます。この場合，adb_core_pathオペランドに指定したディレクトリは，トラブルシュート情報の収集時にコアファイル展開用の一時ディレクトリとして使用されます。adb_core_pathオペランドを省略したときは，$DBDIR/SPOOLディレクトリがコアファイル展開用の一時ディレクトリになります。

コアファイルの出力がsystemd-coredumpによって制御されているかどうかを確認する方法については，「8.2.1　HADBサーバのインストール前に実施する作業」の「(9)　設定ファイルの変更および作成（コアファイルの出力がsystemd-coredumpで制御されている場合）」を参照してください。

なお，コアファイルの出力がsystemd-coredumpによって制御されている場合であっても，adbinfoget -gコマンドの実行によって出力されたコアファイルは，このオペランドに指定したディレクトリ下または$DBDIR/SPOOLディレクトリ下に出力されます。このオペランドの指定とコアファイルの出力先の関係を次の表に示します。

表7‒1　adb_core_pathオペランドの指定とコアファイルの出力先の関係

コアファイルの出力制御

コアファイルの出力契機

adb_core_pathオペランドの指定

コアファイルの出力先

カーネル単体

プロセスダウンなど

指定あり

adb_core_pathオペランドに指定したディレクトリ下

指定なし

$DBDIR/SPOOLディレクトリ下

adbinfoget -gコマンドの実行

指定あり

adb_core_pathオペランドに指定したディレクトリ下

指定なし

$DBDIR/SPOOLディレクトリ下

systemd-coredump

プロセスダウンなど

指定あり

/var/lib/systemd/coredumpディレクトリ下

指定なし

adbinfoget -gコマンドの実行

指定あり

adb_core_pathオペランドに指定したディレクトリ下

指定なし

$DBDIR/SPOOLディレクトリ下

［5］ adb_blk_path_wrk = 作業表用DBエリアファイルのブロックスペシャルファイルのパス名

〜〈パス名〉((2〜255バイト))

HADBサーバの開始時に，作業表用DBエリアファイルに割り当てるブロックスペシャルファイルのパス名を指定します。

このオペランドの指定値，および既存の作業表用DBエリアファイル（ADBWRK）の状態に従って，作業表用DBエリアファイルを変更します。

既存の作業表用DBエリアファイルを変更する場合は，変更後にファイルを初期化します。既存の作業表用DBエリアファイルを変更しない場合は，ファイルの内容を参照して初期化していなければ初期化します。詳細を次の表に示します。

表7‒2　adb_blk_path_wrkオペランドと作業表用DBエリアファイルの関係

サーバ定義adb_blk_path_wrkオペランドの指定

既存の作業表用DBエリアファイル

なし

レギュラーファイル

ブロックスペシャルファイル

指定を省略

レギュラーファイルを作成します。

変更しません（既存のレギュラーファイルのままとなります）。

変更しません（既存のブロックスペシャルファイルのままとなります）。

パス名を指定

adb_blk_path_wrkオペランドに指定したブロックスペシャルファイルを使用します。

adb_blk_path_wrkオペランドに指定したブロックスペシャルファイルを使用します。ただし，既存と同じブロックスペシャルファイル名を指定した場合は変更しません。

［マルチノード機能］

マルチノード機能を使用する場合で，作業表用DBエリアファイルがノード固有となっていないときは，次のどちらかを実施してください。

このオペランドに，ほかのノードと共有しないブロックスペシャルファイルを指定する

既存の作業表用DBエリアファイルを削除して，このオペランドを省略する

［6］ adb_dbarea_wrk_page_size = 作業表用DBエリアのページサイズ

〜〈整数〉((32〜32,768))（単位：キロバイト）

作業表用DBエリアのページサイズを，adbinitコマンド実行時に指定したページサイズから，任意のページサイズに切り替えたい場合に，切り替え後のページサイズを指定します。このオペランドに32で割り切れない値を指定した場合，自動的に32キロバイト単位に切り上げられます。

通常，このオペランドは指定不要です。このオペランドを省略した場合は，adbinitコマンド実行時に指定したページサイズが適用されます。

ページサイズを大きくすると，メモリ不足の原因となる可能性があります。そのため，このオペランドでページサイズを大きくする場合は，メモリ所要量を見直してください。メモリ所要量の見積もりについては，「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」および「6.3.4　通常運用時のメモリ所要量の求め方」を参照してください。

稼働中のHADBサーバで適用されているページサイズは，次のコマンドで調べることができます。

adbls -d gbufコマンド

コマンドの詳細については，マニュアルHADB　コマンドリファレンスのadbls -d gbuf（グローバルバッファの情報表示）を参照してください。

adbls -d lbufコマンド

コマンドの詳細については，マニュアルHADB　コマンドリファレンスのadbls -d lbuf（ローカル作業表用バッファの情報表示）を参照してください。

また，adbinitコマンド実行時に指定した作業表用DBエリアのページサイズは，ディクショナリ表の検索で調べることができます。ディクショナリ表の検索については，「付録B.24　ディクショナリ表の検索」の「(38)　adbinitコマンド実行時に指定した作業表用DBエリアのページサイズを調べる方法」を参照してください。

［マルチノード機能］

マルチノード機能を使用する場合は，全ノードのHADBサーバでこのオペランドの指定値を同じにしてください。

7.2.2　性能に関するオペランド（set形式）

［7］ adb_sys_rthd_num = 処理リアルスレッド数

〜〈整数〉((1〜4,096))《40》

処理リアルスレッド数を指定します。

処理リアルスレッドは，SQL文，および次に示す対象のコマンドを実行したときに，HADBサーバが使用するリアルスレッドのことです。

■対象のコマンド

adbimportコマンド

adbgetcstコマンド

adbidxrebuildコマンド

adbexportコマンド

adbmergechunkコマンド

adbarchivechunkコマンド

adbunarchivechunkコマンド

adbreorgsystemdataコマンド

このオペランドには次に示す計算式から求められる値を指定してください。クライアントグループ機能を適用する場合も同様です。

計算式

A×B×C

変数の説明

A：同時にSQL文を実行するコネクション数

B：adb_sql_exe_max_rthd_numオペランドの値

C：1コネクション内で同時に実行する検索系SQLの最大数

なお，対象のコマンドを実行する場合で，かつクライアントグループ機能を適用しない場合は，コマンドを実行するために最低限必要な処理リアルスレッド数以上の値を，このオペランドに指定してください。最低限必要な処理リアルスレッド数以上の値を指定しないと，対象のコマンドを実行してもエラーとなるおそれがあります。各コマンドを実行するために最低限必要な処理リアルスレッド数は，「6.23.2　コマンドの実行時に使用する処理リアルスレッド数に関する考慮点」の「(2)　コマンドの実行時に使用する処理リアルスレッド数を指定するオペランドとコマンドオプション」の「表6‒31　コマンドの実行時に使用する処理リアルスレッド数を指定するオペランドとコマンドオプションの一覧」を参照してください。

また，クライアントグループ機能を適用する場合は，各グループで使用できる処理リアルスレッドの保証数の合計値よりも，このオペランドの指定値を大きくしてください。各グループで使用できる処理リアルスレッドの保証数の合計値の方が大きい場合は，HADBサーバの開始時にエラーとなります。

各グループで使用できる処理リアルスレッドの保証数については，「7.2.19　クライアントグループ機能に関するオペランドおよびオプション（コマンド形式）」のadbcltgrpオペランドの-eオプションの次の説明を参照してください。

「-e 設定したクライアントグループで使用できる処理リアルスレッドの保証数」

「-e 設定したコマンドグループで使用できる処理リアルスレッドの保証数」

重要

このオペランドは，メモリ所要量への影響が大きいオペランドです。このオペランドの指定値を変更した場合は，必ずメモリ所要量の見積もりを行ってください。メモリ所要量の見積もりについては，「6.3　HADBサーバのメモリ所要量の見積もり」を参照してください。

■Hyper-Threadingを有効にしている場合

Hyper-Threadingを有効にしている環境では，adb_sys_rthd_numオペランドの指定値がHADBサーバをインストールしているサーバマシンのCPU数以下の場合であっても，Hyper-Threadingの特性によって次の事象が発生します。

adb_sql_exe_max_rthd_numオペランドの指定値を大きくしても，その分SQL文またはコマンドの実行時間が短縮されません。

adb_sys_rthd_numオペランドの指定値が上記の計算式の「A×B×C」を満たすようにしてSQL文を同時実行した場合であっても，各SQL文の実行時間がSQL文を単体で実行したときに比べて長くなります。

［8］ adb_sys_uthd_num = 1リアルスレッドで生成できる擬似スレッド数

〜〈整数〉((0〜4,096))《128》

1リアルスレッドで生成できる擬似スレッド数を指定します。

このオペランドには，基本的にデフォルト値を指定してください。

重要

このオペランドに0を指定すると，非順序実行方式を適用しないでSQL文を実行します。また，コネクションスレッドだけでSQL文を実行します。

［9］ adb_sys_memory_limit = HADBサーバが使用するメモリの最大サイズ

〜〈単位付き整数〉((5,120MB〜1,099,511,627,776MB))

HADBサーバが使用するメモリ（共有メモリおよびプロセスメモリ）の最大サイズを単位付き整数で指定します。

重要

バージョン03-01以降のHADBサーバでは，このオペランドを指定してください。このオペランドと，サーバ定義adb_sys_proc_area_maxオペランドおよびadb_sys_rthd_area_maxオペランドは，対の関係になります。どちらか片方しか指定できません。そのため，このオペランドを指定する場合は，サーバ定義adb_sys_proc_area_maxオペランドおよびadb_sys_rthd_area_maxオペランドは指定しないでください。

■adb_sys_memory_limitオペランドに指定する値の目安

このオペランドには，「6.3　HADBサーバのメモリ所要量の見積もり」のHADBサーバが使用するメモリの最大サイズで求めた値以上の値を指定してください。または，HADBサーバで使用できるメモリの最大サイズを指定してください。

注意事項を次に示します。

サーバ定義adb_sys_shm_huge_page_sizeオペランドに0以外を指定した場合（HADBサーバが使用する共有メモリにHugePagesを適用する場合）は，サーバ定義adb_sys_memory_limitオペランドには次の計算式を満たす値を指定してください。次の計算式を満たさない値を指定すると，HADBサーバの開始時にエラーとなります。

サーバ定義adb_sys_memory_limitオペランドの指定値
   ≦ カーネルパラメタvm.nr_hugepages × HugePagesの1ページ当たりのページサイズ

HugePagesの1ページ当たりのページサイズの確認方法については，サーバ定義adb_sys_shm_huge_page_sizeオペランドを参照してください。

クラウドストレージ機能を使用する場合，クラウドストレージ機能で使用する分のメモリが必要になります。そのため，このオペランドには，次のどちらかの値を指定してください。

「HADBサーバが使用するメモリの最大サイズ」で求めた値以上の値

「HADBサーバで使用できるメモリの最大サイズ」－「クラウドストレージ機能使用時のメモリ所要量の求め方」で求めた値

クラウドストレージ機能使用時のメモリ所要量の求め方については，「6.3.24　クラウドストレージ機能使用時のメモリ所要量の求め方」を参照してください。

■adb_sys_memory_limitオペランドに指定する単位の規則

このオペランドに指定できる単位は，MB（メガバイト），GB（ギガバイト）およびTB（テラバイト）です。

単位を指定した場合の指定例

set adb_sys_memory_limit = 196608MB

set adb_sys_memory_limit = 128GB

set adb_sys_memory_limit = 64TB

単位を省略した場合（整数だけを指定した場合）は，MB（メガバイト）が仮定されます。

単位を省略した場合の指定例

この場合は，196608MBが指定されたと仮定されます。

set adb_sys_memory_limit = 196608

各単位の指定範囲は次のとおりです。

MB（メガバイト）の場合

5,120MB〜1,099,511,627,776MB

GB（ギガバイト）の場合

5GB〜1,073,741,824GB

TB（テラバイト）の場合

1TB〜1,048,576TB

■adb_sys_memory_limitオペランドを指定しない場合に仮定される値

このオペランドを指定しない場合，サーバ定義adb_sys_proc_area_maxオペランドの指定値に従って，プロセス共通メモリの最大サイズが決まります。また，サーバ定義adb_sys_rthd_area_maxオペランドの指定値に従って，1リアルスレッド当たりのリアルスレッド固有メモリの最大サイズが決まります。

このオペランドを指定すると，次の表に従って，HADBサーバが使用するメモリ（共有メモリおよびプロセスメモリ）の最大使用量を制御します。

表7‒3　adb_sys_memory_limitオペランドが制御するメモリ領域の一覧

項番

HADBサーバが使用するメモリ領域

関連するサーバ定義のオペランド

1

共有メモリ

共有メモリ管理

−

2

プロセス共通メモリ※1

HADBサーバ制御用メモリ

−

3

その他（SQL文実行用メモリ，コマンド実行用メモリなど）

−

4

リアルスレッド固有メモリ※2

ローカル作業表用バッファ

adb_dbbuff_wrktbl_clt_blk_num

5

ハッシュグループ化領域

adb_sql_exe_hashgrp_area_size

6

ハッシュテーブル領域

adb_sql_exe_hashtbl_area_size

7

ハッシュフィルタ領域

adb_sql_exe_hashflt_area_size

8

その他（SQL文実行用ワークメモリ，コマンド実行用メモリなど）

−

9

グローバルバッファページ

グローバルバッファ

adbbuff -p

10

レンジインデクス用バッファ

adbbuff -a

11

テーブルスキャン用バッファ

adbbuff -v

adbbuff -k

12

グローバル作業表用のグローバルバッファ

adb_dbbuff_wrktbl_glb_blk_num

13

プロセスメモリ

ヒープメモリ

−

（凡例）

−：関連するサーバ定義のオペランドはありません。

注※1

サーバ定義adb_sys_proc_area_maxオペランドが関連します。

注※2

サーバ定義adb_sys_rthd_area_maxオペランドが関連します。

［10］ adb_sql_exe_max_rthd_num = 最大SQL処理リアルスレッド数

〜〈整数〉((0〜4,096))《4》

SQL処理リアルスレッド数の最大値を指定します。

SQL処理リアルスレッドは，SQL文実行時に使用する処理リアルスレッドです。

このオペランドには，HADBサーバをインストールしているマシンのCPUのコア数以下の値を指定してください。指定値を決める際には，次に示す■adb_sql_exe_max_rthd_numオペランドを指定する際の考慮点を確認してください。また，同時に実行するSQL文の数を考慮してください。

重要

このオペランドに指定した値を変更した場合，adb_sys_rthd_numオペランドに指定した値も見直してください。このオペランドにadb_sys_rthd_numオペランドの値より大きな値を指定した場合，adb_sys_rthd_numオペランドの値が仮定されます。

■adb_sql_exe_max_rthd_numオペランドを指定する際の考慮点

次に示す計算式を満たす場合，このオペランドで指定した処理リアルスレッド数をSQL文実行時に使用できないことがあります。その場合，SQL文は，このオペランドで指定した処理リアルスレッド数が確保できるようになるまで待ち状態となります。クライアントグループ機能を適用しているかどうかによって，計算式が異なります。

計算式（クライアントグループ機能を適用していない場合）

計算式（クライアントグループ機能を適用している場合）

変数の説明

A：adb_sys_rthd_numオペランドの値

B：adb_sys_max_usersオペランドの値

C：adb_sql_exe_max_rthd_numオペランドの値

D：1コネクション内で同時に実行する検索系SQLの最大数（0の場合は1を代入する）

E：設定したクライアントグループまたはコマンドグループで使用できる処理リアルスレッドの保証数

F：設定したクライアントグループまたはコマンドグループの最大同時接続数

このオペランドと，クライアント定義adb_sql_exe_max_rthd_numオペランドを両方指定した場合は，クライアント定義adb_sql_exe_max_rthd_numオペランドの指定値が優先されます。ただし，クライアント定義adb_sql_exe_max_rthd_numオペランドの指定値が，このオペランドの指定値よりも大きい場合は優先されません（このオペランドの指定値が仮定されます）。

クライアント定義adb_sql_exe_max_rthd_numオペランドについては，マニュアルHADB　AP開発ガイドの性能に関するオペランドを参照してください。

また，設定したクライアントグループおよびコマンドグループの中で，使用できる処理リアルスレッドの最大数よりも，adb_sql_exe_max_rthd_numオペランドの値が大きいグループがある場合，そのグループのadb_sql_exe_max_rthd_numオペランドの値には，使用できる処理リアルスレッドの最大数が仮定されます。

使用できる処理リアルスレッドの最大数については，「7.2.19　クライアントグループ機能に関するオペランドおよびオプション（コマンド形式）」のadbcltgrpオペランドの-rオプションを参照してください。

このオペランドの指定値と，SQL文の実行時に使用するSQL処理リアルスレッド数の関係を次の表に示します。

表7‒4　SQL文の実行時に使用するSQL処理リアルスレッド数

項番

実行するSQL文

adb_sql_exe_max_rthd_numオペランドの指定値

0を指定

1を指定

2以上を指定

1

定義系SQL

ALTER TABLE文（アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更する場合）※1

使用するSQL処理リアルスレッド数は0になります。

使用するSQL処理リアルスレッド数は0になります。

使用するSQL処理リアルスレッド数は，adb_sql_exe_max_rthd_numオペランドの指定値となります。

2

DROP INDEX文※1

3

DROP SCHEMA文※1

4

DROP TABLE文※1

5

DROP USER文※1

6

REVOKE文のSCHEMA（スキーマ操作権限の取り消し）※1

7

操作系SQL

PURGE CHUNK文※1

使用するSQL処理リアルスレッド数は，計算式※2で求めた値となります。

8

TRUNCATE TABLE文※1

9

SELECT文※3

使用するSQL処理リアルスレッド数は1になります。

使用するSQL処理リアルスレッド数は，adb_sql_exe_max_rthd_numオペランドの指定値となります。

10

COPY文※3

11

上記以外のSQL文※4

使用するSQL処理リアルスレッド数は0になります。

使用するSQL処理リアルスレッド数は0になります。

注※1

このオペランドに1以下を指定した場合は，コネクションスレッドだけでSQL文を実行します。このオペランドに2以上を指定した場合は，セグメントの解放処理を行うときに，表で示すSQL処理リアルスレッド数を使用してSQL文を実行します。

注※2

使用するSQL処理リアルスレッド数は，次の計算式で求めた値になります。

注※3

このオペランドに0を指定した場合は，非順序実行方式を適用しないでSQL文を実行します。このオペランドに1以上を指定した場合は，表で示すSQL処理リアルスレッド数を使用して，非順序実行方式を適用してSQL文を実行します。

注※4

このオペランドの指定値に関係なく，コネクションスレッドだけでSQL文を実行します。

重要

サーバ定義adb_sys_uthd_numオペランドに0を指定した場合は，このオペランドに0を指定した場合と同じようにSQL文が実行されます。

［11］ adb_sql_exe_hashgrp_area_size = ハッシュグループ化領域サイズ

〜〈整数〉((0，4〜1,000,000))《4,800》（単位：キロバイト）

ハッシュグループ化領域をキロバイト単位で指定します。

ローカルハッシュグループ化処理（GROUP BY句によるグループ分けにハッシングが使用される）が適用されるSQL文を実行すると，SQL処理リアルスレッドごとに，リアルスレッド固有メモリに対して，指定した値でハッシュグループ化領域が確保されます。

0を指定すると，ローカルハッシュグループ化処理は実行されません。また，4より小さい値を指定した場合には，4が指定されたと仮定されます。

ハッシュグループ化領域は，ローカルハッシュグループ化処理が適用されるSQL文ごと，そのSQL文で指定されたGROUP BY句ごとに指定の値で確保されます。

指定した値がローカルハッシュグループ化処理に十分な領域サイズでなかった場合，指定されたサイズで処理できる範囲でハッシュグループ化されます。処理できなかった行は，作業表用DBエリアに作業表として格納されます。

ハッシュグループ化領域サイズの値は，次に示す計算式で求めた値を目安としてください。なお，GROUP BY句が指定された問合せ指定が複数あるSQL文の場合は，各問合せについて求めた値の最大値を目安としてください。

計算式

変数の説明

LGC

グループ化列のデータ長の合計値

「6.3.4　通常運用時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（通常運用時）」の「(c)　変数RTHD_EXESQLSZの求め方」の「表6‒11　各データ型のデータ長の一覧」を参照してください。

LSF

集合関数の結果のデータ長

NGR

グループ分け結果の行数

このオペランドと，クライアント定義adb_sql_exe_hashgrp_area_sizeオペランドを両方指定した場合は，クライアント定義adb_sql_exe_hashgrp_area_sizeオペランドの指定値が優先されます。クライアント定義adb_sql_exe_hashgrp_area_sizeオペランドについては，マニュアルHADB　AP開発ガイドの性能に関するオペランドを参照してください。

［12］ adb_sql_exe_hashtbl_area_size = ハッシュテーブル領域サイズ

〜〈整数〉((0〜4,194,304))《2,000》（単位：メガバイト）

ハッシュテーブル領域のサイズをメガバイト単位で指定します。

ハッシュ検索が適用されるSQL文が実行されると，SQL処理リアルスレッドごとに，リアルスレッド固有メモリに対して，次に示す計算式に従ってハッシュテーブル領域が確保されます。

計算式

↑このオペランドの指定値÷adb_sql_exe_max_rthd_numオペランドの指定値↑

なお，adb_sql_exe_max_rthd_numオペランドの指定値が0の場合，ハッシュ検索は適用されません。

メモ

ハッシュ検索とはハッシュテーブル領域を使用する処理のことです。次に示す処理が該当します。

表の結合方式のハッシュジョイン

グループ化の処理方式のグローバルハッシュグループ化

副問合せの処理方式のハッシュ実行

SELECT DISTINCTの処理方式のハッシュ実行

集合演算の処理方式のハッシュ実行

上記のハッシュ検索の各処理については，マニュアルHADB　AP開発ガイドの次の個所を参照してください。

表の結合方式

副問合せの処理方式

グループ化の処理方式

SELECT DISTINCTの処理方式

集合演算の処理方式

ハッシュテーブル領域は，ハッシュ検索が適用されるSQL文ごとに確保されます。

このオペランドに0を指定した場合，ハッシュ検索は適用されません。なお，次に示す場合に限り，このオペランドに0を指定してください。

このオペランドに0を指定してもよいケース

次に示すオペランドの指定値を大きくできないため，メモリ不足によるエラーを回避できない場合（KFAA30919-E，またはKFAA30930-Eメッセージが出力されるとき）

adb_sys_rthd_area_maxオペランド

adb_sys_memory_limitオペランド

adb_dbbuff_wrktbl_clt_blk_numオペランド

指定した値がハッシュ検索に十分な領域サイズでなかった場合，指定されたサイズで処理できる範囲でハッシュテーブルが作成されます。ハッシュテーブルで処理できなかった行は，作業表用DBエリアに作業表として格納されます。

ハッシュテーブル領域サイズの値は，次の計算式で求めた値を目安としてください。

計算式

変数の説明

最大SQL文単位ハッシュテーブル領域サイズ

実行する各SQL文について求めたSQL文単位ハッシュテーブル領域サイズの最大値です。SQL文単位ハッシュテーブル領域サイズは，次の計算式で求めてください。

ハッシュテーブル数，ハッシュテーブル最大行長，および中間検索結果最大件数については，「6.25.3　ハッシュテーブルを使用した検索時に作成される作業表の数」を参照してください。

最大SQL処理リアルスレッド数

サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値です。ただし，adb_sql_exe_max_rthd_numオペランドの指定値が0の場合は，1と仮定して計算してください。

このオペランドと，クライアント定義adb_sql_exe_hashtbl_area_sizeオペランドを両方指定した場合は，クライアント定義adb_sql_exe_hashtbl_area_sizeオペランドの指定値が優先されます。ただし，クライアント定義adb_sql_exe_hashtbl_area_sizeオペランドの指定値が，このオペランドの指定値よりも大きい場合は優先されません（このオペランドの指定値が仮定されます）。クライアント定義adb_sql_exe_hashtbl_area_sizeオペランドについては，マニュアルHADB　AP開発ガイドの性能に関するオペランドを参照してください。

［13］ adb_sql_exe_hashflt_area_size = ハッシュフィルタ領域サイズ

〜〈整数〉((0〜419,430))《サーバ定義のadb_sql_exe_hashtbl_area_sizeオペランドの値÷10》（単位：メガバイト）

ハッシュフィルタを作成するハッシュフィルタ領域のサイズをメガバイト単位で指定します。次の処理を実行する際に，ハッシュフィルタが適用されます。

表の結合方式のハッシュジョイン

副問合せの処理方式のハッシュ実行

ハッシュジョイン，ハッシュ実行，ハッシュフィルタについては，マニュアルHADB　AP開発ガイドのハッシュジョインとはおよび副問合せの処理方式を参照してください。

ハッシュフィルタ領域は，ハッシュジョインまたはハッシュ実行の際，ハッシュフィルタが適用されるSQL文ごとに確保されます。ハッシュフィルタが適用されるSQL文が実行された場合，SQL処理リアルスレッドごとに，リアルスレッド固有メモリに対して，次に示す計算式に従ってハッシュフィルタ領域が確保されます。

↑このオペランドの指定値÷adb_sql_exe_max_rthd_numオペランドの指定値↑

指定値の目安と調整

次の計算式で求めた値を，このオペランドの指定値の目安としてください。

ハッシュフィルタ領域サイズ＝
↑adb_sql_exe_hashtbl_area_sizeオペランドの指定値（ハッシュテーブル領域サイズ）÷10↑

ハッシュジョインおよびハッシュ実行の際にハッシュフィルタを適用した結果，処理性能が低下した場合に限り，このオペランドに0を指定してください。

このオペランドの指定値が小さく，ハッシュフィルタ領域サイズが十分に確保できない場合，ハッシュジョインおよびハッシュ実行の際にハッシュフィルタは適用されません。ハッシュフィルタが適用されたかどうかは，アクセスパスの統計情報のHashtbl_filter_num，およびHashtbl_sum_filter_check_cntの値で確認できます。

このオペランドに0以外を指定した状態で，Hashtbl_filter_numの値に0以外が出力され，かつ，Hashtbl_sum_filter_check_cntに0が出力された場合，ハッシュフィルタ領域サイズが不足しています。ハッシュフィルタが適用されていない状態のため，このオペランドの指定値を大きくしてください。アクセスパスの統計情報については，「10.11.3　アクセスパスの統計情報の出力例と出力項目」の「(2)　アクセスパスの統計情報に出力される項目」の「(e)　ハッシュテーブル領域に関する情報」を参照してください。

留意事項

このオペランドに0を指定した場合，ハッシュジョインおよびハッシュ実行の際，ハッシュフィルタは適用されません。

adb_sql_exe_max_rthd_numオペランドに0を指定した場合，ハッシュジョインおよびハッシュ実行は適用されません。

このオペランドと，クライアント定義のadb_sql_exe_hashflt_area_sizeオペランドの両方を指定した場合は，クライアント定義のadb_sql_exe_hashflt_area_sizeオペランドの指定値が優先されます。ただし，クライアント定義のadb_sql_exe_hashflt_area_sizeオペランドの指定値が，このオペランドの指定値よりも大きい場合は優先されません（このオペランドの指定値が仮定されます）。クライアント定義のadb_sql_exe_hashflt_area_sizeオペランドについては，マニュアルHADB　AP開発ガイドの性能に関するオペランドを参照してください。

［14］ adb_sql_exe_hashgl_area_size = SQL処理リアルスレッドごとのハッシュテーブル領域サイズ

〜〈整数〉((0〜1,024))《2》（単位：メガバイト）

SQL処理リアルスレッドごとのハッシュテーブル領域サイズをメガバイト単位で指定します。

次の「ハッシュ検索が適用されるSQL文」が実行されると，ハッシュ検索ごと，かつSQL処理リアルスレッドごとに，リアルスレッド固有メモリに対して，このオペランドの指定値でSQL処理リアルスレッドごとのハッシュテーブル領域が確保されます。

グループ化の処理方式のグローバルハッシュグループ化

SELECT DISTINCTの処理方式のハッシュ実行

集合演算の処理方式のハッシュ実行

上記のハッシュ検索の詳細については，マニュアルHADB　AP開発ガイドのグループ化の処理方式，SELECT DISTINCTの処理方式，および集合演算の処理方式を参照してください。

このオペランドの指定値が0の場合，上記のハッシュ検索に対してSQL処理リアルスレッドごとのハッシュテーブル領域は確保されません。

通常，このオペランドを指定する必要はありません。アクセスパスの統計情報の出力項目（ハッシュテーブル領域に関する情報）のHashtbl_local_disabled_cnt0に0以外の値が出力された場合，SQL処理リアルスレッドごとのハッシュテーブル領域サイズが不足していることを確認できます。0以外の値が出力された場合，次の計算式で求めた値を上回るサイズをこのオペランドに指定することで，SQL文の実行時間が短縮される可能性があります。SQL文の実行中に，SQL処理リアルスレッドごとのハッシュテーブル領域が複数回確保される場合は，各ハッシュ検索で見積もった値の最大値を目安にしてください。

計算式

サーバ定義adb_sql_exe_hashgl_area_sizeオペランドの指定値 ＝
                                   ↑((THL＋16)×NHR)÷1,024÷1,024↑

THL

ハッシュ検索結果列のデータ長の合計

「6.3.4　通常運用時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（通常運用時）」の「(c)　変数RTHD_EXESQLSZの求め方」の「表6‒11　各データ型のデータ長の一覧」を参照してください。

NHR

ハッシュ検索結果の行数

なお，アクセスパスの統計情報については，「10.11.3　アクセスパスの統計情報の出力例と出力項目」の「(2)　アクセスパスの統計情報に出力される項目」の「(e)　ハッシュテーブル領域に関する情報」を参照してください。

［15］ adb_sql_opt_hashjoin_div = ｛Y｜N｝

ハッシュジョインの分割実行を適用するかどうかを指定します。ハッシュジョインについては，マニュアルHADB　AP開発ガイドのハッシュジョインとはを参照してください。

Y

ハッシュジョインの分割実行をHADBが適用可能と判断した場合は，ハッシュジョインの分割実行を適用することがあります。

N

ハッシュジョインの分割実行を適用しません。

通常，このオペランドは指定不要です。

ハッシュジョインの分割実行を適用すると問題がある場合に，このオペランドにNを指定してください。

すべてのSQL文に対してハッシュ検索を実行するのに十分なハッシュテーブル領域サイズがadb_sql_exe_hashtbl_area_sizeオペランドに指定されている場合は，ハッシュジョインの分割実行を適用する必要はありません。このような場合にハッシュジョインの分割実行が適用されると，処理時間が長くなります。そのときは，このオペランドにNを指定してください。

なお，SQL文の実行時にハッシュジョインの分割実行が適用されるかどうかは，アクセスパス情報で確認できます。詳細については，マニュアルHADB　AP開発ガイドのツリー表示に出力される情報の表の結合方式を参照してください。

［マルチノード機能］

マルチノード機能を使用する場合は，全ノードのHADBサーバでこのオペランドの指定値を同じにすることを推奨します。各ノードでこのオペランドの指定値が異なる場合，SQL文を実行するノードごとに異なるアクセスパスになるおそれがあります。

［16］ adb_sql_opt_drvtbl_grping_prior = ｛LOCAL｜GLOBAL｝

次の条件をすべて満たすSQL文を実行する場合に，優先するグループ化の処理方式を指定します。

FROM句に表参照を1つだけ指定している

上記の表参照が，展開されない内部導出表である

最も外側の問合せ指定にGROUP BY句を指定している

通常，このオペランドは指定不要です。

LOCAL

グループ化の処理方式にローカルハッシュグループ化を優先します。

GLOBAL

グループ化の処理方式にグローバルハッシュグループ化を優先します。

このオペランドの指定値とグループ化の処理方式の関係を次の例で説明します。

（例）

SELECT "C2"
    FROM (SELECT "C1",COUNT(*) FROM "T1" GROUP BY "C1") AS "DT1" ("C1","C2")
    GROUP BY "C2"

このオペランドにLOCALを指定して上記のSQL文を実行した場合は，外側のグループ化（下線部分のグループ化）の処理方式にローカルハッシュグループ化が適用されます。

このオペランドにGLOBALを指定して上記のSQL文を実行した場合は，外側のグループ化（下線部分のグループ化）の処理方式にグローバルハッシュグループ化が適用されます。

［マルチノード機能］

マルチノード機能を使用する場合は，全ノードのHADBサーバでこのオペランドの指定値を同じにすることを推奨します。各ノードでこのオペランドの指定値が異なる場合，SQL文を実行するノードごとに異なるアクセスパスになるおそれがあります。

［17］ adb_sys_rthd_area_max = 確保できるリアルスレッド固有メモリの最大サイズ

〜〈整数〉((1,024〜2,000,000,000))《1,024》（単位：メガバイト）

確保できる1リアルスレッド当たりのリアルスレッド固有メモリの最大サイズをメガバイト単位で指定します。

バージョン03-01以降のHADBサーバでは，このオペランドは指定不要です。その代わり，サーバ定義adb_sys_memory_limitオペランドを指定してください。このオペランドを指定した場合，サーバ定義adb_sys_memory_limitオペランドは指定できません。

もし，このオペランドを指定する場合は，次に示す計算式で求めた値を指定してください。

計算式

変数の説明

MACHINE_MEMORY_SIZE

HADBサーバをインストールしたサーバマシンに搭載された物理メモリサイズ（単位：メガバイト）

SHMMAN

HADBサーバ開始時に取得するHADBで使用する共有メモリの情報を格納する領域の領域サイズ（単位：キロバイト）

変数SHMMANについては，「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(1)　共有メモリ管理の所要量の求め方（HADBサーバ開始時）」を参照してください。

SHM_BUFGLOBAL

HADBサーバ開始時に取得するグローバルバッファ領域の領域サイズ（単位：キロバイト）

変数SHM_BUFGLOBALについては，「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」を参照してください。

RTHD_NUM

HADBサーバで使用するリアルスレッド数（単位：個）

次に示す計算式で求めてください。マルチノード機能を使用するかどうかで，計算式が異なります。

マルチノード機能を使用しない場合

RTHD_NUM＝サーバ定義のadb_sys_max_usersオペランドの指定値
   ＋サーバ定義のadb_sys_rthd_numオペランドの指定値＋10

マルチノード機能を使用する場合（ワーカーノードを使用しない場合）

RTHD_NUM＝サーバ定義のadb_sys_max_usersオペランドの指定値
   ＋サーバ定義のadb_sys_rthd_numオペランドの指定値＋10
   ＋（サーバ定義のadb_sys_multi_node_infoオペランドに指定したホスト名の数－1）
   ×（サーバ定義のadb_sys_max_parallel_exec_numオペランドの指定値×2＋2）＋5

マルチノード機能を使用する場合（ワーカーノードを使用する場合）

・プライマリノードまたはセカンダリノードの場合

RTHD_NUM＝サーバ定義のadb_sys_max_usersオペランドの指定値
   ＋サーバ定義のadb_sys_rthd_numオペランドの指定値＋10
   ＋（サーバ定義のadb_sys_multi_node_infoオペランドに指定したホスト名の数－1）
   ×（サーバ定義のadb_sys_max_parallel_exec_numオペランドの指定値×2＋2）＋5
   ＋サーバ定義のadb_sys_multi_max_worker_nodesオペランドの指定値
   ×（サーバ定義のadb_sys_max_parallel_exec_numオペランドの指定値×2＋2）

・ワーカーノードの場合

RTHD_NUM＝サーバ定義のadb_sys_max_usersオペランドの指定値
   ＋サーバ定義のadb_sys_rthd_numオペランドの指定値＋10
   ＋（サーバ定義のadb_sys_multi_node_infoオペランドに指定したホスト名の数－1）
   ×（サーバ定義のadb_sys_max_parallel_exec_numオペランドの指定値×2＋2）＋5
   ＋サーバ定義のadb_sys_multi_max_worker_nodesオペランドの指定値
   ×サーバ定義のadb_sys_max_parallel_exec_numオペランドの指定値×2＋2

［18］ adb_sys_proc_area_max = 確保できるプロセス共通メモリの最大サイズ

〜〈整数〉((5,120〜2,000,000,000))《8,192》（単位：メガバイト）

確保できるプロセス共通メモリの最大サイズをメガバイト単位で指定します。

バージョン03-01以降のHADBサーバでは，このオペランドは指定不要です。その代わり，サーバ定義adb_sys_memory_limitオペランドを指定してください。このオペランドを指定した場合，サーバ定義adb_sys_memory_limitオペランドは指定できません。

もし，このオペランドを指定する場合は，次に示す計算式で求めた値を指定してください。

計算式

変数の説明

MACHINE_MEMORY_SIZE

HADBサーバをインストールしたサーバマシンに搭載された物理メモリサイズ（単位：メガバイト）

SHMMAN

HADBサーバ開始時に取得するHADBで使用する共有メモリの情報を格納する領域の領域サイズ（単位：キロバイト）

変数SHMMANについては，「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(1)　共有メモリ管理の所要量の求め方（HADBサーバ開始時）」を参照してください。

SHM_BUFGLOBAL

HADBサーバ開始時に取得するグローバルバッファ領域の領域サイズ（単位：キロバイト）

変数SHM_BUFGLOBALについては，「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」を参照してください。

RTHD_NUM

HADBサーバで使用するリアルスレッド数（単位：個）

次に示す計算式で求めてください。マルチノード機能を使用するかどうかで，計算式が異なります。

マルチノード機能を使用しない場合

RTHD_NUM＝サーバ定義のadb_sys_max_usersオペランドの指定値
   ＋サーバ定義のadb_sys_rthd_numオペランドの指定値＋10

マルチノード機能を使用する場合（ワーカーノードを使用しない場合）

RTHD_NUM＝サーバ定義のadb_sys_max_usersオペランドの指定値
   ＋サーバ定義のadb_sys_rthd_numオペランドの指定値＋10
   ＋（サーバ定義のadb_sys_multi_node_infoオペランドに指定したホスト名の数－1）
   ×（サーバ定義のadb_sys_max_parallel_exec_numオペランドの指定値×2＋2）＋5

マルチノード機能を使用する場合（ワーカーノードを使用する場合）

・プライマリノードまたはセカンダリノードの場合

RTHD_NUM＝サーバ定義のadb_sys_max_usersオペランドの指定値
   ＋サーバ定義のadb_sys_rthd_numオペランドの指定値＋10
   ＋（サーバ定義のadb_sys_multi_node_infoオペランドに指定したホスト名の数－1）
   ×（サーバ定義のadb_sys_max_parallel_exec_numオペランドの指定値×2＋2）＋5
   ＋サーバ定義のadb_sys_multi_max_worker_nodesオペランドの指定値
   ×（サーバ定義のadb_sys_max_parallel_exec_numオペランドの指定値×2＋2）

・ワーカーノードの場合

RTHD_NUM＝サーバ定義のadb_sys_max_usersオペランドの指定値
   ＋サーバ定義のadb_sys_rthd_numオペランドの指定値＋10
   ＋（サーバ定義のadb_sys_multi_node_infoオペランドに指定したホスト名の数－1）
   ×（サーバ定義のadb_sys_max_parallel_exec_numオペランドの指定値×2＋2）＋5
   ＋サーバ定義のadb_sys_multi_max_worker_nodesオペランドの指定値
   ×サーバ定義のadb_sys_max_parallel_exec_numオペランドの指定値×2＋2

［19］ adb_sys_shm_huge_page_size = HugePagesの1ページ当たりのページサイズの倍数

〜〈整数〉((0〜2,147,483,647))《0》（単位：キロバイト）

HADBサーバが使用する共有メモリにHugePagesを適用する場合，HugePagesの1ページ当たりのページサイズの倍数をキロバイト単位で指定します。

このオペランドには，次のコマンドで確認した値（HugePagesの1ページ当たりのページサイズ）を指定することを推奨します。コマンドで値を確認するときは，値の単位に注意してください。このオペランドにHugePagesの1ページ当たりのページサイズの倍数以外の値を指定すると，共有メモリの確保に失敗し，HADBサーバが開始できなくなります。

実行するコマンド

grep Hugepagesize /proc/meminfo

実行結果の例

Hugepagesize:       2048 kB

この例では，2048を指定することを推奨します。

このオペランドに0を指定すると，HADBサーバが使用する共有メモリにHugePagesは適用されません。

なお，HADBサーバが使用する共有メモリにHugePagesを適用するためには，カーネルパラメタを設定する必要があります。カーネルパラメタの設定については，「6.2　カーネルパラメタの見積もり」を参照してください。

［20］ adb_dbbuff_wrktbl_glb_blk_num = グローバル作業表用のグローバルバッファのページ数

〜〈整数〉((5〜100,000,000))《128》

グローバル作業表用のグローバルバッファのページ数を指定します。

このオペランドを指定して確保されたグローバルバッファは，グローバル作業表を作成するSQL文を実行したときだけ使用されます。

このオペランドの指定値の見積もり方法については，「6.25.1　グローバル作業表用のグローバルバッファのページ数の見積もり」を参照してください。

また，グローバル作業表については，マニュアルHADB　AP開発ガイドのAPの性能向上に関する設計の作業表が作成されるSQLを実行する際の考慮点の作業表の種類を参照してください。

［21］ adb_dbbuff_wrktbl_clt_blk_num = ローカル作業表用バッファのページ数

〜〈整数〉((5〜100,000,000))《256》

ローカル作業表用バッファのページ数を指定します。

このオペランドを指定して確保されたローカル作業表用バッファは，ローカル作業表を作成するSQL文を実行したときだけ使用されます。また，このオペランドで指定したページ数分のローカル作業表用バッファは，リアルスレッドごとに確保されます。

このオペランドの指定値の見積もり方法については，「6.25.2　ローカル作業表用バッファのページ数の見積もり」を参照してください。

ローカル作業表については，マニュアルHADB　AP開発ガイドのAPの性能向上に関する設計の作業表が作成されるSQLを実行する際の考慮点の作業表の種類を参照してください。

メモ

このオペランドと，クライアント定義adb_dbbuff_wrktbl_clt_blk_numオペランドを両方指定した場合は，クライアント定義adb_dbbuff_wrktbl_clt_blk_numオペランドの指定値が優先されます。クライアント定義adb_dbbuff_wrktbl_clt_blk_numオペランドについては，マニュアルHADB　AP開発ガイドの性能に関するオペランドを参照してください。

このオペランドと，エクスポートオプションadb_export_wrktbl_blk_numを両方指定した場合は，エクスポートオプションadb_export_wrktbl_blk_numの指定値が優先されます。エクスポートオプションadb_export_wrktbl_blk_numについては，マニュアルHADB　コマンドリファレンスのadbexport（データのエクスポート）のadbexportコマンドの指定形式のエクスポートオプションの形式を参照してください。

実際に確保されたローカル作業表用バッファのページ数は，adbls -d lbufコマンドで確認できます。adbls -d lbufコマンドについては，マニュアルHADB　コマンドリファレンスのadbls -d lbuf（ローカル作業表用バッファの情報表示）を参照してください。

このオペランドで指定したローカル作業表用バッファのページ数は，HADBサーバの稼働中に，adbmodbuffコマンドで変更できます。adbmodbuffコマンドについては，マニュアルHADB　コマンドリファレンスのadbmodbuff（バッファの変更）を参照してください。

［22］ adb_sql_tbldef_cache_size = 表定義プールサイズ

〜〈整数〉((500〜2,048,000))《5,120》（単位：キロバイト）

表定義情報を格納する表定義プールサイズをキロバイト単位で指定します。

通常，このオペランドは指定不要です。コスト情報を使用して運用する場合は，以降の説明を読み，適切な値を指定してください。

表定義情報とは，表にアクセスするために必要な情報で，表の情報だけではなく，列やインデクスの情報も含みます。表定義情報の作成時にはディクショナリ表へのアクセスが発生します。一度使用された表定義情報は，表定義プール（キャッシュ）に登録され，LRU方式で管理されます。

表定義プールに表定義情報が登録されていると，次にその表定義情報が必要になったとき，表定義プールから取り出して利用できます（ディクショナリ表にアクセスして表定義情報を作成する必要がなくなります）。したがって，表定義プールを使用することで，I/O回数の削減や，CPU使用時間の短縮が期待できます。

表へのアクセス時に必要な表定義情報が表定義プールに存在しない場合は，表定義情報が作成され，表定義プールに登録されます。表定義プール上に空き領域がない場合は，使用されていないほかの表定義情報が表定義プールから掃き出されたあとで，表定義情報が登録されます。なお，表定義プール上に空き領域が確保できなかったときは，表定義情報が登録されません。

このため，HADBで実行されるトランザクション中で使用する表の表定義情報をすべて格納できるように，次の計算式で求めた表定義プールサイズを指定してください。表定義プールの空き領域が不足して表定義情報の掃き出しが発生した場合，SQL文の性能に影響するおそれがあります。

計算式

変数の説明

m

頻繁にアクセスする表の数

Wi

表定義情報長（単位：バイト）

次に示す計算式で求めてください。

計算式

Wi ＝ 1,012＋（512＋32,008※1）×col_num＋max_rowsz
   ＋ 1,156×idx_num＋15,864※2

注※1

コスト情報を収集したことがある表の場合，加算してください。

コスト情報を収集したことがある表かどうかを確認する方法については，「付録C.9　システム表の検索」の「(1)　コスト情報を収集した全実表の表名と収集日時を調べる場合」を参照してください。

注※2

処理対象表がアーカイブマルチチャンク表の場合，加算してください。

col_num

表の列数

max_rowsz

最大行長（単位：バイト）

最大行長については，「5.8.2　行の種別ごとの格納ページ数の求め方」の「(1)　基本行用ページ数（変数BP（i））の求め方」の行長ROWSZの計算式を基に求めてください。

idx_num

表に定義されているインデクス数

7.2.3　システムログに関するオペランド（set形式）

［23］ adb_log_usrfile_num = ユーザログファイル数

〜〈整数〉((0〜10,240))《同時に表を更新できるリアルスレッド数》

特定のSQL文およびコマンドの実行時に必要なユーザログファイルの数を指定します。

指定値の分だけ，HADBサーバ開始時にユーザログファイルが作成されます。このオペランドの指定値については，「6.12.15　ユーザログファイル数の求め方」を参照してください。

留意事項を次に示します。

この指定を省略した場合，または0を指定した場合は，同時に表を更新できるリアルスレッド数が仮定されます。その結果，adb_log_usrfile_sizeオペランドに指定した容量のユーザログファイルが必要な分だけ作成されるようになります。そのため，ユーザログファイル数の不足によるエラーは発生しません。

このオペランドに1を指定した場合は，自動的に2が仮定されます。そのため，ユーザログファイルが2つ作成されます。

同時に表を更新できるリアルスレッド数より大きな値をこのオペランドに指定しても，同時に表を更新できるリアルスレッド数がこのオペランドの指定値として仮定されます。

作成されたユーザログファイルは，データベースの初期設定を再度実行するまで削除されません。そのため，次に示す計算式で求めた値以上の空き領域が，DBディレクトリ下のシステムディレクトリに存在することを確認してください。ただし，クラウドストレージ機能のシステムディレクトリ対応オプションを有効にしている場合は確認不要です。

計算式

なお，ここでの「データベースの初期設定」とは，マルチノード機能を使用していない場合は，adbinitコマンドの実行を意味しています。マルチノード機能を使用している場合は，データベース作成時の「18.4.8　データベースの作成」の「(2)　ノード切り替え対象のファイルシステムの初期化」で説明している作業の実行を意味しています。

［マルチノード機能］

マルチノード機能を使用する場合は，このオペランドは指定不要です。仮に指定値として有効な値を指定しても，プライマリノードおよびセカンダリノードでは，このオペランドに0が指定されたと仮定されます。そして，プライマリノードおよび各セカンダリノードで必要なユーザログファイル数が自動計算されて，最も大きい値が有効となります。

なお，ワーカーノードでは，ユーザログファイルは作成されません。

［24］ adb_log_usrfile_size = ユーザログファイルの初期化容量〔,ユーザログファイルの容量の縮小契機〕

ユーザログファイルの初期化容量とユーザログファイルの容量の縮小契機を指定します。

ユーザログファイルの初期化容量：

〜〈整数〉((16〜1,048,576))《16》（単位：メガバイト）

ユーザログファイルの初期化容量をメガバイト単位で指定します。

このオペランドの指定値については，「6.12.2　ユーザログファイルの容量の求め方」を参照してください。

［マルチノード機能］

ワーカーノードでは，ユーザログファイルは作成されません。

HAモニタありのマルチノード構成の場合，プライマリノードおよびセカンダリノードでは，プライマリノードおよび各セカンダリノードに指定したユーザログファイルの初期化容量のうち，最も大きい値が有効となります。

ユーザログファイルの容量の縮小契機：

～〈整数〉((0，32～2,097,152))《ユーザログファイルの初期化容量×2》（単位：メガバイト）

ユーザログファイルの容量を縮小する契機をメガバイト単位で指定します。更新トランザクションの決着時，更新トランザクションが使用していたユーザログファイルの容量が，ここで指定した容量を超えている場合，ユーザログファイルを初期化容量に縮小します。通常は，このオペランドの指定は不要です。

規則を次に示します。

ユーザログファイルの容量の縮小契機に0を指定した場合，ユーザログファイルの容量の縮小は行われません。

「ユーザログファイルの容量の縮小契機＜ユーザログファイルの初期化容量」の場合，デフォルト値（ユーザログファイルの初期化容量×2）が仮定されます。

［マルチノード機能］

「有効となったユーザログファイルの容量の縮小契機＜有効となったユーザログファイルの初期化容量」の場合，有効となったユーザログファイルの初期化容量の2倍の容量が，ユーザログファイルの容量の縮小契機として仮定されます。

ワーカーノードでは，ユーザログファイルが作成されないため，ユーザログファイルの縮小処理は行われません。

HAモニタありのマルチノード構成の場合，プライマリノードおよびセカンダリノードでは，プライマリノードおよび各セカンダリノードに指定したユーザログファイルの容量の縮小契機のうち，最も大きい値が有効となります。

また，プライマリノードおよび全セカンダリノードでユーザログファイルの容量の縮小契機に0を指定した場合，ユーザログファイルの容量の縮小は行われません。

［25］ adb_log_usrbuf_num = ユーザログバッファ面数

〜〈整数〉((64〜12,582,912))《64》

ユーザログファイルにアクセスするために使用するバッファの面数を指定します。

通常は，このオペランドの指定は不要です。指定値を大きくすると，ユーザログファイルへのアクセス速度が向上することがあります。

なお，HADBサーバは，ユーザログファイルごとにユーザログバッファを割り当てます。

［マルチノード機能］

ワーカーノードでは，このオペランドの指定値に関係なく，ユーザログバッファ面数は64になります。

HAモニタありのマルチノード構成の場合，プライマリノードおよびセカンダリノードでは，プライマリノードおよび各セカンダリノードに指定したユーザログバッファ面数のうち，最も大きい値が有効となります。

［26］ adb_log_rec_msg_interval = データベースの回復処理の経過時間を示すメッセージの出力間隔

〜〈整数〉((0〜60))《5》（単位：分）

データベースの回復処理の経過時間を示すメッセージの出力間隔を，分単位で指定します。

通常は，このオペランドの指定は不要です。

データベースの回復処理時に，このオペランドの指定値に従って，次に示す2つのメッセージが出力されます。

■KFAA81215-Iメッセージが出力されるケース

次のような処理が発生してデータベースの回復処理が開始された場合，このオペランドの指定値に従って，データベースの回復処理の経過時間を示すKFAA81215-Iメッセージが，一定の間隔で出力されます。

HADBサーバの再開始処理

トランザクションのロールバック処理

例えば，このオペランドに3を指定した場合，データベースの回復処理が開始されてから3分が経過するたびにKFAA81215-Iメッセージが出力されます。KFAA81215-Iメッセージの内容を確認することで，データベースの回復処理に関する進捗状況を把握できます。

■KFAA81211-Iメッセージが出力されるケース

データベースの回復処理中に，回復処理に時間が掛かったトランザクションが存在する場合は，KFAA81211-Iメッセージも出力されます。

例えば，このオペランドに3を指定した場合，1つのトランザクションの回復処理が3分以上掛かったときに，そのトランザクションの回復処理が終了するときにKFAA81211-Iメッセージが出力されます。KFAA81211-Iメッセージには，そのトランザクションの回復処理に関する情報が出力されます。この出力情報を，トランザクションの回復処理に時間が掛かった原因の判断材料の1つにしてください。

なお，このオペランドに0を指定した場合は，KFAA81211-Iメッセージ，およびKFAA81215-Iメッセージは出力されません。

7.2.4　状態監視に関するオペランド（set形式）

［27］ adb_sys_max_users_wrn_pnt = 最大同時接続数に関する警告メッセージの出力契機〔,警告メッセージの出力済み状態のリセット契機〕

このオペランドを指定すると，adb_sys_max_usersオペランドで指定した最大同時接続数の残り枠が少なくなったときに，警告メッセージKFAA40020-Wが出力されます。

最大同時接続数に関する警告メッセージの出力契機：

～〈整数〉((0～100))《0》（単位：%）

警告メッセージKFAA40020-Wの出力契機を，adb_sys_max_usersオペランドの指定値（最大同時接続数）に対する比率で指定します。例えば，adb_sys_max_usersオペランドに200を指定している場合に，最大同時接続数に関する警告メッセージの出力契機に90を指定すると，HADBサーバへの接続数が180（200の90%の値）以上になったときに警告メッセージが出力されます。

なお，最大同時接続数に関する警告メッセージの出力契機に0を指定した場合，警告メッセージは出力されません。

警告メッセージの出力済み状態のリセット契機：

～〈整数〉((0～99))（単位：%）

警告メッセージKFAA40020-Wの出力済み状態のリセット契機を，adb_sys_max_usersオペランドの指定値（最大同時接続数）に対する比率で指定します。警告メッセージは一度出力されると，警告メッセージ出力済み状態となり，HADBサーバへの接続数がある一定の値を下回らないかぎり警告メッセージは再出力されません。

メモ

adb_sys_max_users_wrn_pntオペランドの指定値と警告メッセージの出力の関係を次に示します。

adb_sys_max_users = 200
adb_sys_max_users_wrn_pnt = 90,70

上記のようにオペランドを指定した場合，HADBサーバへの接続数が180（200の90%の値）以上になったときに警告メッセージが出力されます。その後，HADBサーバへの接続数がいったん170に下がったあとに再度180以上になっても，警告メッセージは出力されません。

HADBサーバへの接続数が，140（200の70%の値）以下に下がった場合は，警告メッセージの出力済み状態がリセットされるため，HADBサーバへの接続数が再度180以上になったときに警告メッセージが出力されます。

警告メッセージの出力済み状態のリセット契機に関する留意事項を次に示します。

リセット契機の指定を省略した場合，「最大同時接続数に関する警告メッセージの出力契機－30」の値が仮定されます。その値がマイナスになる場合は，0が仮定されます。

「最大同時接続数に関する警告メッセージの出力契機 ＞警告メッセージの出力済み状態のリセット契機」となるように指定してください。この条件を満たさない場合，リセット契機の指定は無効になります（警告メッセージKFAA40022-Wが出力されます）。このとき，リセット契機には，「最大同時接続数に関する警告メッセージの出力契機－30」が仮定されます。

最大同時接続数に関する警告メッセージの出力契機に0を指定した場合，リセット契機の指定は無効になります。

［マルチノード機能］

マルチノード機能を使用する場合は，全ノードのHADBサーバでこのオペランドの指定値を同じにしてください。

警告メッセージKFAA40020-Wは，プライマリノードに出力されます。

［28］ adb_sys_memory_limit_wrn_pnt = HADBサーバのメモリ使用量に関する警告メッセージの出力契機〔,警告メッセージの出力済み状態のリセット契機〕

このオペランドを指定すると，HADBサーバが使用できるメモリの残容量が少なくなったときに，警告メッセージKFAA40021-Wが出力されます。

なお，adb_sys_memory_limitオペランドが指定されている場合に限り，adb_sys_memory_limit_wrn_pntオペランドの指定が有効になります。

HADBサーバのメモリ使用量に関する警告メッセージの出力契機：

～〈整数〉((0～100))《0》（単位：%）

警告メッセージKFAA40021-Wの出力契機を，adb_sys_memory_limitオペランドの指定値（HADBサーバが使用するメモリの最大サイズ）に対する比率で指定します。例えば，adb_sys_memory_limitオペランドに64,000メガバイトを指定している場合に，HADBサーバのメモリ使用量に関する警告メッセージの出力契機に90を指定すると，HADBサーバのメモリ使用量が57,600メガバイト（64,000の90%の値）以上になったときに警告メッセージが出力されます。

重要

HADBサーバの開始直後にadbls -d mem -aコマンドを実行し，その実行結果に出力されるTOTAL_USE_PERの値を確認してください。このオペランドには，TOTAL_USE_PERの値を超える値を指定してください。TOTAL_USE_PERには，adb_sys_memory_limitオペランドの指定値に対する現在のHADBサーバのメモリ使用量の割合（単位：％）が表示されます。

TOTAL_USE_PERの値以下の値を指定すると，HADBサーバの開始時点で警告メッセージの出力条件を満たしてしまうことがあります。この場合，HADBサーバの開始時に警告メッセージが出力され，HADBの稼働中には警告メッセージが出力されません。

なお，HADBサーバのメモリ使用量に関する警告メッセージの出力契機に0を指定した場合，警告メッセージは出力されません。

警告メッセージの出力済み状態のリセット契機：

～〈整数〉((0～99))（単位：%）

警告メッセージKFAA40021-Wの出力済み状態のリセット契機を，adb_sys_memory_limitオペランドの指定値（HADBサーバが使用するメモリの最大サイズ）に対する比率で指定します。警告メッセージは一度出力されると，警告メッセージ出力済み状態となり，HADBサーバのメモリ使用量がある一定の値を下回らないかぎり警告メッセージは再出力されません。

メモ

adb_sys_memory_limit_wrn_pntオペランドの指定値と警告メッセージの出力の関係を次に示します。

adb_sys_memory_limit = 64,000
adb_sys_memory_limit_wrn_pnt = 90,70

上記のようにオペランドを指定した場合，HADBサーバのメモリ使用量が57,600メガバイト（64,000の90%の値）以上になったときに警告メッセージが出力されます。その後，HADBサーバのメモリ使用量がいったん51,200メガバイト（64,000の80%の値）に下がったあとに再度57,600メガバイト以上になっても，警告メッセージは出力されません。

HADBサーバのメモリ使用量が，44,800メガバイト（64,000の70%の値）以下に下がった場合は，警告メッセージの出力済み状態がリセットされるため，HADBサーバのメモリ使用量が再度57,600メガバイト以上になったときに警告メッセージが出力されます。

警告メッセージの出力済み状態のリセット契機に関する留意事項を次に示します。

リセット契機の指定を省略した場合，「HADBサーバのメモリ使用量に関する警告メッセージの出力契機－30」の値が仮定されます。その値がマイナスになる場合は，0が仮定されます。

「HADBサーバのメモリ使用量に関する警告メッセージの出力契機 ＞警告メッセージの出力済み状態のリセット契機」となるように指定してください。この条件を満たさない場合，リセット契機の指定は無効になります（警告メッセージKFAA40022-Wが出力されます）。このとき，リセット契機には，「HADBサーバのメモリ使用量に関する警告メッセージの出力契機－30」が仮定されます。

HADBサーバのメモリ使用量に関する警告メッセージの出力契機に0を指定した場合，リセット契機の指定は無効になります。

［マルチノード機能］

警告メッセージKFAA40021-Wは，全ノードに出力されることがあります。

［29］ adb_dbarea_wrn_pnt_use_rate = データ用DBエリアの使用率〔,データ用DBエリアの使用率〔,データ用DBエリアの使用率〕〕

〜〈整数〉((0〜99))《0》（単位：%）

データ用DBエリアの使用率を監視する場合にこのオペランドを指定します。データ用DBエリアの使用率がこのオペランドの指定値に達したときに，警告メッセージKFAA41230-Wがメッセージログファイルに出力されます。このオペランドの指定例を次に示します。

（例）

set adb_dbarea_wrn_pnt_use_rate = 70,80,90

上記のように指定した場合，データ用DBエリアの使用率が70％，80％，90％に達したときに警告メッセージが出力されます。

なお，このオペランドに「90,70,80」と指定しても，「70％，80%，90%」に達したときに警告メッセージが出力されます。

重要

レギュラーファイルで構成されているデータ用DBエリアは，使用率の監視対象にはなりません。

データ用DBエリア以外のDBエリア（ディクショナリ用DBエリアなど）は，使用率の監視対象にはなりません。

なお，このオペランドを省略した場合，またはこのオペランドに0を指定した場合は，データ用DBエリアの使用率は監視されません。

データ用DBエリアの使用率は，次に示す計算式で算出されます。

データ用DBエリアの使用率＝↓割り当て済みのセグメント数÷割り当て可能なセグメント数↓

割り当て可能なセグメント数は，HADBサーバの開始時にデータ用DBエリアを構成するデータ用DBエリアファイルの容量を基に算出されます。

［マルチノード機能］

HAモニタありのマルチノード構成の場合，プライマリノードのこのオペランドの指定値が適用されます。そのため，プライマリノードの切り替えを想定して，セカンダリノードにもこのオペランドを指定し，プライマリノードと同じ値を指定してください。プライマリノードとセカンダリノードでオペランドの指定値が異なると，プライマリノードの切り替えが発生したときに，監視対象とする使用率が変わります。

（例）

ノードAの指定値：80,90

ノードBの指定値：85,95

上記の場合，ノードAがプライマリノードのときは，使用率が80％，90％に達したときに警告メッセージが出力されます。プライマリノードの切り替えが発生してノードBがプライマリノードになったときは，使用率が85％，95％に達したときに警告メッセージが出力されます。

なお，ワーカーノードはプライマリノードに切り替わることがないため，このオペランドを指定する必要はありません。

HAモニタなしのマルチノード構成の場合，プライマリノードにこのオペランドを指定してください。ワーカーノードにはこのオペランドを指定する必要はありません。

警告メッセージKFAA41230-Wは，プライマリノードだけに出力されます。

［30］ adb_dbarea_wrn_pnt_except_name = データ用DBエリア名〔,データ用DBエリア名〕…

〜〈文字列〉((1〜30バイト))

データ用DBエリアの使用率の監視対象から外したいデータ用DBエリアがある場合にこのオペランドを指定します。

adb_dbarea_wrn_pnt_use_rateオペランドを指定すると，ブロックスペシャルファイルで構成されているすべてのデータ用DBエリア（クラウドストレージ機能を使用している場合は全データ用DBエリア）が使用率の監視対象になります。この場合，警告メッセージKFAA41230-Wが頻繁に出力されることがあります。出力される警告メッセージの量を減らしたい場合にこのオペランドを指定してください。

例えば，次の条件をすべて満たす場合，警告メッセージが頻繁に出力されることがあります。このようなときにこのオペランドを指定して，警告メッセージの出力を抑止してください。

データ用DBエリアの使用率が常に安定している（例えば，80％くらいで安定しているとする）

データの削除と追加を頻繁に繰り返す

「adb_dbarea_wrn_pnt_use_rate = 70,80,90」と指定している

上記の場合，データを削除して追加するたびに，データ用DBエリアの使用率が80%を超えて警告メッセージが出力されます。

［マルチノード機能］

HAモニタありのマルチノード構成の場合，プライマリノードのこのオペランドの指定値が適用されます。そのため，プライマリノードの切り替えを想定して，セカンダリノードにもこのオペランドを指定し，プライマリノードと同じデータ用DBエリアを指定してください。プライマリノードとセカンダリノードで指定したデータ用DBエリアが異なると，プライマリノードの切り替えが発生したときに，監視対象外とするデータ用DBエリアが変わります。

なお，ワーカーノードはプライマリノードに切り替わることがないため，このオペランドを指定する必要はありません。

HAモニタなしのマルチノード構成の場合，プライマリノードにこのオペランドを指定してください。ワーカーノードにはこのオペランドを指定する必要はありません。

［31］ adb_rpc_wait_time = 応答待ち時間の上限

〜〈整数〉((0〜86,400))《1,800》（単位：秒）

HADBクライアントからの処理要求に応答してから，次の処理要求を受けるまでの待ち時間の上限を秒単位で指定します。

ここで指定した待ち時間を超えても，HADBクライアントから処理要求がなかった場合，HADBクライアントとの接続を切り離します。トランザクション処理中の場合は，そのトランザクションをロールバックしてからHADBクライアントとの接続を切り離します。

なお，このオペランドに0を指定した場合，待ち時間の上限は設定されません。

［マルチノード機能］

プライマリノードの切り替えが発生した時点で，HADBサーバに接続だけしていてトランザクションを実行していないAPは，HADBサーバから切り離されます。

［32］ adb_rpc_tcp_keepalive_time = KeepAliveプローブ開始までの無通信時間

〜〈整数〉((0〜120))《10》（単位：分）

HADBクライアントと確立したコネクションについて，KeepAliveプローブによる生存確認を開始するまでの無通信時間を，分単位で指定します。

通常は，このオペランドの指定は不要です。このオペランドを指定すると，OSのKeepAlive制御（KeepAliveプローブを開始するまでの無通信時間）を変更できます。

KeepAliveプローブに対する応答がない場合は，生存確認を30秒ごとに4回繰り返します。それでも応答がない場合は，HADBクライアントとのコネクションを切断します。

なお，このオペランドに0を指定した場合は，KeepAliveプローブによる生存確認を行いません。

メモ

KeepAliveは，一定時間ごとに送信するプローブパケットに対する応答有無によって，コネクションの生存を確認する機能です。また，プローブパケットは，通信回線の生存を確認するために送信するパケットのことです。

7.2.5　排他制御に関するオペランド（set形式）

［33］ adb_sys_lck_conflict_behavior =｛NOWAIT｜WAIT｝

次に示す排他資源が確保できなかったときの排他制御を指定します。

前処理表（処理対象表が実表の場合に限ります）

処理対象表を格納しているデータ用DBエリア（adbdbstatusコマンドの場合，ディクショナリ用DBエリアおよびシステム表用DBエリアも該当します）

処理対象表

・NOWAIT

このオペランドの対象となる処理で上記の排他資源が確保できなかった場合，排他資源の競合によるエラー（KFAA40005-Eメッセージが出力）となります。

バージョン05-07以前と同じ排他制御にしたい場合は，NOWAITを指定してください。

なお，バージョン05-07以前から上記の排他資源をWAITモードがWAITで確保していた処理については，このオペランドにNOWAITを指定してもWAITモードがWAITのままとなります。

・WAIT

このオペランドの対象となる処理で上記の排他資源を確保できなかった場合，上記の排他資源を確保するまで処理が待ち状態になります。この場合，排他資源の競合によるエラーが発生しないため，このオペランドの対象となる処理を同時に実行することができます。

次のSQL文およびコマンドの処理がこのオペランドの対象となる処理です。このオペランドの指定値によって排他制御が変わります。

CREATE TABLE文，CREATE INDEX文，CREATE FOREIGN TABLE文

ALTER TABLE文

DROP TABLE文，DROP INDEX文，DROP SCHEMA文，DROP USER文，DROP FOREIGN TABLE文

INSERT文，UPDATE文，DELETE文

PURGE CHUNK文

TRUNCATE TABLE文

adbimportコマンド（バックグラウンドインポートの実行時に限る）

adbdbstatusコマンド

adbchgchunkcommentコマンド，adbchgchunkstatusコマンド

上記以外のSQL文およびコマンドについては，このオペランドの指定値に関係なく同じ排他制御（バージョン05-07以前と同じ排他制御）が行われます。

重要

このオペランドにWAITを指定した場合，排他資源を確保できなかったときは上記のSQL文またはコマンドの処理が待ち状態になるため，SQL文またはコマンドの処理時間が長くなるおそれがあります。そのため，上記のSQL文またはコマンドの処理のタイムアウト時間の指定を検討してください。SQL文の場合は，クライアント定義のadb_clt_rpc_sql_wait_timeオペランドでタイムアウト時間を指定します。コマンドの場合は，各コマンドの--timeoutオプションでタイムアウト時間を指定します。

［マルチノード機能］

マルチノード機能を使用する場合は，全ノードのHADBサーバでこのオペランドの指定値を同じにしてください。

7.2.6　SQL文に関するオペランド（set形式）

［34］ adb_sql_prep_delrsvd_words = 削除する予約語〔，削除する予約語〕…

〜〈文字列〉((1〜100バイト))

HADBの予約語から削除する語を指定します。削除する予約語は999個まで指定できます。

削除する予約語は，¥"（バックスラッシュと二重引用符）で囲んだ英大文字で指定してください。または，¥"（バックスラッシュと二重引用符）で囲まない英大文字，英小文字で指定してください。指定した予約語が正しく削除される指定例を次に示します。

（例）予約語「ABS」を削除する場合の指定例

adb_sql_prep_delrsvd_words = ¥"ABS¥"

adb_sql_prep_delrsvd_words = ABS

adb_sql_prep_delrsvd_words = abs

メモ

文字列を¥"（バックスラッシュと二重引用符）で囲むと，英大文字と英小文字が区別されます。したがって，「¥"abs¥"」のように英小文字を¥"（バックスラッシュと二重引用符）で囲んで指定すると，文字列が英小文字として扱われます。しかし，HADBには英小文字の予約語はないため，英小文字を¥"（バックスラッシュと二重引用符）で囲んで指定しても予約語は削除されません。

なお，adb_sql_prep_delrsvd_wordsオペランドで削除できる予約語はあらかじめ決まっています。指定した単語が予約語ではない，または削除できない予約語の場合，警告メッセージ（KFAA51111-Wメッセージ）が出力されます。

削除できない予約語については，マニュアルHADB　SQLリファレンスの予約語の一覧を参照してください。

［マルチノード機能］

マルチノード機能を使用する場合は，全ノードのHADBサーバでこのオペランドの指定値を同じにしてください。その際，予約語の指定順序も同じにしてください。

［35］ adb_sys_trn_iso_lv = ｛READ_COMMITTED｜REPEATABLE_READ｝

適用するトランザクション隔離性水準を指定します。トランザクション隔離性水準については，「2.9.2　HADBがサポートしているトランザクション隔離性水準」を参照してください。

READ_COMMITTED

トランザクション隔離性水準にREAD COMMITTEDを適用します。

REPEATABLE_READ

トランザクション隔離性水準にREPEATABLE READを適用します。

［マルチノード機能］

マルチノード機能を使用する場合は，全ノードのHADBサーバでこのオペランドの指定値を同じにしてください。

［36］ adb_sql_text_out = ｛Y｜N｝

HADBサーバが受け付けたすべてのSQL文をサーバメッセージログファイルに出力するかどうかを指定します。

Yを指定した場合，各SQL文の先頭から2,048バイト分まで出力されます。

Y

SQL文をサーバメッセージログファイルに出力します。

N

SQL文をサーバメッセージログファイルに出力しません。

このオペランドにNを指定した場合，またはこのオペランドを省略した場合でも，クライアント定義のadb_clt_sql_text_outオペランドにYを指定したときは，SQL文をサーバメッセージログファイルに出力します。

adb_clt_sql_text_outオペランドについては，マニュアルHADB　AP開発ガイドのSQLに関するオペランドを参照してください。

［37］ adb_sql_trc_out = ｛Y｜N｝

SQL文を実行したときに，SQLトレース情報を出力するかどうかを指定します。

Y

SQLトレース情報をSQLトレースファイルに出力します。

N

SQLトレース情報をSQLトレースファイルに出力しません。

なお，このオペランドにNを指定した場合，次に示すオペランドの指定値に関係なく，SQLトレース情報は出力されません。

サーバ定義adb_sql_trc_paramオペランド

サーバ定義adb_sql_trc_accesspathオペランド

サーバ定義adb_sql_trc_levelオペランド

サーバ定義adb_sql_trc_txtfile_sizeオペランド

［38］ adb_sql_trc_param = ｛Y｜N｝

SQLトレース情報に？パラメタの情報を出力するかどうかを指定します。

Y

SQLトレース情報に？パラメタの情報を出力します。

N

SQLトレース情報に？パラメタの情報を出力しません。

なお，このオペランドにYを指定しても，サーバ定義adb_sql_trc_outオペランドにNを指定した場合，？パラメタの情報は出力されません。

［39］ adb_sql_trc_accesspath = ｛Y｜N｝

SQLトレース情報にアクセスパス情報およびアクセスパスの統計情報を出力するかどうかを指定します。

Y

SQLトレース情報にアクセスパス情報およびアクセスパスの統計情報を出力します。

N

SQLトレース情報にアクセスパス情報およびアクセスパスの統計情報を出力しません。

なお，このオペランドにYを指定しても，サーバ定義adb_sql_trc_outオペランドにNを指定した場合，アクセスパス情報およびアクセスパスの統計情報は出力されません。

［40］ adb_sql_trc_level = ｛SQL｜CALL｝

SQLトレース情報を出力する単位を指定します。

SQL

SQLトレース情報をSQL文単位で出力します。

CALL

SQLトレース情報をコール単位で出力します。

［41］ adb_sql_trc_txtfile_size = SQLトレースファイルの最大容量

〜〈整数〉((32〜1,024))《256》（単位：メガバイト）

SQLトレースファイル1つ当たりの最大容量をメガバイト単位で指定します。SQLトレースファイルは8つ作成されます。

通常は，このオペランドの指定は不要です。SQLトレースファイルの最大容量を変更したい場合に，このオペランドを指定してください。

なお，このオペランドで指定したSQLトレースファイルの最大容量は，HADBサーバを起動したときに有効となります。ただし，このオペランドの指定値を小さくした場合，HADBサーバを起動した直後には，このオペランドの指定値よりも容量が大きいSQLトレースファイルが存在することがあります。この場合は，SQLトレースファイルの切り替えが発生して，対象のSQLトレースファイルにSQLトレース情報が出力されるときに，このオペランドで指定したSQLトレースファイルの最大容量が有効となります。

［42］ adb_sql_order_mode = ｛BYTE｜ISO｝

次のORDER BY句を指定したときの文字データの並び替え順序を指定します。

SELECT文の最も外側の問合せ式に指定したORDER BY句

COPY文の最も外側の問合せ式本体に指定したORDER BY句

このオペランドを省略した場合は，BYTEが仮定されます。

BYTE

文字データをバイトコード順に並び替えます。

ISO

文字データをソートコード順（ISO/IEC14651:2011準拠）に並び替えます。

ただし，環境変数ADBLANGにSJISを指定している場合は，このオペランドにISOを指定できません。

このオペランドの指定値に関係なく，副問合せまたはWITHリスト要素に指定したORDER BY句の文字データはバイトコード順に並び替えられます。

［マルチノード機能］

マルチノード機能を使用する場合は，全ノードのHADBサーバでこのオペランドの指定値を同じにしてください。

なお，文字データの並び替え順序は，クライアント定義adb_clt_sql_order_modeオペランド，およびコネクション属性でも指定できます。それぞれ指定した場合は，次の表に示す優先順位に従って指定が決まります（優先順位の番号が小さいほど，優先順位が高くなります）。

表7‒5　文字データの並び替え順序の優先順位

優先順位

文字データの並び替え順序の指定個所

1

コネクション属性

2

クライアント定義adb_clt_sql_order_modeオペランド

3

サーバ定義adb_sql_order_modeオペランド

［説明］

例えば，サーバ定義adb_sql_order_modeオペランドにISOを指定し，クライアント定義adb_clt_sql_order_modeオペランドにBYTEを指定した場合，次のORDER BY句にはBYTEが適用されます。

SELECT文の最も外側の問合せ式に指定したORDER BY句

COPY文の最も外側の問合せ式本体に指定したORDER BY句

なお，上記の表中のすべての個所で指定を省略した場合は，BYTEが仮定されます。

［43］ adb_sql_prep_dec_div_rs_prior = ｛INTEGRAL_PART｜FRACTIONAL_PART｝

SQL文中に指定した除算（四則演算）の結果のデータ型がDECIMAL型の場合，除算結果の位取りの最小値を指定します。

INTEGRAL_PART：

除算結果の位取りの最小値を0とします。INTEGRAL_PARTを指定した場合，整数部の桁数が優先されます。そのため，除算結果が大きな数値となる可能性があるSQL文を実行する際に，オーバフローエラーの発生を極力回避したい場合は，INTEGRAL_PARTを指定してください。

FRACTIONAL_PART：

除算の第1演算項（被除数）の位取りを，除算結果の位取りの最小値とします。FRACTIONAL_PARTを指定した場合，第1演算項の小数部の桁数が，除算結果の小数部の桁数の最小値になります。

第1演算項をDECIMAL(p1,s1)，第2演算項をDECIMAL(p2,s2)とした場合，除算結果はDECIMAL(38,s)となります。

INTEGRAL_PARTを指定した場合

s＝MAX｛0，38−（p1−s1＋s2）｝

FRACTIONAL_PARTを指定した場合

s＝MAX｛s1，38−（p1−s1＋s2）｝

このオペランドの指定値による除算結果の違いの例を次に示します。

（例）

次のSELECT文を実行したとします。

SELECT "C1"/"C2" AS "除算結果" FROM "T1"

INTEGRAL_PARTを指定した場合の除算結果

584.

FRACTIONAL_PARTを指定した場合の除算結果

584.4457

ビュー表を検索したときの除算結果の位取りの例については，マニュアルHADB　SQLリファレンスの除算結果のデータ型がDECIMAL型の場合の留意事項を参照してください。

［マルチノード機能］

マルチノード機能を使用する場合は，全ノードのHADBサーバでこのオペランドの指定値を同じにしてください。

［44］ adb_sql_prep_null_collation = ｛HIGH｜LOW｝

SQL文中のナル値ソート順指定を省略した場合の，ナル値のソート位置を指定します。

HIGH：

ナル値を高位にソートします。

LOW：

ナル値を低位にソートします。

ナル値のソート位置は，次の個所で指定できます。1.が優先順位がいちばん高くなります。

SQL文中のナル値ソート順指定

クライアント定義のadb_sql_prep_null_collationオペランド

サーバ定義のadb_sql_prep_null_collationオペランド

上記の1.のナル値ソート順指定を省略した場合のナル値の並び順を次の表に示します。

表7‒6　ナル値ソート順指定を省略した場合のナル値の並び順

adb_sql_prep_null_collation オペランドの指定値

順序付け指定の指定値

ナル値の並び順

HIGHまたは省略

ASCまたは省略

ナル値を末尾に並べ替えます。

DESC

ナル値を先頭に並べ替えます。

LOW

ASCまたは省略

ナル値を先頭に並べ替えます。

DESC

ナル値を末尾に並べ替えます。

メモ

ナル値ソート順指定，および順序付け指定は，SQL文中のソート指定リストで指定します。ナル値ソート順指定および順序付け指定については，マニュアルHADB　SQLリファレンスのソート指定リストの指定形式を参照してください。

［マルチノード機能］

マルチノード機能を使用する場合は，全ノードのHADBサーバでこのオペランドの指定値を同じにしてください。

［45］ adb_sql_default_dbarea_shared = 表またはインデクスを格納するデフォルトのデータ用DBエリア名

～〈文字列〉((1～30バイト))

データ用DBエリア名を指定します。ここで指定したデータ用DBエリアは，次のSQL文で，表またはインデクスを格納するDBエリアの指定を省略したときに，表またはインデクスを格納するデフォルトのDBエリアになります。

CREATE TABLE文

CREATE INDEX文

ALTER TABLE文

DBエリア名を指定する際の名称規則については，マニュアルHADB　SQLリファレンスの名前の指定を参照してください。

なお，次のどちらかに該当する場合，HADBサーバの開始時に警告メッセージが出力されます。警告の内容を対処すると，このオペランドの指定値が有効になります。

このオペランドにデータ用DBエリアではないDBエリアを指定した場合

このオペランドに存在しないDBエリアを指定した場合

［マルチノード機能］

ワーカーノードのHADBサーバには，このオペランドを指定する必要はありません。

HAモニタありのマルチノード構成の場合は，プライマリノードおよびセカンダリノードのHADBサーバでこのオペランドの指定値を同じにしてください。

7.2.7　インデクスに関するオペランド（set形式）

［46］ adb_sql_opt_col_bidx_sel_mode = ｛DEFAULT｜LIMITED｝

コスト情報を収集していないカラムストア表のB-treeインデクスの選択規則を指定するオペランドです。

通常，このオペランドを指定する必要はありません。コスト情報を収集していないカラムストア表のB-treeインデクスの選択規則を変更したい場合に，このオペランドにLIMITEDを指定することを検討してください。

メモ

コスト情報を収集しているカラムストア表のB-treeインデクスの選択には，このオペランドの指定は影響を及ぼしません。

DEFAULT：

コスト情報を収集していないカラムストア表のB-treeインデクスの選択規則を，コスト情報を収集していないローストア表の検索時に使用するB-treeインデクスの選択規則と同じにします。B-treeインデクスの選択規則については，マニュアルHADB　AP開発ガイドのインデクスの優先順位と選択規則を参照してください。

LIMITED：

コスト情報を収集していないカラムストア表のB-treeインデクスの選択規則を，DEFAULTを指定したときと変更します。LIMITEDを指定すると，マニュアルHADB　AP開発ガイドのSQL文の実行時に使用されるB-treeインデクスおよびテキストインデクスの重要に記載されている条件に該当する場合にB-treeインデクスが使用されます。

［マルチノード機能］

マルチノード機能を使用する場合は，全ノードのHADBサーバでこのオペランドの指定値を同じにすることを推奨します。各ノードでこのオペランドの指定値が異なる場合，SQL文を実行するノードごとに異なるアクセスパスになるおそれがあります。

［47］ adb_sql_rngidx_preread =｛ALL｜NO｜レンジインデクス名〔，レンジインデクス名〕…｝

HADBサーバの開始時に一括先読みするレンジインデクスを指定します。レンジインデクスの一括先読みについては，「5.5.3　レンジインデクスの一括先読み」を参照してください。

ALL：

全レンジインデクスを一括先読みします。

NO：

レンジインデクスの一括先読みを行いません。

レンジインデクス名：

〜〈文字列〉((1〜205バイト))

一括先読みするレンジインデクスを指定します。レンジインデクス名は8,192個まで指定できます。レンジインデクスの指定順に一括先読みされます。

重要

レンジインデクス名は，「スキーマ名.インデクス識別子」の形式で指定してください。スキーマ名を省略することはできません。

（例）¥"ADBUSER01¥".¥"RINDX01¥"

留意事項を次に示します。

レンジインデクスを一括先読みするには，adbbuffオペランドの-aオプション（レンジインデクス専用のグローバルバッファのページ数）の指定が必要です。そのため，一括先読み対象となるレンジインデクスを格納しているDBエリアにグローバルバッファを割り当てる際は，必ず-aオプションを指定してください。

レンジインデクスを一括先読みする際，1回のページ要求で，複数のページを読み込みます。そのため，adbstatコマンドを実行して出力される「グローバルバッファの統計情報」のうち，次に示す2つの情報が一致しないことがあります。

・DBbuff_page_rng_request_cnt（レンジインデクスバッファのページ要求回数）

・DBbuff_page_rng_pagein_cnt（レンジインデクスバッファのページイン回数）

adbstatコマンドについては，マニュアルHADB　コマンドリファレンスのadbstat（HADBサーバの統計解析）を参照してください。

レンジインデクスの一括先読み中にadbbuffオペランドの-aオプションで指定したページが満杯になった場合，一部のレンジインデクスだけが読み込まれた状態になります。

未完状態のレンジインデクスは一括先読みされません。

指定したレンジインデクス名に構文的な誤りなどがある場合，そのレンジインデクスは一括先読みされません。そのほかのレンジインデクスについては，一括先読みされます。

7.2.8　統計情報に関するオペランド（set形式）

［48］ adb_sta_log_max_size = 統計ログファイルの最大容量

〜〈整数〉((1〜16))《4》（単位：ギガバイト※）

統計ログファイル1つ当たりの最大容量をギガバイト単位で指定します。統計ログファイルは4つ作成されます。

通常は，このオペランドの指定は不要です。統計ログファイルの最大容量を小さくしたい場合に，このオペランドを指定してください。

なお，このオペランドで指定した統計ログファイルの最大容量は，統計ログファイルが切り替わったときに有効となります。そのため，このオペランドを指定しても，統計ログファイルの切り替えが発生するまでは，統計ログファイルの最大容量がこのオペランドの指定値と異なります。

注※

小容量での統計ログファイルの切り替えテストを実施する場合，adb_sta_log_size_unitオペランドで統計ログファイル最大容量の単位を小さくする（メガバイトに変更する）ことができます。

［49］ adb_sta_log_path = 統計ログファイルの出力先ディレクトリ名

〜〈パス名〉((2〜510バイト))

統計ログファイルの出力先ディレクトリ名を絶対パスで指定します。

このオペランドで指定したディレクトリ下に，統計ログファイルが出力されます。

通常，このオペランドは指定不要です。このオペランドを省略した場合，統計ログファイルの出力先ディレクトリは，$ADBDIR/spoolになります。

$ADBDIR/spoolディレクトリ下以外に，統計ログファイルを出力したい場合に，このオペランドを指定してください。

このオペランドを指定する場合の注意事項を次に示します。

統計ログファイルだけを格納する専用のディレクトリを指定してください。

HADB管理者に，アクセス権限（読み取り権限，書き込み権限，および実行権限）が付与されたディレクトリを指定してください。

十分な空き容量が確保されているディスク上のディレクトリを指定してください。

adb_sta_log_max_sizeオペランド，およびadb_sta_log_size_unitオペランドを省略した場合，統計ログファイル1つ当たりの最大容量は4ギガバイトです。また，統計ログファイルは4つ作成されます。そのため，16ギガバイト以上の容量が必要です。

メモ

統計ログファイル1つ当たりの最大容量は，サーバ定義adb_sta_log_max_sizeオペランド，およびadb_sta_log_size_unitオペランドで変更できます。

統計ログファイルの出力先ディレクトリを変更した場合，変更前の統計ログファイルに格納されている統計情報を参照できなくなります。そのため，統計ログファイルの出力先ディレクトリを変更する前に，adbstatコマンドを実行して統計情報を出力しておいてください。

なお，統計ログファイルの出力先ディレクトリを作成するディスクには，セクターサイズが512バイトまたは4,096バイトのディスクが使用できます。

［50］ adb_sta_log_size_unit = ｛G｜M｝

adb_sta_log_max_sizeオペランドで指定した統計ログファイルの最大容量の，単位を切り替える場合に設定します。

通常の運用時には，このオペランドを省略してください。このオペランドは統計ログファイルの切り替えテストなどで，最大容量の単位をメガバイト単位に変更したい場合に使用します。このオペランドを指定していると，警告メッセージKFAA52201-Wが出力されます。

G

統計ログファイルの最大容量の単位をギガバイトとします。

M

統計ログファイルの最大容量の単位をメガバイトとします。

7.2.9　同義語検索に関するオペランド（set形式）

［51］ adb_syndict_storage_path = 同義語辞書ファイルの格納ディレクトリ

〜〈パス名〉((2〜510バイト))

同義語辞書ファイルの格納ディレクトリを絶対パス名で指定します。同義語検索を行う場合は，このオペランドを指定してください。

このオペランドを指定する場合は，「11.19.1　同義語検索を行うための準備をする」の「(3)　同義語辞書ファイルの格納ディレクトリに必要な容量を見積もる」〜「(6)　サーバ定義を修正する」を参照してください。

［マルチノード機能］

ワーカーノードのHADBサーバには，このオペランドを指定する必要はありません。

HAモニタありのマルチノード構成の場合は，プライマリノードおよびセカンダリノードのHADBサーバでこのオペランドの指定値を同じにしてください。

メモ

このオペランドを省略した状態でadbsyndictコマンドを実行した場合，adbsyndictコマンドがエラーになります。

このオペランドの指定内容に誤りがあった場合，HADBサーバの開始時にエラーになります。

［52］ adb_syndict_node_storage_path = マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリ

～〈パス名〉((2～510バイト))

マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリを絶対パス名で指定します。マルチノード機能の使用時に同義語検索を行う場合に，このオペランドを指定してください。このオペランドを指定する場合は，「18.28.1　同義語検索を行うための準備をする」の「(6)　マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリを作成する」を参照してください。

重要

このオペランドの指定を変更した場合，adbsyndictコマンドを実行して同義語辞書ファイルの同期を取る必要があります。詳細については，「18.28.5　同義語辞書ファイルの同期を取る」を参照してください。

メモ

このオペランドを省略した状態でadbsyndictコマンド（同義語辞書の登録または更新，同義語辞書ファイルの同期）を実行した場合，adbsyndictコマンドがエラーになります。

このオペランドの指定内容に誤りがあった場合，HADBサーバの開始時にエラーになります。

次の条件をすべて満たす場合，警告メッセージKFAA51525-Wが出力されます。

・マルチノード機能を使用している

・adb_syndict_storage_pathオペランドを指定している

・adb_syndict_node_storage_pathオペランドを指定していない

7.2.10　監査証跡機能に関するオペランド（set形式）

［53］ adb_audit_log_path = 監査証跡の出力先ディレクトリ

〜〈パス名〉((2〜510バイト))

監査証跡の出力先ディレクトリを絶対パス名で指定します。監査証跡機能を使用する場合，このオペランドは必ず指定してください。

［54］ adb_audit_log_max_size = 監査証跡ファイルの最大容量

～〈整数〉((256～1,024))《256》（単位：メガバイト）

監査証跡ファイル1つ当たりの最大容量をメガバイト単位で指定します。

通常，このオペランドの指定は不要です。監査証跡ファイルの最大容量を大きくしたい場合に，このオペランドを指定してください。

なお，JP1/Auditと連携して監査証跡を管理する場合は，このオペランドにはデフォルト値を指定してください。監査証跡ファイルの最大容量が大きいと，JP1/Auditによる監査証跡の収集漏れが発生するおそれがあります。

［55］ adb_audit_log_max_num = 監査証跡ファイルの最大世代数

～〈整数〉((0，4～10,000))《0》

監査証跡の出力先ディレクトリ下に作成される監査証跡ファイルの最大世代数を指定します。

このオペランドの指定値が，監査証跡の出力先ディレクトリ下に作成される監査証跡ファイル数の上限値になります。

通常，このオペランドの指定は不要です。作成される監査証跡ファイル数の上限を設定したい場合に，このオペランドを指定してください。監査証跡ファイル数が上限を超えた場合，いちばん古い監査証跡ファイルが削除されます。

このオペランドを省略した場合，またはこのオペランドに0を指定した場合は，上限なく監査証跡ファイルが作成されます。

また，このオペランドに1～3を指定した場合は，4を指定したと仮定されます。その際，KFAA51413-Wメッセージが出力されます。

このオペランドの指定値は，HADBサーバを開始したときに有効となります。

重要

このオペランドの指定値を変更する場合は，監査証跡の出力先ディレクトリに格納されている監査証跡ファイル数を確認してください。そして，確認した監査証跡ファイル数よりも大きい値を，このオペランドに指定してください。

監査証跡の出力先ディレクトリに格納されている監査証跡ファイル数よりも小さい値をこのオペランドに指定した場合は，HADBサーバは開始できません（エラーとなります）。

7.2.11　DBエリア暗号化機能に関するオペランド（set形式）

［56］ adb_crypto_dmkey_path = HADB暗号鍵ファイルのパス名

〜〈OSパス名〉((2〜510バイト))

HADB暗号鍵ファイル名を絶対パスで指定します。DBエリア暗号化機能を使用する場合は，このオペランドを指定してください。

DBエリア暗号化機能については，「2.19　DBエリア暗号化機能」を参照してください。

［マルチノード機能］

全ノードにこのオペランドを指定してください。各ノードでパス名が異なっていても問題はありませんが，同じHADB暗号鍵ファイルを指定してください。

7.2.12　PAM認証に関するオペランド（set形式）

［57］ adb_auth_passwd_privkey_path = パスワードの復号に使用する秘密鍵ファイルのパス名

〜〈OSパス名〉((2〜510バイト))

パスワードの復号に使用する秘密鍵ファイル名を絶対パスで指定します。PAM認証を使用する場合，基本的にはこのオペランドを指定してください。このオペランドを指定しないと，PAM認証で使用するパスワードが暗号化されません。HADBクライアントからHADBサーバにパスワードが平文の状態で送信されます。

PAM認証については，「2.6.2　PAM認証」を参照してください。

重要

このオペランドを指定する場合は，次の2つのオペランドも一緒に指定してください。また，このオペランドを省略した場合は，次の2つのオペランドも省略してください。

サーバ定義のadb_cmd_passwd_pubkey_pathオペランド

クライアント定義のadb_clt_passwd_pubkey_pathオペランド

［マルチノード機能］

HAモニタありのマルチノード構成の場合

プライマリノードおよびセカンダリノードにこのオペランドを指定してください。各ノードで秘密鍵ファイルのパス名が異なっていても問題はありませんが，同じ秘密鍵ファイルを指定してください。

なお，ワーカーノードには，このオペランドを指定する必要はありません。

HAモニタなしのマルチノード構成の場合

プライマリノードにだけこのオペランドを指定してください。ワーカーノードには，このオペランドを指定する必要はありません。

［58］ adb_cmd_passwd_pubkey_path = コマンド実行時に指定したパスワードの暗号化に使用する公開鍵ファイルのパス名

〜〈OSパス名〉((2〜510バイト))

コマンドの実行時に指定するパスワードの暗号化に使用する公開鍵ファイル名を絶対パスで指定します。PAM認証を使用する場合，基本的にはこのオペランドを指定してください。

重要

このオペランドを指定する場合は，次の2つのオペランドも一緒に指定してください。また，このオペランドを省略した場合は，次の2つのオペランドも省略してください。

サーバ定義のadb_auth_passwd_privkey_pathオペランド

クライアント定義のadb_clt_passwd_pubkey_pathオペランド

［マルチノード機能］

全ノードにこのオペランドを指定してください。各ノードで公開鍵ファイルのパス名が異なっていても問題はありませんが，同じ公開鍵ファイルを指定してください。

7.2.13　Keycloak認証に関するオペランド（set形式）

［59］ adb_auth_keyc_endpoint = HADBサーバが接続するKeycloakサーバのエンドポイントURL

〜〈文字列〉((1～100バイト))

HADBサーバが接続するKeycloakサーバのエンドポイントURLを次の形式で指定します。Keycloak認証を使用する場合は，このオペランドの指定は必須です。

https://ホスト名:ポート番号

下線部分はhttpも指定可能です。

Keycloak認証については，「2.6.3　Keycloak認証」を参照してください。

［マルチノード機能］

HAモニタありのマルチノード構成の場合

プライマリノードと全セカンダリノードにこのオペランドを指定してください（同じエンドポイントURLを指定します）。ワーカーノードには，このオペランドを指定する必要はありません。

HAモニタなしのマルチノード構成の場合

プライマリノードにだけこのオペランドを指定してください。ワーカーノードには，このオペランドを指定する必要はありません。

［60］ adb_auth_clt_keyc_endpoint = HADBクライアントが接続するKeycloakサーバのエンドポイントURL

〜〈文字列〉((1～100バイト))

HADBクライアントが接続するKeycloakサーバのエンドポイントURLを次の形式で指定します。

https://ホスト名:ポート番号

下線部分はhttpも指定可能です。

HADBサーバが接続するKeycloakサーバのエンドポイントURLと，HADBクライアントが接続するKeycloakサーバのエンドポイントURLが異なる場合に，このオペランドを指定してください。このオペランドの指定を省略した場合は，adb_auth_keyc_endpointオペランドで指定したエンドポイントURLが仮定されます。

［マルチノード機能］

HAモニタありのマルチノード構成の場合

プライマリノードと全セカンダリノードにこのオペランドを指定してください（同じエンドポイントURLを指定します）。ワーカーノードには，このオペランドを指定する必要はありません。

HAモニタなしのマルチノード構成の場合

プライマリノードにだけこのオペランドを指定してください。ワーカーノードには，このオペランドを指定する必要はありません。

［61］ adb_auth_keyc_realm = Keycloakサーバで作成したレルム名

〜〈文字列〉((1～255バイト))

Keycloakサーバで作成したレルム名を指定します。Keycloak認証を使用する場合は，このオペランドの指定は必須です。

［マルチノード機能］

HAモニタありのマルチノード構成の場合

プライマリノードと全セカンダリノードにこのオペランドを指定してください（同じレルム名を指定します）。ワーカーノードには，このオペランドを指定する必要はありません。

HAモニタなしのマルチノード構成の場合

プライマリノードにだけこのオペランドを指定してください。ワーカーノードには，このオペランドを指定する必要はありません。

［62］ adb_auth_keyc_clt_id = Keycloakサーバで作成したクライアントID

〜〈文字列〉((1～255バイト))

Keycloakサーバで作成したクライアントのクライアントIDを指定します。Keycloak認証を使用する場合は，このオペランドの指定は必須です。

［マルチノード機能］

HAモニタありのマルチノード構成の場合

プライマリノードと全セカンダリノードにこのオペランドを指定してください（同じクライアントIDを指定します）。ワーカーノードには，このオペランドを指定する必要はありません。

HAモニタなしのマルチノード構成の場合

プライマリノードにだけこのオペランドを指定してください。ワーカーノードには，このオペランドを指定する必要はありません。

7.2.14　コマンドに関するオペランド（set形式）

［63］ adb_cmd_dvbix_rthd_use = ｛FIXED｜VARIABLE｝

次のコマンドのB-treeインデクスの作成処理時に，B-treeインデクス作成用スレッド数の調整機能を有効にするかどうかを指定します。

adbimportコマンド

adbidxrebuildコマンド

adbmergechunkコマンド

B-treeインデクス作成用スレッド数の調整機能については，マニュアルHADB　コマンドリファレンスのadbimportコマンドのオプション機能のB-treeインデクス作成用スレッド数の調整機能を参照してください。

FIXED

B-treeインデクス作成用スレッド数の調整機能を有効にしません。

この場合，使用可能な処理リアルスレッド数の上限でB-treeインデクスの作成処理を実行します。B-treeインデクスのデータ格納効率よりも，B-treeインデクスの作成処理時間の短縮を優先する場合に指定してください。

VARIABLE

B-treeインデクス作成用スレッド数の調整機能を有効にします。

データのサイズや件数などに応じて，B-treeインデクスの作成処理で使用する処理リアルスレッド数をHADBサーバが自動的に調整します。表に複数のB-treeインデクスが定義されている場合は，B-treeインデクスごとに使用する処理リアルスレッド数を調整します。B-treeインデクスの作成処理時間の短縮よりも，B-treeインデクスのデータ格納効率を優先する場合に指定してください。

このオペランドの指定値は，次のコマンドオプションのデフォルト値になります。

adbimportコマンドのadb_import_dvbix_rthd_useオプション

adbidxrebuildコマンドのadb_idxrebuild_dvbix_rthd_useオプション

adbmergechunkコマンドのadb_mergechunk_dvbix_rthd_useオプション

例えば，このオペランドにVARIABLEを指定した場合，adbimportコマンドのadb_import_dvbix_rthd_useオプションの指定を省略しても，adb_import_dvbix_rthd_useオプションにVARIABLEが指定されたとしてadbimportコマンドが実行されます。

［マルチノード機能］

ワーカーノードのHADBサーバには，このオペランドを指定する必要はありません。

HAモニタありのマルチノード構成の場合は，プライマリノードおよびセカンダリノードのHADBサーバでこのオペランドの指定値を同じにしてください。

［64］ adb_cmd_ixrec_file_use = ｛REUSABLE｜SINGLE-USE｝

次のコマンドの再実行機能で，インデクスレコードファイルを再利用するかどうかを指定します。

adbimportコマンドのB-treeインデクスとテキストインデクス作成処理からの再実行機能

adbidxrebuildコマンドの再実行機能

REUSABLE：

再実行機能でインデクスレコードファイルを再利用します。

REUSABLEを指定した場合，インデクスレコードのソート処理が完了したあとにインデクスレコードファイルが削除されます。

SINGLE-USE：

再実行機能でインデクスレコードファイルを再利用しません。

SINGLE-USEを指定した場合，インデクスレコードのソート処理中にインデクスレコードファイルが削除されます。

このオペランドの指定値によって，次の2つのことに影響があります。これらの影響を考慮してこのオペランドの指定値を決めてください。

作業用一時ファイルの格納先ディレクトリに必要となる容量

作業用一時ファイルの格納先ディレクトリに必要となる容量を減らしたい場合は，SINGLE-USEを指定してください。REUSABLEを指定した場合に比べて，作業用一時ファイルの格納先ディレクトリに必要となる容量が約3分の2に削減できます。

作業用一時ファイルの容量見積もりについては，「6.21.1　adbimportコマンド実行時の作業用一時ファイルの容量見積もり」または「4.2.1　DBディレクトリの事前見積もり」を参照してください。

再実行機能の適用範囲

このオペランドの指定値によって再実行機能の適用範囲が次のように変わります。REUSABLEを指定した方が再実行機能の適用範囲が広がります。

コマンドが異常終了した時点

このオペランドの指定値

REUSABLE

SINGLE-USE（省略値）

adbimportコマンドの場合

「1．表へのデータ格納処理，およびインデクスレコードファイルの作成処理」の処理中

adbidxrebuildコマンドの場合

「1．表の検索処理，およびインデクスレコードファイルの作成処理」の処理中

×

×

「2．インデクスレコードのソート処理」の処理中

○

×

「3．B-treeインデクスおよびテキストインデクスの作成処理」の処理中

○

○

（凡例）

○：コマンドを再実行した場合，再実行機能が適用されます。

×：コマンドを再実行した場合，再実行機能は適用されません。コマンドの処理を最初から実行します。

メモ

上記の表の1.～3.の流れで，adbimportコマンドのデータインポート，またはadbidxrebuildコマンドのインデクス再作成が実行されます。

REUSABLEを指定した場合，1.で作成されたインデクスレコードファイルは，「2．インデクスレコードのソート処理」が完了するまで削除されません。そのため，「2．インデクスレコードのソート処理」の処理中にコマンドが中断した場合でも，1.で作成したインデクスレコードファイルを再利用できるため，再実行機能が適用されます。

一方，SINGLE-USEを指定した場合，「2．インデクスレコードのソート処理」の処理中にコマンドが中断した場合，1.で作成したインデクスレコードファイルは削除されていて再利用できないため，再実行機能が適用されません。

［マルチノード機能］

HAモニタありのマルチノード構成の場合

このオペランドの指定値は，プライマリノードおよび各セカンダリノードで同じにしてください。ワーカーノードには，このオペランドを指定する必要はありません。

HAモニタなしのマルチノード構成の場合

プライマリノードにだけこのオペランドを指定してください。ワーカーノードには，このオペランドを指定する必要はありません。

重要

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合，インデクスレコードファイルは再利用されません。そのため，このオペランドの指定値に関係なく，コマンドを再実行するときはコマンドの処理が最初から実行されます。

7.2.15　メッセージに関するオペランド（set形式）

［65］ adb_sys_mlg_message_suppress = 出力抑止対象のメッセージID〔,出力抑止対象のメッセージID〕…

～〈整数〉((30,000～99,999))

メッセージログファイルおよびsyslogへの出力を抑止したいメッセージのメッセージIDを指定します。指定例を次に示します。

（例）

set adb_sys_mlg_message_suppress = 82000,82002,82003

上記の指定をした場合，KFAA82000-I，KFAA82002-I，およびKFAA82003-Iメッセージが，メッセージログファイルとsyslogに出力されなくなります。

指定規則を次に示します。

出力抑止対象のメッセージIDは最大64個指定できます。

同じメッセージIDを重複して指定しても，警告メッセージやエラーメッセージは出力されません。

存在しないメッセージIDを指定しても，警告メッセージやエラーメッセージは出力されません。存在しないメッセージIDの指定は無効になります。

重要

出力抑止対象となるメッセージは，サーバプロセスが出力するメッセージだけです。コマンドプロセスおよびクライアントプロセスが出力するメッセージは出力抑止対象にはできません。コマンドプロセスおよびクライアントプロセスが出力するメッセージ（70000番台と90000番台のメッセージIDが該当）を指定しても，そのメッセージの出力は抑止されません。

7.2.16　マルチノード機能に関するオペランド（set形式）

マルチノード機能に関するオペランドは，ノード種別によって指定要否が次のように異なります。

表7‒7　HAモニタありのマルチノード構成の場合

オペランド名

ノード種別

プライマリノード

セカンダリノード

ワーカーノード

adb_sys_multi_node_info

〇

〇

〇

adb_sys_multi_worker_node_info※1

×

×

〇

adb_sys_multi_max_worker_nodes※1

〇

〇

〇

adb_sys_node_start_wait_time

△

△

△

adb_sys_multi_worker_abort_time

×

×

×

adb_sys_max_parallel_exec_num※2

〇

〇

〇

adb_sys_multi_node_clt_host

△

△

×

（凡例）

〇：指定が必要です。

△：基本的には指定不要です。デフォルト値から指定を変更する場合に指定します。

×：指定不要です。

注※1

ワーカーノードを使用する場合に指定するオペランドです。

注※2

SQLパラレル実行機能を使用する場合に指定するオペランドです。

表7‒8　HAモニタなしのマルチノード構成の場合

オペランド名

ノード種別

プライマリノード

ワーカーノード

adb_sys_multi_node_info

〇

〇

adb_sys_multi_worker_node_info

×

〇

adb_sys_multi_max_worker_nodes

〇

〇

adb_sys_node_start_wait_time

△

△

adb_sys_multi_worker_abort_time

×

△

adb_sys_max_parallel_exec_num※

〇

〇

adb_sys_multi_node_clt_host

△

×

（凡例）

〇：指定が必要です。

△：基本的には指定不要です。デフォルト値から指定を変更する場合に指定します。

×：指定不要です。

注※

SQLパラレル実行機能を使用する場合に指定するオペランドです。

［66］ adb_sys_multi_node_info = ノードのホスト名〔:ノードのポート番号〕〔,ノードのホスト名〔:ノードのポート番号〕〕…

〜〈文字列〉((1〜261バイト))

マルチノード機能を使用する場合にこのオペランドを指定します。マルチノード機能については，「18.　マルチノード機能の運用」を参照してください。

HAモニタありのマルチノード構成の場合と，HAモニタなしのマルチノード構成の場合とでこのオペランドの指定内容が異なります。

■HAモニタありのマルチノード構成の場合

プライマリノードおよび各セカンダリノードのHADBサーバ間通信で使用するHADBサーバのホスト名，およびポート番号を「ホスト名:ポート番号」の形式で指定します。

重要

このオペランドには，プライマリノードと全セカンダリノードのホスト名とポート番号を指定します。ワーカーノードのホスト名とポート番号は指定しません。ワーカーノードのホスト名とポート番号は，adb_sys_multi_worker_node_infoオペランドで指定します。

このオペランドは，全ノードのサーバ定義に指定してください。また，指定内容は同じにしてください。

HADBサーバ間で使用するネットワークと，HAモニタの監視パスのネットワークは，必ず共通のネットワークを使用してください。詳細については，「18.2.3　ネットワーク構成」の「(2)　ノード間ネットワーク」を参照してください。

指定規則を次に示します。

ノードのホスト名〔:ノードのポート番号〕は，4個まで指定できます。

このオペランドには，必ず自ノード（このサーバ定義を指定して開始するHADBサーバ）のホスト名，およびポート番号も指定してください。

マルチノード機能で使用する全ノードに対して，このオペランドには同じ値を指定してください。その際，指定順も同じにしてください。

HADBサーバ間通信で使用するポート番号は省略できます。指定を省略した場合は，23651が仮定されます。

このオペランドの指定例を次に示します。この例では，セカンダリノードを2つ設定するものとします。

set adb_sys_multi_node_info = 172.16.0.11:23651, ¥  ...1
                              172.16.0.12:23651, ¥  ...2
                              172.16.0.13:23651     ...3

［説明］

プライマリノードのホスト名とポート番号を指定します。

1つ目のセカンダリノードのホスト名とポート番号を指定します。

2つ目のセカンダリノードのホスト名とポート番号を指定します。

■HAモニタなしのマルチノード構成の場合

HADBサーバ間通信で使用するプライマリノードのホスト名，およびポート番号を「ホスト名:ポート番号」の形式で指定します。

重要

このオペランドには，プライマリノードのホスト名とポート番号だけを指定します。ワーカーノードのホスト名とポート番号は指定しません。ワーカーノードのホスト名とポート番号は，adb_sys_multi_worker_node_infoオペランドで指定します。

このオペランドは，全ノードのサーバ定義に指定してください。また，指定内容は同じにしてください。

指定規則を次に示します。

このオペランドは，全ノードで同じ値を指定してください。

ポート番号は省略できます。指定を省略した場合は，23651が仮定されます。

このオペランドの指定例を次に示します。

set adb_sys_multi_node_info = 172.16.0.11:23651     ...1

［説明］

プライマリノードのホスト名とポート番号を指定します。

［67］ adb_sys_multi_worker_node_info = ワーカーノードのホスト名〔:ワーカーノードのポート番号〕

～〈文字列〉((1～261バイト))

ワーカーノードがHADBサーバ間通信で使用するHADBサーバのホスト名，およびポート番号を「ホスト名:ポート番号」の形式で指定します。このオペランドを指定したノードが，ワーカーノードになります。

重要

このオペランドは，ワーカーノードのサーバ定義に指定してください。

このオペランドには，自ワーカーノード（このサーバ定義を指定するワーカーノード）のホスト名とポート番号だけを指定します。

留意事項を次に示します。

ワーカーノードのポート番号の指定は省略できます。指定を省略した場合は，23651が仮定されます。

マルチノード機能を使用しない場合，このオペランドの指定値は無効になります。

［68］ adb_sys_multi_max_worker_nodes = ワーカーノードの最大数

～〈符号なし整数〉((1～11))

マルチノード構成に追加できるワーカーノードの最大数を指定します。

システムの負荷がピークのときに必要となるノード数を想定して，このオペランドの指定値を決めてください。

HAモニタありのマルチノード構成の場合

例えば，セカンダリノードを2つ設定しているとします。このとき，システムの負荷がピークのときに必要となるノード数が10の場合，プライマリノードが1つ，セカンダリノードが2つあるため，ワーカーノードは7つ必要になります。よって，このオペランドには7を指定します。

HAモニタなしのマルチノード構成の場合

例えば，システムの負荷がピークのときに必要となるノード数が10の場合，プライマリノードが1つあるため，ワーカーノードは9つ必要になります。よって，このオペランドには9を指定します。

メモ

マルチノード構成のノードの最大数は12になります。

したがって，HAモニタありのマルチノード構成の場合で，例えばセカンダリノードが1個のときは，ワーカーノードは最大10個追加できます。

HAモニタなしのマルチノード構成の場合は，ワーカーノードは最大11個追加できます。

重要

このオペランドは，全ノードのサーバ定義に指定してください。また，指定値は同じにしてください。

HAモニタありのマルチノード構成の場合にこのオペランドを省略すると，マルチノード構成にワーカーノードを追加することはできません。

HAモニタなしのマルチノード構成の場合は，このオペランドを省略することはできません。

なお，マルチノード機能を使用しない場合，このオペランドの指定値は無効になります。

［69］ adb_sys_node_start_wait_time = 他ノードの起動完了待ち時間の上限

〜〈整数〉((1〜7,200))《300》（単位：秒）

マルチノード機能を使用する場合で，各ノードの起動が完了するまでの待ち時間の上限を，秒単位で指定します。

このオペランドには，基本的にデフォルト値を指定してください。

［70］ adb_sys_multi_worker_abort_time = ワーカーノードを異常終了させるまでの待ち時間の上限

〜〈整数〉((0〜3,600))《0》（単位：秒）

このオペランドは，基本的には指定不要です。次の条件をすべて満たすときに，このオペランドの指定を検討してください。

HAモニタなしのマルチノード構成を使用している

プライマリノードのHADBサーバが異常終了したときに，プライマリノードのHADBサーバを自動的に再起動する設定などをしている

HAモニタなしのマルチノード構成の場合，プライマリノードのHADBサーバが異常終了すると，全ワーカーノードのHADBサーバも異常終了して，マルチノード構成のHADBサーバが異常終了します。このオペランドには，ワーカーノードのHADBサーバが異常終了するまでの待ち時間の上限を，秒単位で指定します。

メモ

ワーカーノードのHADBサーバは，次の順序で異常終了処理を実行します。

プライマリノードのHADBサーバの異常終了を検知する（KFAA60010-Wメッセージが出力される）

プライマリノードのHADBサーバの異常終了に伴いHADBダンプファイルを出力する（HADBダンプファイルの出力完了時にKFAA40014-Iメッセージが出力される）

adb_sys_multi_worker_abort_timeオペランドに指定した秒数だけ，ワーカーノードのHADBサーバの異常終了を待つ

このオペランドを省略するか，または0を指定した場合，上記の3.で待ち時間なしですぐにワーカーノードのHADBサーバが異常終了します。

なお，ワーカーノードのHADBサーバが異常終了した場合，ワーカーノードで実行中のトランザクションがエラーになります。例えば，このオペランドに120を指定した場合，上記の3.でワーカーノードのHADBサーバの異常終了を120秒間待ちます。120秒以内にプライマリノードのHADBサーバが再起動した場合，ワーカーノードのHADBサーバは異常終了しないで，トランザクションの処理を続行します。ただし，トランザクションの終了後，APはマルチノード構成のHADBサーバから切断されます。必要に応じてマルチノード構成のHADBサーバに再接続してください。

また，プライマリノードのHADBサーバの再起動が完了しても，ワーカーノードがトランザクションを処理している間は，そのワーカーノードに新規のトランザクションの処理が割り当てられません。トランザクションの処理が完了したあとに，新規のトランザクションの処理が割り当てられます。

重要

このオペランドは，ワーカーノードのサーバ定義に指定してください。プライマリノードのサーバ定義にこのオペランドを指定しても無視されます。

HAモニタありのマルチノード構成でこのオペランドを指定しても無視されます。

［71］ adb_sys_max_parallel_exec_num = SQLパラレル実行機能を適用する検索系SQLの最大同時実行数

〜〈符号なし整数〉((0〜サーバ定義adb_sys_max_usersオペランドの値))《サーバ定義adb_sys_max_usersオペランドの値》

SQLパラレル実行機能を適用する検索系SQLの最大同時実行数を指定します。SQLパラレル実行機能を適用した検索系SQLの同時実行数がこのオペランドの指定値を超えると，新たに実行しようとするSQLパラレル実行機能を適用した検索系SQLはエラーになります。

重要

このオペランドは，全ノードのサーバ定義に指定してください。また，指定値は同じにしてください。

このオペランドに0を指定した場合，次の指定をしても検索系SQLの実行時にSQLパラレル実行機能は適用されません。

クライアント定義のadb_clt_sql_parallel_execオペランドにYを指定する

SQL文にSQLパラレル実行指定を指定する

次に示すどちらかの条件を満たす場合は，このオペランドを省略してデフォルト値を適用することを推奨します。

SQLパラレル実行機能を使用しない場合

SQLパラレル実行機能を適用した検索系SQLの最大同時実行数が明確にわからない場合

なお，マルチノード機能を使用しない場合，このオペランドの指定値は無効になります。

［72］ adb_sys_multi_node_clt_host = 自ノードのホスト名

～〈ホスト名〉((1～255バイト))

自ノードのホスト名を指定します。

通常，このオペランドを指定する必要はありません。Kubernetesクラスタ内でマルチノード機能を使用する場合に，このオペランドの指定を検討してください。このオペランドに指定したホスト名は，マルチノード機能のクライアント－サーバ間ネットワークで使用されます。

このオペランドは，マスタノードおよび全セカンダリノードに指定します。ワーカーノードには指定する必要はありません。

7.2.17　クラウドストレージ機能に関するオペランド（set形式）

クラウドストレージ機能に関するオペランドは，使用するオブジェクトストレージの種類によって指定要否が次のように異なります。

表7‒9　クラウドストレージ機能を使用する場合に指定するオペランド

オペランド名

使用するオブジェクトストレージ

Amazon S3

Amazon S3互換オブジェクトストレージ

Azure Blob Storage

adb_sys_cld_aws_region

◎※1

×

×

adb_sys_cld_endpoint

◎※1

◎

×

adb_sys_cld_aws_bucket

◎

◎

×

adb_sys_cld_az_storage_account

×

×

◎

adb_sys_cld_az_container

×

×

◎

adb_sys_cld_cache_path

◎

◎

◎

adb_sys_cld_cache_total_size

〇※2

〇※2

〇※2

adb_sys_cld_access_area_size

△

△

△

adb_sys_cld_throughput

△

△

×

（凡例）

◎：指定が必須です。

〇：指定は任意です。

△：基本的には指定不要です。デフォルト値から指定を変更する場合に指定します。

×：指定不要です。

注※1

どちらかのオペランドを指定してください。

注※2

adbcachegrpオペランドを指定する場合（キャッシュグループを定義する場合）は，このオペランドの指定を省略してください。adbcachegrpオペランドを指定しない場合は，このオペランドの指定は必須です。

［73］ adb_sys_cld_aws_region = S3オブジェクトの格納先リージョン名

〜〈文字列〉((1〜100バイト))

このオペランドには，S3オブジェクトを格納するリージョン名を指定します。

オブジェクトストレージにAmazon S3を使用する場合は，このオペランドまたはadb_sys_cld_endpointオペランドのどちらかを必ず指定してください。

クラウドストレージ機能については，「2.21.2　AWS環境でHADBサーバを使用する場合」の「(2)　Amazon S3にDBエリアのデータを格納する場合（クラウドストレージ機能を使用する場合）」の「(a)　クラウドストレージ機能とは」を参照してください。

重要

このオペランドを指定した場合は，adb_sys_cld_aws_bucketオペランドも一緒に指定してください。

初期設定オプションにadb_init_cld_aws_regionオペランドを指定してadbinitコマンドを実行する場合は，このオペランドを指定してください。また，このオペランドとadb_init_cld_aws_regionオペランドには，同じリージョン名を指定することを推奨します。異なるリージョン名を指定した場合，HADBサーバが開始できないおそれがあります。

［マルチノード機能］

マルチノード機能を使用する場合は，全ノードのHADBサーバでこのオペランドの指定値を同じにしてください。

［74］ adb_sys_cld_endpoint = Amazon S3またはAmazon S3互換オブジェクトストレージのエンドポイントURL

〜〈文字列〉((1〜100バイト))

このオペランドは，次に示す場合に指定できます。

オブジェクトストレージにAmazon S3を使用する場合

Amazon S3のエンドポイントURLを指定します。

このオペランドか，またはadb_sys_cld_aws_regionオペランドのどちらかを指定します。両方のオペランドを指定した場合，このオペランドの指定が優先されます。

このオペランドを指定した場合は，adb_sys_cld_aws_bucketオペランドも一緒に指定してください。

オブジェクトストレージにAmazon S3互換オブジェクトストレージを使用する場合

Amazon S3互換オブジェクトストレージのエンドポイントURLを指定します。

このオペランドは必ず指定してください。また，adb_sys_cld_aws_bucketオペランドも一緒に指定してください。

なお，次に示す場合は，IMDS認証情報プロバイダーに対して不要な通信が発生するため，HADBサーバの処理性能がその分低下するおそれがあります。

AWS環境以外からAmazon S3にアクセスする場合

AWS環境以外からAmazon S3互換オブジェクトストレージにアクセスする場合

環境変数AWS_EC2_METADATA_DISABLEDにtrueを指定すると，IMDS認証情報プロバイダーへの通信を無効化できます。この環境変数の詳細については，AWSのドキュメントのIMDS 認証情報プロバイダーを参照してください。

［マルチノード機能］

マルチノード機能を使用する場合は，全ノードのHADBサーバでこのオペランドの指定値を同じにしてください。

［75］ adb_sys_cld_aws_bucket = S3オブジェクトの格納先S3バケット名

〜〈文字列〉((3〜63バイト))

このオペランドには，S3オブジェクトを格納するS3バケット名を指定してください。オブジェクトストレージにAmazon S3またはAmazon S3互換オブジェクトストレージを使用する場合は，このオペランドを必ず指定してください。

重要

Amazon S3を使用する場合にこのオペランドを指定したときは，次のどちらかのオペランドも一緒に指定してください。

・adb_sys_cld_aws_region

・adb_sys_cld_endpoint

Amazon S3互換オブジェクトストレージを使用する場合にこのオペランドを指定したときは，adb_sys_cld_endpointオペランドも一緒に指定してください。

初期設定オプションにadb_init_cld_aws_bucketオペランドを指定してadbinitコマンドを実行する場合は，このオペランドを指定してください。また，このオペランドとadb_init_cld_aws_bucketオペランドには，同じS3バケット名を指定することを推奨します。異なるS3バケット名を指定した場合，HADBサーバが開始できないおそれがあります。

Amazon S3を使用する場合，汎用バケットまたはディレクトリバケットのどちらでもS3バケットとして使用できます。このオペランドに指定したS3バケットのバケットタイプによってS3オブジェクトが作成されるストレージクラスが次のように決まります。

このオペランドに指定したS3バケットが汎用バケットの場合

汎用バケットのデフォルトのストレージクラスであるAmazon S3 StandardにS3オブジェクトが作成されます。

このオペランドに指定したS3バケットがディレクトリバケットの場合

ディレクトリバケットのデフォルトのストレージクラスであるAmazon S3 Express One ZoneにS3オブジェクトが作成されます。

［マルチノード機能］

マルチノード機能を使用する場合は，全ノードのHADBサーバでこのオペランドの指定値を同じにしてください。

［76］ adb_sys_cld_az_storage_account = BLOBの格納先ストレージアカウント名

～〈文字列〉((3～24バイト))

このオペランドには，Azure Blob Storageのストレージアカウント名を指定します。Azure環境でクラウドストレージ機能を使用する場合は，このオペランドを必ず指定してください。クラウドストレージ機能については，「2.21.3　Azure環境でHADBサーバを使用する場合」の「(2)　Azure Blob StorageにDBエリアのデータを格納する場合（クラウドストレージ機能を使用する場合）」の「(a)　クラウドストレージ機能とは」を参照してください。

メモ

このオペランドを指定した場合は，adb_sys_cld_az_containerオペランドも一緒に指定してください。

初期設定オプションのadb_sys_cld_az_storage_accountオペランドを指定してadbinitコマンドを実行する場合は，このオペランドを指定してください。また，このオペランドと初期設定オプションのadb_sys_cld_az_storage_accountオペランドには，同じストレージアカウント名を指定することを推奨します。異なるストレージアカウント名を指定した場合，HADBサーバが開始できないおそれがあります。

［マルチノード機能］

マルチノード機能を使用する場合は，全ノードのHADBサーバでこのオペランドの指定値を同じにしてください。

［77］ adb_sys_cld_az_container = BLOBの格納先コンテナー名

～〈文字列〉((3～63バイト))

このオペランドには，BLOBを格納するコンテナー名を指定してください。Azure環境でクラウドストレージ機能を使用する場合は，このオペランドを必ず指定してください。

メモ

このオペランドを指定した場合は，adb_sys_cld_az_storage_accountオペランドも一緒に指定してください。

初期設定オプションのadb_sys_cld_az_containerオペランドを指定してadbinitコマンドを実行する場合は，このオペランドを指定してください。また，このオペランドと初期設定オプションのadb_sys_cld_az_containerオペランドには，同じコンテナー名を指定することを推奨します。異なるコンテナー名を指定した場合，HADBサーバが開始できないおそれがあります。

［マルチノード機能］

マルチノード機能を使用する場合は，全ノードのHADBサーバでこのオペランドの指定値を同じにしてください。

［78］ adb_sys_cld_cache_path = キャッシュファイルの格納先ディレクトリ名

〜〈OSパス名〉((2〜510バイト))

このオペランドには，キャッシュファイルを格納するディレクトリを絶対パス名で指定します。クラウドストレージ機能を使用する場合は，このオペランドを必ず指定してください。

メモ

初期設定オプションにadb_init_cld_cache_pathオペランドを指定してadbinitコマンドを実行する場合は，このオペランドを指定してください。また，このオペランドとadb_init_cld_cache_pathオペランドには，同じディレクトリ名を指定することを推奨します。異なるディレクトリ名を指定をした場合，HADBサーバが開始できないおそれがあります。

クラウドストレージ機能を使用しない場合は，このオペランドを指定しても無視されます。

キャッシュファイルの格納先ディレクトリは，1ギガバイト以上の容量を必要とします。adbcachegrpオペランドでキャッシュグループを定義する場合は，キャッシュグループ1つ当たり1ギガバイト以上の容量を必要とします。HADBサーバの開始時またはadbinitコマンドの実行時に，必要な容量を確保できない場合は，KFAA41239-Eメッセージが出力されてHADBサーバの開始処理またはadbinitコマンドがエラーとなります。

HADBサーバの稼働中に，キャッシュファイルの格納先ディレクトリがあるディスクの満杯を検知して入出力エラー（ENOSPCなど）が発生した場合，キャッシュファイルの総容量の上限値をディスクに書き込めた範囲まで一時的に引き下げます。引き下げ後の上限値が最低限必要な容量を上回る場合は，HADBサーバは稼働し続けますが（KFAA51285-Wメッセージを出力），最低限必要な容量を下回る場合は，HADBサーバは異常終了します（KFAA41235-Eメッセージを出力）。

［79］ adb_sys_cld_cache_total_size = キャッシュファイルの総容量の上限

～〈整数〉((1～1,000,000))《64》（単位：ギガバイト）

このオペランドには，キャッシュファイルの総容量の上限値を指定します。全データ用DBエリアの格納データ量の10%を目安とした値をこのオペランドに指定してください。

このオペランドの指定値を基にして，HADBサーバの開始時にHADBサーバがキャッシュファイルの総容量の上限値を決定します。HADBサーバが決定したキャッシュファイルの総容量の上限値を超えた場合，最後にアクセスした時間がいちばん古いキャッシュファイルを削除したあとに新しいキャッシュファイルを作成することで，キャッシュファイルの総容量の上限を超えないようにします。

adbls -d cfmコマンドを実行すると，HADBサーバが決定したキャッシュファイルの総容量の上限値（INTERNAL_TOTAL_LIMIT(MB)）を確認できます。

メモ

キャッシュファイルの作成時にストレージの容量不足を検知した場合，警告メッセージKFAA51285-Wが出力され，HADBサーバが決定したキャッシュファイルの総容量の上限値を一時的に利用可能な容量まで引き下げます。一度引き下げられた上限値は，HADBサーバの稼働中には元に戻せません。元に戻す場合は，HADBサーバを再起動してください。

■このオペランドの指定値のチューニング方法

SQL文の統計情報を確認し，キャッシュファイルのヒット率を計算してください。ヒット率が80%以下の場合は，このオペランドの指定値を大きくしてください。

キャッシュファイルのヒット率（%）＝｛（A＋B）÷（C＋D）｝×100

A：Cld_cache_sgmt_read_hit_cntの値

B：Cld_cache_dir_read_hit_cntの値

C：Cld_cache_sgmt_read_cntの値

D：Cld_cache_dir_read_cntの値

上記は，SQL文の統計情報に出力される項目です。上記の出力項目については，マニュアルHADB　コマンドリファレンスのSQL文の統計情報で出力される項目を参照してください。

重要

adbcachegrpオペランドを指定してキャッシュグループを定義する場合は，このオペランドは指定できません。キャッシュグループについては，「2.21　クラウド環境でHADBサーバを使用する場合」を参照してください。

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合，システムディレクトリ用のキャッシュグループが自動的に作成されます。システムディレクトリ用のキャッシュグループ内のキャッシュファイルの容量については，このオペランドで指定するキャッシュファイルの総容量の上限の対象外になります。

［80］ adb_sys_cld_access_area_size = S3オブジェクトまたはBLOBへのアクセス用メモリのサイズ

～〈整数〉((256～131,072))《2,048》（単位：メガバイト）

このオペランドには，S3オブジェクトへのアクセス時に使用する，S3オブジェクトを一時的に保持するためのメモリのサイズを指定します。通常，このオペランドの指定は不要です。

このオペランドの指定値を大きくすると，S3オブジェクトへのアクセス性能が向上することがあります。

このオペランドの指定値を32メガバイトの倍数に切り上げた値が，このオペランドの指定値として仮定されます。

メモ

Azure環境の場合は，S3オブジェクトをBLOBと読み替えてください。

［81］ adb_sys_cld_throughput = S3オブジェクトのI/Oの目標スループット値

～〈整数〉((1～1,000))《HADBサーバによって決定されたデフォルト値※》（単位：Gbps）

このオペランドには，S3オブジェクトへのアクセス時に目標とするI/Oのスループットの値を指定します。Amazon S3を使用し，かつadb_sys_cld_endpointオペランドを省略する場合は，S3オブジェクトへのアクセス時に目標とするI/Oのスループットの値を指定します。

このオペランドは，オブジェクトストレージにAmazon S3またはAmazon S3互換オブジェクトストレージを使用する場合に限り有効になります。それ以外のオブジェクトストレージを使用している場合にこのオペランドを指定しても無視されます。

注※

このオペランドの指定を省略した場合，デフォルト値は次の規則に従って決定されます。

ネットワーク帯域幅に数値を含むインスタンスタイプの場合

その数値がデフォルト値になります。例を次に示します。

r5b.xlarge（Up to 10）の場合：デフォルト値は10Gbpsになります。

i3en.24xlarge（100）の場合：デフォルト値は100Gbpsになります。

m6i.12xlarge（18.75）の場合：デフォルト値は18Gbpsになります。

m4.16xlarge（25 Gigabit）の場合：デフォルト値は25Gbpsになります。

ネットワーク帯域幅に数値を含まないインスタンスタイプの場合

t2.micro（Low to Moderate），またはm4.2xlarge（High）などの場合，デフォルト値は5Gbpsになります。

次のどれかの条件を満たす場合

AWS CLIがインストールされていない場合

AWS CLIはインストールされているが，環境設定が完了していないためコマンドの実行に失敗する場合

インスタンスメタデータへのアクセスが無効にされているインスタンスの場合

上記のどれかの条件を満たすと，デフォルト値は5Gbpsになります。

adb_sys_cld_endpointオペランドを指定する場合は，HADBサーバをインストールしたインスタンスとオブジェクトストレージ間のネットワーク帯域幅を指定してください。この場合，このオペランドのデフォルト値は5Gbpsになります。

メモ

adbstatコマンドのHADBサーバの統計情報のCld_throughputに，HADBサーバの開始時に設定されたこのオペランドの値が出力されます。

7.2.18　グローバルバッファに関するオペランドおよびオプション（コマンド形式）

［82］ adbbuff

データ用DBエリアに割り当てるグローバルバッファの内容を定義します。このオペランドは，複数指定できます。

このオペランドを指定する場合，次に示す2つの変数の合計値が，「6.3　HADBサーバのメモリ所要量の見積もり」で求めたHADBサーバが使用するメモリの最大サイズの3割〜4割程度の値となるよう，見積もってください。

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」の変数SHM_BUFGLOBAL

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(d)　変数BUFGLOBALの求め方」の変数BUFGLOBAL

なお，マスタディレクトリ用DBエリア，ディクショナリ用DBエリア，システム表用DBエリアおよび作業表用DBエリアには，自動的にグローバルバッファが割り当てられるため，このオペランドで定義する必要はありません。

また，このオペランドで割り当てたグローバルバッファの内容については，adbls -d gbufコマンドで確認できます。adbls -d gbufコマンドについては，マニュアルHADB　コマンドリファレンスのadbls -d gbuf（グローバルバッファの情報表示）を参照してください。

メモ

作業表用DBエリアに割り当てられるバッファには，グローバル作業表用のグローバルバッファ，およびローカル作業表用バッファがあります。指定方法を次に示します。

グローバル作業表用のグローバルバッファの指定方法

「7.2.2　性能に関するオペランド（set形式）」のサーバ定義adb_dbbuff_wrktbl_glb_blk_numオペランドで，グローバル作業表用のグローバルバッファのページ数を指定できます。グローバル作業表用のグローバルバッファ名は，ADBWRKになります。

ローカル作業表用バッファの指定方法

「7.2.2　性能に関するオペランド（set形式）」のサーバ定義adb_dbbuff_wrktbl_clt_blk_numオペランドで，ローカル作業表用バッファのページ数を指定できます。

また，クライアント定義adb_dbbuff_wrktbl_clt_blk_numオペランド，およびエクスポートオプションadb_export_wrktbl_blk_numでも，ローカル作業表用バッファのページ数を指定できます。

クライアント定義adb_dbbuff_wrktbl_clt_blk_numオペランドについては，マニュアルHADB　AP開発ガイドの性能に関するオペランドを参照してください。エクスポートオプションadb_export_wrktbl_blk_numについては，マニュアルHADB　コマンドリファレンスのadbexport（データのエクスポート）のadbexportコマンドの指定形式のエクスポートオプションの形式を参照してください。

-g グローバルバッファ名

～〈文字列〉((1～30バイト))

HADBサーバ内で一意なグローバルバッファ名を指定します。

グローバルバッファ名の名称規則を次に示します。

グローバルバッファ名に指定できる文字は，半角数字，半角英大文字（A～Z，#，@，¥，_ ），半角英小文字（a～z），半角カタカナ文字，半角空白，半角ハイフン（-），および半角垂直棒（ | ）です。また，全角文字も指定できます。ただし，全角空白は指定できません。

半角文字と全角文字を混在させて指定できます。

半角英大文字および半角英小文字は，常に区別して扱われます。

グローバルバッファ名の先頭の文字には，半角英大文字（A～Z，#，@，¥，_ ），半角英小文字（a～z），半角カタカナ大文字，または全角文字を指定してください。

ただし，グローバルバッファ名の先頭の文字に#を指定する場合は，グローバルバッファ名を"（二重引用符）で囲んで指定してください。

（例）

adbbuff -g "#SampleBuffer" -n AREA01 -p 1024

グローバルバッファ名の最後の文字に，半角空白は指定できません。

グローバルバッファ名に半角空白を含む場合は，次のどちらかの方法で指定してください。

"（二重引用符）で囲む

adbbuff -g "Sample Buffer" -n AREA01 -p 1024

¥"（バックスラッシュと二重引用符）で囲み，さらに"（二重引用符）で囲む

adbbuff -g "¥"Sample Buffer¥"" -n AREA01 -p 1024

なお，このオプションに指定するグローバルバッファ名には，「##ADBOTHER」を含む名称を指定しないでください。「##ADBOTHER」を含む名称は，自動的にグローバルバッファを割り当てるときにHADBサーバが使用することがあります。そのため，「##ADBOTHER」を含む名称を指定した場合，グローバルバッファ名で区別できなくなるおそれがあります。

ヒント

■グローバルバッファの割り当て方法（-nオプション，-oオプション）の使い分け

グローバルバッファを割り当てるDBエリアを指定する場合，通常は-nオプションで指定してください。-nオプションで指定していないすべてのDBエリアに一括でグローバルバッファを割り当てたい場合，-oオプションを指定してください。

-n DBエリア名〔，DBエリア名〕…

～〈文字列〉((1～30バイト))

グローバルバッファを割り当てるDBエリア名を指定します。

DBエリア名の名称規則については，マニュアルHADB　SQLリファレンスの名前の指定を参照してください。

このオプションを指定するときの注意事項を次に示します。

DBエリア名を複数指定する場合

このオプションにDBエリア名を複数指定した場合，1つのグローバルバッファに複数のDBエリアを割り当てられます。DBエリア名を複数指定する場合，ページサイズが同じDBエリアだけを指定してください。ページサイズが異なるDBエリアを指定した場合，エラーとなります。

カラムストア表が格納されているデータ用DBエリアを指定する場合

カラムストア表が格納されているデータ用DBエリアを指定する場合，このオプションにそのデータ用DBエリア名だけを指定したadbbuffオペランドを定義することを推奨します。つまり，カラムストア表が格納されているデータ用DBエリアに対して，専用のグローバルバッファを割り当てるようにしてください。

1つのグローバルバッファに対して，カラムストア表が格納されているデータ用DBエリア以外に，ローストア表やインデクスが格納されているデータ用DBエリアなども一緒に割り当てた場合，ローストア表の検索性能やインデクスを使用した検索性能が低下するおそれがあります。

ディクショナリ用DBエリアを指定する場合

ディクショナリ用DBエリアにグローバルバッファを割り当てるようメッセージが出力された場合には，このオプションにADBDICだけを指定したadbbuffオペランドを新たに定義してください。通常は，このオプションにディクショナリ用DBエリアを指定する必要はありません。

システム表用DBエリアを指定する場合

システム表用DBエリアにグローバルバッファを割り当てるようメッセージが出力された場合には，このオプションにADBSTBLだけを指定したadbbuffオペランドを新たに定義してください。通常は，このオプションにシステム表用DBエリアを指定する必要はありません。

なお，-nオプションでグローバルバッファを割り当てなかったDBエリアについては，自動的に-oオプションを指定したときと，同様のグローバルバッファが割り当てられます。このとき-gオプションには，「##ADBOTHER」が指定されます。

-o

-nオプションで指定していないすべてのDBエリアにグローバルバッファを割り当てます。

このオプションを指定したadbbuffオペランドは1つだけ定義できます。

このオプションを指定した場合，同じページサイズのDBエリアごとにまとめられて，それぞれに1つのグローバルバッファが割り当てられます。各グローバルバッファ名は，「-g グローバルバッファ名」＋「#nnnnnnnnnn」（nはページサイズを10桁の10進数で表現したもの）になります。例を次に示します。

（例）

adbbuffオペランドの指定

adbbuff -g gbuf01 -o

-nオプションでグローバルバッファを割り当てていないDBエリア

・ページサイズが4キロバイトのDBエリア：ADBDIC，ADBSTBL，ADBU00011，ADBU00012

・ページサイズが32キロバイトのDBエリア：ADBU00013

［説明］

この場合，HADBサーバによって，次のように2つのグローバルバッファが作成されます。

gbuf01#0000004096

上記のグローバルバッファには，ADBDIC，ADBSTBL，ADBU00011，およびADBU00012が割り当てられます。

gbuf01#0000032768

上記のグローバルバッファには，ADBU00013が割り当てられます。

なお，-nオプションですべてのDBエリアにグローバルバッファを割り当てた場合，このオプションを指定しても無視されます。

-p グローバルバッファのページ数

〜〈整数〉((0〜2,147,483,647))《0》

DBエリアに割り当てるグローバルバッファのページ数を指定します。

このオプションを省略した場合，またはこのオプションに0を指定した場合は，次に示す計算式で求めた値が仮定されます。

計算式

グローバルバッファのページ数＝
          （adb_sys_max_usersオペランドの指定値＋adb_sys_rthd_numオペランドの指定値
           ＋10＋multi_num＋worker_num）
           ×（adb_sys_uthd_numオペランドの指定値＋2）

変数の説明

multi_num

マルチノード機能を使用する場合に以下の値を加算します。

（adb_sys_multi_node_infoオペランドに指定したホスト名の数－1）
×（adb_sys_max_parallel_exec_numオペランドの指定値×2＋2）＋5

worker_num

マルチノード機能のワーカーノードを使用する場合に以下の値を加算します。

adbbuffオペランドを指定するノードがプライマリノードまたはセカンダリノードの場合

adb_sys_multi_max_worker_nodesオペランドの指定値
×（adb_sys_max_parallel_exec_numオペランドの指定値×2＋2)

adbbuffオペランドを指定するノードがワーカーノードの場合

adb_sys_multi_max_worker_nodesオペランドの指定値
×adb_sys_max_parallel_exec_num オペランドの指定値×2＋2

-a レンジインデクス専用のグローバルバッファのページ数

〜〈整数〉((0〜2,147,483,647))

このオプションは，レンジインデクスに関するオプションです。

レンジインデクス専用のグローバルバッファのページ数を指定します。

次に示す計算式から求めた値を指定することを推奨します。なお，マルチチャンク表の場合は，チャンクごとに次に示す計算式で値を求めてください。そして，求めた値を合計した値をこのオプションに指定してください。

計算式

rngidx_num

このadbbuffオペランドに指定したDBエリアに格納されるレンジインデクス数

SGRI(i)

「5.8.6　レンジインデクスを格納するセグメント数の求め方」の「(1)　変数SGRIの求め方」を参照してください。

SEGSIZE(i)

各レンジインデクスが格納されるDBエリアのセグメントサイズ（単位：ページ数）

次に示す計算式で求めてください。

SEGSIZE(i)＝ 1セグメントの容量（単位：バイト）÷page_size(i)

page_size(i)

各レンジインデクスが格納されるDBエリアのページサイズ（単位：バイト）

SAUSEDPAGENUM(i)

各レンジインデクスが使用しているページ数（単位：ページ）

次に示す計算式で求めてください。

PTNUM(i)

各レンジインデクスが管理しているポインタの数（単位：個）

次に示す計算式で求めてください。

tbl_dbareafile_num(i)

各レンジインデクスを定義した表が格納されたDBエリアファイルの数（単位：個）

tbl_dbarea_initsize(i)

各レンジインデクスを定義した表が格納されたDBエリアの初期確保サイズ（単位：ギガバイト）

対象のDBエリアに対して，次に示すコマンドを実行したときに，初期確保サイズのオプションに指定した値を代入してください。

adbinitコマンドの初期設定オプションadbinitdbareaの-iオプションに指定した値

adbmodareaコマンドのDBエリア追加・変更オプションadbaddareaの-iオプションに指定した値

adbmodareaコマンドのDBエリア追加・変更オプションadbexpandareaの-iオプションに指定した値

メモ

adbinitコマンドの初期設定オプションについては，マニュアルHADB　コマンドリファレンスのadbinit（データベースの初期設定）のadbinitコマンドの指定形式の初期設定オプションの形式を参照してください。

adbmodareaコマンドのDBエリア追加・変更オプションについては，マニュアルHADB　コマンドリファレンスのadbmodarea（DBエリアの追加・変更）のadbmodareaコマンドの指定形式のDBエリア追加・変更オプションの形式を参照してください。

留意事項を次に示します。

-aオプションのグローバルバッファのページは，-pオプションのグローバルバッファのページとは別に確保されます。

-aオプションを指定した場合，レンジインデクスは-pオプションで指定したグローバルバッファのページを使用しません。

-aオプションを省略した場合，レンジインデクスは-pオプションで指定したグローバルバッファのページを使用します。

-v テーブルスキャンバッファに使用するメモリサイズ〔，リアルスレッドごとに使用するメモリサイズの上限値〕

このオプションを指定すると，テーブルスキャンの処理速度を向上させるためのテーブルスキャンバッファが確保されます。

確保されたテーブルスキャンバッファは，次のセグメントに対して適用されます。

基本行用セグメント（ローストア形式の表の場合）

カラムデータ用セグメント（カラムストア形式の表の場合）

上記以外のセグメントに対しては適用されません。

重要

バージョン04-01以降のHADBサーバで，テーブルスキャンバッファを確保したい場合は，このオプションを指定してください。-kオプションは指定しないでください。

また，このオプションと-kオプションの指定をどちらも省略した場合，テーブルスキャンバッファは確保されません。

テーブルスキャンバッファに使用するメモリサイズ：

～〈整数〉((50～100,000,000))（単位：メガバイト）

テーブルスキャン実行時に使用されるテーブルスキャンバッファに割り当てるメモリサイズを，メガバイト単位で指定してください。

HADBサーバの起動時に，このオプションの指定値に従って，テーブルスキャンバッファに割り当てるメモリサイズが確保されます。

テーブルスキャンバッファは，テーブルスキャンの処理速度を向上させるためのバッファです。テーブルスキャンバッファに，データベース上の複数ページを一括読み込みすると，I/O回数を削減できます。HADBサーバは，読み込んだテーブルスキャンバッファ上のページに対して，グローバルバッファと同様にページ単位でアクセスします。

このオプションを指定すると，テーブルスキャンバッファが確保されます。そのため，テーブルスキャン実行時にグローバルバッファではなく，テーブルスキャンバッファが使用されます。テーブルスキャンバッファが使用されると，次のSQL文の実行速度が向上する可能性があります。

単純なテーブルスキャンとなるSQL文

最も外側の問合せ指定がテーブルスキャンとなるようなSQL文

なお，テーブルスキャン実行時に確保したテーブルスキャンバッファが不足した場合は，グローバルバッファが使用されます。

また，SQL文の実行中に，テーブルスキャンが複数回実行される場合は，そのSQL文を実行するリアルスレッドが切り出したメモリが再利用されます。例えば，SQL文の実行時に，複数の表に対してテーブルスキャンが実行される場合などが該当します。各SQL文を実行するリアルスレッドが切り出したメモリは，カーソルのクローズ時に返却されます。

このオプションを指定する場合，次に示す2つの計算式から求めた「最小メモリサイズ」以上，「最大メモリサイズ」以内の値を指定してください。

計算式（-vオプションのテーブルスキャンバッファに使用するメモリサイズの指定値）

メモ

このオプションに指定したメモリサイズには，次の2つが含まれます。

データベースからの読み込みに使用するグローバルバッファページ

テーブルスキャンバッファの管理に使用するプロセス共通メモリ

データベースからの読み込みに使用するグローバルバッファページのページサイズについては，「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(2)　グローバルバッファページの所要量の求め方（HADBサーバ開始時）」の変数SCANPAGESを参照してください。

リアルスレッドごとに使用するメモリサイズの上限値：

～〈整数〉((50～100,000,000))（単位：メガバイト）

各リアルスレッドが使用できるテーブルスキャンバッファのメモリサイズの上限を，メガバイト単位で指定してください。

指定を省略した場合，メモリサイズの上限は設定されません。

このオプションを指定すると，各SQL文を実行するリアルスレッドが切り出したテーブルスキャンバッファのメモリサイズが上限に達した場合，上限以降はテーブルスキャンバッファではなくグローバルバッファが使われます。

同時に実行するテーブルスキャンを含むSQL文の数がわからない場合には，より効率的にテーブルスキャンバッファを使えるようにするために，指定を省略することを推奨します。

同時に実行するテーブルスキャンを含むSQL文の数がわかっており，それらのSQL文の間で均等にテーブルスキャンバッファが使われるようにしたい場合は，次の計算式で求めた値を指定してください。

計算式（-vオプションのリアルスレッドごとに使用するメモリサイズの上限値に指定する値）

-vオプションのリアルスレッドごとに使用するメモリサイズの上限値に指定する値＝
    -vオプションのテーブルスキャンバッファに使用するメモリサイズの指定値÷
    （同時に実行するテーブルスキャンを含むSQL文の数
      ×サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値）

-k セグメントを一括読み込みするためのテーブルスキャンバッファのバッファ面数

〜〈整数〉((1〜20,000,000))

重要

バージョン04-01以降のHADBサーバでは，このオプションは指定不要です。テーブルスキャンバッファを確保したい場合は，-vオプションを指定してください。

このオプションを指定した場合，-vオプションは指定できません。どちらも指定した場合，HADBサーバを開始できません（KFAA51223-Eメッセージが出力されます）。

このオプションと-vオプションの指定をどちらも省略した場合，テーブルスキャンバッファは確保されません。

また，このオプションの指定値が12以下の場合，テーブルスキャンバッファは確保されません（KFAA51204-Wメッセージが出力されます）。

テーブルスキャン実行時に，セグメントを一括読み込みするためのテーブルスキャンバッファのバッファ面数を指定します。テーブルスキャンバッファの1面のサイズは4メガバイトです。

テーブルスキャンバッファは，テーブルスキャンの処理速度を向上させるためのバッファです。テーブルスキャンバッファに，データベース上の複数のページをセグメント単位に一括読み込みすると，I/O回数を削減できます。これによって，処理速度が向上する可能性があります。

HADBサーバは，セグメント単位で読み込んだテーブルスキャンバッファ上のページに対して，グローバルバッファと同様にページ単位でアクセスします。

このオプションを指定すると，テーブルスキャンバッファを確保します。そのため，テーブルスキャン実行時にグローバルバッファではなく，テーブルスキャンバッファを使用します。テーブルスキャンバッファを使用すると，次のSQL文の実行速度が向上する可能性があります。

単純なテーブルスキャンとなるSQL文

最も外側の問合せ指定がテーブルスキャンとなるようなSQL文

このオプションを指定する場合，次に示す2つの計算式から求めた「最小バッファ面数」以上，「最大バッファ面数」以内の値を指定してください。

計算式（-kオプションの指定値）

また，このオプションを指定する場合，次に示す計算式を満たすようにサーバ定義を指定することを推奨します。左辺と右辺の値が，できるだけ同じ値に近づくよう調整してください。

計算式

なお，テーブルスキャン実行時に確保したテーブルスキャンバッファが不足した場合は，グローバルバッファが使用されます。テーブルスキャンバッファが十分に確保されているかどうかについては，adbstatコマンドで確認できます。詳細については，「14.2.5　テーブルスキャンを実行するSQL文の実行時間を短縮する方法」を参照してください。

また，テーブルスキャンについては，マニュアルHADB　AP開発ガイドのAPの性能向上に関する設計の表の検索方式を参照してください。

7.2.19　クライアントグループ機能に関するオペランドおよびオプション（コマンド形式）

クライアントグループ機能に関するオペランドおよびオプションの内容について説明します。

クライアントグループ機能では，次に示すグループを設定できます。

クライアントグループ

コマンドグループ

各グループを設定する際には，サーバ定義adbcltgrpオペランドを指定します。クライアントグループを設定したadbcltgrpオペランドは複数指定できます。ただし，コマンドグループを設定したadbcltgrpオペランドについては，1つだけ指定できます。

メモ

adbcltgrpオペランドで設定したグループについては，adbls -d cltgrpコマンドで確認できます。adbls -d cltgrpコマンドについては，マニュアルHADB　コマンドリファレンスのadbls -d cltgrp（クライアントグループ・コマンドグループの情報表示）を参照してください。

adbcltgrpオペランドの指定数の上限値は，次に示す計算式で求めた値になります。

計算式（単位：個）

［マルチノード機能］

マルチノード機能を使用する場合，全ノードに対して，このオペランドには同じ値を指定してください。ただし，-rオプションおよび-eオプションは，ノードごとに異なる値を指定できます。ノードごとに異なる値を指定する場合は，サーバ定義adb_sys_rthd_numオペランドの指定値に従って，-rオプションおよび-eオプションの指定値を決定してください。

メモ

クライアントグループおよびコマンドグループについては，「2.12.1　クライアントグループ機能の概要」を参照してください。

サーバ定義adb_sys_max_usersオペランドについては，「7.2.1　システム構成に関するオペランド（set形式）」のadb_sys_max_usersオペランドを参照してください。

サーバ定義adb_sys_rthd_numオペランドについては，「7.2.2　性能に関するオペランド（set形式）」のadb_sys_rthd_numオペランドを参照してください。

ここでは，設定するグループごとに，サーバ定義adbcltgrpオペランドおよびオプションの内容を説明します。

［83］ adbcltgrp（クライアントグループを設定する場合）

クライアントグループを設定します。クライアントグループを設定することで，グループに所属するHADBクライアントが使用する接続数や処理リアルスレッド数を指定できます。

-g クライアントグループ名

〜〈文字列〉((1〜30バイト))

HADBサーバ内で一意なクライアントグループ名を指定します。

指定できる文字は，半角数字，半角英大文字，半角英小文字，または半角下線（_）になります。なお，先頭の文字には，半角英大文字，半角英小文字，または半角下線（_）のどれかを指定してください。

このオプションで指定したクライアントグループ名は，クライアント定義adb_clt_group_nameオペランドに指定する必要があります。

メモ

クライアント定義adb_clt_group_nameオペランドについては，マニュアルHADB　AP開発ガイドのシステム構成に関するオペランドを参照してください。

-m 設定したクライアントグループの最大同時接続数

〜〈整数〉((0〜1,024))《adb_sys_max_usersの指定値−ほかのadbcltgrpの-uオプションの指定値の合計》

設定したクライアントグループの最大同時接続数を指定します。

このオプションに指定した値が，設定したグループで使用できる接続数の上限になります。指定値を超えて，設定したグループが接続することはありません。

このオプションを省略した場合，次に示す計算式で求めた値が仮定されます。

計算式

また，このオプションの指定値が，上記の計算式で求めた値より大きい場合も，上記の計算式で求めた値が仮定されます。

サーバ定義adb_sys_max_usersオペランドについては，「7.2.1　システム構成に関するオペランド（set形式）」のadb_sys_max_usersオペランドを参照してください。

重要

このオプションに0を指定した場合，対象のグループに所属するHADBクライアントは，HADBサーバに接続できません。

-u 設定したクライアントグループの接続保証数

〜〈整数〉((0〜1,024))《0》

設定したクライアントグループの接続保証数を指定します。

このオプションの指定値に従って，対象のグループが最低限使用する接続数を常に確保します。そのため，自グループ以外のHADBクライアントやコマンドの接続状況に影響されることなく，指定した分だけ常に接続できます。

このオプションには，-mオプションの指定値以下の値を指定してください。また，次の計算式を満たす値を指定してください（これらの条件を満たさない値を指定すると，HADBサーバの開始時にエラーとなります）。

計算式

サーバ定義adb_sys_max_usersオペランドについては，「7.2.1　システム構成に関するオペランド（set形式）」のadb_sys_max_usersオペランドを参照してください。

重要

「すべてのサーバ定義adbcltgrpオペランドの-uオプションの指定値を合計した値」が，「サーバ定義adb_sys_max_usersオペランドの指定値」と同じである場合，次のどちらかに該当するHADBクライアントは，HADBサーバに接続できません。

対象のHADBクライアントが，サーバ定義adbcltgrpオペランドの-uオプションに0を指定しているグループに所属しているとき

対象のHADBクライアントが，グループに所属していないとき

-r 設定したクライアントグループで使用できる処理リアルスレッドの最大数

〜〈整数〉((0〜4,096))《adb_sys_rthd_numの指定値−ほかのadbcltgrpの-eオプションの指定値の合計》

設定したクライアントグループで使用できる処理リアルスレッドの最大数を指定します。

このオプションに指定した値が，設定したグループで使用できる処理リアルスレッド数の上限になります。指定値を超えて，設定したグループが処理リアルスレッドを使用することはありません。

このオプションを省略した場合，次に示す計算式で求めた値が仮定されます。

計算式

また，このオプションの指定値が，上記の計算式で求めた値より大きい場合も，上記の計算式で求めた値が仮定されます。

サーバ定義adb_sys_rthd_numオペランドについては，「7.2.2　性能に関するオペランド（set形式）」のadb_sys_rthd_numオペランドを参照してください。

重要

このオプションに0を指定した場合，対象のグループに所属するHADBクライアントに適用されるadb_sql_exe_max_rthd_numオペランドには，0が仮定されます。そのため，対象のHADBクライアントは，常にコネクションスレッドだけでSQL文を実行します。

サーバ定義adb_sql_exe_max_rthd_numオペランドについては，「7.2.2　性能に関するオペランド（set形式）」のadb_sql_exe_max_rthd_numオペランドを参照してください。

クライアント定義adb_sql_exe_max_rthd_numオペランドについては，マニュアルHADB　AP開発ガイドの性能に関するオペランドを参照してください。

-e 設定したクライアントグループで使用できる処理リアルスレッドの保証数

〜〈整数〉((0〜4,096))《0》

設定したクライアントグループで使用できる処理リアルスレッドの保証数を指定します。

このオプションの指定値に従って，対象のグループが最低限使用する処理リアルスレッド数を常に確保します。そのため，自グループ以外のHADBクライアントやコマンドの使用状況に影響されることなく，指定した分だけ常に処理リアルスレッドを使用できます。

このオプションには，-rオプションの指定値以下の値を指定してください。また，次の計算式を満たす値を指定してください（これらの条件を満たさない値を指定すると，HADBサーバの開始時にエラーとなります）。

計算式

サーバ定義adb_sys_rthd_numオペランドについては，「7.2.2　性能に関するオペランド（set形式）」のadb_sys_rthd_numオペランドを参照してください。

重要

「すべてのサーバ定義adbcltgrpオペランドの-eオプションの指定値を合計した値」が，「サーバ定義adb_sys_rthd_numオペランドの指定値」と同じである場合，次のどちらかに該当するHADBクライアントは，adb_sql_exe_max_rthd_numオペランドに0が仮定されます。

対象のHADBクライアントが，サーバ定義adbcltgrpオペランドの-eオプションに0を指定しているグループに所属しているとき

対象のHADBクライアントが，グループに所属していないとき

この場合，対象のHADBクライアントは，常にコネクションスレッドだけでSQL文を実行します。

サーバ定義adb_sql_exe_max_rthd_numオペランドについては，「7.2.2　性能に関するオペランド（set形式）」のadb_sql_exe_max_rthd_numオペランドを参照してください。

クライアント定義adb_sql_exe_max_rthd_numオペランドについては，マニュアルHADB　AP開発ガイドの性能に関するオペランドを参照してください。

-w 設定したクライアントグループの最大同時接続数に関する警告メッセージの出力契機〔,警告メッセージの出力済み状態のリセット契機〕

このオプションを指定すると，-mオプションで指定した最大同時接続数の残り枠が少なくなったときに，警告メッセージKFAA40020-Wを出力できます。

なお，-mオプションに0を指定した場合（0が仮定された場合も含む），-wオプションの指定は無効になります。

設定したクライアントグループの最大同時接続数に関する警告メッセージの出力契機：

～〈整数〉((0～100))《0》（単位：%）

警告メッセージKFAA40020-Wの出力契機を，-mオプションの指定値（クライアントグループに適用される最大同時接続数）に対する比率で指定します。例えば，-mオプションに20を指定している場合に，警告メッセージの出力契機に90を指定すると，HADBサーバへの接続数が18（20の90%の値）以上になったときに警告メッセージが出力されます。

なお，警告メッセージの出力契機に0を指定した場合，警告メッセージは出力されません。

重要

ほかのグループと自由利用枠を共有している場合（-mオプションと-uオプションの指定値が異なる場合），ほかのグループによって自由利用枠が使用されていると，警告メッセージが出力される前に，最大同時接続数超過のエラーが発生する可能性があります。

警告メッセージの出力済み状態のリセット契機：

～〈整数〉((0～99))（単位：%）

警告メッセージKFAA40020-Wの出力済み状態のリセット契機を，-mオプションの指定値（クライアントグループに適用される最大同時接続数）に対する比率で指定します。警告メッセージは一度出力されると，警告メッセージ出力済み状態となり，HADBサーバへの接続数がある一定の値を下回らないかぎり警告メッセージは再出力されません。

メモ

-wオプションの指定値と警告メッセージの出力の関係を次に示します。

adbcltgrp -g ...
          -m 20
          -w 90,70

上記のように-mオプションと-wオプションを指定した場合，HADBサーバへの接続数が18（20の90%の値）以上になったときに警告メッセージが出力されます。その後，HADBサーバへの接続数がいったん17に下がったあとに再度18以上になっても，警告メッセージは出力されません。

HADBサーバへの接続数が，14（20の70%の値）以下に下がった場合は，警告メッセージの出力済み状態がリセットされるため，HADBサーバへの接続数が再度18以上になったときに警告メッセージが出力されます。

警告メッセージの出力済み状態のリセット契機に関する留意事項を次に示します。

リセット契機の指定を省略した場合，「設定したクライアントグループの最大同時接続数に関する警告メッセージの出力契機－30」の値が仮定されます。その値がマイナスになる場合は，0が仮定されます。

「設定したクライアントグループの最大同時接続数に関する警告メッセージの出力契機 ＞警告メッセージの出力済み状態のリセット契機」となるように指定してください。この条件を満たさない場合，リセット契機の指定は無効になります（警告メッセージKFAA41000-Wが出力されます）。このとき，リセット契機には，「設定したクライアントグループの最大同時接続数に関する警告メッセージの出力契機－30」の値が仮定されます。

「設定したクライアントグループの最大同時接続数に関する警告メッセージの出力契機」に0を指定した場合，リセット契機の指定は無効になります。

クライアントグループに属していないHADBクライアントについては，adb_sys_max_users_wrn_pntオペランドの指定値が適用されます。

クライアントグループを定義した場合，システム全体でadb_sys_max_users_wrn_pntオペランドに指定した比率以上になっても警告メッセージは出力されません。各クライアントグループに指定した比率以上になったときに警告メッセージが出力されます。

［マルチノード機能］

警告メッセージKFAA40020-Wは，プライマリノードに出力されます。

［84］ adbcltgrp（コマンドグループを設定する場合）

コマンドグループを設定します。コマンドグループを設定することで，グループに所属するコマンドが使用する接続数や処理リアルスレッド数を指定できます。コマンドグループを設定する場合は，このオペランドは1つだけ指定できます。

-g command

コマンドグループを設定します。

このオプションを指定したadbcltgrpオペランドを指定すると，「HADBサーバに接続するコマンド」は，コマンドグループに所属することになります。HADBサーバに接続するコマンドについては，マニュアルHADB　コマンドリファレンスのコマンドの一覧を参照してください。

メモ

コマンドグループには，「HADBサーバに接続するコマンド」だけでなく，HADBクライアントも所属できます。コマンドグループにHADBクライアントを所属させたい場合は，クライアント定義adb_clt_group_nameオペランドに「command」を指定してください。

クライアント定義adb_clt_group_nameオペランドについては，マニュアルHADB　AP開発ガイドのシステム構成に関するオペランドを参照してください。

-m 設定したコマンドグループの最大同時接続数

〜〈整数〉((0〜1,024))《adb_sys_max_usersの指定値−ほかのadbcltgrpの-uオプションの指定値の合計》

設定したコマンドグループの最大同時接続数を指定します。

このオプションに指定した値が，設定したグループで使用できる接続数の上限になります。指定値を超えて，設定したグループが接続することはありません。

このオプションを省略した場合，次に示す計算式で求めた値が仮定されます。

計算式

また，このオプションの指定値が，上記の計算式で求めた値より大きい場合も，上記の計算式で求めた値が仮定されます。

サーバ定義adb_sys_max_usersオペランドについては，「7.2.1　システム構成に関するオペランド（set形式）」のadb_sys_max_usersオペランドを参照してください。

重要

このオプションに0を指定した場合，グループに所属するコマンドは，HADBサーバに接続できません。

-u 設定したコマンドグループの接続保証数

〜〈整数〉((0〜1,024))《0》

設定したコマンドグループの接続保証数を指定します。

このオプションの指定値に従って，コマンドグループが最低限使用する接続数を常に確保します。そのため，自グループ以外のHADBクライアントやコマンドの接続状況に影響されることなく，指定した分だけ常に接続できます。

このオプションには，-mオプションの指定値以下の値を指定してください。また，次の計算式を満たす値を指定してください（これらの条件を満たさない値を指定すると，HADBサーバの開始時にエラーとなります）。

サーバ定義adb_sys_max_usersオペランドについては，「7.2.1　システム構成に関するオペランド（set形式）」のadb_sys_max_usersオペランドを参照してください。

重要

「すべてのサーバ定義adbcltgrpオペランドの-uオプションの指定値を合計した値」が，「サーバ定義adb_sys_max_usersオペランドの指定値」と同じである場合，次のどちらかに該当するコマンドは，HADBサーバに接続できません。

対象のコマンドが，サーバ定義adbcltgrpオペランドの-uオプションに0を指定しているグループに所属しているとき

対象のコマンドが，グループに所属していないとき

-r 設定したコマンドグループで使用できる処理リアルスレッドの最大数

〜〈整数〉((0〜4,096))《adb_sys_rthd_numの指定値−ほかのadbcltgrpの-eオプションの指定値の合計》

設定したコマンドグループで使用できる処理リアルスレッドの最大数を指定します。

このオプションに指定した値が，設定したグループで使用できる処理リアルスレッド数の上限になります。指定値を超えて，設定したグループが処理リアルスレッドを使用することはありません。

このオプションを省略した場合，次に示す計算式で求めた値が仮定されます。

計算式

また，このオプションの指定値が，上記の計算式で求めた値より大きい場合も，上記の計算式で求めた値が仮定されます。

サーバ定義adb_sys_rthd_numオペランドについては，「7.2.2　性能に関するオペランド（set形式）」のadb_sys_rthd_numオペランドを参照してください。

なお，コマンドグループを設定する場合で，かつ「7.2.2　性能に関するオペランド（set形式）」のadb_sys_rthd_numオペランドにある対象のコマンドを実行する場合は，コマンドを実行するために最低限必要な処理リアルスレッド数以上の値を，このオプションに指定してください。最低限必要な処理リアルスレッド数以上の値を指定しないと，対象のコマンドを実行してもエラーとなるおそれがあります。各コマンドを実行するために最低限必要な処理リアルスレッド数は，「6.23.2　コマンドの実行時に使用する処理リアルスレッド数に関する考慮点」の「(2)　コマンドの実行時に使用する処理リアルスレッド数を指定するオペランドとコマンドオプション」の「表6‒31　コマンドの実行時に使用する処理リアルスレッド数を指定するオペランドとコマンドオプションの一覧」を参照してください。

重要

このオプションに0を指定した場合，コマンドグループに所属するコマンドに適用されるadb_sys_rthd_numオペランドには，0が仮定されます。そのため，対象のコマンドを実行すると，処理リアルスレッド数が不足して，エラーとなります。

-e 設定したコマンドグループで使用できる処理リアルスレッドの保証数

〜〈整数〉((0〜4,096))《0》

設定したコマンドグループで使用できる処理リアルスレッドの保証数を指定します。

このオプションの指定値に従って，対象のグループが最低限使用する処理リアルスレッド数を常に確保します。そのため，自グループ以外のHADBクライアントやコマンドの使用状況に影響されることなく，指定した分だけ常に処理リアルスレッドを使用できます。

このオプションには，-rオプションの指定値以下の値を指定してください。また，次の計算式を満たす値を指定してください（これらの条件を満たさない値を指定すると，HADBサーバの開始時にエラーとなります）。

計算式

サーバ定義adb_sys_rthd_numオペランドについては，「7.2.2　性能に関するオペランド（set形式）」のadb_sys_rthd_numオペランドを参照してください。

重要

「すべてのサーバ定義adbcltgrpオペランドの-eオプションの指定値を合計した値」が，「サーバ定義adb_sys_rthd_numオペランドの指定値」と同じである場合，次のどちらかに該当するコマンドは，adb_sys_rthd_numオペランドに0が仮定されます。

対象のコマンドが，サーバ定義adbcltgrpオペランドの-eオプションに0を指定しているグループに所属しているとき

対象のコマンドが，グループに所属していないとき

そのため，対象のコマンドを実行すると，処理リアルスレッド数が不足して，エラーとなります。

-w 設定したコマンドグループの最大同時接続数に関する警告メッセージの出力契機〔,警告メッセージの出力済み状態のリセット契機〕

このオプションを指定すると，-mオプションで指定した最大同時接続数の残り枠が少なくなったときに，警告メッセージKFAA40020-Wを出力できます。

なお，-mオプションに0を指定した場合（0が仮定された場合も含む），-wオプションの指定は無効になります。

設定したコマンドグループの最大同時接続数に関する警告メッセージの出力契機：

～〈整数〉((0～100))《0》（単位：%）

警告メッセージKFAA40020-Wの出力契機を，-mオプションの指定値（コマンドグループに適用される最大同時接続数）に対する比率で指定します。例えば，-mオプションに20を指定している場合に，警告メッセージの出力契機に90を指定すると，HADBサーバへの接続数が18（20の90%の値）以上になったときに警告メッセージが出力されます。

なお，警告メッセージの出力契機に0を指定した場合，警告メッセージは出力されません。

重要

ほかのグループと自由利用枠を共有している場合（-mオプションと-uオプションの指定値が異なる場合），ほかのグループによって自由利用枠が使用されていると，警告メッセージが出力される前に，最大同時接続数超過のエラーが発生する可能性があります。

警告メッセージの出力済み状態のリセット契機：

～〈整数〉((0～99))（単位：%）

警告メッセージKFAA40020-Wの出力済み状態のリセット契機を，-mオプションの指定値（コマンドグループに適用される最大同時接続数）に対する比率で指定します。警告メッセージは一度出力されると，警告メッセージ出力済み状態となり，HADBサーバへの接続数がある一定の値を下回らないかぎり警告メッセージは再出力されません。

メモ

-wオプションの指定値と警告メッセージの出力の関係を次に示します。

adbcltgrp -g ...
          -m 20
          -w 90,70

上記のように-mオプションと-wオプションを指定した場合，HADBサーバへの接続数が18（20の90%の値）以上になったときに警告メッセージが出力されます。その後，HADBサーバへの接続数がいったん17に下がったあとに再度18以上になっても，警告メッセージは出力されません。

HADBサーバへの接続数が，14（20の70%の値）以下に下がった場合は，警告メッセージの出力済み状態がリセットされるため，HADBサーバへの接続数が再度18以上になったときに警告メッセージが出力されます。

警告メッセージの出力済み状態のリセット契機に関する留意事項を次に示します。

リセット契機の指定を省略した場合，「設定したコマンドグループの最大同時接続数に関する警告メッセージの出力契機－30」の値が仮定されます。その値がマイナスになる場合は，0が仮定されます。

「設定したコマンドグループの最大同時接続数に関する警告メッセージの出力契機 ＞警告メッセージの出力済み状態のリセット契機」となるように指定してください。この条件を満たさない場合，リセット契機の指定は無効になります（警告メッセージKFAA41000-Wが出力されます）。このとき，リセット契機には，「設定したコマンドグループの最大同時接続数に関する警告メッセージの出力契機－30」の値が仮定されます。

「設定したコマンドグループの最大同時接続数に関する警告メッセージの出力契機」に0を指定した場合，リセット契機の指定は無効になります。

コマンドグループに属していないコマンドについては，adb_sys_max_users_wrn_pntオペランドの指定値が適用されます。

コマンドグループを定義した場合，システム全体でadb_sys_max_users_wrn_pntオペランドに指定した比率以上になっても警告メッセージは出力されません。コマンドグループまたは各クライアントグループに指定した比率以上になったときに警告メッセージが出力されます。

7.2.20　キャッシュグループに関するオペランドおよびオプション（コマンド形式）

［85］ adbcachegrp

クラウドストレージ機能でキャッシュグループを定義する場合にこのオペランドを指定します。キャッシュグループについては，「2.21　クラウド環境でHADBサーバを使用する場合」を参照してください。

重要

adb_sys_cld_cache_total_sizeオペランドを指定する場合，adbcachegrpオペランドは指定できません。

adbcachegrpオペランドの指定例を次に示します。

adbcachegrp -g cachegrp01 -n DBAREA11,DBAREA12,DBAREA13 -s 5000   ...1
adbcachegrp -g cachegrp02 -n DBAREA21,DBAREA22 -s 3000            ...2
adbcachegrp -g cachegrp03 -n DBAREA31 -s 1000                     ...3
adbcachegrp -o -s 1000                                            ...4
adbcachegrp -d -s 1000                                            ...5

［説明］

DBエリア用のキャッシュグループ（キャッシュグループ名：cachegrp01）を定義します。このキャッシュグループには，データ用DBエリア（DBAREA11，DBAREA12，およびDBAREA13）のデータを格納したキャッシュファイルだけが格納されます。このキャッシュグループに格納できるキャッシュファイルの容量の上限は5,000ギガバイトになります。

DBエリア用のキャッシュグループ（キャッシュグループ名：cachegrp02）を定義します。このキャッシュグループには，データ用DBエリア（DBAREA21およびDBAREA22）のデータを格納したキャッシュファイルだけが格納されます。このキャッシュグループに格納できるキャッシュファイルの容量の上限は3,000ギガバイトになります。

DBエリア用のキャッシュグループ（キャッシュグループ名：cachegrp03）を定義します。このキャッシュグループには，データ用DBエリア（DBAREA31）のデータを格納したキャッシュファイルだけが格納されます。このキャッシュグループに格納できるキャッシュファイルの容量の上限は1,000ギガバイトになります。

既定のキャッシュグループを定義します。上記の1.～3.に指定したデータ用DBエリア以外のデータ用DBエリアのデータを格納したキャッシュファイルが格納されます。既定のキャッシュグループに格納できるキャッシュファイルの容量の上限は1,000ギガバイトになります。

システムディレクトリ用のキャッシュグループの容量の上限を変更する場合に指定します。システムディレクトリ用のキャッシュグループには，システムログファイルのデータを格納したキャッシュファイルだけが格納されます。このキャッシュグループに格納できるキャッシュファイルの容量の上限は1,000ギガバイトになります。

次に各オプションの説明をします。

-g キャッシュグループ名

～〈文字列〉((1～30バイト))

キャッシュグループ名を指定します。-gオプションを指定したadbcachegrpオペランドは最大1,014個指定できます。

キャッシュグループ名の名称規則を次に示します。

キャッシュグループ名に指定できる文字は，半角数字，半角英大文字（A～Z，#，@，¥，_ ），半角英小文字（a～z），半角カタカナ文字，半角空白，半角ハイフン（-），および半角垂直棒（ | ）です。また，全角文字も指定できます。ただし，全角空白は指定できません。

半角文字と全角文字を混在させて指定できます。

半角英大文字および半角英小文字は，常に区別して扱われます。

キャッシュグループ名の先頭の文字には，半角英大文字（A～Z，#，@，¥，_ ），半角英小文字（a～z），半角カタカナ文字，または全角文字を指定してください。

ただし，キャッシュグループ名の先頭の文字に#を指定する場合は，キャッシュグループ名を"（二重引用符）で囲んで指定してください。

（例）

adbcachegrp -g "#SampleGroup" -n DBAREA01 -s 64

キャッシュグループ名の最後の文字に，半角空白は指定できません。

キャッシュグループ名に半角空白を含む場合は，次のどちらかの方法で指定してください。

"（二重引用符）で囲む

adbcachegrp -g "Sample Group" -n DBAREA01 -s 64

¥"（バックスラッシュと二重引用符）で囲み，さらに"（二重引用符）で囲む

adbcachegrp -g "¥"Sample Group¥"" -n DBAREA01 -s 64

-n データ用DBエリア名〔,データ用DBエリア名〕…

～〈文字列〉((1～30バイト))

-gオプションで指定したキャッシュグループに割り当てるデータ用DBエリアを指定します。

指定規則を次に示します。

全adbcachegrpオペランドの-nオプションに指定できるデータ用DBエリア名の合計数は，最大1,014個になります。

存在しないデータ用DBエリアは指定できません。

データ用DBエリア名を重複して指定できません。全adbcachegrpオペランドで重複できません。

マスタディレクトリ用DBエリア（ADBMST），ディクショナリ用DBエリア（ADBDIC），およびシステム表用DBエリア（ADBSTBL）は指定不要です。これらのDBエリアは自動的に既定のキャッシュグループに割り当てられます。

-o

既定のキャッシュグループを定義します。

重要

-oオプションを指定したadbcachegrpオペランドを必ず1つ指定してください。

-s キャッシュグループの容量の上限

～〈整数〉((1～1,000,000))（単位：ギガバイト）

キャッシュグループに作成できるキャッシュファイルの総容量の上限を指定します。

DBエリア用のキャッシュグループにこのオプションを指定する場合，-nオプションに指定したデータ用DBエリアの格納データ量の合計の10%を目安とした値を指定してください。

このオペランドの指定値を基にして，HADBサーバの開始時にHADBサーバがキャッシュグループの容量の上限値を決定します。HADBサーバが決定したキャッシュグループの容量の上限値を超えた場合，最後にアクセスした時間がいちばん古いキャッシュファイルを削除したあとに新しいキャッシュファイルを作成することで，キャッシュグループの容量の上限を超えないようにします。

adbls -d cfmコマンドを実行すると，HADBサーバが決定したキャッシュグループの容量の上限値（INTERNAL_TOTAL_LIMIT(MB)）を確認できます。

メモ

キャッシュファイルの作成時にストレージの容量不足を検知した場合，警告メッセージKFAA51285-Wが出力され，HADBサーバが決定したキャッシュグループの容量の上限値を一時的に利用可能な容量まで引き下げます。一度引き下げられた上限値は，HADBサーバの稼働中には元に戻せません。元に戻す場合は，HADBサーバを再起動してください。

■-sオプションの指定値のチューニング方法

SQL文の統計情報を確認し，キャッシュファイルのヒット率を計算してください。ヒット率が低いキャッシュグループは，-sオプションの指定値を大きくすると，ヒット率が向上することがあります。

キャッシュファイルのヒット率（%）＝｛（A＋B）÷（C＋D）｝×100

A：Cld_cache_sgmt_read_hit_cntの値

B：Cld_cache_dir_read_hit_cntの値

C：Cld_cache_sgmt_read_cntの値

D：Cld_cache_dir_read_cntの値

上記は，SQL文の統計情報に出力される項目です。上記の出力項目については，マニュアルHADB　コマンドリファレンスのSQL文の統計情報で出力される項目を参照してください。

各キャッシュグループで割り当てているデータ用DBエリアだけをアクセス対象とするSQL文を計算対象にしてください。

-d

このオプションは，クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合に指定できます。

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合，HADBサーバがシステムディレクトリ用のキャッシュグループを自動的に作成し，次の計算式に従ってシステムディレクトリ用のキャッシュグループの容量の上限を決定します。

システムディレクトリ用のキャッシュグループの容量の上限（単位：ギガバイト）＝
                  MIN｛1,000,000,
                       MAX(128 , 1＋USRLOGFILENUM×USRLOGFILEINITSIZE)÷1,024
                      ｝

USRLOGFILENUM：サーバ定義のadb_log_usrfile_numオペランドの指定値

USRLOGFILEINITSIZE：サーバ定義のadb_log_usrfile_sizeオペランドのユーザログファイル初期化容量の指定値

マルチノード機能を使用する場合，adb_log_usrfile_numオペランドとadb_log_usrfile_sizeオペランドの指定値には，プライマリノードおよびセカンダリノードの各サーバ定義で指定する値のうち最大値が適用されます。

システムディレクトリ用のキャッシュグループの容量の上限を変更する場合に，このオプションを指定したadbcachegrpオペランドを指定してください。

メモ

通常は，このオプションを指定したadbcachegrpオペランドを指定する必要はありません。ロールバック処理に時間が掛かる場合に，省略値（上記の計算式で決定された値）より大きな値を-sオプションに指定すると，ロールバック処理に掛かる時間を短縮できることがあります。

クラウドストレージ機能のシステムディレクトリ対応オプションが無効な場合に，このオプションを指定したadbcachegrpオペランドを指定しても，その指定は無視されます。

7.3　サーバ定義の文法規則

この節では，サーバ定義を作成する場合，および変更する場合の文法規則について説明します。

7.3.1　サーバ定義の文法規則の詳細

サーバ定義を作成および変更する場合の文法規則の詳細を次に示します。

サーバ定義の作成方法および変更方法については，「8.5　サーバ定義の作成および変更方法」を参照してください。

また，サーバ定義のオペランドの指定形式と内容については，次の項目を参照してください。

「7.1　サーバ定義のオペランドの指定形式」

「7.2　サーバ定義のオペランドの内容」

(1)　記述順序

サーバ定義の，定義間の記述順序は任意です。

(2)　記述形式

サーバ定義の記述形式には次に示す2つの形式があります。

set形式

コマンド形式

それぞれの形式について説明します。

(a)　set形式

set形式では，オペランドに値を設定します。

形式

set オペランド = 値

オペランド

set形式のオペランド名です。

値

オペランド名に対する指定値です。英数字の文字列で構成されます。

指定例を次に示します。

指定例

set adb_sys_max_users = 1024

同じオペランドを複数指定した場合，1つ目に指定した値が有効となり，2つ目以降の値は無視されます。

(b)　コマンド形式

コマンド形式のオペランドの指定形式を次に示します。

形式

オペランド名 オプション

オペランド名

コマンド形式のオペランド名です。

オプション

ハイフン（-）で始まる文字列です。形式1と形式2の2つがあります。

形式1

オプション

形式2

オプション オプション引数

オプション

ハイフン（-）と1文字の英字で構成されます。英大文字と英小文字は区別されます。

オプション引数

オプションに対する引数です。英数字の文字列で構成されます。

指定例を次に示します。

指定例

adbbuff -g BUFFER -n ADBUTBL01 -p 1024

(3)　改行コード

サーバ定義で使用できる改行コードを次に示します。

LF（Line Feed）

NL（New Line）

CR＋LF（Carriage Return＋Line Feed）

なお，CR（Carriage Return）だけを使用することはできません。CRだけが使用されていた場合，HADBサーバを開始するときにエラーとなります。

(4)　行の継続

定義の1行の長さは最大4,000バイトです。4,000バイトを超える指定の場合は，複数行に分けて記述してください。

複数に分けた行を継続行として認識させる場合，行の末尾に継続文字として¥を入力して，その直後で改行してください。継続行の先頭に半角スペースがある場合は，半角スペースも含めて継続されます。

ただし，¥と改行が連続していない場合は継続されません。指定例を次に示します。

改行した行が継続行として認識される例

adbbuff -g BUFFER ¥↓
        -n ADBU01

改行した行が継続行として認識されない例

adbbuff -g BUFFER ¥△↓
        -n ADBU01

（凡例）

↓：改行

△：半角スペース

(5)　文字列の識別規則

文字列中に二重引用符（ " ）を指定したい場合，「¥"」としてください。「"AREA01"」として認識される指定例を次に示します。

指定例

adbbuff -g BUFFER -n ¥"AREA01¥" -p 1024

なお，二重引用符で囲まないと，英大文字と英小文字が区別されないオペランドがあります（adbbuffオペランドなど）。詳細については，各オペランドを参照願います。

(6)　コメント

サーバ定義にコメントを記入する場合は，コメントの先頭にシャープ（#）を記述してください。

形式1のように，行の先頭にシャープ（#）を入力すると，行全体がコメントとして認識されます。

形式1

#コメント…

形式2のように，記述した定義の後ろにコメントを入力したい場合は，シャープ（#）の前に半角スペースを入力してください。半角スペースがないと，コメントとして認識されません。

形式2

定義の記述△#コメント…

（凡例）

△：半角スペース

なお，二重引用符（ " ）で囲んだ文字列の中にシャープ（#）がある場合，コメントとして認識されません。シャープ（#）およびシャープ（#）以降の文字列は，文字として認識されます。

「#」および「#」以降も文字として認識される例

set adb_db_path = "TESTDB△#abc"

（凡例）

△：半角スペース

また，シャープ（#）がある行は，シャープ（#）以降の文字列がすべてコメントとして認識されます。そのため，複数に分けた行を継続行として認識させる際，コメントの記載位置に注意してください。継続行がコメントとして認識されてしまう例を次に示します。

継続行がコメントとして認識される例

adbbuff -g BUFFER△#コメント ¥↓
        -n DBAREA01

（凡例）

↓：改行

△：半角スペース

上記の場合，「△#コメント」は-n DBAREA01の後ろに記載するようにしてください。

(7)　BOM

BOM（Byte Order Mark）は，サーバ定義では使用できません。

(8)　コンマ

set形式の値やコマンド形式のオプション引数で，複数の文字列を指定する場合は，文字列と文字列の間をコンマで区切ってください。ただし，コンマで区切る場合は，文字列とコンマの間に半角スペースおよび改行を入力しないでください。HADBサーバを開始するときにエラーとなります。

コンマを使った指定例を次に示します。

正しい指定例

set adb_sql_prep_delrsvd_words = ABS,BEFORE,CALL,DATA

set adb_sql_prep_delrsvd_words = ABS,△BEFORE,△△CALL,△△△DATA

複数の文字列を指定する場合は，文字列と文字列の間をコンマで区切ってください。また，コンマと文字列の間には，半角スペースを入力できます。

エラーとなる指定例1

set adb_sql_prep_delrsvd_words = ABS△,BEFORE△,CALL△,DATA

上記のように，先行する文字列とコンマの間には，半角スペースは入力できません。文字列中に半角スペースが含まれているため，指定値が不正と認識され，エラーとなります。

エラーとなる指定例2

set adb_sql_prep_delrsvd_words = ABS,BEFORE↓
                                 ,CALL,DATA

上記のように，文字列とコンマの間では，改行できません。エラーとなります。

改行する場合，複数に分けた行を継続行として認識させる必要があります。継続文字として¥を入力して，その直後で改行してください。指定例を次に示します。

指定例（継続行として認識させる場合）

set adb_sql_prep_delrsvd_words = ABS,BEFORE¥↓
                                 ,CALL,DATA

set adb_sql_prep_delrsvd_words = ABS,BEFORE,¥↓
                                 CALL,DATA

コンマと文字列の間に継続文字として¥を入力して，その直後で改行してください。どちらの場合でも，継続行として認識されます。

（凡例）

△：半角スペース

↓：改行

第4編　構築編

8　システム構築

この章では，HADBのシステム構築について説明します。

体験環境を構築する手順については，「3.　体験環境構築ナビ」で説明しています。こちらもあわせて読むことを推奨します。

8.1　システム構築の手順

ここでは，HADBサーバのシステム構築について説明します。HADBクライアントのシステム構築については，マニュアルHADB　AP開発ガイドのHADBクライアントの環境設定（ODBCドライバおよびCLI関数を使用する場合）を参照してください。HADBサーバのシステム構築の手順を次の図に示します。

図8‒1　システム構築の手順

［説明］

カーネルパラメタの設定

カーネルパラメタを設定します。カーネルパラメタの設定については，「8.3　カーネルパラメタの設定」を参照してください。

環境変数の設定

環境変数を設定します。環境変数の設定については，「8.4　環境変数の設定」を参照してください。

HADBサーバのインストール

HADBサーバをインストールします。インストール方法については，「8.2　インストール」を参照してください。

サーバ定義の作成

サーバ定義を作成します。サーバ定義の作成については，「7.　サーバ定義の設計」，および「8.5　サーバ定義の作成および変更方法」を参照してください。

データベースの作成

データベースを作成します。データベースの作成手順については，「9.1　データベースの作成手順」を参照してください。

8.2　インストール

ここでは，HADBサーバおよびHADBオプションのインストール方法について説明します。

HADBクライアントのインストール方法については，マニュアルHADB　AP開発ガイドのHADBクライアントのインストールおよびアンインストールを参照してください。

注意事項

HADBサーバのインストールデータには，RHEL 8用のインストールデータと，RHEL 9以降用のインストールデータの2種類があります。使用しているLinuxのバージョンに対応するインストールデータを使用して，HADBサーバのインストールを実行してください。例えば，RHEL 8を使用している場合に，RHEL 9以降用のインストールデータを使用してHADBサーバのインストールを実行すると，インストールデータの不整合によるエラーとなります（KFAA91553-Eメッセージが出力されます）。

特に，RHEL 8用のインストールデータと，RHEL 9以降用のインストールデータの両方を持っている場合は，インストールデータを間違えないようにご注意ください。

HADBオプションおよびLinux版のHADBクライアントにも，RHEL 8用のインストールデータと，RHEL 9以降用のインストールデータの2種類があります。インストールの際にインストールデータを間違えないようにご注意ください。

なお，HADBオプションおよびLinux版のHADBクライアントについては，HADBサーバとは異なり，インストール時のインストールデータの整合性チェックが行われません。

メモ

Azure環境で使用するHADBオプションの場合，RHEL 9以降用のインストールデータだけの提供となります。

HADBサーバ，HADBオプション，およびHADBクライアントのインストールCD-ROMに格納されているインストールデータを使用してください。別のCD-ROMに格納されているtar.gz形式のファイルなどを使用してインストールを実行すると，インストールがエラーになったり，HADBサーバが開始できなかったりするおそれがあります。

8.2.1　HADBサーバのインストール前に実施する作業

HADBサーバをインストールする前に，スーパユーザで次の作業を実施してください。

前提パッケージの確認※

HADB管理グループの設定

HADB管理者の設定

HADB管理グループに所属するOSユーザの設定

サーバディレクトリを格納するディレクトリの作成

サーバディレクトリを格納するディレクトリの設定の変更

通信情報ファイルを格納するディレクトリの作成

設定ファイルの変更

設定ファイルの変更および作成（コアファイルの出力がsystemd-coredumpで制御されている場合）

syslogのアクセス権限の変更

注※

スーパユーザではなく，一般ユーザ（管理者権限を持っていないOSユーザ）でも実施できます。

上記の各作業の詳細を以降で説明します。

(1)　前提パッケージの確認

HADBサーバを動作させるには，次の表に示すパッケージ（x86_64版）がOSにインストールされている必要があります。

表8‒1　前提パッケージ

項番

パッケージ名

適用OS

RHEL 8の場合

RHEL 9の場合

RHEL 10の場合

1

bash

○

○

○

2

binutils

○

○

○

3

brotli

△

○

○

4

cjose

－

○

○

5

compat-openssl10

○

－

－

6

coreutils

○

○

○

7

cyrus-sasl-lib

△

○

○

8

file

○

○

○

9

findutils

○

○

○

10

gawk

○

○

○

11

gdb

○

○

○

12

glibc

○

○

○

13

glibc-common

○

○

○

14

下記のどちらか※2

glibc-langpack-en

glibc-langpack-ja

○

○

○

15

grep

○

○

○

16

hostname

○

○

○

17

iproute

○

○

○

18

jansson

－

○

○

19

keyutils-libs

△

○

○

20

krb5-libs

△

○

○

21

libaio

○

○

○

22

libatomic

－

○

○

23

libcom_err

△

○

○

24

libcurl

△

○

○

25

libevent

－

○

○

26

libgcc

△

○

○

27

libidn2

△

○

○

28

libnghttp2

△

○

○

29

libpsl

△

○

○

30

libselinux

△

○

○

31

libssh

△

○

○

32

libstdc++

△

○

○

33

libunistring

△

○

○

34

libuuid

○

○

○

35

libxcrypt

△

○

○

36

libxml2

－

△※1

△※1

37

lvm2

○

○

○

38

lz4

－

○

○

39

openldap

－

○

○

40

openssl-libs

－

○

○

41

pam

○

○

○

42

pcre2

△

○

○

43

procps-ng

○

○

○

44

sed

○

○

○

45

sysstat

○

○

○

46

tar

○

○

○

47

util-linux

○

○

○

48

xz-libs

－

△※1

△※1

49

zlib

○

○

－

50

zlib-ng-compat

－

－

○

51

zstd

－

○

○

（凡例）

○：このパッケージが必要です。

△：クラウドストレージ機能を使用する場合に必要なパッケージです。

－：このパッケージは不要です。

注※1

Azure環境のクラウドストレージ機能を使用する場合に必要なパッケージです。

注※2

使用する環境にあわせて，どちらか片方のパッケージをインストールしてください。例えば，日本語版の環境を使用している場合は，glibc-langpack-jaをインストールしてください。日本語版以外の環境を使用している場合は，glibc-langpack-enをインストールしてください。

■インストール済みのパッケージを確認する方法

次のコマンドを実行すると，OSにインストール済みのパッケージの一覧が表示されます。

yum list installed

インストールされていないパッケージがある場合は，そのパッケージをOSにインストールしてください。パッケージのインストール方法については，OSのマニュアルを参照してください。

■特定のパッケージがインストール済みかどうかを確認する方法

（例）

パッケージlibaioがインストール済みかどうかを確認します。

yum list installed | grep libaio

実行結果にパッケージlibaioが表示された場合は，パッケージlibaioはインストール済みです。実行結果にパッケージlibaioが表示されなかった場合は，パッケージlibaioはインストールされていません。

(2)　HADB管理グループの設定

HADB専用のグループ（HADB管理グループ）を，サーバマシンのOSに設定してください。HADB管理グループは，OSのgroupaddコマンドで設定します。

HADB管理グループを設定することで，HADBサーバを運用するためのディレクトリ下（サーバディレクトリ下およびDBディレクトリ下）に作成されるファイルに対して，HADB管理グループ以外のOSユーザからのアクセスを制限できます。そのため，セキュリティを強化できます。

■HADB管理グループの設定例

サーバマシンのOSにHADB管理グループとして，adbgroupを設定します。

groupadd adbgroup

なお，OSに設定されている既存のグループを，HADB管理グループとして使用することもできます。

(3)　HADB管理者の設定

HADB管理グループを設定したら，HADBサーバを管理するOSユーザ（HADB管理者）を，サーバマシンのOSに設定してください。HADB管理者は，OSのuseraddコマンドで設定します。HADB管理者の名称は，32バイト以内としてください。

HADB管理者とは，OSに設定するユーザであり，またHADBを管理するシステム管理者を指します。HADB管理者には，HADBのすべてのコマンドを実行する権限があります。また，サーバディレクトリ下およびDBディレクトリ下のファイルの所有者になります。なお，HADB管理者として設定したOSユーザが，HADB管理者としてHADBサーバに認識されるタイミングは，HADBサーバをインストールしたときです。

HADB管理者のユーザ名をOSに設定する際，HADB管理者が所属するプライマリグループにHADB管理グループを設定することで，HADB管理者にはHADBサーバの各種ファイルおよびディレクトリの所有者としてのアクセス権が与えられます。これによって，ほかのOSユーザからの書き込みを禁止できます。

HADB管理者のユーザ名をOSに設定したら，必ずパスワードを設定してください。パスワードは，OSのpasswdコマンドで設定します。

■HADB管理者の設定例

サーバマシンのOSにHADB管理者として，adbmanagerを設定します。その際，プライマリグループとしてHADB管理グループ（adbgroup）を設定します。

useradd -g adbgroup adbmanager

(4)　HADB管理グループに所属するOSユーザの設定

HADB管理者を設定したら，HADB管理者とは別に，HADBサーバを管理するOSユーザ（HADB管理グループに所属するOSユーザ）を，サーバマシンのOSに設定することを推奨します。

HADB管理グループに所属するOSユーザには，HADBのコマンドを実行する権限が与えられます（一部のコマンドは除きます）。また，HADB管理者が所有するサーバディレクトリ下およびDBディレクトリ下のファイルにも，アクセスできるようになります。HADB管理グループに所属するOSユーザを設定することで，HADB管理者以外のOSユーザでもHADBのコマンドを実行できるようになり，HADBサーバを運用する際の利便性が向上します。

HADB管理グループに所属するOSユーザは，OSのuseraddコマンドで設定します。HADB管理グループに所属するOSユーザの名称は，32バイト以内としてください。また，HADB管理グループに所属するOSユーザのユーザ名をOSに設定する場合，HADB管理グループをプライマリグループとして設定してください。

HADB管理グループに所属するOSユーザのユーザ名をOSに設定したら，必ずパスワードを設定してください。パスワードは，OSのpasswdコマンドで設定します。

■HADB管理グループに所属するOSユーザの設定例

サーバマシンのOSにHADB管理グループに所属するOSユーザとして，adbgroupuser01を設定します。その際，プライマリグループとしてHADB管理グループ（adbgroup）を設定します。

useradd -g adbgroup adbgroupuser01

メモ

HADB管理グループに所属するOSユーザが実行できるHADBのコマンドについては，マニュアルHADB　コマンドリファレンスのコマンドの一覧と共通規則のコマンドの一覧を参照してください。

(5)　サーバディレクトリを格納するディレクトリの作成

スーパユーザで，HADBサーバをインストールする際に必要なサーバディレクトリを格納するディレクトリを作成してください。サーバディレクトリを格納するディレクトリは，OSのmkdirコマンドで作成します。

サーバディレクトリを格納するディレクトリのパス名は，「/HADB」としてください。

■サーバディレクトリを格納するディレクトリの作成例

サーバディレクトリを格納するディレクトリ（/HADB）を作成します。

mkdir /HADB

なお，サーバディレクトリを格納するディレクトリ，およびサーバディレクトリを作成するディスクには，セクターサイズが512バイトまたは4,096バイトのディスクが使用できます。

(6)　サーバディレクトリを格納するディレクトリの設定の変更

サーバディレクトリを格納するディレクトリ（/HADB）を作成したら，スーパユーザで，次の設定を変更してください。

サーバディレクトリを格納するディレクトリ（/HADB）の所有者とグループを変更する

ディレクトリの所有者を，HADB管理者（adbmanager）に変更してください。また，ディレクトリのグループを，HADB管理グループ（adbgroup）に変更してください。ディレクトリの所有者とグループは，OSのchownコマンドで変更します。

サーバディレクトリを格納するディレクトリ（/HADB）に書き込み権限を付与する

HADB管理者（adbmanager）が書き込みできるように，ディレクトリに書き込み権限を付与してください。ディレクトリの書き込み権限は，OSのchmodコマンドで付与します。

■サーバディレクトリを格納するディレクトリの設定の変更例

サーバディレクトリを格納するディレクトリ（/HADB）の所有者，およびグループを変更し，ディレクトリに書き込み権限を付与します。

chown adbmanager:adbgroup /HADB
chmod 755 /HADB

(7)　通信情報ファイルを格納するディレクトリの作成

HADBサーバを動作させるために必要な通信情報ファイルを格納するディレクトリを作成してください。通信情報ファイルを格納するディレクトリは，OSのmkdirコマンドで作成します。

通信情報ファイルを格納するディレクトリのパス名，および付与するアクセス権限を次の表に示します。

表8‒2　通信情報ファイルを格納するディレクトリの情報

項番

作成するディレクトリのパス名

所有者

アクセス権限

1

/dev/HADB/pth

スーパユーザ

777

また，次に示す設定ファイルを作成する必要があります。

表8‒3　設定ファイルの情報

項番

作成する設定ファイル

所有者

アクセス権限

1

/etc/tmpfiles.d/dev-HADB-pth.conf

スーパユーザ

644（デフォルト）

設定ファイル（dev-HADB-pth.conf）に入力する内容を次に示します。

# Type Path Mode UID  GID  Age Argument
d /dev/HADB/pth 0777 root root - -

■通信情報ファイルを格納するディレクトリの作成例

通信情報ファイルを格納するディレクトリ（/dev/HADB/pth）を作成します。その際，アクセス権限として777を付与します。

mkdir -p -v -m 777 /dev/HADB/pth

■設定ファイルの作成例

設定ファイル（dev-HADB-pth.conf）を作成します。

次に示すOSのコマンドを実行してください。

vi /etc/tmpfiles.d/dev-HADB-pth.conf

viコマンドを実行したら，［I］キーを押してください。そのあとで，次に示す内容を入力してください。

# Type Path Mode UID  GID  Age Argument
d /dev/HADB/pth 0777 root root - -

入力が完了したら，［Esc］キーを押してください。そのあとで，次に示すコマンドを入力して，［Enter］キーを押してください。

:wq

(8)　設定ファイルの変更

HADB管理者が自身に関するログにアクセスできるように，次の表に示す設定ファイルの内容を変更します。

表8‒4　変更が必要な設定ファイル

項番

変更が必要な設定ファイル

所有者

アクセス権限

1

/etc/systemd/journald.conf

スーパユーザ

644（デフォルト）

上記の設定ファイル中の[Journal]セクションのStorageオプションを次のように変更してください。

＜変更前＞

[Journal]
#Storage=auto

＜変更後＞

[Journal]
Storage=persistent

変更後の設定を有効にするために，次のコマンドを実行してください。

systemctl restart systemd-journald

(9)　設定ファイルの変更および作成（コアファイルの出力がsystemd-coredumpで制御されている場合）

コアファイルの出力がsystemd-coredumpで制御されている場合は，ここで説明する作業を実施してください。次のコマンドを実行すると，systemd-coredumpが有効かどうかを確認できます。

cat /proc/sys/kernel/core_pattern

上記のコマンドの実行結果に，次のようにsystemd-coredumpへのパスが含まれている場合は，systemd-coredumpが有効な状態です。

|/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h %e

■/etc/systemd/coredump.confの変更

コアファイルの出力容量を増やすために，次の表に示す設定ファイルの内容を変更します。

表8‒5　変更が必要な設定ファイル

項番

変更が必要な設定ファイル

所有者

アクセス権限

1

/etc/systemd/coredump.conf

スーパユーザ

644（デフォルト）

上記の設定ファイル中の[Coredump]セクションのProcessSizeMaxオプション，およびExternalSizeMaxオプションを次のように変更します。

＜変更前＞

[Coredump]
#ProcessSizeMax=2G
#ExternalSizeMax=2G

＜変更後＞

[Coredump]
ProcessSizeMax=15E
ExternalSizeMax=15E

■/etc/systemd/system/systemd-coredump@.serviceの作成

systemd-coredumpの実行時間を十分に確保するために，次の表に示す設定ファイルを作成してください。

表8‒6　作成が必要な設定ファイル

項番

作成が必要な設定ファイル

所有者

アクセス権限

1

/etc/systemd/system/systemd-coredump@.service

スーパユーザ

644（デフォルト）

上記の設定ファイルは，次の場所からコピーしてください。

cp /usr/lib/systemd/system/systemd-coredump@.service /etc/systemd/system/systemd-coredump@.service

上記の設定ファイル中の[Service]セクションのRuntimeMaxSecオプションを，次のどちらかのように変更してください。

＜変更前＞

[Service]
RuntimeMaxSec=5min

＜変更後1＞

[Service]
#RuntimeMaxSec=5min

＜変更後2＞

[Service]
RuntimeMaxSec=infinity

(10)　syslogのアクセス権限の変更

HADBサーバのメッセージが出力されるsyslogのアクセス権限を変更してください。syslogのアクセス権限は，OSのchmodコマンドで変更できます。

syslogのアクセス権限を変更することで，adbinfogetコマンドでトラブルシュート情報を取得するときに，syslogを取得できるようになります。

syslogのデフォルトのパス名，および付与するアクセス権限を次の表に示します。

表8‒7　アクセス権限を変更するsyslogの情報

項番

syslogのデフォルトのパス名

所有者

アクセス権限

1

/var/log/messages※

スーパユーザ

604

注※

HADBサーバのメッセージが出力されるsyslogを，/var/log/messagesから変更している場合は，変更先のsyslogに対してアクセス権限を付与してください。

■syslogのアクセス権限の変更例

syslog（/var/log/messages）のアクセス権限を604に変更します。

chmod 604 /var/log/messages

8.2.2　HADBサーバのインストール手順

ここでは，HADBサーバをインストールする手順を説明します。HADBサーバをインストールする場合，HADB管理者として設定したOSユーザで実行してください。

重要

HADBサーバをインストールする前に，次の作業が完了していることを確認願います。

カーネルパラメタの設定

カーネルパラメタの設定については，「8.3　カーネルパラメタの設定」を参照してください。

環境変数の設定

環境変数の設定については，「8.4　環境変数の設定」を参照してください。

HADBサーバで使用できるロケール（前提パッケージのglibc-langpack-jaまたはglibc-langpack-en）のインストール

HADBサーバで使用できるロケールについては，「8.2.1　HADBサーバのインストール前に実施する作業」の「(1)　前提パッケージの確認」を参照してください。

上記の作業が完了していることを確認したあとに，HADBサーバのインストールを実施してください。

(1)　インストールデータを格納するディレクトリの作成

HADBサーバのインストールデータを格納するディレクトリを作成してください。

mkdir /home/adbmanager/install

上記の例では，HADBサーバのインストールデータを格納するディレクトリとして/home/adbmanager/installを作成しています。

(2)　インストールデータを格納するディレクトリへの書き込み権限の付与

インストールデータを格納するディレクトリ（この例では/home/adbmanager/install）に対して，HADB管理者が書き込みできるように書き込み権限を付与してください。

chmod 755 /home/adbmanager/install

(3)　CD-ROMファイルシステムのマウント

HADBサーバのインストールデータが格納されているCD-ROMファイルシステムを自動マウントしてください。

CD-ROMファイルシステムが自動マウントされない場合，次のコマンドを実行してCD-ROMファイルシステムをマウントしてください。

mount /dev/cdrom /media

下線部分は，CD-ROMファイルシステムのマウントディレクトリ名です。環境によって異なります。

重要

CD-ROMのディレクトリ名やファイル名は，ご使用のサーバマシンによっては，ここの説明内容と表示が異なることがあります。OSのlsコマンドを実行して，表示されたディレクトリ名をそのまま入力してください。

(4)　インストールデータのコピー

マウントしたCD-ROMファイルシステムに格納されている次のファイルを，「(1)　インストールデータを格納するディレクトリの作成」で作成したディレクトリにコピーしてください。

tar.gz形式のファイル

adbinstallコマンドの実行形式ファイル

!8A9_HADBファイル

cp /media/hitachi_advanced_database_server-$VER.tar.gz /home/adbmanager/install      ...1
cp /media/adbinstall /home/adbmanager/install                                        ...2
cp '/media/!8A9_HADB' /home/adbmanager/install                                       ...3

［説明］

tar.gz形式のファイル（HADBサーバのプログラムの圧縮ファイル）をコピーします。

adbinstallコマンドの実行形式ファイル（HADBサーバのインストールコマンド）をコピーします。

!8A9_HADBファイルをコピーします。

上記の例では，すべてのファイルを/home/adbmanager/installディレクトリ下にコピーしています。

下線部分は，CD-ROMファイルシステムのマウントディレクトリ名です。環境によって異なります。

$VERは，HADBサーバのバージョンとリリース番号です。

なお，!8A9_HADBファイルは，RHEL 8の場合で，かつITRUを使用するときに必要です。RHEL 9以降の場合は不要です。

重要

上記のファイルは，必ず同じディレクトリにコピーしてください。異なるディレクトリにコピーすると，HADBサーバのインストールが実行できません。

(5)　コピーしたファイルの確認

「(4)　インストールデータのコピー」でコピーしたファイルが破損していないことを確認してください。

cd /home/adbmanager/install
sha256sum -c /media/adbhashfile_server_sha256.txt

下線部分は，CD-ROMファイルシステムのマウントディレクトリ名です。環境によって異なります。

ファイルが破損しているおそれがある（ファイルのハッシュ値が異なる）場合は，エラーを示すメッセージが出力されます。この場合，「(4)　インストールデータのコピー」から作業をし直してください。

出力されるメッセージの詳細については，OSのマニュアルを参照してください。

(6)　権限の付与

HADB管理者がadbinstallコマンド（HADBサーバのインストールコマンド）を実行できるように，adbinstallコマンドに対する実行権限を付与してください。

また，tar.gz形式のファイルに対する読み取り権限も付与してください。

chmod 500 /home/adbmanager/install/adbinstall
chmod 400 /home/adbmanager/install/hitachi_advanced_database_server-$VER.tar.gz

$VERは，HADBサーバのバージョンとリリース番号です。

(7)　HADBサーバのインストール

adbinstallコマンドを実行して，HADBサーバをインストールしてください。

/home/adbmanager/install/adbinstall -s /HADB/server

下線部分には，「(1)　インストールデータを格納するディレクトリの作成」で作成したディレクトリを指定します。

-sオプションに指定したディレクトリ下（上記の場合，/HADB/serverディレクトリ下）に，HADBサーバがインストールされます。

メモ

HADBサーバをインストールしたディレクトリが，サーバディレクトリとなります。サーバディレクトリとは，HADBサーバがインストールされるディレクトリのことであり，1つのサーバプロセスに関するファイル群が格納されます。

上記の例の場合，/HADB/serverディレクトリがサーバディレクトリになります。

サーバディレクトリのパス名は，スラッシュ（/）で始まる118バイト以内の文字列としてください。

サーバディレクトリのパス名に使用できる文字については，はじめにの「■このマニュアルで使用する構文要素記号」の〈パス名〉を参照してください。

-sオプションに指定したディレクトリが存在しないときは，adbinstallコマンドを実行すると，自動的にディレクトリが作成されます。

重要

HADBサーバをインストールするためにadbinstallコマンドを実行したOSユーザが，HADB管理者としてHADBサーバに認識されます。

■KFAA91553-Eメッセージが出力された場合の対処方法

サーバディレクトリには，必ずHADB管理者が書き込みできるディレクトリを指定してください。HADB管理者が書き込みできないディレクトリを-sオプションに指定した場合，KFAA91553-Eメッセージが出力されてエラーになります。KFAA91553-Eメッセージが出力された場合は，サーバディレクトリに対する書き込み権限を付与してください。

インストールデータを格納するディレクトリに，HADB管理者が書き込みできない場合，KFAA91553-Eメッセージが出力されてエラーになります。KFAA91553-Eメッセージが出力された場合は，インストールデータを格納するディレクトリに対する書き込み権限を付与してください。

■KFAA91558-Wメッセージが出力された場合の対処方法

HADB管理者として設定したOSユーザではなく，rootでadbinstallコマンドを実行した場合は，警告メッセージ（KFAA91558-Wメッセージ）が出力されます。通常，HADB管理者として設定したOSユーザで，adbinstallコマンドを実行します。そのため，KFAA91558-Wメッセージが出力された場合は，rootでadbinstallコマンドを実行して問題がないかどうかを確認してください。

問題がある場合は，KFAA91558-Wメッセージが出力されたあとに出力されるKFAA91559-Qメッセージの入力要求に対して，n（またはN）を入力してください。そのあとで，HADB管理者として設定したOSユーザでadbinstallコマンドを実行してください。

なお，root以外のスーパユーザでadbinstallコマンドを実行した場合は，KFAA91558-Wメッセージは出力されません。

メモ

rootは，OSのid -uコマンドを実行して表示される値が0のユーザを指します。また，OSのsuコマンドを使用して，ほかのOSユーザからrootに切り替えたあとで，OSのid -uコマンドを実行して表示される値が0のときも含みます。

メモ

adbinstallコマンドについては，マニュアルHADB　コマンドリファレンスのadbinstall（HADBサーバおよびHADBクライアントのインストール）を参照してください。

adbinstallコマンドでHADBサーバをインストールしたときのサーバディレクトリの構成については，「付録A.1　サーバディレクトリ（インストール時）の構成」を参照してください。

(8)　HADBサーバのインストールの確認

HADBサーバが正常にインストールされていることを確認してください。

手順

サーバディレクトリ下にadbinstsv.logファイルがあることを確認する

adbinstsv.logファイルを開いて内容を確認する

正常にインストールされている場合は，次の情報が出力されています。

P-aaaa-bbbb Hitachi Advanced Database 06-00-/B (20250722153540)

P-aaaa-bbbbには，HADBサーバのPP形名情報が出力されます。

1つ目の下線部分には，HADBサーバのバージョン情報が出力されます。

2つ目の下線部分には，HADBサーバをインストールした日付と時刻（上記の例では2025年7月22日15時35分40秒）が出力されます。

メモ

adbinstsv.logファイルがすでにある状態のときにadbinstallコマンドを実行すると，adbinstsv.logファイルの内容が更新されます。また，adbinstallコマンドを複数回実行した場合，最後に実行した日付と時刻が記載されます。

adbinstallコマンドのリターンコード（KFAA91552-Iメッセージに出力されるリターンコード）が0または4以外の場合，adbinstsv.logファイルの内容は更新されません。

adbinstallコマンドの実行時にKFAA91555-Iメッセージが出力された場合，adbinstsv.logファイルの内容は更新されません。

8.2.3　HADBサーバのインストール後に実施する作業

HADBサーバをインストールしたあとで，次の作業を実施してください。

(1)　ウイルス対策ソフトによるスキャン対象の見直し

HADBサーバをインストールしたサーバマシンに，ウイルス対策ソフトがインストールされている場合は，スキャン対象を見直してください。

ウイルス対策ソフトのスキャン対象に，HADBサーバが使用するディレクトリやファイルを設定しておくと，HADBサーバが正常に動作しないなどの問題が発生するおそれがあります。そのため，ウイルス対策ソフトのスキャン対象から，次に示すディレクトリおよびファイルを除いてください。

■スキャン対象から除くディレクトリとファイル

サーバディレクトリ

DBディレクトリ

通信情報ファイルを格納するディレクトリ（/dev/HADB/pth）

サーバ定義adb_core_pathオペランドに指定するディレクトリ

HADBサーバの各コマンドがアクセスするすべてのディレクトリ

すべてのアーカイブディレクトリ

同義語辞書ファイルの格納ディレクトリ（サーバ定義のadb_syndict_storage_pathオペランドに指定するディレクトリ）

監査証跡の出力先ディレクトリ（サーバ定義のadb_audit_log_pathオペランドに指定するディレクトリ）

マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリ（サーバ定義のadb_syndict_node_storage_pathオペランドに指定するディレクトリ）

PAM認証で使用する秘密鍵ファイルの保存先ディレクトリ，および公開鍵ファイルの保存先ディレクトリ

DBエリア暗号化機能で使用するHADB暗号鍵ファイルの保存先ディレクトリ

クライアントディレクトリ

統一フォーマット用監査証跡の出力先ディレクトリ（adbconvertaudittrailfileコマンドの-dオプションに指定するディレクトリ）

ADB_CSVREAD関数でアクセスするファイル

ADB_AUDITREAD関数でアクセスするファイル

adbconvertaudittrailfileコマンドで指定する変換対象の監査証跡ファイル

AWS SDK for C++ライブラリ

Azure SDK for C++ライブラリ

(2)　IT Report Utilityの設定

HADBサーバをインストールしたサーバマシンに，IT Report Utility（ITRU）がインストールされている場合は，ITRU経由でトラブルシュート情報を取得できるように設定してください。

重要

HADBサーバに対応するITRUのバージョンは，サーバマシンのOSのバージョンによって異なります。

RHEL 8の場合

HADBサーバに対応するITRUのバージョンは，03-01以降です。

RHEL 9以降の場合

ITRUを使用できません。

ITRUの設定手順を次に示します。

手順

サーバマシンにrootでログインする

HADB管理者でログインしている場合は，いったんログアウトして，rootでログインし直してください。

ITRUの採取パターン定義ファイルをコピーする

HADBサーバのインストールデータを格納するディレクトリ下にあるITRUの採取パターン定義ファイル（!8A9_HADB）を，ITRUの採取パターン定義ファイル格納ディレクトリ（/etc/opt/hitachi/systoru/pattern）にコピーしてください。

コマンドの実行例

cp '/home/adbmanager/install/!8A9_HADB' /etc/opt/hitachi/systoru/pattern

下線部分は，HADBサーバのインストールデータを格納するディレクトリです。

ITRUの採取パターン定義ファイルの内容を修正する

コピーしたITRUの採取パターン定義ファイル（!8A9_HADB）をテキストエディタで開き，次に示す個所を修正してください。

■ITRUの採取パターン定義ファイルの内容（修正前）

FORMAT_VERSION=1.0

PP_NAME="HADB"
PP_GROUP="HADB"

# HADB
#
BLOCK {
  TARGET="config"
  TARGET="failure"
  TOOL_BLOCK {
    TIMEOUT=300
    COMMAND_LINE="XXX/bin/adbsystoru -s XXX -l YYY -o ¥"%d%¥""
    REDIRECT_PATH="%d%/HADB.txt"
  }
  DATA_BLOCK {
    DESCRIPTION="HADB"
    FILE_TYPE="directory"
    PATH_NAME="%d%"
  }
}

上記のXXXおよびYYYの個所を修正してください。

■ITRUの採取パターン定義ファイルの内容（修正後）

   :
COMMAND_LINE="/HADB/server/bin/adbsystoru -s /HADB/server -l UTF8 -o ¥"%d%¥""
   :

XXXの個所

サーバディレクトリを絶対パスで指定してください。環境変数ADBDIRの指定内容と同じにしてください。この例では，/HADB/serverを指定しています。

YYYの個所

HADBサーバで使用する文字コードを指定してください。環境変数ADBLANGの指定内容と同じにしてください。この例では，UTF8を指定しています。

環境変数ADBDIRとADBLANGについては，「8.4　環境変数の設定」を参照してください。

ITRUの採取パターン定義ファイルを編集した結果を保存する

手順3.で編集した内容を保存して，ITRUの採取パターン定義ファイル（!8A9_HADB）を閉じてください。

これで，ITRUの採取パターン定義ファイルの設定が完了します。

(3)　SELinuxのモードの確認

HADBサーバをインストールしたサーバマシンで，OSのgetenforceコマンドを実行してSELinuxのモードを確認してください。SELinuxのモードには，次の3種類があります。

Enforcing

SELinuxが有効な状態であり，強制アクセス制御も有効な状態です。

Permissive

SELinuxは有効な状態ですが，強制アクセス制御は無効な状態です。リソースへの不正なアクセスが発生した場合，警告メッセージが出力されます。

Disabled

SELinuxが無効な状態です。この場合，以降で説明している手順で，SELinuxのモードをPermissiveに設定しないでください。

重要

SELinuxの影響によって，HADBサーバに関連するプロセスが必要なファイルにアクセスできない場合，予期しない問題が発生するおそれがあります。そのため，SELinuxのモードがEnforcingの場合，HADBサーバの稼働中は，SELinuxのモードをPermissiveにすることを推奨します。

SELinuxのモードをPermissiveにするには，/etc/selinux/configファイルを編集します。次のように，SELINUXオプションにpermissiveを指定してください。

SELINUX=permissive

上記の設定を有効にするためには，OSの再起動が必要です。設定したあとでOSを再起動してください。

メモ

SELinuxの詳細な設定方法については，OSのマニュアルを参照してください。

将来，SELinuxをEnforcingの状態で運用することを検討している場合は，SELinuxをPermissiveの状態でHADBサーバを運用してください。その際，Auditログ（/var/log/audit/audit.log）に出力される警告メッセージを確認して，警告メッセージが出力される原因を取り除いてください。

(4)　HADBサーバの自動起動の設定

OSの起動時や再起動時に，HADBサーバを自動的に開始したい場合は，SystemdでHADBサーバの自動起動を設定してください。

メモ

以降で説明しているHADBサーバの自動起動の設定手順は，マルチノード構成のHADBサーバには対応していません。

自動起動の設定手順を次に示します。

手順

サーバマシンにrootでログインする

HADB管理者でログインしている場合は，いったんログアウトして，rootでログインし直してください。

ユニットファイルを作成する

次の表に示すユニットファイルを作成してください。

表8‒8　作成が必要なユニットファイル

項番

作成が必要なユニットファイル

所有者

アクセス権限

1

/etc/systemd/system/hadb.service

スーパユーザ

644（デフォルト）

■ユニットファイルの内容例

[Unit]
Description=Hitachi Advanced Database Server
Wants=systemd-tmpfiles-setup-dev.service
After=syslog.target network.target local-fs.target systemd-tmpfiles-setup-dev.service

[Service]
Type=forking
PIDFile=/HADB/server/spool/adbsrvd.pid                                   ...a
Environment=ADBDIR=/HADB/server                                          ...a
Environment=ADBLANG=UTF8                                                 ...b
Environment=LD_LIBRARY_PATH=/HADB/server/lib:/HADB/server/client/lib     ...a
Environment=PATH=/HADB/server/bin:/HADB/server/client/bin:/usr/bin       ...a
User=adbmanager
Group=adbgroup
ExecStart=/HADB/server/bin/adbstart                                      ...a
ExecStop=/HADB/server/bin/adbstop --cancel                               ...a
LimitNOFILE=1048576
LimitMEMLOCK=infinity
LimitNPROC=1048576
LimitCORE=infinity

[Install]
WantedBy=multi-user.target

［説明］

下線部分には，環境変数ADBDIRで指定したサーバディレクトリの絶対パスを指定してください。

下線部分には，環境変数ADBLANGで指定したHADBサーバで使用する文字コードを指定してください。

環境変数ADBDIRとADBLANGについては，「8.4　環境変数の設定」を参照してください。

また，Environmentオプションは，EnvironmentFileオプションを使用して環境変数をまとめることもできます。

HADBサーバのサービスユニットを有効化する

次に示すコマンドを実行してください。

systemctl daemon-reload
systemctl enable hadb.service

重要

HADBサーバのサービスユニットを有効化したら，OSを再起動する前に，HADBサーバをadbstartコマンドで正常に開始できることを確認してください。その際，adbstartコマンドのリターンコードが0であることを確認してください。adbstartコマンドのリターンコードが0以外の場合，Systemdはサービスの起動が失敗したと見なします。HADBサーバをadbstartコマンドで正常に開始できない状態でOSを再起動すると，再起動後にHADBサーバのサービスユニットの起動に失敗します。

これで，HADBサーバの自動起動の設定が完了します。

8.2.4　HADBオプションのインストール手順

ここでは，HADBオプションのインストール手順について説明します。

重要

HADBオプションをインストールする前に，HADBオプションのバージョンに対応するHADBサーバをインストールして，サーバディレクトリを作成しておく必要があります。HADBオプションのインストール時に，HADBオプションとHADBサーバのバージョンが対応しているかどうかのチェックが実行されます。バージョンが対応していない場合は，KFAA91581-Eメッセージが出力されてHADBオプションのインストールがエラーになります。

HADBオプションのインストールは，HADBサーバを終了したあとに実施してください。

Amazon S3互換オブジェクトストレージを使用する場合は，「(1)　HADBオプションのインストール手順（AWS環境の場合）」の手順に従って，AWS用のHADBオプションをインストールしてください。

(1)　HADBオプションのインストール手順（AWS環境の場合）

AWS環境でのHADBオプションのインストール手順について説明します。

手順

HADB管理者のOSアカウントでOSにログインする

インストールデータを格納するディレクトリを作成する

mkdir /home/adbmanager/install

上記の例では，HADBオプションのインストールデータを格納するディレクトリとして，/home/adbmanager/installを作成しています。

インストールデータを格納するディレクトリに書き込み権限を付与する

chmod 755 /home/adbmanager/install

HADB管理者が書き込みできるように，インストールデータを格納するディレクトリ（この例では/home/adbmanager/install）に対して，書き込み権限を付与します。

CD-ROMファイルシステムをマウントする

HADBオプションのインストールデータが格納されているCD-ROMファイルシステムを自動マウントしてください。CD-ROMファイルシステムが自動マウントされない場合，次のコマンドを実行してCD-ROMファイルシステムをマウントしてください。

mount /dev/cdrom /media

下線部分は，CD-ROMファイルシステムのマウントディレクトリ名です。環境によって異なります。

重要

CD-ROMのディレクトリ名やファイル名は，ご使用の環境によっては，ここの説明内容と表示が異なることがあります。OSのlsコマンドを実行して，表示されたディレクトリ名をそのまま入力してください。

インストールデータをコピーする

マウントしたCD-ROMファイルシステムに格納されている次のファイルを，手順2.で作成したインストールデータを格納するディレクトリにコピーしてください。

tar.gz形式のファイル

adboptinstallコマンドの実行形式ファイル

cp /media/hitachi_advanced_database_s3option-$VER.tar.gz /home/adbmanager/install    ...a
cp /media/adboptinstall /home/adbmanager/install                                     ...b

［説明］

tar.gz形式のファイル（AWS用のHADBオプションのプログラムの圧縮ファイル）をコピーします。

adboptinstallコマンドの実行形式ファイル（HADBオプションのインストールコマンド）をコピーします。

上記の例では，2つのファイルを/home/adbmanager/installディレクトリ下にコピーしています。

下線部分は，CD-ROMファイルシステムのマウントディレクトリ名です。環境によって異なります。

$VERは，HADBオプションのバージョンとリリース番号です。

重要

上記の2つのファイルは，必ず同じディレクトリにコピーしてください。同じディレクトリにコピーしないと，HADBオプションのインストールが実行できません。

コピーしたファイルが破損していないことを確認する

手順5.でコピーしたファイルが破損していないことを確認します。次のコマンドを実行してください。

cd /home/adbmanager/install
sha256sum -c /media/adbhashfile_s3option_sha256.txt

下線部分は，CD-ROMファイルシステムのマウントディレクトリ名です。環境によって異なります。

CD-ROMファイルシステムに格納されているadbhashfile_s3option_sha256.txtファイルを使用して，コピーした各ファイルのハッシュ値をチェックします。

ファイルが破損しているおそれがある（ファイルのハッシュ値が異なる）場合は，エラーを示すメッセージが出力されます。この場合，手順5.から作業をし直してください。

出力されるメッセージの詳細については，OSのマニュアルを参照してください。

権限を付与する

HADB管理者がadboptinstallコマンド（HADBオプションのインストールコマンド）を実行できるように，adboptinstallコマンドに対する読み取り権限と実行権限を付与してください。

また，tar.gz形式のファイルに対する読み取り権限も付与してください。

chmod 500 /home/adbmanager/install/adboptinstall
chmod 400 /home/adbmanager/install/hitachi_advanced_database_s3option-$VER.tar.gz

$VERは，HADBオプションのバージョンとリリース番号です。

HADBオプションをインストールする

adboptinstallコマンドを実行して，AWS用のHADBオプションをインストールしてください。

/home/adbmanager/install/adboptinstall s3option

下線部分には，手順2.で作成したインストールデータを格納するディレクトリを指定します。

環境変数ADBDIRに指定したサーバディレクトリ下にHADBオプションがインストールされます。

メモ

KFAA91581-Eメッセージが出力されて，adboptinstallコマンドがエラーになった場合は，「(3)　インストールの操作中にKFAA91581-Eメッセージが出力された場合」を参照してください。

adboptinstallコマンドを実行した際にKFAA91558-Wメッセージ（警告メッセージ）が出力された場合は，「(4)　インストールの操作中にKFAA91558-Wメッセージが出力された場合」を参照してください。

HADBオプションが正常にインストールされていることを確認する（その1）

次のファイルが格納されていることを確認してください。

$ADBDIR/lib/libadbcldstge-aws.so

$ADBDIR/lib/libaws-cpp-sdk-s3-crt.so

$ADBDIR/lib/libaws-cpp-sdk-core.so

下線部分は，サーバディレクトリのパス名です。

適用OSがRHEL 9以降の場合，libadbcldstge-aws.soおよびlibaws-cpp-sdk-s3-crt.soが格納されていることを確認してください。

適用OSがRHEL 8の場合，3つのファイルが格納されていることを確認してください。

HADBオプションが正常にインストールされていることを確認する（その2）

サーバディレクトリ直下にadboptinst_s3option.logファイルが格納されていることを確認してください。

adboptinst_s3option.logファイルを開き，内容を確認してください。HADBオプションが正常にインストールされている場合は，次の情報が出力されています。

P-aaaa-bbbb Hitachi Advanced Database 06-00-/B (20250722153540)

P-aaaa-bbbbには，HADBサーバのPP形名情報が出力されます。

1つ目の下線部分には，HADBサーバのバージョン情報が出力されます。

2つ目の下線部分には，HADBオプションをインストールした日付と時刻（上記の例では2025年7月22日15時35分40秒）が出力されます。

メモ

adboptinst_s3option.logファイルがすでにある状態のときにadboptinstallコマンドを実行すると，adboptinst_s3option.logファイルの内容が更新されます。また，adboptinstallコマンドを複数回実行した場合，最後に実行した日付と時刻が記載されます。

adboptinstallコマンドのリターンコード（KFAA91552-Iメッセージに出力されるリターンコード）が0または4以外の場合，adboptinst_s3option.logファイルの内容は更新されません。

(2)　HADBオプションのインストール手順（Azure環境の場合）

Azure環境でのHADBオプションのインストール手順について説明します。

手順

HADB管理者のOSアカウントでOSにログインする

インストールデータを格納するディレクトリを作成する

mkdir /home/adbmanager/install

上記の例では，HADBオプションのインストールデータを格納するディレクトリとして，/home/adbmanager/installを作成しています。

インストールデータを格納するディレクトリに書き込み権限を付与する

chmod 755 /home/adbmanager/install

HADB管理者が書き込みできるように，インストールデータを格納するディレクトリ（この例では/home/adbmanager/install）に対して，書き込み権限を付与します。

CD-ROMファイルシステムをマウントする

HADBオプションのインストールデータが格納されているCD-ROMファイルシステムを自動マウントしてください。CD-ROMファイルシステムが自動マウントされない場合，次のコマンドを実行してCD-ROMファイルシステムをマウントしてください。

mount /dev/cdrom /media

下線部分は，CD-ROMファイルシステムのマウントディレクトリ名です。環境によって異なります。

重要

CD-ROMのディレクトリ名やファイル名は，ご使用の環境によっては，ここの説明内容と表示が異なることがあります。OSのlsコマンドを実行して，表示されたディレクトリ名をそのまま入力してください。

インストールデータをコピーする

マウントしたCD-ROMファイルシステムに格納されている次のファイルを，手順2.で作成したインストールデータを格納するディレクトリにコピーしてください。

tar.gz形式のファイル

adboptinstallコマンドの実行形式ファイル

cp /media/hitachi_advanced_database_azoption-$VER.tar.gz /home/adbmanager/install    ...a
cp /media/adboptinstall /home/adbmanager/install                                     ...b

［説明］

tar.gz形式のファイル（Azure用のHADBオプションのプログラムの圧縮ファイル）をコピーします。

adboptinstallコマンドの実行形式ファイル（HADBオプションのインストールコマンド）をコピーします。

上記の例では，2つのファイルを/home/adbmanager/installディレクトリ下にコピーしています。

下線部分は，CD-ROMファイルシステムのマウントディレクトリ名です。環境によって異なります。

$VERは，HADBオプションのバージョンとリリース番号です。

重要

上記の2つのファイルは，必ず同じディレクトリにコピーしてください。同じディレクトリにコピーしないと，HADBオプションのインストールが実行できません。

コピーしたファイルが破損していないことを確認する

手順5.でコピーしたファイルが破損していないことを確認します。次のコマンドを実行してください。

cd /home/adbmanager/install
sha256sum -c /media/adbhashfile_azoption_sha256.txt

下線部分は，CD-ROMファイルシステムのマウントディレクトリ名です。環境によって異なります。

CD-ROMファイルシステムに格納されているadbhashfile_azoption_sha256.txtファイルを使用して，コピーした各ファイルのハッシュ値をチェックします。

ファイルが破損しているおそれがある（ファイルのハッシュ値が異なる）場合は，エラーを示すメッセージが出力されます。この場合，手順5.から作業をし直してください。

出力されるメッセージの詳細については，OSのマニュアルを参照してください。

権限を付与する

HADB管理者がadboptinstallコマンド（HADBオプションのインストールコマンド）を実行できるように，adboptinstallコマンドに対する読み取り権限と実行権限を付与してください。

また，tar.gz形式のファイルに対する読み取り権限も付与してください。

chmod 500 /home/adbmanager/install/adboptinstall
chmod 400 /home/adbmanager/install/hitachi_advanced_database_azoption-$VER.tar.gz

$VERは，HADBオプションのバージョンとリリース番号です。

HADBオプションをインストールする

adboptinstallコマンドを実行して，Azure用のHADBオプションをインストールしてください。

/home/adbmanager/install/adboptinstall azoption

下線部分には，手順2.で作成したインストールデータを格納するディレクトリを指定します。

環境変数ADBDIRに指定したサーバディレクトリ下にHADBオプションがインストールされます。

メモ

KFAA91581-Eメッセージが出力されて，adboptinstallコマンドがエラーになった場合は，「(3)　インストールの操作中にKFAA91581-Eメッセージが出力された場合」を参照してください。

adboptinstallコマンドを実行した際にKFAA91558-Wメッセージ（警告メッセージ）が出力された場合は，「(4)　インストールの操作中にKFAA91558-Wメッセージが出力された場合」を参照してください。

HADBオプションが正常にインストールされていることを確認する（その1）

次のファイルが格納されていることを確認してください。

$ADBDIR/lib/libadbcldstge-azure.so

$ADBDIR/lib/libazure-storage-blobs.so.12.14.0

$ADBDIR/lib/libazure-storage-common.so.12.11.0-beta.1

$ADBDIR/lib/lib64/libazure-identity.so.1.13.0-beta.2

$ADBDIR/lib/lib64/libazure-core.so.1.17.0-beta.1

下線部分は，サーバディレクトリのパス名です。

HADBオプションが正常にインストールされていることを確認する（その2）

サーバディレクトリ直下にadboptinst_azoption.logファイルが格納されていることを確認してください。

adboptinst_azoption.logファイルを開き，内容を確認してください。HADBオプションが正常にインストールされている場合は，次の情報が出力されています。

P-aaaa-bbbb Hitachi Advanced Database 06-00-/B (20250722153540)

P-aaaa-bbbbには，HADBサーバのPP形名情報が出力されます。

1つ目の下線部分には，HADBサーバのバージョン情報が出力されます。

2つ目の下線部分には，HADBオプションをインストールした日付と時刻（上記の例では2025年7月22日15時35分40秒）が出力されます。

メモ

adboptinst_azoption.logファイルがすでにある状態のときにadboptinstallコマンドを実行すると，adboptinst_azoption.logファイルの内容が更新されます。また，adboptinstallコマンドを複数回実行した場合，最後に実行した日付と時刻が記載されます。

adboptinstallコマンドのリターンコード（KFAA91552-Iメッセージに出力されるリターンコード）が0または4以外の場合，adboptinst_azoption.logファイルの内容は更新されません。

(3)　インストールの操作中にKFAA91581-Eメッセージが出力された場合

次のディレクトリに対する読み取り権限，書き込み権限，および実行権限がない場合，adboptinstallコマンドがエラーになり，KFAA91581-Eメッセージが出力されます。この場合，ディレクトリに対する読み取り権限，書き込み権限，および実行権限を付与してください。

環境変数ADBDIRに指定したサーバディレクトリ

$ADBDIR/libディレクトリ

また，環境変数ADBDIRに指定したパスにサーバディレクトリが存在しない場合も，adboptinstallコマンドがエラーになり，KFAA91581-Eメッセージが出力されます。この場合，環境変数ADBDIRに正しいサーバディレクトリのパスを指定してください。

(4)　インストールの操作中にKFAA91558-Wメッセージが出力された場合

HADB管理者のOSアカウントではなく，rootでadboptinstallコマンドを実行した場合は，警告メッセージ（KFAA91558-Wメッセージ）が出力されます。通常，HADB管理者のOSアカウントで，adboptinstallコマンドを実行します。そのため，KFAA91558-Wメッセージが出力された場合は，rootでadboptinstallコマンドを実行して問題がないかどうかを確認してください。

問題がある場合は，KFAA91558-Wメッセージが出力されたあとに出力されるKFAA91559-Qメッセージの入力要求に対して，n（またはN）を入力してください。そのあとで，HADB管理者のOSアカウントでadboptinstallコマンドを実行してください。

また，root以外のスーパユーザでadboptinstallコマンドを実行した場合は，KFAA91558-Wメッセージは出力されません。

メモ

rootは，OSのid -uコマンドを実行して表示される値が0のユーザを指します。また，OSのsuコマンドを使用して，ほかのOSユーザからrootに切り替えたあとで，OSのid -uコマンドを実行して表示される値が0のときも含みます。

8.3　カーネルパラメタの設定

ここでは，カーネルパラメタの設定について説明します。

HADBサーバをインストールするサーバマシンに対して，カーネルパラメタを設定してください。HADBサーバをインストールする前に，必ずカーネルパラメタを設定してください。カーネルパラメタを設定する流れを次に示します。

カーネルパラメタを設定する流れ

各カーネルパラメタの指定値を求めます。

求めた値を，設定ファイルに指定します。

カーネルパラメタの指定値の求め方，および設定ファイルについては，「6.2　カーネルパラメタの見積もり」を参照してください。カーネルパラメタの設定方法については，OSのマニュアルを参照してください。

8.4　環境変数の設定

ここでは，HADB管理者，およびHADB管理グループに所属するOSユーザが設定する環境変数について説明します。

設定した値が，HADBサーバ使用時のシェルで有効になるようにしてください。環境変数の設定方法については，OSのマニュアルを参照してください。

また，マルチノード機能を使用する場合は，全ノードで，それぞれ環境変数を設定してください。

重要

HADBサーバをインストールする前に，必ず環境変数を設定してください。

HADBサーバのインストール後，環境変数を変更する場合は，必ずHADBサーバが停止している状態で設定してください。adbstopコマンドを実行することで，HADBサーバを終了できます。

HADBサーバで使用できるロケール（前提パッケージのglibc-langpack-jaまたはglibc-langpack-en）がインストールされていることを確認してください。もし，インストールされていない場合，事前にロケールのインストールを実施してください。また，ロケールのインストール後は，環境変数LANGにロケールを指定してください。HADBサーバで使用できるロケールについては，「8.2.1　HADBサーバのインストール前に実施する作業」の「(1)　前提パッケージの確認」を参照してください。

環境変数に設定する値を次の表に示します。

表8‒9　環境変数に設定する値

項番

環境変数

設定する値

1

LANG

OSの文字コードを指定します。※

日本語環境で使用する場合：

次のどちらかの文字コードを選択します。

Unicode（UTF-8）

この環境変数にja_JP.UTF-8を指定してください。

Shift-JIS

この環境変数にja_JP.SJISを指定してください。

英語環境で使用する場合：

文字コードはUnicode（UTF-8）になります。この環境変数にen_US.UTF-8を指定してください。

2

LD_LIBRARY_PATH

この環境変数に，次に示すディレクトリを追加してください。

$ADBDIR/lib

また，次のどちらかの条件を満たす場合は，この環境変数に$ADBDIR/client/libも追加してください。

HADBサーバでadbsqlコマンドを実行する場合

HADBサーバでCLI関数を使用したAPを開発または実行する場合

3

PATH

この環境変数に，次に示すディレクトリを追加してください。

$ADBDIR/bin

$ADBDIR/client/bin

4

TZ

HADBサーバをインストールするマシンのタイムゾーンを設定します。

なお，うるう秒対応のタイムゾーンは設定しないでください。

［マルチノード機能］

マルチノード機能を使用する場合，この環境変数の指定値を，全ノードで一致させてください。

5

ADBDIR

この環境変数には，サーバディレクトリを絶対パスで指定してください。

6

ADBLANG

HADBサーバで使用する文字コードを指定します。※

日本語環境で使用する場合：

次のどちらかの文字コードを選択します。

Unicode（UTF-8）

この環境変数にUTF8を指定してください。

Shift-JIS

この環境変数にSJISを指定してください。

SJISを指定する場合，Shift-JISのマルチバイト文字がsyslogに出力されることを防ぐため，次に示すどれかの対処をしてください。

HADBサーバに拡張SYSLOG機能を適用して，syslogの文字コード変換（Shift-JISからUnicodeへの変換）を行う

拡張SYSLOG機能については，「10.4.7　syslogの文字コード変換と信頼性向上（拡張SYSLOG機能の適用）」を参照してください。

次に示す項目の指定で，マルチバイト文字を使用しないようにする

・定義系SQL中に指定する名前（表名，インデクス名，列名など）

・HADBが使用するディレクトリやファイル名称

環境変数ADBSYSLOGLVに0を指定する

ADBSYSLOGLVに0を指定した場合，syslogにHADBのメッセージは出力されません。ただし，メッセージログファイルには，HADBのすべてのメッセージが出力されます。

英語環境で使用する場合：

文字コードはUnicode（UTF-8）になります。この環境変数にUTF8を指定してください。

［マルチノード機能］

マルチノード機能を使用する場合，この環境変数の指定値を，全ノードで一致させてください。

7

ADBMSGLOGSIZE

1つのサーバメッセージログファイルの最大容量をメガバイト単位で設定できます。設定できる範囲は1〜2,000です。HADBサーバでは，4つのサーバメッセージログファイルが作成されます。

この環境変数を省略した場合，1つのサーバメッセージログファイルの最大容量は16メガバイトとなります。

8

ADBSYSLOGLV

この環境変数を設定すると，syslogに出力されるメッセージを出力レベルに従って抑止できます。

syslogに出力されるメッセージを抑止したい場合，この環境変数を設定してください。出力レベルは，0〜6のどれかを指定してください。

syslogに出力されるメッセージの出力レベルの一覧については，「10.4.6　syslogへのメッセージの出力抑止」を参照してください。

なお，出力レベルに0〜6以外を指定した場合，エラーとなります。

また，この環境変数を設定しない場合は，出力レベルに6が仮定されます。

9

ADBCLTDIR

HADBクライアントの各種ファイルが格納されているディレクトリを指定します。この環境変数には，サーバディレクトリを絶対パスで指定してください。

この環境変数は，次のどちらかの条件を満たす場合に設定してください。

HADBサーバでadbsqlコマンドを実行する場合

HADBサーバでCLI関数を使用したAPを開発または実行する場合

10

ADBCLTLANG

HADBクライアントで使用する文字コードを指定します。※

日本語環境で使用する場合：

次のどちらかの文字コードを選択します。

Unicode（UTF-8）

この環境変数にUTF8を指定してください。

Shift-JIS

この環境変数にSJISを指定してください。

英語環境で使用する場合：

文字コードはUnicode（UTF-8）になります。この環境変数にUTF8を指定してください。

この環境変数は，次のどちらかの条件を満たす場合に設定してください。

HADBサーバでadbsqlコマンドを実行する場合

HADBサーバでCLI関数を使用したAPを開発または実行する場合

11

ADBSQLNULLCHAR

この環境変数には，adbsqlコマンドの検索結果にナル値がある場合に，ナル値を表示する文字列（ナル値表示文字列）を指定します。0〜32バイトの文字列を指定できます。0バイトの文字列を指定した場合は，ナル値の表示は空白になります。

この環境変数を省略した場合，ナル値は*（アスタリスク）で表示されます。

検索データ中に，アスタリスクがある場合や，ナル値を任意の文字で出力したい場合に，この環境変数を指定してください。

なお，マルチバイト文字を指定すると，検索結果の表示が乱れることがあります。

この環境変数は，HADBサーバでadbsqlコマンドを実行する場合に設定を検討してください。

12

CLASSPATH

HADBサーバでJavaのAPを開発または実行する場合（JDBCドライバを使用する場合）に，この環境変数を指定します。この環境変数には，JARファイルの絶対パスを指定します。次のパスを指定してください。

$ADBDIR/client/lib/adbjdbc8.jar

JARファイルの格納先を上記から変更した場合は，変更先の絶対パスを指定してください。

JDBCドライバが提供するJDBC規格外のメソッド（接続情報設定および取得インタフェースのメソッド）など，JDBCドライバが提供するクラスを直接操作する場合は，APをコンパイルする前にこの環境変数を指定してください。

13

ADB_DEFFILE_UNSUPPORTED_OPERAND_BEHAVIOR

通常，この環境変数を指定する必要はありません。

未サポートのオペランドまたはオプションが次のファイルに指定されている場合に，ファイルの解析処理でエラーにするかどうかを指定します。

サーバ定義ファイル

クライアント管理定義ファイル（クライアント管理定義ファイルに指定しれたクライアント定義ファイルも含まれます）

チャンクの状態の一括変更設定ファイル

ERROR：

未サポートのオペランドまたはオプションが指定されている場合，ファイルの解析処理でエラーとします（ファイルの解析処理を終了します）。

この環境変数を省略した場合は，ERRORが仮定されます。

INFORMATION：

未サポートのオペランドまたはオプションが指定されている場合でも，ファイルの解析処理でエラーとしません（ファイルの解析処理を続行します）。このとき，KFAA50073-Iメッセージが出力されます。

注※

環境変数LANG，ADBLANG，およびADBCLTLANGで選択する文字コードを合わせてください。

例1：日本語環境でUnicode（UTF-8）を使用する場合

LANG="ja_JP.UTF-8"
ADBLANG=UTF8
ADBCLTLANG=UTF8

例2：英語環境でUnicode（UTF-8）を使用する場合

LANG="en_US.UTF-8"
ADBLANG=UTF8
ADBCLTLANG=UTF8

次の環境変数にHADBサーバでサポートしていないロケールを指定すると，HADBサーバの使用時にKFAA40006-Eメッセージが出力されてエラーになります。

LANG，LC_ALL，LC_COLLATE，LC_CTYPE，LC_MESSAGES，LC_MONETARY，LC_NUMERIC，LC_TIME

8.5　サーバ定義の作成および変更方法

ここでは，サーバ定義の作成方法および変更方法について説明します。

メモ

クライアント定義の作成方法および変更方法については，マニュアルHADB　AP開発ガイドのHADBクライアントの環境設定（ODBCドライバおよびCLI関数を使用する場合）のクライアント定義の作成を参照してください。

8.5.1　サーバ定義の作成方法および格納先

HADBサーバの実行環境を，サーバ定義で指定します。

サーバ定義の作成方法，および格納先を次に示します。

手順

サーバ定義のひな形ファイルをコピーする

サーバディレクトリの$ADBDIR/sample/confディレクトリに格納されているサーバ定義のひな形ファイル（server.def）をコピーして，サーバディレクトリの$ADBDIR/confディレクトリに格納してください。

コピーしたサーバ定義のひな形ファイルを編集する

手順1.で$ADBDIR/confディレクトリにコピーしたサーバ定義のひな形ファイル（server.def）をテキストエディタで開いて，編集してください。

サーバ定義で指定するオペランドの指定形式，内容，およびサーバ定義の文法規則については，「7.　サーバ定義の設計」を参照してください。

サーバ定義を上書き保存する

サーバ定義ファイル（$ADBDIR/conf/server.def）の編集が完了したら，上書き保存してください。$ADBDIR/confディレクトリにserver.defとして格納することで，HADBサーバ開始時にサーバ定義が読み込まれます。

8.5.2　サーバ定義の変更方法

サーバ定義の定義内容を変更する手順を次に示します。

サーバ定義の定義内容を変更する場合は，HADBサーバへの影響について十分検討してから，実施するようにしてください。

格納先

サーバ定義ファイル：$ADBDIR/conf/server.def

手順

HADBサーバを終了する

adbstopコマンドを実行して，HADBサーバを終了してください。

サーバ定義の定義内容を変更する

サーバ定義ファイル（$ADBDIR/conf/server.def）を，テキストエディタで開き，定義内容を変更してください。

サーバ定義で指定するオペランドの指定形式，内容，およびサーバ定義の文法規則については，「7.　サーバ定義の設計」を参照してください。

HADBサーバを開始する

サーバ定義の内容を変更したら，adbstartコマンドを実行してHADBサーバを再度開始してください。

重要

HADBサーバを再起動しないと，サーバ定義の変更内容が有効になりません。

8.6　HADBサーバのバージョンアップ

ここでは，HADBサーバをバージョンアップする方法について説明します。

なお，HADBサーバのバージョンアップではなく，修正版HADBサーバとの入れ替えの場合は，「8.8　修正版HADBサーバとの入れ替え」を参照してください。修正版HADBサーバについても，「8.8　修正版HADBサーバとの入れ替え」で説明しています。

また，アプリケーションなどの動作確認テストのために，一時的にHADBサーバをバージョンアップし，動作確認テスト完了後に元のバージョンに戻す場合は，「8.9　一時的にHADBサーバのバージョンアップとバージョンダウンを行う方法（動作確認テスト用）」を参照してください。

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サーバをバージョンアップすると，予約語が追加されることがあります。

追加される予約語の一覧を次の表に示します。

表8‒10　追加される予約語の一覧

HADBサーバのバージョン

追加される予約語

02-01

CURRENT_USER_IS_DBA

03-00

MILLISECOND，MILLISECONDS，NANOSECOND，NANOSECONDS，PICOSECOND，PICOSECONDS

06-00

COPY，STRING，STRUCT

06-01

UUID

予約語を表や列の名称として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.21　更新行のカラム化機能の運用（カラムストア表の検索性能の維持）」を参照してください。

メモ

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文，COPY文，COMMIT文，またはROLLBACK文の実行

adblsコマンドの実行

adblsコマンド以外にも実行可能なコマンドがあります。実行可能なコマンドについては，マニュアルHADB　コマンドリファレンスのコマンドの一覧にある表コマンドの一覧（システムデータだけのバックアップを使用したデータベースの回復）を参照してください。

バージョンアップ後に上記以外の操作をした場合，システムデータだけのバックアップを使用して旧バージョンに戻しても，データベースの整合性が取れません。そのため，HADBサーバが開始できなかったり，データベースが壊れたりすることがあります。

システムデータだけのバックアップを取得する場合は，「表10‒6　バックアップを取得する必要があるファイルの一覧」の項番1～6のファイルのバックアップを取得してください。

［マルチノード機能］

システムデータだけのバックアップを取得する場合は，「表18‒11　バックアップを取得するファイルおよびディレクトリの一覧」の項番1～6のファイルのバックアップを取得してください。

メモ

バックアップの取得方法は，フルバックアップも，システムデータだけのバックアップも同じ方法です。バックアップの取得対象が異なるだけです。

フルバックアップからのデータベースの回復方法も，システムデータだけのバックアップからのデータベースの回復方法も同じ方法になります。

8.6.2　バージョンアップする

「8.6.1　バージョンアップ前に実施すること」で示したことを実施したら，次の手順に従ってHADBサーバをバージョンアップしてください。

メモ

インストールデータに関する注意事項があります。HADBサーバをバージョンアップする前に，「8.2　インストール」の注意事項を参照してください。

HADBサーバをバージョンアップした場合，HADBクライアントもバージョンアップしてください。HADBクライアントのバージョンアップ方法については，マニュアルHADB　AP開発ガイドのHADBクライアントのバージョンアップを参照してください。

重要

HADBサーバをバージョンアップする前に，環境変数ADBDIRにサーバディレクトリのパスを指定していることを確認してください。そのあとで，HADBサーバをバージョンアップしてください。

［マルチノード機能］

マルチノード機能を使用している場合は，全ノードのHADBサーバに対して，手順1.　HADB管理者のOSアカウントでOSにログインするから手順11.　HADBサーバのバージョンを確認するをそれぞれ実施してください。そのあとで，手順12.　データベースをバージョンアップするを実施してください。

手順

HADB管理者のOSアカウントでOSにログインする

今まで使用していたHADB管理者のOSアカウントで，サーバマシンのOSにログインしてください。

重要

HADB管理者のOSアカウントを変更しないでください。HADB管理者のOSアカウントを変更した場合，HADBサーバを正しくバージョンアップできないおそれがあります。

インストールデータを格納するディレクトリを作成する

HADBサーバのインストールデータを格納するディレクトリを作成します。

mkdir /home/adbmanager/install

上記の例では，インストールデータを格納するディレクトリとして/home/adbmanager/installを作成しています。

インストールデータを格納するディレクトリに書き込み権限を付与する

インストールデータを格納するディレクトリ（この例では/home/adbmanager/install）に対して，HADB管理者が書き込みできるように書き込み権限を付与してください。

chmod 755 /home/adbmanager/install

CD-ROMファイルシステムをマウントする

HADBサーバのインストールデータが格納されているCD-ROMファイルシステムを自動マウントしてください。

CD-ROMファイルシステムが自動マウントされない場合，次のコマンドを実行してCD-ROMファイルシステムをマウントしてください。

mount /dev/cdrom /media

下線部分は，CD-ROMファイルシステムのマウントディレクトリ名です。環境によって異なります。

重要

CD-ROMのディレクトリ名やファイル名は，ご使用のサーバマシンによっては，ここの説明内容と表示が異なることがあります。OSのlsコマンドを実行して，表示されたディレクトリ名をそのまま入力してください。

インストールデータをコピーする

マウントしたCD-ROMファイルシステムに格納されている次のファイルを，手順2.で作成したインストールデータを格納するディレクトリにコピーしてください。

tar.gz形式のファイル

adbinstallコマンドの実行形式ファイル

!8A9_HADBファイル

cp /media/hitachi_advanced_database_server-$VER.tar.gz /home/adbmanager/install      ...a
cp /media/adbinstall /home/adbmanager/install                                        ...b
cp '/media/!8A9_HADB' /home/adbmanager/install                                       ...c

［説明］

tar.gz形式のファイル（HADBサーバのプログラムの圧縮ファイル）をコピーします。

adbinstallコマンドの実行形式ファイル（HADBサーバのインストールコマンド）をコピーします。

!8A9_HADBファイルをコピーします。

上記の例では，すべてのファイルを/home/adbmanager/installディレクトリ下にコピーしています。

下線部分は，CD-ROMファイルシステムのマウントディレクトリ名です。環境によって異なります。

$VERは，HADBサーバのバージョンとリリース番号です。

なお，!8A9_HADBファイルは，RHEL 8の場合で，かつITRUを使用するときに必要です。RHEL 9以降の場合は不要です。

重要

上記のファイルは，必ず同じディレクトリにコピーしてください。異なるディレクトリにコピーすると，HADBサーバのインストールが実行できません。

コピーしたファイルが破損していないことを確認する

手順5.でコピーしたファイルが破損していないことを確認します。次のコマンドを実行してください。

cd /home/adbmanager/install
sha256sum -c /media/adbhashfile_server_sha256.txt

下線部分は，CD-ROMファイルシステムのマウントディレクトリ名です。環境によって異なります。

ファイルが破損しているおそれがある（ファイルのハッシュ値が異なる）場合は，エラーを示すメッセージが出力されます。この場合，手順5.から作業をし直してください。

出力されるメッセージの詳細については，OSのマニュアルを参照してください。

権限を付与する

HADB管理者がadbinstallコマンド（HADBサーバのインストールコマンド）を実行できるように，adbinstallコマンドに対する実行権限を付与してください。

また，tar.gz形式のファイルに対する読み取り権限も付与してください。

chmod 500 /home/adbmanager/install/adbinstall
chmod 400 /home/adbmanager/install/hitachi_advanced_database_server-$VER.tar.gz

$VERは，HADBサーバのバージョンとリリース番号です。

HADBサーバをインストールする

adbinstallコマンドを実行して，HADBサーバをインストールしてください。

/home/adbmanager/install/adbinstall -s /HADB/server

下線部分には，手順2.で作成したインストールデータを格納するディレクトリを指定します。

-sオプションには，使用中のサーバディレクトリ（この例では/HADB/server）の絶対パスを指定します。

重要

KFAA91553-Eメッセージが出力されて，adbinstallコマンドがエラーになった場合は，「■KFAA91553-Eメッセージが出力された場合」を参照してください。

adbinstallコマンドを実行した際にKFAA91558-Wメッセージ（警告メッセージ）が出力された場合は，「■KFAA91558-Wメッセージが出力された場合」を参照してください。

KFAA91554-Qメッセージに応答する

adbinstallコマンドを実行すると，ディレクトリを上書きしてよいかどうかを確認するKFAA91554-Qメッセージが出力されます。y（またはY）を入力して，ディレクトリを上書きしてください。

HADBサーバが正常にインストールされたことを確認する

サーバディレクトリ下にあるadbinstsv.logファイルを開いて内容を確認してください。HADBサーバが正常にインストールされている場合は，次の情報が出力されています。

P-aaaa-bbbb Hitachi Advanced Database 06-00-/B (20250722153540)

P-aaaa-bbbbには，HADBサーバのPP形名情報が出力されます。

1つ目の下線部分には，HADBサーバのバージョン情報が出力されます。

2つ目の下線部分には，HADBサーバをインストールした日付と時刻（上記の例では2025年7月22日15時35分40秒）が出力されます。

メモ

adbinstsv.logファイルがすでにある状態のときにadbinstallコマンドを実行すると，adbinstsv.logファイルの内容が更新されます。また，adbinstallコマンドを複数回実行した場合，最後に実行した日付と時刻が記載されます。

adbinstallコマンドのリターンコード（KFAA91552-Iメッセージに出力されるリターンコード）が0または4以外の場合，adbinstsv.logファイルの内容は更新されません。

adbinstallコマンドの実行時にKFAA91555-Iメッセージが出力された場合，adbinstsv.logファイルの内容は更新されません。

HADBサーバのバージョンを確認する

次のコマンドを実行して，HADBサーバのバージョン情報を確認してください。

adbls -d ver

［マルチノード機能］

マルチノード機能を使用している場合は，全ノードのHADBサーバで上記のコマンドを実行し，HADBサーバのバージョン情報を確認してください。

adbls -d verコマンドを実行しても，バージョン情報が表示されない場合は，次に示す環境変数が正しく設定されていないおそれがあります。

環境変数PATHにサーバディレクトリ下のbinディレクトリが指定されていない

環境変数については，「8.4　環境変数の設定」を参照してください。

データベースをバージョンアップする

次に示すHADBのコマンドを実行して，HADBサーバを開始してください。バージョンアップ処理が開始されます。

adbstart

adbstartコマンドの実行後，データベースをバージョンアップしてよいかを確認するKFAA91107-Qメッセージが出力されます。y（またはY）を入力して，データベースをバージョンアップしてください。

adbstartコマンドが正常終了すれば，HADBサーバのバージョンアップは完了です。

［マルチノード機能］

マルチノード機能を使用している場合は，「18.5.1　マルチノード構成のHADBサーバの開始方法」を参照して，マルチノード構成のHADBサーバを開始してください。このとき，プライマリノードのHADBサーバを開始すると，データベースをバージョンアップしてよいかを確認するKFAA91107-Qメッセージが出力されます。y（またはY）を入力して，データベースをバージョンアップしてください。

全ノードのHADBサーバが正常に開始すれば，HADBサーバのバージョンアップは完了です。

重要

adbstartコマンドが正常終了しないで，HADBサーバのバージョンアップが失敗した場合は，「8.6.4　バージョンアップに失敗した場合の対処方法」を参照してください。

■KFAA91553-Eメッセージが出力された場合

次に示す場合は，adbinstallコマンドがエラーになり，KFAA91553-Eメッセージが出力されます。この場合，対象のディレクトリに対する書き込み権限をHADB管理者に付与してください。

-sオプションに指定したディレクトリに対して，HADB管理者が書き込み権限を持っていない場合

インストールデータを格納するディレクトリに対して，HADB管理者が書き込み権限を持っていない場合

■KFAA91558-Wメッセージが出力された場合

HADB管理者のOSアカウントではなく，rootでadbinstallコマンドを実行した場合は，警告メッセージ（KFAA91558-Wメッセージ）が出力されます。通常，HADB管理者のOSアカウントで，adbinstallコマンドを実行します。そのため，KFAA91558-Wメッセージが出力された場合は，rootでadbinstallコマンドを実行して問題がないかどうかを確認してください。

問題がある場合は，KFAA91558-Wメッセージが出力されたあとに出力されるKFAA91559-Qメッセージの入力要求に対して，n（またはN）を入力してください。そのあとで，HADB管理者のOSアカウントでadbinstallコマンドを実行してください。

また，root以外のスーパユーザでadbinstallコマンドを実行した場合は，KFAA91558-Wメッセージは出力されません。

メモ

rootは，OSのid -uコマンドを実行して表示される値が0のユーザを指します。また，OSのsuコマンドを使用して，ほかのOSユーザからrootに切り替えたあとで，OSのid -uコマンドを実行して表示される値が0のときも含みます。

■HADBオプションをインストールしている場合

HADBオプションをインストールしている場合は，バージョンアップしたHADBサーバに対応しているバージョンのHADBオプションをインストールしてください。HADBオプションのインストール方法については，「8.2.4　HADBオプションのインストール手順」を参照してください。

なお，HADBオプションのインストールの際にadboptinstallコマンドを実行すると，Amazon S3用ライブラリ（libadbcldstge-aws.so）またはAzure Blob Storage用ライブラリ（libadbcldstge-azure.so）も自動的にバージョンアップされます。そのため，Amazon S3用ライブラリまたはAzure Blob Storage用ライブラリのアンインストールは不要です。

8.6.3　バージョンアップ後に実施すること

HADBサーバをバージョンアップしたあとで実施することを次に示します。

HADBサーバのバージョンアップ後，旧バージョンに戻したい場合は，「8.7　HADBサーバのバージョンダウン（旧バージョンに戻す方法）」を参照してください。

(1)　データベースのバックアップを取得する

バージョンアップが完了したデータベースのフルバックアップを取得することを推奨します。バージョンアップが完了したデータベースのフルバックアップを取得しておくことで，バックアップから回復する場合に，バージョンアップの完了直後の状態に回復できます。

(2)　HADBクライアントをバージョンアップする

HADBサーバのバージョンアップが完了したら，HADBクライアントもバージョンアップしてください。HADBクライアントが，HADBサーバと同じバージョンでない場合，HADBサーバに接続できません。

HADBクライアントのバージョンアップについては，マニュアルHADB　AP開発ガイドのHADBクライアントの環境設定（ODBCドライバおよびCLI関数を使用する場合）を参照してください。

(3)　HADBユーザのパスワードと権限を見直す（バージョン02-00）

バージョン02-00のHADBサーバからバージョンアップした場合，ディクショナリ表（実表）のSQL_SCHEMATA表に格納されているスキーマ名を基に，HADBユーザが作成されます。作成されるHADBユーザの認可識別子およびパスワードは，スキーマ名と同じになります。また，作成されるHADBユーザには，DBA権限，CONNECT権限，およびスキーマ定義権限が付与されます。

そのため，まず，すべてのHADBユーザのパスワードを変更してください。定義系SQLのALTER USER文で変更できます。HADBユーザのパスワードの変更については，「11.7.2　HADBユーザのパスワードを変更する方法」を参照してください。

次に，すべてのHADBユーザが持っている権限を必ず確認してください。HADBユーザが不要な権限を持っている場合は，定義系SQLのREVOKE文で権限を取り消してください。権限の取り消しについては，「11.10.3　HADBユーザが持っているユーザ権限とスキーマ操作権限を取り消す方法」を参照してください。

(4)　HADBユーザの権限を見直す（バージョン03-00より前のバージョン）

バージョン03-00より前のバージョンのHADBサーバからバージョンアップした場合，HADBユーザに付与されているスキーマ定義権限が必要かどうかを確認してください。

スキーマ定義権限が不要なHADBユーザ（例えば，自分ではデータベースを作成しないで，ほかのHADBユーザが作成したデータベースの検索だけを行うHADBユーザ）が存在する場合は，定義系SQLのREVOKE文で権限を取り消してください。権限の取り消しについては，「11.10.3　HADBユーザが持っているユーザ権限とスキーマ操作権限を取り消す方法」を参照してください。

(5)　HADBユーザの権限を見直す（バージョン03-02以降のバージョン）

バージョン03-02以降のバージョンのHADBサーバにバージョンアップした場合，次に示すHADBユーザのアクセス権限を見直してください。

■アクセス権限を見直す必要があるHADBユーザ

バージョンアップする前に，定義系SQLのGRANT文のALL PRIVILEGES指定でアクセス権限を付与されたHADBユーザ

バージョン03-02以降のバージョンで，新しい種類のアクセス権限がサポートされた場合，HADBサーバをバージョンアップすると，次に示すHADBユーザだけに，新しい種類のアクセス権限が自動的に付与されます。

スキーマオブジェクト（ビュー表を除く）の所有者であるHADBユーザ

ビュー表の所有者であるHADBユーザ（ただし，ビュー表のすべての基表の所有者である場合に限る）

そのため，アクセス権限を見直す必要があるHADBユーザには，HADBサーバをバージョンアップしたときに新しいアクセス権限は付与されません。

アクセス権限を見直す必要があるHADBユーザの概要を，次の図に示します。

図8‒2　アクセス権限を見直す必要があるHADBユーザの概要

アクセス権限を見直す必要があるHADBユーザに，新しい種類のアクセス権限も含めたすべてのアクセス権限を付与したい場合は，再度GRANT文のALL PRIVILEGES指定でアクセス権限を付与してください。アクセス権限の付与については，「11.11.1　HADBユーザにアクセス権限を付与する方法」を参照してください。

(6)　ビュー表に対するアクセス権限を見直す（バージョン03-06以降のバージョン）

バージョン03-06より前のHADBサーバと，バージョン03-06以降のHADBサーバとでは，次に示す仕様差があります。

バージョン03-06より前のHADBサーバの場合

基表に対するアクセス権限が新たに付与された場合でも，ビュー表に対するアクセス権限の伝搬が発生しません。

例えば，ビュー表A.V1の基表X.T1に対するINSERT権限が新たに付与されても，ビュー表A.V1に対するINSERT権限は新たに付与されません。このようにアクセス権限の伝搬が発生しないため，基表に対して持っているアクセス権限の種類と，ビュー表に対して持っているアクセス権限の種類が一致しないことがあります。

バージョン03-06以降のHADBサーバの場合

基表に対するアクセス権限が新たに付与された場合，ビュー表に対するアクセス権限の伝搬が発生します。

例えば，ビュー表A.V1の基表X.T1に対するINSERT権限が新たに付与された場合，ビュー表A.V1に対するINSERT権限も新たに付与されます。このようにアクセス権限の伝搬が発生するため，基表に対して持っているアクセス権限の種類と，ビュー表に対して持っているアクセス権限の種類が一致します。

03-06より前のバージョンから，03-06以降のバージョンにバージョンアップしても，定義済みのビュー表については，アクセス権限の伝搬は自動的に行われません。そのため，基表に対するアクセス権限の変更を，ビュー表に対するアクセス権限にも反映させたい場合は，基表に対するアクセス権限を付与し直してください。基表に対するアクセス権限をビュー表の所有者に付与し直すと，アクセス権限の伝搬が発生し，基表に対するアクセス権限とビュー表に対するアクセス権限の種類が一致します。付与するアクセス権限は，ビュー表の所有者が元々持っていた種類のアクセス権限でも，持っていなかった種類のアクセス権限でも，どちらでもかまいません。

ビュー表に対するアクセス権限の伝搬については，「2.7.7　ビュー表に対するアクセス権限」を参照してください。

(7)　一意性制約違反状態かどうかを確認する

バージョン02-02より前のバージョンのHADBサーバからバージョンアップした場合，ユニークインデクスが一意性制約を満たしているかどうかが不明の状態になります。そのため，ユニークインデクスが一意性制約を満たしているかどうかを，次に示すどちらかの方法で確認してください。

コマンドを使用して確認する

ユニークインデクスを再作成する

ユニークインデクスが定義された表に対して，adbidxrebuildコマンドを実行して，ユニークインデクスを再作成してください。adbidxrebuildコマンドについては，マニュアルHADB　コマンドリファレンスのadbidxrebuild（インデクスの再作成）を参照してください。

一意性制約違反状態かどうかを確認する

adbdbstatusコマンドで，対象のユニークインデクスが一意性制約違反状態かどうかを確認してください。詳細については，「10.9.3　B-treeインデクスの状態や使用量を確認したい場合」を参照してください。

SELECT文を使用して確認する

対象のユニークインデクスが定義された表に対してSELECT文を実行して，重複したキー値を検索してください。重複したキー値を検索するSELECT文の指定例については，「16.9.2　一意性制約に違反した場合の対処方法（KFAA61205-Wメッセージが出力された場合）」の「(2)　一意性制約違反状態を解除する方法」を参照してください。

ユニークインデクスが一意性制約を満たしていない場合（一意性制約違反状態の場合）は，「16.9.2　一意性制約に違反した場合の対処方法（KFAA61205-Wメッセージが出力された場合）」を参照して，一意性制約違反状態を解除してください。

なお，ユニークインデクスが一意性制約を満たしているかどうかが不明の状態である場合，HADBサーバは，ユニークインデクスが一意性制約を満たしていると仮定して，アクセスパスを構築します。

(8)　ワード検索用のテキストインデクスを再作成する

次の条件をすべて満たす場合，ワード検索用のテキストインデクスを，adbidxrebuildコマンドで再作成する必要があります。

バージョン03-06のHADBサーバを，バージョン04-00以降のHADBサーバにバージョンアップした場合

バージョン03-06のHADBサーバで，ワード検索用のテキストインデクスを定義した場合（CREATE INDEX文のINDEXTYPEに，TEXT WORDCONTEXTを指定した場合）

ワード検索用のテキストインデクスを定義したかどうかを確認する場合は，「付録B.24　ディクショナリ表の検索」の「(35)　テキストインデクスに指定したインデクスオプションを調べる場合」を参照してください。

ワード検索用のテキストインデクスを定義していた場合は，adbidxrebuildコマンドで再作成してください。adbidxrebuildコマンドについては，マニュアルHADB　コマンドリファレンスのadbidxrebuild（インデクスの再作成）を参照してください。

ワード検索用のテキストインデクスをadbidxrebuildコマンドで再作成しないと，ワード検索用のテキストインデクスを使用できません。次の操作を行う場合に，エラーとなります（KFAA34009-Eメッセージが出力されます）。

ワード検索用のテキストインデクスを使用した検索を行う場合

ワード検索用のテキストインデクスを更新する場合

(9)　サーバ定義のadbbuffオペランドの指定を見直す（バージョン04-01以降のバージョン）

バージョン04-01のHADBサーバから，テーブルスキャンバッファを使用するために指定するオプションとして，サーバ定義のadbbuffオペランドに-vオプションを追加しました。そのため，adbbuffオペランドの指定を見直す必要があります。

-vオプションの追加に伴い，テーブルスキャンバッファを使用する場合に指定するオプションは，次のとおり変更になります。

バージョン04-00以前のHADBサーバの場合

adbbuffオペランドの-kオプションを指定します。

バージョン04-01以降のHADBサーバの場合

adbbuffオペランドの-vオプションと-kオプション，どちらか1つを指定します。

なお，テーブルスキャンバッファを使用する場合は，-vオプションの指定を推奨します。-vオプションを指定すると，-kオプションを指定したときよりも，テーブルスキャンバッファを効率良く使用できます。

そのため，バージョン04-00以前でadbbuffオペランドの-kオプションを指定していた場合，バージョン04-01以降では-vオプションに指定を変更してください。adbbuffオペランドの-vオプションについては，「7.2.18　グローバルバッファに関するオペランドおよびオプション（コマンド形式）」を参照してください。

また，-kオプションから-vオプションに指定を変更する場合，次の内容を確認してから-vオプションを指定してください。

■-vオプションの「テーブルスキャンバッファに使用するメモリサイズ」に指定する値

テーブルスキャンバッファに使用するメモリサイズには，次の計算式で求めた値を指定してください。

テーブルスキャンバッファに使用するメモリサイズに指定する値＝
    バージョン04-00以前の-kオプションの指定値×4

上記の計算式で求めた値を指定すると，バージョン04-00以前に-kオプションで指定していたテーブルスキャンバッファと同じ大きさになります。

■-vオプションの「リアルスレッドごとに使用するメモリサイズの上限値」に指定する値

リアルスレッドごとに使用するメモリサイズの上限値には，adbbuffオペランドの-vオプションの説明に従った値を指定してください。adbbuffオペランドの-vオプションについては，「7.2.18　グローバルバッファに関するオペランドおよびオプション（コマンド形式）」を参照してください。

なお，バージョン04-00以前で指定していた-kオプションと同様に，各リアルスレッド間で均等にメモリを割り振りたい場合は，次の計算式で求めた値を指定してください。

リアルスレッドごとに使用するメモリサイズの上限値に指定する値＝
    バージョン04-00以前の-kオプションの指定値×4
    ÷adb_sys_rthd_numオペランドの指定値

サーバ定義のadb_sys_rthd_numオペランドは，「7.2.2　性能に関するオペランド（set形式）」を参照してください。

重要

バージョン04-00以前のHADBサーバの運用中に，テーブルスキャンバッファが不足していた場合，バージョン04-01以降のHADBサーバには，-vオプションのリアルスレッドごとに使用するメモリサイズの上限値を指定してください。このオプションを指定しないと，複数のSQL文を同時に実行したときの処理性能が低下するおそれがあります。

(10)　サーバ定義およびコマンドオプションの指定値を見直す（バージョン04-01以降のバージョン）

バージョン04-01のHADBサーバから，コマンドの実行時に使用する処理リアルスレッド数を指定するサーバ定義のadb_cmd_rthd_numオペランドを削除しました。そのため，adb_cmd_rthd_numオペランドを指定したままでadbstartコマンドを実行するとエラーになります（HADBサーバは起動されません）。このとき，KFAA52200-Eメッセージが出力されます。サーバ定義にadb_cmd_rthd_numオペランドを指定していた場合は，adb_cmd_rthd_numオペランドの指定を削除してください。

adb_cmd_rthd_numオペランドの削除に伴い，次に示すコマンドの実行時にHADBサーバが使用する処理リアルスレッド数のデフォルト値（コマンドオプションの指定を省略した場合の値）が，adb_cmd_rthd_numオペランドからサーバ定義のadb_sql_exe_max_rthd_numオペランドに変更になります。必要に応じて，サーバ定義のadb_sql_exe_max_rthd_numオペランドや各コマンドオプションに指定するスレッド数を見直す必要があります。

■対象のコマンド

adbarchivechunkコマンド

adbexportコマンド

adbgetcstコマンド

adbidxrebuildコマンド

adbimportコマンド

adbmergechunkコマンド

adbunarchivechunkコマンド

■スレッド数を指定する各コマンドオプションの見直し

バージョン04-01のHADBサーバから，各コマンドで使用する処理リアルスレッドを指定するコマンドオプションが変更になりました。変更前のコマンドオプションを指定してコマンドを実行するとエラーになります。このとき，KFAA90500-Eメッセージが出力されます。そのため，各コマンドのコマンドオプションを見直す必要があります。対象のコマンドとコマンドオプションの一覧を次に示します。

表8‒11　変更対象のコマンドとコマンドオプションの一覧

コマンド名

バージョン04-00以前のコマンドオプション名※

バージョン04-01以降のコマンドオプション名

バージョン04-00以前と同じスレッド数で動くようにするためのコマンドオプションの指定値

adbarchivechunkコマンド

次に示すアーカイブチャンクオプション

adb_arcv_scan_rthd_num

次に示すアーカイブチャンクオプション

adb_arcv_rthd_num

「(a)　adbarchivechunkコマンドの場合（アーカイブチャンクオプションadb_arcv_rthd_numの指定値の求め方）」を参照してください。

adbexportコマンド

次に示すエクスポートオプション

adb_export_scan_rthd_num

次に示すエクスポートオプション

adb_export_rthd_num

「(b)　adbexportコマンドの場合（エクスポートオプションadb_export_rthd_numの指定値の求め方）」を参照してください。

adbgetcstコマンド

次に示すコスト情報収集オプション

adb_getcst_scan_rthd_num

次に示すコスト情報収集オプション

adb_getcst_rthd_num

「(c)　adbgetcstコマンドの場合（コスト情報収集オプションadb_getcst_rthd_numの指定値の求め方）」を参照してください。

adbidxrebuildコマンド

次に示すインデクス再作成オプション

adb_idxrebuild_scan_rthd_num

adb_idxrebuild_sort_rthd_num

adb_idxrebuild_dividx_rthd_num

次に示すインデクス再作成オプション

adb_idxrebuild_rthd_num

「(d)　adbidxrebuildコマンドの場合（インデクス再作成オプションadb_idxrebuild_rthd_numの求め方）」を参照してください。

adbimportコマンド

次に示すインポートオプション

adb_import_dataload_rthd_num

adb_import_sort_rthd_num

adb_import_dividx_rthd_num

次に示すインポートオプション

adb_import_rthd_num

「(e)　adbimportコマンドの場合（インポートオプションadb_import_rthd_numの求め方）」を参照してください。

adbmergechunkコマンド

次に示すマージチャンクオプション

adb_mergechunk_scan_rthd_num

adb_mergechunk_sort_rthd_num

adb_mergechunk_dividx_rthd_num

次に示すマージチャンクオプション

adb_mergechunk_rthd_num

「(f)　adbmergechunkコマンドの場合（マージチャンクオプションadb_mergechunk_rthd_numの求め方）」を参照してください。

adbunarchivechunkコマンド

次に示すアンアーカイブチャンクオプション

adb_unarcv_dataload_rthd_num

adb_unarcv_sort_rthd_num

adb_unarcv_dividx_rthd_num

次に示すアンアーカイブチャンクオプション

adb_unarcv_rthd_num

「(g)　adbunarchivechunkコマンドの場合（アンアーカイブチャンクオプションadb_unarcv_rthd_numの求め方）」を参照してください。

注※

バージョン04-01で削除になります。

バージョン04-00までと同じスレッド数で動かすためのコマンドオプションの指定値を，コマンドごとに示します。

なお，指定値を求める計算式中の変数DEFAULT_RTHD_NUMは，次の表に示す計算式で求めてください。

表8‒12　変数DEFAULT_RTHD_NUMの求め方

クライアントグループ機能

変数DEFAULT_RTHD_NUMの値

クライアントグループ機能を適用している

所属するコマンドグループをサーバ定義adbcltgrpオペランドに設定している

次の値のうち，どちらか小さい方の値

コマンドグループを設定したサーバ定義adbcltgrpオペランドの-rオプションの指定値

A−B

所属するコマンドグループをサーバ定義adbcltgrpオペランドに設定していない

A−B

クライアントグループ機能を適用していない

A

（凡例）

A：サーバ定義adb_sys_rthd_numオペランドの指定値

B：クライアントグループを設定したサーバ定義adbcltgrpオペランドの-eオプションの指定値の合計

(a)　adbarchivechunkコマンドの場合（アーカイブチャンクオプションadb_arcv_rthd_numの指定値の求め方）

次の表に示す計算式で求めた値をアーカイブチャンクオプションadb_arcv_rthd_numに指定すると，バージョン04-00以前と同じスレッド数でコマンドを実行できます。

表8‒13　アーカイブチャンクオプションadb_arcv_rthd_numの指定値の求め方

項番

バージョン04-00以前のアーカイブチャンクオプションまたはサーバ定義の値

バージョン04-01以降のアーカイブチャンクオプションadb_arcv_rthd_numに指定する値

1

アーカイブチャンクオプションadb_arcv_scan_rthd_numの指定を省略した場合

サーバ定義adb_cmd_rthd_numオペランドの指定を省略した場合

次の値のうち，どちらか小さい方の値

変数DEFAULT_RTHD_NUM※の値

サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値×2＋1

サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値が0の場合は，1として計算してください。

2

サーバ定義adb_cmd_rthd_numオペランドに0を指定した場合

3

サーバ定義adb_cmd_rthd_numオペランドに1以上の値を指定した場合

サーバ定義adb_cmd_rthd_numオペランドの指定値×2＋1

4

アーカイブチャンクオプションadb_arcv_scan_rthd_numに0を指定した場合

次の値のうち，どちらか小さい方の値

変数DEFAULT_RTHD_NUM※の値

サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値×2＋1

サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値が0の場合は，1として計算してください。

5

アーカイブチャンクオプションadb_arcv_scan_rthd_numに1以上の値を指定した場合

アーカイブチャンクオプションadb_arcv_scan_rthd_numの指定値×2＋1

注※

変数DEFAULT_RTHD_NUMは「表8‒12　変数DEFAULT_RTHD_NUMの求め方」を参照して求めてください。

(b)　adbexportコマンドの場合（エクスポートオプションadb_export_rthd_numの指定値の求め方）

次の表に示す計算式で求めた値をエクスポートオプションadb_export_rthd_numに指定すると，バージョン04-00以前と同じスレッド数でコマンドを実行できます。

表8‒14　エクスポートオプションadb_export_rthd_numの指定値の求め方

項番

バージョン04-00以前のエクスポートオプションまたはサーバ定義の値

バージョン04-01以降のエクスポートオプションadb_export_rthd_numに指定する値

1

次のどちらかの場合

エクスポートオプションadb_export_scan_rthd_numの指定を省略した場合

エクスポートオプションadb_export_scan_rthd_numに0を指定した場合

サーバ定義adb_cmd_rthd_numオペランドの指定を省略した場合

次の値のうち，どちらか小さい方の値

変数DEFAULT_RTHD_NUM※の値

サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値×2＋1

サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値が0の場合は，1として計算してください。

2

サーバ定義adb_cmd_rthd_numオペランドに0を指定した場合

3

サーバ定義adb_cmd_rthd_numオペランドに1以上の値を指定した場合

サーバ定義adb_cmd_rthd_numオペランドの指定値×2＋1

4

エクスポートオプションadb_export_scan_rthd_numに1以上の値を指定した場合

エクスポートオプションadb_export_scan_rthd_numの指定値×2＋1

注※

変数DEFAULT_RTHD_NUMは「表8‒12　変数DEFAULT_RTHD_NUMの求め方」を参照して求めてください。

(c)　adbgetcstコマンドの場合（コスト情報収集オプションadb_getcst_rthd_numの指定値の求め方）

次の表に示す計算式で求めた値をコスト情報収集オプションadb_getcst_rthd_numに指定すると，バージョン04-00以前と同じスレッド数でコマンドを実行できます。

表8‒15　コスト情報収集オプションadb_getcst_rthd_numの指定値の求め方

項番

バージョン04-00以前のコスト情報収集オプションまたはサーバ定義の値

バージョン04-01以降のコスト情報収集オプションadb_getcst_rthd_numに指定する値

1

コスト情報収集オプションadb_getcst_scan_rthd_numの指定を省略した場合

サーバ定義adb_cmd_rthd_numオペランドの指定を省略した場合

変数DEFAULT_RTHD_NUM※の値

2

サーバ定義adb_cmd_rthd_numオペランドに0を指定した場合

3

サーバ定義adb_cmd_rthd_numオペランドに1以上の値を指定した場合

サーバ定義adb_cmd_rthd_numオペランドの指定値＋1

4

コスト情報収集オプションadb_getcst_scan_rthd_numに0を指定した場合

バージョン04-00以前と同じスレッド数でコマンドを実行させる指定値はありません。

5

コスト情報収集オプションadb_getcst_scan_rthd_numに1以上の値を指定した場合

コスト情報収集オプションadb_getcst_scan_rthd_numの指定値＋1

注※

変数DEFAULT_RTHD_NUMは「表8‒12　変数DEFAULT_RTHD_NUMの求め方」を参照して求めてください。

(d)　adbidxrebuildコマンドの場合（インデクス再作成オプションadb_idxrebuild_rthd_numの求め方）

次に示す計算式で求めた値をインデクス再作成オプションadb_idxrebuild_rthd_numに指定すると，バージョン04-00以前と同じスレッド数でコマンドを実行できます。

計算式

adb_idxrebuild_rthd_numの指定値
    ＝MAX（IDXREBUILD_SCAN_RTHD_NUM×2，
           IDXREBUILD_SORT_RTHD_NUM，
           IDXREBUILD_DIVIDX_RTHD_NUM）＋1

変数の説明

IDXREBUILD_SCAN_RTHD_NUM

次の表に示す計算式から求めてください。

表8‒16　IDXREBUILD_SCAN_RTHD_NUMの求め方

項番

バージョン04-00以前のインデクス再作成オプションまたはサーバ定義の値

IDXREBUILD_SCAN_RTHD_NUMに代入する値

1

インデクス再作成オプションadb_idxrebuild_scan_rthd_numの指定を省略した場合

サーバ定義adb_cmd_rthd_numオペランドの指定を省略した場合

↓(変数DEFAULT_RTHD_NUMの値※－1）÷2↓

2

サーバ定義adb_cmd_rthd_numオペランドに0を指定した場合

3

サーバ定義adb_cmd_rthd_numオペランドに1以上の値を指定した場合

サーバ定義adb_cmd_rthd_numオペランドの指定値

4

インデクス再作成オプションadb_idxrebuild_scan_rthd_numに0を指定した場合

↓(変数DEFAULT_RTHD_NUMの値※－1）÷2↓

5

インデクス再作成オプションadb_idxrebuild_scan_rthd_numに1以上の値を指定した場合

インデクス再作成オプションadb_idxrebuild_scan_rthd_numの指定値

注※

変数DEFAULT_RTHD_NUMは「表8‒12　変数DEFAULT_RTHD_NUMの求め方」を参照して求めてください。

IDXREBUILD_SORT_RTHD_NUM

次の表に示す計算式から求めてください。

表8‒17　IDXREBUILD_SORT_RTHD_NUMの求め方

項番

バージョン04-00以前のインデクス再作成オプションまたはサーバ定義の値

IDXREBUILD_SORT_RTHD_NUMに代入する値

1

インデクス再作成オプションadb_idxrebuild_sort_rthd_numの指定を省略した場合

サーバ定義adb_cmd_rthd_numオペランドの指定を省略した場合

変数DEFAULT_RTHD_NUM※の値

2

サーバ定義adb_cmd_rthd_numオペランドに0を指定した場合

3

サーバ定義adb_cmd_rthd_numオペランドに1以上の値を指定した場合

サーバ定義adb_cmd_rthd_numオペランドの指定値

4

インデクス再作成オプションadb_idxrebuild_sort_rthd_numに0を指定した場合

変数DEFAULT_RTHD_NUM※の値

5

インデクス再作成オプションadb_idxrebuild_sort_rthd_numに1以上の値を指定した場合

インデクス再作成オプションadb_idxrebuild_sort_rthd_numの指定値

注※

変数DEFAULT_RTHD_NUMは「表8‒12　変数DEFAULT_RTHD_NUMの求め方」を参照して求めてください。

IDXREBUILD_DIVIDX_RTHD_NUM

次の表に示す計算式から求めてください。

表8‒18　IDXREBUILD_DIVIDX_RTHD_NUMの求め方

項番

バージョン04-00以前のインデクス再作成オプションまたはサーバ定義の値

IDXREBUILD_DIVIDX_RTHD_NUMに代入する値

1

インデクス再作成オプションadb_idxrebuild_dividx_rthd_numの指定を省略した場合

サーバ定義adb_cmd_rthd_numオペランドの指定を省略した場合

変数DEFAULT_RTHD_NUM※の値

2

サーバ定義adb_cmd_rthd_numオペランドに0を指定した場合

3

サーバ定義adb_cmd_rthd_numオペランドに1以上の値を指定した場合

サーバ定義adb_cmd_rthd_numオペランドの指定値

4

インデクス再作成オプションadb_idxrebuild_dividx_rthd_numに0を指定した場合

変数DEFAULT_RTHD_NUM※の値

5

インデクス再作成オプションadb_idxrebuild_dividx_rthd_numに1以上の値を指定した場合

インデクス再作成オプションadb_idxrebuild_dividx_rthd_numの指定値

注※

変数DEFAULT_RTHD_NUMは「表8‒12　変数DEFAULT_RTHD_NUMの求め方」を参照して求めてください。

(e)　adbimportコマンドの場合（インポートオプションadb_import_rthd_numの求め方）

次に示す計算式で求めた値をインポートオプションadb_import_rthd_numに指定すると，バージョン04-00以前と同じスレッド数でコマンドを実行できます。

計算式

adb_import_rthd_numの指定値
    ＝MAX（IMPORT_DATALOAD_RTHD_NUM，
           IMPORT_SORT_RTHD_NUM，
           IMPORT_DIVIDX_RTHD_NUM）＋1

変数の説明

IMPORT_DATALOAD_RTHD_NUM

次の表に示す計算式から求めてください。

表8‒19　IMPORT_DATALOAD_RTHD_NUMの求め方

項番

バージョン04-00以前のインポートオプションまたはサーバ定義の値

IMPORT_DATALOAD_RTHD_NUMに代入する値

1

インポートオプションadb_import_dataload_rthd_numの指定を省略した場合

サーバ定義adb_cmd_rthd_numオペランドの指定を省略した場合

変数DEFAULT_RTHD_NUMの値※－1

2

サーバ定義adb_cmd_rthd_numオペランドに0を指定した場合

3

サーバ定義adb_cmd_rthd_numオペランドに1以上の値を指定した場合

サーバ定義adb_cmd_rthd_numオペランドの指定値

4

インポートオプションadb_import_dataload_rthd_numに0を指定した場合

変数DEFAULT_RTHD_NUMの値※－1

5

インポートオプションadb_import_dataload_rthd_numに1以上の値を指定した場合

インポートオプションadb_import_dataload_rthd_numの指定値

注※

変数DEFAULT_RTHD_NUMは「表8‒12　変数DEFAULT_RTHD_NUMの求め方」を参照して求めてください。

IMPORT_SORT_RTHD_NUM

次の表に示す計算式から求めてください。

表8‒20　IMPORT_SORT_RTHD_NUMの求め方

項番

バージョン04-00以前のインポートオプションまたはサーバ定義の値

IMPORT_SORT_RTHD_NUMに代入する値

1

インポートオプションadb_import_sort_rthd_numの指定を省略した場合

サーバ定義adb_cmd_rthd_numオペランドの指定を省略した場合

変数DEFAULT_RTHD_NUM※の値

2

サーバ定義adb_cmd_rthd_numオペランドに0を指定した場合

3

サーバ定義adb_cmd_rthd_numオペランドに1以上の値を指定した場合

サーバ定義adb_cmd_rthd_numオペランドの指定値

4

インポートオプションadb_import_sort_rthd_numに0を指定した場合

変数DEFAULT_RTHD_NUM※の値

5

インポートオプションadb_import_sort_rthd_numに1以上の値を指定した場合

インポートオプションadb_import_sort_rthd_numの指定値

注※

変数DEFAULT_RTHD_NUMは「表8‒12　変数DEFAULT_RTHD_NUMの求め方」を参照して求めてください。

IMPORT_DIVIDX_RTHD_NUM

次の表に示す計算式から求めてください。

表8‒21　IMPORT_DIVIDX_RTHD_NUMの求め方

項番

バージョン04-00以前のインポートオプションまたはサーバ定義の値

IMPORT_DIVIDX_RTHD_NUMに代入する値

1

インポートオプションadb_import_dividx_rthd_numの指定を省略した場合

サーバ定義adb_cmd_rthd_numオペランドの指定を省略した場合

変数DEFAULT_RTHD_NUM※の値

2

サーバ定義adb_cmd_rthd_numオペランドに0を指定した場合

3

サーバ定義adb_cmd_rthd_numオペランドに1以上の値を指定した場合

サーバ定義adb_cmd_rthd_numオペランドの指定値

4

インポートオプションadb_import_dividx_rthd_numに0を指定した場合

変数DEFAULT_RTHD_NUM※の値

5

インポートオプションadb_import_dividx_rthd_numに1以上の値を指定した場合

インポートオプションadb_import_dividx_rthd_numの指定値

注※

変数DEFAULT_RTHD_NUMは「表8‒12　変数DEFAULT_RTHD_NUMの求め方」を参照して求めてください。

(f)　adbmergechunkコマンドの場合（マージチャンクオプションadb_mergechunk_rthd_numの求め方）

次に示す計算式で求めた値をマージチャンクオプションadb_mergechunk_rthd_numに指定すると，バージョン04-00以前と同じスレッド数でコマンドを実行できます。

計算式

adb_mergechunk_rthd_numの指定値
    ＝MAX（MERGECHUNK_SCAN_RTHD_NUM×2，
           MERGECHUNK_SORT_RTHD_NUM，
           MERGECHUNK_DIVIDX_RTHD_NUM）＋1

変数の説明

MERGECHUNK_SCAN_RTHD_NUM

次の表に示す計算式から求めてください。

表8‒22　MERGECHUNK_SCAN_RTHD_NUMの求め方

項番

バージョン04-00以前のマージチャンクオプションまたはサーバ定義の値

MERGECHUNK_SCAN_RTHD_NUMに代入する値

1

マージチャンクオプションadb_mergechunk_scan_rthd_numの指定を省略した場合

サーバ定義adb_cmd_rthd_numオペランドの指定を省略した場合

次の値のうち，どちらか大きい方の値

↓（サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値－1）÷2↓

1

2

サーバ定義adb_cmd_rthd_numオペランドに0を指定した場合

3

サーバ定義adb_cmd_rthd_numオペランドに1以上の値を指定した場合

サーバ定義adb_cmd_rthd_numオペランドの指定値

4

マージチャンクオプションadb_mergechunk_scan_rthd_numに0を指定した場合

次の値のうち，どちらか大きい方の値

↓（サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値－1）÷2↓

1

5

マージチャンクオプションadb_mergechunk_scan_rthd_numに1以上の値を指定した場合

マージチャンクオプションadb_mergechunk_scan_rthd_numの指定値

MERGECHUNK_SORT_RTHD_NUM

次の表に示す計算式から求めてください。

表8‒23　MERGECHUNK_SORT_RTHD_NUMの求め方

項番

バージョン04-00以前のマージチャンクオプションまたはサーバ定義の値

MERGECHUNK_SORT_RTHD_NUMに代入する値

1

マージチャンクオプションadb_mergechunk_sort_rthd_numの指定を省略した場合

サーバ定義adb_cmd_rthd_numオペランドの指定を省略した場合

変数DEFAULT_RTHD_NUM※の値

2

サーバ定義adb_cmd_rthd_numオペランドに0を指定した場合

3

サーバ定義adb_cmd_rthd_numオペランドに1以上の値を指定した場合

サーバ定義adb_cmd_rthd_numオペランドの指定値

4

マージチャンクオプションadb_mergechunk_sort_rthd_numに0を指定した場合

変数DEFAULT_RTHD_NUM※の値

5

マージチャンクオプションadb_mergechunk_sort_rthd_numに1以上の値を指定した場合

マージチャンクオプションadb_mergechunk_sort_rthd_numの指定値

注※

変数DEFAULT_RTHD_NUMは「表8‒12　変数DEFAULT_RTHD_NUMの求め方」を参照して求めてください。

MERGECHUNK_DIVIDX_RTHD_NUM

次の表に示す計算式から求めてください。

表8‒24　MERGECHUNK_DIVIDX_RTHD_NUMの求め方

項番

バージョン04-00以前のマージチャンクオプションまたはサーバ定義の値

MERGECHUNK_DIVIDX_RTHD_NUMに代入する値

1

マージチャンクオプションadb_mergechunk_dividx_rthd_numの指定を省略した場合

サーバ定義adb_cmd_rthd_numオペランドの指定を省略した場合

変数DEFAULT_RTHD_NUM※の値

2

サーバ定義adb_cmd_rthd_numオペランドに0を指定した場合

3

サーバ定義adb_cmd_rthd_numオペランドに1以上の値を指定した場合

サーバ定義adb_cmd_rthd_numオペランドの指定値

4

マージチャンクオプションadb_mergechunk_dividx_rthd_numに0を指定した場合

変数DEFAULT_RTHD_NUM※の値

5

マージチャンクオプションadb_mergechunk_dividx_rthd_numに1以上の値を指定した場合

マージチャンクオプションadb_mergechunk_dividx_rthd_numの指定値

注※

変数DEFAULT_RTHD_NUMは「表8‒12　変数DEFAULT_RTHD_NUMの求め方」を参照して求めてください。

(g)　adbunarchivechunkコマンドの場合（アンアーカイブチャンクオプションadb_unarcv_rthd_numの求め方）

次に示す計算式で求めた値をアンアーカイブチャンクオプションadb_unarcv_rthd_numに指定すると，バージョン04-00以前と同じスレッド数でコマンドを実行できます。

計算式

adb_unarcv_rthd_numの指定値
    ＝MAX（UNARCHIVE_DATALOAD_RTHD_NUM，
           UNARCHIVE_SORT_RTHD_NUM，
           UNARCHIVE_DIVIDX_RTHD_NUM）＋1

変数の説明

UNARCHIVE_DATALOAD_RTHD_NUM

次の表に示す計算式から求めてください。

表8‒25　UNARCHIVE_DATALOAD_RTHD_NUMの求め方

項番

バージョン04-00以前のアンアーカイブチャンクオプションまたはサーバ定義の値

UNARCHIVE_DATALOAD_RTHD_NUMに代入する値

1

アンアーカイブチャンクオプションadb_unarcv_dataload_rthd_numの指定を省略した場合

サーバ定義adb_cmd_rthd_numオペランドの指定を省略した場合

変数DEFAULT_RTHD_NUMの値※－1

2

サーバ定義adb_cmd_rthd_numオペランドに0を指定した場合

3

サーバ定義adb_cmd_rthd_numオペランドに1以上の値を指定した場合

サーバ定義adb_cmd_rthd_numオペランドの指定値

4

アンアーカイブチャンクオプションadb_unarcv_dataload_rthd_numに0を指定した場合

変数DEFAULT_RTHD_NUMの値※－1

5

アンアーカイブチャンクオプションadb_unarcv_dataload_rthd_numに1以上の値を指定した場合

アンアーカイブチャンクオプションadb_unarcv_dataload_rthd_numの指定値

注※

変数DEFAULT_RTHD_NUMは「表8‒12　変数DEFAULT_RTHD_NUMの求め方」を参照して求めてください。

UNARCHIVE_SORT_RTHD_NUM

次の表に示す計算式から求めてください。

表8‒26　UNARCHIVE_SORT_RTHD_NUMの求め方

項番

バージョン04-00以前のアンアーカイブチャンクオプションまたはサーバ定義の値

UNARCHIVE_SORT_RTHD_NUMに代入する値

1

アンアーカイブチャンクオプションadb_unarcv_sort_rthd_numの指定を省略した場合

サーバ定義adb_cmd_rthd_numオペランドの指定を省略した場合

変数DEFAULT_RTHD_NUM※の値

2

サーバ定義adb_cmd_rthd_numオペランドに0を指定した場合

3

サーバ定義adb_cmd_rthd_numオペランドに1以上の値を指定した場合

サーバ定義adb_cmd_rthd_numオペランドの指定値

4

アンアーカイブチャンクオプションadb_unarcv_sort_rthd_numに0を指定した場合

変数DEFAULT_RTHD_NUM※の値

5

アンアーカイブチャンクオプションadb_unarcv_sort_rthd_numに1以上の値を指定した場合

アンアーカイブチャンクオプションadb_unarcv_sort_rthd_numの指定値

注※

変数DEFAULT_RTHD_NUMは「表8‒12　変数DEFAULT_RTHD_NUMの求め方」を参照して求めてください。

UNARCHIVE_DIVIDX_RTHD_NUM

次の表に示す計算式から求めてください。

表8‒27　UNARCHIVE_DIVIDX_RTHD_NUMの求め方

項番

バージョン04-00以前のアンアーカイブチャンクオプションまたはサーバ定義の値

UNARCHIVE_DIVIDX_RTHD_NUMに代入する値

1

アンアーカイブチャンクオプションadb_unarcv_dividx_rthd_numの指定を省略した場合

サーバ定義adb_cmd_rthd_numオペランドの指定を省略した場合

変数DEFAULT_RTHD_NUM※の値

2

サーバ定義adb_cmd_rthd_numオペランドに0を指定した場合

3

サーバ定義adb_cmd_rthd_numオペランドに1以上の値を指定した場合

サーバ定義adb_cmd_rthd_numオペランドの指定値

4

アンアーカイブチャンクオプションadb_unarcv_dividx_rthd_numに0を指定した場合

変数DEFAULT_RTHD_NUM※の値

5

アンアーカイブチャンクオプションadb_unarcv_dividx_rthd_numに1以上の値を指定した場合

アンアーカイブチャンクオプションadb_unarcv_dividx_rthd_numの指定値

注※

変数DEFAULT_RTHD_NUMは「表8‒12　変数DEFAULT_RTHD_NUMの求め方」を参照して求めてください。

(11)　更新行のカラム化機能を有効にする

「8.6.1　バージョンアップ前に実施すること」の「(11)　更新行のカラム化機能を無効にする」で，更新行のカラム化機能を無効にした場合は，更新行のカラム化機能を有効にしてください。

--startオプションを指定してadbcolumnizeコマンドを実行してください。更新行のカラム化機能が有効になります。

メモ

adbcolumnizeコマンドについては，マニュアルHADB　コマンドリファレンスのadbcolumnize（更新行のカラム化機能の管理）を参照してください。

8.6.4　バージョンアップに失敗した場合の対処方法

HADBサーバのバージョンアップに失敗した場合の対処方法について説明します。

対処方法

メッセージを確認する

サーバメッセージログファイルをテキストエディタで開き，出力されているエラーメッセージを確認してください。サーバメッセージログファイルは，サーバディレクトリ下のspool/adbmessageXX.logになります。ファイル名のXXは通番であり，01〜04のどれかになります。最終更新日時が最も新しいファイルを開いてください。

次に示すメッセージが出力されていない場合は，手順2.に進んでください。

次に示すメッセージが出力されている場合は，参照先に従って対処してください。

KFAA30811-Eメッセージ

「(1)　KFAA30811-Eメッセージが出力された場合」を参照してください。

KFAA41210-Eメッセージ

「(2)　KFAA41210-Eメッセージが出力された場合」を参照してください。

KFAA50038-Eメッセージ

「(3)　KFAA50038-Eメッセージが出力された場合」を参照してください。

KFAA51400-Eメッセージ

「(4)　KFAA51400-Eメッセージが出力された場合」を参照してください。

メッセージの対策欄に従って対処する

出力されているエラーメッセージのIDを基に，マニュアルHADB　メッセージを参照してください。対策欄に従って，対処してください。

対策欄に「弊社問い合わせ窓口に連絡してください。」と記載されている場合は，手順3.に進んでください。

adbinfogetコマンドを実行する

対策欄に「弊社問い合わせ窓口に連絡してください。」と記載されている場合は，障害の原因を調査するためのトラブルシュート情報を取得する必要があります。

この場合，adbinfogetコマンドを実行して，トラブルシュート情報を取得してください。操作手順については，「15.2　トラブルシュート情報の取得（adbinfogetコマンド）」を参照してください。

取得したトラブルシュート情報は，弊社問い合わせ窓口に連絡する際，あわせて送付してください。

メモ

障害情報（コアファイル）は，次のどれかのディレクトリ下に出力されます。

/var/lib/systemd/coredumpディレクトリ

サーバ定義のadb_core_pathオペランドに指定したディレクトリ

$DBDIR/SPOOLディレクトリ

対処後，再度HADBサーバを開始してもエラーとなり，バージョンアップに失敗した場合は，データベースをバックアップから回復する必要があります。「(5)　データベースをバックアップから回復する」を参照してください。

(1)　KFAA30811-Eメッセージが出力された場合

定義されているスキーマの数が30,001以上あるため，バージョンアップに失敗しました。HADBサーバのバージョンを，いったん旧バージョンに戻してから，対策する必要があります。

HADBサーバを旧バージョンに戻して対策する手順を次に示します。

手順

サーバディレクトリを削除する

「8.12.1　HADBサーバのアンインストール手順」の「(1)　サーバディレクトリの削除」を参照して，サーバディレクトリを削除してください。

旧バージョンのサーバディレクトリをバックアップから回復する

あらかじめ取得しておいたバックアップから，旧バージョンのサーバディレクトリをコピーして，手順1.で削除した格納先に戻してください。

HADBサーバを開始する

adbstartコマンドで，HADBサーバを開始してください。

スキーマの数を30,000以下に減らす

DROP SCHEMA文で不要なスキーマを削除して，定義されているスキーマの数を30,000以下にしてください。スキーマの数が30,001以上あると，バージョンアップできません。

HADBサーバを終了する

adbstopコマンドでHADBサーバを終了してください。

HADBサーバが正常終了したことを確認する

「8.6.1　バージョンアップ前に実施すること」の「(12)　HADBサーバを正常終了する」を参照して，HADBサーバが正常終了したかどうかを確認してください。

HADBサーバが正常終了したことを確認したら，「8.6.2　バージョンアップする」を参照して，再度バージョンアップをしてください。

(2)　KFAA41210-Eメッセージが出力された場合

ユーザログファイル数が不足しているため，バージョンアップに失敗しました。HADBサーバのバージョンを，いったん旧バージョンに戻してから，対策する必要があります。

HADBサーバを旧バージョンに戻して対策する手順を次に示します。

手順

サーバディレクトリを削除する

「8.12.1　HADBサーバのアンインストール手順」の「(1)　サーバディレクトリの削除」を参照して，サーバディレクトリを削除してください。

旧バージョンのサーバディレクトリをバックアップから回復する

あらかじめ取得しておいたバックアップから，旧バージョンのサーバディレクトリをコピーして，手順1.で削除した格納先に戻してください。

サーバ定義adb_log_usrfile_numオペランドの指定値を確認する

サーバ定義adb_log_usrfile_numオペランドの指定値に，1が指定されているかどうかを確認してください。1が指定されている場合は，2以上に変更してください。

HADBサーバを開始・終了する

adbstartコマンドで，HADBサーバを開始してください。そのあとで，adbstopコマンドでHADBサーバを終了してください。

HADBサーバが正常終了したことを確認する

「8.6.1　バージョンアップ前に実施すること」の「(12)　HADBサーバを正常終了する」を参照して，HADBサーバが正常終了したかどうかを確認してください。

HADBサーバが正常終了したことを確認したら，「8.6.2　バージョンアップする」を参照して，再度バージョンアップをしてください。

(3)　KFAA50038-Eメッセージが出力された場合

KFAA50038-Eメッセージの変数aa....aaに出力された内容によって，対処方法が異なります。

変数aa....aaがof an abnormal termination the last time it endedの場合

変数aa....aaがthe adbstart command was never been executed in previous versionsの場合

変数aa....aaがof using the multiple node facilityの場合

(a)　変数aa....aaがof an abnormal termination the last time it endedの場合

HADBサーバが異常終了していたため，バージョンアップに失敗しました。HADBサーバのバージョンを，いったん旧バージョンに戻してから，対策する必要があります。

［マルチノード機能］

マルチノード機能を使用している場合は，全ノードのHADBサーバを，旧バージョンに戻してください。

HADBサーバを旧バージョンに戻して対策する手順を次に示します。

手順

サーバディレクトリを削除する

「8.12.1　HADBサーバのアンインストール手順」の「(1)　サーバディレクトリの削除」を参照して，サーバディレクトリを削除してください。

［マルチノード機能］

マルチノード機能を使用している場合は，全ノードで実施してください。

旧バージョンのサーバディレクトリをバックアップから回復する

あらかじめ取得しておいたバックアップから，旧バージョンのサーバディレクトリをコピーして，手順1.で削除した格納先に戻してください。

［マルチノード機能］

マルチノード機能を使用している場合は，全ノードで実施してください。

HADBサーバを開始・終了する

adbstartコマンドで，HADBサーバを開始してください。そのあとで，adbstopコマンドでHADBサーバを終了してください。

［マルチノード機能］

マルチノード機能を使用している場合は，「18.5.1　マルチノード構成のHADBサーバの開始方法」を参照して，マルチノード構成のHADBサーバを開始してください。そのあとで，「18.5.2　マルチノード構成のHADBサーバの終了方法」を参照して，マルチノード構成のHADBサーバを終了してください。

HADBサーバが正常終了したことを確認する

「8.6.1　バージョンアップ前に実施すること」の「(12)　HADBサーバを正常終了する」を参照して，HADBサーバが正常終了したかどうかを確認してください。

HADBサーバが正常終了したことを確認したら，「8.6.2　バージョンアップする」を参照して，再度バージョンアップをしてください。

(b)　変数aa....aaがthe adbstart command was never been executed in previous versionsの場合

旧バージョンのときに一度もHADBサーバを開始していないため，バージョンアップに失敗しました。

adbinitコマンドを実行して，データベースの初期設定をする必要があります。データベースの初期設定については，「9.2　データベースを初期設定する（データ用DBエリアを作成する）」を参照してください。

(c)　変数aa....aaがof using the multiple node facilityの場合

バージョン03-00より前のバージョンのHADBサーバで，バージョンアップ，およびマルチノード機能を使用するシステムへの変更を同時に実行しようとしたため，バージョンアップに失敗しました。

バージョンアップを実施する前に，サーバ定義にマルチノード機能のオペランドを指定すると，バージョンアップに失敗します。バージョンアップを実施したあとに，マルチノード機能を使用するシステムへの変更を実施してください。

手順

サーバ定義adb_sys_multi_node_infoオペランドの指定を削除する

マルチノード機能を使用しないようにするため，サーバ定義adb_sys_multi_node_infoオペランドの指定を削除してください。

または，サーバ定義adb_sys_multi_node_infoオペランドをコメントにしてください。オペランドの指定行の先頭にシャープ（#）を記述すると，その行全体の指定がコメントになります。

HADBサーバを開始する

マルチノード機能を使用しない状態で，adbstartコマンドを実行して，HADBサーバを開始してください。バージョンアップ処理が開始されます。

adbstartコマンドの実行後，データベースをバージョンアップしてよいかを確認するKFAA91107-Qメッセージが出力されます。y（またはY）を入力して，データベースをバージョンアップしてください。

adbstartコマンドが正常終了すると，HADBサーバのバージョンアップは完了です。

HADBサーバを正常終了する

adbstartコマンドが正常終了し，バージョンアップが完了したら，HADBサーバを正常終了します。adbstopコマンドを実行して，HADBサーバを正常終了してください。

サーバ定義adb_sys_multi_node_infoオペランドを指定する

バージョンアップが完了したら，マルチノード機能を使用できます。手順1.で削除したサーバ定義adb_sys_multi_node_infoオペランドを指定してください。

マルチノード構成のHADBサーバを開始する

サーバ定義adb_sys_multi_node_infoオペランドを指定したら，「18.5.1　マルチノード構成のHADBサーバの開始方法」を参照して，マルチノード構成のHADBサーバを開始してください。

(4)　KFAA51400-Eメッセージが出力された場合

バージョン02-00のHADBサーバで作成したデータベースに，スキーマが1つもない状態でバージョンアップしようとしたため，バージョンアップに失敗しました。

adbinitコマンドを実行して，データベースの初期設定をする必要があります。データベースの初期設定については，「9.2　データベースを初期設定する（データ用DBエリアを作成する）」を参照してください。

(5)　データベースをバックアップから回復する

HADBサーバのバージョンアップに失敗して，出力されたメッセージに従って対処したあとで，再度HADBサーバを開始してもエラーとなった場合は，データベースをバックアップから回復する必要があります。

データベースをバックアップから回復して，旧バージョンのHADBサーバを再構築する手順を次に示します。

［マルチノード機能］

マルチノード機能を使用している場合は，全ノードのHADBサーバに対して実施してください。

手順

サーバディレクトリを削除する

「8.12.1　HADBサーバのアンインストール手順」の「(1)　サーバディレクトリの削除」を参照して，サーバディレクトリを削除してください。

［マルチノード機能］

マルチノード機能を使用している場合は，全ノードで実施してください。

旧バージョンのサーバディレクトリをバックアップから回復する

あらかじめ取得しておいたバックアップから，旧バージョンのサーバディレクトリをコピーして，手順1.で削除した格納先に戻してください。

［マルチノード機能］

マルチノード機能を使用している場合は，全ノードで実施してください。

DBディレクトリをバックアップから回復する

「10.3.2　バックアップからの回復方法」を参照して，DBディレクトリをバックアップから回復してください。

［マルチノード機能］

マルチノード機能を使用している場合は，「18.9.2　バックアップからの回復方法」を参照して，DBディレクトリをバックアップから回復してください。

サーバ定義adb_db_pathオペランドの指定値を確認する

手順3.で回復したDBディレクトリのパス名が，サーバ定義adb_db_pathオペランドに指定されているかどうか確認してください。

HADBサーバを開始・終了する

adbstartコマンドで，HADBサーバを開始してください。そのあとで，adbstopコマンドでHADBサーバを終了してください。

［マルチノード機能］

マルチノード機能を使用している場合は，「18.5.1　マルチノード構成のHADBサーバの開始方法」を参照して，マルチノード構成のHADBサーバを開始してください。そのあとで，「18.5.2　マルチノード構成のHADBサーバの終了方法」を参照して，マルチノード構成のHADBサーバを終了してください。

HADBサーバが正常終了したことを確認する

「8.6.1　バージョンアップ前に実施すること」の「(12)　HADBサーバを正常終了する」を参照して，HADBサーバが正常終了したかどうかを確認してください。

HADBサーバが正常終了していれば，旧バージョンのHADBサーバを再構築できています。HADBサーバのバージョンアップが必要な場合は，「8.6.2　バージョンアップする」を参照してください。

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が実行されます。

対象の項目

集合関数

PERCENTILE_CONT

MEDIAN

0バイトの定数

CASE式

スカラ関数

COALESCE

CEIL

DECODE

FLOOR

GREATEST

LEAST

NULLIF

ROUND（数学関数）

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

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

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

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

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

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

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

バージョンアップで変更されるディクショナリ表とシステム表に依存するビュー表

ディクショナリ表とシステム表に依存するビュー表を調べる場合は，「付録B.24　ディクショナリ表の検索」の「(34)　依存するビュー表の一覧を調べる場合」を参照してください。

バージョンアップで変更されるディクショナリ表とシステム表は，「表8‒30　バージョンアップ時に変更されるディクショナリ表とシステム表の一覧（その1）」，および「表8‒31　バージョンアップ時に変更されるディクショナリ表とシステム表の一覧（その2）」を参照してください。

バージョンアップ時点で有効なビュー表（無効化されていないビュー表）

ビュー表が有効かどうかを調べる場合は，「付録B.24　ディクショナリ表の検索」の「(23)　ビュー表が無効化されているかどうかを調べる場合」を参照してください。

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

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

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

バージョン06-01の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

SQL_FOREIGN_SERVERS

－

－

－

－

－

－

－

－

－

－

20

SQL_DATATYPE_DESCRIPTORS

－

－

－

－

－

－

－

－

－

－

21

STATUS_TABLES

－

○

○

○

○

○

○

○

○

○

22

STATUS_INDEXES

－

○

○

－

－

－

－

－

－

－

23

STATUS_CHUNKS

－

○

○

○

○

○

○

○

○

○

24

STATUS_SYNONYM_DICTIONARIES

－

－

－

－

－

－

－

－

－

－

25

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，05-10

06-00

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

SQL_FOREIGN_SERVERS

－

－

－

－

－

－

20

SQL_DATATYPE_DESCRIPTORS

－

－

－

－

－

－

21

STATUS_TABLES

○

○

－

－

－

－

22

STATUS_INDEXES

－

－

－

－

－

－

23

STATUS_CHUNKS

○

－

－

－

－

－

24

STATUS_SYNONYM_DICTIONARIES

－

－

－

－

－

－

25

STATUS_COLUMNS

○

○

○

－

－

－

（凡例）

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

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

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

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

■ビュー表を再作成できない条件

CREATE VIEW文中に導出表を指定している

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

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

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

nnnnは，0001～1000の符号なし整数です。

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

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

■ビュー表を再定義する手順

再作成できないビュー表を確認する

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

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

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

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

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

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

ビュー表を削除する

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

ビュー表を再定義する

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

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

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

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

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

手順

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

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

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

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

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

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

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

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

手順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オペランドに正確に見積もった値を指定すると，リアルスレッド数の増加を抑えることができます。

(10)　AWS SDK for C++ライブラリまたはAzure SDK for C++ライブラリの削除（06-00より前のバージョンからバージョンアップした場合）

HADBオプションを06-00より前のバージョンからバージョンアップした場合，AWS SDK for C++ライブラリまたはAzure SDK for C++ライブラリを削除してください。

メモ

HADBオプション06-00で，AWS SDK for C++ライブラリとAzure SDK for C++ライブラリのインストールディレクトリを次のように変更しました。

変更前：/usr/local/lib64

変更後：$ADBDIR/lib

そのため，旧バージョンのHADBオプションで使用していたAWS SDK for C++ライブラリまたはAzure SDK for C++ライブラリを削除する必要があります。

AWS環境でHADBオプションを使用している場合

次のファイルをスーパユーザで削除してください。

/usr/local/lib64/libaws-cpp-sdk-s3-crt.so

/usr/local/lib64/libaws-cpp-sdk-core.so

ただし，HADBサーバ以外でAWS SDK for C++ライブラリを使用しているときは，上記のファイルを削除する必要はありません。

Azure環境でHADBオプションを使用している場合

次のファイルをスーパユーザで削除してください。

/usr/local/lib64/libazure-storage-blobs.so

/usr/local/lib64/libazure-storage-common.so

/usr/local/lib64/libazure-identity.so

/usr/local/lib64/libazure-core.so

ただし，HADBサーバ以外でAzure SDK for C++ライブラリを使用しているときは，上記のファイルを削除する必要はありません。

8.7　HADBサーバのバージョンダウン（旧バージョンに戻す方法）

ここでは，HADBサーバをバージョンアップしたあとで，バージョンアップ前のバージョン（旧バージョン）に戻したい場合について説明します（HADBサーバをバージョンダウンする方法について説明します）。

なお，バージョンアップ後の新機能は，旧バージョンのHADBサーバでは使用できません。

重要

バージョンアップに失敗したために，旧バージョンに戻す必要がある場合は，「8.6.4　バージョンアップに失敗した場合の対処方法」を参照してください。

インストールデータに関する注意事項があります。HADBサーバをバージョンダウンする前に，「8.2　インストール」の注意事項を参照してください。

HADBサーバをバージョンダウンした場合，HADBクライアントもバージョンダウンしてください。HADBクライアントのバージョンダウン方法については，マニュアルHADB　AP開発ガイドのHADBクライアントのバージョンダウン（旧バージョンに戻す方法）を参照してください。

クラウドストレージ機能を使用している場合は，HADBサーバをバージョンダウンする前に，キャッシュファイルの格納先ディレクトリ内の全ファイルを削除してください。

バージョンダウンの方法は，バージョンアップの前にデータベースのフルバックアップを取得していたかどうかで異なります。データベースのフルバックアップの取得有無によるバージョンダウンの方法について，次の表に示します。

表8‒32　HADBサーバのバージョンダウンの方法

項番

データベースのフルバックアップの取得有無

バージョンダウンの方法

1

○

旧バージョンのデータベースのバックアップを使用して，バージョンダウンを行います。

詳細については，「8.7.1　旧バージョンのデータベースのバックアップを使用する場合」を参照してください。

2

×

旧バージョンのデータベースのバックアップを取得していないため，旧バージョンのHADBサーバでデータベースを再構築します。

詳細については，「8.7.2　旧バージョンでデータベースを再構築する場合」を参照してください。

（凡例）

○：フルバックアップを取得しています。

×：フルバックアップを取得していません。

メモ

データベースのバックアップの詳細については，「10.3　データベースのバックアップ」を参照してください。なお，マルチノード機能を使用している場合は，「18.9　データベースのバックアップ（マルチノード機能の使用時）」を参照してください。また，コールドスタンバイ構成の場合は，「19.6　データベースのバックアップ（コールドスタンバイ構成の場合）」を参照してください。

8.7.1　旧バージョンのデータベースのバックアップを使用する場合

ここでは，旧バージョンのデータベースのバックアップを使用して，HADBサーバをバージョンダウンする方法について説明します。この方法は，バージョンアップ前に，旧バージョンのデータベースのフルバックアップを取得していることを前提としています。

メモ

旧バージョンのデータベースのフルバックアップを取得していない場合は，旧バージョンでデータベースを再構築して，バージョンダウンする必要があります。詳細については，「8.7.2　旧バージョンでデータベースを再構築する場合」を参照してください。

(1)　バージョンダウン前に実施すること

HADBサーバをバージョンダウンする前に，次に示すことを必ず実施してください。

(a)　HADBサーバの環境設定を確認する

HADBサーバをバージョンダウンする前に，環境変数，カーネルパラメタ，およびサーバ定義の各指定値を，バージョンアップの際に変更していないことを確認してください。指定値を変更している場合は，旧バージョンの指定値に戻す必要があります。

(b)　APおよびコマンドを停止する

HADBサーバをバージョンダウンする前に，実行中のAPおよびコマンドがある場合は，すべて終了してください。

(c)　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サーバの終了方法」を参照してください。

［コールドスタンバイ構成］

コールドスタンバイ構成のHADBサーバが正常終了していない場合は，すべての系のHADBサーバを開始したあとで，すべての系のHADBサーバを正常終了させてください。このとき，HAモニタを停止させる必要はありません（monstopコマンドの実行は不要です）。

コールドスタンバイ構成のHADBサーバを開始して，正常終了させる方法については，「19.4.1　コールドスタンバイ構成の開始方法」と「19.4.2　コールドスタンバイ構成の終了方法」を参照してください。

(d)　サーバディレクトリのバックアップを取得する

HADBサーバをバージョンダウンする前に，サーバディレクトリのバックアップを取得してください。

HADBサーバをバージョンダウンする場合は，HADBサーバをアンインストールする必要があるため，サーバディレクトリを削除します。サーバディレクトリを削除すると，定義ファイルやメッセージログファイルなども削除されます。バージョンダウン後に必要になった場合を考慮して，サーバディレクトリのバックアップを取得してください。

サーバディレクトリのバックアップを取得する方法については，「10.3.1　バックアップの取得方法」の「(2)　バックアップを取得する手順」を参照してください。

(2)　バージョンダウンする

HADBサーバのバージョンダウンを行う手順を次に示します。

［マルチノード機能］

マルチノード機能を使用している場合は，全ノードのHADBサーバに対して実施してください。

［コールドスタンバイ構成］

コールドスタンバイ構成の場合は，すべての系のHADBサーバに対して実施してください。

手順

HADBサーバをアンインストールする

「8.12　アンインストール」を参照して，HADBサーバをアンインストールしてください。

旧バージョンのHADBサーバをインストールする

旧バージョンのHADBサーバをインストールしてください。HADBサーバのインストールについては，「8.2　インストール」を参照してください。

データベースをバックアップから回復する

取得したバックアップから，データベースを回復してください。

データベースをバックアップから回復する方法については，「10.3.2　バックアップからの回復方法」を参照してください。

なお，マルチノード機能を使用している場合は，「18.9.2　バックアップからの回復方法」を参照してください。また，コールドスタンバイ構成の場合は，「19.6.2　バックアップからの回復方法」を参照してください。

HADBサーバの環境設定を行う

旧バージョンのHADBサーバの環境設定を行います。環境変数，カーネルパラメタ，およびサーバ定義に，旧バージョンの指定値と同じ値を指定してください。

HADBサーバを開始する

adbstartコマンドで，HADBサーバを開始してください。

なお，静止モードでバックアップを取得した場合は，HADBサーバを開始したあとで，HADBサーバの稼働モードを通常モードにする必要があります。この場合，adbchgsrvmodeコマンドを実行して，通常モードに変更してください。

重要

旧バージョンのデータベースのバックアップを使用して，HADBサーバをバージョンダウンすると，データベースの内容は，バックアップを取得した時点の内容に戻ります。

(3)　バージョンダウン後に実施すること

HADBサーバをバージョンダウンした場合は，HADBクライアントもバージョンダウンしてください（HADBサーバとHADBクライアントのバージョンを合わせてください）。HADBクライアントのバージョンダウンについては，マニュアルHADB　AP開発ガイドのHADBクライアントのバージョンダウン（旧バージョンに戻す方法）を参照してください。

HADBオプションをインストールしている場合は，HADBサーバのバージョンダウン後に次のことをしてください。

バージョン05-07より前のHADBサーバにバージョンダウンした場合

HADBオプションをアンインストールしてください。HADBオプションのアンインストール方法については，「8.12.3　HADBオプションのアンインストール手順」を参照してください。

バージョン05-07以降のHADBサーバにバージョンダウンした場合

バージョンダウンしたHADBサーバに対応しているバージョンのHADBオプションをインストールしてください。HADBオプションのインストール方法については，「8.2.4　HADBオプションのインストール手順」を参照してください。

8.7.2　旧バージョンでデータベースを再構築する場合

ここでは，旧バージョンのHADBサーバでデータベースを再構築することで，HADBサーバをバージョンダウンする方法について，説明します。この方法は，旧バージョンのデータベースのフルバックアップを取得していない場合の説明になります。

メモ

旧バージョンのデータベースのフルバックアップを取得している場合は，バックアップを使用して，HADBサーバのバージョンダウンを実施できます。詳細については，「8.7.1　旧バージョンのデータベースのバックアップを使用する場合」を参照してください。

(1)　バージョンダウン前に実施すること

HADBサーバをバージョンダウンする前に，次に示すことを必ず実施してください。

(a)　HADBサーバの環境設定を確認する

HADBサーバをバージョンダウンする前に，環境変数，カーネルパラメタ，およびサーバ定義の各指定値を，バージョンアップの際に変更していないことを確認してください。指定値を変更している場合は，旧バージョンの指定値に戻す必要があります。

(b)　DBエリアの状態を確認する（初期設定オプションを確認する）

HADBサーバをバージョンダウンする前に，adbdbstatusコマンドで，DBエリアの状態を確認してください。旧バージョンのHADBサーバでデータベースを再構築する場合に，初期設定オプションを指定してadbinitコマンドを実行するときに必要となります。

adbdbstatusコマンドで，まず「DBエリアのサマリ情報」を確認してください。出力結果のうち，次に示す出力項目の内容を確認します。

DBarea_name（DBエリア名）

Page_size（ページサイズ）

そのあとで，adbdbstatusコマンドで「使用量情報」を確認してください。出力結果のうち，DBエリアのサマリ情報で出力された「DBarea_name」の内容に対応する，「DBarea_filename」（DBエリアファイル名）の内容を確認します。

メモ

クラウドストレージ機能を使用している場合は，「DBarea_name（DBエリア名）」だけを確認してください。

adbdbstatusコマンドについては，マニュアルHADB　コマンドリファレンスのadbdbstatus（データベースの状態解析）を参照してください。

データベースの再構築時には，adbdbstatusコマンドで確認した出力項目の内容を基に，adbinitコマンドの初期設定オプションを指定してください。adbdbstatusコマンドで確認した出力項目と，adbinitコマンドの初期設定オプションの関係について，次の表に示します。

表8‒33　adbdbstatusコマンドの出力項目とadbinitコマンドの初期設定オプションの関係

項番

adbdbstatusコマンドの出力項目

adbinitコマンドの初期設定オプション

1

DBarea_name（DBエリア名）

adbinitdbareaの-nオプション

2

Page_size（ページサイズ）※1

adbinitdbareaの-pオプション※2

3

DBarea_filename（DBエリアファイル名）※1

adbinitdbareaの-vオプション

注※1

クラウドストレージ機能を使用している場合，確認する必要はありません。クラウドストレージ機能を使用している場合は，-pオプションの指定値は決まっています。また，-vオプションは指定しません。

注※2

adbinitコマンドの初期設定オプションadbinitdbareaの-pオプションは，キロバイト単位で指定する必要があります。adbdbstatusコマンドで出力されるPage_size（ページサイズ）の値はバイト単位のため，キロバイト単位に変換した値を-pオプションに指定してください。キロバイト単位に変換する計算式を次に示します。

計算式（単位：キロバイト）

(c)　定義系SQLを確認する

HADBサーバをバージョンダウンする前に，ディクショナリ表を参照して，旧バージョンで実行する必要があるすべての定義系SQLを確認してください。

ディクショナリ表については，「付録B　ディクショナリ表」を参照してください。

(d)　データをエクスポートする

HADBサーバをバージョンダウンする前に，adbexportコマンドで実表に格納した全データをエクスポートしてください。

なお，バックグラウンドインポートで格納した実表のデータを，チャンクの構成を維持したままエクスポートしたい場合は，-cオプションを指定したadbexportコマンドを実行してください。

adbexportコマンドについては，マニュアルHADB　コマンドリファレンスのadbexport（データのエクスポート）を参照してください。

(e)　APおよびコマンドを停止する

HADBサーバをバージョンダウンする前に，実行中のAPおよびコマンドがある場合は，すべて終了してください。

(f)　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サーバの終了方法」を参照してください。

［コールドスタンバイ構成］

コールドスタンバイ構成のHADBサーバが正常終了していない場合は，すべての系のHADBサーバを開始したあとで，すべての系のHADBサーバを正常終了させてください。このとき，HAモニタを停止させる必要はありません（monstopコマンドの実行は不要です）。

コールドスタンバイ構成のHADBサーバを開始して，正常終了させる方法については，「19.4.1　コールドスタンバイ構成の開始方法」と「19.4.2　コールドスタンバイ構成の終了方法」を参照してください。

(g)　サーバディレクトリのバックアップを取得する

HADBサーバをバージョンダウンする前に，サーバディレクトリのバックアップを取得してください。

HADBサーバをバージョンダウンする場合は，HADBサーバをアンインストールする必要があるため，サーバディレクトリを削除します。サーバディレクトリを削除すると，定義ファイルやメッセージログファイルなども削除されます。バージョンダウン後に必要になった場合を考慮して，サーバディレクトリのバックアップを取得してください。

サーバディレクトリのバックアップを取得する方法については，「10.3.1　バックアップの取得方法」の「(2)　バックアップを取得する手順」を参照してください。

(2)　バージョンダウンする

HADBサーバのバージョンダウンを行う手順を次に示します。

［マルチノード機能］

マルチノード機能を使用している場合は，全ノードのHADBサーバに対して実施してください。

［コールドスタンバイ構成］

コールドスタンバイ構成の場合は，すべての系のHADBサーバに対して実施してください。

手順

HADBサーバをアンインストールする

「8.12　アンインストール」を参照して，HADBサーバをアンインストールしてください。

データベースを構築する

「(1)　バージョンダウン前に実施すること」で確認した内容を基に，旧バージョンのHADBサーバでデータベースを構築します。構築の手順については，「8.1　システム構築の手順」を参照してください。

メモ

マルチチャンク表を元のチャンクの構成で復元したい場合は，バックグラウンドインポート機能を適用した（-bオプションを指定した）adbimportコマンドを必要な回数分，実行してください。ただし，チャンクIDについては，復元できません。

adbimportコマンドについては，マニュアルHADB　コマンドリファレンスのadbimport（データのインポート）を参照してください。

(3)　バージョンダウン後に実施すること

HADBサーバをバージョンダウンした場合は，HADBクライアントもバージョンダウンしてください（HADBサーバとHADBクライアントのバージョンを合わせてください）。HADBクライアントのバージョンダウンについては，マニュアルHADB　AP開発ガイドのHADBクライアントのバージョンダウン（旧バージョンに戻す方法）を参照してください。

HADBオプションをインストールしている場合は，HADBサーバのバージョンダウン後に次のことをしてください。

バージョン05-07より前のHADBサーバにバージョンダウンした場合

HADBオプションをアンインストールしてください。HADBオプションのアンインストール方法については，「8.12.3　HADBオプションのアンインストール手順」を参照してください。

バージョン05-07以降のHADBサーバにバージョンダウンした場合

バージョンダウンしたHADBサーバに対応しているバージョンのHADBオプションをインストールしてください。HADBオプションのインストール方法については，「8.2.4　HADBオプションのインストール手順」を参照してください。

8.7.3　バージョンアップに失敗したために，旧バージョンに戻す必要がある場合

バージョンアップに失敗したために，旧バージョンに戻す必要がある場合は，「8.6.4　バージョンアップに失敗した場合の対処方法」を参照してください。

8.8　修正版HADBサーバとの入れ替え

ここでは，修正版HADBサーバとの入れ替え方法について説明します。

次に示す条件を満たす場合は，HADBサーバのバージョンアップではなく，修正版HADBサーバとの入れ替えとなります。

バージョン番号およびリビジョン番号が同じで，コードだけが異なるHADBサーバを上書きインストールする場合

メモ

バージョン番号，リビジョン番号，コードについて説明します。

（例）HADBサーバのバージョン情報が，03-02-/Aの場合

03の部分がバージョン番号になります。

02の部分がリビジョン番号になります。

下線部分の-/Aの部分が，コードになります。

修正版HADBサーバとの入れ替えになる場合の例と，入れ替えにならない場合の例を次に示します。

■修正版HADBサーバとの入れ替えになる場合

例えば，次に示すケースは，バージョン番号およびリビジョン番号が同じため，修正版HADBサーバとの入れ替えになります。

03-02 → 03-02-/A

03-02-/B → 03-02-/D

■修正版HADBサーバとの入れ替えにならない場合

例えば，次に示すケースは，バージョン番号またはリビジョン番号が異なるため，修正版HADBサーバとの入れ替えになりません。

03-02 → 03-03-/A

03-02-/B → 03-03-/D

この場合，HADBサーバのバージョンアップになります。HADBサーバのバージョンアップ方法については，「8.6　HADBサーバのバージョンアップ」を参照してください。

重要

インストールデータに関する注意事項があります。修正版HADBサーバとの入れ替え作業をする前に，「8.2　インストール」の注意事項を参照してください。

クラウドストレージ機能を使用している場合，HADBサーバとHADBオプションの両方を修正版に入れ替えてください。修正版HADBオプションとの入れ替え方法については，「8.8.3　修正版HADBオプションに入れ替える手順」を参照してください。

修正版HADBサーバとの入れ替えを実施した場合，修正版HADBクライアントとの入れ替えも実施してください。修正版HADBクライアントとの入れ替え方法については，マニュアルHADB　AP開発ガイドの修正版HADBクライアントとの入れ替えを参照してください。

8.8.1　修正版HADBサーバとの入れ替え前に実施すること

修正版HADBサーバとの入れ替え前に実施することを説明します。

重要

修正版HADBサーバとの入れ替えを実施する前に，環境変数ADBLANGおよびADBCLTLANGの指定値を変更しないでください。変更した場合，入れ替えが正しくできないおそれがあります。

環境変数LANGについては，次に示すように言語コードおよび国名コードの変更はできます。

ja_JP.UTF-8からen_US.UTF-8への変更

en_US.UTF-8からja_JP.UTF-8への変更

コードセットの変更（文字コード種別の変更）はできません。

なお，環境変数LANGの指定値を変更した場合，HADBクライアントの環境変数LANGの指定値も変更する必要があります。

(1)　メモリ所要量を確認する

修正版HADBサーバに入れ替えた場合，HADBサーバのメモリ所要量が増加することがあります。詳細については，リリースノートを参照してください。

(2)　環境変数の変更が必要かどうかを確認する

修正版HADBサーバに入れ替えた場合，環境変数の変更が必要になることがあります。詳細については，リリースノートを参照してください。

(3)　カーネルパラメタの変更が必要かどうかを確認する

修正版HADBサーバに入れ替えた場合，カーネルパラメタの変更が必要になることがあります。詳細については，リリースノートを参照してください。

(4)　サーバ定義のオペランドのデフォルト値に変更がないかを確認する

修正版HADBサーバに入れ替えた場合，サーバ定義のオペランドのデフォルト値が変更されることがあります。詳細については，リリースノートを参照してください。

(5)　予約語が追加されているかどうかを確認する

修正版HADBサーバに入れ替えた場合，予約語が追加されることがあります。予約語は，表や列などの名称としてSQL文中に指定できません。追加された予約語と同じ文字列をSQL文中で指定している場合，修正版HADBサーバに入れ替えたあとに，SQL文がエラーとなります。そのため，追加された予約語と同じ文字列を，SQL文中で指定していないかどうかを確認してください。指定している場合は，予約語と同じ文字列を二重引用符（"）で囲んでください。詳細については，マニュアルHADB　SQLリファレンスの基本項目の予約語を参照してください。

(6)　APおよびコマンドを正常終了する

修正版HADBサーバとの入れ替えを始める前に，APおよびコマンドを正常終了してください。

(7)　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サーバを正常終了してください。

(8)　サーバディレクトリのバックアップを取得する

修正版HADBサーバとの入れ替えを始める前に，サーバディレクトリのバックアップを取得してください。

HADBサーバが異常終了した状態で，修正版HADBサーバとの入れ替えを実施した場合，HADBサーバを開始できなくなります。それに備えて，サーバディレクトリのバックアップを取得しておいてください。取得したバックアップは，修正版HADBサーバとの入れ替えが完了したあとに削除してください。

バックアップを取得する方法については，「10.3.1　バックアップの取得方法」の「(2)　バックアップを取得する手順」を参照してください。

［マルチノード機能］

マルチノード機能を使用している場合は，全ノードでサーバディレクトリのバックアップを取得してください。

8.8.2　修正版HADBサーバに入れ替える手順

「8.8.1　修正版HADBサーバとの入れ替え前に実施すること」で説明していることを実施したあとに，次の手順に従って修正版HADBサーバに入れ替えてください。

手順

HADB管理者のOSアカウントでOSにログインする

今まで使用していたHADB管理者のOSアカウントで，サーバマシンのOSにログインしてください。

重要

HADB管理者のOSアカウントを変更しないでください。HADB管理者のOSアカウントを変更した場合，修正版HADBサーバとの入れ替えが正しくできないおそれがあります。

インストールデータを格納するディレクトリを作成する

修正版HADBサーバのインストールデータを格納するディレクトリを作成します。

mkdir /home/adbmanager/install

上記の例では，インストールデータを格納するディレクトリとして/home/adbmanager/installを作成しています。

インストールデータを格納するディレクトリに書き込み権限を付与する

インストールデータを格納するディレクトリ（この例では/home/adbmanager/install）に対して，HADB管理者が書き込みできるように書き込み権限を付与してください。

chmod 755 /home/adbmanager/install

CD-ROMファイルシステムをマウントする

修正版HADBサーバのインストールデータが格納されているCD-ROMファイルシステムを自動マウントしてください。

CD-ROMファイルシステムが自動マウントされていない場合，次のコマンドを実行してCD-ROMファイルシステムをマウントしてください。

mount /dev/cdrom /media

下線部分は，CD-ROMファイルシステムのマウントディレクトリ名です。環境によって異なります。

重要

CD-ROMのディレクトリ名やファイル名は，ご使用のサーバマシンによっては，ここの説明内容と表示が異なることがあります。OSのlsコマンドを実行して，表示されたディレクトリ名をそのまま入力してください。

インストールデータをコピーする

マウントしたCD-ROMファイルシステムに格納されている次のファイルを，手順2.で作成したインストールデータを格納するディレクトリにコピーしてください。

tar.gz形式のファイル

adbinstallコマンドの実行形式ファイル

!8A9_HADBファイル

cp /media/hitachi_advanced_database_server-$VER.tar.gz /home/adbmanager/install      ...a
cp /media/adbinstall /home/adbmanager/install                                        ...b
cp '/media/!8A9_HADB' /home/adbmanager/install                                       ...c

［説明］

tar.gz形式のファイル（修正版HADBサーバのプログラムの圧縮ファイル）をコピーします。

adbinstallコマンドの実行形式ファイル（修正版HADBサーバのインストールコマンド）をコピーします。

!8A9_HADBファイルをコピーします。

上記の例では，すべてのファイルを/home/adbmanager/installディレクトリ下にコピーしています。

下線部分は，CD-ROMファイルシステムのマウントディレクトリ名です。環境によって異なります。

$VERは，修正版HADBサーバのバージョンとリリース番号です。

（例）03-02-/Aの場合 → $VERは「0302a-0」

なお，!8A9_HADBファイルは，RHEL 8の場合で，かつITRUを使用するときに必要です。RHEL 9以降の場合は不要です。

重要

上記のファイルは，必ず同じディレクトリにコピーしてください。異なるディレクトリにコピーすると，修正版HADBサーバのインストールが実行できません。

コピーしたファイルが破損していないことを確認する

手順5.でコピーしたファイルが破損していないことを確認します。次のコマンドを実行してください。

cd /home/adbmanager/install
sha256sum -c /media/adbhashfile_server_sha256.txt

下線部分は，CD-ROMファイルシステムのマウントディレクトリ名です。環境によって異なります。

ファイルが破損しているおそれがある（ファイルのハッシュ値が異なる）場合は，エラーを示すメッセージが出力されます。この場合，手順5.から作業をし直してください。

出力されるメッセージの詳細については，OSのマニュアルを参照してください。

権限を付与する

HADB管理者がadbinstallコマンド（修正版HADBサーバのインストールコマンド）を実行できるように，adbinstallコマンドに対する実行権限を付与してください。

また，tar.gz形式のファイルに対する読み取り権限も付与してください。

chmod 500 /home/adbmanager/install/adbinstall
chmod 400 /home/adbmanager/install/hitachi_advanced_database_server-$VER.tar.gz

$VERは，修正版HADBサーバのバージョンとリリース番号です。

修正版HADBサーバをインストールする

adbinstallコマンドを実行して，修正版HADBサーバをインストールしてください。

/home/adbmanager/install/adbinstall -s /HADB/server

下線部分には，手順2.で作成したインストールデータを格納するディレクトリを指定します。

-sオプションには，使用中のサーバディレクトリ（この例では/HADB/server）の絶対パスを指定します。

重要

KFAA91553-Eメッセージが出力されて，adbinstallコマンドがエラーになった場合は，「■KFAA91553-Eメッセージが出力された場合」を参照してください。

adbinstallコマンドを実行した際にKFAA91558-Wメッセージ（警告メッセージ）が出力された場合は，「■KFAA91558-Wメッセージが出力された場合」を参照してください。

KFAA91554-Qメッセージに応答する

adbinstallコマンドを実行すると，ディレクトリを上書きしてよいかどうかを確認するKFAA91554-Qメッセージが出力されます。y（またはY）を入力して，ディレクトリを上書きしてください。

修正版HADBサーバが正常にインストールされたことを確認する

サーバディレクトリ下にあるadbinstsv.logファイルを開いて内容を確認してください。修正版HADBサーバが正常にインストールされている場合は，次の情報が出力されています。

P-aaaa-bbbb Hitachi Advanced Database 06-00-/B (20250722153540)

P-aaaa-bbbbには，HADBサーバのPP形名情報が出力されます。

1つ目の下線部分には，HADBサーバのバージョン情報が出力されます。

2つ目の下線部分には，HADBサーバをインストールした日付と時刻（上記の例では2025年7月22日15時35分40秒）が出力されます。

メモ

adbinstsv.logファイルがすでにある状態のときにadbinstallコマンドを実行すると，adbinstsv.logファイルの内容が更新されます。また，adbinstallコマンドを複数回実行した場合，最後に実行した日付と時刻が記載されます。

adbinstallコマンドのリターンコード（KFAA91552-Iメッセージに出力されるリターンコード）が0または4以外の場合，adbinstsv.logファイルの内容は更新されません。

adbinstallコマンドの実行時にKFAA91555-Iメッセージが出力された場合，adbinstsv.logファイルの内容は更新されません。

修正版HADBサーバのバージョンを確認する

次のコマンドを実行して，修正版HADBサーバのバージョン情報を確認してください。

adbls -d ver

［マルチノード機能］

マルチノード機能を使用している場合は，全ノードのHADBサーバで上記のコマンドを実行し，全ノードの修正版HADBサーバのバージョン情報を確認してください。

adbls -d verコマンドを実行しても，バージョン情報が表示されない場合は，次に示す環境変数が正しく設定されていない可能性があります。

環境変数ADBDIRに，サーバディレクトリが正しく設定されていない

環境変数PATHに，サーバディレクトリ下のbinディレクトリが正しく設定されていない

環境変数については，「8.4　環境変数の設定」を参照してください。

修正版HADBサーバを正常開始する

adbstartコマンドを実行して，修正版HADBサーバを正常開始してください。

adbstart

HADBサーバが正常開始すると，修正版HADBサーバとの入れ替えが完了します。

■KFAA91553-Eメッセージが出力された場合

次に示す場合は，adbinstallコマンドがエラーになり，KFAA91553-Eメッセージが出力されます。この場合，対象のディレクトリに対する書き込み権限をHADB管理者に付与してください。

-sオプションに指定したディレクトリに対して，HADB管理者が書き込み権限を持っていない場合

インストールデータを格納するディレクトリに対して，HADB管理者が書き込み権限を持っていない場合

■KFAA91558-Wメッセージが出力された場合

HADB管理者のOSアカウントではなく，rootでadbinstallコマンドを実行した場合，KFAA91558-Wメッセージ（警告メッセージ）が出力されます。通常，HADB管理者のOSアカウントで，adbinstallコマンドを実行します。そのため，KFAA91558-Wメッセージが出力された場合は，rootでadbinstallコマンドを実行して問題がないかどうかを確認してください。

問題がある場合は，KFAA91558-Wメッセージが出力されたあとに出力されるKFAA91559-Qメッセージの入力要求に対して，n（またはN）を入力してください。そのあとで，HADB管理者のOSアカウントでadbinstallコマンドを実行してください。

なお，root以外のスーパユーザでadbinstallコマンドを実行した場合は，KFAA91558-Wメッセージは出力されません。

メモ

rootは，OSのid -uコマンドを実行して表示される値が0のユーザを指します。また，OSのsuコマンドを使用して，ほかのOSユーザからrootに切り替えたあとで，OSのid -uコマンドを実行して表示される値が0のときも含みます。

8.8.3　修正版HADBオプションに入れ替える手順

「8.8.1　修正版HADBサーバとの入れ替え前に実施すること」で説明していることを実施したあとに，ここで説明している手順に従って修正版HADBオプションに入れ替えてください。

重要

修正版HADBオプションとの入れ替え作業をする前に，修正版HADBオプションのバージョンに対応する修正版HADBサーバの入れ替え作業を完了しておく必要があります。修正版HADBオプションのインストール時に，修正版HADBオプションと修正版HADBサーバのバージョンが対応しているかどうかのチェックが実行されます。バージョンが対応していない場合は，KFAA91581-Eメッセージが出力されて修正版HADBオプションのインストールがエラーになります。

修正版HADBオプションとの入れ替え作業は，HADBサーバを終了したあとに実施してください。

インストールデータに関する注意事項があります。修正版HADBオプションとの入れ替え作業をする前に，「8.2　インストール」の注意事項を参照してください。

Amazon S3互換オブジェクトストレージを使用している場合は，「(1)　修正版HADBオプションに入れ替える手順（AWS環境の場合）」の手順に従って，AWS用の修正版HADBオプションに入れ替えてください。

(1)　修正版HADBオプションに入れ替える手順（AWS環境の場合）

AWS環境で修正版HADBオプションに入れ替える手順について説明します。

手順

HADB管理者のOSアカウントでOSにログインする

今まで使用していたHADB管理者のOSアカウントで，サーバマシンのOSにログインしてください。

重要

HADB管理者のOSアカウントを変更しないでください。HADB管理者のOSアカウントを変更した場合，修正版HADBオプションとの入れ替えが正しくできないおそれがあります。

インストールデータを格納するディレクトリを作成する

修正版HADBオプションのインストールデータを格納するディレクトリを作成します。

mkdir /home/adbmanager/install

上記の例では，インストールデータを格納するディレクトリとして/home/adbmanager/installを作成しています。

インストールデータを格納するディレクトリに書き込み権限を付与する

インストールデータを格納するディレクトリ（この例では/home/adbmanager/install）に対して，HADB管理者が書き込みできるように書き込み権限を付与してください。

chmod 755 /home/adbmanager/install

CD-ROMファイルシステムをマウントする

修正版HADBオプションのインストールデータが格納されているCD-ROMファイルシステムを自動マウントしてください。

CD-ROMファイルシステムが自動マウントされていない場合，次のコマンドを実行してCD-ROMファイルシステムをマウントしてください。

mount /dev/cdrom /media

下線部分は，CD-ROMファイルシステムのマウントディレクトリ名です。環境によって異なります。

重要

CD-ROMのディレクトリ名やファイル名は，ご使用の環境によっては，ここの説明内容と表示が異なることがあります。OSのlsコマンドを実行して，表示されたディレクトリ名をそのまま入力してください。

インストールデータをコピーする

マウントしたCD-ROMファイルシステムに格納されている次のファイルを，手順2.で作成したインストールデータを格納するディレクトリにコピーしてください。

tar.gz形式のファイル

adboptinstallコマンドの実行形式ファイル

cp /media/hitachi_advanced_database_s3option-$VER.tar.gz /home/adbmanager/install    ...a
cp /media/adboptinstall /home/adbmanager/install                                     ...b

［説明］

tar.gz形式のファイル（AWS用の修正版HADBオプションのプログラムの圧縮ファイル）をコピーします。

adboptinstallコマンドの実行形式ファイル（修正版HADBオプションのインストールコマンド）をコピーします。

上記の例では，すべてのファイルを/home/adbmanager/installディレクトリ下にコピーしています。

下線部分は，CD-ROMファイルシステムのマウントディレクトリ名です。環境によって異なります。

$VERは，修正版HADBオプションのバージョンとリリース番号です。

（例）05-09-/Aの場合 → $VERは「0509a-0」

重要

上記の2つのファイルは，必ず同じディレクトリにコピーしてください。異なるディレクトリにコピーすると，修正版HADBオプションとの入れ替えが実行できません。

コピーしたファイルが破損していないことを確認する

手順5.でコピーしたファイルが破損していないことを確認します。次のコマンドを実行してください。

cd /home/adbmanager/install
sha256sum -c /media/adbhashfile_s3option_sha256.txt

下線部分は，CD-ROMファイルシステムのマウントディレクトリ名です。環境によって異なります。

ファイルが破損しているおそれがある（ファイルのハッシュ値が異なる）場合は，エラーを示すメッセージが出力されます。この場合，手順5.から作業をし直してください。

出力されるメッセージの詳細については，OSのマニュアルを参照してください。

権限を付与する

HADB管理者がadboptinstallコマンド（修正版HADBオプションのインストールコマンド）を実行できるように，adboptinstallコマンドに対する読み取り権限と実行権限を付与してください。

また，tar.gz形式のファイルに対する読み取り権限も付与してください。

chmod 500 /home/adbmanager/install/adboptinstall
chmod 400 /home/adbmanager/install/hitachi_advanced_database_s3option-$VER.tar.gz

$VERは，修正版HADBオプションのバージョンとリリース番号です。

修正版HADBオプションをインストールする

adboptinstallコマンドを実行して，AWS用の修正版HADBオプションをインストールしてください。

/home/adbmanager/install/adboptinstall s3option

下線部分には，手順2.で作成したインストールデータを格納するディレクトリを指定します。

メモ

KFAA91581-Eメッセージが出力されて，adboptinstallコマンドがエラーになった場合は，「8.2.4　HADBオプションのインストール手順」の「(3)　インストールの操作中にKFAA91581-Eメッセージが出力された場合」を参照してください。

adboptinstallコマンドを実行した際にKFAA91558-Wメッセージ（警告メッセージ）が出力された場合は，「8.2.4　HADBオプションのインストール手順」の「(4)　インストールの操作中にKFAA91558-Wメッセージが出力された場合」を参照してください。

修正版HADBオプションが正常にインストールされたことを確認する（その1）

次のファイルが格納されていることを確認してください。

$ADBDIR/lib/libadbcldstge-aws.so

$ADBDIR/lib/libaws-cpp-sdk-s3-crt.so

$ADBDIR/lib/libaws-cpp-sdk-core.so

下線部分は，サーバディレクトリのパス名です。

適用OSがRHEL 9以降の場合，libadbcldstge-aws.soおよびlibaws-cpp-sdk-s3-crt.soが格納されていることを確認してください。

適用OSがRHEL 8の場合，3つのファイルが格納されていることを確認してください。

修正版HADBオプションが正常にインストールされたことを確認する（その2）

サーバディレクトリ直下にadboptinst_s3option.logファイルが格納されていることを確認してください。

adboptinst_s3option.logファイルを開き，内容を確認してください。修正版HADBオプションが正常にインストールされている場合は，次の情報が出力されています。

P-aaaa-bbbb Hitachi Advanced Database 06-00-/B (20250722153540)

P-aaaa-bbbbには，HADBサーバのPP形名情報が出力されます。

1つ目の下線部分には，HADBサーバのバージョン情報が出力されます。

2つ目の下線部分には，修正版HADBオプションをインストールした日付と時刻（上記の例では2025年7月22日15時35分40秒）が出力されます。

メモ

adboptinst_s3option.logファイルがすでにある状態のときにadboptinstallコマンドを実行すると，adboptinst_s3option.logファイルの内容が更新されます。また，adboptinstallコマンドを複数回実行した場合，最後に実行した日付と時刻が記載されます。

adboptinstallコマンドのリターンコード（KFAA91552-Iメッセージに出力されるリターンコード）が0または4以外の場合，adboptinst_s3option.logファイルの内容は更新されません。

HADBサーバを正常開始する

adbstartコマンドを実行して，HADBサーバを正常開始してください。

adbstart

HADBサーバが正常開始すると，修正版HADBオプションの入れ替えが完了します。

(2)　修正版HADBオプションに入れ替える手順（Azure環境の場合）

Azure環境で修正版HADBオプションに入れ替える手順について説明します。

手順

HADB管理者のOSアカウントでOSにログインする

今まで使用していたHADB管理者のOSアカウントで，サーバマシンのOSにログインしてください。

重要

HADB管理者のOSアカウントを変更しないでください。HADB管理者のOSアカウントを変更した場合，修正版HADBオプションとの入れ替えが正しくできないおそれがあります。

インストールデータを格納するディレクトリを作成する

修正版HADBオプションのインストールデータを格納するディレクトリを作成します。

mkdir /home/adbmanager/install

上記の例では，インストールデータを格納するディレクトリとして/home/adbmanager/installを作成しています。

インストールデータを格納するディレクトリに書き込み権限を付与する

インストールデータを格納するディレクトリ（この例では/home/adbmanager/install）に対して，HADB管理者が書き込みできるように書き込み権限を付与してください。

chmod 755 /home/adbmanager/install

CD-ROMファイルシステムをマウントする

修正版HADBオプションのインストールデータが格納されているCD-ROMファイルシステムを自動マウントしてください。

CD-ROMファイルシステムが自動マウントされていない場合，次のコマンドを実行してCD-ROMファイルシステムをマウントしてください。

mount /dev/cdrom /media

下線部分は，CD-ROMファイルシステムのマウントディレクトリ名です。環境によって異なります。

重要

CD-ROMのディレクトリ名やファイル名は，ご使用の環境によっては，ここの説明内容と表示が異なることがあります。OSのlsコマンドを実行して，表示されたディレクトリ名をそのまま入力してください。

インストールデータをコピーする

マウントしたCD-ROMファイルシステムに格納されている次のファイルを，手順2.で作成したインストールデータを格納するディレクトリにコピーしてください。

tar.gz形式のファイル

adboptinstallコマンドの実行形式ファイル

cp /media/hitachi_advanced_database_azoption-$VER.tar.gz /home/adbmanager/install    ...a
cp /media/adboptinstall /home/adbmanager/install                                     ...b

［説明］

tar.gz形式のファイル（Azure用の修正版HADBオプションのプログラムの圧縮ファイル）をコピーします。

adboptinstallコマンドの実行形式ファイル（修正版HADBオプションのインストールコマンド）をコピーします。

上記の例では，すべてのファイルを/home/adbmanager/installディレクトリ下にコピーしています。

下線部分は，CD-ROMファイルシステムのマウントディレクトリ名です。環境によって異なります。

$VERは，修正版HADBオプションのバージョンとリリース番号です。

（例）05-09-/Aの場合 → $VERは「0509a-0」

重要

上記の2つのファイルは，必ず同じディレクトリにコピーしてください。異なるディレクトリにコピーすると，修正版HADBオプションとの入れ替えが実行できません。

コピーしたファイルが破損していないことを確認する

手順5.でコピーしたファイルが破損していないことを確認します。次のコマンドを実行してください。

cd /home/adbmanager/install
sha256sum -c /media/adbhashfile_azoption_sha256.txt

下線部分は，CD-ROMファイルシステムのマウントディレクトリ名です。環境によって異なります。

ファイルが破損しているおそれがある（ファイルのハッシュ値が異なる）場合は，エラーを示すメッセージが出力されます。この場合，手順5.から作業をし直してください。

出力されるメッセージの詳細については，OSのマニュアルを参照してください。

権限を付与する

HADB管理者がadboptinstallコマンド（修正版HADBオプションのインストールコマンド）を実行できるように，adboptinstallコマンドに対する読み取り権限と実行権限を付与してください。

また，tar.gz形式のファイルに対する読み取り権限も付与してください。

chmod 500 /home/adbmanager/install/adboptinstall
chmod 400 /home/adbmanager/install/hitachi_advanced_database_azoption-$VER.tar.gz

$VERは，修正版HADBオプションのバージョンとリリース番号です。

修正版HADBオプションをインストールする

adboptinstallコマンドを実行して，Azure用の修正版HADBオプションをインストールしてください。

/home/adbmanager/install/adboptinstall azoption

下線部分には，手順2.で作成したインストールデータを格納するディレクトリを指定します。

メモ

KFAA91581-Eメッセージが出力されて，adboptinstallコマンドがエラーになった場合は，「8.2.4　HADBオプションのインストール手順」の「(3)　インストールの操作中にKFAA91581-Eメッセージが出力された場合」を参照してください。

adboptinstallコマンドを実行した際にKFAA91558-Wメッセージ（警告メッセージ）が出力された場合は，「8.2.4　HADBオプションのインストール手順」の「(4)　インストールの操作中にKFAA91558-Wメッセージが出力された場合」を参照してください。

修正版HADBオプションが正常にインストールされたことを確認する（その1）

次のファイルが格納されていることを確認してください。

$ADBDIR/lib/libadbcldstge-azure.so

$ADBDIR/lib/libazure-storage-blobs.so.12.14.0

$ADBDIR/lib/libazure-storage-common.so.12.11.0-beta.1

$ADBDIR/lib/lib64/libazure-identity.so.1.13.0-beta.2

$ADBDIR/lib/lib64/libazure-core.so.1.17.0-beta.1

下線部分は，サーバディレクトリのパス名です。

修正版HADBオプションが正常にインストールされたことを確認する（その2）

サーバディレクトリ直下にadboptinst_azoption.logファイルが格納されていることを確認してください。

adboptinst_azoption.logファイルを開き，内容を確認してください。修正版HADBオプションが正常にインストールされている場合は，次の情報が出力されています。

P-aaaa-bbbb Hitachi Advanced Database 06-00-/B (20250722153540)

P-aaaa-bbbbには，HADBサーバのPP形名情報が出力されます。

1つ目の下線部分には，HADBサーバのバージョン情報が出力されます。

2つ目の下線部分には，修正版HADBオプションをインストールした日付と時刻（上記の例では2025年7月22日15時35分40秒）が出力されます。

メモ

adboptinst_azoption.logファイルがすでにある状態のときにadboptinstallコマンドを実行すると，adboptinst_azoption.logファイルの内容が更新されます。また，adboptinstallコマンドを複数回実行した場合，最後に実行した日付と時刻が記載されます。

adboptinstallコマンドのリターンコード（KFAA91552-Iメッセージに出力されるリターンコード）が0または4以外の場合，adboptinst_azoption.logファイルの内容は更新されません。

HADBサーバを正常開始する

adbstartコマンドを実行して，HADBサーバを正常開始してください。

adbstart

HADBサーバが正常開始すると，修正版HADBオプションの入れ替えが完了します。

8.9　一時的にHADBサーバのバージョンアップとバージョンダウンを行う方法（動作確認テスト用）

ここでは，アプリケーションなどの動作確認テストのために，一時的にHADBサーバをバージョンアップし，動作確認テスト完了後に元のバージョンに戻す方法について説明します。

動作確認テスト時にデータベースを更新する※かどうかによって，作業手順が異なります。

これ以降の「8.9.1　バージョンアップ前に実施すること（動作確認テスト用）」～「8.9.5　バージョンダウン後に実施すること（動作確認テスト用）」では，動作確認テストにデータベースの更新を含まない場合の手順について説明しています。動作確認テストにデータベースの更新を含まない場合は，各手順に従って，HADBサーバのバージョンアップ，および旧バージョンへのバージョンダウンを実施してください。

動作確認テストにデータベースの更新を含む場合は，次に示す手順に従ってください。

■動作確認テストにデータベースの更新を含む場合

次に示す手順で，HADBサーバのバージョンアップ，および旧バージョンへのバージョンダウンを実施してください。

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

次の各手順に従ってください。なお，データベースのバックアップを取得する際には，必ずフルバックアップを取得してください。

「8.6.1　バージョンアップ前に実施すること」

「8.6.2　バージョンアップする」

「8.6.3　バージョンアップ後に実施すること」

動作確認テストを実施する

HADBサーバを旧バージョンに戻す

「8.7.1　旧バージョンのデータベースのバックアップを使用する場合」の手順に従ってください。

注※

次に示すSQL文またはコマンドを実行すると，データベースが更新されます。

更新系SQL

定義系SQL

adbimportコマンド

adbidxrebuildコマンド

adbgetcstコマンド

adbmodareaコマンド

adbmergechunkコマンド

adbchgchunkcommentコマンド

adbchgchunkstatusコマンド

adbreorgsystemdataコマンド

adbarchivechunkコマンド

adbunarchivechunkコマンド

adbsyndictコマンド

また，更新行のカラム化機能を有効にしている場合も，データベースが更新されます。更新行のカラム化機能については，「11.21　更新行のカラム化機能の運用（カラムストア表の検索性能の維持）」を参照してください。

8.9.1　バージョンアップ前に実施すること（動作確認テスト用）

「8.6.1　バージョンアップ前に実施すること」の手順に従ってください。

ただし，データベースのバックアップでは，システムデータだけのバックアップを取得してください。

8.9.2　バージョンアップする（動作確認テスト用）

「8.6.2　バージョンアップする」の手順に従って，HADBサーバをバージョンアップしてください。ただし，「8.6.2　バージョンアップする」にある手順データベースをバージョンアップするについては，次に示す手順に読み替えてください。

データベースをバージョンアップする手順（動作確認テスト用）

次に示すHADBのコマンドを実行して，HADBサーバを開始してください。バージョンアップ処理が開始されます。

adbstart --quiescence

adbstartコマンドの実行後，データベースをバージョンアップしてよいかを確認するKFAA91107-Qメッセージが出力されます。y（またはY）を入力して，データベースをバージョンアップしてください。

adbstartコマンドが正常終了すれば，HADBサーバのバージョンアップは完了です。

［マルチノード機能］

マルチノード機能を使用している場合は，「18.5.1　マルチノード構成のHADBサーバの開始方法」を参照して，マルチノード構成のHADBサーバを開始してください。ただし，プライマリノードでは次に示すHADBのコマンドを実行してください。

adbstart --quiescence

このとき，プライマリノードのHADBサーバを開始すると，データベースをバージョンアップしてよいかを確認するKFAA91107-Qメッセージが出力されます。y（またはY）を入力して，データベースをバージョンアップしてください。

全ノードのHADBサーバが正常に開始すれば，HADBサーバのバージョンアップは完了です。

8.9.3　バージョンアップ後に実施すること（動作確認テスト用）

「8.6.3　バージョンアップ後に実施すること」の「(2)　HADBクライアントをバージョンアップする」の手順に従って，HADBクライアントをバージョンアップしてください。

そのあとで，動作確認テストを実施してください。

8.9.4　バージョンダウンする（動作確認テスト用）

動作確認テスト終了後，「8.7.1　旧バージョンのデータベースのバックアップを使用する場合」の「(2)　バージョンダウンする」の手順に従って，HADBサーバをバージョンダウンしてください。

ただし，バックアップからデータベースを回復する際は，システムデータだけのバックアップを使用してください。

8.9.5　バージョンダウン後に実施すること（動作確認テスト用）

「8.7.1　旧バージョンのデータベースのバックアップを使用する場合」の「(3)　バージョンダウン後に実施すること」の手順に従って，HADBクライアントをバージョンダウンしてください。

8.10　サーバマシンのOSの時刻変更

ここでは，HADBサーバがインストールされているサーバマシンのOSの時刻を変更する場合の手順について説明します。

サーバマシンのOSの時刻を変更する場合，必ず「8.10.1　注意事項（OSの時刻変更）」を読んだあとで，次のどちらかに従ってOSの時刻を変更してください。

「8.10.2　サーバマシンのOSの時刻を進める方法」

「8.10.3　サーバマシンのOSの時刻を戻す方法」

8.10.1　注意事項（OSの時刻変更）

サーバマシンのOSの時刻を変更する場合の注意事項を，次に示します。

サーバマシンのOSの時刻を変更する場合，必ずHADBサーバが正常終了しているときに実施してください。HADBサーバの稼働中に，サーバマシンのOSの時刻を変更してしまうと，HADBサーバおよびHADBクライアントが予期しない動作をするおそれがあります。

サーバマシンのOSの時刻を変更した場合，次に示す時刻表示などは，変更後のOSの時刻になります。そのため，時刻を意識するAPがある場合は，影響を受けるおそれがあります。

SQL文で取得する時刻

コマンドを実行した時刻

ディクショナリ表に格納されるタイムスタンプ

システム表に格納されるタイムスタンプ

NTPプログラムを使用してOSの時刻を補正する場合は，遅延調整方式（Slew方式）を選択してください（時刻の戻り，または大幅な時刻変更が発生しないようにしてください）。

8.10.2　サーバマシンのOSの時刻を進める方法

「8.10.1　注意事項（OSの時刻変更）」を読んだあとで，次に示す手順に従って，HADBサーバがインストールされているサーバマシンのOSの時刻を進めてください。

手順

HADBサーバを正常終了する

adbstopコマンドを実行して，HADBサーバを正常終了してください。adbstopコマンドについては，「10.2.2　HADBサーバの終了方法」を参照してください。

サーバマシンのOSの時刻を進める

HADBサーバを正常終了したら，HADBサーバがインストールされているサーバマシンのOSの時刻を進めてください。

HADBサーバを開始する

サーバマシンのOSの時刻を進めたら，adbstartコマンドを実行して，HADBサーバを開始してください。adbstartコマンドについては，「10.2.1　HADBサーバの開始方法」を参照してください。

これで，サーバマシンのOSの時刻を進められます。

8.10.3　サーバマシンのOSの時刻を戻す方法

「8.10.1　注意事項（OSの時刻変更）」を読んだあとで，次に示すどちらかの手順に従って，HADBサーバがインストールされているサーバマシンのOSの時刻を戻してください。

OSの時刻を数秒から数分ほど戻す場合（戻した時間分，待つことができる場合）

HADBサーバをすぐに開始したい場合（戻した時間分，待つことができない場合）

(1)　OSの時刻を数秒から数分ほど戻す場合（戻した時間分，待つことができる場合）

手順

HADBサーバを正常終了する

adbstopコマンドを実行して，HADBサーバを正常終了してください。adbstopコマンドについては，「10.2.2　HADBサーバの終了方法」を参照してください。

サーバマシンのOSの時刻を戻す

HADBサーバがインストールされているサーバマシンのOSの時刻を戻してください。

戻した時間以上待ってからHADBサーバを開始する

サーバマシンのOSの時刻を戻した時間以上待ったあとで，adbstartコマンドを実行して，HADBサーバを開始してください。例えば，OSの時刻を10分戻した場合は，10分以上が経過したあとで，HADBサーバを開始します。

adbstartコマンドについては，「10.2.1　HADBサーバの開始方法」を参照してください。

これで，サーバマシンのOSの時刻を戻せます。

サーバマシンのOSの時刻を戻す前と，戻したあとの時間差が大きく，待つことができない場合は，「(2)　HADBサーバをすぐに開始したい場合（戻した時間分，待つことができない場合）」を参照してください。

(2)　HADBサーバをすぐに開始したい場合（戻した時間分，待つことができない場合）

手順

HADBサーバを正常終了する

adbstopコマンドを実行して，HADBサーバを正常終了してください。adbstopコマンドについては，「10.2.2　HADBサーバの終了方法」を参照してください。

サーバディレクトリのspoolディレクトリ下のバックアップを取得する

HADBサーバを正常終了したら，サーバディレクトリのspoolディレクトリ下（$ADBDIR/spoolディレクトリ下）に格納されているすべてのディレクトリおよびファイルについて，次に示すどちらかの方法でバックアップを取得してください。

OSのcpコマンドを実行する

adbinfogetコマンドを実行する

adbinfogetコマンドについては，マニュアルHADB　コマンドリファレンスのadbinfoget（トラブルシュート情報の取得）を参照してください。

統計ログファイルの出力先ディレクトリ下のバックアップを取得する

サーバ定義adb_sta_log_pathオペランドを省略した場合は，この手順を無視して，次の手順に進んでください。

サーバ定義adb_sta_log_pathオペランドを指定した場合は，統計ログファイルのバックアップを取得する必要があります。adb_sta_log_pathオペランドに指定した統計ログファイルの出力先ディレクトリ下に格納されているすべてのファイルを，次に示すどちらかの方法でバックアップを取得してください。

OSのcpコマンドを実行する

adbinfogetコマンドを実行する

adbinfogetコマンドについては，マニュアルHADB　コマンドリファレンスのadbinfoget（トラブルシュート情報の取得）を参照してください。

サーバ定義adb_sta_log_pathオペランドについては，「7.2.8　統計情報に関するオペランド（set形式）」のadb_sta_log_pathオペランドを参照してください。

HADBサーバが出力した情報を削除する

バックアップを取得したら，adbinfosweepコマンドを実行して，HADBサーバが出力した情報を削除してください。adbinfosweepコマンドについては，マニュアルHADB　コマンドリファレンスのadbinfosweep（トラブルシュート情報の削除）を参照してください。

重要

adbinfosweepコマンドを実行しない場合，サーバマシンのOSの時刻を戻したあとでHADBサーバを開始すると，HADBサーバおよびHADBクライアントが予期しない動作をするおそれがあります。また，adbinfosweepコマンドを実行すると，HADBサーバが出力した情報が削除されるため，事前にバックアップを取得してください。

サーバディレクトリのspoolディレクトリを削除する

OSのコマンドで，サーバディレクトリのspoolディレクトリ（$ADBDIR/spoolディレクトリ）を削除してください。

統計ログファイルを削除する

サーバ定義adb_sta_log_pathオペランドを省略した場合は，この手順を無視して，次の手順に進んでください。

サーバ定義adb_sta_log_pathオペランドを指定した場合は，統計ログファイルを削除する必要があります。adb_sta_log_pathオペランドに指定した統計ログファイルの出力先ディレクトリ下に格納されているすべてのファイルを削除してください。統計ログファイルを削除する方法については，「10.10.5　統計ログファイルの運用」の「(4)　統計ログファイルを削除する場合」を参照してください。

空のspoolディレクトリを作成する

OSのコマンドで，サーバティレクトリ下に，空のspoolディレクトリを作成してください。

サーバマシンのOSの時刻を戻す

HADBサーバが出力した情報を削除したら，HADBサーバがインストールされているサーバマシンのOSの時刻を戻してください。

HADBサーバを開始する

サーバマシンのOSの時刻を戻したら，adbstartコマンドを実行して，HADBサーバを開始してください。adbstartコマンドについては，「10.2.1　HADBサーバの開始方法」を参照してください。

これで，サーバマシンのOSの時刻を戻せます。

8.11　サーバマシンのOSのホスト名・IPアドレスの変更

ここでは，HADBサーバがインストールされているサーバマシンのOSのホスト名またはIPアドレスを変更する場合の手順について説明します。

サーバマシンのOSのホスト名またはIPアドレスを変更する場合，HADBサーバとHADBクライアントのどちらも設定を変更する必要があります。

■HADBサーバで実施する作業

サーバマシンのOSのホスト名またはIPアドレスを変更する場合に，HADBサーバで実施する作業を次に示します。

HADBサーバを正常終了する

adbstopコマンドを実行して，HADBサーバを正常終了してください。adbstopコマンドについては，「10.2.2　HADBサーバの終了方法」を参照してください。

サーバマシンのOSのホスト名またはIPアドレスを変更する

HADBサーバを正常終了したら，HADBサーバがインストールされているサーバマシンのOSのホスト名またはIPアドレスを変更してください。

HADBサーバを開始する

サーバマシンのOSのホスト名またはIPアドレスを変更したら，adbstartコマンドを実行して，HADBサーバを開始してください。adbstartコマンドについては，「10.2.1　HADBサーバの開始方法」を参照してください。

メモ

次の条件をすべて満たしている場合は，HADBサーバを稼働した状態で，サーバマシンのOSのホスト名またはIPアドレスを変更できます。

マルチノード機能を使用していない

監査証跡機能を使用していない

コールドスタンバイ構成の場合は，次の2つの条件を満たしている

HAモニタの監視パスとして使用するLANのホスト名を変更しない

HADBクライアントとHADBサーバ間通信で使用するエイリアスIPアドレスを変更しない

ただし，HADBサーバを稼働した状態でホスト名またはIPアドレスを変更した場合，ホスト名またはIPアドレスの変更直後から，対象のHADBサーバに接続中のHADBクライアント（AP）が通信エラーとなります。

■HADBクライアントで実施する作業

サーバマシンのOSのホスト名またはIPアドレスを変更する場合に，HADBクライアントで実施する作業を次に示します。

APを停止する

HADBサーバに接続するAPをすべて停止してください。

クライアント定義に指定しているHADBサーバのホスト名またはIPアドレスを変更する

APを停止したら，クライアント定義adb_clt_rpc_srv_hostオペランドに指定しているHADBサーバのホスト名またはIPアドレスを変更してください。

クライアント定義adb_clt_rpc_srv_hostオペランドについては，マニュアルHADB　AP開発ガイドのクライアント定義の設計のクライアント定義のオペランドの内容を参照してください。

JDBCドライバを使用している場合

クライアント定義adb_clt_rpc_srv_hostオペランドに対応するプロパティで指定しているHADBサーバのホスト名またはIPアドレスを変更してください。JDBCドライバで使用するプロパティは，システムプロパティ，ユーザプロパティ，または接続用のURLのプロパティがあります。詳細については，マニュアルHADB　AP開発ガイドのJDBCドライバの環境設定を参照してください。

ODBCドライバまたはCLI関数を使用している場合

クライアント定義adb_clt_rpc_srv_hostオペランドに指定しているHADBサーバのホスト名またはIPアドレスを変更してください。詳細については，マニュアルHADB　AP開発ガイドのHADBクライアントの環境設定（ODBCドライバおよびCLI関数を使用する場合）を参照してください。

APを開始する

クライアント定義に指定しているHADBサーバのホスト名またはIPアドレスを変更したら，HADBサーバに接続するAPを開始してください。

重要

マルチノード機能を使用している場合は，「18.22　サーバマシンのOSのホスト名・IPアドレスの変更（マルチノード機能使用時）」を参照してください。

コールドスタンバイ構成の場合は，「19.15　サーバマシンのOSのホスト名・IPアドレスの変更（コールドスタンバイ構成の場合）」を参照してください。

8.12　アンインストール

ここでは，HADBサーバのアンインストール手順，HADBサーバのアンインストール後に実施する作業，およびHADBオプションのアンインストール手順について説明します。

マルチノード機能を使用している場合は，ここで説明しているアンインストール作業を全ノードで実施してください。

8.12.1　HADBサーバのアンインストール手順

HADBサーバのアンインストールは，次で説明する手順に従って実行してください。なお，サーバディレクトリ下およびDBディレクトリ下に必要なファイルがある場合は，事前にバックアップを取得してください。

重要

HADBサーバをアンインストールする場合，コマンドおよびAPは事前に停止しておいてください。これらを停止しないと，アンインストールに失敗するおそれがあります。

HADBオプションをインストール済みのときにHADBサーバをアンインストールすると，HADBオプションも自動的にアンインストールされます。

(1)　サーバディレクトリの削除

HADB管理者で，次に示すOSのコマンドを実行して，サーバディレクトリを削除してください。HADBサーバをアンインストールできます。

rm -rf サーバディレクトリのパス名

サーバディレクトリのパス名を，/HADB/serverとした場合の実行例を次に示します。

■コマンドの実行例

rm -rf /HADB/server

(2)　インストールデータを格納するディレクトリの削除

HADB管理者で，次に示すOSのコマンドを実行して，HADBサーバのインストールで使用したインストールデータを格納するディレクトリを削除してください。

rm -rf インストールデータを格納するディレクトリのパス名

インストールデータを格納するディレクトリのパス名を，/home/adbmanager/installとした場合の実行例を次に示します。

■コマンドの実行例

rm -rf /home/adbmanager/install

(3)　DBディレクトリの削除

adbinitコマンドを実行したOSユーザで，次に示すOSのコマンドを実行して，DBディレクトリを削除してください。

rm -rf DBディレクトリのパス名

DBディレクトリのパス名を，/HADB/dbとした場合の実行例を次に示します。

■コマンドの実行例

rm -rf /HADB/db

8.12.2　HADBサーバのアンインストール後に実施する作業

HADBサーバのアンインストールが完了したら，次の作業を実施してください。

不要な環境変数の削除

不要なディレクトリとファイルの削除

ITRUの採取パターン定義ファイルの削除

自動起動設定のユニットファイルの削除

サーバ定義adb_sta_log_pathオペランドで指定した統計ログファイルの出力先ディレクトリの削除

サーバディレクトリを格納するディレクトリの削除

(1)　不要な環境変数の削除

HADBサーバのインストール作業時に，「8.4　環境変数の設定」を参照して設定した環境変数のうち，不要な環境変数をHADB管理者で削除してください。

(2)　不要なディレクトリとファイルの削除

次に示すディレクトリとファイルをスーパユーザで削除してください。

障害情報（コアファイル）の出力先ディレクトリ

通信情報ファイルを格納するディレクトリとファイル

/dev/HADB/pth

/etc/tmpfiles.d/dev-HADB-pth.conf

各ディレクトリ下にファイルが残っている場合，ファイルもあわせて削除してください。

(3)　ITRUの採取パターン定義ファイルの削除

HADBサーバをアンインストールしたサーバマシンにITRUがインストールされている場合は，ITRUの採取パターン定義ファイル（!8A9_HADB）を削除する必要があります。

次に示すファイルを，スーパユーザで削除してください。

■削除が必要なITRUの採取パターン定義ファイル

/etc/opt/hitachi/systoru/pattern/!8A9_HADB

(4)　自動起動設定のユニットファイルの削除

HADBサーバのインストール後に，「8.2.3　HADBサーバのインストール後に実施する作業」の「(4)　HADBサーバの自動起動の設定」の手順に従い，OSの起動時や再起動時にHADBサーバを自動的に開始するように設定した場合は，サービスユニット用のユニットファイルを次の手順で削除してください。

手順

HADBサーバのサービスユニットを無効化する

次に示すコマンドをスーパユーザで実行してください。

systemctl disable hadb.service

サービスユニット用のユニットファイルを削除する

次に示すファイルをスーパユーザで削除してください。

/etc/systemd/system/hadb.service

(5)　サーバ定義adb_sta_log_pathオペランドで指定した統計ログファイルの出力先ディレクトリの削除

アンインストールしたHADBサーバで，サーバ定義adb_sta_log_pathオペランドを指定していた場合は，統計ログファイルの出力先ディレクトリを削除してください。この操作は，HADB管理者で実行してください。

統計ログファイルの出力先ディレクトリ下にファイルがある場合は，ファイルも一緒に削除してください。

(6)　サーバディレクトリを格納するディレクトリの削除

サーバディレクトリを格納するディレクトリ（/HADB）を，スーパユーザで削除してください。次に示すOSのコマンドを入力して，サーバディレクトリを格納するディレクトリ（/HADB）を削除してください。

■コマンドの実行例

rm -rf /HADB

8.12.3　HADBオプションのアンインストール手順

ここでは，HADBオプションのアンインストール手順について説明します。

メモ

HADBサーバのアンインストールを実施すると，HADBオプションも自動的にアンインストールされます。HADBオプションのアンインストール前に，HADBサーバをアンインストールしている場合は，HADBオプションのアンインストールは不要です。

手順

HADB管理者のOSアカウントでOSにログインする

HADBサーバを終了する

HADBサーバの終了方法については，「10.2.2　HADBサーバの終了方法」を参照してください。

HADBサーバの稼働中にHADBオプションのアンインストールを実行した場合，ファイルの削除に失敗するおそれがあります。

HADBオプションをアンインストールする

adboptinstallコマンドを実行して，HADBオプションをアンインストールしてください。

AWS用のHADBオプションをアンインストールする場合

/home/adbmanager/install/adboptinstall s3option -d

Azure用のHADBオプションをアンインストールする場合

/home/adbmanager/install/adboptinstall azoption -d

下線部分には，インストールデータを格納したディレクトリを指定します。

■アンインストール後の作業

AWS用のHADBオプションをアンインストールした場合

次のファイルをHADB管理者で削除してください。

$ADBDIR/adboptinst_s3option.log

下線部分は，サーバディレクトリのパス名です。

Azure用のHADBオプションをアンインストールした場合

次のファイルをHADB管理者で削除してください。

$ADBDIR/adboptinst_azoption.log

下線部分は，サーバディレクトリのパス名です。

9　データベースの作成

この章では，データベースの作成手順について説明します。

体験環境を構築する手順については，「3.　体験環境構築ナビ」で説明しています。こちらもあわせて読むことを推奨します。

9.1　データベースの作成手順

環境変数の設定およびサーバ定義の作成が完了したあとに，次の図に示す手順でデータベースを作成します。

図9‒1　データベースの作成手順

上記の各手順を次節以降で順次説明します。

9.2　データベースを初期設定する（データ用DBエリアを作成する）

adbinitコマンドでデータベースの初期設定を実行し，データ用DBエリアを作成します。

例題

データベースの初期設定を実行して，データ用DBエリア（DBAREA01，DBAREA02）を作成します。

手順

HADB管理者のOSアカウントでOSにログインする

HADB管理者がadbinitコマンドを実行するため，HADB管理者のOSアカウントでOSにログインする必要があります。

ログイン済みの場合は，この操作は不要です。

初期設定オプションファイルを作成する

set adb_init_wrk_page_size = 32
set adb_init_wrk_blk_path = /dev/mapper/VolG00
adbinitdbarea -n DBAREA01 ¥
    -p 4 ¥
    -v /dev/mapper/VolG01,/dev/mapper/VolG02 ¥
    -q ¥
    -i 500M,2
adbinitdbarea -n DBAREA02 ¥
    -p 4 ¥
    -v /dev/mapper/VolG03,/dev/mapper/VolG04,/dev/mapper/VolG05 ¥
    -q ¥
    -i 1G,3

初期設定オプションを指定した，初期設定オプションファイルを作成します。ここで作成した初期設定オプションファイルは，adbinitコマンドの入力情報になります。

この例では，作成した初期設定オプションファイルを/HADB/server/conf/adbinit.optに保存します。

初期設定オプションについては，マニュアルHADB　コマンドリファレンスのadbinit（データベースの初期設定）のadbinitコマンドの指定形式の初期設定オプションの形式を参照してください。

adbinitコマンドを実行してデータベースを初期設定し，データ用DBエリアを作成する

adbinit -u ADBUSER01 -p '#HelloHADB_01'
        /HADB/server/conf/adbinit.opt
        /HADB/db

-u

作成するHADBユーザの認可識別子を指定します。

-p

作成するHADBユーザのパスワードを指定します。

/HADB/server/conf/adbinit.opt

手順2.で作成した初期設定オプションファイルの絶対パス名を指定します。

/HADB/db

DBディレクトリ名を指定します。

認可識別子およびパスワードの指定規則については，次を参照してください。

「9.4.2　認可識別子の指定規則」

「9.4.3　パスワードの指定規則」

メモ

-uオプションに指定した認可識別子のHADBユーザが，1人目のHADBユーザとして作成され，HADBサーバに登録されます。このHADBユーザはDBA権限とCONNECT権限を持っています。

9.3　HADBサーバを開始する

データベースの初期設定が完了したあとに，adbstartコマンドでHADBサーバを開始します。

手順

adbstartコマンドを実行する

adbstart

HADBサーバが正常に開始したことを確認する

次のメッセージのリターンコードが0であることを確認してください。

KFAA90000-I adbstart processing started.
KFAA91105-I The HADB system was started normally. (HADB server operation mode = "NORMAL")
KFAA90001-I adbstart processing ended. (return code = 0)

9.4　実表を定義するHADBユーザを作成する

実表を定義するHADBユーザを作成します。

9.4.1　HADBユーザを作成する

定義系SQLでHADBユーザを作成し，CONNECT権限およびスキーマ定義権限を付与します。

例題

実表を定義するHADBユーザADBUSER02を作成し，ADBUSER02にCONNECT権限およびスキーマ定義権限を付与します。

手順

adbsqlコマンドを実行する

adbsql
  USER-ID ?
ADBUSER01      ←ADBUSER01でHADBサーバに接続します。
  PASSWORD ?
XXXXXXXX       ←入力したパスワードは表示されません。

adbinitコマンドの実行時（「9.2　データベースを初期設定する（データ用DBエリアを作成する）」）に作成したHADBユーザの認可識別子とパスワードを指定します。

CREATE USER文を実行してHADBユーザを作成する

CREATE USER "ADBUSER02" IDENTIFIED BY '#HelloHADB_02'

上記のSQL文を実行すると，認可識別子ADBUSER02，パスワード#HelloHADB_02のHADBユーザが作成されます。

認可識別子およびパスワードの指定規則については，次を参照してください。

「9.4.2　認可識別子の指定規則」

「9.4.3　パスワードの指定規則」

GRANT文を実行して，CONNECT権限とスキーマ定義権限を付与する

GRANT CONNECT,SCHEMA TO "ADBUSER02"

上記のSQL文を実行すると，認可識別子ADBUSER02に，CONNECT権限とスキーマ定義権限が付与されます。

以上で，実表を定義できるHADBユーザADBUSER02の作成が完了しました。

メモ

adbsqlコマンドでSQL文を実行する場合は，末尾に必ず半角のセミコロン（；）を入力してください。

9.4.2　認可識別子の指定規則

認可識別子の指定規則を次に示します。

認可識別子に使用できる文字は，半角の英大文字，半角の英小文字，半角の数字，¥（バックスラッシュ），#，および@です。

認可識別子に英小文字を使用する場合は，認可識別子を二重引用符（"）で囲んで指定してください。

（例）CREATE USER "ADBuser02" …

二重引用符で囲まないと，英小文字は英大文字と見なされます。例えば，「-u ADBuser02」と指定した場合，「-u ADBUSER02」と指定したと見なされます。

認可識別子は名前として指定するため，二重引用符（"）で囲んで指定することを推奨します。

ALL，HADB，MASTER，およびPUBLICは認可識別子に指定できません。

認可識別子は100文字（100バイト）まで指定できます。

認可識別子の指定規則の詳細については，マニュアルHADB　SQLリファレンスの基本項目のSQLの記述規則の名前の指定を参照してください。

■コマンドの-uオプションに認可識別子を指定する場合の規則

コマンドの-uオプションに認可識別子を指定する場合，次の規則があります。

認可識別子に英小文字が含まれている場合

英小文字が含まれる認可識別子を指定する場合は，認可識別子を¥"（バックスラッシュと二重引用符）で囲むか，または二重引用符（"）で囲み，さらにアポストロフィ（'）で囲む必要があります。

（例）

-u ¥"ADBuser02¥"

-u '"ADBuser02"'

上記のように指定しないと，認可識別子の文字列はすべて英大文字として見なされます。例えば，「-u ADBuser02」と指定した場合，「-u ADBUSER02」と指定したと見なされます。

認可識別子に¥が含まれている場合

¥はシェルが別の意味で使用している特殊文字のため，認可識別子に¥が含まれている場合は，¥の前にエスケープ文字を指定してください。

（例）

・認可識別子にADBUSER¥01を指定する場合：-u ADBUSER¥¥01

・認可識別子にADBuser¥01を指定する場合：-u ¥"ADBuser¥¥01¥"

上記の例では，エスケープ文字として¥を指定しています。

9.4.3　パスワードの指定規則

パスワードの指定規則を次に示します。

パスワードに使用できる文字は，半角の英大文字，半角の英小文字，半角の数字，¥（バックスラッシュ），および次に示す半角の文字です。

@ ` ! " # $ % & ' ( ) * : + ; [ ] { } , = < > | - . ^ ~ / ? _

JDBCドライバを利用する場合は，パスワードに次に示す半角文字を使用しないことを推奨します。

&

ODBCドライバを利用する場合は，パスワードに次に示す半角文字を使用しないことを推奨します。

[ ] { } ( ) , ; ? * = ! @

パスワードは文字列定数の形式で指定します。そのため，パスワードをアポストロフィで囲む必要があります。

（例）パスワードにPassword01を指定する場合

IDENTIFIED BY 'Password01'

パスワードの文字列にアポストロフィがある場合，1個のアポストロフィを表すのに2個のアポストロフィを指定する必要があります。

（例）パスワードにPass'01を指定する場合

IDENTIFIED BY 'Pass''01'

パスワードに空文字は指定できません（次の指定はできません）。

（例）IDENTIFIED BY ''

パスワードは255文字（255バイト）まで指定できます。

パスワードの指定形式の詳細（文字列定数の指定形式の詳細）については，マニュアルHADB　SQLリファレンスの基本項目の定数の定数の記述形式を参照してください。

■コマンドの-pオプションにパスワードを指定する場合の規則

コマンドの-pオプションにパスワードを指定する場合，次の規則があります。

パスワードにシェルが別の意味で使用している特殊文字が含まれている場合

¥または|などはシェルが別の意味で使用している特殊文字のため，パスワードに特殊文字が含まれている場合は，特殊文字の前にエスケープ文字を指定してください。

（例）

・パスワードにPassword¥01を指定する場合：-p Password¥¥01

・パスワードにPassword|01を指定する場合：-p Password¥|01

上記の例では，エスケープ文字として¥を指定しています。

9.5　スキーマ，表，およびインデクスを定義する

定義系SQLで，スキーマ，表，およびインデクスを定義します。

例題

HADBユーザADBUSER02のスキーマを定義し，次の表およびインデクスを定義します。

店舗表（SHOPSLIST）

B-treeインデクス（SHOP_CODE_IDX）

テキストインデクス（ADDRESS_TIDX）

レンジインデクス（RGN_CODE_RIDX）

ADBUSER02は，「9.4.1　HADBユーザを作成する」で作成したHADBユーザの認可識別子です。

手順

adbsqlコマンドを実行する

adbsql
  USER-ID ?
ADBUSER02      ←ADBUSER02でHADBサーバに接続します。
  PASSWORD ?
XXXXXXXX       ←入力したパスワードは表示されません。

CREATE SCHEMA文を実行してスキーマを定義する

CREATE SCHEMA "ADBUSER02"

上記のSQL文を実行すると，ADBUSER02のスキーマが定義されます。

CREATE TABLE文を実行して店舗表（SHOPSLIST）を定義する

CREATE TABLE "SHOPSLIST"
      ("SHOP_CODE" CHAR(8) NOT NULL,
       "RGN_CODE" CHAR(6) NOT NULL,
       "SHOP_NAME" VARCHAR(20) NOT NULL,
       "TEL_NO" CHAR(10) NOT NULL,
       "ADDRESS" VARCHAR(300) NOT NULL BRANCH YES)
    IN "DBAREA01"
    PCTFREE=40
    CHUNK=100

CREATE INDEX文を実行して，B-treeインデクス（SHOP_CODE_IDX）を定義する

CREATE INDEX "SHOP_CODE_IDX"
      ON "SHOPSLIST" ("SHOP_CODE")
    IN "DBAREA01"
    PCTFREE = 50
    EMPTY

上記のSQL文を実行すると，SHOPSLISTの店舗コード列（SHOP_CODE）にB-treeインデクス（SHOP_CODE_IDX）が定義されます。

CREATE INDEX文を実行して，テキストインデクス（ADDRESS_TIDX）を定義する

CREATE INDEX "ADDRESS_TIDX"
      ON "SHOPSLIST" ("ADDRESS")
    IN "DBAREA01"
    PCTFREE = 50
    EMPTY
    INDEXTYPE TEXT

上記のSQL文を実行すると，SHOPSLISTの住所列（ADDRESS）にテキストインデクス（ADDRESS_TIDX）が定義されます。

CREATE INDEX文を実行して，レンジインデクス（RGN_CODE_RIDX）を定義する

CREATE INDEX "RGN_CODE_RIDX"
      ON "SHOPSLIST" ("RGN_CODE")
    IN "DBAREA01"
    EMPTY
    INDEXTYPE RANGE

上記のSQL文を実行すると，SHOPSLISTの店舗エリアコード列（RGN_CODE）にレンジインデクス（RGN_CODE_RIDX）が定義されます。

メモ

adbsqlコマンドでSQL文を実行する場合は，末尾に必ず半角のセミコロン（；）を入力してください。

9.6　実表にデータをインポートする

実表を定義したあとに，adbimportコマンドで実表にデータをインポートします。

例題

店舗表（SHOPSLIST）にデータをインポートします。

手順

HADB管理者のOSアカウントでOSにログインする

HADB管理者がadbimportコマンドを実行するため，HADB管理者のOSアカウントでOSにログインする必要があります。

ログイン済みの場合は，この操作は不要です。

入力データパスファイルを作成する

/home/adbmanager/imp_data/imp1.csv
/home/adbmanager/imp_data/imp2.csv

入力データファイルのパスを指定した，入力データパスファイルを作成します。ここで作成した入力データファイルは，adbimportコマンドの入力情報になります。

この例では，作成した入力データパスファイルを/home/adbmanager/imp_file/imp_data_path.txtに保存します。

インポートオプションファイルを作成する

set adb_import_errdata_file_name = "/home/adbmanager/imp_shopslist/errdata.csv"
set adb_import_errdata_num = 500
set adb_import_rthd_num = 2
set adb_import_sort_buff_size = 2
               :

インポートオプションを指定した，インポートオプションファイルを作成します。ここで作成したインポートオプションファイルは，adbimportコマンドの入力情報になります。

この例では，作成したインポートオプションファイルを/home/adbmanager/imp_file/imp_opt_file.txtに保存します。

インポートオプションについては，マニュアルHADB　コマンドリファレンスのadbimport（データのインポート）のadbimportコマンドの指定形式のインポートオプションの形式を参照してください。

adbimportコマンドを実行して，店舗表（SHOPSLIST）にデータをインポートする

adbimport -u ADBUSER02 -p '#HelloHADB_02' -k "'" -s , -g 10
          -w /home/adbmanager/tmp
          -z /home/adbmanager/imp_file/imp_opt_file.txt
          SHOPSLIST
          /home/adbmanager/imp_file/imp_data_path.txt

-u

adbimportコマンドを実行するHADBユーザの認可識別子を指定します。データインポートの対象表を所有しているHADBユーザの認可識別子を指定してください。

-p

adbimportコマンドを実行するHADBユーザのパスワードを指定します。

-k

入力データファイル中で使用している囲み文字を指定します。

-s

入力データファイル中で使用している区切り文字を指定します。

-g

データインポート処理の経過メッセージ（KFAA80205-I）の出力間隔を指定します。

-w

データインポート処理時に作成される作業用一時ファイルを格納するディレクトリを指定します。

-z

手順3.で作成したインポートオプションファイルの絶対パス名を指定します。

SHOPSLIST

データインポートの対象表を指定します。

/home/adbmanager/imp_file/imp_data_path.txt

手順2.で作成した入力データパスファイルの絶対パス名を指定します。

9.7　コスト情報を収集する

実表にデータをインポートしたあとに，adbgetcstコマンドで実表のコスト情報を収集します。

例題

店舗表（SHOPSLIST）のコスト情報を収集します。

手順

HADB管理者のOSアカウントでOSにログインする

HADB管理者がadbgetcstコマンドを実行するため，HADB管理者のOSアカウントでOSにログインする必要があります。

ログイン済みの場合は，この操作は不要です。

コスト情報収集オプションファイルを作成する

set adb_getcst_rthd_num = 10

コスト情報収集オプションを指定した，コスト情報収集オプションファイルを作成します。ここで作成したコスト情報収集オプションファイルは，adbgetcstコマンドの入力情報になります。

この例では，作成したコスト情報収集オプションファイルを/home/adbmanager/cost_file/cost_opt_file.txtに保存します。

コスト情報収集オプションについては，マニュアルHADB　コマンドリファレンスのadbgetcst（コスト情報の収集）のadbgetcstコマンドの指定形式のコスト情報収集オプションの形式を参照してください。

adbgetcstコマンドを実行してコスト情報を収集する

adbgetcst -u ADBUSER02 -p '#HelloHADB_02' -t SHOPSLIST
          -z /home/adbmanager/cost_file/cost_opt_file.txt

-u

adbgetcstコマンドを実行するHADBユーザの認可識別子を指定します。コスト情報を収集する実表を所有しているHADBユーザの認可識別子を指定してください。

-p

adbgetcstコマンドを実行するHADBユーザのパスワードを指定します。

-t

コスト情報を収集する実表の表名を指定します。

-z

手順2.で作成したコスト情報収集オプションファイルの絶対パス名を指定します。

メモ

コスト情報を収集するタイミングについては，「11.6　コスト情報の収集」を参照してください。

第5編　運用編

10　定期運用

この章では，HADBサーバで定期的に行う運用項目について説明します。

10.1　運用項目の一覧

HADBサーバの運用項目の一覧を次の表に示します。

表10‒1　HADBサーバの運用項目の一覧

項番

運用項目

参照先

1

定期運用

HADBサーバの開始

「10.2.1　HADBサーバの開始方法」

2

HADBサーバの終了

「10.2.2　HADBサーバの終了方法」

3

HADBサーバの稼働モードの変更・確認

「10.2.3　HADBサーバの稼働モード」

4

HADBサーバの自動再起動の設定

「10.2.4　HADBサーバの自動再起動の設定」

5

データベースのバックアップ

「10.3　データベースのバックアップ」

6

モニタリング

メッセージの確認

「10.4　メッセージの確認」

7

リソースの使用状況の監視

「10.5　リソースの使用状況の監視（監視対象メッセージの一覧）」

8

メモリの使用状況の確認

「10.6　メモリの使用状況の確認」

9

HADBサーバで実行中のスレッドの確認

「10.7　HADBサーバで実行中のスレッドの確認」

10

トランザクションの処理状況の確認

「10.8　トランザクションの処理状況の確認」

11

データベースの状態や使用量の確認

「10.9　データベースの状態や使用量の確認」

12

HADBサーバの稼働情報の確認

「10.10　統計解析の運用（HADBサーバの稼働情報の確認）」

13

SQL文の実行履歴情報（SQLトレース情報）の取得および確認

「10.11　SQLトレース機能の運用」

14

システムログファイルの運用

「10.12　システムログファイルの運用」

15

非定期運用

実表の運用

「11.1　実表の運用」

16

ビュー表の定義，検索，削除

「11.2　ビュー表の運用」

17

外部表の運用

「11.3　外部表の運用」

18

インデクスの運用

「11.4　インデクスの運用」

19

レギュラーマルチチャンク表およびアーカイブマルチチャンク表の運用

「11.5　マルチチャンク表の運用」

20

コスト情報の収集

「11.6　コスト情報の収集」

21

HADBユーザの管理

「11.7　HADBユーザの管理」

22

PAM認証の導入および運用

「11.8　PAM認証の導入」

23

Keycloak認証の導入

「11.9　Keycloak認証の導入」

24

ユーザ権限とスキーマ操作権限の管理

「11.10　ユーザ権限とスキーマ操作権限の管理」

25

アクセス権限の管理

「11.11　アクセス権限の管理」

26

スキーマの運用

「11.12　スキーマの運用」

27

データ用DBエリアの運用

「11.13　データ用DBエリアの運用」

28

作業表用DBエリアの運用

「11.14　作業表用DBエリアの運用」

29

バッファの運用

「11.15　バッファの運用」

30

クライアントグループの設定内容の確認

「11.16　クライアントグループの設定内容の確認」

31

クライアント定義の集中管理の運用

「11.17　クライアント定義の集中管理の運用」

32

CSVファイル中のデータを検索するときの運用

「11.18　CSVファイル中のデータを検索するときの運用」

33

同義語検索を行う際の運用

「11.19　同義語検索を行う際の運用」

34

ディクショナリ表およびシステム表の再編成

「11.20　ディクショナリ表およびシステム表の再編成」

35

更新行のカラム化機能の運用

「11.21　更新行のカラム化機能の運用（カラムストア表の検索性能の維持）」

36

監査証跡機能の運用

「12.　監査証跡機能の運用」

37

DBエリア暗号化機能の運用

「13.　DBエリア暗号化機能の運用」

38

チューニング

処理性能の向上

「14.1　処理性能の向上に関するチューニング」

39

バッファの見直しによるSQL文の実行時間の短縮

「14.2　バッファの見直しによるSQL文の実行時間の短縮に関するチューニング」

40

コマンドの実行時間の短縮

「14.3　コマンドの実行時間の短縮に関するチューニング」

41

メモリ使用量の削減

「14.4　メモリ使用量の削減に関するチューニング」

42

ハッシュテーブル領域サイズの見直しによるSQL文の実行時間の短縮

「14.5　ハッシュテーブル領域サイズの見直しによるSQL文の実行時間の短縮に関するチューニング」

43

ハッシュグループ化領域サイズの見直しによるSQL文の実行時間の短縮

「14.6　ハッシュグループ化領域サイズの見直しによるSQL文の実行時間の短縮に関するチューニング」

44

ハッシュジョインが適用されるINNER JOINの結合順序の見直しによるSQL文の実行時間の短縮

「14.7　ハッシュジョインが適用されるINNER JOINの結合順序の見直しによるSQL文の実行時間の短縮に関するチューニング」

45

ハッシュフィルタ領域サイズの見直しによるSQL文の実行時間の短縮

「14.8　ハッシュフィルタ領域サイズの見直しによるSQL文の実行時間の短縮に関するチューニング」

46

表定義プールサイズの見直しによるSQL文の実行時間の短縮

「14.9　表定義プールサイズの見直しによるSQL文の実行時間の短縮に関するチューニング」

47

障害運用

異常終了したかどうかの確認

「15.1　障害発生時の対処の流れ」

48

トラブルシュート情報の取得

「15.2　トラブルシュート情報の取得（adbinfogetコマンド）」

49

取得したトラブルシュート情報の削除

「15.3　トラブルシュート情報の削除（adbinfosweepコマンド）」

50

トラブルシュート

「16.　トラブルシュート」

51

HADBサーバの再構築

「17.　HADBサーバの再構築」

10.2　HADBサーバの開始・終了と稼働モード

ここでは，HADBサーバの開始方法，終了方法および稼働モードについて説明します。

10.2.1　HADBサーバの開始方法

HADBサーバを開始する場合，adbstartコマンドを実行してください。HADBサーバが開始します。

次のとおりにコマンドを実行してください。

adbstart

メモ

DBエリア暗号化機能を使用している場合，adbstartコマンドの入力後にHADB暗号鍵利用パスワードの入力要求メッセージ（KFAA90013-Q）が出力されます。このメッセージが出力された場合，HADB暗号鍵利用パスワードを入力してください。

重要

HADBサーバには，複数の稼働モードがあります。稼働モードの詳細については，「10.2.3　HADBサーバの稼働モード」を参照してください。

adbstartコマンド実行時にオプションを指定すると，HADBサーバ開始後の稼働モードを変更できます。オプションを指定しない場合，前回のHADBサーバ終了時の稼働モードが引き継がれます。adbstartコマンドのオプションの指定形式については，マニュアルHADB　コマンドリファレンスのadbstart（HADBサーバの開始）を参照してください。

HADBサーバの開始後，必要に応じてHADBサーバの自動再起動の設定をしてください。詳細については，「10.2.4　HADBサーバの自動再起動の設定」を参照してください。

(1)　HADBサーバの開始モード

HADBサーバには，次に示す開始モードがあります。開始モードによって動作が異なります。

表10‒2　HADBサーバの開始モード

項番

開始モード

実行するコマンド

説明

前回の終了モード

1

正常開始

adbstart

通常の開始モードです。

正常開始では，データベースの回復処理は行いません。

正常終了

2

再開始

前回の終了モードが右記の場合，HADBサーバは（自動的に）再開始となります。

再開始では，システムログを使用してデータベースの回復処理を行います。

強制終了

異常終了

(2)　開始処理完了の確認

HADBサーバの開始処理の完了を確認する場合，adbstartコマンドのリターンコードを確認してください。

リターンコードが0の場合

開始処理が正常終了しました。APからのデータベースに対するアクセス要求を受け付けることができます。

リターンコードが4の場合

開始処理は終了しましたが，警告メッセージが出力されています。

HADBサーバは開始しています。表示されたメッセージ，またはメッセージログファイルに出力されたメッセージを確認して対処してください。

リターンコードが8の場合

開始処理が異常終了しました。HADBサーバの開始処理中にエラーが発生しています。表示されたメッセージ，またはメッセージログファイルに出力されたメッセージを確認して対処してください。

10.2.2　HADBサーバの終了方法

HADBサーバを終了する場合，adbstopコマンドを実行してください。HADBサーバが終了します。

次のとおりにコマンドを実行してください。

adbstop※

注※

adbstopコマンド実行時にオプションを指定すると，HADBサーバの終了モードを変更できます。詳細については，「(1)　HADBサーバの終了モード」および「(2)　オプションの指定と正常終了の種類」を参照してください。

重要

HADBサーバに接続中のAPまたはコマンドがある場合，adbstopコマンドを実行してもHADBサーバを終了できません。

(1)　HADBサーバの終了モード

HADBサーバには，次に示す終了モードがあります。終了モードによって，adbstopコマンドに指定するオプションが異なります。

表10‒3　HADBサーバの終了モード

項番

終了モード

実行するコマンドおよびオプション

説明

1

正常終了

adbstop

通常の終了モードです。

正常終了には4種類あり，指定するオプションによって終了処理が異なります。詳細については，「(2)　オプションの指定と正常終了の種類」を参照してください。

2

強制終了

adbstop --force

処理中のトランザクションの完了を待たないで，HADBサーバが終了します。

adbstop --forceコマンドを実行すると，新規のコネクション確立要求を受け付けなくなります。

処理中のトランザクションは，HADBサーバを再開始したときに回復処理の対象となります。

3

異常終了

−

何らかの異常によって，HADBサーバが終了する場合の終了モードです。

処理中のトランザクションの完了を待たないで，HADBサーバは終了します。

処理中のトランザクションは，HADBサーバを再開始したときに回復処理の対象となります。

（凡例）

−：実行するコマンドはありません。

(2)　オプションの指定と正常終了の種類

adbstopコマンドに指定するオプションによって，正常終了時の処理が異なります。adbstopコマンドに指定するオプションと正常終了の種類を次の表に示します。

adbstopコマンドのオプションの指定形式については，マニュアルHADB　コマンドリファレンスのadbstop（HADBサーバの終了）を参照してください。

表10‒4　adbstopコマンドに指定するオプションと正常終了の種類

項番

実行するコマンドおよびオプション

説明

1

adbstop

adbstopコマンド（オプション指定なし）を実行すると，HADBサーバに接続中のAPおよび実行中のコマンドがない場合に，HADBサーバを終了します。

adbstopコマンドを実行する場面

HADBサーバに接続中のAPおよび実行中のコマンドがなく，正常終了したい場合に，このコマンドを実行してください。

adbstopコマンド実行時の処理

adbstopコマンドを実行してHADBサーバの終了処理が開始されると，新規のコネクション確立要求を受け付けなくなります。

なお，HADBサーバに接続中のAPまたは実行中のコマンドがある場合は，KFAA91152-Eメッセージが出力され，エラーとなります（HADBサーバを終了できません）。その場合は，マニュアルHADB　メッセージを参照し，KFAA91152-Eメッセージの対策欄に従って対処してください。

2

adbstop --wait connection

adbstop --wait connectionコマンドを実行すると，次の処理を待ってから，HADBサーバを終了します。

HADBサーバに接続中のAPの，HADBサーバからの切り離し

実行中のコマンドの終了

adbstop --wait connectionコマンドを実行する場面

次のような場合に，このコマンドを実行してください。

実行中のコマンド（adbimportコマンドなど）が終了したらすぐに正常終了したい場合

HADBサーバに接続中のAPによる処理が完了し，APがHADBサーバから切り離されたら，すぐに正常終了したい場合

adbstop --wait connectionコマンド実行時の処理

adbstop --wait connectionコマンドの実行後，HADBサーバは終了待機状態となり，次の処理を待ちます（終了待機状態の待ち時間は，-tオプションで指定できます）。

HADBサーバに接続中のAPの，HADBサーバからの切り離し

実行中のコマンドの終了

このとき，HADBサーバは新規のコネクション確立要求を受け付けなくなります（HADBサーバに接続中のAPまたは実行中のコマンドから発行される新規のトランザクション開始要求は受け付けます）。

HADBサーバに接続中のAPがすべて切り離され，かつ実行中のコマンドがすべて終了すると，HADBサーバの終了処理が開始されます。

3

adbstop --wait transaction

adbstop --wait transactionコマンドを実行すると，処理中のトランザクションの完了，および実行中のコマンドの終了を待ってから，HADBサーバが終了します。

adbstop --wait transactionコマンドを実行する場面

次のような場合に，このコマンドを実行してください。

処理中のトランザクションが完了したらすぐに正常終了したい場合

実行中のコマンド（adbimportコマンドなど）が終了したら，すぐに正常終了したい場合

APは接続中だが，トランザクションを開始していないときに正常終了したい場合

adbstop --wait transactionコマンド実行時の処理

adbstop --wait transactionコマンドの実行後，HADBサーバは終了待機状態となり，処理中のトランザクションの完了，および実行中のコマンドの終了を待ちます（終了待機状態の待ち時間は，-tオプションで指定できます）。

このとき，HADBサーバは新規のコネクション確立要求および新規のトランザクション開始要求を受け付けなくなります。

処理中のトランザクションがすべて完了し，かつ実行中のコマンドがすべて終了すると，HADBサーバに接続中のAPおよびコマンドがすべて切り離されて，HADBサーバの終了処理が開始されます。

4

adbstop --cancel

adbstop --cancelコマンドを実行すると，処理中のトランザクションおよび実行中のコマンドをキャンセルして，HADBサーバを終了します。

adbstop --cancelコマンドを実行する場面

処理をキャンセルしてすぐに正常終了したい場合などに，このコマンドを実行してください。

adbstop --cancelコマンド実行時の処理

adbstop --cancelコマンドの実行後，処理中のトランザクションおよび実行中のコマンドをキャンセルします。

このとき，HADBサーバは新規のコネクション確立要求および新規のトランザクション開始要求を受け付けなくなります。

処理中のトランザクションおよび実行中のコマンドがすべてキャンセルされると，HADBサーバに接続中のAPおよびコマンドがすべて強制的に切り離されて，HADBサーバの終了処理が開始されます。

■終了待機状態とは

終了待機状態とは，HADBサーバが次の処理を待っている状態のことです。

HADBサーバに接続中のAPの，HADBサーバからの切り離し

実行中のコマンドの終了

処理中のトランザクションの完了

adbstop --wait connectionコマンドおよびadbstop --wait transactionコマンドを実行したときだけ，HADBサーバは終了待機状態になります。終了待機状態には待ち時間があり，adbstopコマンドの-tオプションで指定できます。-tオプションを省略した場合は，デフォルトの待ち時間が適用されます。

■終了待機状態の待ち時間

終了待機状態の待ち時間内に，HADBサーバに接続中のAPがHADBサーバから切り離されなかったり，実行中のコマンドが終了しなかったり，処理中のトランザクションが完了しなかったりして，終了待機状態の待ち時間を超えた（タイムアウトした）場合は，HADBサーバは終了しません。この場合は，KFAA91152-Eメッセージが出力されるため，メッセージを参照して，エラー要因を取り除いてください。

なお，終了待機状態の待ち時間を超えた（タイムアウトした）場合，HADBサーバは，新規のコネクション確立要求および新規のトランザクション開始要求を受け付けられるようになります。

■終了待機状態の確認方法

HADBサーバが終了待機状態かどうかは，adbls -d srvコマンドで確認できます。出力項目「STATUS」の表示が"STOPWAIT"であれば，HADBサーバは終了待機状態となっています。

終了待機状態をキャンセルしたい場合は，OSのkillコマンドでadbstopコマンドのプロセスを終了させてください。終了待機状態をキャンセルできます。

終了待機状態がキャンセルされた場合，HADBサーバは，新規のコネクション確立要求および新規のトランザクション開始要求を受け付けられるようになります。

adbls -d srvコマンドについては，マニュアルHADB　コマンドリファレンスのadbls -d srv（HADBサーバの状態表示）を参照してください。

(3)　終了処理完了の確認

HADBサーバの終了処理の完了を確認する場合，adbstopコマンドのリターンコードを確認してください。

リターンコードが0の場合

終了処理が正常終了しました。

リターンコードが4の場合

終了処理は終了しましたが，警告メッセージが出力されています。

HADBサーバは終了しています。表示されたメッセージ，またはメッセージログファイルに出力されたメッセージを確認して対処してください。

リターンコードが8の場合

終了処理が異常終了しました。HADBサーバの終了処理中にエラーが発生しています。表示されたメッセージ，またはメッセージログファイルに出力されたメッセージを確認して対処してください。

10.2.3　HADBサーバの稼働モード

HADBサーバには，次の稼働モードがあります。

通常モード

静止モード

オフラインモード

メンテナンスモード

各稼働モードの詳細について，次の表に示します。

表10‒5　HADBサーバの稼働モードの詳細

項番

稼働モードの種類

説明

1

通常モード

通常の稼働モードです。

通常モードのときは，HADBサーバおよびHADBクライアントで，通常どおりSQL文およびコマンドを実行できます。

なお，HADBサーバを初めて開始する場合に，オプションを省略してadbstartコマンドを実行すると，通常モードで開始されます。

2

静止モード

データベースの更新を抑止する稼働モードです。

HADBサーバを稼働したまま，データベースのバックアップを取得するときなどに，このモードを使用します。

静止モードのときは，HADBサーバおよびHADBクライアントで，データベースを検索するSQL文は実行できます。しかし，データベースを更新するSQL文は実行できません。また，一部のコマンドも実行できません。

静止モードで実行できるSQL文およびコマンドについては，マニュアルHADB　コマンドリファレンスのadbstart（HADBサーバの開始）を参照してください。

3

オフラインモード

HADBサーバがインストールされているサーバマシンとは異なるマシンにインストールされているHADBクライアントからの接続を受け付けない稼働モードです。

コマンド実行時に，HADBサーバの処理性能を最大限に利用したいときなどに，このモードを使用します。

オフラインモードのときは，HADBサーバと同じサーバマシンにインストールされているHADBクライアントからは，通常どおりSQL文およびコマンドを実行できます。しかし，HADBサーバがインストールされているサーバマシンとは異なるマシンにインストールされているHADBクライアントからは，SQL文およびコマンドを実行できません。

オフラインモードで実行できるSQL文およびコマンドについては，マニュアルHADB　コマンドリファレンスのadbstart（HADBサーバの開始）を参照してください。

4

メンテナンスモード

HADBサーバがAPの接続要求を受け付けない稼働モードです。メンテナンスモードの場合は，adbmodareaコマンドまたはadbupddmkコマンドなどの特定のコマンドだけが実行できます。メンテナンスモードの場合に実行できるコマンドについては，マニュアルHADB　コマンドリファレンスのadbstart（HADBサーバの開始）の各稼働モードで実行できるSQL文およびコマンドを参照してください。

メンテナンスモードは，次に示す場合などに使用します。

ほかのコマンドやAPと同時実行できないコマンドを実行する場合

マルチノード構成にノードを復帰させる場合

HADB暗号鍵を更新する場合

マルチノード構成へのノードの復帰については，「18.16.3　マルチノード構成へのノードの復帰」を参照してください。

(1)　稼働モードを変更する方法

HADBサーバの稼働モードは，HADBサーバの開始時，またはHADBサーバの稼働中に変更できます。稼働モードを変更する方法を次に示します。

■稼働モードを通常モードに変更する方法

HADBサーバの開始時に変更する場合

HADBサーバを開始するときに，adbstart --normalコマンドを実行してください。

HADBサーバの稼働中に変更する場合

静止モード，オフラインモード，またはメンテナンスモードで稼働しているときに，adbchgsrvmode --normalコマンドを実行してください。

■稼働モードを静止モードに変更する方法

HADBサーバの開始時に変更する場合

HADBサーバを開始するときに，adbstart --quiescenceコマンドを実行してください。

HADBサーバの稼働中に変更する場合

通常モードで稼働しているときに，adbchgsrvmode --quiescenceコマンドを実行してください。通常モードから，静止モードに変更できます。

■稼働モードをオフラインモードに変更する方法

HADBサーバの開始時に変更する場合

HADBサーバを開始するときに，adbstart --offlineコマンドを実行してください。

HADBサーバの稼働中に変更する場合

通常モードで稼働しているときに，adbchgsrvmode --offlineコマンドを実行してください。通常モードから，オフラインモードに変更できます。

■稼働モードをメンテナンスモードに変更する方法

HADBサーバの開始時に変更する場合

HADBサーバを開始するときに，adbstart --maintenanceコマンドを実行してください。

HADBサーバの稼働中に変更する場合

通常モードで稼働しているときに，adbchgsrvmode --maintenanceコマンドを実行してください。通常モードから，メンテナンスモードに変更できます。

(2)　稼働モードを確認する方法

HADBサーバの稼働モードは，次に示すコマンドで確認できます。

adbls -d srv

コマンドを実行すると，HADBサーバの状態が表示されます。実行結果のSTATUSの項目を確認してください。

STATUSがACTIVEの場合

稼働モードは，通常モードになります。

STATUSがQUIESCEの場合

稼働モードは，静止モードになります。

STATUSがOFFLINEの場合

稼働モードは，オフラインモードになります。

STATUSがMAINTNCEの場合

稼働モードは，メンテナンスモードになります。

10.2.4　HADBサーバの自動再起動の設定

HADBサーバが異常終了した場合，通常は，HADBサーバは自動的に再起動しません。しかし，adbmonitorコマンドを実行しておくと，HADBサーバが異常終了したときに，HADBサーバの再起動が自動的に行われます。

自動再起動の設定手順を次に示します。

なお，自動再起動の設定ができるのは，マルチノード機能を使用していないときだけです。

手順

HADBサーバを開始する

adbstartコマンドを実行してください。

HADBサーバの自動再起動の設定を実施する

adbmonitor -rコマンドを実行してください。

adbmonitor -rコマンドを実行すると，adbmonitorコマンドがHADBサーバの状態を監視します。そして，HADBサーバが異常終了したときに，adbmonitorコマンドのコマンドプロセスからHADBサーバを再起動します。

重要

HADBサーバの異常終了原因によっては，HADBサーバが自動再起動できないことがあります（同じ原因で繰り返しHADBサーバが異常終了することがあります）。この場合は，［Ctrl］＋［C］キーなどで，adbmonitorコマンドのコマンドプロセスを強制終了してください。

HADBサーバが自動再起動した場合※，次のメッセージがメッセージログファイルに出力されているかどうかを確認してください。

KFAA60004-E

KFAA60005-E

上記のメッセージが出力されている場合は，adbinfogetコマンドでトラブルシュート情報を取得し，弊社問い合わせ窓口に連絡してください。

注※

HADBサーバが自動再起動した場合，adbmonitorコマンドの標準出力またはメッセージログファイルに，adbstartコマンドが実行されて正常終了した情報が出力されます。

なお，adbstopコマンドでHADBサーバを正常終了した場合，HADBサーバを監視していたadbmonitorコマンドのコマンドプロセスも終了します。そのため，次回のHADBサーバを開始するときにも，自動再起動を設定したい場合は，HADBサーバの開始後にadbmonitor -rコマンドを実行してください。

10.3　データベースのバックアップ

ここでは，データベースのバックアップを取得する方法，およびバックアップから回復する方法について説明します。

10.3.1　バックアップの取得方法

ここでは，バックアップを取得するタイミング，バックアップの種類，およびバックアップを取得する手順について説明します。

メモ

マルチノード機能を使用している場合のバックアップの取得方法については，「18.9　データベースのバックアップ（マルチノード機能の使用時）」を参照してください。

コールドスタンバイ構成の場合のバックアップの取得方法については，「19.6　データベースのバックアップ（コールドスタンバイ構成の場合）」を参照してください。

クラウドストレージ機能を使用している場合のバックアップの取得方法については，「22.1　バックアップの取得とデータベースの回復」を参照してください。

(1)　バックアップを取得するタイミング

原則として，障害発生時などにデータベースを回復するために，定期的にバックアップを取得するようにしてください。特に，次に示す運用項目を実施する前には，必ずバックアップを取得してください。

adbmodareaコマンドを実行する場合

HADBサーバのバージョンアップを実施する場合

重要

データベースのバックアップを取得する際は，データ用DBエリアファイルを含む必要なファイルすべてのバックアップを取得してください。このバックアップをフルバックアップといいます。

(2)　バックアップを取得する手順

データベースのバックアップを取得する手順を次に示します。

図10‒1　バックアップを取得する手順

図中の各手順の詳細を次で説明します。なお，図中の番号は，次に示す各手順の番号と対応しています。

なお，手順2.のデータベースの更新を抑止するで，HADBサーバの稼働モードを静止モードに変更するを選択する場合は，手順1.を飛ばして手順2.から開始してください。

更新不可状態の実表の有無を確認する

データベースのバックアップを取得する前に，更新不可状態の実表がないことを確認する必要があります。adbdbstatusコマンドに，-c tableオプションを指定して実行してください。なお，手順2.でHADBサーバの稼働モードを静止モードに変更する場合は，手順1.の実施は不要です。手順2.に進んでください。

すべての実表の状態を調べる場合の指定例を次に示します。

adbdbstatus -c table

出力結果のNon-updatable列に，non-updatableが出力されていないことを確認してください。non-updatableが出力されている場合，実表が更新不可状態になっています。「16.8.1　実表が更新不可状態になった場合」を参照して，更新不可状態を解除してください。

重要

更新不可状態の実表がある状態でバックアップを取得し，そのバックアップからデータベースを回復してしまうと，実表の更新不可状態を解除できなくなるおそれがあります。実表が更新不可状態の場合，検索処理や更新処理を実行できません。

データベースの更新を抑止する

データベースのバックアップを取得する前に，データベースの更新を抑止する必要があります。次に示すどちらかを必ず実施してください。

HADBサーバを正常終了する

HADBサーバを終了しても問題ない場合は，adbstopコマンドを実行して，HADBサーバを正常終了してください。

HADBサーバの稼働モードを静止モードに変更する

HADBサーバが稼働中で終了できない場合は，adbchgsrvmode --quiescenceコマンドを実行して，稼働モードを静止モードに変更してください。

重要

稼働モードを静止モードにしてバックアップを取得した場合，データベースの回復後にHADBサーバを開始すると，HADBサーバは再開始します。この場合，バックアップ取得後にサーバ定義を変更していると，取得したバックアップから回復したあとでHADBサーバを再開始できないことがあります。そのため，静止モードにしてバックアップを取得する場合は，手順6.でサーバ定義ファイルのバックアップをあわせて取得することを推奨します。なお，サーバ定義の変更によって再開始できない場合は，KFAA50024-EメッセージおよびKFAA50025-Eメッセージを基に対策してください。

HADBサーバの状態を確認する

手順2.が完了したら，HADBサーバの状態を確認します。次に示すコマンドを実行して，データベースの更新を抑止できていることを確認してください。

adbls -d srv

実行結果のSTATUSの項目を確認してください。

HADBサーバを正常終了した場合

出力項目のSTATUSが，STOPになっていることを確認してください。確認したら，手順5.に進んでください。

HADBサーバの稼働モードを静止モードに変更した場合

出力項目のSTATUSが，QUIESCEになっていることを確認してください。確認したら，手順4.に進んでください。

更新不可状態の実表の有無を確認する

データベースのバックアップを取得する前に，更新不可状態の実表がないことを確認する必要があります。adbdbstatusコマンドに，-c tableオプションを指定して実行してください。

なお，手順2.でHADBサーバを正常終了した場合は，手順5.に進んでください。

すべての実表の状態を調べる場合の指定例を次に示します。

adbdbstatus -c table

出力結果のNon-updatable列に，non-updatableが出力されていないことを確認してください。non-updatableが出力されている場合，実表が更新不可状態になっています。「16.8.1　実表が更新不可状態になった場合」を参照して，更新不可状態を解除してください。

データベースのバックアップを取得する

データベースの更新を抑止したら，バックアップを取得できます。バックアップを取得する必要があるファイルは，すべてバックアップを取得してください。一部のファイルだけバックアップを取得すると，バックアップから回復するときにデータベースの整合性が取れなくなり，その後の動作を保証できません。

対象のファイルがシンボリックリンクファイルの場合は，リンク先のファイルおよびブロックスペシャルファイルについても，バックアップを取得してください。なお，バックアップを取得するファイルは，スパースファイルにしないでください。

バックアップを取得する必要があるファイルを次の表に示します。

表10‒6　バックアップを取得する必要があるファイルの一覧

項番

バックアップを取得する必要があるファイル

ファイルの格納先

ファイルの種類

1

コマンドステータスファイル

$DBDIR/ADBSYS/ADBUTL

レギュラーファイル

2

システムログファイル

$DBDIR/ADBSYS/ADBSLG

レギュラーファイル

3

ステータスファイル

$DBDIR/ADBSYS/ADBSTS

レギュラーファイル

4

マスタディレクトリ用DBエリアファイル

$DBDIR/ADBMST

レギュラーファイル，またはブロックスペシャルファイル

5

ディクショナリ用DBエリアファイル

$DBDIR/ADBDIC

レギュラーファイル，またはブロックスペシャルファイル

6

システム表用DBエリアファイル

$DBDIR/ADBSTBL

レギュラーファイル，またはブロックスペシャルファイル

7

データ用DBエリアを構成するすべてのファイル

$DBDIR/DBAREA※1

レギュラーファイル，またはブロックスペシャルファイル

8

アーカイブファイル

アーカイブディレクトリ※2

レギュラーファイル

9

同義語辞書ファイル

同義語辞書ファイルの格納ディレクトリ※3

レギュラーファイル

注※1

adbinitコマンドまたはadbmodareaコマンドで，ユーザが指定した名称になります。

注※2

CREATE TABLE文のチャンクアーカイブ指定のARCHIVEDIRで指定したディレクトリです。

注※3

サーバ定義のadb_syndict_storage_pathオペランドに指定したディレクトリです。

同義語辞書ファイルは，同義語一覧定義ファイルから再作成できるため，同義語一覧定義ファイルを保管している場合は，同義語辞書ファイルをフルバックアップの取得対象に含める必要はありません。ただし，この場合，データベースの回復時，データベースと同義語辞書ファイルの同期は取られません。そのため，フルバックアップの取得後に同義語辞書を更新した場合，次の検索結果が異なることがあります。

・フルバックアップ取得時点の同義語検索の検索結果

・データベースをフルバックアップ取得時点に回復したときの同義語検索の検索結果

メモ

次に示すディレクトリ下のファイルについては，バックアップの取得は不要です。

作業用ディレクトリ下（$DBDIR/ADBWORK）のファイル

障害情報（コアファイル）の出力先ディレクトリ下（$DBDIR/SPOOL）のファイル

サーバ定義adb_core_pathオペランドを指定した場合は，adb_core_pathオペランドに指定したディレクトリになります。

なお，これらのファイルも，上記の表に示すファイルと一緒にバックアップを取得して，バックアップから回復しても問題はありません。

メモ

監査証跡の出力先ディレクトリ（サーバ定義のadb_audit_log_pathオペランドに指定したディレクトリ）下の監査証跡ファイルのバックアップを取得する必要はありません。監査証跡の出力先ディレクトリ下の監査証跡ファイルは，バックアップを取得するのではなく，監査証跡の保存先ディレクトリに移動してください。運用の詳細については，「12.3.1　監査証跡ファイルの移動（監査証跡の保存先ディレクトリへの移動）」を参照してください。

サーバディレクトリなどのバックアップを取得する

ディスク障害などのトラブルが発生し，サーバディレクトリまたはクライアントディレクトリの回復が必要になった場合に備えて，次に示すファイルもあわせてバックアップを取得してください。これらのファイルは，データベースの回復には直接は使用しません。

HADBサーバの場合

サーバディレクトリ下（$ADBDIR/conf）に格納されているすべての定義ファイル

サーバディレクトリ下（$ADBDIR）にユーザがファイルを作成している場合，作成したすべてのファイル

HADBクライアントの場合

クライアントディレクトリ下（Windows版の場合は%ADBCLTDIR%¥conf，Linux版の場合は$ADBCLTDIR/conf）に格納されている定義ファイル

クライアントディレクトリ下（Windows版の場合は%ADBCLTDIR%，Linux版の場合は$ADBCLTDIR）にユーザがファイルを作成している場合，作成したすべてのファイル

データベースの更新抑止を解除する

バックアップの取得が完了したら，データベースの更新抑止を解除します。

手順2.でHADBサーバを正常終了した場合

adbstartコマンドを実行して，HADBサーバを開始してください。

手順2.でHADBサーバの稼働モードを静止モードに変更した場合

adbchgsrvmode --normalコマンドを実行して，稼働モードを通常モードに変更してください。

これで，バックアップの取得は完了です。

10.3.2　バックアップからの回復方法

ここでは，取得したバックアップからデータベースを回復する手順について説明します。

図10‒2　バックアップから回復する手順

HADBサーバを終了する

バックアップから回復する場合，HADBサーバを終了する必要があります。次に示すコマンドを実行して，HADBサーバを終了してください。

adbstop

重要

バックアップから回復する前に，必ずHADBサーバを終了してください。HADBサーバの稼働中にバックアップから回復した場合，データベースの整合性が取れなくなり，HADBサーバはその後の動作を保証できません。

HADBサーバの終了モードが異常終了および強制終了でも，HADBサーバが終了していれば，バックアップから回復できます。

バックアップから回復する

取得したバックアップから，データベースを回復します。「10.3.1　バックアップの取得方法」の「(2)　バックアップを取得する手順」の手順5.　データベースのバックアップを取得するで取得したすべてのファイルを，対象のディレクトリ下に格納し直してください。

格納し直すファイルにシンボリックリンクファイルが含まれている場合は，リンク先のファイルおよびブロックスペシャルファイルも回復してください。また，格納し直すファイルはスパースファイルにしないでください。

重要

バックアップから回復する場合，バックアップを取得したすべてのファイルを必ず格納し直してください。一部のファイルだけを格納し直した場合，データベースの整合性が取れなくなり，その後の動作を保証できません。

また，バックアップから回復する際，バックアップを取得したファイル以外のファイルを格納しないでください。対象のディレクトリ下のファイルを，バックアップを取得したファイル以外のファイルで上書きした場合，データベースの整合性が取れなくなり，その後の動作を保証できません。

作業表用DBエリアにブロックスペシャルファイルを指定している場合は，DBエリアを回復したあとに，サーバ定義adb_blk_path_wrkオペランドを指定してからHADBサーバを開始してください。サーバ定義adb_blk_path_wrkオペランドについては，「7.2.1　システム構成に関するオペランド（set形式）」のadb_blk_path_wrkオペランドを参照してください。

HADBサーバを開始する

取得したバックアップからデータベースを回復したら，HADBサーバを開始します。次に示すコマンドを実行して，HADBサーバを開始してください。

adbstart

HADBサーバの状態を確認する

HADBサーバを開始したら，HADBサーバの稼働モードが通常モードになっているかどうかを確認します。次に示すコマンドを実行して，HADBサーバの状態を確認してください。

adbls -d srv

実行結果のSTATUSの項目を確認してください。STATUSがACTIVEになっていれば，稼働モードが通常モードになっています。STATUSがQUIESCEの場合は，稼働モードが静止モードになっています。adbchgsrvmode --normalコマンドを実行して，稼働モードを通常モードにしてください。

なお，ディスク障害などのトラブルが発生し，サーバディレクトリまたはクライアントディレクトリを回復する場合は，「16.4.2　サーバディレクトリの回復」または「16.4.3　クライアントディレクトリの回復」を参照してください。

10.3.3　バックアップの運用例（OSコマンドを使用）

ここでは，OSのコマンドを使用したバックアップの運用例について説明します。

(1)　ディレクトリの構成例

バックアップを取得するディレクトリを次に示します。

DBディレクトリ（/HADB/db）

アーカイブディレクトリ（/HADB/archive）

同義語辞書ファイルの格納ディレクトリ（/HADB/syndict）

上記のディレクトリの構成例を次の表に示します。

表10‒7　バックアップを取得するディレクトリの構成例

項番

バックアップの取得対象のディレクトリ名およびファイル名

説明

ファイルの種類

バックアップ取得の有無

1

/HADB/db/ADBDIC

ディクショナリ用DBエリアファイル

レギュラーファイル

○

2

/HADB/db/ADBMST

マスタディレクトリ用DBエリアファイル

レギュラーファイル

○

3

/HADB/db/ADBSTBL

システム表用DBエリアファイル

レギュラーファイル

○

4

/HADB/db/ADBSYS

システムディレクトリ

レギュラーファイル群

○

5

/HADB/db/ADBWORK

作業用ディレクトリ

レギュラーファイル

×

6

/HADB/db/ADBWRK

作業表用DBエリアファイル

レギュラーファイル

×

7

/HADB/db/ADBUTBL01※1

データ用DBエリアファイル

ブロックスペシャルファイル

○

8

/HADB/db/ADBUIDX01※1

データ用DBエリアファイル

ブロックスペシャルファイル

○

9

/HADB/db/SPOOL

障害情報（コアファイル）の出力先ディレクトリ

レギュラーファイル群

×

10

/HADB/archive

アーカイブディレクトリ※2

レギュラーファイル

○

11

/HADB/syndict

同義語辞書ファイルの格納ディレクトリ※3

レギュラーファイル

○

12

/HADB/audit

監査証跡の出力先ディレクトリ

レギュラーファイル

×

（凡例）

○：バックアップを取得します。

×：バックアップを取得しません。

注※1

8個のブロックスペシャルファイルで構成されていることとします。

注※2

アーカイブマルチチャンク表を定義している場合に，アーカイブディレクトリのバックアップを取得する必要があります。

注※3

同義語検索を行っている場合に，同義語辞書ファイルの格納ディレクトリのバックアップを取得する必要があります。

(2)　OSのコマンドでバックアップを取得する

OSのコマンドを使用して，データベースのバックアップを取得する例を次に示します。

図10‒3　OSのコマンドでバックアップを取得する例

この例では，次に示す条件でバックアップを取得することとします。

条件

データベースの初期設定後，一度以上HADBサーバを開始している

更新不可状態の実表がないことを確認している

データベースの更新を抑止するために，HADBサーバを正常終了する

バックアップの種類はフルバックアップとする

DBディレクトリ，アーカイブディレクトリ，および同義語辞書ファイルの格納ディレクトリのバックアップを取得する

手順

データベースの更新を抑止する

データベースのバックアップを取得する前に，データベースの更新を抑止します。ここでは，HADBサーバを正常終了します。

adbstop

HADBサーバの状態を確認する

手順1.で，HADBサーバが正常終了していることを確認します。

adbls -d srv

実行結果のSTATUSの項目が，STOPになっていることを確認します。

ディレクトリのバックアップを取得する（OSのコマンドでコピーする）

OSのコマンドを実行して，「(1)　ディレクトリの構成例」で示したバックアップの取得が必要なファイルをすべてコピーします。

DBディレクトリ下のファイルのコピー先

/HADB_bkup/dbディレクトリ

アーカイブディレクトリ下のファイルのコピー先

/HADB_bkup/archiveディレクトリ

同義語辞書ファイルの格納ディレクトリ下のファイルのコピー先

/HADB_bkup/syndictディレクトリ

実行するOSのコマンドを次に示します。レギュラーファイルはcpコマンドで，ブロックスペシャルファイルはddコマンドで取得することを推奨します。

cp -r /HADB/db/ADBSYS  /HADB_bkup/db/ADBSYS

cp -H /HADB/db/ADBMST  /HADB_bkup/db/ADBMST

cp -H /HADB/db/ADBDIC  /HADB_bkup/db/ADBDIC

cp -H /HADB/db/ADBSTBL /HADB_bkup/db/ADBSTBL

dd if=/HADB/db/ADBUTBL01
   of=/HADB_bkup/db/ADBUTBL01 bs=524288

dd if=/HADB/db/ADBUTBL01.00001
   of=/HADB_bkup/db/ADBUTBL01.00001 bs=524288

dd if=/HADB/db/ADBUTBL01.00002
   of=/HADB_bkup/db/ADBUTBL01.00002 bs=524288

dd if=/HADB/db/ADBUTBL01.00003
   of=/HADB_bkup/db/ADBUTBL01.00003 bs=524288

dd if=/HADB/db/ADBUTBL01.00004
   of=/HADB_bkup/db/ADBUTBL01.00004 bs=524288

dd if=/HADB/db/ADBUTBL01.00005
   of=/HADB_bkup/db/ADBUTBL01.00005 bs=524288

dd if=/HADB/db/ADBUTBL01.00006
   of=/HADB_bkup/db/ADBUTBL01.00006 bs=524288

dd if=/HADB/db/ADBUTBL01.00007
   of=/HADB_bkup/db/ADBUTBL01.00007 bs=524288

dd if=/HADB/db/ADBUIDX01
   of=/HADB_bkup/db/ADBUIDX01 bs=524288

dd if=/HADB/db/ADBUIDX01.00001
   of=/HADB_bkup/db/ADBUIDX01.00001 bs=524288

dd if=/HADB/db/ADBUIDX01.00002
   of=/HADB_bkup/db/ADBUIDX01.00002 bs=524288

dd if=/HADB/db/ADBUIDX01.00003
   of=/HADB_bkup/db/ADBUIDX01.00003 bs=524288

dd if=/HADB/db/ADBUIDX01.00004
   of=/HADB_bkup/db/ADBUIDX01.00004 bs=524288

dd if=/HADB/db/ADBUIDX01.00005
   of=/HADB_bkup/db/ADBUIDX01.00005 bs=524288

dd if=/HADB/db/ADBUIDX01.00006
   of=/HADB_bkup/db/ADBUIDX01.00006 bs=524288

dd if=/HADB/db/ADBUIDX01.00007
   of=/HADB_bkup/db/ADBUIDX01.00007 bs=524288

cp -r /HADB/archive  /HADB_bkup/archive

cp -r /HADB/syndict  /HADB_bkup/syndict

重要

ブロックスペシャルファイルのデータ量については，ボリューム全体をコピーするため，実際の使用量よりも増えます。

データベースの更新抑止を解除する

OSのコマンドを使用してバックアップを取得したら，データベースの更新抑止を解除できます。ここでは，次に示すコマンドを実行して，HADBサーバを開始してください。

adbstart

(3)　OSのコマンドでバックアップから回復する

OSのコマンドを使用して，取得したバックアップから回復する例を次に示します。

図10‒4　OSのコマンドでバックアップから回復する例

手順

HADBサーバを終了する

バックアップから回復する場合，HADBサーバを終了する必要があります。次に示すコマンドを実行して，HADBサーバを終了してください。

adbstop

バックアップから回復する（OSのコマンドでファイルを格納し直す）

取得したバックアップから，データベースを回復します。

まず，バックアップから回復する前のシステムログを削除するため，DBディレクトリ下にあるシステムディレクトリ（/HADB/db/ADBSYS）を削除してください。次に示すOSのコマンドを実行してください。

rm -r /HADB/db/ADBSYS

次に，バックアップから回復する前のアーカイブファイルを削除するため，アーカイブディレクトリ下にあるアーカイブファイルを削除してください。次に示すOSのコマンドを実行してください。

rm -r /HADB/archive/*

次に，バックアップから回復する前の同義語辞書ファイルを削除してください。次に示すOSのコマンドを実行してください。

rm -r /HADB/syndict/*

そのあとで，「(2)　OSのコマンドでバックアップを取得する」の手順3.　ディレクトリのバックアップを取得する（OSのコマンドでコピーする）で取得したすべてのファイルを格納し直してください。

バックアップを取得したDBディレクトリ下のファイルの格納先

/HADB/dbディレクトリ

バックアップを取得したアーカイブディレクトリ下のファイルの格納先

/HADB/archiveディレクトリ

バックアップを取得した同義語辞書ファイルの格納ディレクトリ下のファイルの格納先

/HADB/syndictディレクトリ

実行するOSのコマンドを次に示します。

cp -r /HADB_bkup/db/ADBSYS  /HADB/db/ADBSYS

cp -H /HADB_bkup/db/ADBMST  /HADB/db/ADBMST

cp -H /HADB_bkup/db/ADBDIC  /HADB/db/ADBDIC

cp -H /HADB_bkup/db/ADBSTBL /HADB/db/ADBSTBL

dd if=/HADB_bkup/db/ADBUTBL01
   of=/HADB/db/ADBUTBL01 bs=524288

dd if=/HADB_bkup/db/ADBUTBL01.00001
   of=/HADB/db/ADBUTBL01.00001 bs=524288

dd if=/HADB_bkup/db/ADBUTBL01.00002
   of=/HADB/db/ADBUTBL01.00002 bs=524288

dd if=/HADB_bkup/db/ADBUTBL01.00003
   of=/HADB/db/ADBUTBL01.00003 bs=524288

dd if=/HADB_bkup/db/ADBUTBL01.00004
   of=/HADB/db/ADBUTBL01.00004 bs=524288

dd if=/HADB_bkup/db/ADBUTBL01.00005
   of=/HADB/db/ADBUTBL01.00005 bs=524288

dd if=/HADB_bkup/db/ADBUTBL01.00006
   of=/HADB/db/ADBUTBL01.00006 bs=524288

dd if=/HADB_bkup/db/ADBUTBL01.00007
   of=/HADB/db/ADBUTBL01.00007 bs=524288

dd if=/HADB_bkup/db/ADBUIDX01
   of=/HADB/db/ADBUIDX01 bs=524288

dd if=/HADB_bkup/db/ADBUIDX01.00001
   of=/HADB/db/ADBUIDX01.00001 bs=524288

dd if=/HADB_bkup/db/ADBUIDX01.00002
   of=/HADB/db/ADBUIDX01.00002 bs=524288

dd if=/HADB_bkup/db/ADBUIDX01.00003
   of=/HADB/db/ADBUIDX01.00003 bs=524288

dd if=/HADB_bkup/db/ADBUIDX01.00004
   of=/HADB/db/ADBUIDX01.00004 bs=524288

dd if=/HADB_bkup/db/ADBUIDX01.00005
   of=/HADB/db/ADBUIDX01.00005 bs=524288

dd if=/HADB_bkup/db/ADBUIDX01.00006
   of=/HADB/db/ADBUIDX01.00006 bs=524288

dd if=/HADB_bkup/db/ADBUIDX01.00007
   of=/HADB/db/ADBUIDX01.00007 bs=524288

cp -r /HADB_bkup/archive/*  /HADB/archive

cp -r /HADB_bkup/syndict/*  /HADB/syndict

重要

DBディレクトリ下のファイルをバックアップから回復する場合，DBディレクトリ（/HADB/db）に上書きコピーしてください。空のディレクトリに対して，バックアップ対象のファイルをコピーして格納するだけでは，データベースの整合性が取れなくなり，HADBサーバはその後の動作を保証できません。

HADBサーバを開始する

取得したバックアップからデータベースを回復したら，HADBサーバを開始します。次に示すコマンドを実行して，HADBサーバを開始してください。

adbstart

HADBサーバの状態を確認する

HADBサーバを開始したら，HADBサーバの稼働モードが通常モードになっているかどうかを確認します。次に示すコマンドを実行して，HADBサーバの状態を確認してください。

adbls -d srv

実行結果のSTATUSの項目を確認してください。STATUSがACTIVEになっていれば，稼働モードが通常モードになっています。

10.3.4　バックアップの運用例（ShadowImageを使用）

ここでは，日立ディスクアレイシステムのボリュームレプリケーション機能であるShadowImageを使用したバックアップの運用例について説明します。

ShadowImageを使用すると，バックアップの取得およびバックアップからの回復に掛かる時間を短縮できます。ShadowImageについては，マニュアルShadowImage　ユーザーズガイドを参照してください。

(1)　ShadowImageを使用するときの注意事項

隠蔽モード（-m noread）を指定してペアを生成しないでください。

(2)　ディレクトリの構成例

次に示すディレクトリをすべてバックアップの取得対象として，ShadowImageの正ボリュームに格納することとします。

ブロックスペシャルファイルを含むDBディレクトリ

アーカイブディレクトリ

同義語辞書ファイルの格納ディレクトリ

(3)　バックアップの取得

ここでは，ShadowImageを使用してバックアップを取得する運用例について説明します。

図10‒5　ShadowImageを使用したバックアップの取得例

条件

データベースの初期設定後，一度以上HADBサーバを開始している

更新不可状態の実表がないことを確認している

データベースの更新を抑止するために，HADBサーバの稼働モードを静止モードに変更する

バックアップの種類はフルバックアップとする

DBディレクトリ，アーカイブディレクトリ，および同義語辞書ファイルの格納ディレクトリのバックアップを取得する

手順

ペアを同期する

ペアの同期を開始してください。ペアの同期に時間が掛かることがあるため，HADBサーバの稼働モードを静止モードに変更する前に，ペアボリュームの同期を開始しておくことを推奨します。

HADBサーバの稼働モードを静止モードに変更する

adbchgsrvmode --quiescenceコマンドを実行して，HADBサーバの稼働モードを静止モードに変更してください。静止モードに変更したら，ペアの同期が完了するまで待ってください。

ペアを分割する

ペアの同期が完了したら，バックアップの取得が完了したため，ペアを分割してください。これで，ペアの同期を開始した時点のバックアップが，副ボリュームに保持されます。

HADBサーバの稼働モードを通常モードに変更する

adbchgsrvmode --normalコマンドを実行して，HADBサーバの稼働モードを通常モードに変更してください。これで，ShadowImageを使用したバックアップの取得は完了です。

(4)　バックアップからの回復

ここでは，「(3)　バックアップの取得」で取得したバックアップからデータベースを回復する運用例について説明します。

図10‒6　ShadowImageを使用したバックアップからの回復例

手順

HADBサーバを終了する

バックアップから回復する前に，HADBサーバを終了します。次に示すHADBのコマンドを実行して，HADBサーバを終了してください。

adbstop

アンマウントする

正ボリュームに格納されたファイルシステムをアンマウントしてください。

バックアップから回復する

ペアを逆同期して，バックアップから回復します。副ボリュームの内容を正ボリュームに同期してください。

重要

正ボリュームの内容を副ボリュームに同期しないように注意してください。

ペアを分割する

ペアの逆同期が完了したら，バックアップからの回復が完了したため，ペアを分割してください。

マウントする

手順2.でアンマウントしたファイルシステムをマウントしてください。

HADBサーバを開始する

次に示すHADBのコマンドを実行して，HADBサーバを開始してください。

adbstart

HADBサーバの状態を確認する

HADBサーバを開始したら，HADBサーバの稼働モードが通常モードになっているかどうかを確認します。次に示すコマンドを実行して，HADBサーバの状態を確認してください。

adbls -d srv

実行結果のSTATUSの項目を確認してください。STATUSがACTIVEになっていれば，稼働モードが通常モードになっています。

10.4　メッセージの確認

HADBの稼働状況は，メッセージで確認します。HADBが出力したメッセージは，履歴情報として保存されます。メッセージの履歴情報をメッセージログといいます。

10.4.1　メッセージの出力先

HADBサーバのメッセージは，標準出力，標準エラー出力，サーバメッセージログファイル，およびsyslogに出力されます。メッセージの種別によって出力先が異なります。それぞれの出力先と出力されるメッセージの種別について説明します。

(1)　標準出力

コンソールの標準出力にメッセージが出力されます。出力されるメッセージは，インフォメーションメッセージおよび応答メッセージになります。

(2)　標準エラー出力

コンソールの標準エラー出力にメッセージが出力されます。出力されるメッセージは，エラーメッセージおよび警告メッセージになります。

(3)　サーバメッセージログファイル

HADBサーバが出力するメッセージは，サーバディレクトリ下に作成されるファイルにメッセージログとして格納されます。このファイルをサーバメッセージログファイルといいます。

出力されるメッセージは，HADBサーバのすべてのメッセージになります。

サーバメッセージログファイルは，HADBサーバに4つ作成されます。作成されるサーバメッセージログファイルのファイルサイズの最大容量は，環境変数ADBMSGLOGSIZEで指定できます。

なお，サーバメッセージログファイルには，HADBクライアントが出力するメッセージは格納されません。

メモ

■クライアントメッセージログファイル

HADBクライアントが出力するメッセージは，クライアントディレクトリ下に作成されるファイルにメッセージログとして格納されます。このファイルをクライアントメッセージログファイルといいます。

クライアントメッセージログファイルは，HADBクライアントに4つ作成されます。作成されるクライアントメッセージログファイルのファイルサイズの最大容量は，環境変数ADBMSGLOGSIZEで指定できます。

(4)　syslog

syslogにメッセージが出力されます。syslogに出力されるメッセージの種別は，HADBサーバの環境変数ADBSYSLOGLVで指定できます。

10.4.2　メッセージログの参照方法（メッセージログの出力先）

HADBが出力したメッセージは，メッセージログとしてメッセージログファイルおよびsyslogに出力されます。メッセージログは，HADBが出力するメッセージの履歴情報として，次に示す場合に利用します。

HADBが出力したメッセージを確認する場合

HADBに障害が発生したときに原因を調べる場合

HADBサーバおよびHADBクライアントのメッセージログファイルに出力されたメッセージログは，テキストエディタを使用して参照できます。syslogに出力されたメッセージログは，OSで決められた手順に従って参照してください。

HADBサーバ，およびHADBクライアントに作成されるメッセージログファイルの格納先を次に示します。ファイル名のXXは通番であり，01〜04のどれかになります。

HADBサーバの場合（サーバメッセージログファイル）

$ADBDIR/spool/adbmessageXX.log

HADBクライアント（Linux版）の場合（クライアントメッセージログファイル）

$ADBCLTDIR/spool/adbmessagecltXX.log

HADBクライアント（Windows版）の場合（クライアントメッセージログファイル）

%ADBCLTDIR%¥spool¥adbmessagecltXX.log

10.4.3　メッセージログファイルの運用

HADBサーバおよびHADBクライアントは，それぞれメッセージログファイルを4つ作成して使用します。

1つのメッセージログファイルの最大容量は，環境変数ADBMSGLOGSIZEに指定した値になります。1つのメッセージログファイルが最大容量に達すると，HADBはKFAA80099-Iメッセージを出力してから，そのメッセージログファイルへのメッセージログの出力をやめて，次のメッセージログファイルにメッセージログを出力します。このとき，切り替え先のメッセージログファイルに格納されている古いメッセージログは削除されます。切り替え前のメッセージログファイルに格納されているメッセージログを保存しておきたい場合は，メッセージログファイルのバックアップを取得してください。

HADBサーバに作成される4つのサーバメッセージログファイルを例に，メッセージログファイルの切り替えを次の図に示します。

図10‒7　メッセージログファイルの切り替え

［説明］

メッセージログが出力されてadbmessage01.logが最大容量に達すると，メッセージログの出力先はadbmessage02.logに切り替わります。

adbmessage01.logのときと同じようにadbmessage02.logが最大容量に達すると，メッセージログの出力先はadbmessage03.logに切り替わります。adbmessage03.logが最大容量に達したときも同様に，adbmessage04.logに切り替わります。

adbmessage04.logが最大容量に達すると，メッセージログの出力先はadbmessage01.logに切り替わります。その際，adbmessage01.logに格納されている古いメッセージログが削除されてから，メッセージログが出力されます。

なお，HADBサーバを開始したときには，サーバメッセージログファイルの切り替えは行われません。そのため，前回HADBサーバを終了したときに出力先となっていたサーバメッセージログファイルに対して出力されます。

メッセージログが出力されているメッセージログファイルを確認したい場合は，OSのlsコマンドなどでファイルの最終更新日時を確認してください。最終更新日時が新しいファイルが，現在使用しているメッセージログファイルです。

ただし，メッセージログファイルをテキストエディタなどで更新してしまい，最終更新日時が変更された場合は，各メッセージログファイルに出力されたメッセージのうち，メッセージの付加情報に示されている出力日時が最も新しいメッセージを格納しているメッセージログファイルに，出力先が変更されます。

メモ

HADBクライアントのクライアントメッセージログファイルも，同じ運用になります。

10.4.4　メッセージログファイルの縮退状態

メッセージログファイルを格納しているディスクの空き容量が少なくなったことをHADBサーバが検知した場合，ディスクの空き容量に応じて出力可能な範囲でメッセージログを出力します。この状態をメッセージログファイルの縮退状態といいます。

メッセージログファイルが縮退状態になった場合，メッセージの出力先が次のメッセージログファイルに切り替わります。このとき，切り替え先のメッセージログファイル中のメッセージが削除されます。メッセージログファイルの切り替えが完了したあとに，警告メッセージKFAA40025-Wが切り替え先のメッセージログファイルとsyslogに出力されます。ただし，Windows版のHADBクライアントのメッセージログファイルが縮退状態になった場合は，HADBクライアントのメッセージログファイルにだけKFAA40025-Wメッセージが出力されます。

なお，HADBクライアントでSQL文を実行した延長で，HADBサーバのサーバメッセージログファイルが縮退状態になった場合は，HADBクライアントのメッセージログファイルにもKFAA40025-Wメッセージが出力されます。

メモ

強制的にメッセージログファイルを切り替える処理は，縮退状態になったときに一度だけ行われます。KFAA40025-Wメッセージも，縮退状態になったときに1回だけ出力されます。メッセージログファイルが縮退状態の間は，切り替え先のメッセージログファイルにメッセージを出力できる場合は出力しますが，出力できない場合はメッセージを出力しません。切り替え先のメッセージログファイルの容量が環境変数ADBMSGLOGSIZEで指定したサイズになった場合，それ以上メッセージは出力されません。

メッセージログファイルが縮退状態となりメッセージログファイルが切り替わっても，切り替え前のメッセージログファイルにKFAA80099-Iメッセージ（メッセージログファイルの出力先が変わったときに出力されるメッセージ）は出力されません。

メッセージログファイルを格納しているディスクの空き容量が，環境変数ADBMSGLOGSIZEの指定値×2以上になったときにSQL文またはコマンドが実行されると，メッセージログファイルは自動的に正常状態に戻ります。その後，メッセージログファイルを格納しているディスクの空き容量が少なくなったことをHADBサーバが再度検知した場合は，メッセージログファイルは再度縮退状態になります。

メモ

環境変数ADBMSGLOGSIZEには，1つのメッセージログファイルの最大容量をメガバイト単位で指定します。ADBMSGLOGSIZEの指定を省略した場合は，1つのメッセージログファイルの最大容量は16メガバイトになります。

HADBサーバのメッセージログファイルが縮退状態かどうかをコマンドで確認する方法

adbls -d srvコマンドを実行すると，HADBサーバのメッセージログファイルが縮退状態かどうかを確認できます。実行結果のMSGLOG_STATUS欄を確認します。

（例）

adbls -d srv

SVID   STATUS   START_TIME            MSGLOG_STATUS
5360   ACTIVE   2017/02/02 09:31:04   FALLBACK

MSGLOG_STATUS欄にFALLBACKが表示されている場合は，HADBサーバのメッセージログファイルは縮退状態になっています。正常な状態の場合は，NORMALが表示されます。

メッセージログファイルの縮退状態を解除する方法については，「16.16.1　メッセージログファイルの縮退状態を解除する方法」を参照してください。

10.4.5　メッセージの出力抑止

サーバ定義のadb_sys_mlg_message_suppressオペランドにメッセージIDを指定すると，そのメッセージのメッセージログファイルおよびsyslogへの出力を抑止することができます。

＜指定例＞

set adb_sys_mlg_message_suppress = 82000,82002,82003

上記の指定をした場合，KFAA82000-I，KFAA82002-I，およびKFAA82003-Iメッセージが，メッセージログファイルとsyslogに出力されなくなります。

重要

出力抑止できるメッセージは，サーバプロセスが出力するメッセージだけです。コマンドプロセスおよびクライアントプロセスが出力するメッセージは出力抑止できません。コマンドプロセスおよびクライアントプロセスが出力するメッセージ（70000番台と90000番台のメッセージIDが該当）を指定しても，そのメッセージの出力は抑止されません。

エラーメッセージ（KFAAxxxxx-Eメッセージ）の出力を抑止すると，エラー要因の特定が困難になります。そのため，エラーメッセージを出力抑止することは推奨しません。

10.4.6　syslogへのメッセージの出力抑止

HADBはシステムの稼働状況を知らせるメッセージとして，障害情報，トランザクション情報，システムファイルの情報などをsyslogに出力します。これらのメッセージは，HADBの稼働状況を知るための重要な情報です。

しかし，稼働環境によっては大量のメッセージが出力されることがあります。HADBのメッセージが出力されることによってsyslogの容量が増加し続けると，ディスクの空き容量が不足する原因となります。この場合，syslogに出力されるメッセージのうち，不要なメッセージの出力を抑止することで，ディスクの空き容量不足を防止できます。

syslogに出力されるメッセージを抑止する場合は，環境変数ADBSYSLOGLVでメッセージの出力レベルを設定してください。環境変数ADBSYSLOGLVについては，「8.4　環境変数の設定」を参照してください。

メッセージの出力レベルとsyslogに出力されるメッセージの内容を次の表に示します。

表10‒8　メッセージの出力レベルとsyslogに出力されるメッセージの内容

出力レベル

出力されるメッセージの内容

0

syslogにメッセージは出力されません。

1

次に示すメッセージだけがsyslogに出力されます。

メッセージログファイルに異常が発生していることを示す警告メッセージ

プロセスダウンなどの致命的な障害を示すエラーメッセージ

ユーザからの応答が必要な応答メッセージ

2

出力レベル1のときに出力されるメッセージ，および次に示すメッセージがsyslogに出力されます。

HADBの障害を示すエラーメッセージ

HADBの起動および終了などを示すインフォメーションメッセージ

3

出力レベル1〜2のときに出力されるメッセージ，および次に示すメッセージがsyslogに出力されます。

業務レベルでの障害などを示すエラーメッセージ

4

出力レベル1〜3のときに出力されるメッセージ，および次に示すメッセージがsyslogに出力されます。

処理続行に支障はないが，ユーザに状況（障害）を通知する警告メッセージ

5

出力レベル1〜4のときに出力されるメッセージ，および次に示すメッセージがsyslogに出力されます。

スレッド起動，コネクション確立などの情報を示すインフォメーションメッセージ

6

syslogに出力されるメッセージはすべて出力されます。

各メッセージの出力レベルについては，マニュアルHADB　メッセージのメッセージの出力先一覧を参照してください。

10.4.7　syslogの文字コード変換と信頼性向上（拡張SYSLOG機能の適用）

拡張SYSLOG機能を適用すると，次に示す運用を実現できます。

syslogの文字コード変換（Shift-JISからUnicodeへの変換）

syslogの信頼性向上（メッセージの再出力）

メモ

拡張SYSLOG機能は，日立サポート360のログ環境強化サポートオプションで提供される機能です。

拡張SYSLOG機能を適用すると実現できる運用について，次で説明します。

(1)　syslogの文字コード変換（Shift-JISからUnicodeへの変換）

HADBサーバで使用する文字コードがShift-JISの場合に，syslogに出力されるメッセージの文字コードをShift-JISからUnicode（UTF-8）に変換します。

syslogに出力されるメッセージの文字コードがUnicode（UTF-8）に統一されることで，次のメリットがあります。

syslogを参照するときに，メッセージの文字化けを防ぐことができる

メッセージの監視や管理が容易になる

なお，syslogの文字コード変換は，次に示す環境変数にShift-JISを適用したときだけ有効です。

■対象の環境変数

LANG

ADBLANG

環境変数については，「8.4　環境変数の設定」を参照してください。

(2)　syslogの信頼性向上（メッセージの再出力）

syslogへのメッセージの出力に失敗した場合に，再度メッセージの出力を行います。そのため，syslogへのメッセージの出力に失敗しても，メッセージが出力されないまま消失するのを防げます。

(3)　前提ソフトウェアおよび注意事項（拡張SYSLOG機能の適用）

拡張SYSLOG機能を適用したい場合，HADBサーバを開始する前に，次に示す前提ソフトウェアをインストールする必要があります。

前提ソフトウェア

HA Logger Kit for Linux（拡張SYSLOG機能）

RHEL 8の場合：04-00-/A以降

RHEL 9の場合：06-00-01以降

Hitachi Code Converter※：04-00以降

注※

syslogの文字コード変換（Shift-JISからUnicodeへの変換）を実現したい場合にインストールする必要があります。

なお，RHEL 10では，拡張SYSLOG機能は適用できません。

重要

マルチノード機能を使用する場合，またはコールドスタンバイ構成の場合は，すべてのサーバマシンに前提ソフトウェアをインストールしてください。

前提ソフトウェアをインストールしている場合は，HADBサーバの開始時に，KFAA50050-Iメッセージが，syslogおよびサーバメッセージログファイルに出力されます。KFAA50050-Iメッセージは，拡張SYSLOG機能が適用されたことを示すメッセージです。

なお，HADBサーバが起動している状態で，前提ソフトウェアをインストールしても，拡張SYSLOG機能は適用されません。HADBサーバを起動している場合は，次の手順で前提ソフトウェアをインストールしてください。

手順

HADBサーバを正常終了する

前提ソフトウェアをインストールする

HADBサーバを開始する

また，HADBサーバがインストールされているサーバマシンの環境変数ADBSYSLOGLVに0を指定している場合も，拡張SYSLOG機能は適用されません。syslogにメッセージが出力されないためです。

HA Logger Kit for Linux（拡張SYSLOG機能）のインストール方法については，取扱説明書 HA Logger Kit for Linux 高信頼ログ基盤拡張SYSLOG機能を参照してください。Hitachi Code Converterのインストール方法については，マニュアルHitachi Code Converter（UNIX編）を参照してください。

10.5　リソースの使用状況の監視（監視対象メッセージの一覧）

ここでは，HADBサーバが使用するリソースの状態を監視する場合に，監視する必要があるメッセージについて説明します。

HADBサーバは，各種リソースを使用して稼働します。そのため，次に示す事象が発生すると，HADBサーバの稼働状況に影響が出るおそれがあります。

サーバマシンやOSのリソース（ディスク，CPU，メモリなど）が不足したとき

HADBサーバが管理するリソース（接続数，チャンク数など）が不足したとき

ディスク障害やネットワーク障害が発生したとき

排他制御による処理の待ち状態が発生したとき

このような事象が発生した場合には，発生した事象に対して速やかに対処する必要があります。そのため，HADB管理者は，HADBサーバが出力するメッセージを確認して，リソースの使用状況を監視してください。

HADBサーバが使用するリソースと監視対象メッセージの一覧を，次の表に示します。各メッセージが出力されたときの対処方法については，マニュアルHADB　メッセージを参照してください。

表10‒9　HADBサーバが使用するリソースと監視対象メッセージの一覧

項番

リソースの種類

監視対象のメッセージ

説明

1

排他資源

KFAA31371-E

KFAA31663-E

KFAA40005-E

KFAA50290-E

左記のメッセージが出力された場合は，排他資源の確保待ちが発生しています。

対処方法については，各メッセージの対策欄を参照してください。

なお，排他資源の確保待ちの発生状況を確認する方法については，「10.8.3　排他資源の確保待ちの発生状況を確認する方法」を参照してください。

また，排他資源の確保待ちが繰り返し発生する場合は，排他資源を確保したAPやコマンドが長時間実行されている可能性があります。「10.8.1　APおよびコマンドの処理状況を確認する方法」も参照してください。

2

メモリ

HADBサーバが管理するメモリ

KFAA40021-W

KFAA40024-I

KFAA40021-Wメッセージは，HADBサーバのメモリ使用量が，サーバ定義のadb_sys_memory_limit_wrn_pntオペランド（HADBサーバのメモリ使用量に関する警告メッセージの出力契機）に指定した比率以上になったときに出力される警告メッセージです。KFAA40021-Wメッセージが出力された場合は，HADBサーバのメモリ使用状況を確認してください。確認方法については，「10.6.3　リアルスレッドごとのメモリの使用状況を確認したい場合」を参照してください。

KFAA40024-Iメッセージは，HADBサーバのメモリ使用量が，サーバ定義のadb_sys_memory_limit_wrn_pntオペランド（警告メッセージの出力済み状態のリセット契機）に指定した比率以下になったときに出力されるインフォメーションメッセージです。

［マルチノード機能］

マルチノード機能を使用している場合，左記のメッセージは全ノードで出力される可能性があります。

3

KFAA30930-E

KFAA40007-E

KFAA40203-E

KFAA40212-E

KFAA51011-W

KFAA96605-E

左記のメッセージが出力された場合は，HADBサーバが管理するメモリが不足しています。

SQL文またはコマンドを実行した場合に，メモリ不足が発生すると，次に示すメッセージが出力されます。

SQL文を実行した場合

KFAA30930-E

KFAA40007-E

KFAA51011-W

コマンドを実行した場合

KFAA40007-E

KFAA40203-E

KFAA40212-E

KFAA96605-E

上記のメッセージが出力されたときの対処方法については，KFAA40007-Eメッセージの対策欄を参照してください。

また，adbstatコマンドを定期的に実行して，HADBサーバが使用するメモリの使用状況を確認してください（メモリの使用量が上限値に近づいていないかを確認してください）。詳細については，「10.6.1　全メモリの使用状況を確認したい場合」を参照してください。

4

KFAA51286-W

クラウドストレージ機能で使用するキャッシュファイルの操作中にメモリ不足が発生しています。対処方法については，メッセージの対策欄を参照してください。対処をすると，キャッシュできるデータが多くなり，処理時間が短縮できる可能性があります。

5

HADBサーバが使用するライブラリで使用するメモリ

KFAA40207-E

KFAA40208-E

KFAA40293-E

KFAA91000-E

KFAA92000-E

KFAA96211-E

KFAA96457-E

左記のメッセージが出力された場合は，HADBサーバが使用するライブラリで使用するメモリが不足しています。

コマンドを実行した場合に，メモリが不足していると，左記のメッセージが出力されます。

対処方法については，各メッセージの対策欄を参照してください。

6

クラウドストレージ機能で使用するキャッシュファイルの再利用

KFAA51281-W

左記のメッセージが出力された場合は，キャッシュファイルの再利用時に使用するメモリが不足しています。

対処方法については，メッセージの対策欄を参照してください。対処が完了すると，キャッシュファイルが再利用できます。

7

共有メモリ

KFAA40002-E

左記のメッセージが出力された場合は，共有メモリにアクセスしたときにエラーが発生しています。

対処方法については，メッセージの対策欄を参照してください。

8

CPU

なし

HADBサーバは，CPU利用率に関するメッセージを出力しません。

HADBサーバのCPU利用率を監視したい場合は，次に示すOSのコマンドを実行してください。

sarコマンド

mpstatコマンド

topコマンド

9

プロセス間通信

KFAA30722-E

KFAA30723-E

KFAA50300-E

KFAA50301-E

KFAA50303-E

KFAA50304-E

KFAA50305-E

KFAA50306-E

KFAA50307-E

KFAA50308-E

KFAA50309-E

KFAA50310-E

KFAA50311-E

左記のメッセージが出力された場合は，HADBサーバのプロセス間通信でエラーが発生しています。

対処方法については，各メッセージの対策欄を参照してください。

10

ディレクトリ

DBディレクトリ

KFAA30959-E

左記のメッセージが出力された場合は，DBディレクトリにアクセスしたときにエラーが発生しています。

対処方法については，メッセージの対策欄を参照してください。

11

アーカイブディレクトリ

KFAA31666-E

左記のメッセージが出力された場合は，アーカイブディレクトリにアクセスしたときにエラーが発生しています。

対処方法については，メッセージの対策欄を参照してください。

12

KFAA61212-W

左記のメッセージが出力された場合は，アーカイブディレクトリに対する削除処理でエラーが発生しています。

対処方法については，メッセージの対策欄を参照してください。

13

ファイル

メッセージログファイル

KFAA40025-W

左記のメッセージが出力された場合は，次に示すどちらかのメッセージログファイルが縮退状態になっています。

サーバメッセージログファイル

クライアントメッセージログファイル

左記のメッセージが出力された場合は，メッセージログファイルの縮退状態を解除してください。縮退状態の解除方法については，「16.16.1　メッセージログファイルの縮退状態を解除する方法」を参照してください。

なお，左記のメッセージは，メッセージログファイルに出力できない場合でもsyslogには出力されます。そのため，メッセージログファイルとともにsyslogも監視してください。

14

KFAA50057-W

［マルチノード機能］

左記のメッセージが出力された場合は，どこかのノードでメッセージログファイルが縮退状態になっています。この場合，メッセージログファイルの縮退状態を解除してください。縮退状態の解除方法については，「16.16.1　メッセージログファイルの縮退状態を解除する方法」を参照してください。

15

KFAA80099-I

左記のメッセージが出力された場合は，次に示すどちらかのメッセージログファイルの切り替えが発生しています。

サーバメッセージログファイル

クライアントメッセージログファイル

切り替え前のメッセージログファイル中のメッセージログを保存しておきたい場合は，メッセージログファイルのバックアップを取得してください。

16

DBエリアファイル

KFAA30959-E

KFAA60014-W

左記のメッセージが出力された場合は，各ファイルに対する操作に失敗しています。

対処方法については，各メッセージの対策欄を参照してください。

17

アーカイブファイル

18

システムファイル

19

ADB_CSVREAD関数の入力情報となるCSVファイル

20

コマンドの操作対象ファイル

KFAA40204-E

KFAA40205-E

21

HADBダンプファイル

KFAA40015-E

KFAA40016-E

22

メッセージカタログファイル

KFAA50018-E

KFAA50019-E

23

共有メモリID格納ファイル

KFAA50028-E

24

共有メモリダンプファイル

KFAA50029-E

25

セマフォ集合ID格納ファイル

KFAA50037-E

26

コマンドステータスファイル

KFAA50243-E

27

作業用一時ファイル

KFAA50245-E

28

インデクスレコードファイル

KFAA50246-E

29

SQLトレースファイル

KFAA51010-W

30

同義語辞書ファイル

KFAA30959-E

KFAA34008-E

31

KFAA51537-W

［マルチノード機能］

左記のメッセージが出力された場合は，サーバ定義のadb_syndict_node_storage_pathオペランドに指定したディレクトリに，最新の同義語辞書ファイルが格納されていません。この場合，同義語検索の性能が低下するおそれがあります。

対処方法については，メッセージの対策欄を参照してください。

32

アンロードファイル

KFAA61400-W

左記のメッセージが出力された場合は，adbreorgsystemdataコマンドを実行したときに一時的に作成されるアンロードファイルの削除に失敗しています。

対処方法については，メッセージの対策欄を参照してください。

33

監査証跡ファイル

KFAA51404-E

左記のメッセージが出力された場合は，監査証跡ファイルに対する操作が失敗しています。

対処方法については，メッセージの対策欄を参照してください。

34

KFAA51411-W

監査証跡ファイルの切り替え時に，現用の監査証跡ファイルが見つからない場合に，左記のメッセージが出力されます。現用の監査証跡ファイルに出力された監査証跡が失われたおそれがあります。

35

KFAA81401-I

左記のメッセージが出力された場合は，監査証跡ファイルの切り替えが行われました。

監査証跡ファイルに対する次の操作を実行する場合に，左記のメッセージを監視してください。

監査証跡ファイルを，監査証跡の出力先ディレクトリから監査証跡の保存先ディレクトリに移動する

監査証跡ファイルを，統一フォーマット用監査証跡ファイルに変換する

36

KFAA81402-I

左記のメッセージが出力された場合は，監査証跡ファイルのリネームが行われました。

監査証跡ファイルに対する次の操作を実行する場合に，左記のメッセージを監視してください。

監査証跡ファイルを，監査証跡の出力先ディレクトリから監査証跡の保存先ディレクトリに移動する

監査証跡ファイルを，統一フォーマット用監査証跡ファイルに変換する

37

更新行のカラム化機能で使用するファイル

KFAA41220-W

左記のメッセージが出力された場合は，更新行のカラム化機能で使用するファイルにエラーが発生しています。

対処方法については，メッセージの対策欄を参照してください。

38

クラウドストレージ機能で使用するキャッシュファイル

KFAA41235-E

KFAA41238-W

KFAA51285-W

キャッシュファイルを格納しているストレージの容量が不足しています。サーバ定義のadb_sys_cld_cache_total_sizeオペランド，またはadbcachegrpオペランドの-sオプションに指定した上限値までキャッシュファイルを作成できません。そのため，検索系SQLやデータインポートなどの処理で性能が低下するおそれがあります。

対処方法については，メッセージの対策欄を参照してください。

39

クラウドストレージ機能で使用するキャッシュファイルの再利用

KFAA81261-I

KFAA81262-I

キャッシュファイルの再利用ができなかったときに出力されるメッセージです。

対処方法については，メッセージの対策欄を参照してください。対処が完了すると，キャッシュファイルが再利用できます。

40

ノード

マルチノード機能

KFAA50053-E

KFAA50153-E

KFAA50154-W

KFAA60008-W

KFAA60009-E

KFAA60010-W

左記のメッセージが出力された場合は，メッセージが出力されたノードで異常が発生しています。

対処方法については，各メッセージの対策欄を参照してください。

41

DBエリア

KFAA30756-E

KFAA41206-I

KFAA61210-E

左記のメッセージが出力された場合は，ディスクの空き容量が不足しており，対象のDBエリアにデータを格納できません。

対処方法については，各メッセージの対策欄を参照してください。

42

KFAA41230-W

データ用DBエリアの使用率が，サーバ定義のadb_dbarea_wrn_pnt_use_rateオペランドに指定した使用率に達したときに左記のメッセージが出力されます。必要に応じてデータ用DBエリアを拡張してください。

マルチノード機能を使用していない場合のデータ用DBエリアの拡張方法については，「11.13.3　データ用DBエリアを拡張する方法（データ用DBエリアファイルの追加）」を，マルチノード機能を使用している場合のデータ用DBエリアの拡張方法については，「18.11.3　データ用DBエリアの追加・削除・拡張（マルチノード機能の使用時）」の「(3)　データ用DBエリアを拡張する方法（データ用DBエリアファイルの追加）」を参照してください。

adb_dbarea_wrn_pnt_use_rateオペランドについては「7.2.4　状態監視に関するオペランド（set形式）」のadb_dbarea_wrn_pnt_use_rateオペランドを参照してください。

43

ログファイル

KFAA31711-E

KFAA41210-E

左記のメッセージが出力された場合は，ユーザログファイル数が不足しています。

対処方法については，各メッセージの対策欄を参照してください。

なお，サーバ定義adb_log_usrfile_numオペランドの指定を省略すると，ユーザログファイル数の不足によるエラーは発生しません。サーバ定義adb_log_usrfile_numオペランドについては，「7.2.3　システムログに関するオペランド（set形式）」のadb_log_usrfile_numオペランドを参照してください。

44

KFAA61211-E

左記のメッセージが出力された場合は，システムログファイルが格納されているディスクの空き容量が不足しています。

対処方法については，メッセージの対策欄を参照してください。

45

KFAA81215-I

左記のメッセージが出力された場合は，データベースの回復処理が行われています。

対処方法については，メッセージの対策欄を参照してください。

左記のメッセージは，データベースの回復処理が完了するまで，サーバ定義のadb_log_rec_msg_intervalオペランドに指定された間隔で出力されます。サーバ定義のadb_log_rec_msg_intervalオペランドについては，「7.2.3　システムログに関するオペランド（set形式）」のadb_log_rec_msg_intervalオペランドを参照してください。

46

バッファ

KFAA30919-E

KFAA41201-E

左記のメッセージが出力された場合は，バッファ面数が不足しています。

対処方法については，各メッセージの対策欄を参照してください。

47

KFAA30953-E

KFAA41202-E

左記のメッセージが出力された場合は，バッファの負荷が高い状態になっています。

対処方法については，KFAA41202-Eメッセージの対策欄を参照してください。

48

チャンク

KFAA51245-E

左記のメッセージが出力された場合は，チャンク数の最大値を超えるため，新たにチャンクを作成できません。1DBエリア内に作成できるチャンク数の上限を超えようとしています。

対処方法については，メッセージの対策欄を参照してください。

49

KFAA51246-E

左記のメッセージが出力された場合は，チャンク数の最大値を超えるため，新たにチャンクを作成できません。1表に作成できるチャンク数の上限を超えようとしています。

対処方法については，メッセージの対策欄を参照してください。

50

ハッシュテーブル領域

KFAA51130-W

左記のメッセージが出力された場合は，ハッシュテーブル領域が不足したため，作業表が作成されています。

対処方法については，メッセージの対策欄を参照してください。

また，ハッシュテーブル領域が不足しても問題がないかを確認してください（データベースの設計上，ハッシュテーブル領域が不足することについて，想定されているかを確認してください）。

51

コネクション

KFAA40020-W

KFAA40023-I

KFAA40020-Wメッセージは，HADBサーバへの接続数が，サーバ定義のadb_sys_max_users_wrn_pntオペランド（最大同時接続数に関する警告メッセージの出力契機）に指定した比率以上になったときに出力される警告メッセージです。KFAA40020-Wメッセージが出力された場合は，不当に接続しているAPまたはコマンドがないかを確認してください。確認方法については，「10.8.1　APおよびコマンドの処理状況を確認する方法」を参照してください。

KFAA40023-Iメッセージは，HADBサーバへの接続数が，サーバ定義のadb_sys_max_users_wrn_pntオペランド（警告メッセージの出力済み状態のリセット契機）に指定した比率以下になったときに出力されるインフォメーションメッセージです。

なお，クライアントグループ機能を使用している場合は，adb_sys_max_users_wrn_pntオペランドではなく，adbcltgrpオペランドの-wオプションに指定した次の値が適用されます。

最大同時接続数に関する警告メッセージの出力契機

警告メッセージの出力済み状態のリセット契機

［マルチノード機能］

マルチノード機能を使用している場合，左記のメッセージはプライマリノードに出力されます。

52

KFAA30932-E

左記のメッセージが出力された場合は，APまたはコマンドがHADBサーバに接続できません。HADBサーバへの接続数が，最大同時接続数を超えています。

対処方法については，メッセージの対策欄を参照してください。

また，サーバ定義adb_sys_max_usersオペランドの値が適切かどうかについて確認してください。サーバ定義adb_sys_max_usersオペランドについては，「7.2.1　システム構成に関するオペランド（set形式）」のadb_sys_max_usersオペランドを参照してください。

53

文ハンドル

KFAA30931-E

左記のメッセージが出力された場合は，文ハンドルの数が上限を超えています。

対処方法については，メッセージの対策欄を参照してください。

54

実表

KFAA30811-E

KFAA30812-E

左記のメッセージが出力された場合は，システム内で定義できる実表やインデクスの数が上限を超えています。または，対象のDBエリア内に格納できる実表やインデクスの数が上限を超えています。

対処方法については，各メッセージの対策欄を参照してください。

55

インデクス

56

ビュー表

KFAA30811-E

左記のメッセージが出力された場合は，システム内で定義できるビュー表の数が上限を超えているか，またはシステム内で定義できる実表と外部表の合計数が上限を超えています。

対処方法については，メッセージの対策欄を参照してください。

57

外部表

58

ディクショナリ表（実表）

KFAA61213-W

KFAA61214-W

左記のメッセージが出力された場合は，ディクショナリ用DBエリアまたはシステム表用DBエリアの未使用セグメントが少なくなっています。そのため，adbreorgsystemdataコマンドでディクショナリ表またはシステム表を再編成する必要があります。

対処方法については，各メッセージの対策欄を参照してください。

59

システム表（実表）

60

HADBユーザ

KFAA30811-E

左記のメッセージが出力された場合は，システム内で定義できるHADBユーザの数が上限を超えています。

対処方法については，メッセージの対策欄を参照してください。

61

S3バケットまたはコンテナー

KFAA31738-E

KFAA41236-E

KFAA41237-E

KFAA51287-E

KFAA51288-E

左記のメッセージが出力された場合は，S3バケットまたはコンテナーに対する操作に失敗しています。

対処方法については，メッセージの対策欄を参照してください。

10.6　メモリの使用状況の確認

ここでは，HADBサーバが使用するメモリの使用状況を知る方法を説明します。

10.6.1　全メモリの使用状況を確認したい場合

HADBサーバが使用する全メモリの使用状況を確認したい場合，HADBサーバでadbstatコマンドを実行してください。ここでは，全メモリの使用状況を確認するタイミング，および使用状況の確認方法について説明します。

adbstatコマンドのオプション，および各出力項目についてはマニュアルHADB　コマンドリファレンスのadbstat（HADBサーバの統計解析）を参照してください。

(1)　全メモリの使用状況を確認するタイミング

HADBサーバが使用している全メモリサイズが，サーバ定義に指定したメモリサイズと合っているかどうかを確認するため，定期的に全メモリの使用状況を確認してください。

(2)　全メモリの使用状況の確認方法

adbstatコマンドを実行して全メモリの使用状況を確認する方法を，次に示します。

■実行するコマンド

adbstat

adbstatコマンドを実行して出力される「HADBサーバの統計情報」のうち，次に示す情報を確認してください。

Total_memory_max_size（全メモリの最大使用量）

そのあとで，Total_memory_max_sizeの値と，サーバ定義adb_sys_memory_limitオペランドの指定値を確認してください。なお，サーバ定義adb_sys_memory_limitオペランドを指定していない場合は，次に示すオペランドの指定値を確認してください。

adb_sys_rthd_area_maxオペランド

adb_sys_proc_area_maxオペランド

もし，Total_memory_max_sizeの値と，サーバ定義のオペランドに指定した値が大きく異なっている場合は，メモリサイズが適切に設定されていないことが考えられます。

その場合，サーバ定義のオペランドの指定値を，Total_memory_max_sizeの値より大きい値に変更してください。

10.6.2　共有メモリの使用状況を確認したい場合

共有メモリの使用状況を確認したい場合，HADBサーバでadbls -d shmコマンドを実行してください。HADBサーバが使用している共有メモリの合計値が表示されます。ここでは，共有メモリの使用状況を確認するタイミング，使用状況の確認方法，および空きメモリ量が少ない場合の対処方法について説明します。

adbls -d shmコマンドのオプション，および出力される内容についてはマニュアルHADB　コマンドリファレンスのadbls -d shm（共有メモリの情報表示）を参照してください。

(1)　共有メモリの使用状況を確認するタイミング

共有メモリの空きメモリ量が不足しないよう，定期的に共有メモリの使用状況を確認してください。

共有メモリの空きメモリ量が不足してメモリが確保できなくなると，エラーメッセージが出力されるため，エラーメッセージに従って対処してください。その際，adbls -d shmコマンドを実行して共有メモリの使用状況を確認してください。

(2)　共有メモリの使用状況の確認方法

adbls -d shmコマンドを実行して出力された共有メモリの使用状況を次に示します。

■共有メモリの使用状況の例

SHM_NUMBER   SHM_SIZE
8            1424683947

共有メモリの使用状況の例を基に，確認方法について説明します。

確認手順

HADBサーバが使用している共有メモリの量は，SHM_SIZEに表示されている数値（単位：バイト）を確認してください。例の場合，1,424,683,947バイト（約1.4ギガバイト）を使用しています。

この数値と，OSのカーネルパラメタのSHMMAXに指定した値との差が小さい場合，共有メモリの空きメモリ量が不足していると判断できます。その場合は，「(3)　共有メモリの空きメモリ量が少ない場合の対処方法」を参照して対処してください。

差が大きい場合は，空きメモリ量が十分であると判断できるため，特に対応は不要です。

(3)　共有メモリの空きメモリ量が少ない場合の対処方法

SHM_SIZEとSHMMAXに指定した値と差が小さい場合，OSのカーネルパラメタのSHMMAX，SHMMNI，およびSHMALLに指定した値を増やすことを検討してください。

10.6.3　リアルスレッドごとのメモリの使用状況を確認したい場合

リアルスレッドごとのメモリ使用状況を確認したい場合は，HADBサーバでadbls -d memコマンドを実行してください。

adbls -d memコマンドのオプション，および出力される内容については，マニュアルHADB　コマンドリファレンスのadbls -d mem（メモリの使用状況の表示）を参照してください。

■メモリの使用状況を確認するタイミング

定期的に，各リアルスレッドのメモリ使用状況を確認してください。

■メモリの使用状況の確認方法

HADBサーバ，またはHADBサーバの各リアルスレッドのメモリ使用状況を知りたい場合は，次のコマンドを実行してください。

adbls -d mem

コマンドの実行結果の例

THREAD-NO   LIMIT         USE          FREE         MAX
0           1073741824    105840224    162660848    105840224
1           1073741824    901024       267600048    901056
2           1073741824    900512       267600560    900512
3           1073741824    900512       267600560    900512
4           1073741824    900512       267600560    900512
5           1073741824    900512       267600560    900512
:               :           :              :          :

［説明］

THREAD-NOが1以降の行に，リアルスレッドごとのメモリ使用状況が表示されます。0の行には，プロセス共通メモリに関する情報が表示されます。

LIMITには，HADBサーバが使用できるメモリ容量の上限値（単位：バイト）が表示されます。

USEには，HADBサーバが使用しているメモリ容量（単位：バイト）が表示されます。

FREEには，空いているメモリ容量（単位：バイト）が表示されます。

MAXには，過去にHADBサーバが使用したメモリ容量（単位：バイト）の最大値が表示されます。

各リアルスレッドがどのAPやコマンドで使用されているかを確認したい場合は，「10.7　HADBサーバで実行中のスレッドの確認」を参照してください。

10.7　HADBサーバで実行中のスレッドの確認

次に示すことをしたい場合は，adbls -d thdコマンドを実行してください。

HADBサーバで実行中のリアルスレッドおよび擬似スレッドを確認したい場合

リアルスレッドを使用しているコネクションやSQL文を特定したい場合

adbls -d thdコマンドの実行結果の例を次に示します。

［説明］

HADBサーバで実行中のスレッドの一覧が表示されます。

adbls -d thdコマンドの実行結果の各項目の説明については，HADB　コマンドリファレンスのadbls -d thd（スレッドの状態表示）の使用例を参照してください。

リアルスレッドを使用しているコネクションに対応するAPやコマンドの処理状況を確認したい場合は，「10.8.1　APおよびコマンドの処理状況を確認する方法」を参照してください。

10.8　トランザクションの処理状況の確認

ここでは，APやコマンドを実行した場合の，トランザクションの処理状況を確認する方法を説明します。

10.8.1　APおよびコマンドの処理状況を確認する方法

APやコマンドを実行したときにトランザクションの処理時間が予想より長い場合は，トランザクションの処理状況を確認して対処する必要があります。

トランザクションの処理状況を確認する方法を次に示します。なお，adbinitコマンドおよびadbstatコマンドの処理状況は確認できません。

確認手順

adbls -d cnctコマンドを実行する

項目「PROGRAM」に，対象のコネクションが表示されているかどうか確認してください。

■APの処理状況を確認したい場合

クライアント定義のadb_clt_ap_nameオペランドに指定したAP識別子が表示されます。adbls -d cnctコマンドの実行結果の例を次に示します。

実行結果の例

AP識別子が表示されている場合は手順3.に進んでください。

adb_clt_ap_nameオペランドを指定していない場合は，********が表示されます。その場合は，手順2.に進んでください。

メモ

SQL文が実行中の場合は，SQL_ELAPSED_TIMEに，実行開始から最も時間が経過しているSQL文の経過時間（マイクロ秒）が表示されます。

■コマンドの処理状況を確認したい場合

コネクションが確立している場合，対象のコマンド名（adbimportなど）が表示されます。adbsqlコマンドの場合は，クライアント定義のadb_clt_ap_nameオペランドに指定したAP識別子が表示されます。

表示されている場合は手順3.に進んでください。表示されていない場合は手順2.に進んでください。

adbls -d srvコマンドを実行する

対象のコネクションが表示されていない場合，HADBサーバが稼働中かどうかを確認してください。adbls -d srvコマンドの実行結果の例を次に示します。

実行結果の例

SVID  STATUS  START_TIME            MSGLOG_STATUS
6477  ACTIVE  2017/03/02 14:18:34   NORMAL

項目「STATUS」が"ACTIVE"の場合，HADBサーバは稼働中のため，手順6.に進んでください。

項目「STATUS」が"ACTIVE"以外の場合は，adbstartコマンドを実行してHADBサーバを開始してから，APやコマンドを再度実行してください。

コネクションIDを確認する

手順1.でadbls -d cnctコマンドを実行し対象のコネクションが表示されている場合，項目「CID」にコネクションIDが表示されているかどうか確認してください。コネクションIDが表示されている場合は手順4.に，表示されていない場合は手順6.に進んでください。

adbstat -c cnct -nコマンドを実行する

トランザクションの処理状況を確認するため，手順1.で確認したAP識別子を基に，adbstat -c cnct -nコマンドを実行してください。-nオプションには，AP識別子を指定してください。

コネクションの稼働情報が出力されるため，次に示す出力項目を確認してトランザクションの処理状況を確認します。

SQL_execute_wait_total_time（SQL文の実行待ち状態の合計時間）

SQL_execute_wait_cnt（SQL文の実行待ち状態の発生回数）

実行している各SQL文の実行時間

SELECT_total_time（SELECT文の実行時間）

INSERT_total_time（INSERT文の実行時間）

UPDATE_total_time（UPDATE文の実行時間）

DELETE_total_time（DELETE文の実行時間）

PURGE_CHUNK_total_time（PURGE CHUNK文の実行時間）

各出力項目の値が，前回adbstatコマンドを実行したときの結果と比較して増加している場合は，処理に時間が掛かっていることが確認できます。もし，処理中のトランザクションを強制終了したい場合は，手順5.に進んでください。

なお，初めてadbstatコマンドを実行した場合，または前回実行したadbstatコマンドの結果がわからない場合は，処理に時間が掛かっているかどうかを確認できません。

adbcancelコマンドを実行する

必要に応じて処理中のトランザクションを強制終了します。

処理中のトランザクションを強制終了する場合は，手順3.で確認したコネクションIDを-uオプションで指定して，adbcancelコマンドを実行してください。強制終了後，APやコマンドを再度実行してください。

APを調査する

HADBサーバが稼働中だが，コネクションIDが表示されていない場合，対象のAPがHADBサーバに接続できていません。そのため，APがHADBサーバに接続できるかどうか調査してください。また，クライアント定義のadb_clt_rpc_srv_hostオペランド，およびadb_clt_rpc_srv_portオペランドの指定値を見直してください。

10.8.2　処理リアルスレッドの確保待ちの発生状況を確認する方法

APやコマンドを実行したときに，処理リアルスレッドの確保待ちが発生しているかどうかを確認する方法について説明します。

確認手順

adbls -d cnctコマンドを実行する

項目「STATUS」を確認してください。THREAD_WAITINGが表示されている場合は，処理リアルスレッドの確保待ちが発生しています。

処理リアルスレッドを使用している，ほかのAPやコマンドの終了を待てない場合は，手順2.に進んでください。

adbcancelコマンドを実行する

処理リアルスレッドを使用している，ほかのAPやコマンドをadbcancelコマンドで強制終了してください。

APやコマンドを実行したときに，処理リアルスレッドの確保待ちの発生を防ぎたい場合は，「6.23.2　コマンドの実行時に使用する処理リアルスレッド数に関する考慮点」を参照してください。

adbls -d cnctコマンド，およびadbcancelコマンドについては，マニュアルHADB　コマンドリファレンスを参照してください。

10.8.3　排他資源の確保待ちの発生状況を確認する方法

APやコマンドを実行したときに，排他資源の確保待ちが発生しているかどうかを確認する方法について説明します。

確認手順

adbls -d cnctコマンドを実行する

対象のAP，またはコマンドのコネクションIDを確認します。項目「CID」を確認してください。

adbls -d lockコマンドを実行する

手順1.で確認したコネクションIDと，項目「CID」に表示されたコネクションIDを突き合わせてください。そのあとで，項目「STATUS」を確認してください。WAITINGが表示されている場合は，対象のAPまたはコマンドが使用する排他資源について，排他資源の確保待ちが発生しています。

排他資源を使用している，ほかのAPやコマンドの終了を待てない場合は，手順3.に進んでください。

adbcancelコマンドを実行する

排他資源を使用している，ほかのAPやコマンドをadbcancelコマンドで強制終了してください。

APやコマンドを実行したときに，排他資源の確保待ちの発生を防ぎたい場合は，「6.23.3　コマンド同時実行時の排他制御に関する考慮点」を参照して，排他資源の確保待ちが発生しないように注意してください。

adbls -d cnctコマンド，adbls -d lockコマンドおよびadbcancelコマンドについては，マニュアルHADB　コマンドリファレンスを参照してください。

メモ

排他資源の種別が表または前処理表の場合，adbls -d lockコマンドで出力される項目「RESOURCEID」で，表IDを確認できます。表IDをキーにすると，APまたはコマンドが確保要求を発行した表の表名がわかります。表IDから表の表名を確認する方法を次に示します。

表IDが0x00020001〜0x000200C8の場合

「付録B.1　ディクショナリ表の概要」の「(1)　ディクショナリ表の一覧」を参照すると，表IDから表の表名を確認できます。

表IDが0x000200C9〜0x00020190の場合

「付録C.1　システム表の概要」の「(1)　システム表の一覧」を参照すると，表IDから表の表名を確認できます。

上記以外の表IDの場合

「付録B.24　ディクショナリ表の検索」の「(1)　表IDから表の表名を調べる場合」を参照してディクショナリ表を検索すると，表IDから表の表名を確認できます。

10.8.4　トランザクションがロールバックしたときの状況を確認する方法

APまたはコマンドを実行したときに，トランザクションのロールバックが発生しているかどうかを確認する方法について説明します。また，トランザクションのロールバックが発生している場合に，ロールバックの進捗状況を確認する方法についても説明します。

■トランザクションがロールバックしているかどうかを確認する方法

トランザクションがロールバックしているかどうかを確認する場合，adbls -d cnctコマンドを実行してください。出力項目「STATUS」を確認して，"ROLLBACKING"となっているAPおよびコマンドがないかどうかを確認してください。"ROLLBACKING"となっている場合は，対象のAPやコマンドはロールバック中です。

■ロールバックの進捗状況を確認する方法

トランザクションのロールバックに想定以上の時間が掛かっている場合は，KFAA81215-Iメッセージが出力されているかどうかを確認してください。KFAA81215-Iメッセージを確認すると，トランザクションのロールバックに伴う，データベースの回復処理の進捗状況を確認できます。

KFAA81215-Iメッセージから，データベースの回復処理が完了して，後続の処理を再開できる時間を見積もってください。

なお，KFAA81215-Iメッセージは，サーバ定義のadb_log_rec_msg_intervalオペランドの指定値に従って，一定の間隔で出力されます。

■ロールバックが完了したあとに実施すること

トランザクションのロールバックが完了したあとで，KFAA81211-Iメッセージが出力されているかどうかを確認してください。KFAA81211-Iメッセージには，トランザクションの回復処理に関する情報が出力されます。

KFAA81211-Iメッセージを確認して，回復処理に時間が掛かったトランザクションについて，コミット回数を増やすなど，1トランザクションによるデータベースの更新量を減らすことを検討してください。

なお，KFAA81211-Iメッセージは，サーバ定義のadb_log_rec_msg_intervalオペランドの指定値よりも，回復処理に時間が掛かったトランザクションが存在する場合に出力されます。

また，KFAA81211-Iメッセージに出力されたトランザクションIDから，対象のトランザクションで実行されたSQL文を特定できます。トランザクションIDをキーにして，SQLトレース情報の「SQL文の実行情報」に出力されたtran_idの値を確認してください。トランザクションIDとtran_idが一致するSQL文が，対象のトランザクションで実行されたSQL文です。SQL文の実行情報については，「10.11.2　SQLトレース情報に出力される情報」の「(2)　SQL文の実行情報」を参照してください。

10.9　データベースの状態や使用量の確認

ここでは，adbdbstatusコマンドを使用して，HADBのデータベースの状態や使用量を確認する方法を説明します。

adbdbstatusコマンドについては，マニュアルHADB　コマンドリファレンスのadbdbstatus（データベースの状態解析）を参照してください。

10.9.1　データベースの使用量を確認したい場合

DBエリアのサマリ情報を取得すると，HADBのデータベース全体の使用量を確認できます。

実行するコマンドの例

ここでは，DBエリア全体のサマリ情報を出力します。

adbdbstatus -d summary -c dbarea -S M

コマンドを実行すると，標準出力にDBエリア全体のサマリ情報が出力されます。adbdbstatusコマンドによる出力結果の確認項目を次に示します。

(1)　各DBエリアの使用率を確認する場合

DBarea_nameの出力内容をキーにして，Used_ratioの出力内容を確認してください。Used_ratioの出力内容が100％に近い場合は，次のどれかの対策を検討してください。

DBエリアファイルがブロックスペシャルファイルのとき

この値が100％に近いときにデータの格納を続けると，DBエリアファイルが満杯となるおそれがあります。そのため，「16.3.1　DBエリアファイルの容量増加が原因の場合」を参照して，ブロックスペシャルファイルを格納しているディスクの空き容量を確保することを検討してください。

DBエリアファイルがレギュラーファイルのとき

この値が100％に近いときにデータの格納を続けると，DBエリアの自動増分が行われます。自動増分が行われると，DBエリアの容量が自動的に増加しますが，DBエリアファイル拡張時の更新処理の性能が低下します。もし，DBエリアの自動増分に失敗した場合は，「16.3.2　DBエリアの自動増分の失敗が原因の場合」を参照してください。

クラウドストレージ機能を使用しているとき

この値が100％に近いときにデータの格納を続けると，DBエリアの容量不足が発生するおそれがあります。adbmodareaコマンドでDBエリアを拡張することを検討してください。

(2)　各DBエリアの使用量を確認する場合

DBarea_nameの出力内容をキーにして，MB_Used_segmentsの出力内容を確認してください。各DBエリア内でデータを格納するために使用している領域を，メガバイト単位で確認できます。

10.9.2　実表の状態や使用量を確認したい場合

adbdbstatusコマンドで，表のサマリ情報を取得すると，実表の状態や使用量を確認できます。

(1)　実表が更新不可状態かどうかを確認する場合

実表が更新不可状態かどうかを確認する場合，次に示すadbdbstatusコマンドを実行してください。

実行するコマンドの例

ここでは，表ADBUSER01.T1のサマリ情報を出力します。

adbdbstatus -d summary -c table -n ADBUSER01.T1

adbdbstatusコマンドを実行すると，標準出力に表ADBUSER01.T1のサマリ情報が出力されます。

表のサマリ情報から，Non-updatableの出力内容を確認してください。non-updatableが出力されている場合，実表は更新不可状態となっています。

更新不可状態を解除するためには，Command_statusおよびRerun_commandの出力内容を確認して，Rerun_commandに出力されているコマンドを再実行してください。

(2)　実表の使用量を確認する場合

実表の使用量を確認する場合，次に示すadbdbstatusコマンドを実行してください。

実行するコマンドの例

ここでは，表ADBUSER01.T1のサマリ情報を出力します。

adbdbstatus -d summary -c table -n ADBUSER01.T1 -S M --shared-lock

adbdbstatusコマンドを実行すると，標準出力に表ADBUSER01.T1のサマリ情報が出力されます。

表のサマリ情報から，MB_Used_pagesの出力内容を確認してください。DBエリア内に格納されている実表のデータが使用している領域を，メガバイト単位で確認できます。

10.9.3　B-treeインデクスの状態や使用量を確認したい場合

adbdbstatusコマンドで，インデクスのサマリ情報を取得すると，B-treeインデクスの状態や使用量を確認できます。

(1)　B-treeインデクスが未完状態かどうかを確認する場合

B-treeインデクスが未完状態かどうかを確認する場合，次に示すadbdbstatusコマンドを実行してください。

実行するコマンドの例

ここでは，B-treeインデクスADBUSER01.IDX1のサマリ情報を出力します。

adbdbstatus -d summary -c index -n ADBUSER01.IDX1

adbdbstatusコマンドを実行すると，標準出力にB-treeインデクスADBUSER01.IDX1のサマリ情報が出力されます。

インデクスのサマリ情報から，Unfinishedの出力内容を確認してください。unfinishedが出力されている場合，B-treeインデクスは未完状態となっています。

B-treeインデクスの未完状態を解除するためには，「16.9.1　B-treeインデクスが未完状態になったときの対処方法」を参照してください。

(2)　ユニークインデクスが一意性制約違反状態かどうかを確認する場合

ユニークインデクスが一意性制約違反状態かどうかを確認する場合，次に示すadbdbstatusコマンドを実行してください。

実行するコマンドの例

ここでは，B-treeインデクスADBUSER01.IDX1のサマリ情報を出力します。

adbdbstatus -d summary -c index -n ADBUSER01.IDX1

adbdbstatusコマンドを実行すると，標準出力にB-treeインデクスADBUSER01.IDX1のサマリ情報が出力されます。

インデクスのサマリ情報から，Unique_constraint_violatedの出力内容を確認してください。

unique_constraint_violatedが出力されている場合，B-treeインデクスは一意性制約違反状態となっています。一意性制約違反状態を解除するためには，「16.9.2　一意性制約に違反した場合の対処方法（KFAA61205-Wメッセージが出力された場合）」の「(2)　一意性制約違反状態を解除する方法」を参照してください。

unknownが出力されている場合は，B-treeインデクスが一意性制約違反状態かどうかを判断できません。adbidxrebuildコマンドでB-treeインデクスを再作成したあとで，再度adbdbstatusコマンドを実行して一意性制約違反状態かどうかを確認してください。

adbidxrebuildコマンドについては，マニュアルHADB　コマンドリファレンスのadbidxrebuild（インデクスの再作成）を参照してください。

(3)　B-treeインデクスの使用量を確認する場合

B-treeインデクスの使用量を確認する場合，次に示すadbdbstatusコマンドを実行してください。

実行するコマンドの例

ここでは，B-treeインデクスADBUSER01.IDX1のサマリ情報を出力します。

adbdbstatus -d summary -c index -n ADBUSER01.IDX1 -S M --shared-lock

adbdbstatusコマンドを実行すると，標準出力にB-treeインデクスADBUSER01.IDX1のサマリ情報が出力されます。

インデクスのサマリ情報から，MB_Used_pagesの出力内容を確認してください。DBエリア内に格納されているB-treeインデクスのデータが使用している領域を，メガバイト単位で確認できます。

10.9.4　テキストインデクスの状態や使用量を確認したい場合

adbdbstatusコマンドで，インデクスのサマリ情報を取得すると，テキストインデクスの状態や使用量を確認できます。

(1)　テキストインデクスが未完状態かどうかを確認する場合

テキストインデクスが未完状態かどうかを確認する場合，次に示すadbdbstatusコマンドを実行してください。

実行するコマンドの例

ここでは，テキストインデクスADBUSER01.TIDX1のサマリ情報を出力します。

adbdbstatus -d summary -c index -n ADBUSER01.TIDX1

adbdbstatusコマンドを実行すると，標準出力にテキストインデクスADBUSER01.TIDX1のサマリ情報が出力されます。

インデクスのサマリ情報から，Unfinishedの出力内容を確認してください。unfinishedが出力されている場合，テキストインデクスは未完状態となっています。

テキストインデクスの未完状態を解除するためには，「16.10.1　テキストインデクスが未完状態になったときの対処方法」を参照してください。

(2)　テキストインデクスの使用量を確認する場合

テキストインデクスの使用量を確認する場合，次に示すadbdbstatusコマンドを実行してください。

実行するコマンドの例

ここでは，テキストインデクスADBUSER01.TIDX1のサマリ情報を出力します。

adbdbstatus -d summary -c index -n ADBUSER01.TIDX1 -S M --shared-lock

adbdbstatusコマンドを実行すると，標準出力にテキストインデクスADBUSER01.TIDX1のサマリ情報が出力されます。

インデクスのサマリ情報から，MB_Used_pagesの出力内容を確認してください。DBエリア内に格納されているテキストインデクスのデータが使用している領域を，メガバイト単位で確認できます。

10.9.5　レンジインデクスの状態や使用量を確認したい場合

adbdbstatusコマンドで，インデクスのサマリ情報を取得すると，レンジインデクスの状態や使用量を確認できます。

(1)　レンジインデクスが未完状態かどうかを確認する場合

レンジインデクスが未完状態かどうかを確認する場合，次に示すadbdbstatusコマンドを実行してください。

実行するコマンドの例

ここでは，レンジインデクスADBUSER01.RIDX1のサマリ情報を出力します。

adbdbstatus -d summary -c index -n ADBUSER01.RIDX1

adbdbstatusコマンドを実行すると，標準出力にレンジインデクスADBUSER01.RIDX1のサマリ情報が出力されます。

インデクスのサマリ情報から，Unfinishedの出力内容を確認してください。unfinishedが出力されている場合，レンジインデクスは未完状態となっています。

レンジインデクスの未完状態を解除するためには，「16.11.1　レンジインデクスが未完状態になったときの対処方法」を参照してください。

(2)　レンジインデクスの使用量を確認する場合

レンジインデクスの使用量を確認する場合，次に示すadbdbstatusコマンドを実行してください。

実行するコマンドの例

ここでは，レンジインデクスADBUSER01.RIDX1のサマリ情報を出力します。

adbdbstatus -d summary -c index -n ADBUSER01.RIDX1 -S M --shared-lock

adbdbstatusコマンドを実行すると，標準出力にレンジインデクスADBUSER01.RIDX1のサマリ情報が出力されます。

インデクスのサマリ情報から，MB_Used_pagesの出力内容を確認してください。DBエリア内に格納されているレンジインデクスのデータが使用している領域を，メガバイト単位で確認できます。

(3)　レンジインデクスのページグループサイズを確認する場合

レンジインデクスのページグループサイズを確認する場合，次に示すadbdbstatusコマンドを実行してください。

実行するコマンドの例

ここでは，レンジインデクスADBUSER01.RIDX1のサマリ情報を出力します。

adbdbstatus -d summary -c index -n ADBUSER01.RIDX1 -S M --shared-lock

adbdbstatusコマンドを実行すると，標準出力にレンジインデクスADBUSER01.RIDX1のサマリ情報が出力されます。

インデクスのサマリ情報から，Pagegroup_sizeの出力内容を確認してください。Pagegroup_sizeの値がページグループサイズ（単位：ページ数）となります。

10.9.6　DBエリアファイルの使用量を確認したい場合

DBエリアの使用量情報を取得すると，DBエリア内の表やインデクスの使用量，およびDBエリアファイルごとの使用量を確認できます。

実行するコマンドの例

ここでは，DBエリアDBAREA01の使用量情報を出力します。

adbdbstatus -d used -c dbarea -n DBAREA01 -S M --shared-lock

コマンドを実行すると，標準出力にDBエリアDBAREA01の使用量情報が出力されます。adbdbstatusコマンドによる出力結果の確認項目を次に示します。

(1)　表やインデクスごとの使用量を確認する場合

Object_type，Schema_nameおよびObject_identifierの出力内容をキーにして，MB_Used_pagesの出力内容を確認してください。

1つの表の使用量を確認するとき

対象表のSchema_nameおよびObject_identifierを確認して，Object_typeがtableであることを確認してください。Schema_nameおよびObject_identifierをキーにして，MB_Used_pagesの出力内容を確認してください。対象表の使用量をメガバイト単位で求められます。

対象表のSchema_nameおよびObject_identifierで同じものが複数行ある場合は，MB_Used_pagesの出力内容をすべて合計してください。合計した結果が，対象表の使用量になります。

1つのインデクスの使用量を確認するとき

対象インデクスのSchema_nameおよびObject_identifierを確認して，Object_typeがindexであることを確認してください。Schema_nameおよびObject_identifierをキーにして，MB_Used_pagesの出力内容を確認してください。対象インデクスの使用量をメガバイト単位で求められます。

対象インデクスのSchema_nameおよびObject_identifierで同じものが複数行ある場合は，MB_Used_pagesの出力内容をすべて合計してください。合計した結果が，対象インデクスの使用量になります。

メモ

adbdbstatusコマンドに--shared-lockオプションを指定した場合，次に示す表やインデクスに対応する削除仕掛中のチャンクについて，セグメントに関する内容は出力されません。

ディクショナリ表（実表）およびディクショナリ表（実表）に定義されたインデクス

システム表（実表）およびシステム表（実表）に定義されたインデクス

(2)　各DBエリアファイルの使用率を確認する場合

DBarea_filenameの出力内容をキーにして，MB_Total_segmentsおよびMB_Used_segmentsの出力内容を確認してください。次に示す計算式で，各DBエリアファイルの使用率を求められます。

計算式（単位：パーセント）

（MB_Used_segments÷MB_Total_segments）×100

メモ

クラウドストレージ機能を使用している場合は，DBarea_filenameは空欄になります。各DBエリアファイルの出力行のMB_Total_segmentsおよびMB_Used_segmentsの出力内容を確認してください。

計算式で求めた結果が100％に近い場合は，次のどれかの対策を検討してください。

DBエリアファイルがブロックスペシャルファイルのとき

この値が100％に近いときにデータの格納を続けると，DBエリアファイルが満杯となるおそれがあります。そのため，「16.3.1　DBエリアファイルの容量増加が原因の場合」を参照して，ブロックスペシャルファイルを格納しているディスクの空き容量を確保することを検討してください。

DBエリアファイルがレギュラーファイルのとき

この値が100％に近いときにデータの格納を続けると，DBエリアの自動増分が行われます。自動増分が行われると，DBエリアの容量が自動的に増加しますが，DBエリアファイル拡張時の更新処理の性能が低下します。もし，DBエリアの自動増分に失敗した場合は，「16.3.2　DBエリアの自動増分の失敗が原因の場合」を参照してください。

クラウドストレージ機能を使用しているとき

この値が100％に近いときにデータの格納を続けると，DBエリアの容量不足が発生するおそれがあります。adbmodareaコマンドでDBエリアを拡張することを検討してください。

また，ディクショナリ用DBエリアファイルとシステム表用DBエリアファイルの場合は，上記の対策以外に，adbreorgsystemdataコマンドを実行することも検討してください。adbreorgsystemdataコマンドを実行して，ディクショナリ表およびシステム表の再編成を行うことで，ディスクの空き容量を確保できます。ディクショナリ表およびシステム表の再編成については，「11.20　ディクショナリ表およびシステム表の再編成」を参照してください。

(3)　各DBエリアファイルの使用量を確認する場合

DBarea_filenameの出力内容をキーにして，MB_Used_segmentsの出力内容を確認してください。各DBエリアファイル内でデータを格納するために使用している領域をメガバイト単位で求められます。

メモ

クラウドストレージ機能を使用している場合は，DBarea_filenameは空欄になります。各DBエリアファイルの出力行のMB_Used_segmentsの出力内容を確認してください。

10.9.7　アーカイブファイルのサイズを確認したい場合

adbdbstatusコマンドを実行して「アーカイブ状態のチャンクの使用量情報」を取得すると，アーカイブファイルのサイズを確認できます。

実行するコマンドの例

アーカイブマルチチャンク表ADBUSER01.T1に関する「アーカイブ状態のチャンクの使用量情報」を出力します。

adbdbstatus -d used -c archivechunk -n ADBUSER01.T1

出力結果の確認項目を次に示します。

■アーカイブファイルのサイズを確認する場合

Archive_file_sizeに各アーカイブファイルのサイズが出力されます。Archive_file_nameに何も出力されていない行に，チャンク内のデータを格納している全アーカイブファイルの合計サイズが出力されます。

（例）

10.10　統計解析の運用（HADBサーバの稼働情報の確認）

adbstatコマンドを実行すると，次に示すHADBサーバの稼働情報を出力できます。

HADBサーバの統計情報

コネクションの稼働情報

グローバルバッファの統計情報

SQL文の統計情報

これらの情報を利用して，HADBサーバの稼働情報を確認する方法について説明します。

また，HADBサーバの稼働情報が出力される統計ログファイルの詳細についても説明します。

adbstatコマンドについては，マニュアルHADB　コマンドリファレンスのadbstat（HADBサーバの統計解析）を参照してください。

10.10.1　HADBサーバの統計情報の運用方法

HADBサーバの統計情報では，HADBサーバ全体のメモリの使用量，およびHADBサーバの稼働状況を確認できます。

サーバ定義に指定したオペランドの値を変更したい場合などに，HADBサーバの統計情報を利用できます。

(1)　HADBサーバの統計情報の出力と関連情報の取得

adbstatコマンドを実行すると，HADBサーバの統計情報が出力されます。出力される情報は，前回出力した情報からの差分になります。そのため，HADBサーバの稼働状況を時系列に確認したい場合，定期的にHADBサーバの統計情報を出力することを推奨します。

■HADBサーバの統計情報を出力する方法

マニュアルHADB　コマンドリファレンスのadbstat（HADBサーバの統計解析）の使用例のシステム全体の稼働状況を調べる場合を参照してください。

また，HADBサーバの統計情報を出力するときに，次に示す関連情報もあわせて取得することを推奨します。

サーバメッセージログファイル

OSのcpコマンドなどでコピーして取得してください。サーバメッセージログファイルの格納先は，「10.4.2　メッセージログの参照方法（メッセージログの出力先）」を参照してください。

(2)　HADBサーバの統計情報と関連情報の利用方法

定期的に，HADBサーバの統計情報と関連情報を取得しておくことで，HADBサーバの稼働状況の変化を確認できます。取得したHADBサーバの統計情報と関連情報は，チューニングを実施するときに利用できます。

■HADBサーバの統計情報と関連情報の利用方法

HADBサーバの統計情報の出力日時を確認する

「HADBサーバの統計情報」に出力されるTimestamp（HADBサーバの統計情報の出力日時）を確認してください。

サーバメッセージログファイルの出力日時と突き合わせる

手順1.で確認したTimestampと，サーバメッセージログファイル内のメッセージの出力日時を突き合わせてください。Timestampと出力日時を突き合わせることで，HADBサーバがどのような処理を行っていたかを確認できます。

HADBサーバの統計情報と関連情報の利用イメージを，次の図に示します。

図10‒8　HADBサーバの統計情報と関連情報の利用イメージ

また，HADBサーバの統計情報と関連情報は，次に示すチューニングを実施するときに利用できます。

「14.1.5　SQL文の実行待ち状態の発生防止」

「14.1.11　作業表用DBエリアのファイル構成の変更」

「14.4.1　HugePagesを適用した共有メモリの使用量の削減」

10.10.2　コネクションの稼働情報の運用方法

コネクションの稼働情報では，HADBサーバに接続しているコネクションごとの稼働状況を確認できます。

サーバ定義に指定したオペランドの値を変更したり，AP，コマンドおよびSQL文の実行方法を変更したりする場合などに，コネクションの稼働情報を利用できます。

(1)　コネクションの稼働情報の出力と関連情報の取得

adbstatコマンドを実行すると，コネクションの稼働情報が出力されます。出力される情報は，前回出力した情報からの差分になります。HADBサーバに接続しているコネクションごとの稼働状況を時系列に確認したい場合，AP，コマンドおよびSQL文の実行中に，定期的にコネクションの稼働情報を出力することを推奨します。

■コネクションの稼働情報を出力する方法

マニュアルHADB　コマンドリファレンスのadbstat（HADBサーバの統計解析）の使用例の特定のAPの稼働状況を調べる場合を参照してください。

また，コネクションの稼働情報を出力するときに，次に示す関連情報もあわせて取得することを推奨します。

サーバメッセージログファイル

OSのcpコマンドなどでコピーして取得してください。サーバメッセージログファイルの格納先は，「10.4.2　メッセージログの参照方法（メッセージログの出力先）」を参照してください。

AP識別子

実行中のAPやコマンドに設定されたAP識別子は，adbls -d cnctコマンドで確認してください。APの場合，クライアント定義adb_clt_ap_nameオペランドで指定されたAP識別子が出力されます。

adbls -d cnctコマンドについては，マニュアルHADB　コマンドリファレンスのadbls -d cnct（コネクションの状態表示）を参照してください。

クライアント定義adb_clt_ap_nameオペランドについては，マニュアルHADB　AP開発ガイドのAPの状態監視に関するオペランドを参照してください。

メモ

複数のAPがある場合，各APが使用するクライアント定義adb_clt_ap_nameオペランドには，それぞれ異なるAP識別子を指定することを推奨します。

(2)　コネクションの稼働情報と関連情報の利用方法

定期的に，コネクションの稼働情報と関連情報を取得しておくことで，HADBサーバに接続しているコネクションごとの稼働状況を確認できます。取得したコネクションの稼働情報と関連情報は，チューニングを実施するときに利用できます。

■コネクションの稼働情報と関連情報の利用方法

コネクションの稼働情報を確認する

「コネクションの稼働情報」に出力される情報のうち，次に示す情報を確認してください。

Timestamp（コネクションの稼働情報の出力日時）

AP_name（AP識別子）

サーバメッセージログファイルと突き合わせる

手順1.で確認したTimestampと，サーバメッセージログファイル内のメッセージの出力日時を突き合わせてください。Timestampと出力日時を突き合わせることで，対象のコネクションがどのような処理を行っていたかを確認できます。

また，手順1.で確認したAP_nameと，サーバメッセージログファイル内のKFAA81000-IメッセージのAP識別子を突き合わせてください。AP_nameとAP識別子を突き合わせることで，対象のAPやコマンドを確認できます。

コネクションの稼働情報と関連情報の利用イメージを，次の図に示します。

図10‒9　コネクションの稼働情報と関連情報の利用イメージ

また，コネクションの稼働情報と関連情報は，次に示すチューニングを実施するときに利用できます。

「14.1.6　SQL文の処理時間の短縮」

「14.2.4　ローカル作業表を作成するSQL文の実行時間を短縮する方法」の「(1)　コネクションの稼働情報によるローカル作業表を作成するSQL文の実行時間の短縮」

10.10.3　グローバルバッファの統計情報の運用方法

グローバルバッファの統計情報では，グローバルバッファごとの使用状況を確認できます。

サーバ定義に指定したオペランドの値を変更したり，データ用DBエリア，表およびインデクスを変更したりする場合などに，グローバルバッファの統計情報を利用できます。

(1)　グローバルバッファの統計情報の出力と関連情報の取得

adbstatコマンドを実行すると，グローバルバッファの統計情報が出力されます。出力される情報は，HADBサーバを開始したときからの情報になります。グローバルバッファの使用状況を確認したい場合，グローバルバッファの統計情報を出力することを推奨します。

■グローバルバッファの統計情報を出力する方法

マニュアルHADB　コマンドリファレンスのadbstat（HADBサーバの統計解析）の使用例の特定のグローバルバッファの稼働状況を調べる場合を参照してください。

また，グローバルバッファの統計情報を出力するときに，次に示す関連情報もあわせて取得することを推奨します。

サーバメッセージログファイル

OSのcpコマンドなどでコピーして取得してください。サーバメッセージログファイルの格納先は，「10.4.2　メッセージログの参照方法（メッセージログの出力先）」を参照してください。

グローバルバッファ名

グローバルバッファ名を，adbls -d gbufコマンドで確認してください。サーバ定義adbbuffオペランドの-gオプションで指定されたグローバルバッファ名が出力されます。

adbls -d gbufコマンドについては，マニュアルHADB　コマンドリファレンスのadbls -d gbuf（グローバルバッファの情報表示）を参照してください。サーバ定義adbbuffオペランドについては，「7.2.18　グローバルバッファに関するオペランドおよびオプション（コマンド形式）」を参照してください。

メモ

次に示す方法でもグローバルバッファ名を確認できます。

HADBサーバ開始時のメッセージログを確認し，出力されているKFAA50027-Iメッセージのサーバ定義情報から，グローバルバッファ名を調べます。

HADBサーバの開始に使用したサーバ定義ファイル（$ADBDIR/conf/server.def）を参照し，グローバルバッファ名を調べます。

(2)　グローバルバッファの統計情報と関連情報の利用方法

グローバルバッファの統計情報と関連情報を取得しておくことで，グローバルバッファごとの使用状況を確認できます。取得したグローバルバッファの統計情報と関連情報は，チューニングを実施するときに利用できます。

■グローバルバッファの統計情報と関連情報の利用方法

グローバルバッファの統計情報を確認する

「グローバルバッファの統計情報」に出力される情報のうち，次に示す情報を確認してください。

Timestamp（グローバルバッファの統計情報の出力日時）

DBbuff_name（グローバルバッファ名）

サーバメッセージログファイルと突き合わせる

手順1.で確認したTimestampと，サーバメッセージログファイル内のメッセージの出力日時を突き合わせてください。Timestampと出力日時を突き合わせることで，対象のグローバルバッファを使用して，どのような処理を行っていたかを確認できます。

また，手順1.で確認したDBbuff_nameと，サーバメッセージログファイル内のKFAA50027-Iメッセージのグローバルバッファ名を突き合わせてください。DBbuff_nameとグローバルバッファ名を突き合わせることで，対象のグローバルバッファ名を確認できます。

グローバルバッファの統計情報と関連情報の利用イメージを，次の図に示します。

図10‒10　グローバルバッファの統計情報と関連情報の利用イメージ

また，グローバルバッファの統計情報と関連情報は，次に示すチューニングを実施するときに利用できます。

「14.2.2　SQL文の実行時間を短縮する方法」の「(1)　グローバルバッファの統計情報によるSQL文の実行時間の短縮」

「14.2.3　グローバル作業表を作成するSQL文の実行時間を短縮する方法」の「(1)　グローバルバッファの統計情報によるグローバル作業表を作成するSQL文の実行時間の短縮」

「14.2.5　テーブルスキャンを実行するSQL文の実行時間を短縮する方法」の「(1)　グローバルバッファの統計情報によるテーブルスキャンを実行するSQL文の実行時間の短縮」

「14.3.2　adbidxrebuildコマンドの実行時間の短縮」

「14.3.3　adbgetcstコマンドの実行時間の短縮」

「14.3.4　adbexportコマンドの実行時間の短縮」

「14.3.5　adbmergechunkコマンドの実行時間の短縮」

「14.3.6　adbarchivechunkコマンドの実行時間の短縮」

10.10.4　SQL文の統計情報の運用方法

SQL文の統計情報では，各SQL文の動作状況を確認できます。

サーバ定義に指定したオペランドの値を変更したり，実行するSQL文を変更したり，表およびインデクスを変更したりする場合などに，SQL文の統計情報を利用できます。

メモ

SQL文の実行状況を確認する場合，adbstatコマンドで出力したSQL文の統計情報を確認する以外に，SQLトレースファイルに出力されたSQLトレース情報を確認する方法もあります。SQLトレース情報については，「10.11　SQLトレース機能の運用」を参照してください。

(1)　SQL文の統計情報の出力と関連情報の取得

SQL文の実行が終了したときに，SQL文の統計情報が統計ログファイルに出力されます。adbstatコマンドを実行すると，統計ログファイルに出力されたSQL文の統計情報を表示できます。なお，エラーとなったSQL文は，SQL文の統計情報が出力されないことがあります。

定期的にSQL文の統計情報を出力することを推奨します。

■SQL文の統計情報を出力する方法

マニュアルHADB　コマンドリファレンスのadbstat（HADBサーバの統計解析）の使用例の特定の日時範囲でSQL文の統計情報を調べる場合を参照してください。

また，SQL文の統計情報を出力するときに，次に示す関連情報もあわせて取得することを推奨します。

サーバメッセージログファイル

OSのcpコマンドなどでコピーして取得してください。サーバメッセージログファイルの格納先は，「10.4.2　メッセージログの参照方法（メッセージログの出力先）」を参照してください。

ヒント

サーバ定義adb_sql_text_outオペランドにYを指定すると，HADBサーバが受け付けたすべてのSQL文がサーバメッセージログファイルに出力されます。SQL文の統計情報とサーバメッセージログファイルを確認する際に，対象のSQL文を特定しやすくなるため，サーバ定義adb_sql_text_outオペランドにYを指定することを検討してください。サーバ定義adb_sql_text_outオペランドは，「7.2.6　SQL文に関するオペランド（set形式）」を参照してください。

AP識別子

実行中のAPやコマンドに設定されたAP識別子は，adbls -d cnctコマンドで確認してください。APの場合，クライアント定義adb_clt_ap_nameオペランドで指定されたAP識別子が出力されます。

adbls -d cnctコマンドについては，マニュアルHADB　コマンドリファレンスのadbls -d cnct（コネクションの状態表示）を参照してください。

クライアント定義adb_clt_ap_nameオペランドについては，マニュアルHADB　AP開発ガイドのAPの状態監視に関するオペランドを参照してください。

メモ

複数のAPがある場合，各APが使用するクライアント定義adb_clt_ap_nameオペランドには，それぞれ異なるAP識別子を指定することを推奨します。

APのコネクション情報

APのコネクション情報は，adbls -d cnctコマンドで確認してください。

adbls -d cnctコマンドについては，マニュアルHADB　コマンドリファレンスのadbls -d cnct（コネクションの状態表示）を参照してください。

SQLトレースファイル

OSのcpコマンドなどでコピーして取得してください。SQLトレースファイルの格納先は，「10.11.1　SQLトレース機能とは」を参照してください。

メモ

SQLトレースファイルにSQLトレース情報を出力する方法は，「10.11.5　SQLトレース情報を出力するための準備」を参照してください。

(2)　SQL文の統計情報と関連情報の利用方法

定期的に，SQL文の統計情報と関連情報を取得しておくことで，各SQL文の動作状況を確認できます。取得したSQL文の統計情報と関連情報は，チューニングを実施するときに利用できます。

■SQL文の統計情報と関連情報の利用方法

SQL文の統計情報を確認する

「SQL文の統計情報」に出力される情報のうち，次に示す情報を確認してください。

Timestamp（統計ログファイルの情報の出力日時）

AP_name（AP識別子）

Connection_information（コネクション情報）

SQL_serial_number（コネクションが確立してからのSQL文通番）

サーバメッセージログファイルと突き合わせる

手順1.で確認した情報と，サーバメッセージログファイル内の情報を突き合わせてください。

Timestampの場合

手順1.で確認したTimestampと，サーバメッセージログファイル内のメッセージの出力日時を突き合わせてください。Timestampと出力日時を突き合わせることで，対象のSQL文が，どのような処理を行っていたかを確認できます。

AP_nameの場合

手順1.で確認したAP_nameと，サーバメッセージログファイル内のKFAA81000-IメッセージのAP識別子を突き合わせてください。AP_nameとAP識別子を突き合わせることで，対象のAPやコマンドを確認できます。

Connection_informationの場合

手順1.で確認したConnection_informationと，サーバメッセージログファイル内のKFAA81000-Iメッセージのコネクション情報を突き合わせてください。Connection_informationとコネクション情報を突き合わせることで，対象のAPのコネクションを確認できます。

SQL_serial_numberの場合

サーバ定義adb_sql_text_outオペランドにYを指定している場合，手順1.で確認したSQL_serial_numberと，サーバメッセージログファイル内のKFAA51000-Iメッセージのコネクションが確立してからのSQL文通番を突き合わせてください。SQL_serial_numberとコネクションが確立してからのSQL文通番を突き合わせることで，対象のSQL文を確認できます。

また，エラーになったSQL文の場合は，手順1.で確認したSQL_serial_numberと，サーバメッセージログファイル内のKFAA51005-Iメッセージのコネクションが確立してからのSQL文通番を突き合わせてください。

また，実行したSQL文の情報を確認したい場合は，サーバメッセージログファイル内の情報と，SQLトレース情報を突き合わせてください。

SQL文の統計情報と関連情報の利用イメージを，次の図に示します。

図10‒11　SQL文の統計情報と関連情報の利用イメージ

また，SQL文の統計情報と関連情報は，次に示すチューニングを実施するときに利用できます。

「14.2.2　SQL文の実行時間を短縮する方法」の「(2)　SQL文の統計情報によるSQL文の実行時間の短縮」

「14.2.3　グローバル作業表を作成するSQL文の実行時間を短縮する方法」の「(2)　SQL文の統計情報によるグローバル作業表を作成するSQL文の実行時間の短縮」

「14.2.4　ローカル作業表を作成するSQL文の実行時間を短縮する方法」の「(2)　SQL文の統計情報によるローカル作業表を作成するSQL文の実行時間の短縮」

「14.2.5　テーブルスキャンを実行するSQL文の実行時間を短縮する方法」の「(2)　SQL文の統計情報によるテーブルスキャンを実行するSQL文の実行時間の短縮」

10.10.5　統計ログファイルの運用

(1)　統計ログファイルに出力される情報

統計ログファイルには，次に示すHADBサーバの稼働情報が出力されます。

SQL文の統計情報

統計ログファイルに出力された情報は，adbstatコマンドを実行することで確認できます。

HADBサーバは，統計ログファイルを自動的に4つ作成して使用します。

重要

作成された統計ログファイルを手動で更新しないでください。統計ログファイルに出力される情報が不正になるおそれがあります。

1つの統計ログファイルの最大容量は，サーバ定義adb_sta_log_max_sizeオペランド，およびadb_sta_log_size_unitオペランドで指定できます。サーバ定義adb_sta_log_max_sizeオペランド，およびadb_sta_log_size_unitオペランドについては，「7.2.8　統計情報に関するオペランド（set形式）」の次の個所を参照してください。

adb_sta_log_max_sizeオペランド

adb_sta_log_size_unitオペランド

1つの統計ログファイルが最大容量に達すると，HADBサーバはその統計ログファイルへの出力をやめて，次の統計ログファイルに出力します。このとき，切り替え先の統計ログファイルに格納されている古い情報は，上書きされます。そのため，古い情報が上書きされる前に，定期的にadbstatコマンドを実行することで，統計ログファイルに出力された情報を出力しておく必要があります。

メモ

使用される統計ログファイルは，HADBサーバを開始するときにサーバメッセージログファイルに出力されるKFAA80295-Iメッセージで確認できます。

1つの統計ログファイルが最大容量に達して，統計ログファイルが切り替わる場合，サーバメッセージログファイルにKFAA80296-Iメッセージが出力されます。

統計ログファイルの切り替えテストを実施する場合，サーバ定義adb_sta_log_size_unitオペランドを指定すると，統計ログファイルの最大容量の単位を小さくできます（メガバイト単位に変更できます）。

(2)　統計情報が上書きされない期間の目安

統計ログファイル中の統計情報が上書きされない期間の目安は，次の計算式で求められます。

計算式（単位：日）

統計情報が上書きされない期間の目安＝（log_max×4,294,967,296÷output_info）÷1,440

変数の説明

log_max：サーバ定義のadb_sta_log_max_sizeオペランドの指定値（オペランド省略時は4）

output_info：1分当たりに出力される統計情報量の目安（単位：バイト）

次の計算式から求めてください。

690＋432×adbbuff_num＋960×connect_num＋4,376×sql_num

adbbuff_num：サーバ定義のadbbuffオペランドで定義したグローバルバッファ数（HADBサーバによって自動的に定義されるグローバルバッファ数も含みます）

メモ

HADBサーバによって自動的に定義されるグローバルバッファについては，「7.2.18　グローバルバッファに関するオペランドおよびオプション（コマンド形式）」のadbbuffオペランドの説明を参照してください。

connect_num：HADBサーバへの同時接続数

sql_num：1分当たりのSQL文の実行回数

計算例

統計ログファイル中の統計情報が上書きされない期間の目安の計算例を示します。条件は次のとおりとします。

adb_sta_log_max_sizeオペランドの指定値：4

adbbuffオペランドで定義したグローバルバッファ数：128

HADBサーバへの同時接続数：128

1分当たりのSQL文の実行回数：120

1分当たりに出力される統計情報量の目安（output_info）

＝690＋432×128＋960×128＋4,376×120

＝703,986（バイト）

統計情報が上書きされない期間の目安

＝（4×4,294,967,296÷703,986）÷1,440

≒約17日

上記の条件の場合，統計情報が上書きされない期間は約17日となります。

(3)　統計ログファイルの出力先を変更する場合

統計ログファイルは，$ADBDIR/spoolディレクトリ下に出力されますが，サーバ定義adb_sta_log_pathオペランドを指定して，統計ログファイルの出力先ディレクトリを変更できます。サーバ定義adb_sta_log_pathオペランドについては，「7.2.8　統計情報に関するオペランド（set形式）」を参照してください。

重要

統計ログファイルの出力先ディレクトリを変更した場合，変更前の統計ログファイルに格納されている統計情報を参照できなくなります。そのため，統計ログファイルの出力先ディレクトリを変更する前に，adbstatコマンドを実行して統計情報を出力しておいてください。

(4)　統計ログファイルを削除する場合

統計ログファイルを削除する手順を次に示します。

重要

統計ログファイルを削除する場合は，ここで説明している手順に必ず従ってください。手順に従わないと，統計ログファイルに出力される情報が不正になるおそれがあります。

メモ

HADBサーバの運用テストを実施したあとに，統計ログファイルが不要になり削除することがあります。その場合は，ここで説明する手順に従って統計ログファイルを削除してください。

手順

adbstopコマンドでHADBサーバを正常終了する

マルチノード機能を使用している場合は，統計ログファイルを削除するノードのHADBサーバを正常終了してください。

コールドスタンバイ構成の場合は，コールドスタンバイ構成を正常終了してください。

OSのrmコマンドなどで，統計ログファイルの出力先ディレクトリ下のファイルを削除する

次のファイルをすべて削除してください。

adbstatlogXX

ファイル名のXXは通番であり，01〜04のどれかになります。

.adbstatlog

隠しファイルです。

adbstartコマンドでHADBサーバを正常開始する

10.10.6　adbstatコマンド実行時に統計ログファイルから出力される情報の容量見積もり

統計ログファイルに出力された情報をadbstatコマンドで出力する場合に，adbstatコマンドで出力される情報の容量を見積もる方法について説明します。

SQL文の統計情報として出力されるCSV形式のファイルサイズ（変数SQL_CSV_SIZE）は，次に示す計算式から求めてください。

計算式（単位：キロバイト）

adbstatコマンドで，統計ログファイル内のすべての情報を出力すると仮定した容量を求めます。

変数の説明

STLOG_SUM

すべての統計ログファイルのファイルサイズの合計値（単位：キロバイト）

DBAREA_NUM

HADBサーバ全体のDBエリアの数

10.11　SQLトレース機能の運用

ここでは，SQLトレース機能の運用方法と，SQLトレース情報に出力される情報について説明します。

10.11.1　SQLトレース機能とは

SQLトレース機能とは，SQL文の実行履歴情報（SQLトレース情報）をファイル（SQLトレースファイル）に出力する機能です。SQLトレースファイルには，実行されたSQL文，SQL文の実行時間，およびアクセスパスなどの情報が出力されます。

SQLトレース機能の概要を次の図に示します。

図10‒12　SQLトレース機能の概要

［説明］

SQLトレース情報は，HADBサーバのSQLトレースファイルに出力されます。テキストエディタを使用して，SQLトレースファイルに出力されたSQLトレース情報を参照します。

SQLトレースファイルを参照できるのは，HADB管理者およびHADB管理者グループに所属するOSユーザだけです。

出力されたSQLトレース情報は，次のことに使用します。

SQL文のエラー原因の調査

SQLトレース情報に出力されるSQLCODEを確認し，SQLCODEに対応するメッセージからSQL文のエラー原因を調査します。

SQL文のチューニング

SQLトレース情報に出力されるSQL文の実行時間を確認し，実行時間が長いSQL文を特定します。SQLトレース情報に出力されるコネクション情報とSQL文通番を基に，SQL文の統計情報を使ってSQL文のチューニングを行います。

■SQLトレース情報の出力先

出力先ディレクトリ名

$ADBDIR/spool

SQLトレースファイル名

adbsqltrc01.log〜adbsqltrc08.log

SQLトレースファイルは全部で8つ作成されます。1つのSQLトレースファイルの容量が満杯になった場合，次の番号のSQLトレースファイルに出力先が順次変更されます。adbsqltrc08.logが満杯になった場合は，adbsqltrc01.logに出力先が変更されます。

メモ

adbinfogetコマンドで取得されるトラブルシュート情報に，SQLトレースファイルも含まれています。

10.11.2　SQLトレース情報に出力される情報

SQLトレース情報には，次の情報が出力されます。

HADBサーバのバージョン情報

SQL文の実行情報

クライアント定義情報

コネクション状態に関する情報

実行したSQL文とアクセスパス情報

？パラメタの情報

SQLパラレル実行機能に関する情報

トランザクションの情報

認可識別子の情報

SQL文の統計情報

アクセスパスの統計情報

コネクションの確立または終了の区切り線

SQL文の基本情報

メモ

エラーが発生してSQL文の処理が中断した場合，その時点で取得できなかったSQLトレース情報は出力されません。

各情報の出力項目について説明します。

(1)　HADBサーバのバージョン情報

HADBサーバのバージョン情報の出力例を次に示します。

P-aaaa-bbbb Hitachi Advanced Database 06-00-/B Sep 27 2025 12:32:59

［説明］

P-aaaa-bbbbには，HADBサーバのPP形名情報が出力されます。

1つ目の下線部分には，HADBサーバのバージョン情報が出力されます。

2つ目の下線部部分には，HADBサーバのバージョン付加情報が次の形式で出力されます。

MMM DD YYYY hh:mm:ss

MMM：月が英略語の形式で出力されます。

DD：日が出力されます。

YYYY：西暦が出力されます。

hh:mm:ss：時刻が出力されます。

メモ

HADBサーバのバージョン情報は，SQLトレースファイルの先頭に出力されます。

(2)　SQL文の実行情報

SQL文の実行情報の出力例と出力される項目について説明します。

(a)　SQL文の実行情報の出力例

SQL文の実行情報の出力例を次に示します。

(b)　SQL文の実行情報に出力される項目

SQL文の実行情報に出力される項目を次の表に示します。

表10‒10　SQL文の実行情報に出力される項目

項番

項目名

説明

1

con_id

コネクションIDが出力されます。

2

con_num

HADBサーバの開始後に割り振られるコネクション通番が出力されます。

3

stmt_hdl

SQL文に割り当てられた文ハンドルが出力されます。

4

sql_serial_num

コネクション確立後に割り振られるSQL文通番が出力されます。

5

call

SQL文の実行情報の対象となるコール種別が出力されます。出力されるコール種別と実行された処理の対応を「表10‒11　コール種別と実行された処理の対応」に示します。

なお，コールとは，コネクションの確立または終了，トランザクションの正常終了または取り消し，およびSQL文を使用したデータベースに対する操作の単位のことです。

SQL文単位でSQLトレース情報を出力している場合，SQL文の実行が完了したときに（コール単位のCLOS，EXEC，およびEXDIの実行が完了したときに），SQL文の実行情報が出力されます。このとき，call欄にはSQLと出力されます。

6

sqlcode

SQLCODEが出力されます。

SQLCODEとメッセージの対応付けの方法については，マニュアルHADB　メッセージのSQLCODEの見方を参照してください。

7

sqlstate

SQLSTATEが出力されます。

SQLSTATEについては，マニュアルHADB　メッセージのSQLSTATEの一覧を参照してください。

8

start_time

処理の開始時刻が出力されます。

コール単位でSQLトレース情報を出力している場合は，各コールの開始時刻が出力されます。

SQL文単位でSQLトレース情報を出力している場合は，「表10‒12　コール種別がSQLの場合に実行されるコール」で説明している最初のコールの開始時刻が出力されます。

9

end_time

処理の終了時刻が出力されます。

コール単位でSQLトレース情報を出力している場合は，各コールの終了時刻が出力されます。

SQL文単位でSQLトレース情報を出力している場合は，最後に実行したコールの終了時刻が出力されます。

10

exe_time(us)

処理の実行時間がマイクロ秒単位で出力されます。

コール単位でSQLトレース情報を出力している場合

各コールの終了時刻と開始時刻の差が出力されます。

コールの延長で暗黙的なコミットやロールバックが発生したときは，その処理時間も実行時間に含まれます。また，2回目以降のフェッチに対応するFETCの実行時間は，同一SQL文の実行情報に出力される終了時刻と開始時刻の差ではなく，各フェッチの実行時間の合計になります。

SQL文単位でSQLトレース情報を出力している場合

各コールの実行時間の合計が出力されます。

11

rows

処理対象の行数が出力されます。

コール種別がFETC，EXEC，EXDI，またはSQLの場合に行数が出力されます。

コール種別がFETCの場合

1回目のフェッチのときは，0または1が出力されます。そのあとのフェッチのときは，2回目から最後のフェッチの処理行数が出力されます。

コール種別がEXECまたはEXDIの場合

実行したSQL文がDELETE，INSERT，またはUPDATEの場合は，更新した行数が出力されます。それ以外のSQL文の場合は，0が出力されます。

コール種別がSQLの場合

実行したSQL文がSELECT，DELETE，INSERT，またはUPDATEの場合は，処理対象の行数が出力されます。それ以外のSQL文の場合は，0が出力されます。

12

tran_id

データベースを初期化したときからの通番であるトランザクションIDが出力されます。

13

trn_iso_lv

トランザクション隔離性水準が出力されます。

READ_COMMITTED：トランザクション隔離性水準がREAD COMMITTEDの場合に出力されます。

REPEATABLE_READ：トランザクション隔離性水準がREPEATABLE READの場合に出力されます。

14

trn_access_mode

トランザクションアクセスモードが出力されます。

READ_WRITE：トランザクションアクセスモードが読み書き可能モードの場合に出力されます。

READ_ONLY：トランザクションアクセスモードが読み取り専用モードの場合に出力されます。

15

sql_order_mode

文字データの並び替え順序が出力されます。

BYTE：文字データをバイトコード順に並び替えた場合に出力されます。

ISO：文字データをソートコード順に並び替えた場合に出力されます。

16

cursor_holdability

カーソルの動作が出力されます。

CLOSE_CURSORS_AT_COMMIT：コミット時にカーソルをクローズした場合に出力されます。

HOLD_CURSORS_OVER_COMMIT：コミットしてもカーソルをクローズしなかった場合に出力されます。

次に示す場合にカーソルの動作が出力されます。

コール種別がOPEN，FETC，またはCLOSの場合

コール種別がSQLで，かつ実行したSQL文がSELECT文の場合

17

message_log_info

メッセージログ情報が出力されます。

メッセージログファイルに出力されるメッセージのクライアントプロセスIDおよびコネクション通番が出力されます。

メッセージログ情報をメッセージに出力されているクライアントプロセスIDおよびコネクション通番と突き合わせることで，SQL文のエラー発生時の原因調査に利用できます。利用方法の詳細については，「10.11.7　SQLトレース情報を使用したSQL文のエラー原因調査」を参照してください。

注

コール種別がCNCT，DISC，またはDISPの場合，stmt_hdl，sql_serial_num，rows，tran_id，trn_iso_lv，trn_access_mode，およびsql_order_modeの値は出力されません。

コール種別がCMITまたはRLBKの場合，stmt_hdl，sql_serial_num，およびrowsの値は出力されません。

トランザクションの決着によって解放される文ハンドル（SQL文のエラーによってトランザクションが決着した場合は，エラーが発生した文ハンドルを除く）が，次のどれかの条件を満たすときは，call，sqlcode，sqlstate，start_time，end_time，exe_time，およびrowsの値は出力されません。

・上記の文ハンドルの直前のコールがエラーとなった場合

・上記の文ハンドルの直前のコール種別がOPENの場合（SQLトレース情報の出力単位がコール単位の場合）

・上記の文ハンドルの直前のコール種別がFETCで，かつフェッチが1回だけ実行された場合（SQLトレース情報の出力単位がコール単位の場合）

表10‒11　コール種別と実行された処理の対応

項番

コール種別※1（callに出力された情報）

実行された処理

出力単位※2

出力される追加の情報※3

1

PREP

SQL文の前処理

コール単位

2，4

2

OPEN

カーソルのオープン

3，4

3

CLOS

カーソルのクローズ

4，6

4

FETC

1回目のフェッチ処理，または2回目から最後のフェッチ処理※4

4

5

EXEC

SQL文の実行※5

3，4，6

6

EXDI

SQL文の前処理および実行

2，4，6

7

CMIT

コミット処理

コール単位またはSQL文単位

4，6※8

8

RLBK

ロールバック処理

4

9

CNCT

コネクションの確立（APの接続またはコマンドの接続）

1，4，5，7

10

DISC

コネクションの終了

4，5，7

11

DISP

コネクションプール機能を使用した際のコネクションの終了

4

12

SQL

SQL文単位での出力※6，※7

2，3，4，6

注※1

コール種別と実行したJDBCのメソッドの対応については，「(d)　実行したJDBCのメソッドと出力されるコール種別の対応」を参照してください。

コール種別と実行したODBC関数の対応については，「(e)　実行したODBC関数と出力されるコール種別の対応」を参照してください。

コール種別と実行したCLI関数の対応については，「(f)　実行したCLI関数と出力されるコール種別の対応」を参照してください。

注※2

サーバ定義のadb_sql_trc_levelオペランド，またはadbchgsqltrcコマンドで指定したSQLトレース情報を出力する単位を意味しています。

注※3

SQL文の実行情報以外に出力される情報です。表中の番号は，次の番号と対応しています。

1：クライアント定義情報およびコネクション状態に関する情報

2：実行したSQL文およびアクセスパス情報

3：？パラメタの情報

4：トランザクションの情報

5：認可識別子の情報

6：SQL文の統計情報およびアクセスパスの統計情報

7：コネクションの確立または終了の区切り線

注※4

コール種別がFETCの場合，フェッチの回数分のSQLトレース情報が出力されるわけではありません。フェッチの回数が2回以上の場合は，フェッチを繰り返し実行しても，SQL文の実行情報は2つ（1回目のフェッチ処理のSQL文の実行情報と，それ以降の全フェッチの実行結果をまとめたSQL文の実行情報）しか出力されません。フェッチの回数が1回の場合は，SQL文の実行情報は1つだけ出力されます。

注※5

？パラメタの値の一括転送を実施した場合，EXECのSQL文の実行情報は1つだけ出力されます。？パラメタの値の一括転送については，マニュアルHADB　AP開発ガイドの？パラメタの値の一括転送を参照してください。

注※6

SQL記述ファイルを指定してadbexportコマンドを実行した場合，出力レベルがCALLでも，1つのSQL文の実行情報にまとめられて出力されます。その際，コール種別にはSQLが出力されます。

注※7

SQL文単位でSQLトレース情報を出力する場合，「表10‒12　コール種別がSQLの場合に実行されるコール」に示す実行されるコールに記載されている各コールのSQL文の実行情報が，1つのSQL文の実行情報にまとめられて出力されます。その際，コール種別にはSQLが出力されます。

表10‒12　コール種別がSQLの場合に実行されるコール

項番

SQL文の種類

実行されるコール※1

1

更新系SQL

PREP → EXEC

2

EXEC（項番1のコールが実行されたあとに，連続してEXECが実行される場合）

3

EXDI

4

定義系SQL

PREP → EXEC

5

EXDI

6

検索系SQL

PREP → OPEN → FETC → 〔FETC〕 → CLOS（明示的にカーソルをクローズした場合）

7

PREP → OPEN → FETC → 〔FETC〕（明示的にカーソルをクローズしない場合※2）

注

〔　〕で囲まれたコール種別は実行されないことがあります。

注※1

SQL文の実行時にエラーが発生した場合，「(c)　SQL文の実行時にエラーが発生した場合のSQL文の実行情報の出力（コール種別がSQLの場合）」に示すとおりに，SQL文の実行情報が出力されます。

注※2

カーソルをクローズしないで文ハンドルを解放したり，トランザクションを決着したりした場合が該当します。ただし，「表10‒10　SQL文の実行情報に出力される項目」で説明している「cursor_holdability（カーソル動作）」がHOLD_CURSORS_OVER_COMMITの場合は，コミットしてもカーソルがクローズしないため，該当しません。

注※8

更新系SQLを含むトランザクションを実行した場合，コミット処理に関する統計情報がSQL文の統計情報として出力されます。

(c)　SQL文の実行時にエラーが発生した場合のSQL文の実行情報の出力（コール種別がSQLの場合）

SQL文の実行時にエラーが発生した場合，次に示すコールのSQL文の実行情報が，1つにまとめて出力されます。

エラーとなったコール

「表10‒12　コール種別がSQLの場合に実行されるコール」で示すコールのうちエラーとなったコールの前に実行されたすべてのコール

ただし，エラーが発生したコール種別がFETCだけの場合は，そのエラーの延長で暗黙的なロールバックが発生したかどうかで処理が異なります。

エラー時に暗黙的なロールバックが発生した場合

エラーとなったFETCと，「表10‒12　コール種別がSQLの場合に実行されるコール」で示すコールのうちエラーとなったFETCの前に実行されたコールのSQL文の実行情報が1つにまとめて出力されます。

暗黙的なロールバックが発生しなかった場合

FETCがエラーとなっても，検索系SQLの実行が完了したとは見なされません。そのあと，CLOSの実行が完了した時点で，検索系SQLの実行が完了したと見なされます。その際，「表10‒12　コール種別がSQLの場合に実行されるコール」の「検索系SQL」の各コールのSQL文の実行情報が1つにまとめて出力されます。

SQL文がエラーになった場合の例を次に示します。

検索系SQLの実行時にOPENでエラーになった場合

PREPとOPENのSQL文の実行情報を1つにまとめて，SQL文単位のSQL文の実行情報として出力されます。

検索系SQLの実行時にFETCでエラーになり，暗黙的なロールバックが発生した場合

PREP，OPEN，〔FETC〕，FETCのSQL文の実行情報を1つにまとめて，SQL文単位のSQL文の実行情報として出力されます。

更新系SQLの実行時にPREPでエラーになった場合

PREPのSQL文の実行情報がSQL文単位のSQL文の実行情報として出力されます。

(d)　実行したJDBCのメソッドと出力されるコール種別の対応

実行したJDBCのメソッドと出力されるコール種別の対応を次の表に示します。

表10‒13　実行したJDBCのメソッドと出力されるコール種別の対応

項番

実行したJDBCのメソッド

出力されるコール種別

1

Driverインタフェースのconnect(String url, Properties info)

CNCT

2

Connectionインタフェースのclose()

CMIT，DISC，DISP

3

Connectionインタフェースのcommit()

CMIT

4

ConnectionインタフェースのprepareStatement(String sql)

PREP

5

ConnectionインタフェースのprepareStatement(String sql, int resultSetType, int resultSetConcurrency)

6

ConnectionインタフェースのprepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)

7

Connectionインタフェースのrollback()

RLBK

8

Statementインタフェースのclose()

CLOS，CMIT

9

Statementインタフェースのexecute(String sql)

PREP，OPEN，EXEC，EXDI，CLOS，CMIT，RLBK

10

StatementインタフェースのexecuteBatch()またはexecuteLargeBatch()

PREP，EXEC，EXDI，CMIT，RLBK

11

StatementインタフェースのexecuteQuery(String sql)

PREP，OPEN，CLOS，CMIT

12

StatementインタフェースのexecuteUpdate(String sql)またはexecuteLargeUpdate(String sql)

PREP，EXEC，EXDI，CMIT，RLBK

13

StatementインタフェースのgetMoreResults()

CLOS

14

PreparedStatementインタフェースのexecute()

PREP，OPEN，EXEC，CLOS，CMIT，RLBK

15

PreparedStatementインタフェースのexecuteQuery()

PREP，OPEN，CLOS，CMIT，RLBK

16

PreparedStatementインタフェースのexecuteUpdate()またはexecuteLargeUpdate()

PREP，EXEC，CMIT，RLBK

17

ResultSetインタフェースのabsolute(int row)

FETC

18

ResultSetインタフェースのafterLast()

19

ResultSetインタフェースのbeforeFirst()

20

ResultSetインタフェースのfirst()

21

ResultSetインタフェースのisAfterLast()

22

ResultSetインタフェースのisBeforeFirst()

23

ResultSetインタフェースのilast()

24

ResultSetインタフェースのirelative(int rows)

25

ResultSetインタフェースのisLast()

26

ResultSetインタフェースのnext()

27

ResultSetインタフェースのclose()

CLOS，CMIT

28

DatabaseMetaDataインタフェースのgetColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern)

PREP，OPEN

29

DatabaseMetaDataインタフェースのgetCrossReference(String primaryCatalog, String primarySchema, String primaryTable, String foreignCatalog, String foreignSchema, String foreignTable)

30

DatabaseMetaDataインタフェースのgetExportedKeys(String catalog, String schema, String table)

31

DatabaseMetaDataインタフェースのgetImportedKeys(String catalog, String schema, String table)

32

DatabaseMetaDataインタフェースのgetIndexInfo(String catalog, String schema, String table, boolean unique, boolean approximate)

33

DatabaseMetaDataインタフェースのgetPrimaryKeys(String catalog, String schema, String table)

34

DatabaseMetaDataインタフェースのgetSchemas(String catalog, String schemaPattern)

35

DatabaseMetaDataインタフェースのgetTablePrivileges(String catalog, String schemaPattern, String tableNamePattern)

36

DatabaseMetaDataインタフェースのgetTables(String catalog, String schemaPattern, String tableNamePattern, String[] types)

37

DatabaseMetaDataインタフェースのgetSchemas()

38

DataSourceインタフェースのgetConnection()

CNCT

39

DataSourceインタフェースのgetConnection(String username, String password)

40

PooledConnectionインタフェースのclose()

DISC

41

PooledConnectionインタフェースのgetConnection()

CNCT

(e)　実行したODBC関数と出力されるコール種別の対応

実行したODBC関数と出力されるコール種別の対応を次の表に示します。

表10‒14　実行したODBC関数と出力されるコール種別の対応

項番

実行したODBC関数

出力されるコール種別

1

SQLPrepare(W)

PREP

2

SQLExecute

PREP，EXEC，OPEN，CMIT

3

SQLExecDirect(W)

PREP，EXEC，CMIT

4

SQLParamData

EXEC，OPEN，CMIT

5

SQLFetch

FETC

6

SQLColumns(W)

PREP，OPEN

7

SQLForeignKeys(W)

8

SQLPrimaryKeys(W)

9

SQLStatistics(W)

10

SQLTablePrivileges(W)

11

SQLTables(W)

12

SQLFreeStmt

CLOS，CMIT

13

SQLCloseCursor

14

SQLEndTran

CMIT，RLBK

15

SQLDisconnect

CMIT，DISC

16

SQLFreeHandle

CMIT

17

SQLSetConnectAttr(W)

18

SQLConnect(W)

CNCT，DISC

19

SQLDriverConnect(W)

20

SQLBrowseConnect(W)

(f)　実行したCLI関数と出力されるコール種別の対応

実行したCLI関数と出力されるコール種別の対応を次の表に示します。

表10‒15　実行したCLI関数と出力されるコール種別の対応

項番

実行したCLI関数

出力されるコール種別

1

a_rdb_SQLPrepare()

PREP

2

a_rdb_SQLExecute()

OPEN，EXEC

3

a_rdb_SQLCloseCursor()

CLOS

4

a_rdb_SQLFetch()

FETC

5

a_rdb_SQLExecDirect()

EXDI

6

a_rdb_SQLEndTran()

CMIT，RLBK

7

a_rdb_SQLConnect()

CNCT

8

a_rdb_SQLDisconnect()

DISC

(3)　クライアント定義情報

クライアント定義情報の出力例を次に示します。

■クライアント定義情報の出力例

[client definitions]
adb_clt_ap_name="SAMPLE"
adb_clt_fetch_size=1024
adb_clt_group_name="test_group"
adb_clt_sql_order_mode="ISO"
adb_clt_sql_parallel_exec="N"
adb_clt_sql_text_out="Y"
adb_clt_trn_access_mode="READ_WRITE"
adb_clt_trn_iso_lv="READ_COMMITTED"
adb_dbbuff_wrktbl_clt_blk_num=256
adb_sql_exe_hashflt_area_size=200
adb_sql_exe_hashgl_area_size=2
adb_sql_exe_hashgrp_area_size=4800
adb_sql_exe_hashtbl_area_size=2000
adb_sql_exe_max_rthd_num=0
adb_sql_prep_dec_div_rs_prior="FRACTIONAL_PART"
adb_sql_prep_delrsvd_use_srvdef="Y"
adb_sql_prep_null_collation = "HIGH"

APの接続の場合は，そのAPに適用されているクライアント定義の情報が出力されます。コマンドの接続の場合は，クライアント定義情報は出力されません。

なお，クライアント定義情報に出力される各オペランドの値は，クライアント定義に指定した値ではなく，APに適用された値が出力されます。例えば，クライアント定義のadb_sql_exe_max_rthd_numオペランドの指定値が不正なため，HADBサーバが仮定する値に変更されている場合，クライアント定義の指定値ではなく，HADBサーバが仮定した値が出力されます。

メモ

次に示す場合にクライアント定義情報が出力されます。

コール種別がCNCTで，かつCNCTが正常終了したとき

adbchgsqltrc -sコマンドを実行して，SQLトレース情報を出力したあとの最初のトランザクションを開始したとき（トランザクションを開始したコネクションのクライアント定義情報が出力されます）

(4)　コネクション状態に関する情報

コネクション状態に関する情報の出力例を次に示します。

■コネクション状態に関する情報の出力例（APの接続の場合）

[connection status]
client_type=AP(JDBC)
client_ip=127.0.0.1
connect_time=2015/07/31 21:54:41
client_process_id=0
connection_information=000010000000001-0000181584fb6700
authentication_type=DB

■コネクション状態に関する情報の出力例（コマンドの接続の場合）

[connection status]
client_type=command(adbimport)
client_ip=127.0.0.1
connect_time=2015/07/31 16:10:37
client_process_id=30422
connection_information=000010000000003-000073b601e46700
authentication_type=DB

コネクション状態に関する情報に出力される項目を次の表に示します。

表10‒16　コネクション状態に関する情報に出力される項目

項番

項目名

説明

1

client_type

HADBクライアントの種類が出力されます。

JDBCドライバからのアクセスの場合：AP(JDBC)

JDBCドライバ以外からのアクセスの場合：AP(C library)

コマンドの場合：command(コマンド名)

（例）command(adbimport)

2

client_ip

HADBクライアントのIPアドレスが出力されます。

3

connect_time

コネクションを確立した時刻が出力されます。

4

client_process_id

HADBクライアントのプロセスIDが出力されます。

JDBCドライバを使用している場合は0が出力されます。

5

connection_information

コネクション情報（KFAA81000-Iメッセージのconnection informationに出力される情報）が出力されます。

6

authentication_type

HADBユーザのユーザ認証方式が出力されます。

データベース認証を使用するHADBユーザの場合：DB

PAM認証を使用するHADBユーザで，かつパスワードを暗号化している場合：PAM(password encrypted)

PAM認証を使用するHADBユーザで，かつパスワードを暗号化していない場合：PAM(password cleartext)

Keycloak認証を使用するHADBユーザの場合：Keycloak

認可識別子を指定しないコマンドの場合：None

メモ

次に示す場合にコネクション状態に関する情報が出力されます。

コール種別がCNCTで，かつCNCTが正常終了したとき

adbchgsqltrc -sコマンドを実行して，SQLトレース情報を出力したあとの最初のトランザクションを開始したとき（トランザクションを開始したコネクションのコネクション状態に関する情報が出力されます）

(5)　実行したSQL文とアクセスパス情報

実行したSQL文とアクセスパス情報の出力例を次に示します。

■実行したSQL文とアクセスパス情報の出力例

[SQL]
SELECT * FROM "T1" WHERE "C1"=? AND "C2"=? AND "C3"=?

[access path]
<<Tree View>>

     1 QUERY : 1
     2   SELECT STATEMENT
     3   +-TABLE SCAN(ADBUSER01.T1)

<<SQL Info >>

Version           : 03-01(Jul 31 2015 21:31:44)
Transaction ID    : 4342
Connection Number : 1
SQL Serial Number : 1

［説明］

[SQL]

実行したSQL文が出力されます。

次のSQL文中に指定したパスワード，シークレットキー，およびクライアントシークレットの部分については，*が出力されます。

ALTER SERVER文

ALTER USER文

CREATE FOREIGN TABLE文

CREATE SERVER文

CREATE USER文

SQL文中に印字できない特殊文字が含まれている場合でも，そのまま出力されます。

[access path]

アクセスパス情報が出力されます。アクセスパス情報に出力される項目については，マニュアルHADB　AP開発ガイドのアクセスパスの見方（SQL文の実行計画の見方）を参照してください。

メモ

次に示す場合に，実行したSQL文とアクセスパス情報が出力されます。

コール種別がPREPの場合※

コール種別がEXDIの場合

コール種別がSQLの場合

注※

アクセスパス情報は，PREPが正常終了したときに出力されます。PREPが正常終了しなかったときは，実行したSQL文だけが出力されます。

(6)　？パラメタの情報

？パラメタの情報の出力例を次に示します。

■？パラメタの情報の出力例

[param]
param_no type      len1  len2  data
-------- --------- ----- ----- ----
       1 int           8       1
       2 char          2       'ab'
       3 dec           7     3 1234.567

？パラメタの情報に出力される項目を次の表に示します。

表10‒17　？パラメタの情報に出力される項目

項番

項目名

説明

1

param_no

SQL文中の？パラメタの通番が出力されます。

2

type

？パラメタのデータ型が出力されます。

3

len1

パラメタ長が出力されます。

4

len2

パラメタ長属性が出力されます。パラメタ長属性がない場合は出力されません。

パラメタ長およびパラメタ長属性については，マニュアルHADB　AP開発ガイドのa_rdb_SQLDescribeParams()（？パラメタの情報取得）を参照してください。

5

data

？パラメタにバインドされたデータが出力されます。

？パラメタの情報の出力形式を次の表に示します。

表10‒18　？パラメタの情報の出力形式

項番

データ型

type

len1

len2

出力形式

1

BIGINT

bigint

8

なし

10進数形式

2

DECIMAL(m, n)※1

dec

m

n

10進数形式

3

NUMERIC(m, n)※1

4

INTEGER

int

4※4

なし

10進数形式

5

SMALLINT

smallint

2※5

なし

10進数形式

6

DOUBLE PRECISION

double

8

なし

仮数E指数

仮数および指数は10進数形式で出力されます。

7

FLOAT

8

REAL

real

4

なし

9

CHARACTER(n)

char

n

なし

'文字列形式'

10

VARCHAR(n)

varchar

n

なし

'文字列形式'

実長0の場合は，''と出力されます。

11

STRING

string

32,000,000

なし

12

DATE

date

4

なし

日付データの既定の出力表現※2で出力されます。

13

TIME(p)※3

time

3＋↑p÷2↑

p

時刻データの既定の出力表現※2で出力されます。

14

TIMESTAMP(p)※3

timestamp

7＋↑p÷2↑

p

時刻印データの既定の出力表現※2で出力されます。

15

BINARY(n)

binary

n

なし

X'16進数値'

16

VARBINARY(n)

varbinary

n

なし

X'16進数値'

実長0の場合は，X''と出力されます。

17

BOOLEAN

boolean

1

なし

論理データの既定の出力表現で出力されます。

18

UUID

uuid

16

なし

UUIDデータの既定の出力表現で出力されます。

19

ROW

row

行長

なし

X'16進数値'

（凡例）

m，n，p：正の整数

注※1

データ型がDECIMAL型またはNUMERIC型の場合，len1として精度を取得します。また，len2として位取りを取得します。

注※2

既定の出力表現については，マニュアルHADB　SQLリファレンスの既定の文字列表現を参照してください。

注※3

データ型がTIME型またはTIMESTAMP型の場合，len1としてデータ長を取得します。また，len2として小数秒の桁数を取得します。

注※4

整数データ型のデータ形式がレガシー形式の場合，len1は8になります。

注※5

整数データ型のデータ形式がレガシー形式の場合，len1は4になります。

■？パラメタの情報の出力規則

バインドされたデータがナル値の場合は，NULLが出力されます。

？パラメタに印字できない特殊文字が含まれていても，そのまま出力されます。

データ型がSTRING型の場合，出力するデータ（文字列）は，32,000バイトまでです。

NULL述語に？パラメタを単独で指定した場合，ナル値以外のデータをバインドしてもdata欄には何も出力されません。ナル値がバインドされた場合は，data欄にNULLが出力されます。

？パラメタの値の一括転送を実施した場合，？パラメタセットごとにヘッダ（param_no，type，len1，len2，data，および区切り線）が出力されて，データも出力されます。ただし，[param]は，1回の一括転送で1回だけ出力されます。

？パラメタの値の一括転送については，マニュアルHADB　AP開発ガイドの？パラメタの値の一括転送を参照してください。

メモ

次に示す条件をすべて満たす場合に？パラメタの情報が出力されます。

SQL文中に？パラメタが指定されている場合

コール種別がOPEN，EXEC，またはSQLの場合

(7)　SQLパラレル実行機能に関する情報

SQLパラレル実行機能に関する情報の出力例を次に示します。

■SQLパラレル実行機能に関する情報の出力例

[parallel]
node_no sql_node_type
------- -------------
      3 MAIN
      1 SUB
      4 SUB
      6 SUB

SQLパラレル実行機能に関する情報に出力される項目を次の表に示します。

表10‒19　SQLパラレル実行機能に関する情報に出力される項目

項番

項目名

説明

1

node_no

SQLパラレル実行機能を適用した検索系SQLが実行されたノードのノード番号が出力されます。

2

sql_node_type

SQLパラレル実行機能を適用した検索系SQLが実行されたノードのSQLノード種別が出力されます。

MAIN：SQLメインノード

SUB：SQLサブノード

メモ

SQL文の実行時にSQLパラレル実行機能が適用され，かつ次に示すどちらかの条件を満たす場合に，SQLパラレル実行機能に関する情報が出力されます。

コール種別がOPENで，かつOPENが正常終了した場合

コール種別がSQLの場合

(8)　トランザクションの情報

トランザクションの情報の出力例を次に示します。

■トランザクションの情報の出力例

トランザクションの情報に出力される項目を次の表に示します。

表10‒20　トランザクションの情報に出力される項目

項番

項目名

説明

1

tran_id

データベースを初期化したときからの通番であるトランザクションIDが出力されます。

2

start_time

トランザクションの開始時刻が出力されます。

3

end_time

トランザクションの終了時刻が出力されます。

4

exe_time(us)

トランザクションの実行時間がマイクロ秒単位で出力されます。トランザクションの終了時刻と開始時刻の差が出力されます。

5

trn_iso_lv

トランザクション隔離性水準が出力されます。

READ_COMMITTED：トランザクション隔離性水準がREAD COMMITTEDの場合に出力されます。

REPEATABLE_READ：トランザクション隔離性水準がREPEATABLE READの場合に出力されます。

6

trn_access_mode

トランザクションアクセスモードが出力されます。

READ_WRITE：トランザクションアクセスモードが読み書き可能モードの場合に出力されます。

READ_ONLY：トランザクションアクセスモードが読み取り専用モードの場合に出力されます。

7

sql_order_mode

文字データの並び替え順序が出力されます。

BYTE：文字データをバイトコード順に並び替えた場合に出力されます。

ISO：文字データをソートコード順に並び替えた場合に出力されます。

8

~

トランザクション情報の区切り線として，「~」が出力されます。

メモ

次に示す場合にトランザクションの情報が出力されます。

コール種別がCMITまたはRLBKの場合

暗黙的なトランザクションの決着が発生した場合※

注※

定義系SQL，TRUNCATE TABLE文，またはPURGE CHUNK文の実行が正常終了したときに暗黙的なコミットが実行されます。

また，SQL文のエラーが発生したときに，暗黙的なロールバックが実行されることがあります。その場合，メッセージログファイルにKFAA51001-Eメッセージが出力されます。

トランザクション実行中にコネクションを終了した場合も，暗黙的なコミットが実行されます。

(9)　認可識別子の情報

認可識別子の情報の出力例を次に示します。

■認可識別子の情報の出力例

コール種別がCNCTの場合

ADBUSER01 has been connected.

コール種別がDISCの場合

ADBUSER01 has been disconnected.

［説明］

下線部分には，APのコネクション確立時に指定した認可識別子が出力されます。

コマンドのコネクションの場合は，コマンドの-uオプションに指定した認可識別子が出力されます。HADBサーバに接続するコマンドであっても，-uオプションを指定しないコマンドの場合は，認可識別子の情報は出力されません。

メモ

次に示す場合に認可識別子の情報が出力されます。

コール種別がCNCTで，かつCNCTが正常終了した場合

コール種別がDISCで，かつDISCが正常終了した場合

(10)　SQL文の統計情報

SQL文の統計情報の出力例を次に示します。情報量が多いため，2つに分けています。

■SQL文の統計情報の出力例（その1）

■SQL文の統計情報の出力例（その2）

［説明］

SQL文の統計情報に出力される項目は，adbstatコマンドのSQL文の統計情報に出力される項目と同じです。出力される項目については，マニュアルHADB　コマンドリファレンスのSQL文の統計情報で出力される項目を参照してください。

メモ

次に示す場合にSQL文の統計情報が出力されます。

コール種別がCLOSの場合（カーソルをクローズしないで文ハンドルを解放したり，トランザクションを決着したりした場合を含む）

コール種別がEXEC，EXDI，およびSQLの場合

(11)　アクセスパスの統計情報

アクセスパスの統計情報の出力例および出力項目については，「10.11.3　アクセスパスの統計情報の出力例と出力項目」を参照してください。

(12)　コネクションの確立または終了の区切り線

コネクションの確立または終了の区切り線として，「*」を255個出力します。

■コネクションの確立の区切り線の出力例（コール種別がCNCTの場合）

■コネクションの終了の区切り線の出力例（コール種別がDISCの場合）

メモ

次に示す場合に，コネクションの確立または終了の区切り線が出力されます。

コール種別がCNCTの場合

コール種別がDISCの場合で，かつDISCが正常終了した場合

(13)　SQL文の基本情報

SQL文単位でSQLトレース情報を出力した場合，SQL文の基本情報が出力されます。SQL文の基本情報の出力例を次に示します。

■SQL文の基本情報の出力例

［説明］

con_id

コネクションIDが出力されます。

con_num

HADBサーバの開始後に割り振られるコネクション通番が出力されます。

stmt_hdl

SQL文に割り当てられた文ハンドルが出力されます。

sql_serial_num

コネクション確立後に割り振られるSQL文通番が出力されます。

メモ

次に示す情報が出力されるときにSQL文の基本情報が出力されます。

実行したSQL文とアクセスパス情報

？パラメタの情報

SQLパラレル実行機能に関する情報

上記の出力例は，実行したSQL文とアクセスパス情報と，SQL文の基本情報が出力された例です。

10.11.3　アクセスパスの統計情報の出力例と出力項目

ここでは，アクセスパスの統計情報の出力例，出力項目および注意事項について説明します。

アクセスパスの統計情報は，SQLトレース情報の一部として，実行したSQL文の終了時に出力されます。なお，エラーとなったSQL文については，アクセスパスの統計情報が出力されないことがあります。

アクセスパスの統計情報に出力される対応するアクセスパスのツリー行番号をキーにして，アクセスパス情報と突き合わせることで，SQLトレース情報を確認できます。アクセスパス情報については，「10.11.2　SQLトレース情報に出力される情報」の「(5)　実行したSQL文とアクセスパス情報」を参照してください。

メモ

次に示す場合にアクセスパスの統計情報が出力されます。

コール種別がCLOSの場合（カーソルをクローズしないで文ハンドルを解放したり，トランザクションを決着したりした場合を含む）

コール種別がEXEC，EXDI，またはSQLの場合

(1)　アクセスパスの統計情報の出力例

アクセスパスの統計情報の出力例を次に示します。情報量が多いため，3つに分けています。

■アクセスパスの統計情報の出力例（その1）

■アクセスパスの統計情報の出力例（その2）

■アクセスパスの統計情報の出力例（その3）

(2)　アクセスパスの統計情報に出力される項目

アクセスパスの統計情報に出力される項目，および出力対象となるアクセスパスの種類を，次の表に示します。

表10‒21　アクセスパスの統計情報に出力される項目の一覧

項番

出力項目

出力対象となるアクセスパスの種類

出力される内容の詳細

1

データアクセス情報

作業表の作成情報

CREATE GLOBAL WORK TABLE

「(a)　データアクセス情報」を参照してください。

2

CREATE LOCAL WORK TABLE

3

表の検索方式の情報

TABLE SCAN

4

KEY SCAN

5

INDEX SCAN

6

作業表の検索情報

WORK TABLE SCAN

7

導出表の情報

DERIVED TABLE

8

表関数導出表の情報

TABLE FUNCTION DERIVED TABLE

9

結合方式の情報

HASH JOIN

10

NESTED LOOP JOIN

11

副問合せ種別の情報

SUBQUERY HASH

12

グループ化集合の情報

GROUPING SET

13

検索処理に関する情報※1，※2，※3

副問合せ種別の情報

SUBQUERY HASH

「(b)　検索処理に関する情報」を参照してください。

14

導出表の情報

DERIVED TABLE

15

表関数導出表の情報

TABLE FUNCTION DERIVED TABLE

16

表値構成子の検索情報

TABLE VALUE CONSTRUCTOR SCAN

17

グループ化の処理方式の情報

GLOBAL HASH GROUPING

18

重複排除方式の情報

GLOBAL HASH UNIQUE

19

表の検索方式の情報

TABLE SCAN

20

KEY SCAN

21

INDEX SCAN

22

作業表の検索情報

WORK TABLE SCAN

23

結合方式の情報

NESTED LOOP JOIN

24

HASH JOIN

25

集合演算に関する情報※4

集合演算種別の情報

SET OPERATION

「(c)　集合演算に関する情報」を参照してください。

26

ハッシュグループ化領域に関する情報※5

グループ化の処理方式の情報

LOCAL HASH GROUPING

「(d)　ハッシュグループ化領域に関する情報」を参照してください。

27

ハッシュテーブル領域に関する情報

重複排除方式の情報

GLOBAL HASH UNIQUE

「(e)　ハッシュテーブル領域に関する情報」を参照してください。

28

副問合せ種別の情報

SUBQUERY HASH

29

グループ化の処理方式の情報

GLOBAL HASH GROUPING

30

結合方式の情報

HASH JOIN

31

外への参照列を含む副問合せに関する情報※6，※7

副問合せ種別の情報

SUBQUERY LOOP

「(f)　外への参照列を含む副問合せに関する情報」を参照してください。

32

副問合せの結果を格納するキャッシュに関する情報

副問合せのキャッシュの情報

USING CACHE

「(g)　副問合せの結果を格納するキャッシュに関する情報」を参照してください。

33

再帰的問合せに関する情報

再帰的問合せの情報

RECURSIVE

「(h)　再帰的問合せに関する情報」を参照してください。

34

SQL文の実行に関する情報

−

−

「(i)　SQL文の実行に関する情報」を参照してください。

（凡例）

−：アクセスパスの統計情報の出力対象となるSQL文を実行すると，アクセスパスの種類に関係なく，情報が出力されます。

注※1

副問合せの処理方式が，ネストループ作業表実行またはネストループ行値実行となる，外への参照列を含む副問合せの中で実行される検索処理の場合，対象のアクセスパスは，アクセスパスの統計情報に出力されません。

ただし，外への参照列を含む副問合せの中で実行される次の処理のアクセスパスについては，アクセスパスの統計情報に出力されます。

外への参照列を含まない副問合せの中で実行される検索処理

注※2

副問合せの処理方式が，作業表実行，作業表行値実行またはネストループ作業表実行となる副問合せについて，その結果を格納した作業表の検索処理の場合，対象のアクセスパスは，アクセスパスの統計情報に出力されません。

注※3

ネストループジョインが適用される表の結合処理で，ネストループジョインの外表および内表に関する検索処理の場合，対象のアクセスパスは，アクセスパスの統計情報に出力されません。ただし，ネストループジョインの最も外側の表が導出表の場合，その導出問合せに関する検索処理については，対象のアクセスパスがアクセスパスの統計情報に出力されます。

注※4

副問合せの処理方式が，ネストループ作業表実行またはネストループ行値実行となる，外への参照列を含む副問合せの中で実行される集合演算の場合，対象のアクセスパスは，アクセスパスの統計情報に出力されません。

ただし，外への参照列を含む副問合せの中で実行される次の処理のアクセスパスについては，アクセスパスの統計情報に出力されます。

外への参照列を含まない副問合せの中で実行される集合演算

注※5

副問合せの処理方式が，ネストループ作業表実行またはネストループ行値実行となる，外への参照列を含む副問合せの中で実行されるローカルハッシュグループ化の場合，対象のアクセスパスは，アクセスパスの統計情報に出力されません。

ただし，外への参照列を含む副問合せの中で実行される次の処理のアクセスパスについては，アクセスパスの統計情報に出力されます。

外への参照列を含まない副問合せの中で実行されるローカルハッシュグループ化の処理

注※6

副問合せの結果を評価する個所で，同じSUBQUERY LOOPが複数ある場合は，最初の1行目に出力されます。

注※7

アクセスパス情報のツリー表示でSUBQUERY LOOPがネストした場合，ネストしたSUBQUERY LOOPに対してアクセスパスの統計情報が出力されないことがあります。

(a)　データアクセス情報

アクセスパスの統計情報に出力されるデータアクセス情報について，次の表に示します。

なお，更新系SQLに関するアクセスパスの統計情報の場合，更新対象となる表については，更新対象データまたは削除対象データを検索するときの情報だけが出力されます。データの追加処理，更新処理および削除処理を行うときの情報は出力されません。

また，データアクセス情報は，アクセスパスに対して複数行出力されることがあります。詳細については，「表10‒23　各アクセスパスのデータアクセス情報の出力行数と出力情報」を参照してください。

表10‒22　アクセスパスの統計情報に出力される項目（データアクセス情報）

項番

列のタイトル

出力される内容※1

出力形式

オーバフローが発生した場合

1

Data_path#

対応するアクセスパスのツリー行番号

UINT8

−

2

Data_dbbuff_page_request_cnt(table)

実表へのアクセス時に使用するグローバルバッファのページ要求回数

UINT8

最大値

3

Data_dbbuff_page_hit_cnt(table)

実表へのアクセス時に使用するグローバルバッファのヒット回数

UINT8

最大値

4

Data_dbbuff_page_read_cnt(table)

実表へのアクセス時に使用するグローバルバッファに対するファイル読み込み回数

UINT8

最大値

5

Data_dbbuff_page_write_cnt(table)

実表へのアクセス時に使用するグローバルバッファからのファイル書き込み回数

UINT8

最大値

6

Data_dbbuff_tblscan_request_cnt

実表へのアクセス時に使用するテーブルスキャンバッファのページ要求回数

UINT8

最大値

7

Data_dbbuff_tblscan_hit_cnt

実表へのアクセス時に使用するテーブルスキャンバッファのページのヒット回数

UINT8

最大値

8

Data_dbbuff_tblscan_read_cnt

実表へのアクセス時に使用するテーブルスキャンバッファブロックへのファイル読み込み回数

UINT8

最大値

9

Data_dbbuff_tblscan_read_size

実表へのアクセス時に使用するテーブルスキャンバッファのファイル読み込みサイズ（単位：キロバイト）

UINT8

最大値

10

Data_dbbuff_tblscan_failed_cnt

実表へのアクセス時に使用するテーブルスキャンバッファブロックの割り当てに失敗した回数

割り当てに失敗した場合は，グローバルバッファを使用します。

UINT8

最大値

11

Data_dbbuff_page_request_cnt(btree)

B-treeインデクスへのアクセス時に使用するグローバルバッファのページ要求回数

UINT8

最大値

12

Data_dbbuff_page_hit_cnt(btree)

B-treeインデクスへのアクセス時に使用するグローバルバッファのヒット回数

UINT8

最大値

13

Data_dbbuff_page_read_cnt(btree)

B-treeインデクスへのアクセス時に使用するグローバルバッファへのファイル読み込み回数

UINT8

最大値

14

Data_dbbuff_page_write_cnt(btree)

B-treeインデクスへのアクセス時に使用するグローバルバッファからのファイル書き込み回数

UINT8

最大値

15

Data_dbbuff_page_request_cnt(text)

テキストインデクスへのアクセス時に使用するグローバルバッファのページ要求回数

UINT8

最大値

16

Data_dbbuff_page_hit_cnt(text)

テキストインデクスへのアクセス時に使用するグローバルバッファのヒット回数

UINT8

最大値

17

Data_dbbuff_page_read_cnt(text)

テキストインデクスへのアクセス時に使用するグローバルバッファに対するファイル読み込み回数

UINT8

最大値

18

Data_dbbuff_page_write_cnt(text)

テキストインデクスへのアクセス時に使用するグローバルバッファからのファイル書き込み回数

UINT8

最大値

19

Data_dbbuff_page_request_cnt(range)

レンジインデクスへのアクセス時に使用するグローバルバッファのページ要求回数

UINT8

最大値

20

Data_dbbuff_page_hit_cnt(range)

レンジインデクスへのアクセス時に使用するグローバルバッファのヒット回数

UINT8

最大値

21

Data_dbbuff_page_read_cnt(range)

レンジインデクスへのアクセス時に使用するグローバルバッファに対するファイル読み込み回数

UINT8

最大値

22

Data_dbbuff_page_write_cnt(range)

レンジインデクスへのアクセス時に使用するグローバルバッファからのファイル書き込み回数

UINT8

最大値

23

Data_dbbuff_wrktbl_clt_tbl_cnt

ローカル作業表用バッファの生成回数

UINT8

最大値

24

Data_dbbuff_wrktbl_clt_request_cnt

ローカル作業表用バッファのページ要求回数

UINT8

最大値

25

Data_dbbuff_wrktbl_clt_page_hit_cnt

ローカル作業表用バッファのヒット回数

UINT8

最大値

26

Data_dbbuff_wrktbl_clt_read_cnt

ローカル作業表用バッファへのファイルの読み込み回数

UINT8

最大値

27

Data_dbbuff_wrktbl_clt_write_cnt

ローカル作業表用バッファからファイルへの書き込み回数

UINT8

最大値

28

Data_dbbuff_page_request_cnt(glb_wrk)

グローバル作業表用のグローバルバッファのページ要求回数

UINT8

最大値

29

Data_dbbuff_page_hit_cnt(glb_wrk)

グローバル作業表用のグローバルバッファのヒット回数

UINT8

最大値

30

Data_dbbuff_page_read_cnt(glb_wrk)

グローバル作業表用のグローバルバッファへのファイルの読み込み回数

UINT8

最大値

31

Data_dbbuff_page_write_cnt(glb_wrk)

グローバル作業表用のグローバルバッファからファイルへの書き込み回数

UINT8

最大値

32

Data_bidx_page_split_cnt

システムで使用する値

常に0が出力されます。

UINT8

最大値

33

Data_bidx_validation_check_cnt

B-treeインデクスを使用した検索で，行が有効かどうかを判定した回数

UINT8

最大値

34

Data_ridx_chunk_judge_cnt

レンジインデクスを使用した検索で，表のチャンクを判定した回数

UINT8

最大値

35

Data_ridx_chunk_skip_cnt

レンジインデクスを使用した検索で，表のチャンクをスキップした回数

UINT8

最大値

36

Data_ridx_sgmt_judge_cnt

レンジインデクスを使用した検索で，表のセグメントを判定した回数

UINT8

最大値

37

Data_ridx_sgmt_skip_cnt

レンジインデクスを使用した検索で，表のセグメントをスキップした回数

UINT8

最大値

38

Data_tidx_page_split_cnt

システムで使用する値

常に0が出力されます。

UINT8

最大値

39

Data_wrktbl_create_cnt

作業表を作成した回数

UINT8

最大値

40

Data_wrktbl_drop_cnt

作業表を削除した回数

UINT8

最大値

41

Data_wrktbl_page_assign_num

割り当てた作業表ページ数

UINT8

最大値

42

Data_wrktbl_page_free_num

解放された作業表ページ数

UINT8

最大値

43

Data_wrktbl_page_use_max

割り当てた作業表のページ数のうち，最も大きいページ数

UINT8

最大値

44

Data_wrktbl_sort_merge_cnt

作業表のソートでのソート段数の最大値

UINT8

最大値

45

Data_wrktbl_sort_page_max_cnt

作業表のソート処理で割り当てた最も大きい作業表のページ数

UINT8

最大値

46

Data_dbarea_extension_cnt

システムで使用する値

常に0が出力されます。

UINT8

最大値

47

Data_segmentrel_rthd_max_num

システムで使用する値

常に0が出力されます。

UINT8

最大値

48

Data_log_usrfile_write_cnt

ユーザログファイルへの書き込み回数

UINT8

最大値

49

Data_log_usrbuf_out_cnt

ユーザログバッファの満杯による掃き出し回数

UINT8

最大値

50

Data_log_usrfile_max_size

ユーザログファイルの使用量の最大値

UINT8

最大値

51

Data_directory_send_num

システムで使用する値

常に0が出力されます。

UINT8

最大値

52

Data_access_info_type

データアクセスの種別

Access

アクセスパスが対象とするスキーマオブジェクトにアクセスする場合のデータアクセス情報であることを示しています。

Create_hash_wrktbl

ハッシュテーブル領域不足によって作業表が作成される場合のデータアクセス情報であることを示しています。

Scan_hash_wrktbl

ハッシュテーブル領域不足によって作成される作業表を検索する場合のデータアクセス情報であることを示しています。

Create_split_hash_wrktbl

ハッシュテーブル領域不足によって作業表※2が新たに作成される場合のデータアクセス情報であることを示しています。

Scan_split_hash_wrktbl

ハッシュテーブル領域不足によって新たに作成される作業表※2を検索する場合のデータアクセス情報であることを示しています。

Rowid_fetch

行IDを使用してデータページからデータを取り出すための検索が実行される場合のデータアクセス情報であることを示しています。

Create_grpset_wrktbl

グループ化処理を複数回実行する際に使用される作業表を作成するときのデータアクセス情報であることを示しています。

Scan_grpset_wrktbl

グループ化処理を複数回実行する際に使用される作業表を検索するときのデータアクセス情報であることを示しています。

データアクセスの種別と，アクセスパスの関係については，「表10‒23　各アクセスパスのデータアクセス情報の出力行数と出力情報」を参照してください。

CHAR

−

53

Data_csvread_file_cnt

ADB_CSVREAD関数を使用してオープンされたファイルの数

アーカイブマルチチャンク表にアクセスするSQL文の等価変換によって生成されたADB_CSVREAD関数を使用してオープンされたファイルも含まれます。

UINT8

最大値

54

Data_csvread_file_read_size

ADB_CSVREAD関数を使用してファイルから読み込んだデータサイズの合計値（単位：バイト）

アーカイブマルチチャンク表の等価変換によって生成されたADB_CSVREAD関数を使用してファイルから読み込んだデータサイズも含まれます。

UINT8

最大値

55

Data_deleted_rows_cnt

検索時に無効行と判定された行数

無効行については，次の個所を参照してください。

「11.1.12　シングルチャンク表の再編成が必要かどうかを確認する方法」

「11.5.13　マルチチャンク表の再編成が必要かどうかを確認する方法」

「11.20.1　ディクショナリ表およびシステム表を再編成する理由」

UINT8

最大値

56

Data_tidx_all_search_cnt

テキストインデクスを使用してチャンク内のデータを検索した際，チャンク内のデータを全件検索した回数

UINT8

最大値

57

Data_auditread_file_cnt

ADB_AUDITREAD関数を使用してオープンされたファイルの数

UINT8

最大値

58

Data_auditread_file_read_size

ADB_AUDITREAD関数を使用してファイルから読み込んだデータサイズの合計値（単位：バイト）

UINT8

最大値

59

Data_cs_column_invalid_rows_cnt

カラムストア表のカラムデータ用セグメント検索時に，無効行と判定された行数

UINT8

最大値

60

Data_cs_rowstore_fetch_rows_cnt

カラムストア表の検索時に，ローストア形式のデータ（INSERT文またはUPDATE文で追加した行）にアクセスしてヒットした行数

UINT8

最大値

61

Data_cs_invalid_info_page_request_cnt

カラムストア表の無効情報管理用ページのページ要求回数

UINT8

最大値

62

Data_dbbuff_page_request_max_cnt(table)

実表へのアクセス時に使用するグローバルバッファのページ要求回数（リアルスレッド間の最大値）

UINT8

最大値

63

Data_dbbuff_page_request_min_cnt(table)

実表へのアクセス時に使用するグローバルバッファのページ要求回数（リアルスレッド間の最小値）

UINT8

最大値

64

Data_dbbuff_tblscan_request_max_cnt

実表へのアクセス時に使用するテーブルスキャンバッファのページ要求回数（リアルスレッド間の最大値）

UINT8

最大値

65

Data_dbbuff_tblscan_request_min_cnt

実表へのアクセス時に使用するテーブルスキャンバッファのページ要求回数（リアルスレッド間の最小値）

UINT8

最大値

66

Data_dbbuff_page_request_max_cnt(btree)

B-treeインデクスへのアクセス時に使用するグローバルバッファのページ要求回数（リアルスレッド間の最大値）

UINT8

最大値

67

Data_dbbuff_page_request_min_cnt(btree)

B-treeインデクスへのアクセス時に使用するグローバルバッファのページ要求回数（リアルスレッド間の最小値）

UINT8

最大値

68

Data_dbbuff_page_request_max_cnt(text)

テキストインデクスへのアクセス時に使用するグローバルバッファのページ要求回数（リアルスレッド間の最大値）

UINT8

最大値

69

Data_dbbuff_page_request_min_cnt(text)

テキストインデクスへのアクセス時に使用するグローバルバッファのページ要求回数（リアルスレッド間の最小値）

UINT8

最大値

70

Data_dbbuff_page_request_max_cnt(range)

レンジインデクスへのアクセス時に使用するグローバルバッファのページ要求回数（リアルスレッド間の最大値）

UINT8

最大値

71

Data_dbbuff_page_request_min_cnt(range)

レンジインデクスへのアクセス時に使用するグローバルバッファのページ要求回数（リアルスレッド間の最小値）

UINT8

最大値

72

Data_dbbuff_wrktbl_clt_request_max_cnt

ローカル作業表用バッファのページ要求回数（リアルスレッド間の最大値）

UINT8

最大値

73

Data_dbbuff_wrktbl_clt_request_min_cnt

ローカル作業表用バッファのページ要求回数（リアルスレッド間の最小値）

UINT8

最大値

74

Data_dbbuff_page_request_max_cnt(glb_wrk)

グローバル作業表用のグローバルバッファのページ要求回数（リアルスレッド間の最大値）

UINT8

最大値

75

Data_dbbuff_page_request_min_cnt(glb_wrk)

グローバル作業表用のグローバルバッファのページ要求回数（リアルスレッド間の最小値）

UINT8

最大値

（凡例）

UINT8：8バイトの符号なし整数で出力されます。

CHAR：出力される内容で示した文字列が出力されます。

最大値：オーバフローした場合，18,446,744,073,709,551,615が出力されます。

−：オーバフローは発生しません。または，該当しません。

注

表に記載されていない出力項目は，すべて保守情報です。

注※1

対象のアクセスパスが実行されなかった場合，またはアクセスパスの実行が途中で中断された場合，出力形式のデータ型に応じて次の値が出力されることがあります。

出力形式のデータ型がUINT8の場合

0または実行途中の値

出力形式のデータ型がCHARの場合

空白

注※2

ハッシュテーブルの作成中にハッシュテーブル領域が不足した場合，複数の作業表が作成され，ハッシュテーブルに格納されるデータが，各作業表に分割されて格納されます。各作業表に対するハッシュテーブルの作成中にハッシュテーブル領域不足が再度発生した場合，作業表が新たに作成されます。この新たに作成された作業表を示しています。

各アクセスパスのデータアクセス情報の出力行数と出力情報について，次の表に示します。

表10‒23　各アクセスパスのデータアクセス情報の出力行数と出力情報

項番

アクセスパスの種類

データアクセス情報の出力行数と出力情報

Data_access_info_typeに出力される内容

1

CREATE GLOBAL WORK TABLE

出力行数

アクセスパスに対して1行出力されます。

出力情報

グローバル作業表を作成する場合（ソート処理を含む）のデータアクセス情報が出力されます。この情報には，グローバル作業表を作成する前段階に当たるローカル作業表を作成するときの情報も含まれます。

Access

2

CREATE LOCAL WORK TABLE

出力行数

アクセスパスに対して1行出力されます。

出力情報

ローカル作業表を作成する場合（ソート処理を含む）のデータアクセス情報が出力されます。

Access

3

TABLE SCAN

出力情報（1行出力される場合）

通常は，アクセスパスに対して1行出力されます。

対象の実表，作業表，または表関数導出表を検索する場合のデータアクセス情報が出力されます。

出力情報（3行出力される場合）

アクセスパスが次のどれかに該当する場合は，3行出力されます。

ハッシュジョインの内表の場合

ハッシュ実行が適用される副問合せで，外側の問合せが対象である場合

1行目には，対象の実表，作業表，または表関数導出表を検索する場合のデータアクセス情報が出力されます。

2行目には，ハッシュテーブル領域で領域不足が発生して作業表が作成された場合のデータアクセス情報が出力されます。

3行目には，ハッシュテーブル領域で領域不足が発生して作業表が検索された場合のデータアクセス情報が出力されます。

出力情報（5行出力される場合）

アクセスパスが次のどれかに該当する場合は，5行出力されます。

ハッシュジョインの外表の場合

ハッシュ実行が適用される副問合せの対象の場合

グローバルハッシュグループ化の対象の場合

ハッシュ実行が適用されるSELECT DISTINCTの対象の場合

1行目には，対象の実表，作業表，または表関数導出表を検索する場合のデータアクセス情報が出力されます。

2行目には，ハッシュテーブル領域で領域不足が発生して作業表が作成された場合のデータアクセス情報が出力されます。

3行目には，ハッシュテーブル領域で領域不足が発生して作業表が検索された場合のデータアクセス情報が出力されます。

4行目には，作業表に分割されたあとに，ハッシュテーブル領域で領域不足が発生して作業表が作成された場合のデータアクセス情報が出力されます。

5行目には，作業表に分割されたあとに，ハッシュテーブル領域で領域不足が発生して作業表が検索された場合のデータアクセス情報が出力されます。

1行出力される場合

Access

3行出力される場合

Access（1行目）

Create_hash_wrktbl（2行目）

Scan_hash_wrktbl（3行目）

5行出力される場合

Access（1行目）

Create_hash_wrktbl（2行目）

Scan_hash_wrktbl（3行目）

Create_split_hash_wrktbl（4行目）

Scan_split_hash_wrktbl（5行目）

4

INDEX SCAN

5

KEY SCAN

6

WORK TABLE SCAN

出力情報（1行出力される場合）

通常は，アクセスパスに対して1行出力されます。

対象の作業表を検索する場合のデータアクセス情報が出力されます。

出力情報（2行出力される場合）

アクセスパスが次に該当する場合は，2行出力されます。

ORDER BY句を指定したSQL文で作成された作業表に対して，FROM句に指定した表の行IDを格納する場合

1行目には，対象の作業表を検索する場合のデータアクセス情報が出力されます。

2行目には，行IDを使用してデータページからデータを取り出すために検索した場合のデータアクセス情報が出力されます。データを取出す対象表が複数ある場合は，複数の表にアクセスしたときの値の合計となります。

出力情報（3行出力される場合）

アクセスパスが次のどれかに該当する場合は，3行出力されます。

ハッシュジョインの内表の場合

ハッシュ実行が適用される副問合せで，外側の問合せが対象である場合

1行目には，対象の作業表を検索する場合のデータアクセス情報が出力されます。

2行目には，ハッシュテーブル領域で領域不足が発生して作業表が作成された場合のデータアクセス情報が出力されます。

3行目には，ハッシュテーブル領域で領域不足が発生して作業表が検索された場合のデータアクセス情報が出力されます。

出力情報（5行出力される場合）

アクセスパスが次のどれかに該当する場合は，5行出力されます。

ハッシュジョインの外表の場合

ハッシュ実行が適用される副問合せの対象の場合

グローバルハッシュグループ化の対象の場合

ハッシュ実行が適用されるSELECT DISTINCTの対象の場合

1行目には，対象の作業表を検索する場合のデータアクセス情報が出力されます。

2行目には，ハッシュテーブル領域で領域不足が発生して作業表が作成された場合のデータアクセス情報が出力されます。

3行目には，ハッシュテーブル領域で領域不足が発生して作業表が検索された場合のデータアクセス情報が出力されます。

4行目には，作業表に分割されたあとに，ハッシュテーブル領域で領域不足が発生して作業表が作成された場合のデータアクセス情報が出力されます。

5行目には，作業表に分割されたあとに，ハッシュテーブル領域で領域不足が発生して作業表が検索された場合のデータアクセス情報が出力されます。

1行出力される場合

Access

2行出力される場合

Access（1行目）

Rowid_fetch（2行目）

3行出力される場合

Access（1行目）

Create_hash_wrktbl（2行目）

Scan_hash_wrktbl（3行目）

5行出力される場合

Access（1行目）

Create_hash_wrktbl（2行目）

Scan_hash_wrktbl（3行目）

Create_split_hash_wrktbl（4行目）

Scan_split_hash_wrktbl（5行目）

7

DERIVED TABLE

出力情報（2行出力される場合）

アクセスパスが次のどれかに該当する場合は，2行出力されます。

ハッシュジョインの内表の場合

ハッシュ実行が適用される副問合せで，外側の問合せが対象である場合

1行目には，ハッシュテーブル領域で領域不足が発生して作業表が作成された場合のデータアクセス情報が出力されます。

2行目には，ハッシュテーブル領域で領域不足が発生して作業表が検索された場合のデータアクセス情報が出力されます。

出力情報（4行出力される場合）

アクセスパスが次のどれかに該当する場合は，4行出力されます。

ハッシュジョインの外表の場合

ハッシュ実行が適用される副問合せの対象の場合

グローバルハッシュグループ化の対象の場合

ハッシュ実行が適用されるSELECT DISTINCTの対象の場合

ハッシュ実行が適用される集合演算について作成される導出表の場合

1行目には，ハッシュテーブル領域で領域不足が発生して作業表が作成された場合のデータアクセス情報が出力されます。

2行目には，ハッシュテーブル領域で領域不足が発生して作業表が検索された場合のデータアクセス情報が出力されます。

3行目には，作業表に分割されたあとに，ハッシュテーブル領域で領域不足が発生して作業表が作成された場合のデータアクセス情報が出力されます。

4行目には，作業表に分割されたあとに，ハッシュテーブル領域で領域不足が発生して作業表が検索された場合のデータアクセス情報が出力されます。

2行出力される場合

Create_hash_wrktbl（1行目）

Scan_hash_wrktbl（2行目）

4行出力される場合

Create_hash_wrktbl（1行目）

Scan_hash_wrktbl（2行目）

Create_split_hash_wrktbl（3行目）

Scan_split_hash_wrktbl（4行目）

8

TABLE FUNCTION DERIVED TABLE

9

HASH JOIN

10

NESTED LOOP JOIN

11

SUBQUERY HASH

12

GROUPING SET

出力行数

アクセスパスに対して2行出力されます。

出力情報

1行目には，グループ化処理を複数回実行する際に使用される作業表を作成するときのデータアクセス情報が出力されます。

2行目には，グループ化処理を複数回実行する際に使用される作業表を検索するときのデータアクセス情報が出力されます。

Create_grpset_wrktbl（1行目）

Scan_grpset_wrktbl（2行目）

(b)　検索処理に関する情報

アクセスパスの統計情報に出力される検索処理に関する情報について，次の表に示します。

表10‒24　アクセスパスの統計情報の出力項目（検索処理に関する情報）

項番

列のタイトル

出力される内容※5

出力形式

オーバフローが発生した場合

1

Scan_path#

対応するアクセスパスのツリー行番号

UINT8

−

2

Scan_row_cnt

検索処理した行数※1

各リアルスレッドによって実行された検索処理の行数の合計値が出力されます。

UINT8

WRAP

3

Scan_start_time

検索処理の開始日時※2

検索処理を開始した日時が，次の形式で出力されます。

YYYY-MM-DD△hh:mm:ss.nnnnnn※4

CHAR

−

4

Scan_end_time

検索処理の終了日時※3

検索処理を終了した日時が，次の形式で出力されます。

YYYY-MM-DD△hh:mm:ss.nnnnnn※4

CHAR

−

5

Scan_max_rt_row_cnt

検索処理した行数※1

各リアルスレッドによって実行された検索処理の行数のうち，最大値が出力されます。

UINT8

WRAP

6

Scan_min_rt_row_cnt

検索処理した行数※1

各リアルスレッドによって実行された検索処理の行数のうち，最小値が出力されます。

UINT8

WRAP

（凡例）

UINT8：

8バイトの符号なし整数で出力されます。

CHAR

：出力される内容で示した文字列が出力されます。

WRAP：

18,446,744,073,709,551,615を超えると，ラップアラウンドして最小値に戻ります。

−：

オーバフローは発生しません。または，該当しません。

注

表に記載されていない出力項目は，すべて保守情報です。

注※1

次のように検索処理が複数回実行される場合，複数回の検索処理の値を合計した値が出力されます。

再帰的問合せ内にある，再帰的問合せ名を参照している検索処理

グループ化処理で実行される検索処理（同一問合せ指定中に引数が異なるDISTINCT集合関数を複数指定した場合，各DISTINCT集合関数の結果を求めるためにグループ化処理が複数回実行されます）

ハッシュジョインが分割実行される場合，各ハッシュジョインで実行される検索処理

注※2

次のように検索処理が複数回実行される場合，1回目の検索処理の開始時刻が出力されます。

再帰的問合せ内にある，再帰的問合せ名を参照している検索処理

グループ化処理で実行される検索処理（同一問合せ指定中に引数が異なるDISTINCT集合関数を複数指定した場合，各DISTINCT集合関数の結果を求めるためにグループ化処理が複数回実行されます）

ハッシュジョインが分割実行される場合，各ハッシュジョインで実行される検索処理

注※3

次のように検索処理が複数回実行される場合，最後の検索処理の終了時刻が出力されます。

再帰的問合せ内にある，再帰的問合せ名を参照している検索処理

グループ化処理で実行される検索処理（同一問合せ指定中に引数が異なるDISTINCT集合関数を複数指定した場合，各DISTINCT集合関数の結果を求めるためにグループ化処理が複数回実行されます）

ハッシュジョインが分割実行される場合，各ハッシュジョインで実行される検索処理

注※4

年（YYYY）は4桁で出力されます。月（MM），日（DD），時（hh），分（mm），および秒（ss）は2桁で出力されます。マイクロ秒（nnnnnn）は6桁で出力されます。桁数が足りない場合は，足りない分，左側に0が補われます。△は半角空白を表します。

注※5

対象のアクセスパスが実行されなかった場合，またはアクセスパスの実行が途中で中断された場合，出力形式のデータ型に応じて次の値が出力されることがあります。

出力形式のデータ型がUINT8の場合

0または実行途中の値

出力形式のデータ型がCHARの場合

空白

(c)　集合演算に関する情報

アクセスパスの統計情報に出力される集合演算に関する情報について，次の表に示します。

表10‒25　アクセスパスの統計情報の出力項目（集合演算に関する情報）

項番

列のタイトル

出力される内容※5

出力形式

オーバフローが発生した場合

1

Setop_path#

対応するアクセスパスのツリー行番号

UINT8

−

2

Setop_type

集合演算種別

UNION ALL

UNION DISTINCT

EXCEPT ALL

EXCEPT DISTINCT

INTERSECT ALL

INTERSECT DISTINCT

なお，SQL文に指定された集合演算種別と異なることがあります。

CHAR

−

3

Setop_sort

集合演算時のソート処理の有無※1

Y：ソート処理がある

N：ソート処理がない

CHAR

−

4

Setop_row_cnt

集合演算による処理行数

UINT8

WRAP

5

Setop_start_time

集合演算による処理の開始日時

集合演算による処理を開始した日時が，次の形式で出力されます。※2

YYYY-MM-DD△hh:mm:ss.nnnnnn※4

CHAR

−

6

Setop_end_time

集合演算による処理の終了日時

集合演算による処理を終了した日時が，次の形式で出力されます。※3

YYYY-MM-DD△hh:mm:ss.nnnnnn※4

CHAR

−

（凡例）

UINT8：8バイトの符号なし整数で出力されます。

CHAR：出力される内容で示した文字列が出力されます。

WRAP：18,446,744,073,709,551,615を超えると，ラップアラウンドして最小値に戻ります。

−：オーバフローは発生しません。または，該当しません。

注※1

再帰的問合せ内にある，再帰的問合せ名を参照している集合演算による処理の場合，再帰ごとの値を合計した値が出力されます。

注※2

再帰的問合せ内にある，再帰的問合せ名を参照している集合演算による処理の場合，1回目の再帰の開始時刻が出力されます。

注※3

再帰的問合せ内にある，再帰的問合せ名を参照している集合演算による処理の場合，最後の再帰の終了時刻が出力されます。

注※4

年（YYYY）は4桁で出力されます。月（MM），日（DD），時（hh），分（mm），および秒（ss）は2桁で出力されます。マイクロ秒（nnnnnn）は6桁で出力されます。桁数が足りない場合は，足りない分，左側に0が補われます。△は半角空白を表します。

注※5

対象のアクセスパスが実行されなかった場合，またはアクセスパスの実行が途中で中断された場合，出力形式のデータ型に応じて次の値が出力されることがあります。

出力形式のデータ型がUINT8の場合

0または実行途中の値

出力形式のデータ型がCHARの場合

空白

(d)　ハッシュグループ化領域に関する情報

アクセスパスの統計情報に出力されるハッシュグループ化領域に関する情報について，次の表に示します。

表10‒26　アクセスパスの統計情報の出力項目（ハッシュグループ化領域に関する情報）

項番

列のタイトル

出力される内容※1

出力形式

オーバフローが発生した場合

1

Hashgrp_path#

対応するアクセスパスのツリー行番号

UINT8

−

2

Hashgrp_area_shortage

ハッシュグループ化領域の領域不足の発生有無※2

Y：領域不足が発生している

N：領域不足が発生していない

CHAR

−

3

Hashgrp_area_sufficient_size

ハッシュグループ化領域で領域不足が発生しない十分な領域サイズ（単位：キロバイト）※2

なお，十分な領域サイズが，サーバ定義またはクライアント定義のadb_sql_exe_hashgrp_area_sizeオペランドに指定できる最大値を超える場合は，各オペランドに指定できる最大値が表示されます。

UINT8

−

4

Hashgrp_group_num

グループ化による処理行数（HAVING句の評価前）

UINT8

WRAP

5

Hashgrp_wrktbl_max_row_cnt

作業表への挿入行数の最大値（リアルスレッドごとの最大値）

UINT8

WRAP

（凡例）

UINT8：8バイトの符号なし整数で出力されます。

CHAR：出力される内容で示した文字列が出力されます。

WRAP：18,446,744,073,709,551,615を超えると，ラップアラウンドして最小値に戻ります。

−：オーバフローは発生しません。または，該当しません。

注

表に記載されていない出力項目は，すべて保守情報です。

注※1

対象のアクセスパスが実行されなかった場合，またはアクセスパスの実行が途中で中断された場合，出力形式のデータ型に応じて次の値が出力されることがあります。

出力形式のデータ型がUINT8の場合

0または実行途中の値

出力形式のデータ型がCHARの場合

空白

注※2

次のどちらかの条件を満たす場合，ハッシュグループ化領域ではなく作業表にデータが格納されることがあります（ハッシュグループ化領域が不足するケースに該当します）。

GROUP BY句のグループ化列に実データ長が長いSTRING型がある場合

集合関数の結果に実データ長が長いSTRING型がある場合

この場合，Hashgrp_area_sufficient_sizeに出力された値以上の値を，サーバ定義またはクライアント定義のadb_sql_exe_hashgrp_area_sizeオペランドに指定してSQL文を再実行しても，ハッシュグループ化領域の不足が再度発生する可能性があります。

(e)　ハッシュテーブル領域に関する情報

アクセスパスの統計情報に出力されるハッシュテーブル領域に関する情報について，次の表に示します。

ハッシュテーブル領域に関する情報には，ハッシュフィルタの情報も出力されます。

表10‒27　アクセスパスの統計情報の出力項目（ハッシュテーブル領域に関する情報）

項番

列のタイトル

出力される内容※6

出力形式

オーバフローが発生した場合

1

Hashtbl_path#

対応するアクセスパスのツリー行番号

UINT8

−

2

Hashtbl_area_shortage

ハッシュテーブル領域の領域不足の発生有無※1

Y：領域不足が発生している

N：領域不足が発生していない

CHAR

−

3

Hashtbl_wrktbl_bckt_max_row_cnt

ハッシュテーブル領域が不足した場合の作業表への挿入行数の最大値（リアルスレッドごとの最大値）※2

UINT8

WRAP

4

Hashtbl_filter_num

ハッシュフィルタ数※3

UINT8

−

5

Hashtbl_filter_disabled_num

無効化されたハッシュフィルタの合計数※4，※5

UINT8

−

6

Hashtbl_sum_filter_check_cnt

ハッシュフィルタでハッシュ値をチェックした回数の合計値※4，※5，※7

全ハッシュフィルタの合計値が出力されます。

UINT8

−

7

Hashtbl_max_filter_check_cnt

ハッシュフィルタでハッシュ値をチェックした回数の最大値※4，※5，※7

ハッシュフィルタごとにチェックした回数のうち，最も大きな値が出力されます。

UINT8

−

8

Hashtbl_min_filter_check_cnt

ハッシュフィルタでハッシュ値をチェックした回数の最小値※4，※5，※7

ハッシュフィルタごとにチェックした回数のうち，最も小さな値が出力されます。

UINT8

−

9

Hashtbl_sum_filtering_cnt

ハッシュ値がハッシュフィルタで除外された回数の合計値※4，※5，※7

全ハッシュフィルタの合計値が出力されます。

UINT8

−

10

Hashtbl_max_filtering_cnt

ハッシュ値がハッシュフィルタで除外された回数の最大値※4，※5，※7

ハッシュフィルタごとの除外された回数のうち，最も大きな値が出力されます。

UINT8

−

11

Hashtbl_min_filtering_cnt

ハッシュ値がハッシュフィルタで除外された回数の最小値※4，※5，※7

ハッシュフィルタごとの除外された回数のうち，最も小さな値が出力されます。

UINT8

−

12

Hashtbl_local_disabled_cnt0

SQL処理リアルスレッドごとのハッシュテーブルが無効になった回数※5

SQL処理リアルスレッドごとの合計値が出力されます。

UINT8

WRAP

（凡例）

UINT8：8バイトの符号なし整数で出力されます。

CHAR：出力される内容で示した文字列が出力されます。

WRAP：18,446,744,073,709,551,615を超えると，ラップアラウンドして最小値に戻ります。

−：オーバフローは発生しません。または，該当しません。

注

表に記載されていない出力項目は，すべて保守情報です。

注※1

ハッシュ検索が複数回実行される次の処理の場合，すべてのハッシュ検索を通した情報が出力されます。

再帰的問合せ内にある，再帰的問合せ名を参照している検索処理で実行されるハッシュ検索

同一問合せ指定中に引数が異なるDISTINCT集合関数を複数指定した場合に，各DISTINCT集合関数の結果を求めるために実行される複数回のグローバルハッシュグループ化

分割実行されるハッシュジョイン，または分割実行されるハッシュジョインに含まれるハッシュジョイン

注※2

ハッシュ検索が複数回実行される次の処理の場合，ハッシュ検索ごとの値のうち，最も大きい値が出力されます。

再帰的問合せ内にある，再帰的問合せ名を参照している検索処理で実行されるハッシュ検索

同一問合せ指定中に引数が異なるDISTINCT集合関数を複数指定した場合に，各DISTINCT集合関数の結果を求めるために実行される複数回のグローバルハッシュグループ化

分割実行されるハッシュジョイン，または分割実行されるハッシュジョインに含まれるハッシュジョイン

注※3

ハッシュフィルタが適用されないSQL文の場合，0が出力されます。adb_sql_exe_hashflt_area_sizeオペランドが0の場合も，0が出力されます。

注※4

ハッシュフィルタが適用されないSQL文の場合，0が出力されます。adb_sql_exe_hashflt_area_sizeオペランドが0の場合，およびハッシュフィルタサイズが十分でない場合も，0が出力されます。

注※5

ハッシュ検索が複数回実行される次の処理の場合，すべてのハッシュ検索を通して合計した値に関する情報が出力されます。

再帰的問合せ内にある，再帰的問合せ名を参照している検索処理で実行されるハッシュ検索

分割実行されるハッシュジョイン，または分割実行されるハッシュジョインに含まれるハッシュジョイン

なお，ハッシュフィルタに関する項目については，ハッシュフィルタごとに合計した値に関する情報が出力されます。

注※6

対象のアクセスパスが実行されなかった場合，またはアクセスパスの実行が途中で中断された場合，出力形式のデータ型に応じて次の値が出力されることがあります。

出力形式のデータ型がUINT8の場合

0または実行途中の値

出力形式のデータ型がCHARの場合

空白

注※7

外部表を指定したSQL文の場合，値が集計されないで0が出力されることがあります。

(f)　外への参照列を含む副問合せに関する情報

アクセスパスの統計情報に出力される外への参照列を含む副問合せに関する情報について，次の表に示します。

表10‒28　アクセスパスの統計情報の出力項目（外への参照列を含む副問合せに関する情報）

項番

列のタイトル

出力される内容※1

出力形式

オーバフローが発生した場合

1

Corsubq_path#

対応するアクセスパスのツリー行番号

UINT8

−

2

Corsubq_request_cnt

外への参照列を含む副問合せを要求した回数※2

UINT8

WRAP

（凡例）

UINT8：8バイトの符号なし整数で出力されます。

WRAP：18,446,744,073,709,551,615を超えると，ラップアラウンドして最小値に戻ります。

−：オーバフローは発生しません。または，該当しません。

注

表に記載されていない出力項目は，すべて保守情報です。

注※1

対象のアクセスパスが実行されなかった場合，またはアクセスパスの実行が途中で中断された場合，0または実行途中の値が出力されることがあります。

注※2

再帰的問合せ内にある，再帰的問合せ名を参照している検索処理中の，外への参照列を含む副問合せである場合は，再帰ごとの値を合計した値が出力されます。

(g)　副問合せの結果を格納するキャッシュに関する情報

アクセスパスの統計情報に出力される副問合せの結果を格納するキャッシュに関する情報について，次の表に示します。

表10‒29　アクセスパスの統計情報の出力項目（副問合せの結果を格納するキャッシュに関する情報）

項番

列のタイトル

出力される内容※1

出力形式

オーバフローが発生した場合

1

Corsubqc_path#

対応するアクセスパスのツリー行番号

UINT8

−

2

Corsubqc_request_cnt

キャッシュを要求した回数※2，※3

UINT8

WRAP

3

Corsubqc_exec_cnt

キャッシュにヒットしないで副問合せを実行した回数※2，※3

UINT8

WRAP

（凡例）

UINT8：8バイトの符号なし整数で出力されます。

WRAP：18,446,744,073,709,551,615を超えると，ラップアラウンドして最小値に戻ります。

−：オーバフローは発生しません。または，該当しません。

注

表に記載されていない出力項目は，すべて保守情報です。

注※1

対象のアクセスパスが実行されなかった場合，またはアクセスパスの実行が途中で中断された場合，0または実行途中の値が出力されることがあります。

注※2

再帰的問合せ内にある，再帰的問合せ名を参照している検索処理中の，副問合せである場合，再帰ごとの値を合計した値が出力されます。

注※3

次のどちらかの条件を満たす場合，副問合せの結果を格納するキャッシュへのアクセスを実施しないことがありますが，出力項目のカウント対象になります。

副問合せ中に指定した外への参照列に実データ長が長いSTRING型がある場合

副問合せの結果に実データ長が長いSTRING型がある場合

(h)　再帰的問合せに関する情報

アクセスパスの統計情報に出力される再帰的問合せに関する情報について，次の表に示します。

表10‒30　アクセスパスの統計情報の出力項目（再帰的問合せに関する情報）

項番

列のタイトル

出力される内容※1

出力形式

オーバフローが発生した場合

1

Recurq_path#

対応するアクセスパスのツリー行番号

UINT8

−

2

Recurq_row_cnt

再帰的問合せの処理行数

UINT8

WRAP

3

Recurq_start_time

再帰的問合せによる処理の開始日時

再帰的問合せによる処理を開始した日時が，次の形式で出力されます。

YYYY-MM-DD△hh:mm:ss.nnnnnn※2

CHAR

−

4

Recurq_end_time

再帰的問合せによる処理の終了日時

再帰的問合せによる処理を終了した日時が，次の形式で出力されます。

YYYY-MM-DD△hh:mm:ss.nnnnnn※2

CHAR

−

5

Recurq_max_recursion

最大再帰数指定の値

UINT8

−

6

Recurq_recursion_cnt

再帰した数

UINT8

WRAP

（凡例）

UINT8：8バイトの符号なし整数で出力されます。

CHAR：出力される内容で示した文字列が出力されます。

WRAP：18,446,744,073,709,551,615を超えると，ラップアラウンドして最小値に戻ります。

−：オーバフローは発生しません。または，該当しません。

注

表に記載されていない出力項目は，すべて保守情報です。

注※1

対象のアクセスパスが実行されなかった場合，またはアクセスパスの実行が途中で中断された場合，出力形式のデータ型に応じて次の値が出力されることがあります。

出力形式のデータ型がUINT8の場合

0または実行途中の値

出力形式のデータ型がCHARの場合

空白

注※2

年（YYYY）は4桁で出力されます。月（MM），日（DD），時（hh），分（mm），および秒（ss）は2桁で出力されます。マイクロ秒（nnnnnn）は6桁で出力されます。桁数が足りない場合は，足りない分，左側に0が補われます。△は半角空白を表します。

(i)　SQL文の実行に関する情報

アクセスパスの統計情報に出力されるSQL文の実行に関する情報について，次の表に示します。

表10‒31　アクセスパスの統計情報の出力項目（SQL文の実行に関する情報）

項番

列のタイトル

出力される内容※

出力形式

オーバフローが発生した場合

1

SQLexec_result_wrk_size

SQL文の実行結果を格納する領域のサイズ（単位：バイト）

UINT8

−

（凡例）

UINT8：8バイトの符号なし整数で出力されます。

−：オーバフローは発生しません。または，該当しません。

注

表に記載されていない出力項目は，すべて保守情報です。

注※

対象のアクセスパスが実行されなかった場合，またはアクセスパスの実行が途中で中断された場合，0または実行途中の値が出力されることがあります。

(3)　アクセスパスの統計情報に関する注意事項

すべてのアクセスパスが，アクセスパスの統計情報の出力対象となるわけではありません。そのため，アクセスパスの統計情報とSQL文の統計情報を突き合わせた場合，出力内容が不一致となることがあります。アクセスパスの統計情報に出力される項目については，「(2)　アクセスパスの統計情報に出力される項目」を参照してください。

アクセスパスの統計情報の出力対象となるSQL文については，マニュアルHADB　AP開発ガイドのAPのチューニングのアクセスパスの見方（SQL文の実行計画の見方）のアクセスパスとはにあるアクセスパスの出力対象となるSQL文を参照してください。

？パラメタの値の一括転送を使用して実行したSQL文の場合，アクセスパスの統計情報は出力されません。ただし，？パラメタの値の一括転送を使用した場合でも，？パラメタの組を1個しか指定していないときは，アクセスパスの統計情報が出力されます。？パラメタの値の一括転送については，マニュアルHADB　AP開発ガイドのAPの性能向上に関する設計の？パラメタの値の一括転送を参照してください。

10.11.4　SQLトレース情報の出力例と見方

複数のコネクションが存在する場合，各コネクションのSQLトレース情報が混在して出力されます。複数のコネクションが存在する場合のSQLトレース情報の出力例と見方を説明します。

前提条件

複数のコネクションから次のSQL文が実行され，各SQL文のSQLトレース情報が出力されています。

SELECT * FROM T2

コネクションIDが1のコネクションで実行したSQL文です。

出力例中では，［1］のSQL文と説明しています。

INSERT INTO ADBUSER01.T2 VALUES (?,?)

コネクションIDが2のコネクションで実行したSQL文です。

出力例中では，［2］のSQL文と説明しています。

メモ

1コネクションのSQL文の基本情報またはSQL文の実行情報と，その関連情報※は連続して出力されます。これらの情報の間に，ほかのコネクションの情報が出力されることはありません。したがって，SQL文の基本情報またはSQL文の実行情報に出力されるcon_id，con_num，stmt_hdl，およびsql_serial_numを使って，実行したSQL文に対応する関連情報を探すことができます。

注※

関連情報とは，「10.11.2　SQLトレース情報に出力される情報」の「(3)　クライアント定義情報」〜「(11)　アクセスパスの統計情報」で説明している情報のことです。

■SQLトレース情報の出力例（その1）

■SQLトレース情報の出力例（その2）

■SQLトレース情報の出力例（その3）

■SQLトレース情報の出力例（その4）

■SQLトレース情報の出力例（その5）

■SQLトレース情報の出力例（その6）

■SQLトレース情報の出力例（その7）

■SQLトレース情報の出力例（その8）

メモ

SQL文の実行情報は，SQL文またはコールの終了時刻順に出力されていない可能性があります。ただし，各コネクション内では時刻順に並んでいます。

SQLトレース情報の出力先ファイルが切り替わった場合，SQL文の基本情報またはSQL文の実行情報と関連情報は，2つのファイルに分かれて出力されることがあります。その場合，関連情報が出力されたSQLトレースファイルの1つ前の番号（番号が最小値だった場合は最後の番号）のSQLトレースファイルに，対応するSQL文の基本情報またはSQL文の実行情報が出力されます。

10.11.5　SQLトレース情報を出力するための準備

SQLトレース情報を出力する前に，次のことを実施してください。

(1)　ディスク容量を確認する

SQLトレース情報は，SQLトレースファイルに出力されます。1個当たりのSQLトレースファイルの最大容量は，サーバ定義のadb_sql_trc_txtfile_sizeオペランドで指定します（デフォルト値は256メガバイト）。SQLトレースファイルは最大8個作成されるので，ディスク容量に問題がないかを確認してください。

(2)　サーバ定義を指定する

SQLトレース情報を出力するかどうかは，サーバ定義のadb_sql_trc_outオペランドで指定します。デフォルト値はY（SQLトレース情報を出力する）です。

SQLトレース情報は，トラブルシュートやチューニングの際に有用となる情報のため，基本的にはすべてのSQLトレース情報を取得することを推奨します。ただし，SQLトレース情報を出力する場合，SQLトレース情報がファイルに出力される分，SQL文の処理性能に影響を与えることがあります。また，出力される情報量が多いほど，処理性能に与える影響も大きくなる可能性があります。SQL文の処理性能に与える影響が大きい場合は，次のサーバ定義のオペランドで，SQLトレース情報の出力量を削減することができます。

adb_sql_trc_param

？パラメタの情報を出力するかどうかを選択するオペランドです。デフォルト値はY（？パラメタの情報を出力する）です。

adb_sql_trc_accesspath

アクセスパス情報およびアクセスパスの統計情報を出力するかどうかを選択するオペランドです。デフォルト値はY（アクセスパス情報およびアクセスパスの統計情報を出力する）です。

adb_sql_trc_level

SQLトレース情報を出力する単位を指定するオペランドです。デフォルト値はSQL（SQLトレース情報をSQL文単位で出力する）です。

メモ

HADBサーバの開始後にSQLトレース情報の出力を停止したり，出力するSQLトレース情報を変更したりすることがadbchgsqltrcコマンドでできます。

10.11.6　SQLトレース情報を出力しているときの運用

SQLトレース情報を出力しているときの運用について説明します。

「(1)　SQLトレースファイルのバックアップを取得する」は，SQLトレース情報を出力しているときに行う定期的な運用を説明しています。「(2)　SQLトレース情報の出力情報を確認したい場合」以降は，必要時に行う運用を説明しています。

(1)　SQLトレースファイルのバックアップを取得する

SQLトレース情報が出力された結果，SQLトレースファイルの容量が満杯になった場合，別のSQLトレースファイルに出力先を切り替えます。SQLトレースファイルは全部で8つあり，すべてのSQLトレースファイルが満杯になった場合は，いちばん古いファイルから順次上書きされていきます。そのため，SQLトレース情報を保存しておきたい場合は，SQLトレースファイルのバックアップを取得してください。

SQLトレースファイルの出力先が切り替わったときに，KFAA81004-Iメッセージがメッセージログファイルに出力されます。このメッセージが出力されたときに，切り替え元のSQLトレースファイルのバックアップを取得するようにしてください。

(2)　SQLトレース情報の出力情報を確認したい場合

SQLトレース情報に何の情報が出力されているかを確認したい場合は，adbchgsqltrcコマンドを実行してください。

■コマンドの実行例

adbchgsqltrc -d

sqltrace param    accesspath level
ACTIVE   ACTIVE   INACTIVE   SQL

［説明］

sqltrace

SQLトレース情報が出力されているかどうかが表示されます。この例では，ACTIVE（SQLトレース情報が出力されている）が表示されています。

param

？パラメタの情報が出力されているかどうかが表示されます。この例では，ACTIVE（？パラメタの情報が出力されている）が表示されています。

accesspath

アクセスパス情報およびアクセスパスの統計情報が出力されているかどうかが表示されます。この例では，INACTIVE（アクセスパス情報およびアクセスパスの統計情報が出力されていない）が表示されています。

level

SQLトレース情報の出力単位が表示されます。この例では，SQL（SQL文単位でSQLトレース情報を出力する）が表示されています。

adbchgsqltrcコマンドの実行結果の詳細については，マニュアルHADB　コマンドリファレンスのadbchgsqltrc（SQLトレース情報の出力開始・停止）を参照してください。

(3)　SQLトレース情報の出力情報を変更したい場合

SQLトレース情報の出力情報を変更したい場合は，adbchgsqltrcコマンドを実行してください。

■コマンドの実行例

（例1）？パラメタの情報の出力を停止します。

adbchgsqltrc -n param

［説明］

-n param

？パラメタの情報の出力を停止する指定です。

（例2）アクセスパス情報およびアクセスパスの統計情報の出力を開始します。出力単位はコール単位にします。

adbchgsqltrc -y accesspath -l call

［説明］

-y accesspath

アクセスパス情報およびアクセスパスの統計情報の出力を開始する指定です。

-l call

出力単位をコール単位にする指定です。

adbchgsqltrcコマンドを実行する際のオプションの指定については，マニュアルHADB　コマンドリファレンスのadbchgsqltrc（SQLトレース情報の出力開始・停止）を参照してください。

なお，adbchgsqltrcコマンドによるSQLトレース情報の出力情報の変更は，次回のHADBサーバの開始時には適用されません。次回のHADBサーバの開始時には，サーバ定義の指定が適用されます。

(4)　SQLトレース情報の出力を停止したい場合

SQLトレース情報の出力を停止したい場合は，adbchgsqltrcコマンドを実行してください。

■コマンドの実行例

adbchgsqltrc -e

adbchgsqltrcコマンドを実行する際のオプションの指定については，マニュアルHADB　コマンドリファレンスのadbchgsqltrc（SQLトレース情報の出力開始・停止）を参照してください。

なお，adbchgsqltrcコマンドによるSQLトレース情報の出力停止は，次回のHADBサーバの開始時には適用されません。次回のHADBサーバの開始時には，サーバ定義の指定が適用されます。

(5)　停止していたSQLトレース情報の出力を開始したい場合

停止していたSQLトレース情報の出力を開始したい場合は，adbchgsqltrcコマンドを実行してください。

■コマンドの実行例

adbchgsqltrc -s

adbchgsqltrcコマンドを実行する際のオプションの指定については，マニュアルHADB　コマンドリファレンスのadbchgsqltrc（SQLトレース情報の出力開始・停止）を参照してください。

なお，adbchgsqltrcコマンドによるSQLトレース情報の出力開始は，次回のHADBサーバの開始時には適用されません。次回のHADBサーバの開始時には，サーバ定義の指定が適用されます。

(6)　SQLトレース情報の出力先ファイルを確認したい場合

SQLトレース情報がどのSQLトレースファイルに出力されているかは，SQLトレースファイルの更新日時で判断してください。ファイルの更新日時が最も新しいSQLトレースファイルが，現在のSQLトレース情報の出力先になります。OSのlsコマンドなどを使用して，SQLトレースファイルの更新日時を確認してください。

なお，SQLトレースファイルをテキストエディタなどで更新し，ファイルの更新日時を変更してしまった場合は，更新日時から現在の出力先を判断することはできません。この場合，各SQLトレースファイル内に出力されているSQL文の終了日時を確認してください。SQL文の終了日時が最も新しいファイルが出力先となります。

10.11.7　SQLトレース情報を使用したSQL文のエラー原因調査

(1)　SQL文のエラー原因調査の手順

SQLトレース情報を使用したSQL文のエラー原因調査の手順を次に示します。

手順

SQL文の実行情報に出力されているSQLCODEを確認する

SQLCODEがsqlcode欄に出力されます。負の値になっているSQLCODEを確認してください。

（例）

出力されたSQLCODEに対応するメッセージを確認する

SQLCODEとメッセージの対応付けの方法については，マニュアルHADB　メッセージのSQLCODEの見方を参照してください。

この例の場合，SQLCODEが-559となっています。そのため，対応するメッセージは，KFAA30559-Eメッセージとなります。

message_log_infoに出力されたメッセージログ情報を記録する

（例）

メッセージログファイルに出力されているメッセージを検索する

メッセージログファイルに出力されている手順2.で確認したメッセージを検索してください。この例の場合，メッセージログファイルに出力されているKFAA30559-Eメッセージを検索します。

また，手順3.で記録したメッセージログ情報と，メッセージに出力されているメッセージログ情報が一致しているかを確認してください。一致しているKFAA30559-Eメッセージが該当するメッセージになります。

（例）

メッセージに記載されている対処方法を参照する

メッセージに記載されている対処方法を参照して，SQL文のエラー原因を特定してください。

この例の場合，KFAA30559-Eメッセージの対策欄に記載されている対処方法に従ってください。

(2)　SQL文がどこまで実行されたかを特定する方法

SQLトレース情報の出力単位によって方法が異なります。

(a)　コール単位でSQLトレース情報を出力している場合

sqlcode欄に出力されているSQLCODEが負の値になっているコールでエラーが発生しています。

（例）

(b)　SQL文単位でSQLトレース情報を出力している場合

出力された項目と出力されなかった項目を確認して，どのコールでエラーが発生したかを判断します。例を次に示します。

例1：実行したSQL文は出力されているが，アクセスパス情報は出力されなかった場合

この場合，PREP（SQL文の前処理）またはEXDI（SQL文の前処理および実行）の処理時にエラーが発生しています。

例2：実行したSQL文，アクセスパス情報，および？パラメタの情報は出力されているが，SQL文の統計情報およびアクセスパスの統計情報は出力されなかった場合

この場合，OPEN（カーソルのオープン）の処理時にエラーが発生しています。

10.11.8　SQLトレース情報を利用したSQL文のチューニング

ここでは，SQLトレース情報を利用したSQL文のチューニング手順について説明します。

(1)　SQLトレース情報をSQL文単位で出力している場合

SQLトレース情報をSQL文単位で出力している場合に，SQL文をチューニングする手順について次に示します。

手順

チューニングに利用する情報を準備する

SQLトレース情報を参照できるように準備してください。

実行時間の長いSQL文を特定する

SQLトレース情報のSQL文の実行情報のexe_timeに出力されているSQL文の実行時間を確認して，実行時間の長いSQL文を特定してください。

SQL文の実行情報の出力値を記録する

手順2.で特定したSQL文の実行情報の次の値を記録してください。

con_id（コネクションID）

con_num（コネクション通番）

stmt_hdl（SQL文に割り当てられた文ハンドル）

sql_serial_num（SQL文通番）

SQL文の基本情報を確認する

次の条件を満たすSQL文の基本情報を探してください。

con_id，con_num，stmt_hdl，およびsql_serial_numの値が，手順3.で記録した値と同じである

複数のSQL文の基本情報の中から，該当するSQL文の基本情報を探す方法については，「10.11.4　SQLトレース情報の出力例と見方」を参照してください。

実行したSQL文とアクセスパス情報，および？パラメタの情報を確認する

手順4.で特定したSQL文の基本情報の直後に出力されている実行したSQL文とアクセスパス情報，および？パラメタの情報を確認してください。

統計情報を確認する

手順2.で特定したSQL文の実行情報の直後に出力されている次の統計情報を参照して，SQL文のチューニングを実施してください。

SQL文の統計情報

アクセスパスの統計情報

(2)　SQLトレース情報をコール単位で出力している場合

SQLトレース情報をコール単位で出力している場合に，SQL文をチューニングする手順について次に示します。

手順

チューニングに利用する情報を準備する

SQLトレース情報を参照できるように準備してください。

実行時間の長いSQL文を特定する

SQLトレース情報のSQL文の実行情報のexe_timeに出力されているSQL文の実行時間を確認して，実行時間の長いSQL文を特定してください。

SQL文の実行情報の出力値を記録する

手順2.で特定したSQL文の実行情報の次の値を記録してください。

con_id（コネクションID）

con_num（コネクション通番）

stmt_hdl（SQL文に割り当てられた文ハンドル）

sql_serial_num（SQL文通番）

SQL文の実行情報を確認する

次の条件を満たすSQL文の実行情報を探してください。

con_id，con_num，stmt_hdl，およびsql_serial_numの値が，手順3.で記録した値と同じである

検索系SQLを実行した場合は，コール種別がPREPまたはOPENである

更新系SQLを実行した場合は，コール種別がPREP，EXECまたはEXDIである

実行したSQL文とアクセスパス情報，および？パラメタの情報を確認する

手順4.で特定したSQL文の実行情報の直後に出力されている次の情報を確認してください。

コール種別がPREPまたはEXDIの場合は，実行したSQL文とアクセスパス情報を確認する

コール種別がOPENまたはEXECの場合は，？パラメタの情報を確認する

SQL文の実行情報を確認する

次の条件をすべて満たすSQL文の実行情報を探してください。

con_id，con_num，stmt_hdl，およびsql_serial_numの値が，手順3.で記録した値と同じである

コール種別がCLOS，EXEC，またはEXDIである

統計情報を確認する

手順6.で特定したSQL文の実行情報の直後に出力されている次の統計情報を参照して，SQL文のチューニングを実施してください。

SQL文の統計情報

アクセスパスの統計情報

10.11.9　障害によってSQLトレース情報の出力が停止した場合の対処方法

次のような障害が発生した場合，SQLトレース情報の出力が停止されます。

ディスク領域不足（KFAA51010-Wメッセージが出力）

SQLトレースファイルに対する権限がない（KFAA51010-Wメッセージが出力）

ファイルディスクリプタ不足（KFAA51010-Wメッセージが出力）

メモリ不足（KFAA51011-Wメッセージが出力）

SQLトレース情報の出力を再開する手順を次に示します。

手順

SQLトレース情報の出力状態を確認する

adbchgsqltrcコマンドを実行して確認します。

adbchgsqltrc -d

sqltrace param    accesspath level
INACTIVE ACTIVE   ACTIVE     CALL

SQLトレース情報の出力が停止している場合は，sqltrace欄にINACTIVEが表示されます。

エラー要因を取り除く

メッセージログファイルに出力されたエラーメッセージを確認し，エラー要因を取り除いてください。

SQLトレース情報の出力を再開する

adbchgsqltrcコマンドを実行して再開します。

adbchgsqltrc -s

メモ

SQLトレースファイルを格納しているディスクが満杯になった場合，警告メッセージがメッセージログファイルに出力されて，SQLトレース情報の出力が停止されます。SQLトレース情報の出力が停止されても，SQL文の処理は続行されます。

10.11.10　SQLトレース機能の使用をやめる場合

SQLトレース機能の使用をやめる場合は，サーバ定義のadb_sql_trc_outオペランドにNを指定してください。不要になったSQLトレースファイルは，HADBサーバが終了したあとに手動で削除してください。

メモ

HADBサーバの稼働中にSQLトレース機能の使用をやめたい場合は，adbchgsqltrcコマンドを実行してください。

adbchgsqltrc -e

10.11.11　マルチノード機能を使用している場合の留意事項

マルチノード機能を使用している場合，ノードごとにSQLトレースファイルが作成されます。SQLトレース情報は，トランザクションが実行されたノードのSQLトレースファイルに出力されます。そのため，全トランザクションのSQLトレース情報を出力したい場合は，マルチノード構成の全HADBサーバでSQLトレース情報を出力する必要があります。

メモ

クライアント定義情報に出力されるオペランドの値は，各ノードで異なることがあります。そのため，全ノードでクライアント定義情報とそのクライアント定義を使用したAPのコネクション状態に関する情報が出力されます。

■SQLパラレル実行機能を使用している場合

SQLパラレル実行機能を適用した検索系SQLを実行した場合，SQLトレース情報は次のように出力されます。SQLトレース情報に出力される各情報については，「10.11.2　SQLトレース情報に出力される情報」を参照してください。

SQL文の実行情報

SQL文の実行情報の出力内容がノードによって異なります。

SQLメインノードの場合

SQLトレースの出力レベルに従って，コール種別ごとに出力されます。通常のSQL文の実行時と同じです。そのため，callには，SQLトレースの出力レベルに従ったコール種別が出力されます。

SQLサブノードの場合

SQLパラレル実行機能を適用した1SQL文につき，1つのSQL文の実行情報だけが出力されます。そのため，callには，常にSQLが出力されます。

SQL文の実行情報の次の出力項目には，SQLメインノードとSQLサブノードで同じ情報が出力されます。

con_id

con_num

stmt_hdl

sql_serial_num

tran_id

trn_iso_lv

trn_access_mode

sql_order_mode

cursor_holdability

message_log_info

SQL文の実行情報の次の出力項目には，SQLメインノードとSQLサブノードで異なる情報が出力されます。

sqlcode

SQLメインノードでは，HADBクライアントに返却されるSQLCODEの値が出力されます。

SQLサブノードでは，SQLサブノードでエラーが発生した場合に限り，エラー要因を示すSQLCODEの値が出力されます。

sqlstate

SQLメインノードでは，HADBクライアントに返却されるSQLSTATEの値が出力されます。

SQLサブノードでは，SQLサブノードでエラーが発生した場合に限り，エラー要因を示すSQLSTATEの値が出力されます。

start_time

各ノードでのSQL文の実行結果に基づいた情報が出力されます。

end_time

各ノードでのSQL文の実行結果に基づいた情報が出力されます。

exe_time

各ノードでのSQL文の実行結果に基づいた情報が出力されます。

rows

SQLメインノードでは，SQL文の実行結果に基づいた情報が出力されます。SQLサブノードでは，常に0が出力されます。

実行したSQL文とアクセスパス情報

SQLメインノードとSQLサブノードで同じ情報が出力されます。

？パラメタの情報

SQLメインノードとSQLサブノードで同じ情報が出力されます。

SQLパラレル実行機能に関する情報

SQLメインノードとSQLサブノードで同じ情報が出力されます。

アクセスパスの統計情報

SQLメインノードとSQLサブノードで異なる情報が出力されます。それぞれのノードでのSQL文の実行結果に基づいた情報が出力されます。

メモ

SQLパラレル実行機能を適用した検索系SQLのトラブルシュートやチューニングを行う場合は，SQLメインノードおよびSQLサブノードに出力されたSQLトレース情報をすべて確認する必要があります。各ノードに出力されたSQLトレース情報で，次の出力項目が一致するSQLトレース情報が，SQLパラレル実行機能を適用した検索系SQLのSQLトレース情報になります。

・con_id

・con_num

・stmt_hdl

・sql_serial_num

SQLメインノード，SQLサブノードがどのノードなのかを知りたい場合は，SQLトレース情報のSQLパラレル実行機能に関する情報を確認してください。

10.12　システムログファイルの運用

ここでは，システムログファイルの運用方法について説明します。

10.12.1　システムログファイルの構成とサーバ定義の指定

システムログファイルは，マスタログファイルとユーザログファイルの2種類のファイルで構成されています。マスタログファイルには，トランザクションの開始および終了など，システム制御に関する履歴情報（イベントログ）と，ユーザログファイルの管理情報が出力されます。マスタログファイルは，HADBサーバを開始したときに自動的に1つだけ作成されます。

ユーザログファイルには，データベースの操作履歴情報（ユーザログ）が出力されます。ユーザログファイルは，データベースを更新するトランザクションおよびリアルスレッドごとに作成されます。ユーザログファイルは，HADBサーバを開始したときに自動的に作成されます。サーバ定義の指定によって，作成されるユーザログファイルの個数や初期化容量が決まります。

ユーザログファイルに関するサーバ定義のオペランド

adb_log_usrfile_num

HADBサーバの開始時に作成されるユーザログファイル数を指定します。

adb_log_usrfile_size

ユーザログファイルの初期化容量とユーザログファイルの容量の縮小契機を指定します。

ユーザログファイルの容量が，ここで指定したユーザログファイルの初期化容量を超えた場合，ユーザログファイルの容量が自動的に拡張されます。ただし，ユーザログファイルの拡張処理は，更新性能への影響が大きいため，注意が必要です。詳細については，「14.1.8　ユーザログファイルの初期化容量の拡張」を参照してください。

adb_log_usrbuf_num

ユーザログバッファ面数を指定します。

各オペランドの詳細については，「7.2.3　システムログに関するオペランド（set形式）」を参照してください。

メモ

システムログファイルの詳細については，「2.11.1　再開始による回復処理の流れ」の「(2)　システムログ」を参照してください。

ユーザログファイル数の求め方については，「6.12.15　ユーザログファイル数の求め方」を参照してください。

10.12.2　システムログファイルの容量の縮小契機

データベースの更新処理が行われるとシステムログが出力されるため，データベースの更新量に比例してシステムログファイルの容量が増加していきます。特に，非定期運用などでデータベースの大量更新を行った場合，一部のユーザログファイルの容量が非常に大きくなることがあります。その結果，DBディレクトリ※の容量を圧迫するなどの問題が発生するおそれがあります。DBディレクトリ※の容量圧迫を防ぐために，HADBサーバは次に示す契機でシステムログファイルの容量を自動的に縮小します。

注※

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にしている場合は，ユーザログファイルはDBディレクトリ下ではなく，オブジェクトストレージ上に作成されます。そのため，オブジェクトストレージの容量を圧迫するなどの問題が発生するおそれがあります。

マスタログファイルの容量の縮小契機

データベースを更新したトランザクションが決着した際に，マスタログファイルの容量が2メガバイトを超えている場合，マスタログファイルの容量が縮小されます。ただし，次に示すどちらかの条件を満たす場合は，マスタログファイル内に使用中のシステムログが存在するため，マスタログファイルの容量を縮小する処理がスキップされます。

データベースを更新するトランザクションがほかにも存在する場合

マスタログファイルの容量の縮小契機となったトランザクションが，アーカイブディレクトリ下のデータを削除する処理を行っている場合

重要

データベースを更新するトランザクションを複数実行している状態が続くと，マスタログファイルの縮小処理が行われません。そのため，定期的（例えば1日に1回）に更新トランザクションを複数同時に実行しない時間帯を意図的に設定することを推奨します。

メモ

アーカイブマルチチャンク表に対して次に示すSQL文またはコマンドを実行した場合，アーカイブディレクトリ下のデータを削除する処理が行われます。

DROP SCHEMA文

REVOKE文のSCHEMA

DROP TABLE文

TRUNCATE TABLE文

ALTER TABLE文（アーカイブマルチチャンク表をレギュラーマルチチャンク表へ変更する場合）

PURGE CHUNK文

adbunarchivechunkコマンド

ユーザログファイルの容量の縮小契機

更新トランザクションの決着時，その更新トランザクションが使用していたユーザログファイルの容量が，サーバ定義のadb_log_usrfile_sizeオペランドのユーザログファイルの容量の縮小契機に指定した容量を超えている場合，ユーザログファイルの容量が初期化容量※に縮小されます。

注※

adb_log_usrfile_sizeオペランドのユーザログファイルの初期化容量に指定した容量です。

ユーザログファイルの縮小に関して次のことを考慮してください。

ユーザログファイルの縮小処理に伴う更新性能への影響をなくしたい場合

ディスクに十分な空き容量がある場合は，adb_log_usrfile_sizeオペランドのユーザログファイルの容量の縮小契機に0を指定してください。0を指定した場合，ユーザログファイルの容量の縮小処理は行われません。

ユーザログファイルの容量増加に伴うディスク容量不足を回避したい場合

adb_log_usrfile_sizeオペランドを省略するか，またはadb_log_usrfile_sizeオペランドのユーザログファイルの容量の縮小契機に0以外を指定してください。この場合，ユーザログファイルの容量の縮小処理が行われます。ただし，定常運用中にユーザログファイルの容量の縮小処理の回数が増加すると，更新性能に影響を及ぼすおそれがあります。そのため，ユーザログファイルの容量の縮小処理が実行された回数を定期的に確認してください。ユーザログファイルの容量の縮小処理が実行された回数を調べる方法については，「14.1.9　ユーザログファイルの縮小化容量の見直し」を参照してください。

11　非定期運用

この章では，HADBサーバで非定期に実施する運用項目について説明します。

11.1　実表の運用

ここでは，実表の運用について説明します。

実表のうち，マルチチャンク表の運用については「11.5　マルチチャンク表の運用」を参照してください。

11.1.1　実表を定義する方法

実表を定義するには，定義系SQLのCREATE TABLE文を実行します。

CREATE TABLE文については，マニュアルHADB　SQLリファレンスのCREATE TABLE（表の定義）を参照してください。

なお，実表をローストア表として定義するか，またはカラムストア表として定義するかによって，CREATE TABLE文のSTORAGE FORMATの指定内容が異なります。

実表をローストア表として定義する場合

CREATE TABLE文のSTORAGE FORMATに，ROWを指定してください。または，STORAGE FORMATの指定を省略してください。

実表をカラムストア表として定義する場合

CREATE TABLE文のSTORAGE FORMATに，COLUMNを指定してください。

また，実表をマルチチャンク表として定義する場合は，「11.5.1　マルチチャンク表を定義する方法」を参照してください。

重要

HADBでは，自分（HADBサーバに接続中の認可識別子のHADBユーザ）が所有するスキーマに対してだけ，実表を定義できます。

実表の設計を行ってから，実表を定義してください。実表の設計については，「5.2　表の設計」を参照してください。

11.1.2　実表に列を追加する方法

実表に列を追加する場合，定義系SQLのALTER TABLE文を実行します。

実表を定義したHADBユーザが，ALTER TABLE文で列を追加できます。

なお，追加できる列は1列だけであり，実表の最後の列に追加されます。追加した列にはナル値が格納されます。

実表に列を追加する指定例を次に示します。

指定例

店舗表（SHOPSLIST）に，列名「EMAIL_ADDRESS」を追加します。列名「EMAIL_ADDRESS」のデータ型はVARCHAR(100)とします。

ALTER TABLE "SHOPSLIST"
    ADD COLUMN "EMAIL_ADDRESS" VARCHAR(100)

ALTER TABLE文を実行する際，列定義にNOT NULLやBRANCHも指定できます。ALTER TABLE文の指定形式および規則については，マニュアルHADB　SQLリファレンスの定義系SQLのALTER TABLE（表定義の変更）を参照してください。

なお，次に示す場合はALTER TABLE文による列追加はできません。

操作対象の実表が更新不可状態の場合

操作対象の実表が，行を格納するセグメントが割り当てられている状態であり，かつFIX表の場合

操作対象の実表が，行を格納するセグメントが割り当てられている状態であり，かつCREATE TABLE文を実行した際にBRANCH ALLを指定した実表の場合

行を格納するセグメントが割り当てられている状態の実表に対して，ALTER TABLE文の列定義でNOT NULLを指定した場合

上記のどれかに該当して列を追加できない場合は，「16.8.2　実表に列を追加できない場合」を参照してください。

行を格納するセグメントが割り当てられている状態については，「5.3.1　B-treeインデクスを定義する場合の注意点（B-treeインデクスの未完状態）」を参照してください。

11.1.3　実表の列を削除する方法

実表の列を削除するには，定義系SQLのALTER TABLE文を実行します。

(1)　ALTER TABLE文の指定例

ALTER TABLE文の指定例を次に示します。

指定例

店舗表（SHOPSLIST）のEMAIL_ADDRESS列を削除します。

ALTER TABLE "SHOPSLIST"
    DROP COLUMN "EMAIL_ADDRESS"

ALTER TABLE文の指定形式および規則については，マニュアルHADB　SQLリファレンスの定義系SQLのALTER TABLE（表定義の変更）を参照してください。

メモ

実表（上記の例の場合は店舗表）を定義したHADBユーザが，ALTER TABLE文で列を削除できます。

1回のALTER TABLE文で，削除できる列は1列だけです。

実表の列が1列だけしかない場合，その列を削除することはできません。

(2)　列を削除できる条件

次の1.または2.のどちらかの条件に該当する場合に，ALTER TABLE文で列を削除できます。

削除対象の列がALTER TABLE文で追加した列であり，かつ列を追加したあとに次のSQL文またはコマンドを実行していない場合

DELETE文，INSERT文，またはUPDATE文

adbidxrebuildコマンド，adbimportコマンド，adbmergechunkコマンド，またはadbunarchivechunkコマンド

メモ

ALTER TABLE文で追加した列の定義に誤りなどがあり，追加した列を削除する場合がこのケースに該当します。

なお，上記のSQL文またはコマンドを実行した場合でも，追加した列を削除できることがあります。

また，列を追加したあとに更新行のカラム化機能を有効にした場合，追加した列を削除できないことがあります。

削除対象の列の実表に，行を格納するセグメントが割り当てられていない場合

上記の条件に該当しない場合は，TRUNCATE TABLE文で表のデータを全行削除し，行を格納するセグメントが割り当てられていない状態にします（2.の条件に該当するようにします）。そのあとに，ALTER TABLE文で列を削除します。手順については，「(4)　実表の全行を削除したあとに列を削除する方法」を参照してください。

(3)　列を削除できない条件

次のどれかの条件に該当する場合は，列を削除できません。

列を削除する実表が，行を格納するセグメントが割り当てられている状態であり，かつFIX表の場合

この場合，「(4)　実表の全行を削除したあとに列を削除する方法」に示す方法で列を削除してください。

列を削除する実表が，行を格納するセグメントが割り当てられている状態であり，かつCREATE TABLE文でBRANCH ALLを指定した実表の場合

この場合，「(4)　実表の全行を削除したあとに列を削除する方法」に示す方法で列を削除してください。

列を削除する実表がアーカイブマルチチャンク表の場合

この場合，「(5)　アーカイブマルチチャンク表の列を削除する方法」に示す方法で列を削除してください。

列を削除する実表が更新不可状態の場合

この場合，実表の更新不可状態を解除したあとに，ALTER TABLE文で列を削除してください。実表の更新不可状態を解除する方法については，「16.8.1　実表が更新不可状態になった場合」の「(1)　実表の更新不可状態を解除する方法」を参照してください。

(4)　実表の全行を削除したあとに列を削除する方法

実表の全行を削除したあとに列を削除する手順を次に示します。

手順

以下では，表T1のC2列を削除する手順を説明しています。

adbexportコマンドで，表T1の全データをエクスポートする

ここで出力したファイルを，5.で表T1にデータをインポートする際の入力データファイルとして使用します。

なお，表T1がマルチチャンク表の場合，次のことに留意してください。

表T1のチャンクの状態と構成を維持する必要がない場合

留意事項は特にありません。表T1の全データを一括でファイルに出力してください。

表T1のチャンクの状態と構成を維持する必要がある場合

表T1のデータをチャンク単位でエクスポートしてください。チャンク単位でデータをエクスポートする方法については，「11.5.5　チャンク単位にデータをエクスポートする方法」を参照してください。

5.で表T1にデータをインポートする際，チャンク単位でデータをインポートします。

TRUNCATE TABLE文で，表T1のデータを全行削除する

TRUNCATE TABLE文を実行すると，表T1はデータが全行削除されて，行を格納するセグメントが割り当てられていない状態になります。これによって，列を削除できるようになります。

ALTER TABLE文で，表T1のC2列を削除する

削除動作の指定を省略して，ALTER TABLE文を実行してください。

列構成情報ファイルを作成する

1.で出力したファイルには，C2列のフィールドデータも格納されています。そのため，5.で表T1にデータをインポートする際，C2列のフィールドデータが，表T1にインポートされないように列構成情報ファイルを作成してください。

（例）

adbcolumninfo -n C1  -r 1
adbcolumninfo -n C3  -r 3
adbcolumninfo -n C4  -r 4

adbimportコマンドで，表T1にデータをインポートする

1.で出力したファイルを入力データファイルにして，adbimportコマンドを実行してください。その際，4.で作成した列構成情報ファイルを使用してください。

なお，表T1がマルチチャンク表の場合，次のことに留意してください。

表T1のチャンクの状態と構成を維持する必要がない場合

adbimportコマンドを実行する際，-dオプションおよび-bオプションを指定しないでください。

表T1のチャンクの状態・構成を維持する必要がある場合

1.でチャンク単位でエクスポートしたデータを，チャンク単位でインポートしてください。

初回のインポートでは，-dオプションおよび-bオプションを指定しないで，adbimportコマンドを実行してください。

2回目以降のインポートでは，-bオプションを指定してadbimportコマンドを実行してください（バックグラウンドインポートを実行してください）。

1.のときにカレントチャンクだったチャンクのデータは，必ず最後にインポートしてください（バックグラウンドインポートを実行してください）。

ビュー表の無効化を解除する

3.で表T1の列を削除したため，表T1に依存するビュー表が無効化されています。「11.2.8　ビュー表の無効化を解除する方法」の「(6)　ALTER TABLE文で表の列を削除したことによってビュー表が無効化された場合」を参照して，表T1に依存するビュー表の無効化を解除してください。

(5)　アーカイブマルチチャンク表の列を削除する方法

アーカイブマルチチャンク表の列を削除する手順を次に示します。

手順

以下では，アーカイブマルチチャンク表T1のC2列を削除する手順を説明しています。

adbdbstatusコマンドで，表T1のアーカイブ状態のチャンクを確認する

9.で，該当のチャンクをアーカイブするため，ここで確認しておきます。

adbexportコマンドで，表T1の全データをエクスポートする

ここで出力したファイルを，8.で表T1にデータをインポートする際の入力データファイルとして使用します。

なお，表T1のデータをチャンク単位でエクスポートしてください。チャンク単位でデータをエクスポートする方法については，「11.5.5　チャンク単位にデータをエクスポートする方法」を参照してください。

8.で表T1にデータをインポートする際，チャンク単位でデータをインポートします。

TRUNCATE TABLE文で，表T1のデータを全行削除する

TRUNCATE TABLE文を実行すると，表T1はデータが全行削除されて，行を格納するセグメントが割り当てられていない状態になります。

ALTER TABLE文で，表T1をアーカイブマルチチャンク表からレギュラーマルチチャンク表に変更する

アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更する方法については，「11.5.21　アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更する方法」を参照してください。

メモ

3.と4.の操作によって，列を削除できるようになります。

ALTER TABLE文で，表T1のC2列を削除する

削除動作の指定を省略して，ALTER TABLE文を実行してください。

ALTER TABLE文で，表T1をレギュラーマルチチャンク表からアーカイブマルチチャンク表に変更する

レギュラーマルチチャンク表をアーカイブマルチチャンク表に変更する方法については，「11.5.20　レギュラーマルチチャンク表をアーカイブマルチチャンク表に変更する方法」を参照してください。

列構成情報ファイルを作成する

2.で出力したファイルには，C2列のフィールドデータも格納されています。そのため，8.で表T1にデータをインポートする際，C2列のフィールドデータが表T1にインポートされないように列構成情報ファイルを作成してください。

（例）

adbcolumninfo -n C1  -r 1
adbcolumninfo -n C3  -r 3
adbcolumninfo -n C4  -r 4

adbimportコマンドで，表T1にデータをインポートする

2.で出力したファイルを入力データファイルにして，adbimportコマンドを実行してください。その際，7.で作成した列構成情報ファイルを使用してください。

また，2.でチャンク単位でエクスポートしたデータを，次のことに留意してチャンク単位でインポートしてください。

初回のインポートでは，-dオプションおよび-bオプションを指定しないで，adbimportコマンドを実行してください。

2回目以降のインポートでは，-bオプションを指定してadbimportコマンドを実行してください（バックグラウンドインポートを実行してください）。

2.のときにカレントチャンクだったチャンクのデータは，必ず最後にインポートしてください（バックグラウンドインポートを実行してください）。

adbarchivechunkコマンドで，チャンクをアーカイブ状態にする

1.で確認した際にアーカイブ状態だったチャンクを，アーカイブ状態にしてください。

ビュー表の無効化を解除する

5.で表T1の列を削除したため，表T1に依存するビュー表が無効化されています。「11.2.8　ビュー表の無効化を解除する方法」の「(6)　ALTER TABLE文で表の列を削除したことによってビュー表が無効化された場合」を参照して，表T1に依存するビュー表の無効化を解除してください。

(6)　列を削除したときの影響範囲

削除動作にCASCADEを指定してALTER TABLE文で列を削除した場合，次の項目が削除されます。

削除対象の列に定義されているインデクス

削除対象の列に定義されている主キー，外部キー，および削除対象の列に定義されている主キーを参照する外部キー

列を削除する表に依存するビュー表

削除動作を省略してALTER TABLE文で列を削除した場合，次の項目が削除されます。

削除対象の列に定義されているインデクス

削除対象の列に定義されている主キー，外部キー，および削除対象の列に定義されている主キーを参照する外部キー

また，列を削除する表に依存するビュー表が無効化されます。ビュー表の無効化を解除する方法については，「11.2.8　ビュー表の無効化を解除する方法」の「(6)　ALTER TABLE文で表の列を削除したことによってビュー表が無効化された場合」を参照してください。

APなどで指定しているSQL文に削除対象の列名を指定している場合は，SQL文を修正する必要があります。

adbimportコマンドを実行する際に列構成情報ファイルを使用している場合は，削除した列に対応するadbcolumninfoオペランドを削除する必要があります。C2列を削除した場合の例を次に示します。

adbcolumninfo -n C1 -r 2
adbcolumninfo -n C2 -r 4　　　←この行の指定を削除します。
adbcolumninfo -n C3 -r 3
adbcolumninfo -n C4 -r 1

11.1.4　実表の列名を変更する方法

実表の列名を変更する場合，定義系SQLのALTER TABLE文を実行します。

実表を定義したHADBユーザが，ALTER TABLE文で列名を変更できます。

実表の列名を変更する指定例を次に示します。

指定例

店舗表（SHOPSLIST）のEMAIL_ADDRESS列の列名を，EMAILに変更します。

ALTER TABLE "SHOPSLIST"
    RENAME COLUMN FROM "EMAIL_ADDRESS" TO "EMAIL"

ALTER TABLE文の指定形式および規則については，マニュアルHADB　SQLリファレンスのALTER TABLE（表定義の変更）を参照してください。

なお，実表の列名を変更する場合，次に示す個所に影響があります。影響がないかどうかを確認してください。

列名を変更した実表に依存するビュー表がある場合

列名を変更した実表に依存するビュー表は無効化されます。ビュー表の定義時に，変更前の列名を明示的に指定しているかどうかに関係なく，ビュー表は無効化されます。

無効化されるビュー表（依存するビュー表）を調べる場合は，「11.2.11　依存するビュー表を確認する方法」を参照してください。無効化されるビュー表がある場合は，ALTER TABLE文で列名を変更したあとで，ビュー表の無効化を解除する必要があります。

ビュー表の無効化を解除する方法については，「11.2.8　ビュー表の無効化を解除する方法」の「(2)　ALTER TABLE文で表の列名を変更したことによってビュー表が無効化された場合」を参照してください。

SQL文に変更前の列名を明示的に指定している場合

APなどに指定しているSQL文に，変更前の列名を指定している場合は，変更後の列名に修正する必要があります。

adbimportコマンドに-rオプションで列構成情報ファイルを指定している場合

列構成情報ファイルに対して，列構成情報オプションで変更前の列名を指定している場合は，変更後の列名に修正する必要があります。

また，次に示す場合は，ALTER TABLE文で実表の列名を変更できません。

操作対象の実表が更新不可状態になっている場合

実表の更新不可状態を解除したあとで，ALTER TABLE文で列名を変更してください。実表の更新不可状態を解除する方法については，「16.8.1　実表が更新不可状態になった場合」の「(1)　実表の更新不可状態を解除する方法」を参照してください。

11.1.5　実表の表名を変更する方法

実表の表名を変更する場合，定義系SQLのALTER TABLE文を実行します。

実表を定義したHADBユーザが，ALTER TABLE文で表名を変更できます。

実表の表名を変更する指定例を次に示します。

指定例

店舗表（SHOPSLIST）の表名をSTORELISTに変更します。

ALTER TABLE "SHOPSLIST"
    RENAME TABLE TO "STORELIST"

ALTER TABLE文の指定形式および規則については，マニュアルHADB　SQLリファレンスのALTER TABLE（表定義の変更）を参照してください。

なお，実表の表名を変更する場合，次に示す個所に影響があります。影響がないかどうかを確認してください。

表名を変更した実表に依存するビュー表がある場合

表名を変更した実表に依存するビュー表は無効化されます。無効化されるビュー表（依存するビュー表）を調べる場合は，「11.2.11　依存するビュー表を確認する方法」を参照してください。無効化されるビュー表がある場合は，ALTER TABLE文で表名を変更したあとで，ビュー表の無効化を解除する必要があります。

ビュー表の無効化を解除する方法については，「11.2.8　ビュー表の無効化を解除する方法」の「(3)　ALTER TABLE文で表の表名を変更したことによってビュー表が無効化された場合」を参照してください。

SQL文に変更前の表名を明示的に指定している場合

APなどに指定しているSQL文に，変更前の表名を指定している場合は，変更後の表名に修正する必要があります。

また，次に示す場合は，ALTER TABLE文で実表の表名を変更できません。

操作対象の実表が更新不可状態になっている場合

実表の更新不可状態を解除したあとで，ALTER TABLE文で表名を変更してください。実表の更新不可状態を解除する方法については，「16.8.1　実表が更新不可状態になった場合」の「(1)　実表の更新不可状態を解除する方法」を参照してください。

11.1.6　実表の列のデータ型を変更する方法（VARCHAR型の列のデータ長を長くする方法）

定義系SQLのALTER TABLE文で，列のデータ型を次のように変更できます。

データ長が1～254バイトのVARCHAR型の列のデータ長を，最大255バイトまで長くできます。

データ長が256～31,999バイトのVARCHAR型の列のデータ長を，最大32,000バイトまで長くできます。

メモ

上記以外のデータ型の変更はできません。

VARCHAR型の列のデータ長を短くすることはできません。

データ長が255バイトのVARCHAR型の列のデータ長を変更することはできません。

ALTER TABLE文の指定例を次に示します。

指定例

店舗表（SHOPSLIST）のEMAIL_ADDRESS列のデータ型を，VARCHAR(20)からVARCHAR(30)に変更します。

ALTER TABLE "SHOPSLIST"
    CHANGE COLUMN "EMAIL_ADDRESS" VARCHAR(30)

メモ

実表（上記の例の場合は店舗表）を定義したHADBユーザだけが，ALTER TABLE文で列のデータ型を変更できます。

留意事項

列のデータ型を変更する実表が更新不可状態の場合，列のデータ型を変更することはできません。この場合，実表の更新不可状態を解除したあとに，列のデータ型を変更してください。実表の更新不可状態を解除する方法については，「16.8.1　実表が更新不可状態になった場合」の「(1)　実表の更新不可状態を解除する方法」を参照してください。

列のデータ型を変更する実表に依存するビュー表は無効化されます。ビュー表の定義時に，データ型を変更する列名を明示的に指定しているかどうかに関係なく，ビュー表は無効化されます。

無効化されるビュー表（依存するビュー表）を調べる場合は，「11.2.11　依存するビュー表を確認する方法」を参照してください。無効化されるビュー表がある場合は，列のデータ型を変更したあとにビュー表の無効化を解除する必要があります。ビュー表の無効化を解除する方法については，「11.2.8　ビュー表の無効化を解除する方法」の「(4)　ALTER TABLE文で表の列のデータ型を変更したことによってビュー表が無効化された場合」を参照してください。

テキストインデクスを定義している列のデータ型を変更することはできません。この場合，テキストインデクスをいったん削除してから列のデータ型を変更します。手順を次に示します。

手順（インデクスを再定義する場合）

削除対象のインデクスの定義情報を取得する

2.で削除するインデクスを4.で再定義できるように，インデクスの定義情報を取得しておいてください。インデクスの定義情報の取得については，「付録B.24　ディクショナリ表の検索」の「(30)　インデクスの定義情報を調べる場合」を参照してください。

インデクスの定義情報がわかっている場合は，この操作を実施する必要はありません。

DROP INDEX文で，削除対象のインデクスを削除する

ALTER TABLE文で，列のデータ型を変更する

CREATE INDEX文で，2.で削除したインデクスを再定義する

adbidxrebuildコマンドで，インデクスを再作成する

ビュー表の無効化を解除する

列のデータ型を変更した表に依存するビュー表が無効化されています。「11.2.8　ビュー表の無効化を解除する方法」の「(4)　ALTER TABLE文で表の列のデータ型を変更したことによってビュー表が無効化された場合」を参照して，ビュー表の無効化を解除してください。

次の条件をすべて満たす列のデータ型を変更することはできません。

列のデータ長が254バイト以下である。

複数列インデクスを構成する列である。

データ型を変更したあと，複数列インデクスを構成する列の合計長が256バイト以上になる。

複数列インデクスを構成する列の長さの求め方については，マニュアルHADB　SQLリファレンスの定義系SQLのCREATE INDEX（インデクスの定義）を参照してください。

この場合，該当する複数列インデクスをいったん削除したあとに列のデータ型を変更します。手順については，上記の手順（インデクスを再定義する場合）を参照してください。

次の条件をすべて満たす列のデータ型を変更することはできません。

列のデータ長が256バイト以上である。

B-treeインデクスを構成する列である。

データ型を変更したあとのデータ長によって次の条件式が満たされる。

B-treeインデクスの構成列の合計長＞MIN｛（a÷3）－128，4036｝（単位：バイト）

a：B-treeインデクスを格納するデータ用DBエリアのページサイズ

単一列インデクス，または複数列インデクスを構成する列の長さについては，マニュアルHADB　SQLリファレンスの定義系SQLのCREATE INDEX（インデクスの定義）を参照してください。

この場合，変更後のデータ長を小さくできる場合は，上記の条件式を満たさないように変更後のデータ長を小さくしてください。変更後のデータ長を小さくできない場合は，adbmodareaコマンドでデータ用DBエリアをいったん削除し，ページサイズを大きくしたデータ用DBエリアを再作成してください。

外部キーの構成列のデータ型を変更することはできません。また，ほかの実表の外部キーが参照している主キーの構成列のデータ型を変更することもできません。この場合，外部キーを定義している表と，外部キーの被参照表を再定義する必要があります。次の手順で列のデータ型を変更してください。

手順

以下では，外部キーを定義している表を表T1とし，外部キーの被参照表を表T2としたときの列のデータ型の変更手順を説明しています。

adbexportコマンドで，表T1，表T2の全データをエクスポートする

ここで出力したファイルを，7.で表T1，表T2にデータをインポートする際の入力データファイルとして使用します。

なお，表T1，表T2がマルチチャンク表の場合，次のことに留意してください。

表T1，表T2のチャンクの状態と構成を維持する必要がない場合

留意事項は特にありません。表の全データを一括でファイルに出力してください。

表T1，表T2のチャンクの状態と構成を維持する必要がある場合

表のデータをチャンク単位でエクスポートしてください。チャンク単位でデータをエクスポートする方法については，「11.5.5　チャンク単位にデータをエクスポートする方法」を参照してください。

7.で表T1，表T2にデータをインポートする際，チャンク単位でデータをインポートします。

表T1，表T2の定義情報を確認する

表T1，表T2を定義したときのCREATE TABLE文の指定内容を確認してください。5.で表T1，表T2を再定義するときに使用します。

表T1，表T2を定義したときのCREATE TABLE文の指定内容がわからない場合は，「付録B.24　ディクショナリ表の検索」の「(29)　実表の定義情報を調べる場合」を参照してください。ディクショナリ表を検索すると，表T1，表T2を定義したときのCREATE TABLE文の指定内容が確認できます。

表T1，表T2に定義しているインデクスの定義情報を確認する

表T1，表T2にインデクスを定義している場合，インデクスを定義したときのCREATE INDEX文の指定内容を確認してください。6.で表T1，表T2にインデクスを定義するときに使用します。

インデクスを定義したときのCREATE INDEX文の指定内容がわからない場合は，「付録B.24　ディクショナリ表の検索」の「(30)　インデクスの定義情報を調べる場合」を参照してください。ディクショナリ表を検索すると，インデクスを定義したときのCREATE INDEX文の指定内容が確認できます。

DROP TABLE文で，表T1，表T2を削除する

削除動作の指定を省略して，DROP TABLE文を実行してください。

CREATE TABLE文で，表T2，表T1を再定義する

2.で確認した表T2，表T1を定義したときのCREATE TABLE文の指定内容を流用して，表T2と表T1のCREATE TABLE文を作成してください。

重要

被参照表である表T2を先に定義してください。

主キーの構成列と外部キーの構成列が同じデータ型（変更後のデータ型）になるように，表T2と表T1を再定義してください。

CREATE INDEX文で，表T1，表T2にインデクスを定義する

表T1，表T2にインデクスを定義していた場合，CREATE INDEX文で表T1，表T2にインデクスを定義してください。

3.で確認したインデクスを定義したときのCREATE INDEX文の指定内容を流用して，CREATE INDEX文を作成してください。

adbimportコマンドで，表T1，表T2にデータをインポートする

1.で出力したファイルを入力データファイルにしてください。

なお，表T1，表T2がマルチチャンク表の場合，次のことに留意してください。

表T1，表T2のチャンクの状態と構成を維持する必要がない場合

adbimportコマンドを実行する際，-dオプションおよび-bオプションを指定しないでください。

表T1，表T2のチャンクの状態・構成を維持する必要がある場合

1.でチャンク単位でエクスポートしたデータを，チャンク単位でインポートしてください。

初回のインポートでは，-dオプションおよび-bオプションを指定しないで，adbimportコマンドを実行してください。

2回目以降のインポートでは，-bオプションを指定してadbimportコマンドを実行してください（バックグラウンドインポートを実行してください）。

1.のときにカレントチャンクだったチャンクのデータは，必ず最後にインポートしてください（バックグラウンドインポートを実行してください）。

ビュー表の無効化を解除する

4.で表T1，表T2を削除したため，表T1，表T2に依存するビュー表が無効化されています。

「11.2.11　依存するビュー表を確認する方法」を参照して，表T1，表T2に依存するビュー表を確認してください。依存するビュー表がある場合は，ALTER VIEW文でビュー表の無効化を解除してください。

ヒント

無効化を解除するビュー表が複数ある場合，ビューレベルの値が小さい順にALTER VIEW文を実行してください。

11.1.7　実表のデータを検索・更新する方法

SQL文で，実表のデータを検索・更新する方法について説明します。

実表のデータを検索する方法

実表に格納されたデータを検索する場合，操作系SQLのSELECT文を使用します。

SELECT文については，マニュアルHADB　SQLリファレンスのSELECT（行の検索）を参照してください。

実表にデータを追加する方法（行を挿入する方法）

実表にデータを追加する場合，操作系SQLのINSERT文を使用します。

INSERT文については，マニュアルHADB　SQLリファレンスのINSERT（行の挿入）を参照してください。

重要

カラムストア表に大量のデータを追加する場合は，INSERT文ではなく，adbimportコマンドを使用してください。カラムストア表にINSERT文でデータを追加した場合，追加したデータはローストア形式で格納され，それが原因でカラムストア表の検索性能が低下するおそれがあります。したがって，カラムストア表に大量のデータを追加する場合は，adbimportコマンドを使用してください。adbimportコマンドを使用したデータの追加方法については，「11.1.10　実表にデータを格納する方法（データインポート）」を参照してください。

実表のデータを更新する方法（行を更新する方法）

実表に格納されたデータを更新する場合，操作系SQLのUPDATE文を使用します。

UPDATE文については，マニュアルHADB　SQLリファレンスのUPDATE（行の更新）を参照してください。

実表のデータを削除する方法（行を削除する方法）

実表に格納されたデータを削除する場合，操作系SQLのDELETE文を使用します。

DELETE文については，マニュアルHADB　SQLリファレンスのDELETE（行の削除）を参照してください。

メモ

実表に格納されたすべてのデータを削除する場合，DELETE文ではなく，TRUNCATE TABLE文を使用することを推奨します。

TRUNCATE TABLE文については，「11.1.8　実表の全行を削除する方法」を参照してください。

重要

カラムストア表に対して，SQL文（INSERT文，UPDATE文，DELETE文）によるデータの追加，更新，または削除を繰り返し実行すると，カラムストア表の検索性能が低下するおそれがあります。検索性能の低下を防ぐために，次のことを実施することを推奨します。

更新行のカラム化機能を有効にする

表またはチャンクの再編成要否の情報を定期的に取得し，表またはチャンクの再編成が必要かどうかを確認する

更新行のカラム化機能については，「11.21　更新行のカラム化機能の運用（カラムストア表の検索性能の維持）」を参照してください。

表またはチャンクの再編成が必要かどうかを確認する方法については，「11.1.12　シングルチャンク表の再編成が必要かどうかを確認する方法」または「11.5.13　マルチチャンク表の再編成が必要かどうかを確認する方法」を参照してください。

11.1.8　実表の全行を削除する方法

実表の全行を削除する場合，基本的には，操作系SQLのTRUNCATE TABLE文を実行することを推奨します。

TRUNCATE TABLE文を実行すると，DELETE文（WHERE 探索条件を省略）よりも短時間で全行を削除できます。また，セグメントが解放されるため，削除した行データが格納されていた領域を再利用できます。

TRUNCATE TABLE文とDELETE文の違いについて，次の表に示します。

表11‒1　TRUNCATE TABLE文とDELETE文の違い

項番

比較項目

TRUNCATE TABLE文

DELETE文（WHERE 探索条件を省略）

1

処理性能

高速

DELETE文よりも短時間で全行を削除できます。

低速

TRUNCATE TABLE文と比べると，全行の削除に時間が掛かります。

2

セグメントの解放

解放される

削除した行データが格納されていた領域を再利用できます。

解放されない

削除した行は無効になりますが，ディスクからは削除されません。そのため，削除した行データが格納されている領域は再利用できません。

また，カラムストア表の場合は，無効情報管理用ページを確保するため，使用するセグメントが増加することがあります。

3

COMMIT文の実行要否

自動的にコミットされる

処理が正常終了した場合，処理完了と同時にコミットされます。COMMIT文の実行は不要です。

自動的にコミットされない

処理完了後，COMMIT文を実行する必要があります。

4

排他制御（同一表に対するSELECT文またはCOPY文との同時実行の可否）※

同時実行できない

TRUNCATE TABLE文を実行すると，処理対象表の排他を占有モードで確保します。そのため，同一表に対しては，SELECT文とTRUNCATE TABLE文は同時実行できません。また，同一表に対しては，COPY文とTRUNCATE TABLE文は同時実行できません。

同時実行できる

同一表に対して，SELECT文とDELETE文は同時実行できます。

同一表に対して，COPY文とDELETE文は同時実行できます。

5

推奨する実行タイミング

短時間で全行を削除したいとき

削除した行データが確保していた領域を再利用したいとき

同一表に対して，削除処理と検索処理を同時実行したいとき

トランザクションの1要素として使用したいとき

注※

TRUNCATE TABLE文およびDELETE文を実行したときに確保される排他資源と排他制御モードの詳細については，「2.10.5　確保される排他資源と排他制御モード」を参照してください。

実表の全行を削除する指定例を次に示します。

指定例

販売履歴表（SALESLIST）内の全行を削除します。

TRUNCATE TABLE "SALESLIST"

TRUNCATE TABLE文の指定形式および規則については，マニュアルHADB　SQLリファレンスの操作系SQLのTRUNCATE TABLE（実表の全行削除）を参照してください。

重要

全行を削除する前に，削除する行が定義されている実表に対して，コマンドの再実行が必要かどうか（実表が更新不可状態かどうか）を確認してください。確認する方法については，「10.9.2　実表の状態や使用量を確認したい場合」の「(1)　実表が更新不可状態かどうかを確認する場合」を参照してください。

コマンドの再実行が必要な場合

コマンドを再実行してください。そのあとで，全行を削除してください。

コマンドの再実行が必要な状態のままで（実表が更新不可状態のままで）全行を削除した場合

中断したコマンドによって作成された作業用一時ファイルが残ることがあります。作業用一時ファイルを削除するには，すべての実表の更新不可状態を解除する必要があります。

作業用一時ファイルの削除については，「16.2.6　コマンド実行時の作業用一時ファイルを格納するディスクの空き容量が不足した場合の対処方法」の「(2)　ディスクに不要な作業用一時ファイルが残っている場合」を参照してください。

11.1.9　シングルチャンク表をマルチチャンク表に変更する方法

シングルチャンク表をマルチチャンク表に変更する場合は，シングルチャンク表をいったん削除してください。そのあとで，次のどちらかのマルチチャンク表として再定義してください。

レギュラーマルチチャンク表

アーカイブマルチチャンク表

重要

変更対象の表がカラムストア表の場合，シングルチャンク表からアーカイブマルチチャンク表への変更はできません。

シングルチャンク表をマルチチャンク表に変更する前に，「5.2.4　マルチチャンク表を定義する場合の考慮点」および「5.2.5　アーカイブマルチチャンク表を定義する場合の考慮点【ローストア表】」を参照して，留意事項などを確認してください。

シングルチャンク表をマルチチャンク表に変更する手順を次に示します。

手順

マルチチャンク表に変更するシングルチャンク表の表定義を確認する

シングルチャンク表を定義したときのCREATE TABLE文の指定内容を確認してください。手順4.でマルチチャンク表を定義する際に使用します。

なお，シングルチャンク表を定義したときのCREATE TABLE文の指定内容がわからない場合は，「付録B.24　ディクショナリ表の検索」の「(29)　実表の定義情報を調べる場合」を参照してください。ディクショナリ表を検索すると，シングルチャンク表を定義したときのCREATE TABLE文の指定内容が確認できます。

シングルチャンク表の全データを出力する

adbexportコマンドで，シングルチャンク表の全データを出力データファイルに出力してください。

シングルチャンク表を削除する

削除動作の指定を省略したDROP TABLE文で，シングルチャンク表を削除してください。

マルチチャンク表を定義する

CREATE TABLE文で，マルチチャンク表を定義してください。CREATE TABLE文の指定内容を作成する際の留意事項を次に示します。

手順1.で確認したシングルチャンク表を定義したときのCREATE TABLE文の指定内容を使用して，CREATE TABLE文を作成してください。

CREATE TABLE文にチャンク指定を追加してください。なお，レギュラーマルチチャンク表とアーカイブマルチチャンク表で，チャンク指定の指定内容が異なります。チャンク指定の指定内容については，「11.5.1　マルチチャンク表を定義する方法」を参照してください。

マルチチャンク表にインデクスを定義する

削除したシングルチャンク表にインデクスを定義していた場合は，手順4.で定義したマルチチャンク表に，CREATE INDEX文でインデクスを定義してください。CREATE INDEX文を作成する際の留意事項を次に示します。

シングルチャンク表のインデクスを定義したときのCREATE INDEX文の指定内容がわからない場合は，「付録B.24　ディクショナリ表の検索」の「(30)　インデクスの定義情報を調べる場合」を参照してください。ディクショナリ表を検索すると，シングルチャンク表のインデクスを定義したときのCREATE INDEX文の指定内容が確認できます。

マルチチャンク表には，ユニークインデクスは定義できません。

マルチチャンク表にデータを格納する

adbimportコマンドで，手順4.で定義したマルチチャンク表に，手順2.で出力したデータを格納してください。その際，adbimportコマンドには-dオプションおよび-bオプションは指定しないでください。

ビュー表の無効化を解除する

手順3.で削除したシングルチャンク表を基表とするビュー表が無効化されます。そのため，マルチチャンク表の定義後に，ビュー表の無効化を解除する必要があります。「11.2.8　ビュー表の無効化を解除する方法」の「(8)　表を誤って削除してしまったことによってビュー表が無効化された場合」を参照して，ビュー表の無効化を解除してください。

メモ

adbexportコマンドおよびadbimportコマンドについては，マニュアルHADB　コマンドリファレンスを参照してください。

DROP TABLE文，CREATE TABLE文およびCREATE INDEX文については，マニュアルHADB　SQLリファレンスを参照してください。

11.1.10　実表にデータを格納する方法（データインポート）

実表にデータを格納する場合，adbimportコマンドでデータインポートを行ってください。adbimportコマンドについては，マニュアルHADB　コマンドリファレンスのadbimport（データのインポート）を参照してください。

なお，adbimportコマンドに指定するオプションによって，データインポートの方法が異なります。adbimportコマンドによるデータインポートの方法を次に示します。

作成モードによるデータインポート

作成モードによるデータインポートを実行すると，実表に格納されている既存のデータをすべて削除したあとで，データを新規にインポートします。マルチチャンク表の場合は，既存のチャンクをすべて削除したあとで，新しいチャンクを作成し，そのチャンクにデータをインポートします。そのため，実表中のデータをすべて削除して，新規にデータを格納し直したい場合に，作成モードによるデータインポートを実行してください。

作成モードによるデータインポートを実行する場合は，実表に対して，-dオプションを指定したadbimportコマンドを実行してください。

メモ

新規に定義した表の場合，-dオプションの指定有無に関係なく，作成モードによるデータインポートが行われます。

バックグラウンドインポート

マルチチャンク表に対して実行できるデータインポートの方法です。バックグラウンドインポートを実行すると，新しいチャンクを作成し，そのチャンクにデータをインポートします。データインポートの実行中に，既存のチャンク内のデータを検索することができます。そのため，データインポートと検索系SQL（SELECT文，COPY文）によるデータ検索を同時に実行したい場合に，バックグラウンドインポートを実行してください。

バックグラウンドインポートを実行する場合は，マルチチャンク表に対して，-bオプションを指定したadbimportコマンドを実行してください。バックグラウンドインポートの実行方法については，「11.5.2　マルチチャンク表にデータを格納する方法（バックグラウンドインポート）」を参照してください。

追加モードによるデータインポート

追加モードによるデータインポートを実行すると，実表中のデータはそのままの状態で，データを追加でインポートします。マルチチャンク表の場合は，既存のチャンク内のデータはそのままの状態で，カレントチャンクに新たなデータを追加でインポートします。その際，空きページが存在するセグメントがある場合は，そのセグメントに優先的にデータを追加します。ただし，カラムストア表の場合は，空きページが存在するセグメントがあっても，必ず新しいセグメントに対してデータを格納します。なお，追加モードによるデータインポートの実行中は，インポート対象表のデータを検索することはできません。

追加モードによるデータインポートを実行する場合は，実表に対して，-dオプションおよび-bオプションの指定を省略してadbimportコマンドを実行してください。

メモ

少量のデータをインポートする場合，追加モードによるデータインポートの方が，バックグラウンドインポートよりも，データの格納効率が良くなります。そのため，業務時間外の表のメンテナンスなどの際に，少量のデータをインポートするようなことがある場合は，追加モードによるデータインポートの実行を検討してください。

-dオプションおよび-bオプションについては，マニュアルHADB　コマンドリファレンスのadbimport（データのインポート）のadbimportコマンドの指定形式の指定形式およびオプションの説明を参照してください。

11.1.11　実表のデータをファイルに出力する方法（データをエクスポートする方法）

実表に格納されているデータをファイルに出力する場合，次に示す3つの方法があります。

adbexportコマンドを実行する

adbexportコマンドを実行すると，実表に格納されているデータをファイルに出力できます。

実表に格納されている全データを出力したい場合は，-nオプションに処理対象表を指定してadbexportコマンドを実行してください。

-nオプションに指定した処理対象表に格納されているデータを出力できます。

実表に格納されているデータのうち，特定の条件を満たすデータだけを出力したい場合は，-qオプションを指定してadbexportコマンドを実行してください。

-qオプションのSQL記述ファイルに指定したSQL文の検索結果を出力できます。

adbexportコマンドを使用すると，adbsqlコマンドよりも短時間でデータを出力できます。ただし，adbexportコマンドは，HADBサーバで実行できますが，HADBクライアントでは実行できません。

adbexportコマンドについては，マニュアルHADB　コマンドリファレンスのadbexport（データのエクスポート）を参照してください。

adbsqlコマンドを実行する

adbsqlコマンドで実表のデータを検索して，検索結果をリダイレクションすると，実表のデータをファイルに出力できます。

なお，adbsqlコマンドは，HADBサーバおよびHADBクライアント（Linux版）で実行できます。

adbsqlコマンドについては，マニュアルHADB　コマンドリファレンスのadbsql（SQLの実行）を参照してください。

COPY文を実行する

COPY文で実表のデータを検索し，その検索結果を外部のオブジェクトストレージ（Amazon S3またはAmazon S3互換オブジェクトストレージ）またはファイルストレージに，PARQUET形式またはCSV形式のデータでファイルに出力します。

（例1）

COPY (SELECT * FROM "T1")
    TO 's3://hadb.bucket/shoplist/' SERVER "FOREIGNSERVER1"

上記は，外部のオブジェクトストレージのs3://hadb.bucket/shoplist/ディレクトリ下に，表T1の全データをPARQUET形式のデータでファイルに出力する例です。

（例2）

COPY (SELECT * FROM "T1" WHERE "REG-DATE">=DATE'2025-04-01')
    TO 's3://hadb.bucket/shoplist/' SERVER "FOREIGNSERVER1"

上記は，外部のオブジェクトストレージのs3://hadb.bucket/shoplist/ディレクトリ下に，表T1の2025年4月1日以降のデータをPARQUET形式のデータでファイルに出力する例です。

COPY文については，マニュアルHADB　SQLリファレンスの操作系SQLのCOPY（検索結果のファイルへの出力）を参照してください。

メモ

COPY文を実行する際，HADBサーバは外部データアクセス用ライブラリを使用します。

基本的には，adbexportコマンドで実表に格納されているデータを出力することを推奨します。HADBクライアント（Linux版）で，実表のデータをファイルに出力する必要がある場合は，adbsqlコマンドを使用してください。また，外部のオブジェクトストレージまたはファイルストレージに実表のデータを出力する場合は，COPY文を使用してください。

上記3つの方法の特徴を次の表に示します。

表11‒2　実表に格納されているデータをファイルに出力する各方法の特徴

方法

実行環境

データの出力形式

特徴

adbexportコマンド

HADBサーバ

CSV形式

ほかの方法よりも短時間でデータを出力できます。

adbsqlコマンド

HADBサーバ

HADBクライアント（Linux版）

CSV形式

HADBクライアントでコマンドを実行できます。

COPY文

HADBサーバ

HADBクライアント（Linux版）

CSV形式

PARQUET形式

外部のオブジェクトストレージまたはファイルストレージにデータを出力できます。

出力できないデータ型やデータがあります。

重要

待機状態のチャンク内のデータを出力したい場合は，次のどちらかを実施してください。

チャンクIDを指定して待機状態のチャンク内のデータを出力する

チャンクIDを指定してadbexportコマンドやadbsqlコマンドを実行すると，待機状態のチャンク内のデータも出力できます。詳細については，「11.5.5　チャンク単位にデータをエクスポートする方法」を参照してください。

待機状態のチャンクを通常状態のチャンクに変更する

通常状態のチャンク内のデータは，上記2つの方法で出力できます。そのため，adbchgchunkstatusコマンドで，待機状態のチャンクを通常状態のチャンクに変更してください。詳細については，「11.5.12　チャンクの状態を変更する方法」を参照してください。

11.1.12　シングルチャンク表の再編成が必要かどうかを確認する方法

シングルチャンク表の再編成が必要かどうかを確認する方法について説明します。

メモ

マルチチャンク表の再編成が必要かどうかを確認する方法については，「11.5.13　マルチチャンク表の再編成が必要かどうかを確認する方法」を参照してください。

(1)　表の再編成が必要な理由

シングルチャンク表に対して，SQL文による行の挿入，更新，削除を繰り返し実行すると，表の検索性能やデータの格納効率が低下します。この場合，表を再編成すると，データ用DBエリア内のむだな空き領域が解放されて，表の検索性能やデータの格納効率が向上します。

シングルチャンク表の検索性能やデータの格納効率が低下する理由を次に示します。

シングルチャンク表がローストア表の場合

DELETE文による行の削除を実行すると，削除対象の行データは無効となります。また，UPDATE文による行の更新を実行すると，更新後の行データが新たな行として追加されて，更新前の行データは無効となります。無効となった行データは，ディスクからは削除されません。

行の削除および行の更新を繰り返し実行した場合，表内に無効な行データが増加します。無効な行データが増加すると，次のような影響があります。

無効な行データが増加した影響で，データの格納効率が悪くなる

検索時に参照するページ数が増えるため，検索性能が低下する

シングルチャンク表がカラムストア表の場合

INSERT文による行の挿入，またはUPDATE文による行の更新を実行すると，データがローストア形式で格納されます。行の挿入および行の更新を繰り返し実行した場合，ローストア形式で格納されるデータが増加します。ローストア形式で格納されるデータが増加すると，カラムストア表に適した検索（特定の列データ全体に対する検索や，特定の年や月などの範囲内の，特定の列データに対する検索など）の性能が低下します。

DELETE文による行の削除を実行すると，削除対象の行に関する情報が無効情報管理用ページに格納されます。また，UPDATE文による行の更新を実行すると，更新前の行に関する情報が無効情報管理用ページに格納されます。

行の削除および行の更新を繰り返し実行した場合，無効情報管理用ページが増加し，検索時に参照するページ数が増えるため，検索性能が低下します。

シングルチャンク表がローストア表の場合は，「(2)　シングルチャンク表がローストア表の場合」を参照して，表の再編成が必要かどうかを確認してください。

シングルチャンク表がカラムストア表の場合は，「(3)　シングルチャンク表がカラムストア表の場合」を参照して，表の再編成が必要かどうかを確認してください。

(2)　シングルチャンク表がローストア表の場合

データの格納効率を計算し，データの格納効率が悪い場合は，表の再編成を実行してください。データの格納効率は，次の計算式で求めてください。

計算式

変数の説明

A：表の行数

B：無効行数

計算式で求めた結果が1に近いほど，データの格納効率が良いと判断できます。逆に，0に近いほど，データの格納効率が悪いと判断できます。0に近い場合は，「11.1.13　シングルチャンク表を再編成する方法」を参照して，表のデータを再編成してください。

変数AおよびBについては，次に示す手順で求めてください。

■手順（変数AおよびBの求め方）

SQLトレース情報が出力される設定になっていることを確認する

SQLトレース情報のアクセスパスの統計情報が出力されていることを確認してください。アクセスパスの統計情報が出力されているかどうかは，SQLトレース機能に関するサーバ定義の指定で確認できます。詳細については，「10.11.5　SQLトレース情報を出力するための準備」の「(2)　サーバ定義を指定する」を参照してください。

次のSELECT文を実行する

SELECT COUNT(*) FROM "表名" /*>> WITHOUT INDEX <<*/

上記のSELECT文の実行結果が，表の行数（変数Aの値）になります。

アクセスパスの統計情報を確認する

手順2.で実行したSELECT文に対するアクセスパスの統計情報を確認してください。アクセスパスの統計情報の「Data_deleted_rows_cnt」の値を確認します。この値が，無効行数（変数Bの値）になります。

なお，無効行数（変数Bの値）がわからない場合は，次の手順で，データの格納効率を求めてください。

■手順（変数Bの値がわからない場合）

表の使用中セグメント数を確認する

adbdbstatusコマンドで，表のサマリ情報を出力してください。そして，Used_segments（表の使用中セグメント数）の出力内容を確認してください。adbdbstatusコマンドについては，マニュアルHADB　コマンドリファレンスのadbdbstatus（データベースの状態解析）を参照してください。

表の行数を基に，データ用DBエリアのセグメント数を求める

表の行数を求めたあとで，データ用DBエリアのセグメント数を求めてください。表の行数を求める場合は，上記にある変数Aの説明を参照してください。

データ用DBエリアのセグメント数を求める場合は，「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」の「(a)　変数SGROWTBLおよびPGROWTBLの求め方（シングルチャンク表の場合）」を参照してください。

なお，変数SGROWTBLは，データ用DBエリアに格納されているすべての表の合計を求める計算式となっています。ここでは，対象表だけを求めてください。また，表の行数は，変数SGROWTBLにある変数BP（i）および変数VP（i）で使用します。

求めた結果を基に，データの格納効率を求める

手順1.および手順2.で求めた結果を基に，データの格納効率を求めてください。計算式を次に示します。

計算式

上記の計算結果が0に近い場合，「11.1.13　シングルチャンク表を再編成する方法」を参照して，表の再編成を実行してください。

(3)　シングルチャンク表がカラムストア表の場合

adbdbstatusコマンドを実行して再編成要否の情報を確認し，シングルチャンク表の再編成を実行するかどうかを決めてください。確認手順を次に示します。

手順

-d reorginfoオプションを指定したadbdbstatusコマンドを実行して，再編成要否の情報を出力する

再編成要否の情報のReorganization_necessity（再編成要否）の出力内容を確認する

Recommendedが出力されている場合

シングルチャンク表の再編成を実行してください。再編成手順については，「11.1.13　シングルチャンク表を再編成する方法」を参照してください。

Not_recommendedが出力されている場合

シングルチャンク表の再編成を実行する必要はありません。

adbdbstatusコマンドについては，マニュアルHADB　コマンドリファレンスのadbdbstatus（データベースの状態解析）を参照してください。

11.1.13　シングルチャンク表を再編成する方法

シングルチャンク表を再編成する方法を説明します。

重要

再編成中の表に対して，更新系SQLまたは表を更新するコマンド（adbimportコマンドやadbmergechunkコマンドなど）を実行しないでください。実行した場合，SQL文やコマンドで更新した内容が，再編成後に失われるおそれがあります。

(1)　再編成の手順

シングルチャンク表の再編成手順を次に示します。

手順

APやコマンドが再編成対象の表にアクセスできない状態にする

次の操作を実行して，APやコマンドが再編成対象の表にアクセスできない状態にしてください。

adbchgsrvmodeコマンドに--offlineオプションを指定して，HADBサーバの稼働モードをオフラインモードに変更してください。さらに，HADBサーバマシン上で動作している，表を更新するコマンドやジョブ（定期的に実行しているadbimportコマンドやadbmergechunkコマンドなど）を停止してください。

HADBサーバにアクセスするAPやコマンドをすべて停止してください。

上記の操作を両方とも実行することを推奨します。

表のデータをエクスポートする

adbexportコマンドの-nオプションに再編成対象の表を指定して，表のデータをエクスポートしてください。

adbexportコマンドについては，マニュアルHADB　コマンドリファレンスのadbexport（データのエクスポート）を参照してください。

エクスポートしたデータを作成モードでインポートする

adbimportコマンドに-dオプションを指定して，手順2.でエクスポートしたデータをインポートしてください。-dオプションを指定すると，作成モードでインポートされます（表の既存データをすべて削除してから，手順2.でエクスポートしたデータがインポートされます）。

adbimportコマンドについては，マニュアルHADB　コマンドリファレンスのadbimport（データのインポート）を参照してください。

重要

adbimportコマンドを実行する際，インポートオプションadb_import_rthd_numには，「(2)　インポートオプションの見積もり」に示す計算式を満たす値を指定してください。計算式を満たさない値を指定すると，データの格納効率が悪くなるおそれがあります。

APやコマンドが再編成対象の表にアクセスできる状態にする

次に示す方法で，APやコマンドが再編成対象の表にアクセスできる状態にしてください。

手順1.で，HADBサーバの稼働モードをオフラインモードに変更した場合

adbchgsrvmodeコマンドに--normalオプションを指定して，HADBサーバの稼働モードを通常モードに変更してください。また，HADBサーバマシン上で動作しているコマンドやジョブを停止した場合は，停止していたコマンドやジョブを開始してください。

手順1.で，HADBサーバにアクセスするAPやコマンドを停止した場合

停止していたAPやコマンドを開始してください。

メモ

マルチチャンク表を再編成する方法については，次の個所を参照してください。

「11.5.14　マルチチャンク表を再編成する方法（チャンク単位で再編成する場合）」

「11.5.15　マルチチャンク表を再編成する方法（表全体を再編成する場合）」

「11.5.16　マルチチャンク表を再編成する方法（サンプルシェルを使用して再編成する場合）」

(2)　インポートオプションの見積もり

■シングルチャンク表がローストア表の場合

adbimportコマンドを実行する際，インポートオプションadb_import_rthd_numには，次の計算式を満たす値を指定してください。計算式を満たさない値を指定すると，データの格納効率が悪くなるおそれがあります。

計算式

インポートオプションadb_import_rthd_numの指定値 ≦
    ↑ 再編成対象のセグメント数 × データの格納効率 ↑＋1

再編成対象のセグメント数

表の使用中セグメント数を代入してください。

表の使用中セグメント数を代入するためには，adbdbstatusコマンドで表のサマリ情報を出力してください。そして，Used_segments（表の使用中セグメント数）の出力内容を確認してください。

adbdbstatusコマンドについては，マニュアルHADB　コマンドリファレンスのadbdbstatus（データベースの状態解析）を参照してください。

データの格納効率

「11.1.12　シングルチャンク表の再編成が必要かどうかを確認する方法」の「(2)　シングルチャンク表がローストア表の場合」で求めた値を代入してください。

■シングルチャンク表がカラムストア表の場合

adbimportコマンドを実行する際，インポートオプションadb_import_rthd_numには，次の計算式を満たす値を指定してください。計算式を満たさない値を指定すると，データの格納効率が悪くなるおそれがあります。

計算式

インポートオプションadb_import_rthd_numの指定値 ≦
    ↑ 再編成対象のセグメント数 × 再編成対象の行数
       ÷ カラムデータ用セグメントに格納されている行数 ↑＋1

再編成対象のセグメント数

表の使用中のカラムデータ用セグメント数を代入してください。

表の使用中のカラムデータ用セグメント数を確認するには，-d usedオプションを指定したadbdbstatusコマンドで，DBエリア，表とインデクスの使用量情報を出力してください。そして，Segment_type（セグメントの種類）がColumn_data（カラムデータ用セグメント）の行のUsed_segments（使用中セグメント数）の出力内容を確認してください。

再編成対象の行数

再編成対象の表の行数を代入してください。次のSELECT文を実行すると，表の行数がわかります。

SELECT COUNT(*) FROM "表名"

カラムデータ用セグメントに格納されている行数

再編成対象の表にadbimportコマンドでインポートした行数，または更新行のカラム化機能によってローストア形式からカラムストア形式に変換された行数を代入してください。

adbdbstatusコマンドを実行して，再編成要否の情報を取得してください。Column_data_numの値が，カラムデータ用セグメントに格納されている行数です。

11.1.14　ローストア表をカラムストア表に変更する方法

ローストア表をカラムストア表に変更したい場合は，対象のローストア表をいったん削除したあとで，カラムストア表として再定義する必要があります。

重要

ローストア表と比べると，カラムストア表には幾つかの制限事項があります。そのため，カラムストア表の制限事項を確認してから，ローストア表をカラムストア表に変更するようにしてください。カラムストア表の制限事項については，「5.2.2　ローストア表とカラムストア表の選択基準」の「(1)　カラムストア表の制限事項」を参照してください。

メモ

カラムストア表をローストア表に変更したい場合は，「11.1.15　カラムストア表をローストア表に変更する方法」を参照してください。

次の手順に従って，ローストア表をカラムストア表に変更してください。

手順

ローストア表に格納されているすべてのデータを出力する

adbexportコマンドで，ローストア表に格納されているすべてのデータをファイルに出力してください。

ローストア表がマルチチャンク表の場合に，adbexportコマンドを実行する際の留意事項を次に示します。

マルチチャンク表のチャンクの状態・構成を維持する必要がない場合

留意事項は特にありません。ローストア表に格納されているすべてのデータをファイルに出力してください。

マルチチャンク表のチャンクの状態・構成を維持する必要がある場合

ローストア表に格納されているすべてのデータを，チャンク単位でファイルに出力する必要があります。チャンク単位でデータを出力しないと，チャンクの状態・構成を維持したまま，カラムストア表にデータを格納できません。そのため，チャンク数分，エクスポートを行ってください。

チャンク単位でデータを出力する場合は，「11.5.5　チャンク単位にデータをエクスポートする方法」を参照してください。

ローストア表の定義情報を確認する

ローストア表を定義したときのCREATE TABLE文の指定内容を確認してください。カラムストア表を定義する際に使用します。

ローストア表を定義したときのCREATE TABLE文の指定内容がわからない場合は，「付録B.24　ディクショナリ表の検索」の「(29)　実表の定義情報を調べる場合」を参照してください。ディクショナリ表を検索すると，ローストア表を定義したときのCREATE TABLE文の指定内容が確認できます。

ローストア表に定義されているインデクスの定義情報を確認する

ローストア表にインデクスを定義している場合，インデクスを定義したときのCREATE INDEX文の指定内容を確認してください。カラムストア表にインデクスを定義する際に使用します。

インデクスを定義したときのCREATE INDEX文の指定内容がわからない場合は，「付録B.24　ディクショナリ表の検索」の「(30)　インデクスの定義情報を調べる場合」を参照してください。ディクショナリ表を検索すると，インデクスを定義したときのCREATE INDEX文の指定内容が確認できます。

ローストア表を削除する

削除動作の指定を省略したDROP TABLE文で，ローストア表を削除してください。

カラムストア表を定義する

CREATE TABLE文で，カラムストア表を定義してください。CREATE TABLE文を作成する際の留意事項を次に示します。

手順2.で確認したローストア表を定義したときのCREATE TABLE文の指定内容を流用して，CREATE TABLE文を作成してください。

CREATE TABLE文のSTORAGE FORMATに，COLUMNを指定してください。

カラムストア表にインデクスを定義する

削除したローストア表にインデクスを定義していた場合，カラムストア表にCREATE INDEX文でインデクスを定義してください。CREATE INDEX文を作成する際の留意事項を次に示します。

手順3.で確認したインデクスを定義したときのCREATE INDEX文の指定内容を流用して，CREATE INDEX文を作成してください。

なお，ローストア表にB-treeインデクスを定義していた場合でも，カラムストア表にはB-treeインデクスを定義しないことを推奨します。詳細については，「5.2.2　ローストア表とカラムストア表の選択基準」の「(3)　カラムストア表の検索時に使用されるB-treeインデクス」を参照してください。

カラムストア表には，テキストインデクスは定義できません。

カラムストア表にデータを格納する

adbimportコマンドで，手順5.で定義したカラムストア表に，手順1.で出力したすべてのデータを格納してください。

カラムストア表がマルチチャンク表の場合に，adbimportコマンドを実行する際の留意事項を次に示します。

マルチチャンク表のチャンクの状態・構成を維持する必要がない場合

adbimportコマンドには，-dオプションおよび-bオプションは指定しないでください。

マルチチャンク表のチャンクの状態・構成を維持する必要がある場合

手順1.でチャンク単位に出力したデータを，チャンク単位にインポートする必要があります。

手順1.でカレントチャンクだったチャンクのデータは，必ず最後に格納してください。

最初に格納するデータの場合は，-dオプションおよび-bオプションを指定しないで，adbimportコマンドを実行してください。

2回目以降に格納するデータの場合は，バックグラウンドインポートで格納してください。-bオプションを指定してadbimportコマンドを実行してください。手順1.でカレントチャンクだったチャンクのデータも，バックグラウンドインポートで格納してください。

ビュー表の無効化を解除する

手順4.で削除したローストア表を基表とするビュー表が無効化されます。そのため，カラムストア表の定義後に，ビュー表の無効化を解除する必要があります。「11.2.8　ビュー表の無効化を解除する方法」の「(8)　表を誤って削除してしまったことによってビュー表が無効化された場合」を参照して，ビュー表の無効化を解除してください。

これで，ローストア表をカラムストア表に変更できます。

メモ

adbexportコマンドおよびadbimportコマンドについては，マニュアルHADB　コマンドリファレンスを参照してください。

DROP TABLE文，CREATE TABLE文およびCREATE INDEX文については，マニュアルHADB　SQLリファレンスを参照してください。

11.1.15　カラムストア表をローストア表に変更する方法

カラムストア表をローストア表に変更したい場合は，対象のカラムストア表をいったん削除したあとで，ローストア表として再定義する必要があります。

重要

カラムストア表と比べると，ローストア表の場合，表定義時に指定できる項目が増えます。そのため，ローストア表に変更する前に，「5.2.1　表を設計する際の流れ」を参照してください。

メモ

ローストア表をカラムストア表に変更したい場合は，「11.1.14　ローストア表をカラムストア表に変更する方法」を参照してください。

次の手順に従って，カラムストア表をローストア表に変更してください。

手順

カラムストア表に格納されているすべてのデータを出力する

adbexportコマンドで，カラムストア表に格納されているすべてのデータをファイルに出力してください。

カラムストア表がマルチチャンク表の場合に，adbexportコマンドを実行する際の留意事項を次に示します。

マルチチャンク表のチャンクの状態・構成を維持する必要がない場合

留意事項は特にありません。カラムストア表に格納されているすべてのデータをファイルに出力してください。

マルチチャンク表のチャンクの状態・構成を維持する必要がある場合

カラムストア表に格納されているすべてのデータを，チャンク単位でファイルに出力する必要があります。チャンク単位でデータを出力しないと，チャンクの状態・構成を維持したまま，ローストア表にデータを格納できません。そのため，チャンク数分，エクスポートを行ってください。

チャンク単位でデータを出力する場合は，「11.5.5　チャンク単位にデータをエクスポートする方法」を参照してください。

カラムストア表の定義情報を確認する

カラムストア表を定義したときのCREATE TABLE文の指定内容を確認してください。ローストア表を定義する際に使用します。

カラムストア表を定義したときのCREATE TABLE文の指定内容がわからない場合は，「付録B.24　ディクショナリ表の検索」の「(29)　実表の定義情報を調べる場合」を参照してください。ディクショナリ表を検索すると，カラムストア表を定義したときのCREATE TABLE文の指定内容が確認できます。

カラムストア表に定義されているインデクスの定義情報を確認する

カラムストア表にインデクスを定義している場合，インデクスを定義したときのCREATE INDEX文の指定内容を確認してください。ローストア表にインデクスを定義する際に使用します。

インデクスを定義したときのCREATE INDEX文の指定内容がわからない場合は，「付録B.24　ディクショナリ表の検索」の「(30)　インデクスの定義情報を調べる場合」を参照してください。ディクショナリ表を検索すると，インデクスを定義したときのCREATE INDEX文の指定内容が確認できます。

カラムストア表を削除する

削除動作の指定を省略したDROP TABLE文で，カラムストア表を削除してください。

ローストア表を定義する

CREATE TABLE文で，ローストア表を定義してください。CREATE TABLE文を作成する際の留意事項を次に示します。

手順2.で確認したカラムストア表を定義したときのCREATE TABLE文の指定内容を流用して，CREATE TABLE文を作成してください。

CREATE TABLE文のSTORAGE FORMATに，ROWを指定してください。

ローストア表にインデクスを定義する

削除したカラムストア表にインデクスを定義していた場合，ローストア表にCREATE INDEX文でインデクスを定義してください。CREATE INDEX文を作成する際の留意事項を次に示します。

手順3.で確認したインデクスを定義したときのCREATE INDEX文の指定内容を流用して，CREATE INDEX文を作成してください。

CREATE INDEX文を作成する際，必要に応じて，B-treeインデクスやテキストインデクスを定義することを検討してください。

カラムストア表には，B-treeインデクスを定義することは非推奨です。また，テキストインデクスを定義できません。通常は，レンジインデクスだけが定義されているため，CREATE INDEX文を作成する際に留意してください。

ローストア表にデータを格納する

adbimportコマンドで，手順5.で定義したローストア表に，手順1.で出力したすべてのデータを格納してください。

ローストア表がマルチチャンク表の場合に，adbimportコマンドを実行する際の留意事項を次に示します。

マルチチャンク表のチャンクの状態・構成を維持する必要がない場合

adbimportコマンドには，-dオプションおよび-bオプションは指定しないでください。

マルチチャンク表のチャンクの状態・構成を維持する必要がある場合

手順1.でチャンク単位に出力したデータを，チャンク単位にインポートする必要があります。

手順1.でカレントチャンクだったチャンクのデータは，必ず最後に格納してください。

最初に格納するデータの場合は，-dオプションおよび-bオプションを指定しないで，adbimportコマンドを実行してください。

2回目以降に格納するデータの場合は，バックグラウンドインポートで格納してください。-bオプションを指定してadbimportコマンドを実行してください。手順1.でカレントチャンクだったチャンクのデータも，バックグラウンドインポートで格納してください。

ビュー表の無効化を解除する

手順4.で削除したカラムストア表を基表とするビュー表は無効化されます。そのため，ローストア表の定義後に，ビュー表の無効化を解除する必要があります。「11.2.8　ビュー表の無効化を解除する方法」の「(8)　表を誤って削除してしまったことによってビュー表が無効化された場合」を参照して，ビュー表の無効化を解除してください。

これで，カラムストア表をローストア表に変更できます。

メモ

adbexportコマンドおよびadbimportコマンドについては，マニュアルHADB　コマンドリファレンスを参照してください。

DROP TABLE文，CREATE TABLE文およびCREATE INDEX文については，マニュアルHADB　SQLリファレンスを参照してください。

11.1.16　実表の定義情報を調べる方法（ディクショナリ表の検索）

ディクショナリ表を検索すると，実表の定義情報を確認できます。

メモ

各ディクショナリ表の内容については，「付録B　ディクショナリ表」を参照してください。また，ディクショナリ表の検索例については，「付録B.24　ディクショナリ表の検索」を参照してください。

ディクショナリ表を検索すると確認できる実表の定義情報を次の表に示します。

表11‒3　ディクショナリ表を検索すると確認できる実表の定義情報

項番

ディクショナリ表

確認できる実表の定義情報

1

SQL_TABLES表

SQL_TABLES表を検索すると，次の定義情報を確認できます。

表名

TABLE_SCHEMA列（スキーマ名），およびTABLE_NAME列（表識別子）を確認してください。

表オプションPCTFREEの指定内容

FREE_AREA列（表のページ内の未使用領域の比率）を確認してください。

表オプションBRANCH ALLの指定有無

IS_BRANCH_ALL列（表オプションBRANCH ALLの指定）を確認してください。

表の種類（シングルチャンク表またはマルチチャンク表）

IS_CHUNK列（チャンク指定のCHUNKの指定）を確認してください。

マルチチャンク表に作成されるチャンク数の最大値

N_CHUNK_RESERVED列（作成されるチャンク数の最大値）を確認してください。

アーカイブマルチチャンク表かどうか

IS_ARCHIVABLE列（チャンクアーカイブ指定の有無）を確認してください。

アーカイブディレクトリのパス名

ARCHIVE_DIRECTORY_PATH列（アーカイブディレクトリの絶対パス）を確認してください。

表の種類（ローストア表またはカラムストア表）

STORAGE_FORMAT列（表データの格納形式）を確認してください。

SQL_TABLES表の詳細については，「付録B.2　SQL_TABLESの内容」を参照してください。

2

SQL_COLUMNS表

SQL_COLUMNS表を検索すると，次の定義情報を確認できます。

列名

COLUMN_NAME列（列名）を確認してください。

列のデータ型と列の定義長

DATA_TYPE_CODE列（列のデータ型），およびDATA_LENGTH列（列の定義長）を確認してください。

DEFAULT句の指定内容

IS_DEFAULT_COLUMN列（DEFAULT句の指定有無），およびDEFAULT_VALUE列（DEFAULT句に指定された既定値）を確認してください。

BRANCHの指定有無

BRANCH列（列定義のBRANCHの指定値）を確認してください。

主キーの指定内容

IS_PRIMARY_KEY_COLUMN列（主キーを構成する列かどうか），およびPRIMARY_KEY_COLUMN_SEQUENCE_NUMBER列（主キーの構成順序）を確認してください。

アーカイブレンジ列かどうか

IS_ARCHIVE_RANGE_COLUMN列（アーカイブレンジ列かどうか）を確認してください。

カラムストア表の定義時に指定した列データの圧縮方式の指定値

COMPRESSION_TYPE列（列定義のCOMPRESSION TYPEの指定値）を確認してください。

SQL_COLUMNS表の詳細については，「付録B.3　SQL_COLUMNSの内容」を参照してください。

3

SQL_DIV_TABLE表

SQL_DBAREAS表

左記の表を検索すると，次の定義情報を確認できます。

表が格納されているDBエリアのDBエリアID

SQL_DIV_TABLE表のDBAREA_ID列（表が格納されているDBエリアのDBエリアID）を確認してください。

DBエリアのDBエリア名

SQL_DIV_TABLE表で確認したDBエリアIDを基に，SQL_DBAREAS表のDBAREA_NAME列（DBエリア名）を確認してください。

SQL_DIV_TABLE表の詳細については，「付録B.4　SQL_DIV_TABLEの内容」を参照してください。

SQL_DBAREAS表の詳細については，「付録B.7　SQL_DBAREASの内容」を参照してください。

4

SQL_TABLE_CONSTRAINTS表

SQL_KEY_COLUMN_USAGE表

SQL_REFERENTIAL_CONSTRAINTS表

左記の表を検索すると，次の定義情報を確認できます。

実表の制約に関する情報（主キーや外部キーの有無）

SQL_TABLE_CONSTRAINTS表を参照してください。

SQL_TABLE_CONSTRAINTS表の詳細については，「付録B.14　SQL_TABLE_CONSTRAINTSの内容」を参照してください。

主キーと外部キーの構成列に関する情報

SQL_KEY_COLUMN_USAGE表を参照してください。

SQL_KEY_COLUMN_USAGE表の詳細については，「付録B.16　SQL_KEY_COLUMN_USAGEの内容」を参照してください。

参照制約に関する情報

SQL_REFERENTIAL_CONSTRAINTS表を確認してください。

SQL_REFERENTIAL_CONSTRAINTS表の詳細については，「付録B.17　SQL_REFERENTIAL_CONSTRAINTSの内容」を参照してください。

11.1.17　実表の表定義を変更する方法（別表を定義して動作検証したあとに運用中の実表の表定義を変更する場合）

ここでは，次の内容で運用中の実表の表定義を変更する方法を説明します。

変更後の表定義を使用して，動作検証用の表を新たに定義する。

動作検証用の表を使用して動作検証を行う。

表定義を変更する表を削除し，動作検証用の表の名称を削除した表の名称に変更する。

上記の方法で，表定義を変更すると，表定義を変更する表にアクセスできなくなる時間を極力短くできます。

表定義を変更する際の流れと手順を以降で説明しますが，表定義を変更する表をT1，動作検証用の表をT2としています。

図11‒1　表定義を変更する際の流れ

運用中の表T1の表定義を変更する手順を次に示します。

手順

表T1に格納されているすべてのデータを出力する

adbexportコマンドで，表T1に格納されているすべてのデータをファイルに出力してください。

表T1がマルチチャンク表の場合，adbexportコマンドを実行する際の留意事項を次に示します。

マルチチャンク表のチャンクの状態・構成を維持する必要がない場合

留意事項は特にありません。表T1に格納されているすべてのデータをファイルに出力してください。

マルチチャンク表のチャンクの状態・構成を維持する必要がある場合

表T1に格納されているすべてのデータを，チャンク単位でファイルに出力する必要があります。チャンク単位でデータを出力しないと，チャンクの状態・構成を維持したまま，表にデータを格納できません。そのため，チャンク数分，エクスポートを行ってください。

チャンク単位でデータを出力する場合は，「11.5.5　チャンク単位にデータをエクスポートする方法」を参照してください。

表T1の定義情報を確認する

表T1を定義したときのCREATE TABLE文の指定内容を確認してください。動作検証用の表T2を定義する際に使用します。

表T1を定義したときのCREATE TABLE文の指定内容がわからない場合は，「付録B.24　ディクショナリ表の検索」の「(29)　実表の定義情報を調べる場合」を参照してください。ディクショナリ表を検索すると，表T1を定義したときのCREATE TABLE文の指定内容が確認できます。

表T1に定義されているインデクスの定義情報を確認する

表T1にインデクスを定義している場合，インデクスを定義したときのCREATE INDEX文の指定内容を確認してください。表T2にインデクスを定義する際に使用します。

インデクスを定義したときのCREATE INDEX文の指定内容がわからない場合は，「付録B.24　ディクショナリ表の検索」の「(30)　インデクスの定義情報を調べる場合」を参照してください。ディクショナリ表を検索すると，インデクスを定義したときのCREATE INDEX文の指定内容が確認できます。

表T1の表定義を変更して，動作検証用の表（表T2）を定義する

CREATE TABLE文で表T2を定義してください。

手順2.で確認した表T1を定義したときのCREATE TABLE文の指定内容を流用して，CREATE TABLE文を作成してください。

表T2にインデクスを定義する

表T1にインデクスが定義されている場合，表T2にCREATE INDEX文でインデクスを定義してください。

手順3.で確認したインデクスを定義したときのCREATE INDEX文の指定内容を流用して，CREATE INDEX文を作成してください。

表T2にデータを格納する

adbimportコマンドで，表T2に手順1.で出力したすべてのデータを格納してください。

表T2がマルチチャンク表の場合，adbimportコマンドを実行する際の留意事項を次に示します。

マルチチャンク表のチャンクの状態・構成を維持する必要がない場合

adbimportコマンドには，-dオプションおよび-bオプションは指定しないでください。

マルチチャンク表のチャンクの状態・構成を維持する必要がある場合

手順1.でチャンク単位に出力したデータを，チャンク単位にインポートする必要があります。

手順1.でカレントチャンクだったチャンクのデータは，必ず最後に格納してください。

最初に格納するデータの場合は，-dオプションおよび-bオプションを指定しないで，adbimportコマンドを実行してください。

2回目以降に格納するデータの場合は，バックグラウンドインポートで格納してください。-bオプションを指定してadbimportコマンドを実行してください。手順1.でカレントチャンクだったチャンクのデータも，バックグラウンドインポートで格納してください。

メモ

表T2を定義する際，列を新たに追加したり，列定義を変更したりした場合，列の追加，または列定義の変更に合わせて入力データファイルを修正してください。そのあとに，adbimportコマンドで，表T2にデータを格納してください。

例えば，次のケースなどが該当します。

列を新規に追加し，追加した列にデータを格納する場合

列定義を変更し，変更した列定義に合わせたデータを格納する場合

表T2を使用して動作検証を行う

動作検証の結果，問題がない場合は，次の手順に進んでください。

表T2の表定義に問題がある場合は，削除動作にCASCADEを指定してDROP TABLE文を実行し，表T2を削除してください。そのあと，手順4.に戻り，表T2の表定義を変更して，表T2を定義し直してください。

表T1を削除する

削除動作の指定を省略してDROP TABLE文を実行し，表T1を削除してください。

表T2の表名をT1に変更する

ALTER TABLE文で，表T2の表名をT1に変更してください。

ビュー表の無効化を解除する

手順8.で表T1を削除したため，表T1を基表とするビュー表が無効化されています。次のどちらかの方法でビュー表の無効化を解除してください。

表T1の列定義を変更した場合

DROP VIEW文で無効化されたビュー表を削除してください。そのあと，列定義の変更内容を基にCREATE VIEW文を作成して実行し，ビュー表を再作成してください。

表T1の列定義以外の表定義を変更した場合

ALTER VIEW文でビュー表を再作成し，ビュー表の無効化を解除してください。

ヒント

無効化されたビュー表の特定方法，および無効化されたビュー表の削除方法については，「11.2.9　無効化されたビュー表を削除する方法」を参照してください。

無効化を解除するビュー表が複数ある場合，ビューレベルの値が小さい順にCREATE VIEW文またはALTER VIEW文を実行してください。

メモ

adbexportコマンドおよびadbimportコマンドについては，マニュアルHADB　コマンドリファレンスを参照してください。

DROP TABLE文，CREATE TABLE文，およびCREATE INDEX文については，マニュアルHADB　SQLリファレンスを参照してください。

11.1.18　実表が格納されているデータ用DBエリアを変更する方法

実表が格納されているデータ用DBエリアを別のデータ用DBエリアに変更したい場合は，対象の実表をいったん削除したあとで再定義する必要があります。

メモ

インデクスが格納されているデータ用DBエリアを別のデータ用DBエリアに変更したい場合は，「11.4.8　インデクスが格納されているデータ用DBエリアを変更する方法」を参照してください。

次の手順に従って，実表が格納されているデータ用DBエリアを，別のデータ用DBエリアに変更してください。

なお，新たなデータ用DBエリアを追加する必要がある場合は，「11.13.1　データ用DBエリアを追加する方法」を参照してください。そのあとで，実表が格納されているデータ用DBエリアを変更してください。

手順

実表に格納されているすべてのデータを出力する

adbexportコマンドで，実表に格納されているすべてのデータをファイルに出力してください。

実表がマルチチャンク表の場合に，adbexportコマンドを実行する際の留意事項を次に示します。

マルチチャンク表のチャンクの状態・構成を維持する必要がない場合

留意事項は特にありません。実表に格納されているすべてのデータをファイルに出力してください。

マルチチャンク表のチャンクの状態・構成を維持する必要がある場合

実表に格納されているすべてのデータを，チャンク単位でファイルに出力する必要があります。チャンク単位でデータを出力しないと，チャンクの状態・構成を維持したまま，実表にデータを格納できません。そのため，チャンク数分，エクスポートを行ってください。

チャンク単位でデータを出力する場合は，「11.5.5　チャンク単位にデータをエクスポートする方法」を参照してください。

実表の定義情報を確認する

実表を定義したときのCREATE TABLE文の指定内容を確認してください。別のデータ用DBエリアに実表を定義する際に使用します。

実表を定義したときのCREATE TABLE文の指定内容がわからない場合は，「付録B.24　ディクショナリ表の検索」の「(29)　実表の定義情報を調べる場合」を参照してください。ディクショナリ表を検索すると，実表を定義したときのCREATE TABLE文の指定内容が確認できます。

実表に定義されているインデクスの定義情報を確認する

実表にインデクスを定義している場合，インデクスを定義したときのCREATE INDEX文の指定内容を確認してください。別のデータ用DBエリアに定義した実表に，インデクスを定義する際に使用します。

インデクスを定義したときのCREATE INDEX文の指定内容がわからない場合は，「付録B.24　ディクショナリ表の検索」の「(30)　インデクスの定義情報を調べる場合」を参照してください。ディクショナリ表を検索すると，インデクスを定義したときのCREATE INDEX文の指定内容が確認できます。

実表を削除する

削除動作の指定を省略したDROP TABLE文で，実表を削除してください。

実表を再定義する

CREATE TABLE文で，別のデータ用DBエリアに実表を定義してください。CREATE TABLE文を作成する際の留意事項を次に示します。

手順2.で確認した実表を定義したときのCREATE TABLE文の指定内容を流用して，CREATE TABLE文を作成してください。

CREATE TABLE文のIN DBエリア名に，実表を格納する別のデータ用DBエリアのDBエリア名を指定してください。

実表にインデクスを定義する

削除した実表にインデクスを定義していた場合，再定義した実表にCREATE INDEX文でインデクスを定義してください。CREATE INDEX文を作成する際の留意事項を次に示します。

手順3.で確認したインデクスを定義したときのCREATE INDEX文の指定内容を流用して，CREATE INDEX文を作成してください。

実表にデータを格納する

adbimportコマンドで，手順5.で定義した実表に，手順1.で出力したすべてのデータを格納してください。

実表がマルチチャンク表の場合に，adbimportコマンドを実行する際の留意事項を次に示します。

マルチチャンク表のチャンクの状態・構成を維持する必要がない場合

adbimportコマンドには，-dオプションおよび-bオプションは指定しないでください。

マルチチャンク表のチャンクの状態・構成を維持する必要がある場合

手順1.でチャンク単位に出力したデータを，チャンク単位にインポートする必要があります。

手順1.でカレントチャンクだったチャンクのデータは，必ず最後に格納してください。

最初に格納するデータの場合は，-dオプションおよび-bオプションを指定しないで，adbimportコマンドを実行してください。

2回目以降に格納するデータの場合は，バックグラウンドインポートで格納してください。-bオプションを指定してadbimportコマンドを実行してください。手順1.でカレントチャンクだったチャンクのデータも，バックグラウンドインポートで格納してください。

ビュー表の無効化を解除する

手順4.で削除した実表を基表とするビュー表は無効化されます。そのため，実表の定義後に，ビュー表の無効化を解除する必要があります。「11.2.8　ビュー表の無効化を解除する方法」の「(8)　表を誤って削除してしまったことによってビュー表が無効化された場合」を参照して，ビュー表の無効化を解除してください。

これで，実表が格納されているデータ用DBエリアを，別のデータ用DBエリアに変更できます。

メモ

adbexportコマンドおよびadbimportコマンドについては，マニュアルHADB　コマンドリファレンスを参照してください。

DROP TABLE文，CREATE TABLE文およびCREATE INDEX文については，マニュアルHADB　SQLリファレンスを参照してください。

11.1.19　実表を削除する方法

実表を削除するには，定義系SQLのDROP TABLE文を実行します。

重要

実表を削除した場合，削除対象の実表に依存するビュー表が削除されます（または無効化されます）。そのため，実表を削除する前に，削除対象の実表に依存するビュー表があるかどうかを確認し，削除または無効化されても問題ないことを確認してください。

主キーを定義している実表を削除した場合，削除した実表を被参照表とする外部キーも削除されます（ほかのスキーマの外部キーも削除されます）。そのため，実表を削除する前に，外部キーが削除されても問題ないことを確認してください。ただし，削除動作にRESTRICTを指定した場合はSQL文がエラーになります。

実表の削除例を次に示します。

例題

店舗表（SHOPSLIST）を削除します。

手順

削除対象の実表に依存するビュー表を確認する

ディクショナリ表を検索すると，削除対象の実表に依存するビュー表を確認できます。ディクショナリ表の検索例については，「11.2.11　依存するビュー表を確認する方法」を参照してください。

削除対象の実表を被参照表とする外部キーを確認する

主キーを定義している実表を削除する場合に必要な作業です。

ディクショナリ表を検索すると，削除対象の実表を被参照表とする外部キーを確認できます。ディクショナリ表の検索例については，「付録B.24　ディクショナリ表の検索」の「(22)　主キーを参照する外部キーを調べる場合」を参照してください。

削除対象の実表が更新不可状態かどうかを確認する

実表を削除する前に，削除する実表に対して，コマンドの再実行が必要かどうか（更新不可状態かどうか）を確認してください。確認する方法については，「10.9.2　実表の状態や使用量を確認したい場合」の「(1)　実表が更新不可状態かどうかを確認する場合」を参照してください。

重要

コマンドの再実行が必要な場合

コマンドを再実行してください。そのあとで，実表を削除してください。

コマンドの再実行が必要な状態のままで（更新不可状態のままで）実表を削除した場合

中断したコマンドによって作成された作業用一時ファイルが残ることがあります。作業用一時ファイルを削除するには，すべての実表の更新不可状態を解除する必要があります。作業用一時ファイルの削除については，「16.2.6　コマンド実行時の作業用一時ファイルを格納するディスクの空き容量が不足した場合の対処方法」の「(2)　ディスクに不要な作業用一時ファイルが残っている場合」を参照してください。

DROP TABLE文を実行する

DROP TABLE "SHOPSLIST" CASCADE

メモ

上記の例では，削除動作にCASCADEを指定しているため，削除対象の実表に依存するすべてのビュー表が削除されます。削除動作の指定を省略した場合は，削除対象の実表に依存するすべてのビュー表が無効化されます。

11.1.20　配列型の列を定義した実表の運用

配列型の列を定義した実表の運用方法を説明します。

なお，ここでは，実表を表と表記しています。

(1)　表の定義

CREATE TABLE文で表を定義します。定義する表に配列型の列を定義する場合は，CREATE TABLE文の列定義で，列のデータ型に配列型（ARRAY型）を指定します。配列型の列を定義した商品表（PRODUCT）の定義例を次に示します。

（例）

商品表（PRODUCT）の定義条件を次に示します。

SIZE列（サイズ）とCOLOR列（色）を配列型の列として定義します。

SIZE列は，要素データ型をCHAR(1)とし，最大要素数を3とします。

COLOR列は，要素データ型をVARCHAR(8)とし，最大要素数を6とします。

CREATE TABLE文の指定例

CREATE TABLE "PRODUCT" ("PCODE" CHAR(4),
                        "PNAME" VARCHAR(20),
                        "SIZE"  CHAR(1) ARRAY[3],        ...1
                        "PRICE" INTEGER,
                        "COLOR" VARCHAR(8) ARRAY[6])     ...2
              IN "DBAREA01"
              CHUNK=120
              STORAGE FORMAT COLUMN                      ...3

［説明］

配列型の列であるSIZE列を定義します。

配列型の列であるCOLOR列を定義します。

配列型の列を定義した表は，カラムストア表として定義する必要があります。

重要

配列型の列を定義した表を定義する前に，「5.2.13　配列型の列の定義【カラムストア表】」を参照して制限事項などを確認してください。

メモ

CREATE TABLE文の指定形式および各オプションの詳細については，マニュアルHADB　SQLリファレンスのCREATE TABLE（表の定義）を参照してください。

(2)　表の検索

配列型の列を定義した表の検索例を次に示します。

（例1）

商品表（PRODUCT）から，商品名（PNAME）とサイズ（SIZE）を検索します。SIZE列は配列型の列です。

SELECT文の指定例

SELECT "PNAME","SIZE" FROM "PRODUCT"

上記の下線部分のように配列型の列名だけを指定すると，SIZE列中の配列要素の値がすべて出力されます。

検索結果

（例2）

商品表（PRODUCT）から，商品名（PNAME）とサイズ（SIZE）の先頭の配列要素を検索します。

SELECT文の指定例

SELECT "PNAME","SIZE"[1] FROM "PRODUCT"

上記の下線部分のように，配列型の列名と，検索対象とする配列要素の要素番号を指定します。この例の場合，先頭の配列要素を検索するため，要素番号に1を指定しています。下線部分の指定を配列要素参照といいます。

検索結果

（例3）

商品表（PRODUCT）から，色（COLOR）の配列要素に'BLUE'がある商品名（PNAME）と単価（PRICE）を検索します。

SELECT文の指定例

SELECT "PNAME","PRICE" FROM "PRODUCT" WHERE "COLOR"[ANY] = 'BLUE'

COLOR列の全配列要素を検索対象とする場合は，上記の下線部分のように，配列型の列名と[ANY]を指定します。下線部分の指定を配列要素参照といいます。

検索結果

メモ

配列要素参照の指定形式の詳細については，マニュアルHADB　SQLリファレンスの配列要素参照を参照してください。

(3)　表の全行削除

表の全行を削除する場合は，TRUNCATE TABLE文を実行します。

（例）

商品表（PRODUCT）の全行を削除します。

TRUNCATE TABLE "PRODUCT"

重要

配列型の列を定義した表には，DELETE文を実行できません。また，INSERT文およびUPDATE文も実行できません。

(4)　最大要素数の変更

配列型の列の最大要素数を変更する場合は，ALTER TABLE文を実行します。

（例）

商品表（PRODUCT）のSIZE列の最大要素数を5に変更します。

ALTER TABLE "PRODUCT"
    CHANGE COLUMN "SIZE" ARRAY[5]

重要

最大要素数を大きくすることだけができます。最大要素数を小さくすることはできません。

表を定義したHADBユーザだけが，ALTER TABLE文で最大要素数を変更できます。

メモ

ALTER TABLE文の指定形式および規則については，マニュアルHADB　SQLリファレンスのALTER TABLE（表定義の変更）を参照してください。

なお，最大要素数を変更する場合，次に示す影響があります。影響がないかどうかを確認してください。

最大要素数を変更した表に依存するビュー表がある場合

最大要素数を変更した表に依存するビュー表は無効化されます。ビュー表の定義時に，最大要素数を変更した列名を明示的に指定しているかどうかに関係なく，ビュー表は無効化されます。

無効化されるビュー表（依存するビュー表）を調べる場合は，「11.2.11　依存するビュー表を確認する方法」を参照してください。無効化されるビュー表がある場合は，ALTER TABLE文で最大要素数を変更したあとで，ビュー表の無効化を解除する必要があります。

ビュー表の無効化を解除する方法については，「11.2.8　ビュー表の無効化を解除する方法」の「(5)　ALTER TABLE文で配列型の列の最大要素数を変更したことによってビュー表が無効化された場合」を参照してください。

また，次に示す場合は，ALTER TABLE文で最大要素数を変更できません。

操作対象の実表が更新不可状態になっている場合

実表の更新不可状態を解除したあとで，ALTER TABLE文で最大要素数を変更してください。実表の更新不可状態を解除する方法については，「16.8.1　実表が更新不可状態になった場合」の「(1)　実表の更新不可状態を解除する方法」を参照してください。

(5)　配列型の列の追加

表に配列型の列を追加する場合は，ALTER TABLE文を実行します。

（例）

商品表（PRODUCT）に，配列型の列であるITEM_CODE列を追加します。ITEM_CODE列の要素データ型はCHAR(8)，最大要素数は10とします。

ALTER TABLE "PRODUCT"
    ADD COLUMN "ITEM_CODE" CHAR(8) ARRAY[10]

重要

カラムストア表に配列型の列を追加できます。ローストア表には配列型の列を追加できません。

B-treeインデクスまたは一意性制約を定義している表には，配列型の列を追加できません。

メモ

表に列を追加する際の留意事項については，「11.1.2　実表に列を追加する方法」を参照してください。

ALTER TABLE文の指定形式および規則については，マニュアルHADB　SQLリファレンスのALTER TABLE（表定義の変更）を参照してください。

11.2　ビュー表の運用

ここでは，ビュー表の運用について説明します。

ビュー表については，「2.1.2　ビュー表」を参照してください。

11.2.1　ビュー表を定義する方法

ビュー表を定義するには，定義系SQLのCREATE VIEW文を実行します。

ビュー表の定義例を次に示します。

例題

実表のCUSTOMER表およびSTOCK表から，30歳代の顧客が購入した商品一覧を示すビュー表として，CUSTOMER30s表を定義します。

図11‒2　実表のCUSTOMER表およびSTOCK表の例

■ビュー表（CUSTOMER30s表）を定義するSQL文

CREATE VIEW "CUSTOMER30s"
  ("AGE","SEX","GNO","PNAME","PRICE")
  AS SELECT
   "CUSTOMER"."AGE", "CUSTOMER"."SEX", "CUSTOMER"."GNO",
   "STOCK"."PNAME", "STOCK"."PRICE"
  FROM "CUSTOMER","STOCK"
    WHERE "CUSTOMER"."AGE"=30 AND "CUSTOMER"."GNO"="STOCK"."GNO"

図11‒3　ビュー表（CUSTOMER30s表）の定義例

なお，定義するビュー表が，更新可能ビュー表または読み取り専用ビュー表のどちらになるかは，CREATE VIEW文中に指定する「AS 問合せ指定」の指定内容によって決まります。詳細については，マニュアルHADB　SQLリファレンスの定義系SQLのCREATE VIEW（ビュー表の定義）を参照してください。

11.2.2　ビュー表のデータを検索，更新，追加，削除する方法

ビュー表を検索するには，操作系SQLのSELECT文を実行します。実表を検索する場合と同様です。

ビュー表の検索例を次に示します。

例題

「11.2.1　ビュー表を定義する方法」で定義したCUSTOMER30s表から，性別（SEX）が女性（F）の行を検索します。

SELECT * FROM "CUSTOMER30s" WHERE "SEX"= 'F'

更新可能ビュー表で，かつビュー表に対する必要なアクセス権限がある場合，ビュー表のデータを更新，追加，または削除できます。ビュー表のデータを更新，追加，または削除するには，操作系SQLのUPDATE文，INSERT文，DELETE文を実行します。実表を更新，追加，または削除する場合と同様です。

11.2.3　ビュー表のデータをファイルに出力する方法（データをエクスポートする方法）

ビュー表のデータをファイルに出力したい場合は，「11.1.11　実表のデータをファイルに出力する方法（データをエクスポートする方法）」を参照してください。実表のデータをファイルに出力する場合と同様です。

11.2.4　ビュー表を再作成する方法

ビュー表を再作成するには，定義系SQLのALTER VIEW文を実行します。ALTER VIEW文については，マニュアルHADB　SQLリファレンスのALTER VIEW（ビュー表の再作成）を参照してください。

自分（HADBサーバに接続中の認可識別子のHADBユーザ）が所有しているビュー表だけを再作成できます。ほかのHADBユーザが所有しているビュー表は再作成できません。

ビュー表の無効化要因を対策したあとに，ALTER VIEW文でビュー表を再作成すると，ビュー表の無効化を解除できます。詳細については，「11.2.8　ビュー表の無効化を解除する方法」を参照してください。

なお，ALTER VIEW文では，既存のビュー定義を変更できません。

重要

ビュー表を再作成した場合，再作成対象のビュー表に依存するすべてのビュー表が無効化されます。そのため，ビュー表を再作成する前に，再作成対象のビュー表に依存するビュー表があるかどうかを確認し，無効化されても問題ないことを確認してください。

11.2.5　ビュー表を削除する方法

ビュー表を削除するには，定義系SQLのDROP VIEW文を実行します。

自分（HADBサーバに接続中の認可識別子のHADBユーザ）が所有しているビュー表だけを削除できます。ほかのHADBユーザが所有しているビュー表は削除できません。

重要

ビュー表を削除した場合，削除対象のビュー表に依存するすべてのビュー表が削除されます（または無効化されます）。そのため，ビュー表を削除する前に，削除対象のビュー表に依存するビュー表があるかどうかを確認し，削除または無効化されても問題ないことを確認してください。

ビュー表の削除例を次に示します。

例題

「11.2.1　ビュー表を定義する方法」で定義したCUSTOMER30s表を削除します。

手順

CUSTOMER30sに依存するビュー表を確認する

ディクショナリ表を検索すると，削除対象のビュー表に依存するビュー表を確認できます。ディクショナリ表の検索例については，「11.2.11　依存するビュー表を確認する方法」を参照してください。

CUSTOMER30sをDROP VIEW文で削除する

DROP VIEW "CUSTOMER30s" CASCADE

メモ

上記の例では，削除動作にCASCADEを指定しているため，削除対象のビュー表（CUSTOMER30s）に依存するすべてのビュー表が削除されます。削除動作の指定を省略した場合は，削除対象のビュー表に依存するすべてのビュー表が無効化されます。

11.2.6　ビュー表の更新可否を調べる方法

INSERT文，UPDATE文およびDELETE文で，ビュー表を更新できるかどうかを調べるには，SELECT文でディクショナリ表SQL_VIEWSを検索します。

ビュー表の更新可否を調べる例を次に示します。

例題

ADBUSER01が定義したビュー表CUSTOMER30sが，更新可能ビュー表かどうかを調べます。

SELECT "IS_UPDATABLE" FROM "MASTER"."SQL_VIEWS"
  WHERE "TABLE_SCHEMA"='ADBUSER01' AND "TABLE_NAME"='CUSTOMER30s'

検索結果が'Y'の場合は，更新可能ビュー表であるため更新できます。'N'の場合は，読み取り専用ビュー表であるため更新できません。

ディクショナリ表SQL_VIEWSについては，「付録B.9　SQL_VIEWSの内容」を参照してください。

11.2.7　ビュー表が無効化されているかどうかを確認する方法

ディクショナリ表を検索すると，ビュー表が無効化されているかどうかを確認できます。ディクショナリ表の検索例を次に示します。

例題1

HADBユーザADBUSER01が定義したビュー表CUSTOMER30sが，無効化されているかどうかを調べます。

次のSELECT文を実行して，ディクショナリ表を検索してください。

SELECT "IS_INVALID" FROM "MASTER"."SQL_VIEWS"
    WHERE "TABLE_SCHEMA"='ADBUSER01' AND "TABLE_NAME"='CUSTOMER30s'

検索結果

IS_INVALID
----------
Y

検索結果がYの場合は，CUSTOMER30sが無効化されています。

検索結果がナル値の場合は，CUSTOMER30sは無効化されていません。

例題2

HADBユーザADBUSER01が定義したビュー表のうち，無効化されているビュー表の一覧を表示します。

SELECT "TABLE_NAME" FROM "MASTER"."SQL_VIEWS"
    WHERE "TABLE_SCHEMA"='ADBUSER01' AND "IS_INVALID"='Y'

検索結果

TABLE_NAME
-----------
CUSTOMER30s
CUSTOMER40s
CUSTOMER50s

検索結果には，無効化されているビュー表の一覧が表示されます。

11.2.8　ビュー表の無効化を解除する方法

ビュー表の無効化を解除する方法は，ビュー表が無効化された原因によって異なります。それぞれの方法について説明します。

メモ

ビュー表の無効化要因がわからなくなってしまった場合

ビュー表にALTER VIEW文を実行すると，ALTER VIEW文がエラーになります。そのとき出力されるエラーメッセージを参照すると，ビュー表が無効化された要因を特定できます。

(1)　ALTER TABLE文で表の種別を変更したことによってビュー表が無効化された場合

次に示す場合は，種別を変更した表に依存するすべてのビュー表が無効化されます。

ALTER TABLE文を実行して，レギュラーマルチチャンク表をアーカイブマルチチャンク表に変更した場合

ALTER TABLE文を実行して，アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更した場合

ビュー表の無効化を解除する手順を次に示します。

例題

CUSTOMER表をレギュラーマルチチャンク表からアーカイブマルチチャンク表に変更したため，CUSTOMER表に依存するすべてのビュー表が無効化されました。CUSTOMER表に依存するすべてのビュー表の無効化を解除します。

手順

無効化されたビュー表の一覧を確認する

ディクショナリ表を検索すると，無効化されたビュー表の一覧を取得できます。ディクショナリ表の検索については，「付録B.24　ディクショナリ表の検索」の「(34)　依存するビュー表の一覧を調べる場合」を参照してください。

この例では，ビュー表CUSTOMER30s，CUSTOMER40s，およびCUSTOMER50sが無効化されたとします。

無効化されたビュー表をALTER VIEW文で再作成する

ALTER VIEW "CUSTOMER30s" RECREATE

同様に，ビュー表CUSTOMER40sおよびCUSTOMER50sも，ALTER VIEW文で再作成してください。ビュー表の無効化を解除できます。

ヒント

再作成するビュー表が複数ある場合，ビューレベルの値が小さい順にALTER VIEW文を実行してください。

(2)　ALTER TABLE文で表の列名を変更したことによってビュー表が無効化された場合

ALTER TABLE文で表の列名を変更した場合，列名を変更した表に依存するすべてのビュー表が無効化されます。ビュー表の無効化を解除する手順を次に示します。

なお，変更対象の列名をCREATE VIEW文中に指定しているかどうかによって，ビュー表の無効化を解除する手順が異なります。

例題

CUSTOMER表の列名を変更したため，CUSTOMER表に依存するすべてのビュー表が無効化されました。CUSTOMER表に依存するすべてのビュー表の無効化を解除します。

手順（変更対象の列名をCREATE VIEW文中に指定していない場合）

無効化されたビュー表の一覧を確認する

ディクショナリ表を検索すると，無効化されたビュー表の一覧を取得できます。ディクショナリ表の検索については，「付録B.24　ディクショナリ表の検索」の「(34)　依存するビュー表の一覧を調べる場合」を参照してください。

この例では，ビュー表CUSTOMER30s，CUSTOMER40s，およびCUSTOMER50sが無効化されたとします。

無効化されたビュー表をALTER VIEW文で再作成する

ALTER VIEW "CUSTOMER30s" RECREATE

同様に，ビュー表CUSTOMER40sおよびCUSTOMER50sも，ALTER VIEW文で再作成してください。ビュー表の無効化を解除できます。

ヒント

再作成するビュー表が複数ある場合，ビューレベルの値が小さい順にALTER VIEW文を実行してください。

手順（変更対象の列名をCREATE VIEW文中に指定している場合）

無効化されたビュー表の一覧と，それらのビュー表の定義情報を確認する

ディクショナリ表を検索すると，無効化されたビュー表の一覧と，それらのビュー表の定義情報を取得できます。ディクショナリ表の検索については，「付録B.24　ディクショナリ表の検索」の「(33)　依存するビュー表の一覧，およびそれらのビュー表の定義情報を調べる場合」を参照してください。

この例では，ビュー表CUSTOMER30s，CUSTOMER40s，およびCUSTOMER50sが無効化されたとします。

無効化されたビュー表をDROP VIEW文で削除する

DROP VIEW "CUSTOMER30s"
DROP VIEW "CUSTOMER40s"
DROP VIEW "CUSTOMER50s"

手順1.で確認した無効化されたビュー表をすべて削除してください。

CREATE VIEW文の指定内容を修正する

手順1.で調べたCREATE VIEW文の指定内容のうち，列名変更に該当する個所を修正します。

（例）表T1の列名をC3からC33に変更した場合

＜修正前＞

CREATE VIEW "VT1" ("VC1","VC2","VC3")
    AS SELECT "C1","C2","C3" FROM "T1"

＜修正後＞

CREATE VIEW "VT1" ("VC1","VC2","VC3")
    AS SELECT "C1","C2","C33" FROM "T1"

無効化されたビュー表をCREATE VIEW文で再定義する

CREATE VIEW "CUSTOMER30s" ("AGE","SEX","GNO","PNAME","PRICE")
  AS SELECT "CUSTOMER"."AGE",
            "CUSTOMER"."SEX",
            "CUSTOMER"."GNO",
            "STOCK"."PNAME",
            "STOCK"."PRICE"
       FROM "CUSTOMER","STOCK"
         WHERE "CUSTOMER"."AGE"=30 AND "CUSTOMER"."GNO"="STOCK"."GNO"

同様に，CUSTOMER40sおよびCUSTOMER50sもCREATE VIEW文でビュー表を再定義してください。

ヒント

再定義するビュー表が複数ある場合，ビューレベルの値が小さい順にCREATE VIEW文を実行してください。

(3)　ALTER TABLE文で表の表名を変更したことによってビュー表が無効化された場合

ALTER TABLE文で表の表名を変更した場合，表名を変更した表に依存するすべてのビュー表が無効化されます。ビュー表の無効化を解除する手順を次に示します。

例題

店舗表（SHOPSLIST）の表名を，STORELISTに変更したため，SHOPSLIST表に依存するすべてのビュー表が無効化されました。SHOPSLIST表に依存するすべてのビュー表を削除し，STORELIST表のビュー表を作成します。

手順

無効化されたビュー表の一覧と，それらのビュー表の定義情報を確認する

ディクショナリ表を検索すると，無効化されたビュー表の一覧と，それらのビュー表の定義情報を取得できます。ディクショナリ表の検索については，「付録B.24　ディクショナリ表の検索」の「(33)　依存するビュー表の一覧，およびそれらのビュー表の定義情報を調べる場合」を参照してください。

この例では，ビュー表VLIST01，VLIST02，およびVLIST03が無効化されたとします。

無効化されたビュー表をDROP VIEW文で削除する

DROP VIEW "VLIST01"
DROP VIEW "VLIST02"
DROP VIEW "VLIST03"

手順1.で確認した無効化されたビュー表をすべて削除してください。

CREATE VIEW文の指定内容を修正する

手順1.で調べたCREATE VIEW文の指定内容のうち，表名変更に該当する個所を修正します。

（例）

＜修正前＞

CREATE VIEW "VLIST01" ("VC1","VC2","VC3")
    AS SELECT "C1","C2","C3" FROM "SHOPSLIST"

＜修正後＞

CREATE VIEW "VLIST01" ("VC1","VC2","VC3")
    AS SELECT "C1","C2","C3" FROM "STORELIST"

無効化されたビュー表をCREATE VIEW文で再定義する

手順3.の修正後のCREATE VIEW文を実行します。

ヒント

再定義するビュー表が複数ある場合，ビューレベルの値が小さい順にCREATE VIEW文を実行してください。

(4)　ALTER TABLE文で表の列のデータ型を変更したことによってビュー表が無効化された場合

ALTER TABLE文で表の列のデータ型を変更した場合，データ型を変更した表に依存するすべてのビュー表が無効化されます。ビュー表の無効化を解除する手順を次に示します。

例題

CUSTOMER表の列のデータ型を変更したため，CUSTOMER表に依存するすべてのビュー表が無効化されました。CUSTOMER表に依存するすべてのビュー表の無効化を解除します。

手順

無効化されたビュー表の一覧を確認する

ディクショナリ表を検索すると，無効化されたビュー表の一覧を取得できます。ディクショナリ表の検索については，「付録B.24　ディクショナリ表の検索」の「(34)　依存するビュー表の一覧を調べる場合」を参照してください。

この例では，ビュー表CUSTOMER30s，CUSTOMER40s，およびCUSTOMER50sが無効化されたとします。

無効化されたビュー表をALTER VIEW文で再作成する

ALTER VIEW "CUSTOMER30s" RECREATE

同様に，ビュー表CUSTOMER40sおよびCUSTOMER50sも，ALTER VIEW文で再作成してください。ビュー表の無効化を解除できます。

ヒント

再作成するビュー表が複数ある場合，ビューレベルの値が小さい順にALTER VIEW文を実行してください。

(5)　ALTER TABLE文で配列型の列の最大要素数を変更したことによってビュー表が無効化された場合

ALTER TABLE文で配列型の列の最大要素数を変更した場合，最大要素数を変更した表に依存するすべてのビュー表が無効化されます。ビュー表の無効化を解除する手順を次に示します。

例題

CUSTOMER表に定義されている配列型の列の最大要素数を変更したため，CUSTOMER表に依存するすべてのビュー表が無効化されました。CUSTOMER表に依存するすべてのビュー表の無効化を解除します。

手順

無効化されたビュー表の一覧を確認する

ディクショナリ表を検索すると，無効化されたビュー表の一覧を取得できます。ディクショナリ表の検索については，「付録B.24　ディクショナリ表の検索」の「(34)　依存するビュー表の一覧を調べる場合」を参照してください。

この例では，ビュー表CUSTOMER30s，CUSTOMER40s，およびCUSTOMER50sが無効化されたとします。

無効化されたビュー表をALTER VIEW文で再作成する

ALTER VIEW "CUSTOMER30s" RECREATE

同様に，ビュー表CUSTOMER40sおよびCUSTOMER50sも，ALTER VIEW文で再作成してください。ビュー表の無効化を解除できます。

ヒント

再作成するビュー表が複数ある場合，ビューレベルの値が小さい順にALTER VIEW文を実行してください。

(6)　ALTER TABLE文で表の列を削除したことによってビュー表が無効化された場合

ALTER TABLE文（削除動作の指定を省略）で表の列を削除した場合，列を削除した表に依存するすべてのビュー表が無効化されます。ビュー表の無効化を解除する手順を次に示します。

なお，削除対象の列名をCREATE VIEW文中に指定しているかどうかによって，ビュー表の無効化を解除する手順が異なります。

例題

CUSTOMER表の列を削除したため，CUSTOMER表に依存するすべてのビュー表が無効化されました。CUSTOMER表に依存するすべてのビュー表の無効化を解除します。

手順（削除対象の列名をCREATE VIEW文中に指定していない場合）

無効化されたビュー表の一覧を確認する

ディクショナリ表を検索すると，無効化されたビュー表の一覧を取得できます。ディクショナリ表の検索については，「付録B.24　ディクショナリ表の検索」の「(34)　依存するビュー表の一覧を調べる場合」を参照してください。

この例では，ビュー表CUSTOMER30s，CUSTOMER40s，およびCUSTOMER50sが無効化されたとします。

無効化されたビュー表をALTER VIEW文で再作成する

ALTER VIEW "CUSTOMER30s" RECREATE

同様に，ビュー表CUSTOMER40sおよびCUSTOMER50sも，ALTER VIEW文で再作成してください。ビュー表の無効化を解除できます。

ヒント

再作成するビュー表が複数ある場合，ビューレベルの値が小さい順にALTER VIEW文を実行してください。

手順（削除対象の列名をCREATE VIEW文中に指定している場合）

無効化されたビュー表の一覧と，それらのビュー表の定義情報を確認する

ディクショナリ表を検索すると，無効化されたビュー表の一覧と，それらのビュー表の定義情報を取得できます。ディクショナリ表の検索については，「付録B.24　ディクショナリ表の検索」の「(33)　依存するビュー表の一覧，およびそれらのビュー表の定義情報を調べる場合」を参照してください。

この例では，ビュー表CUSTOMER30s，CUSTOMER40s，およびCUSTOMER50sが無効化されたとします。

無効化されたビュー表をDROP VIEW文で削除する

DROP VIEW "CUSTOMER30s"
DROP VIEW "CUSTOMER40s"
DROP VIEW "CUSTOMER50s"

1.で確認した無効化されたビュー表をすべて削除してください。

CREATE VIEW文の指定内容を修正する

1.で調べたCREATE VIEW文の指定内容から，削除した列の指定を削除します。

（例）表T1のC2列を削除した場合の例

＜修正前＞

CREATE VIEW "VT1" ("VC1","VC2","VC3")
    AS SELECT "C1","C2","C3" FROM "T1"

＜修正後＞

CREATE VIEW "VT1" ("VC1","VC3")
    AS SELECT "C1","C3" FROM "T1"

無効化されたビュー表をCREATE VIEW文で再定義する

CREATE VIEW "CUSTOMER30s" ("AGE","SEX","GNO","PNAME","PRICE")
  AS SELECT "CUSTOMER"."AGE",
            "CUSTOMER"."SEX",
            "CUSTOMER"."GNO",
            "STOCK"."PNAME",
            "STOCK"."PRICE"
       FROM "CUSTOMER","STOCK"
         WHERE "CUSTOMER"."AGE"=30 AND "CUSTOMER"."GNO"="STOCK"."GNO"

同様に，CUSTOMER40sおよびCUSTOMER50sもCREATE VIEW文でビュー表を再定義してください。

ヒント

再定義するビュー表が複数ある場合，ビューレベルの値が小さい順にCREATE VIEW文を実行してください。

(7)　基表に対するSELECT権限を誤って取り消したことによってビュー表が無効化された場合

基表に対するSELECT権限を誤って取り消してしまった場合，その表に依存するすべてのビュー表が無効化されます。ビュー表の無効化を解除する手順を次に示します。

例題

基表に対するSELECT権限を誤って取り消してしまったため，基表に依存するすべてのビュー表が無効化されました。ビュー表と基表を特定し，基表に依存するすべてのビュー表の無効化を解除します。

手順

無効化されたビュー表の一覧を確認する

ディクショナリ表を検索すると，無効化されたビュー表の一覧を取得できます。ディクショナリ表の検索については，「付録B.24　ディクショナリ表の検索」の「(34)　依存するビュー表の一覧を調べる場合」を参照してください。

この例では，ビュー表CUSTOMER30sが無効化されたとします。

無効化されたビュー表の基表を確認する

手順1.で確認した無効化されたビュー表を基に，ディクショナリ表を検索すると，無効化されたビュー表の基表を取得できます。ディクショナリ表の検索については，「付録B.24　ディクショナリ表の検索」の「(36)　ビュー表の基表を調べる場合」を参照してください。

この例では，無効化されたビュー表CUSTOMER30sの基表が，CUSTOMER表であるとします。

基表に対するSELECT権限をGRANT文で付与する

手順2.で確認した基表のCUSTOMER表に対して，GRANT文でSELECT権限を付与します。

GRANT SELECT ON "CUSTOMER" TO "ADBUSER01"

下線部分は，ビュー表CUSTOMER30sを所有しているHADBユーザの認可識別子を指定します。

無効化されたビュー表をALTER VIEW文で再作成する

ALTER VIEW "CUSTOMER30s" RECREATE

ビュー表CUSTOMER30sをALTER VIEW文で再作成してください。ビュー表の無効化を解除できます。

ヒント

再作成するビュー表が複数ある場合，ビューレベルの値が小さい順にALTER VIEW文を実行してください。

(8)　表を誤って削除してしまったことによってビュー表が無効化された場合

表を誤って削除してしまった場合※，削除してしまった表に依存するすべてのビュー表が無効化されます。ビュー表の無効化を解除する手順を次に示します。

注※

削除動作の指定を省略したDROP TABLE文，DROP VIEW文，またはDROP FOREIGN TABLE文を実行した場合が該当します。

例題

実表のCUSTOMER表を誤って削除してしまったため，削除してしまった表に依存するすべてのビュー表が無効化されました。実表を再定義して，依存するすべてのビュー表の無効化を解除します。

手順

無効化されたビュー表の一覧を確認する

ディクショナリ表を検索すると，無効化されたビュー表の一覧を取得できます。ディクショナリ表の検索については，「付録B.24　ディクショナリ表の検索」の「(34)　依存するビュー表の一覧を調べる場合」を参照してください。

この例では，ビュー表CUSTOMER30sが無効化されたとします。

誤って削除してしまった表を再定義する

削除してしまった表が実表の場合は，実表をCREATE TABLE文で再定義してください。

削除してしまった表がビュー表の場合は，ビュー表をCREATE VIEW文で再定義してください。

削除してしまった表が外部表の場合は，外部表をCREATE FOREIGN TABLE文で再定義してください。

この例では，実表のCUSTOMER表をCREATE TABLE文で再定義します。

ほかのHADBユーザが再定義した表に対するSELECT権限をGRANT文で付与してもらう

手順2.で再定義した表がほかのHADBユーザの表である場合，その表に対するSELECT権限をGRANT文で付与してもらってください。

なお，自分で表を再定義した場合は，この手順は実施不要です。

GRANT SELECT ON "CUSTOMER" TO "ADBUSER01"

下線部分は，ビュー表CUSTOMER30sを所有しているHADBユーザの認可識別子を指定します。

無効化されたビュー表をALTER VIEW文で再作成する

ALTER VIEW "CUSTOMER30s" RECREATE

ビュー表CUSTOMER30sをALTER VIEW文で再作成してください。ビュー表の無効化を解除できます。

ヒント

再作成するビュー表が複数ある場合，ビューレベルの値が小さい順にALTER VIEW文を実行してください。

(9)　ALTER VIEW文で基表であるビュー表を再作成したことによってビュー表が無効化された場合

ALTER VIEW文で基表であるビュー表を再作成した場合，再作成したビュー表に依存するすべてのビュー表が無効化されます。ビュー表の無効化を解除する手順を次に示します。

なお，基表であるビュー表の列名が変更されているかどうか，および変更対象の列名をCREATE VIEW文中に指定しているかどうかによって，ビュー表の無効化を解除する手順が異なります。

手順（基表であるビュー表の列名が変更されていない場合，または変更対象の列名をCREATE VIEW文中に指定していない場合）

基表であるビュー表の列名が変更されていない場合は，次の手順でビュー表の無効化を解除してください。また，基表であるビュー表の列名が変更されているが，変更対象の列名をCREATE VIEW文中に指定していない場合も，次の手順でビュー表の無効化を解除してください。

無効化されたビュー表の一覧を確認する

ディクショナリ表を検索すると，無効化されたビュー表の一覧を取得できます。ディクショナリ表の検索については，「付録B.24　ディクショナリ表の検索」の「(34)　依存するビュー表の一覧を調べる場合」を参照してください。

この例では，ビュー表CUSTOMER30s，CUSTOMER40s，およびCUSTOMER50sが無効化されたとします。

無効化されたビュー表をALTER VIEW文で再作成する

ALTER VIEW "CUSTOMER30s" RECREATE

同様に，ビュー表CUSTOMER40sおよびCUSTOMER50sも，ALTER VIEW文で再作成してください。ビュー表の無効化を解除できます。

ヒント

再作成するビュー表が複数ある場合，ビューレベルの値が小さい順にALTER VIEW文を実行してください。

手順（変更対象の列名をCREATE VIEW文中に指定している場合）

基表であるビュー表の列名が変更されて，かつ変更対象の列名をCREATE VIEW文中に指定している場合は，次の手順でビュー表の無効化を解除してください。

無効化されたビュー表の一覧と，それらのビュー表の定義情報を確認する

ディクショナリ表を検索すると，無効化されたビュー表の一覧と，それらのビュー表の定義情報を取得できます。ディクショナリ表の検索については，「付録B.24　ディクショナリ表の検索」の「(33)　依存するビュー表の一覧，およびそれらのビュー表の定義情報を調べる場合」を参照してください。

この例では，ビュー表CUSTOMER30s，CUSTOMER40s，およびCUSTOMER50sが無効化されたとします。

無効化されたビュー表をDROP VIEW文で削除する

DROP VIEW "CUSTOMER30s"
DROP VIEW "CUSTOMER40s"
DROP VIEW "CUSTOMER50s"

手順1.で確認した無効化されたビュー表をすべて削除してください。

CREATE VIEW文の指定内容を修正する

手順1.で調べたCREATE VIEW文の指定内容のうち，列名変更に該当する個所を修正します。

（例）表T1の列名をC3からC33に変更した場合

＜修正前＞

CREATE VIEW "VT1" ("VC1","VC2","VC3")
    AS SELECT "C1","C2","C3" FROM "T1"

＜修正後＞

CREATE VIEW "VT1" ("VC1","VC2","VC3")
    AS SELECT "C1","C2","C33" FROM "T1"

無効化されたビュー表をCREATE VIEW文で再定義する

CREATE VIEW "CUSTOMER30s" ("AGE","SEX","GNO","PNAME","PRICE")
  AS SELECT "CUSTOMER"."AGE",
            "CUSTOMER"."SEX",
            "CUSTOMER"."GNO",
            "STOCK"."PNAME",
            "STOCK"."PRICE"
       FROM "CUSTOMER","STOCK"
         WHERE "CUSTOMER"."AGE"=30 AND "CUSTOMER"."GNO"="STOCK"."GNO"

同様に，CUSTOMER40sおよびCUSTOMER50sもCREATE VIEW文でビュー表を再定義してください。

ヒント

再定義するビュー表が複数ある場合，ビューレベルの値が小さい順にCREATE VIEW文を実行してください。

(10)　バージョンアップ時に行われるビュー表の再作成が失敗した場合

HADBサーバのバージョンアップ時にビュー表が再作成されることがあります。その際，ビュー表の再作成に失敗すると，対象のビュー表は無効化されます。詳細については，「8.6.5　バージョンアップ時の注意事項」の「(5)　バージョンアップ時に行われるビュー表の再作成」を参照してください。

再作成に失敗したビュー表の無効化を解除する手順を次に示します。

手順

無効化されたビュー表の一覧と，それらのビュー表の定義情報を確認する

ディクショナリ表を検索すると，無効化されたビュー表の一覧と，それらのビュー表の定義情報を取得できます。ディクショナリ表の検索については，「付録B.24　ディクショナリ表の検索」の「(33)　依存するビュー表の一覧，およびそれらのビュー表の定義情報を調べる場合」を参照してください。

無効化されたビュー表をDROP VIEW文で削除する

手順1.で確認した，無効化されたビュー表をすべて削除してください。

CREATE VIEW文を作成する

手順1.で確認した，無効化されたビュー表のCREATE VIEW文を作成してください。

出力されたメッセージを基に，CREATE VIEW文の指定内容を修正する

手順3.で作成したCREATE VIEW文を修正し，ビュー表の無効化要因を取り除いてください。

バージョンアップ時に行われるビュー表の再作成に失敗した場合，ビュー表の再作成に失敗したことを知らせるKFAA51312-Wメッセージが出力されます。KFAA51312-Wメッセージの直前に出力されているメッセージに，ビュー表の無効化要因と対処方法が説明されています。それに従って，CREATE VIEW文を修正してください。

無効化されたビュー表をCREATE VIEW文で再定義する

手順4.で修正したCREATE VIEW文で，無効化されたビュー表を再定義してください。

ヒント

再定義するビュー表が複数ある場合，ビューレベルの値が小さい順にCREATE VIEW文を実行してください。

11.2.9　無効化されたビュー表を削除する方法

無効化されたビュー表が不要な場合は，次に示す手順でビュー表を削除してください。

例題

HADBユーザADBUSER01が定義したビュー表のうち，無効化されているビュー表を削除します。

手順

無効化されているビュー表の一覧を取得する

ディクショナリ表を検索すると，無効化されているビュー表の一覧を取得できます。ディクショナリ表の検索例については，「11.2.7　ビュー表が無効化されているかどうかを確認する方法」の「例題2」を参照してください。

無効化されているビュー表をDROP VIEW文で削除する

DROP VIEW "CUSTOMER30s"
DROP VIEW "CUSTOMER40s"
DROP VIEW "CUSTOMER50s"

無効化されているすべてのビュー表に対してDROP VIEW文を実行します。

■削除するビュー表が多数ある場合

ビューレベルが最も小さいビュー表を削除すると，削除するビュー表に依存し，無効化されているすべてのビュー表を一括削除できます。

（例）

DROP VIEW "CUSTOMER30s" CASCADE

上記のように削除動作にCASCADEを指定すると，CUSTOMER30sに依存するすべてのビュー表（無効化されているすべてのビュー表）を削除できます。

無効化されているビュー表のうち，ビューレベルが最も小さいビュー表を調べるには，次に示すSELECT文を実行します。下線部分には，スキーマ名を指定します。

SELECT "TABLE_NAME","VIEW_LEVEL" FROM "MASTER"."SQL_VIEWS"
    WHERE "TABLE_SCHEMA"='ADBUSER01' AND IS_INVALID = 'Y'
    ORDER BY "VIEW_LEVEL"

検索結果

TABLE_NAME  VIEW_LEVEL
----------- ----------
CUSTOMER30s 3
CUSTOMER40s 4
    :       :

検索結果の1行目に表示されているビュー表（CUSTOMER30s）が，ビューレベルが最も小さいビュー表です。

11.2.10　ビュー表の基表を確認する方法

ディクショナリ表を検索すると，ビュー表の基表を調べることができます。ディクショナリ表の検索例を次に示します。

例題

HADBユーザADBUSER01が定義したビュー表CUSTOMER30sの基表を調べます。

次のSELECT文を実行して，ディクショナリ表を検索してください。

SELECT "MVU"."TABLE_SCHEMA","MVU"."TABLE_NAME"
  FROM  "MASTER"."SQL_VIEW_TABLE_USAGE" "MVU"
    WHERE "MVU"."VIEW_SCHEMA"='ADBUSER01'
      AND "MVU"."VIEW_NAME" = 'CUSTOMER30s'
      AND "MVU"."IS_DIRECT" ='Y'

検索結果

TABLE_SCHEMA TABLE_NAME
------------ ----------
ADBUSER01    CUSTOMER
ADBUSER01    STOCK

CUSTOMER30sの基表は，ADBUSER01が所有しているCUSTOMER表とSTOCK表であることがわかります。

11.2.11　依存するビュー表を確認する方法

ディクショナリ表を検索すると，依存するビュー表を調べることができます。ディクショナリ表の検索例を次に示します。

例題

HADBユーザADBUSER01が定義したCUSTOMER表に依存するビュー表を調べます。

次のSELECT文を実行して，ディクショナリ表を検索してください。

SELECT "MV"."TABLE_SCHEMA","MV"."TABLE_NAME"
    FROM  "MASTER"."SQL_VIEW_TABLE_USAGE" "MVU"
         ,"MASTER"."SQL_VIEWS" "MV"
      WHERE "MVU"."TABLE_SCHEMA"='ADBUSER01'
        AND "MVU"."TABLE_NAME" = 'CUSTOMER'
        AND "MV"."TABLE_SCHEMA" = "MVU"."VIEW_SCHEMA"
        AND "MV"."TABLE_NAME" = "MVU"."VIEW_NAME"

検索結果

TABLE_SCHEMA TABLE_NAME
------------ ----------
ADBUSER01    CUSTOMER30s
ADBUSER01    CUSTOMER40s
ADBUSER02    CUSTOMER90s

検索結果には，依存するビュー表の一覧が表示されます。

11.2.12　ビュー表に対するアクセス権限を確認する方法

ディクショナリ表を検索すると，ビュー表に対するアクセス権限を確認できます。ディクショナリ表の検索例については，「付録B.24　ディクショナリ表の検索」の「(24)　表に対するアクセス権限を調べる場合」を参照してください。

11.2.13　ビュー表を使用した運用例

次に示す運用条件を満たす場合の，ビュー表の定義方法とアクセス権限の付与方法について説明します。

■運用条件

顧客データが格納されている顧客表（CUSTOMERS）を定義し，顧客データをHADBユーザが参照できるようにする

顧客データを参照するHADBユーザが，顧客表の顧客名列（CUSTOMER_NAME）に格納されているデータを参照できないようにする

顧客データを参照するHADBユーザには，顧客表の表名（CUSTOMERS）を公開しないようにする

■この運用例で定義する表

顧客表（CUSTOMERS）

実際の顧客データが格納されている実表です。

顧客表のビュー表（V1_CUSTOMERS）

V1_CUSTOMERSは，CUSTOMERSを基表としたビュー表です。顧客表から顧客名列（CUSTOMER_NAME）を除いた表をビュー表として定義します。

顧客表のビュー表を基表としたビュー表（V2_CUSTOMERS）

V2_CUSTOMERSは，V1_CUSTOMERSを基表としたビュー表です。

顧客データを参照するHADBユーザには，V2_CUSTOMERSにアクセスさせます。

■この運用例で登場するHADBユーザ

HADBユーザADBUSER01：顧客表CUSTOMERS，ビュー表V1_CUSTOMERSの所有者

HADBユーザADBUSER02：ビュー表V2_CUSTOMERSの所有者

HADBユーザADBUSER03：顧客データを参照するHADBユーザ

HADBユーザADBUSER04：顧客データを参照するHADBユーザ

■運用の関連図

上記の運用条件を実現するには，次の手順で顧客表とビュー表を定義し，各表に対するアクセス権限を各HADBユーザに付与します。

手順

ADBUSER01が顧客表を定義する

CREATE TABLE "ADBUSER01"."CUSTOMERS"("CUSTOMER_ID" INTEGER,
                                     "CUSTOMER_NAME" CHAR(100),
                                     "REGISTERED_DATE" TIMESTAMP)
             IN "DBAREA01"

ADBUSER01が，顧客表に顧客データをインポートする

adbimportコマンドを実行して，顧客表に顧客データをインポートしてください。

ADBUSER01が，顧客表のビュー表V1_CUSTOMERSを定義する

CREATE VIEW "ADBUSER01"."V1_CUSTOMERS"
    AS SELECT "CUSTOMER_ID","REGISTERED_DATE" FROM "ADBUSER01"."CUSTOMERS"

顧客表からCUSTOMER_NAME列を除いた表が，ビュー表V1_CUSTOMERSとして定義されます。

ADBUSER01が，ビュー表V1_CUSTOMERSに対するSELECT権限を付与権付きでADBUSER02に付与する

GRANT SELECT ON "ADBUSER01"."V1_CUSTOMERS" TO "ADBUSER02" WITH GRANT OPTION

ビュー表V1_CUSTOMERSに対するSELECT権限が付与権付きでADBUSER02に付与されます。

メモ

ビュー表V1_CUSTOMERSに対するSELECT権限の付与権をADBUSER02に付与するために，WITH GRANT OPTIONを指定しています。

手順の5.で，ADBUSER02が，ビュー表V1_CUSTOMERSを基表としたビュー表V2_CUSTOMERSを定義するために，ビュー表V1_CUSTOMERSに対するSELECT権限をADBUSER02に付与しています。

この例では，SELECT権限だけを付与していますが，必要に応じてほかの種類のアクセス権限も一緒に付与できます。

ADBUSER02が，ビュー表V2_CUSTOMERSを定義する

CREATE VIEW "ADBUSER02"."V2_CUSTOMERS"
    AS SELECT * FROM "ADBUSER01"."V1_CUSTOMERS"

ビュー表V1_CUSTOMERSを基表としたビュー表V2_CUSTOMERSが定義されます。

メモ

CREATE VIEW文中の問合せ式中のSELECTに*が指定されていますが，CUSTOMER_NAME列を除いたV1_CUSTOMERSが基表のため，定義されたV2_CUSTOMERSもCUSTOMER_NAME列を除いたビュー表として定義されます。

ビュー表V2_CUSTOMERSの基表にビュー表V1_CUSTOMERSを指定することによって，実際に顧客データが格納されている顧客表の表名（CUSTOMERS）を隠すことができます。

ADBUSER02が，ビュー表V2_CUSTOMERSに対するSELECT権限をADBUSER03とADBUSER04に付与する

GRANT SELECT ON "ADBUSER02"."V2_CUSTOMERS" TO "ADBUSER03","ADBUSER04"

ADBUSER03とADBUSER04は，ビュー表V2_CUSTOMERSに対するSELECT権限を付与されたため，顧客データを参照できるようになります（ビュー表V2_CUSTOMERSを参照できるようになります）。

メモ

ADBUSER03とADBUSER04は，顧客データを参照するだけのHADBユーザのため，ビュー表V2_CUSTOMERSに対するSELECT権限の付与権は付与しません。そのため，上記のGRANT文では，WITH GRANT OPTIONを指定していません。

上記の運用を継続中に，顧客データを参照するHADBユーザADBUSER05が追加された場合，ADBUSER02が，ビュー表V2_CUSTOMERSに対するSELECT権限をADBUSER05に付与してください。そうすると，ADBUSER05は，顧客データを参照できるようになります。

メモ

この例の場合，顧客表中の顧客データを更新，追加，削除できるのは，ADBUSER01だけになります。

顧客データを参照するHADBユーザの管理（ビュー表V2_CUSTOMERSに対するアクセス権限の管理）は，ADBUSER02が実施します。

ADBUSER02～ADBUSER05は，顧客データを参照だけできます。また，CUSTOMER_NAME列を参照することはできません。

11.3　外部表の運用

ここでは，外部表の運用について説明します。

外部表については，「2.1.3　外部表」を参照してください。

11.3.1　外部サーバを定義する方法

外部表を定義する前に，外部サーバを定義しておく必要があります。外部サーバを定義するには，定義系SQLのCREATE SERVER文を実行します。CREATE SERVER文を実行するには，CONNECT権限とDBA権限が必要です。

重要

外部データがオブジェクトストレージに格納されている場合は，外部サーバを定義する必要があります。外部データがファイルストレージに格納されている場合は，外部サーバを定義する必要はありません。

外部サーバの定義例を次に示します。

（例）

外部サーバ（FOREIGNSERVER1）を定義します。

CREATE SERVER "FOREIGNSERVER1"                                      ...1
    OPTIONS(ACCESS_KEY '6yTZJwzVjl6nYTjKICop'                       ...2
           ,SECRET_KEY 'Bs6E43CgrwXYyX9jvVJpPgH8rOdTafeuVNrwGJf'    ...3
           ,ENDPOINT   'https://xxxx-yyz99:1234')                   ...4

［説明］

定義する外部サーバの名称を指定します。

外部のオブジェクトストレージに接続する際の認証で使用するアクセスキーを指定します。

外部のオブジェクトストレージに接続する際の認証で使用するシークレットキーを指定します。

エンドポイントを使用する場合，URI形式のエンドポイントを指定します。

AWS環境でアクセスキーおよびシークレットキーを隠蔽したい場合は，ACCESS_KEYオプションとSECRET_KEYオプションを省略してください。その場合，認証情報を設定する必要があります。認証情報の設定方法には，IAMロールを使用する方法と，認証情報ファイルを使用する方法の2つがあります。両方の設定をした場合，認証情報ファイルを使用する方法が優先されます。それぞれの方法を以降で説明します。

メモ

AWSでは，IAMロールを使用した認証情報の設定を推奨しています。

パブリックアクセスが許可されている認証情報を必要としないS3バケットの利用にセキュリティ上の問題がない場合は，認証情報の設定を省略できます。

IAMロールを使用した認証情報の設定方法

S3バケットへのアクセスを許可するように設定したIAMロールを作成し，HADBサーバをインストールしたインスタンスにアタッチします。作成するIAMロールには，次のアクションを許可するIAMポリシーを関連づけてください。

S3オブジェクトの情報を取得するときに必要なアクション

s3:ListBucket*

S3オブジェクトを取得するときに必要なアクション

s3:GetObject*

ディレクトリバケットへのアクセスに必要なアクション

s3express:CreateSession

S3バケットとしてディレクトリバケットを使用する場合に必要なアクションです。

Amazon S3のアクセス制御の設定方法については，AWSのドキュメントのAmazon S3でのIdentity and Access ManagementまたはS3 Express One Zone 向け AWS Identity and Access Management (IAM)を参照してください。

インスタンスへのIAMロールのアタッチについては，AWSのドキュメントのAmazon EC2のIAMロールを参照してください。

認証情報ファイルを使用した認証情報の設定方法

HADBサーバをインストールしたインスタンスで，次の手順で認証情報ファイルを設定してください。

手順

AWS CLIをインストールする

AWS CLIを使用してAmazon S3に関する情報を取得するために，HADBサーバをインストールしたインスタンスにAWS CLIをインストールしてください。HADBサーバは，AWS CLIを次のどちらかで実行します。そのため，AWS CLIをインストールする際は，次のどちらかでawsコマンドが実行できるようにインストールパスを指定してください。

/usr/local/bin/aws

/usr/bin/aws

IAMポリシーを設定する

HADBサーバの運用で使用するIAMユーザに対して，IAMロールを使用した認証情報の設定方法でIAMロールに関連づけているものと同じIAMポリシーを設定してください。

HADB 管理者ユーザ（adbmanager）で次のAWS CLIのコマンドを実行する

aws configure

アクセスキーIDとシークレットアクセスキーを入力する

アクセスキーID（AWS Access Key ID）とシークレットアクセスキー（AWS Secret Access Key）の入力を求められます。入力例を次に示します。

$ aws configure
AWS Access Key ID [None]: ARLYAHKBV4BD8GQEJRWJ
AWS Secret Access Key [None]: N8jZZhCzETd5yCexhKsu2EXJbuhAH7gyZjHBzeQs
Default region name [None]: ap-northeast-1
Default output format [None]: json

手順の2.でIAMポリシーを設定したIAMユーザのアクセスキーIDとシークレットアクセスキーを入力してください。

リージョン名（Default region name）と出力形式（Default output format）には，任意のリージョン名と任意の出力形式を指定してください。

aws configureコマンドの詳細については，AWSのドキュメントを参照してください。

認証情報ファイルの内容を確認する

adbmanagerのホームディレクトリ下にある.awsディレクトリ下に，認証情報ファイル（ファイル名：credentials）が作成されます。同名のファイルが存在する場合は，そのファイルの内容が更新されます。作成または更新された認証情報ファイルの内容を確認してください。

認証情報ファイル（/home/adbmanager/.aws/credentials）の例を次に示します。

[default]
aws_access_key_id=ARLYAHKBV4BD8GQEJRWJ
aws_secret_access_key=N8jZZhCzETd5yCexhKsu2EXJbuhAH7gyZjHBzeQs

認証情報ファイル中のdefaultプロファイルのaws_access_key_idとaws_secret_access_keyに，手順の2.でIAMポリシーを設定したIAMユーザのアクセスキーIDとシークレットアクセスキーが指定されていることを確認してください。

重要

AWS環境以外からAmazon S3またはAmazon S3と互換性のあるストレージにアクセスする場合，IMDS認証情報プロバイダーに対して不要な通信が発生し，それが原因でHADBサーバの実行性能が低下するおそれがあります。IMDS認証情報プロバイダーへの通信を無効化するために，環境変数AWS_EC2_METADATA_DISABLEDにtrueを設定することを推奨します。詳細については，AWSのドキュメントのIMDS認証情報プロバイダーを参照してください。

11.3.2　外部表を定義する方法

外部表を定義するには，定義系SQLのCREATE FOREIGN TABLE文を実行します。CREATE FOREIGN TABLE文を実行するには，CONNECT権限とスキーマ定義権限が必要です。

なお，外部表を定義する前に，スキーマを定義しておく必要があります。自分（HADBサーバに接続中の認可識別子のHADBユーザ）が所有するスキーマに対してだけ，外部表を定義できます。

外部表の定義例を次に示します。

外部データがオブジェクトストレージに格納されている場合

（例）

外部表（PURCHASE）を定義します。

CREATE FOREIGN TABLE "PURCHASE" ("CNO" CHAR(8),"PDATE" DATE,"SALES" INTEGER)   ...1
    SERVER "FOREIGNSERVER1"                                                    ...2
    OPTIONS (
             FORMAT PARQUET                                                    ...3
            ,LOCATION 's3://data/'                                             ...4
            )

［説明］

外部表の表名，および外部表の列定義を指定します。

外部表には，STRING型，配列型（ARRAY型），構造データ（STRUCT型）などの列も定義できます。

外部表が使用する外部サーバの名称を指定します。

外部データの形式を指定します。外部データがPARQUET形式の場合，PARQUETを指定します。

外部データの検索対象ディレクトリのパスを指定します。外部表PURCHASEの検索時，s3://data/ディレクトリ下（サブディレクトリも含む）にあるすべての外部データファイル中の外部データが外部表に読み込まれます。

外部データがファイルストレージに格納されている場合

（例）

外部表（PURCHASE）を定義します。

CREATE FOREIGN TABLE "PURCHASE" ("CNO" CHAR(8),"PDATE" DATE,"SALES" INTEGER)   ...1
    OPTIONS (
             FORMAT PARQUET                                                    ...2
            ,LOCATION 'file:///data/ftbl/T1/'                                  ...3
            )

［説明］

外部表の表名，および外部表の列定義を指定します。

外部表には，STRING型，配列型（ARRAY型），構造データ（STRUCT型）などの列も定義できます。

外部データの形式を指定します。外部データがPARQUET形式の場合，PARQUETを指定します。

外部データの検索対象ディレクトリのパスを指定します。外部表PURCHASEの検索時，/data/ftbl/T1/ディレクトリ下（サブディレクトリも含む）にあるすべての外部データファイル中の外部データが外部表に読み込まれます。

なお，外部表の定義時には，外部表に外部データは読み込まれません。外部表の検索時に，外部表に外部データが読み込まれます。そのため，検索対象とする外部データを直接修正して変更した場合，外部表の検索結果が変わることがあります。

メモ

ALTER TABLE文では外部表の定義を変更できません。外部表の定義を変更する場合は，DROP FOREIGN TABLE文でいったん外部表を削除し，そのあとに外部表をCREATE FOREIGN TABLE文で再定義してください。

11.3.3　外部表を検索する方法

SELECT文で外部表を検索できます。外部表を検索する際に，WHERE句中の述語にパーティションキー列に対する絞り込み条件を指定すると，検索対象の外部データファイルを絞り込むことができます。パーティションキー列の使い方については，マニュアルHADB　SQLリファレンスのCREATE FOREIGN TABLE（外部表の定義）を参照してください。

なお，外部表の検索はできますが，次の方法による外部表へのデータの追加，更新，および削除はできません。

外部表には，INSERT文，UPDATE文，DELETE文，TRUNCATE TABLE文，およびPURGE CHUNK文は実行できません。

外部表には，adbimportコマンドによるデータのインポートはできません。

重要

外部表のデータを追加，更新，削除したい場合は，外部データを直接編集したり，外部データファイルを追加，削除したりして，外部データを変更してください。外部データの変更は，トランザクション隔離性水準に関係なく，外部表に即時反映されます。

11.3.4　外部表のデータをファイルに出力する方法（データをエクスポートする方法）

外部表のデータをファイルに出力したい場合は，「11.1.11　実表のデータをファイルに出力する方法（データをエクスポートする方法）」を参照してください。実表のデータをファイルに出力する方法と同じです。

11.3.5　外部表を削除する方法

外部表を削除するには，定義系SQLのDROP FOREIGN TABLE文を実行します。DROP FOREIGN TABLE文を実行するには，スキーマ定義権限とCONNECT権限が必要です。

なお，自分（HADBサーバに接続中の認可識別子のHADBユーザ）が所有している外部表だけを削除できます。ほかのHADBユーザが所有している外部表は削除できません。

重要

外部表を削除した場合，削除対象の外部表に依存するビュー表が削除されます（または無効化されます）。そのため，外部表を削除する前に，削除対象の外部表に依存するビュー表があるかどうかを確認し，削除または無効化されても問題ないことを確認してください。

外部表の削除例を次に示します。

（例）

外部表（ACCESSLOG）を削除します。

手順

削除対象の外部表に依存するビュー表を確認する

ディクショナリ表を検索すると，削除対象の外部表に依存するビュー表を確認できます。ディクショナリ表の検索例については，「11.2.11　依存するビュー表を確認する方法」を参照してください。

DROP FOREIGN TABLE文を実行する

DROP FOREIGN TABLE "ACCESSLOG" CASCADE

メモ

上記の例では，削除動作にCASCADEを指定しているため，削除対象の外部表に依存するすべてのビュー表が削除されます。削除動作の指定を省略した場合は，削除対象の外部表に依存するすべてのビュー表が無効化されます。

11.3.6　外部サーバを削除する方法

外部サーバを削除するには，定義系SQLのDROP SERVER文を実行します。DROP SERVER文を実行するには，CONNECT権限とDBA権限が必要です。

なお，自分（HADBサーバに接続中の認可識別子のHADBユーザ）が定義した外部サーバだけを削除できます。ほかのHADBユーザが定義した外部サーバは削除できません。

重要

外部サーバを削除した場合，その外部サーバを使用しているすべての外部表が削除されます。そのため，外部サーバを削除する前に，その外部サーバを使用している外部表を確認し，外部表が削除されても問題ないことを確認してください。

また，外部表の削除に伴い，削除対象の外部表に依存するビュー表も削除されます（または無効化されます）。そのため，外部サーバを削除する前に，削除対象の外部表に依存するビュー表があるかどうかを確認し，削除または無効化されても問題ないことを確認してください。

外部サーバの削除例を次に示します。

（例）

外部サーバ（FOREIGNSERVER1）を削除します。

手順

削除対象の外部サーバを使用している外部表を確認する

ディクショナリ表を検索すると，削除対象の外部サーバを使用している外部表を確認できます。ディクショナリ表の検索例については，「付録B.24　ディクショナリ表の検索」の「(42)　外部サーバを使用している外部表の一覧を調べる方法」を参照してください。

削除対象の外部表に依存するビュー表を確認する

ディクショナリ表を検索すると，削除対象の外部表に依存するビュー表を確認できます。ディクショナリ表の検索例については，「11.2.11　依存するビュー表を確認する方法」を参照してください。

DROP SERVER文を実行する

DROP SERVER "FOREIGNSERVER1" CASCADE

メモ

上記の例では，削除動作にCASCADEを指定しているため，削除対象の外部表に依存するすべてのビュー表も削除されます。削除動作の指定を省略した場合は，削除対象の外部表に依存するすべてのビュー表が無効化されます。

11.3.7　外部表のデータ操作を中断する方法

外部表からのデータの読み込み処理を中断する場合は，処理を実行しているコネクションを指定してadbcancelコマンドを実行してください。対処方法については，「16.1.1　APが終了しない場合やAPが異常終了した場合の対処方法」を参照してください。

なお，外部データアクセス用ライブラリによる処理の実行中にadbcancelコマンドを実行した場合，トランザクションの強制終了に時間が掛かることがあります。外部データアクセス用ライブラリによる処理に掛かる時間は，外部データのサイズに比例して長くなります。adbcancelコマンドによるトランザクションの強制終了に掛かる時間が長過ぎて問題となる場合は，外部データの分割を検討してください。

11.4　インデクスの運用

ここでは，インデクスの運用について説明します。

11.4.1　インデクスの定義

実表にインデクス（B-treeインデクス，テキストインデクスまたはレンジインデクス）を定義するには，CREATE INDEX文を実行します。CREATE INDEX文については，マニュアルHADB　SQLリファレンスの定義系SQLのCREATE INDEX（インデクスの定義）を参照してください。

自分（HADBサーバに接続中の認可識別子のHADBユーザ）が所有している実表に対してだけ，インデクスを定義できます。ほかのHADBユーザが所有している実表に対しては，インデクスを定義できません。

また，カラムストア表にはテキストインデクスを定義できません。

なお，インデクスを定義する際は，次の個所を参照して，適切な列にインデクスを定義するようにしてください。

「5.3　B-treeインデクスの設計」

「5.4　テキストインデクスの設計」

「5.5　レンジインデクスの設計」

重要

行を格納するセグメントが割り当てられている状態の表に対してインデクスを定義すると，インデクスが未完状態（インデクスデータが作成されない状態）になります。インデクスが未完状態の場合，未完状態のインデクスを使った検索や，データの追加，更新，削除などができなくなります。

インデクスの未完状態の解除方法については，次の個所を参照してください。

「16.9.1　B-treeインデクスが未完状態になったときの対処方法」

「16.10.1　テキストインデクスが未完状態になったときの対処方法」

「16.11.1　レンジインデクスが未完状態になったときの対処方法」

行を格納するセグメントが割り当てられている状態については，「5.3.1　B-treeインデクスを定義する場合の注意点（B-treeインデクスの未完状態）」を参照してください。

11.4.2　B-treeインデクスの再作成

B-treeインデクスを定義した表に対して，行の挿入，行の更新，および行の削除を頻繁に実施した場合は，B-treeインデクスを再作成することを検討してください。

B-treeインデクスを再作成すると，次に示す効果があります。

B-treeインデクスを使用した検索性能の低下を防ぐことができる

データ用DBエリアの使用量を削減できる（行の更新や行の削除で発生した無効な状態のB-treeインデクスのデータを削除できる）

インデクスページスプリットの発生を抑えることができる（B-treeインデクスのインデクスページ内の未使用領域を再度確保できる）

B-treeインデクスを再作成する場合は，adbidxrebuildコマンドを実行してください。adbidxrebuildコマンドについては，マニュアルHADB　コマンドリファレンスのadbidxrebuild（インデクスの再作成）を参照してください。

メモ

未完状態になったB-treeインデクスを再作成したい場合は，「16.9.1　B-treeインデクスが未完状態になったときの対処方法」を参照してください。

一意性制約に違反したユニークインデクスを再作成した場合は，「16.9.2　一意性制約に違反した場合の対処方法（KFAA61205-Wメッセージが出力された場合）」を参照してください。

B-treeインデクスを再作成するかどうかを判断する方法について，次に示します。

(1)　B-treeインデクスを使用した検索性能の低下を防ぐ場合

B-treeインデクスを定義した表に対して，行の挿入，行の更新，または行の削除を頻繁に実施した場合は，B-treeインデクスを使用した検索性能が低下します。

その場合は，次に示す出力項目のうち，どちらか片方を確認してください。確認した結果，出力項目の値が大きい場合は，B-treeインデクスを再作成してください。B-treeインデクスを再作成すると，B-treeインデクスを使用した検索性能の低下を防ぐことができます。

SQL文の統計情報に出力されるBidx_validation_check_cntの値（B-treeインデクスを使用した検索で，行データが有効かどうかを判定した回数）

SQL文の統計情報は，統計ログファイルおよびSQLトレースファイルに出力されます。

統計ログファイルに出力されたSQL文の統計情報を確認する場合は，adbstatコマンドを実行してください。adbstatコマンドについては，マニュアルHADB　コマンドリファレンスのadbstat（HADBサーバの統計解析）を参照してください。

SQLトレースファイルに出力されたSQL文の統計情報を確認する場合は，SQLトレースファイル中のSQLトレース情報を確認してください。SQLトレース情報については，「10.11.2　SQLトレース情報に出力される情報」の「(10)　SQL文の統計情報」を参照してください。

アクセスパスの統計情報のデータアクセス情報に出力されるData_bidx_validation_check_cntの値（B-treeインデクスを使用した検索で，行が有効かどうかを判定した回数）

アクセスパスの統計情報は，SQLトレースファイルに出力されます。SQLトレースファイル中のSQLトレース情報を確認してください。アクセスパスの統計情報については，「10.11.3　アクセスパスの統計情報の出力例と出力項目」を参照してください。

SQL文の統計情報とアクセスパスの統計情報の両方を確認できる場合は，アクセスパスの統計情報を確認することを推奨します。アクセスパスの統計情報を確認すると，複数の表を検索している場合に，どの表に定義したB-treeインデクスを再作成すればよいかを確認できます。

(2)　データ用DBエリアの使用量を削減する場合

B-treeインデクスを定義した表に対して，行の更新，または行の削除を頻繁に実施した場合は，次に示す手順に従って，B-treeインデクスを再作成するかどうかを判断してください。

手順

adbdbstatusコマンドでB-treeインデクスの使用量を確認する

adbdbstatusコマンドで，インデクスのサマリ情報を出力してください。そして，Used_segments（インデクスの使用中セグメント数）の出力内容を確認してください。adbdbstatusコマンドについては，マニュアルHADB　コマンドリファレンスのadbdbstatus（データベースの状態解析）を参照してください。

実表内の有効なデータを基に見積もったB-treeインデクスの容量を確認する

B-treeインデクスの容量を求める場合は，「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」にある次の個所を参照してください。なお，表の種類によって参照先が異なります。

シングルチャンク表の場合

「(c)　変数SGIDXおよびPGIDXの求め方（シングルチャンク表の場合）」

マルチチャンク表の場合

「(h)　変数SGIDXおよびPGIDXの求め方（マルチチャンク表の場合）」

なお，変数SGIDXは，データ用DBエリアに格納されているすべてのB-treeインデクスの合計を求める計算式となっています。ここでは，対象のB-treeインデクスだけを求めてください。

手順1.および手順2.で確認した結果を比較して，その差が大きい場合は，B-treeインデクスを再作成してください。

(3)　B-treeインデクスのインデクスページスプリットの発生を抑える場合

B-treeインデクスを定義した表に対して，行の挿入，または行の更新を頻繁に実施した場合は，インデクスページスプリットが発生するおそれがあります。

インデクスページスプリットの発生有無については，SQL文の統計情報のBidx_page_split_cnt（B-treeインデクスのインデクスページスプリットが発生した回数）を確認してください。確認した結果，インデクスページスプリットが発生している場合は，B-treeインデクスを再作成してください。B-treeインデクスを再作成すると，インデクスページ内の未使用領域を再度確保できるため，インデクスページスプリットの発生を抑えることができます。

SQL文の統計情報は，統計ログファイルおよびSQLトレースファイルに出力されます。

統計ログファイルに出力されたSQL文の統計情報を確認する場合は，adbstatコマンドを実行してください。adbstatコマンドについては，マニュアルHADB　コマンドリファレンスのadbstat（HADBサーバの統計解析）を参照してください。

SQLトレースファイルに出力されたSQL文の統計情報を確認する場合は，SQLトレースファイル中のSQLトレース情報を確認してください。SQLトレース情報については，「10.11.2　SQLトレース情報に出力される情報」の「(10)　SQL文の統計情報」を参照してください。

11.4.3　テキストインデクスの再作成

テキストインデクスを定義した表に対して，行の挿入，行の更新，および行の削除を頻繁に実施した場合は，テキストインデクスを再作成することを検討してください。

テキストインデクスを再作成すると，次に示す効果があります。

テキストインデクスを使用した検索性能の低下を防ぐことができる

データ用DBエリアの使用量を削減できる（行の更新や行の削除で発生した無効な状態のテキストインデクスのデータを削除できる）

インデクスページスプリットの発生を抑えることができる（テキストインデクスのインデクスページ内の未使用領域を再度確保できる）

テキストインデクスを再作成する場合は，adbidxrebuildコマンドを実行してください。adbidxrebuildコマンドについては，マニュアルHADB　コマンドリファレンスのadbidxrebuild（インデクスの再作成）を参照してください。

メモ

未完状態になったテキストインデクスを再作成したい場合は，「16.10.1　テキストインデクスが未完状態になったときの対処方法」を参照してください。

テキストインデクスを再作成するかどうかを判断する方法について，次に示します。

(1)　テキストインデクスを使用した検索性能の低下を防ぐ場合

テキストインデクスを定義した表に対して，行の挿入，行の更新，または行の削除を頻繁に実施した場合は，テキストインデクスを使用した検索性能が低下します。

テキストインデクスを定義した表に格納されているデータのうち，0.01%以上のデータを更新（行の挿入および行の更新）した場合は，テキストインデクスを再作成することを検討してください。

また，テキストインデクスを定義した表に格納されているデータのうち，30%以上のデータを削除（行の削除）した場合も，テキストインデクスを再作成することを検討してください。

テキストインデクスを再作成すると，テキストインデクスを使用した検索性能の低下を防ぐことができます。

(2)　データ用DBエリアの使用量を削減する場合

テキストインデクスを定義した表に対して，行の更新，または行の削除を頻繁に実施した場合は，次に示す手順に従って，テキストインデクスを再作成するかどうかを判断してください。

手順

adbdbstatusコマンドでテキストインデクスの使用量を確認する

adbdbstatusコマンドで，インデクスのサマリ情報を出力してください。そして，Used_segments（インデクスの使用中セグメント数）の出力内容を確認してください。adbdbstatusコマンドについては，マニュアルHADB　コマンドリファレンスのadbdbstatus（データベースの状態解析）を参照してください。

実表内の有効なデータを基に見積もったテキストインデクスの容量を確認する

テキストインデクスの容量を求める場合は，「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」にある次の個所を参照してください。なお，表の種類によって参照先が異なります。

シングルチャンク表の場合

「(e)　変数SGTIXの求め方（シングルチャンク表の場合）」

マルチチャンク表の場合

「(j)　変数SGTIXの求め方（マルチチャンク表の場合）」

なお，変数SGTIXは，データ用DBエリアに格納されているすべてのテキストインデクスの合計を求める計算式となっています。ここでは，対象のテキストインデクスだけを求めてください。

手順1.および手順2.で確認した結果を比較して，その差が大きい場合は，テキストインデクスを再作成してください。

(3)　テキストインデクスのインデクスページスプリットの発生を抑える場合

テキストインデクスを定義した表に対して，行の挿入，または行の更新を頻繁に実施した場合は，インデクスページスプリットが発生するおそれがあります。

インデクスページスプリットの発生有無については，SQL文の統計情報のTidx_page_split_cnt（テキストインデクスのインデクスページスプリットが発生した回数）を確認してください。確認した結果，インデクスページスプリットが発生している場合は，テキストインデクスを再作成してください。テキストインデクスを再作成すると，インデクスページ内の未使用領域を再度確保できるため，インデクスページスプリットの発生を抑えることができます。

SQL文の統計情報は，統計ログファイルおよびSQLトレースファイルに出力されます。

統計ログファイルに出力されたSQL文の統計情報を確認する場合は，adbstatコマンドを実行してください。adbstatコマンドについては，マニュアルHADB　コマンドリファレンスのadbstat（HADBサーバの統計解析）を参照してください。

SQLトレースファイルに出力されたSQL文の統計情報を確認する場合は，SQLトレースファイル中のSQLトレース情報を確認してください。SQLトレース情報については，「10.11.2　SQLトレース情報に出力される情報」の「(10)　SQL文の統計情報」を参照してください。

11.4.4　テキストインデクスの確認（指定したインデクスオプションの確認）

テキストインデクスの定義時に指定したインデクスオプションを確認する場合は，「付録B.24　ディクショナリ表の検索」の「(35)　テキストインデクスに指定したインデクスオプションを調べる場合」を参照してください。

指定したインデクスオプションによって，表記ゆれ補正検索やワード検索を行う場合に，テキストインデクスが使用されるかどうかが決まります。

11.4.5　レンジインデクスの再作成

レンジインデクスを定義した表に対して，行の挿入，行の更新，および行の削除を頻繁に実施した場合は，レンジインデクスを再作成することを検討してください。

レンジインデクスを再作成すると，次に示す効果があります。

レンジインデクスを使用した検索性能の低下を防ぐことができる

データ用DBエリアの使用量を削減できる（行の更新や行の削除で発生した無効な状態のレンジインデクスのデータを削除できる）

レンジインデクスを再作成する場合は，adbidxrebuildコマンドを実行してください。adbidxrebuildコマンドについては，マニュアルHADB　コマンドリファレンスのadbidxrebuild（インデクスの再作成）を参照してください。

メモ

未完状態になったレンジインデクスを再作成したい場合は，「16.11.1　レンジインデクスが未完状態になったときの対処方法」を参照してください。

レンジインデクスを再作成するかどうかを判断する方法について，次に示します。

(1)　レンジインデクスを使用した検索性能の低下を防ぐ場合

レンジインデクスを定義した表に対して，行の挿入，行の更新，または行の削除を頻繁に実施した場合は，レンジインデクスを使用した検索性能が低下します。

レンジインデクスを使用した検索処理の状況を確認する場合は，「14.1.2　定義したレンジインデクスの見直し」を参照してください。SQL文の統計情報またはアクセスパスの統計情報のどちらかを確認して，レンジインデクスの使用状況を確認してください。確認した結果，レンジインデクスの効果がない場合（計算結果が0である，または0に近い）は，レンジインデクスを再作成してください。

(2)　データ用DBエリアの使用量を削減する場合

レンジインデクスを定義した表に対して，行の更新，または行の削除を頻繁に実施した場合は，次に示す手順に従って，レンジインデクスを再作成するかどうかを判断してください。

手順

adbdbstatusコマンドでレンジインデクスの使用量を確認する

adbdbstatusコマンドで，インデクスのサマリ情報を出力してください。そして，Used_segments（インデクスの使用中セグメント数）の出力内容を確認してください。adbdbstatusコマンドについては，マニュアルHADB　コマンドリファレンスのadbdbstatus（データベースの状態解析）を参照してください。

実表内の有効なデータを基に見積もったレンジインデクスの容量を確認する

レンジインデクスの容量を求める場合は，「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」にある次の個所を参照してください。なお，表の種類によって参照先が異なります。

シングルチャンク表の場合

「(d)　変数SGRIXの求め方（シングルチャンク表の場合）」

マルチチャンク表の場合

「(i)　変数SGRIXの求め方（マルチチャンク表の場合）」

なお，変数SGRIXは，データ用DBエリアに格納されているすべてのレンジインデクスの合計を求める計算式となっています。ここでは，対象のレンジインデクスだけを求めてください。

手順1.および手順2.で確認した結果を比較して，その差が大きい場合は，レンジインデクスを再作成してください。

11.4.6　レンジインデクスの確認（チャンクのスキップの可否）

ここでは，定義したレンジインデクスが，チャンクのスキップができるレンジインデクスかどうかを確認する方法について説明します。

メモ

バージョン02-02より前のバージョンで定義されたレンジインデクスは，チャンクのスキップができません。

ディクショナリ表SQL_INDEXESのIS_CHUNK_SKIP列を検索することで，チャンクのスキップができるレンジインデクスかどうかを確認できます。SELECT文の指定例を次に示します。

■SELECT文の指定例

SELECT "TABLE_SCHEMA","TABLE_NAME","INDEX_NAME","IS_CHUNK_SKIP"
  FROM "MASTER"."SQL_INDEXES" WHERE "INDEX_TYPE" = 'R'

検索結果のIS_CHUNK_SKIP列がYの場合は，チャンクのスキップができるレンジインデクスです。IS_CHUNK_SKIP列がナル値の場合は，チャンクのスキップができないレンジインデクスです。

チャンクのスキップができないレンジインデクスを，チャンクのスキップができるレンジインデクスに変更したい場合は，「11.4.7　レンジインデクスの再定義（チャンクのスキップの設定）」を参照してください。

ディクショナリ表SQL_INDEXESについては，「付録B.5　SQL_INDEXESの内容」を参照してください。

メモ

対象のレンジインデクスのスキーマ名，およびインデクス識別子がわかっている場合は，「付録B.24　ディクショナリ表の検索」の「(20)　チャンクのスキップができるレンジインデクスかどうかを調べる場合」を参照して検索することもできます。

11.4.7　レンジインデクスの再定義（チャンクのスキップの設定）

定義したレンジインデクスが，チャンクのスキップができないレンジインデクスの場合で，チャンクのスキップができるレンジインデクスに変更したいときは，レンジインデクスを再定義したあとで，adbidxrebuildコマンドを実行してください。手順を次に示します。

レンジインデクスを削除する

チャンクのスキップができないレンジインデクスを，DROP INDEX文で削除します。「11.4.9　インデクスの削除」を参照してください。

レンジインデクスを再定義する

手順1.で削除したレンジインデクスが定義されていた表に対して，CREATE INDEX文でレンジインデクスを再定義してください。

CREATE INDEX文については，マニュアルHADB　SQLリファレンスの定義系SQLのCREATE INDEX（インデクスの定義）を参照してください。

レンジインデクスを再作成する

手順2.でレンジインデクスを再定義した表に対して，adbidxrebuildコマンドでレンジインデクスを再作成してください。

adbidxrebuildコマンドについては，マニュアルHADB　コマンドリファレンスのadbidxrebuild（インデクスの再作成）を参照してください。

レンジインデクスを再定義したあとで，adbidxrebuildコマンドを実行すると，チャンクのスキップができるレンジインデクスになります。

11.4.8　インデクスが格納されているデータ用DBエリアを変更する方法

インデクスが格納されているデータ用DBエリアを別のデータ用DBエリアに変更したい場合は，対象のインデクスをいったん削除したあとで再定義する必要があります。そのあとで，インデクスを再作成する必要があります。

メモ

実表が格納されているデータ用DBエリアを別のデータ用DBエリアに変更したい場合は，「11.1.18　実表が格納されているデータ用DBエリアを変更する方法」を参照してください。

次の手順に従って，インデクスが格納されているデータ用DBエリアを，別のデータ用DBエリアに変更してください。

なお，新たなデータ用DBエリアを追加する必要がある場合は，「11.13.1　データ用DBエリアを追加する方法」を参照してください。そのあとで，インデクスが格納されているデータ用DBエリアを変更してください。

手順

インデクスの定義情報を確認する

実表にインデクスを定義したときのCREATE INDEX文の指定内容を確認してください。実表にインデクスを再定義する際に使用します。

インデクスを定義したときのCREATE INDEX文の指定内容がわからない場合は，「付録B.24　ディクショナリ表の検索」の「(30)　インデクスの定義情報を調べる場合」を参照してください。ディクショナリ表を検索すると，インデクスを定義したときのCREATE INDEX文の指定内容が確認できます。

インデクスを削除する

DROP INDEX文で，インデクスを削除してください。

インデクスを再定義する

実表にCREATE INDEX文でインデクスを再定義してください。CREATE INDEX文を作成する際の留意事項を次に示します。

手順1.で確認したインデクスを定義したときのCREATE INDEX文の指定内容を使用して，CREATE INDEX文を作成してください。

CREATE INDEX文のIN DBエリア名に，インデクスを格納する別のデータ用DBエリアのDBエリア名を指定してください。

インデクスを再作成する

adbidxrebuildコマンドで，手順3.で定義したインデクスを再作成してください。

これで，インデクスが格納されているデータ用DBエリアを，別のデータ用DBエリアに変更できます。

メモ

adbidxrebuildコマンドについては，マニュアルHADB　コマンドリファレンスを参照してください。

DROP INDEX文およびCREATE INDEX文については，マニュアルHADB　SQLリファレンスを参照してください。

11.4.9　インデクスの削除

表に定義しているインデクス（B-treeインデクス，テキストインデクスまたはレンジインデクス）を削除するには，DROP INDEX文を実行します。

DROP INDEX文については，マニュアルHADB　SQLリファレンスの定義系SQLのDROP INDEX（インデクスの削除）を参照してください。

自分（HADBサーバに接続中の認可識別子のHADBユーザ）が所有しているインデクスだけを削除できます。ほかのHADBユーザが所有しているインデクスは削除できません。

また，次に示すインデクスは，DROP INDEX文で削除できません。削除したい場合は，DROP TABLE文で実表ごと削除してください。

主キーを構成する列に自動的に定義されたB-treeインデクス

アーカイブマルチチャンク表のアーカイブレンジ列に自動的に定義されたレンジインデクス

重要

インデクスを削除する前に，削除するインデクス（B-treeインデクス，またはテキストインデクス）が定義されている実表に対して，コマンドの再実行が必要かどうか（実表が更新不可状態かどうか）を確認してください。確認する方法については，「10.9.2　実表の状態や使用量を確認したい場合」の「(1)　実表が更新不可状態かどうかを確認する場合」を参照してください。

コマンドの再実行が必要な場合

コマンドを再実行してください。そのあとで，インデクスを削除してください。

コマンドの再実行が必要な状態のままで（実表が更新不可状態のままで）インデクスを削除した場合

中断したコマンドによって作成された作業用一時ファイルが残ることがあります。作業用一時ファイルを削除するには，すべての実表の更新不可状態を解除する必要があります。作業用一時ファイルの削除については，「16.2.6　コマンド実行時の作業用一時ファイルを格納するディスクの空き容量が不足した場合の対処方法」の「(2)　ディスクに不要な作業用一時ファイルが残っている場合」を参照してください。

11.5　マルチチャンク表の運用

ここでは，マルチチャンク表特有の運用について説明します。マルチチャンク表とは，次に示す表の総称です。

レギュラーマルチチャンク表

アーカイブマルチチャンク表

なお，実表の運用については，「11.1　実表の運用」を参照してください。

11.5.1　マルチチャンク表を定義する方法

マルチチャンク表を定義するには，チャンク指定を指定したCREATE TABLE文を実行します。

なお，レギュラーマルチチャンク表とアーカイブマルチチャンク表とで，チャンク指定の指定内容が異なります。

レギュラーマルチチャンク表を定義する場合

「チャンク指定」のうち，「CHUNK=チャンク数の最大値」だけを指定してください。

アーカイブマルチチャンク表を定義する場合

次の指定をしてください。

「CHUNK=チャンク数の最大値」

「チャンクアーカイブ指定」

マルチチャンク表の定義例については，マニュアルHADB　SQLリファレンスのCREATE TABLE文の指定形式および規則の例題を参照してください。

アーカイブマルチチャンク表を定義する場合，アーカイブディレクトリを作成しておく必要があります。アーカイブディレクトリに関する注意事項を次に示します。

■アーカイブディレクトリに関する注意事項

使用中のアーカイブディレクトリは削除しないでください。使用中のアーカイブディレクトリを削除した場合，データベースの整合性が失われるため，HADBサーバは動作を保証しません。

アーカイブディレクトリ下に格納されているファイルを，更新または削除しないでください。ファイルを更新または削除した場合，HADBサーバは動作を保証しません。

アーカイブディレクトリ下にディレクトリを作成したり，またはファイルを格納したりしないでください。アーカイブマルチチャンク表に対する操作を実行した際に，ディレクトリやファイルが削除されてしまうおそれがあります。

11.5.2　マルチチャンク表にデータを格納する方法（バックグラウンドインポート）

バックグラウンドインポートでマルチチャンク表にデータを格納する方法について説明します。

メモ

マルチチャンク表にデータを格納する方法として，バックグラウンドインポートではなく，追加モードによるデータインポートもあります。追加モードによるデータインポートについては，「11.1.10　実表にデータを格納する方法（データインポート）」を参照してください。

バックグラウンドインポートを実行する場合，adbimportコマンドに-bオプションを指定してください。adbimportコマンドに-bオプションを指定して，バックグラウンドインポートを実行する例を次に示します。

adbimportコマンドの指定形式については，マニュアルHADB　コマンドリファレンスのadbimport（データのインポート）を参照してください。

■バックグラウンドインポートの実行例

HADBユーザ（ADBUSER01）が，店舗表（SHOPSLIST）に対して，バックグラウンドインポートを実行します。

adbimport -u ADBUSER01 -p '#HelloHADB_01' -k "'" -s , -g 10
          -w /home/adbmanager/tmp
          -z /home/adbmanager/imp_file/imp_opt_file.txt
          -b -m '2014/01/01-2014/01/31'
          SHOPSLIST
          /home/adbmanager/imp_file/imp_data_path.txt

メモ

■チャンクにコメントを設定する方法

マルチチャンク表に対するデータインポート時に，データが格納されるチャンクに対して，コメントを設定できます。コメントは，-mオプションで設定できます。

特定のチャンクを対象にした運用をするような場合，コメントを設定しておくと，対象とするチャンクを特定しやすくなります。

重要

バックグラウンドインポートを実行する場合，インポートオプションadb_import_rthd_numには，次の計算式を満たす値を指定してください。次の計算式を満たす値をインポートオプションadb_import_rthd_numに指定すると，バックグラウンドインポートで追加するデータの格納効率が良くなります。

計算式

インポートオプションadb_import_rthd_numの指定値 ≦
      ↑ MIN ( C × db_org  , db_org × index_num × 0.25 ) ↑＋1

変数の説明

C

バックグラウンドインポートの対象表が，ローストア表の場合は2を代入してください。カラムストア表の場合は0.5を代入してください。

db_org

バックグラウンドインポート時に使用する入力データファイルのファイルサイズ（単位：メガバイト）

index_num

バックグラウンドインポートの対象表に定義されているB-tree インデクスとテキストインデクスの数

バックグラウンドインポートを実行すると，HADBはチャンクを新規に作成し，そのチャンクにデータを格納します。バックグラウンドインポートによるデータの格納先を次の図に示します。

図11‒4　バックグラウンドインポートによるデータの格納先

［説明］

バックグラウンドインポート機能を適用したadbimportコマンドを実行すると，新規に作成されたチャンク3にデータが格納されます。その際，カレントチャンクがチャンク2からチャンク3に変更されます。

なお，チャンク3にデータを格納しているときに，チャンク1とチャンク2に格納されているデータを検索することができます。

重要

バックグラウンドインポートを実行するたびに1つのチャンクが新規に作成されるため，バックグラウンドインポートを繰り返すと，その分だけチャンク数が増加します。チャンク数が増加すると，B-treeインデクスやテキストインデクスを使用した検索時に性能が低下するおそれがあります。そのため，チャンクをマージして，チャンク数を減らすことを検討してください。チャンクをマージする場合は，「11.5.9　チャンクをマージする方法（チャンク数を減らす方法）」を参照してください。

11.5.3　アーカイブマルチチャンク表のデータを検索・更新するときの注意事項

アーカイブマルチチャンク表のデータを検索・更新するときの注意事項を説明します。

(1)　アーカイブマルチチャンク表の検索

アーカイブマルチチャンク表の検索処理を実行する際，HADBサーバは最初に各チャンクのアーカイブレンジ列の範囲とSQL文の探索条件に従って，アクセス対象となるチャンクを絞り込みます。また，アーカイブ状態のチャンク内のデータを検索する場合，インデクスを使用した検索ができません。

そのため，アーカイブマルチチャンク表を検索する場合は，SQL文中の探索条件にアーカイブレンジ列を指定した条件を指定して，アクセス対象となるチャンクを絞り込むようにしてください。詳細については，マニュアルHADB　AP開発ガイドのAPの性能向上に関する設計のアーカイブマルチチャンク表を検索する際の考慮点を参照してください。

なお，アーカイブ状態のチャンク内のデータに対して，検索する頻度が一時的に増える場合は，adbunarchivechunkコマンドでチャンクのアーカイブ状態を解除することを検討してください。

(2)　INSERT文による行の挿入

INSERT文を実行してアーカイブマルチチャンク表に行を挿入する際は特別な留意事項はありません。挿入した行データは，カレントチャンクに格納されます。

(3)　UPDATE文による行の更新

アーカイブ状態ではないチャンク内のデータはUPDATE文で更新できますが，UPDATE文の探索条件の指定に特別な規則があります。詳細については，マニュアルHADB　SQLリファレンスのUPDATE文の指定形式および規則の規則を参照してください。

また，アーカイブ状態のチャンク内のデータはUPDATE文で更新できません。アーカイブ状態のチャンク内のデータをUPDATE文で更新したい場合は，adbunarchivechunkコマンドでチャンクのアーカイブ状態を解除してください。

(4)　DELETE文による行の削除

アーカイブ状態ではないチャンク内のデータはDELETE文で削除できますが，DELETE文の探索条件の指定に特別な規則があります。詳細については，マニュアルHADB　SQLリファレンスのDELETE文の指定形式および規則の規則を参照してください。

また，アーカイブ状態のチャンク内のデータはDELETE文で削除できません。アーカイブ状態のチャンク内のデータをDELETE文で削除したい場合は，adbunarchivechunkコマンドでチャンクのアーカイブ状態を解除してください。

11.5.4　マルチチャンク表にインポートするデータを一時的に検索対象外にする方法（待機状態のチャンクの作成）

バックグラウンドインポートで格納するデータを検索対象外としておき，任意のタイミングで検索対象に変更したい場合は，adbimportコマンドに-bオプション，および--status waitオプションを指定してください。

待機状態のチャンクが作成されて，データが格納されます。その際，カレントチャンクは変更されません。また，システム表STATUS_CHUNKSにあるチャンクの作成日時，およびカレントチャンクが切り替わった日時は設定されません。

重要

待機状態のチャンクは，操作系SQLで操作できません。待機状態のチャンク内にあるデータに対して，SELECT文やUPDATE文などを実行できません。ただし，PURGE CHUNK文，およびTRUNCATE TABLE文で待機状態のチャンクを削除することはできます。待機状態のチャンクを，操作系SQLで操作したい場合は，通常状態のチャンクに変更してください。

待機状態のチャンクを通常状態のチャンク（操作系SQLの対象となるチャンク）に変更したい場合は，adbchgchunkstatusコマンドを実行してください。詳細については，「11.5.12　チャンクの状態を変更する方法」を参照してください。

adbimportコマンドで作成した待機状態のチャンクとadbchgchunkstatusコマンドを組み合わせて利用すると，任意のタイミングでデータを検索対象にしたり，検索対象外にしたりする運用を行うこともできます。詳細については，「11.5.24　バックグラウンドインポートとチャンクを意識した運用例2（待機状態のチャンクを利用した運用）」を参照してください。

メモ

システム表STATUS_CHUNKSの詳細については，「付録C.5　STATUS_CHUNKSの内容」を参照してください。

adbimportコマンドに-bオプション，および--status waitオプションを指定して，バックグラウンドインポートを実行する例を次に示します。

adbimportコマンドの指定形式については，マニュアルHADB　コマンドリファレンスのadbimport（データのインポート）を参照してください。

■待機状態のチャンクを作成するバックグラウンドインポートの実行例

HADBユーザ（ADBUSER01）が，店舗表（SHOPSLIST）に対して，検索対象外のデータをバックグラウンドインポートで格納します。

adbimport -u ADBUSER01 -p '#HelloHADB_01' -k "'" -s , -g 10
          -w /home/adbmanager/tmp
          -z /home/adbmanager/imp_file/imp_opt_file.txt
          -b --status wait
          -m '2014/06/01-2014/06/30'
          SHOPSLIST
          /home/adbmanager/imp_file/imp_data_path.txt

待機状態のチャンクを作成するバックグラウンドインポートを実行すると，HADBは待機状態のチャンクを新規に作成し，そのチャンクにデータを格納します。待機状態のチャンクを作成するバックグラウンドインポートを次の図に示します。

図11‒5　待機状態のチャンクを作成するバックグラウンドインポート

［説明］

バックグラウンドインポート機能を適用したadbimportコマンドを実行して待機状態のチャンクを作成すると，新規に作成された待機状態のチャンク（チャンク3）にデータが格納されます。その際，カレントチャンクはチャンク2のままです。

なお，チャンク3にデータを格納しているときに，チャンク1とチャンク2に格納されているデータを検索できます。また，チャンク3は待機状態のチャンクであるため，操作系SQLで操作できません。

重要

-bオプションおよび--status waitオプションを指定して，バックグラウンドインポートを実行するたびに，待機状態のチャンクが1つ新規に作成されます。そのため，バックグラウンドインポートを繰り返すと，その分だけ待機状態のチャンク数が増加します。待機状態のチャンク数が増加すると，adbidxrebuildコマンドの実行に時間が掛かるおそれがあります。インデクスの再作成処理では，通常状態のチャンクだけでなく，待機状態のチャンクも対象となるためです。待機状態のチャンクが大量にある場合は，チャンクをマージして，待機状態のチャンク数を減らすことを検討してください。待機状態のチャンクをマージする場合は，「11.5.9　チャンクをマージする方法（チャンク数を減らす方法）」を参照してください。

11.5.5　チャンク単位にデータをエクスポートする方法

マルチチャンク表に格納されているデータをチャンク単位でファイルに出力する場合，次に示す2つの方法があります。どちらの方法も，出力したいチャンクのチャンクIDを指定する必要があります。

-cオプションにチャンクIDを指定してadbexportコマンドを実行する

マルチチャンク表に格納されているデータをチャンク単位でファイルに出力する場合は，-cオプションにチャンクIDを指定してadbexportコマンドを実行してください。なお，adbexportコマンドは，HADBサーバで実行できますが，HADBクライアントでは実行できません。

adbexportコマンドについては，マニュアルHADB　コマンドリファレンスのadbexport（データのエクスポート）を参照してください。

adbsqlコマンドのサブコマンド#GETDATAを実行する

マルチチャンク表に格納されているデータをチャンク単位でファイルに出力する場合は，adbsqlコマンドのサブコマンド#GETDATAを実行してください。出力対象のチャンクのチャンクIDを指定して#GETDATAを実行し，実行結果をリダイレクションすると，実行結果をファイルに出力できます。なお，adbsqlコマンドは，HADBサーバおよびHADBクライアント（Linux版）で実行できます。

adbsqlコマンドについては，マニュアルHADB　コマンドリファレンスのadbsql（SQLの実行）を参照してください。

メモ

上記2つの方法のうち，adbexportコマンドを使用することを推奨します。adbexportコマンドを使用した方が，adbsqlコマンドよりも，短時間でデータを出力できます。HADBクライアント（Linux版）で，マルチチャンク表のデータをファイルに出力する必要がある場合に限り，adbsqlコマンドを使用してください。

上記2つの方法で，データを出力できるチャンクの種類は次のとおりです。

データを出力できるチャンクの種類

通常状態のチャンク

待機状態のチャンク

上記2つの方法の場合，通常状態のチャンクだけでなく，待機状態のチャンクについてもデータを出力できます。なお，「11.1.11　実表のデータをファイルに出力する方法（データをエクスポートする方法）」の場合，待機状態のチャンクについては，データを出力できません。

adbexportコマンドまたはadbsqlコマンドで，チャンク単位にデータを出力する手順を，それぞれ次に示します。

重要

adbmergechunkコマンドでマージ処理中のチャンクのデータは，ファイルに出力しないことを推奨します。adbmergechunkコマンドによるチャンクのマージ処理が完了したあとに，チャンク内のデータをファイルに出力するようにしてください。adbmergechunkコマンドでマージ処理中のチャンクのデータを出力した場合，マージ処理のタイミングによって，ファイルに出力されるデータが異なります。詳細については，「11.5.9　チャンクをマージする方法（チャンク数を減らす方法）」の「(4)　adbmergechunkコマンド実行中に検索対象となるチャンク」を参照してください。

■出力手順（-cオプションを指定したadbexportコマンドを実行する場合）

出力したいチャンクのチャンクIDを確認する

adbexportコマンドの-cオプションに指定するチャンクIDを確認してください。チャンクIDの情報は，システム表のSTATUS_CHUNKSに格納されています。

チャンクIDを確認する方法については，「付録C.9　システム表の検索」を参照してください。

adbexportコマンドを実行する

確認したチャンクIDを基に-cオプションを指定したadbexportコマンドを実行して，出力したいチャンクに格納されたデータを出力してください。

また，GZIP形式で圧縮されたファイル（CSV形式）として出力したい場合は，--compress GZIPオプションも指定してください。

adbexportコマンドについては，マニュアルHADB　コマンドリファレンスのadbexport（データのエクスポート）を参照してください。

■出力手順（adbsqlコマンドのサブコマンド#GETDATAを実行する場合）

出力したいチャンクのチャンクIDを確認する

adbsqlコマンドのサブコマンド#GETDATAのCHUNKIDに指定するチャンクIDを確認してください。チャンクIDの情報は，システム表のSTATUS_CHUNKSに格納されています。

チャンクIDを確認する方法については，「付録C.9　システム表の検索」を参照してください。

adbsqlコマンドを実行する

確認したチャンクIDを基にadbsqlコマンドのサブコマンド#GETDATAを実行して，出力したいチャンクに格納されたデータを出力してください。

adbsqlコマンドのサブコマンド#GETDATAについては，マニュアルHADB　コマンドリファレンスのadbsql（SQLの実行）のadbsqlサブコマンドを参照してください。

11.5.6　チャンク単位にデータを削除する方法

チャンク単位にデータを削除する場合は，PURGE CHUNK文を実行してください。PURGE CHUNK文を使用したデータの削除方法を次に示します。

削除手順

削除したいチャンクのチャンクIDを確認する

PURGE CHUNK文を実行してチャンク単位でデータを削除するため，削除したいチャンクのチャンクIDを確認してください。チャンクIDの情報は，システム表のSTATUS_CHUNKSに格納されています。

チャンクIDを確認する方法については，「付録C.9　システム表の検索」を参照してください。

PURGE CHUNK文を実行する

確認したチャンクIDを基にPURGE CHUNK文を実行して，削除したいチャンクを削除してください。

なお，カレントチャンクは削除できません。

PURGE CHUNK文については，マニュアルHADB　SQLリファレンスのPURGE CHUNK（チャンク内の全行削除）を参照してください。

PURGE CHUNK文のWHERE句に条件（IN述語，限定述語）を指定して，条件に合致するチャンクを一括して削除することができます。PURGE CHUNK文の指定方法の例については，マニュアルHADB　SQLリファレンスのPURGE CHUNK（チャンク内の全行削除）のPURGE CHUNK文の指定形式および規則の例題を参照してください。

メモ

PURGE CHUNK文でチャンクを削除すると，チャンクが利用していた格納領域を再利用できます。

アーカイブ状態のチャンクを削除した場合，対象のアーカイブファイルも削除されます。

11.5.7　マルチチャンク表に格納されているデータを一括削除する方法

マルチチャンク表に格納されているデータを一括削除する場合は，TRUNCATE TABLE文を実行してください。

TRUNCATE TABLE文を使用した実表の全行削除については，「11.1.8　実表の全行を削除する方法」を参照してください。

メモ

TRUNCATE TABLE文を実行すると，マルチチャンク表内のすべてのチャンクが削除されます。そのあとで，空のチャンクが1つ作成されます。

マルチチャンク表に定義したインデクスのチャンクについてもすべて削除されます。

アーカイブ状態のチャンクがある場合，対象のアーカイブファイルも削除されます。

11.5.8　チャンクの状態や作成されているチャンク数を確認する方法

ここでは，マルチチャンク表に作成されたチャンクの状態や，作成されているチャンク数を確認する方法について説明します。

チャンクの情報（チャンクの状態やチャンク数）は，次に示す方法で確認できます。

adbdbstatusコマンドを実行する

ディクショナリ表のSQL_TABLESを検索する

システム表のSTATUS_CHUNKSを検索する

ディクショナリ表のSQL_COLUMNSを検索する

ディクショナリ表のSQL_INDEXESを検索する

チャンクの情報を確認する方法を次に示します。

(1)　adbdbstatusコマンドを実行する場合

adbdbstatusコマンドを実行すると，次に示すチャンクの情報を確認できます。

「DBエリアのサマリ情報」で確認できるチャンクの情報

-c dbareaオプションを指定してadbdbstatusコマンドを実行してください。コマンドの実行結果から，マルチチャンク表に関する次の情報を確認できます。

Creatable_chunks（DBエリア内に作成できるチャンク数の上限）

Created_chunks（DBエリア内に格納されている表およびインデクスのチャンク数の最大値の合計）

「表のサマリ情報」で確認できるチャンクの情報

-c tableオプションを指定してadbdbstatusコマンドを実行してください。コマンドの実行結果から，マルチチャンク表に関する次の情報を確認できます。

Creatable_chunks（実表に作成できるチャンク数）

Created_chunks（実表に作成されたチャンク数）

Current_chunk_ID（実表のカレントチャンクID）

Storage_format（表データの格納形式）

また，アーカイブマルチチャンク表の場合は，コマンドの実行結果から次の情報も確認できます。

Archive_chunks（アーカイブ状態のチャンク数）

「アーカイブ状態のチャンクのサマリ情報」で確認できるチャンクの情報

-c archivechunkオプションを指定してadbdbstatusコマンドを実行してください。コマンドの実行結果から，アーカイブマルチチャンク表に関する次の情報を確認できます。

Chunk_ID（チャンクID）

Chunk_status（チャンクの状態）

Archive_status（チャンクのアーカイブ状態）

Range_min（アーカイブレンジ列の最小値）

Range_max（アーカイブレンジ列の最大値）

Rows（アーカイブ状態のチャンクに格納されている行数）

Archive_file_num（アーカイブ状態のチャンクに対応しているアーカイブファイル数の合計値）

Archive_file_size（アーカイブ状態のチャンクに対応している全アーカイブファイルのファイルサイズの合計値）

Unarchive_table_size（アーカイブ状態になる前のチャンクで，表を格納するために使用していたセグメントの容量）

Unarchive_index_size（アーカイブ状態になる前のチャンクで，インデクスを格納するために使用していたセグメントの容量）

Compression_ratio（アーカイブ状態のチャンクの圧縮率）

Chunk_comment（チャンクに設定されたコメント）

「DBエリア，表とインデクスの使用量情報」で確認できるチャンクの情報

-d usedオプションを指定してadbdbstatusコマンドを実行してください。コマンドの実行結果から，マルチチャンク表に関する次の情報を確認できます。

Chunk_ID（チャンクID）

Chunk_create_time（チャンクの作成日時）

Chunk_swap_time（カレントチャンクが切り替わった日時）

Chunk_status（チャンクの状態）

また，Chunk_IDをキーにすると，次の情報も確認できます。

Used_segments（チャンクごとの使用中セグメント数）

Used_pages（チャンクごとの使用中ページ数）

Storage_format（チャンク内のデータ格納形式）

「アーカイブ状態のチャンクの使用量情報」で確認できるチャンクの情報

-d usedオプションと-c archivechunkオプションを指定して，adbdbstatusコマンドを実行してください。コマンドの実行結果から，アーカイブマルチチャンク表に関する次の情報を確認できます。

Chunk_status（チャンクの状態）

Range_min（アーカイブレンジ列の最小値）

Range_max（アーカイブレンジ列の最大値）

Archive_file_name（アーカイブファイルのファイル名）

Archive_file_size（アーカイブファイルのファイルサイズ）

adbdbstatusコマンドについては，マニュアルHADB　コマンドリファレンスのadbdbstatus（データベースの状態解析）を参照してください。

(2)　ディクショナリ表SQL_TABLESを検索する場合

SQL_TABLES表をSELECT文で検索すると，次に示すチャンクの情報を確認できます。

IS_CHUNK（マルチチャンク表かどうか）

N_CHUNK_RESERVED（チャンク数の最大値）

また，アーカイブマルチチャンク表の場合は，次に示す情報も確認できます。

IS_ARCHIVABLE（アーカイブマルチチャンク表かどうか）

ARCHIVE_DIRECTORY_PATH（アーカイブディレクトリの絶対パス）

SQL_TABLES表については，「付録B.2　SQL_TABLESの内容」を参照してください。

SQL_TABLES表を検索する方法については，「付録B.24　ディクショナリ表の検索」を参照してください。

(3)　システム表STATUS_CHUNKSを検索する場合

STATUS_CHUNKS表をSELECT文で検索すると，次に示すチャンクの情報を確認できます。

CHUNK_ID（チャンクID）

CREATE_TIME（チャンクの作成日時）

SWAP_TIME（カレントチャンクが切り替わった日時）

CHUNK_COMMENT（チャンクに設定されたコメント）

CHUNK_STATUS（チャンクの状態）

STORAGE_FORMAT（チャンク内のデータ格納形式）

また，アーカイブマルチチャンク表の場合は，次に示す情報も確認できます。

ARCHIVE_STATUS（チャンクのアーカイブ状態）

STATUS_CHUNKS表については，「付録C.5　STATUS_CHUNKSの内容」を参照してください。

STATUS_CHUNKS表を検索する方法については，「付録C.9　システム表の検索」を参照してください。

(4)　ディクショナリ表SQL_COLUMNSを検索する場合

アーカイブマルチチャンク表の場合は，SQL_COLUMNS表をSELECT文で検索すると，次に示すチャンクの情報を確認できます。

IS_ARCHIVE_RANGE_COLUMN（アーカイブレンジ列かどうか）

SQL_COLUMNS表については，「付録B.3　SQL_COLUMNSの内容」を参照してください。

SQL_COLUMNS表を検索する方法については，「付録B.24　ディクショナリ表の検索」を参照してください。

(5)　ディクショナリ表SQL_INDEXESを検索する場合

アーカイブマルチチャンク表の場合は，SQL_INDEXES表をSELECT文で検索すると，次に示すチャンクの情報を確認できます。

IS_ARCHIVE_RANGE（アーカイブレンジ列に対して自動的に定義されたレンジインデクスかどうか）

SQL_INDEXES表については，「付録B.5　SQL_INDEXESの内容」を参照してください。

SQL_INDEXES表を検索する方法については，「付録B.24　ディクショナリ表の検索」を参照してください。

11.5.9　チャンクをマージする方法（チャンク数を減らす方法）

バックグラウンドインポートを繰り返してチャンク数が増加すると，B-treeインデクスやテキストインデクスを使用した検索時に性能が低下するおそれがあります。インデクスがチャンクごとに分割されると，インデクスのデータの総容量が増え，I/O回数がチャンク数に比例して増加するためです。

そのため，チャンク数が増えた場合は，adbmergechunkコマンドでチャンクをマージして，チャンク数を減らすことを検討してください。

(1)　チャンクの状態に関する留意事項

次に示すチャンクをマージできます（状態が同じである複数のチャンクをマージできます）。

レギュラーマルチチャンク表の場合

複数の通常状態のチャンクを，1つの通常状態のチャンクにマージできます。

複数の待機状態のチャンクを，1つの待機状態のチャンクにマージできます。

アーカイブマルチチャンク表の場合

通常状態でアーカイブ状態ではない複数のチャンクを，通常状態でアーカイブ状態ではない1つのチャンクにマージできます。

通常状態でアーカイブ状態の複数のチャンクを，通常状態でアーカイブ状態の1つのチャンクにマージできます。

待機状態でアーカイブ状態ではない複数のチャンクを，待機状態でアーカイブ状態ではない1つのチャンクにマージできます。

待機状態でアーカイブ状態の複数のチャンクを，待機状態でアーカイブ状態の1つのチャンクにマージできます。

重要

通常状態のチャンクと待機状態のチャンクを，マージすることはできません。

アーカイブ状態ではないチャンクとアーカイブ状態のチャンクを，マージすることはできません。

(2)　カラムストア表のチャンクをマージする場合の留意事項

次に示す条件をすべて満たす場合は，マージ元チャンクの再編成を実行したあとにチャンクをマージしてください。

adbmergechunkコマンドの対象表がカラムストア表である

マージ元チャンクのデータに対して更新系SQLを実行したことがある

チャンクをマージしたあとにマージ先チャンクの再編成を実行した場合，次に示す影響があります。

再編成時に必要なファイルの容量やデータ用DBエリアの空き領域がより必要になる

再編成に掛かる時間が長くなる

マージ元チャンクのデータに対して更新系SQLを実行したことがあるかどうかは，adbdbstatusコマンドを実行して，再編成要否の情報を取得して確認してください。取得した情報のうち，次のどちらかの値が1以上の場合は，対象のチャンクに対して更新系SQLが実行されたことを示しています。

Base_row_pages（ローデータ用セグメントに含まれる基本行用ページのページ数）

Invalid_row_information_pages（ローデータ用セグメントに含まれる無効情報管理用ページのページ数）

adbdbstatusコマンドについては，マニュアルHADB　コマンドリファレンスのadbdbstatus（データベースの状態解析）を参照してください。

(3)　adbmergechunkコマンドによるチャンクのマージ

adbmergechunkコマンドを使用してチャンクをマージする例を次に示します。

adbmergechunkコマンドについては，マニュアルHADB　コマンドリファレンスのadbmergechunk（チャンクのマージ）を参照してください。

■チャンクのマージの実行例

HADBユーザ（ADBUSER01）が，店舗表（SHOPSLIST）の2つのチャンク（チャンクIDが1および2）をマージします。

adbmergechunk -u ADBUSER01 -p '#HelloHADB_01' -g 2
              -w /home/adbmanager/tmp
              -z /home/adbmanager/merge_file/merge_opt_file.txt
              -m 'January 2014'
              -c 1,2
              SHOPSLIST

図11‒6　マージチャンク処理の例

［説明］

adbmergechunkコマンドを実行すると，マージ元チャンクである2つのチャンク（チャンクIDが1および2）が，1つのチャンク（チャンクIDが4）にマージされます。マージが完了すると，マージ元チャンクは削除されます。

メモ

■削除仕掛中のチャンク

実行中のadbmergechunkコマンドが，マージ先チャンクの完成からマージ元チャンクの削除完了までの間に中断した場合，マージ元チャンクの状態は「削除仕掛中」となります。このとき，マージ元チャンクは削除されないで残ります。adbcancelコマンドを実行したとき，HADBサーバでメモリ不足が発生したときなどが該当します。

また，adbmergechunkコマンドの--purge-chunkオプションにNOWAITを指定して実行した場合，マージ先チャンクの完成からマージ元チャンクの削除開始までの間に，マージチャンク対象の表を参照している処理が存在したときも，マージ元チャンクの状態は「削除仕掛中」となります。そのため，マージ元チャンクは削除されないで残ります。

「削除仕掛中」となったマージ元チャンクは手動で削除する必要があります。

手動でマージ元チャンクを削除する場合は，「付録C.9　システム表の検索」の「(12)　削除仕掛中のチャンクを調べる場合」を参照してマージ元チャンクのチャンクIDを調べ，PURGE CHUNK文で削除してください。

なお，PURGE CHUNK文のWHERE句に条件（IN述語，限定述語）を指定して，「削除仕掛中」のチャンクを一括して削除することができます。PURGE CHUNK文の指定方法の例については，マニュアルHADB　SQLリファレンスのPURGE CHUNK（チャンク内の全行削除）のPURGE CHUNK文の指定形式および規則の例題を参照してください。

■チャンクのマージに伴うインデクスのデータ量の一時的な増加

adbmergechunkコマンドの実行中は，マージ元チャンクのインデクスのデータ，およびマージ先チャンクのインデクスのデータの両方が一時的に存在するときがあります。そのため，インデクスのデータ量が一時的に増加します。

このとき，実行中のadbmergechunkコマンドを中断し，削除仕掛中のチャンクが残ると，一時的に作成されたインデクスのデータも残るため，削除仕掛中のチャンクを手動で削除する必要があります。

■マージ元チャンクの削除と検索処理・更新処理の関係

adbmergechunkコマンドは，マージ先チャンクが完成したタイミングで，マージチャンク対象の表に対する検索処理（SQL文，adbexportコマンド，--shared-lockオプションを指定したadbdbstatusコマンドなど）の存在有無を確認します。検索処理が存在した場合は，確認したすべての検索処理の完了を待ってから，マージ元チャンクの削除を行います。そのため，検索処理によっては，マージ元チャンクの削除を行うまでに時間が掛かることがあります。なお，マージ先チャンクが完成したタイミング以降の検索処理については，マージ元チャンクの削除に影響しません。

また，マージ先チャンクの完成後，マージ元チャンクの削除完了を待たないで，マージチャンク対象の表に対して更新処理を行いたい場合は，adbmergechunkコマンドをadbcancelコマンドでキャンセルしてください。キャンセルすると，マージチャンク対象の表を更新できるようになります。

ただし，マージ元チャンクの状態は「削除仕掛中」となり，マージ元チャンクは削除されないで残ります。「削除仕掛中」となったマージ元チャンクは手動で削除してください。

■システム用のチャンク

データ用DBエリアには，通常のチャンクとは別にシステム用のチャンクが存在します。システム用のチャンクは，実表やデータ用DBエリアに作成できるチャンクがない状態でもadbmergechunkコマンドを実行できるようにするためのチャンクです。

実表やデータ用DBエリアに作成できるチャンクがない状態でadbmergechunkコマンドを実行した場合，マージ先チャンクとしてシステム用のチャンクが使用されます。そして，マージ元チャンクが削除されたときに，削除されたチャンクの1つがシステム用のチャンクとなります。

(4)　adbmergechunkコマンド実行中に検索対象となるチャンク

adbmergechunkコマンドの実行中に，チャンクIDを指定した検索（-cオプションを指定したadbexportコマンドやadbsqlコマンドのサブコマンド#GETDATAなど）を実行した場合，検索対象となるチャンクを次の表に示します。

表11‒4　adbmergechunkコマンド実行中に検索対象となるチャンク

項番

adbmergechunkコマンドの処理状況

検索対象のチャンク

検索の可否

1

コマンド開始からマージ先チャンクの完成前まで

KFAA90000-Iメッセージ（adbmergechunkコマンドの処理の開始）の出力から，KFAA51242-Iメッセージ（マージ先チャンクの作成）の出力まで

マージ元チャンク

○

マージ先チャンク

×

マージ対象外のチャンク

○

2

マージ先チャンクの完成からマージ元チャンクの削除前まで

KFAA51242-Iメッセージ（マージ先チャンクの作成）の出力から，KFAA80243-Iメッセージ（マージ元チャンクの削除）の出力まで

マージ元チャンク（削除仕掛中）

×

マージ先チャンク

○

マージ対象外のチャンク

○

3

マージ元チャンクの削除完了からコマンド終了まで

KFAA80243-Iメッセージ（マージ元チャンクの削除）の出力から，KFAA90001-Iメッセージ（adbmergechunkコマンドの処理の終了）の出力まで

マージ元チャンク

×

マージ先チャンク

○

マージ対象外のチャンク

○

（凡例）

○：検索できます。

×：検索対象外のため，検索結果は0件となります。

(5)　待機状態のチャンクをマージする場合の注意点

複数の待機状態のチャンク（マージ元チャンク）をマージした場合，マージ先チャンクは待機状態のチャンクとなります。その際，カレントチャンクは変更されません。

また，待機状態のチャンクをマージした場合，マージするチャンクの状態の組み合わせによって，システム表STATUS_CHUNKSにあるチャンクの作成日時，およびカレントチャンクが切り替わった日時に設定される情報が異なります。詳細を次に示します。

メモ

システム表STATUS_CHUNKSの詳細については，「付録C.5　STATUS_CHUNKSの内容」を参照してください。

(a)　過去に通常状態になったことがない待機状態のチャンクだけをマージしたとき

過去に通常状態になったことがない待機状態のチャンクだけをマージしたときは，マージ先チャンクに，チャンクの作成日時およびカレントチャンクが切り替わった日時は設定されません。

図11‒7　過去に通常状態になったことがない待機状態のチャンクだけをマージした例

［説明］

過去に通常状態になったことがない待機状態のチャンク（チャンク1と2）をマージすると，マージ先チャンクとして待機状態のチャンク（チャンク4）が作成されます。

その際，カレントチャンクは変更されません。また，チャンク4に，チャンクの作成日時およびカレントチャンクが切り替わった日時は設定されません。

(b)　過去に通常状態になったことがある待機状態のチャンクだけをマージしたとき

過去に通常状態になったことがある待機状態のチャンクだけをマージしたときは，マージ先チャンクに，チャンクの作成日時およびカレントチャンクが切り替わった日時が設定されます。

図11‒8　過去に通常状態になったことがある待機状態のチャンクだけをマージした例

［説明］

過去に通常状態になったことがある待機状態のチャンク（チャンク1と2）をマージすると，マージ先チャンクとして待機状態のチャンク（チャンク4）が作成されます。

その際，カレントチャンクは変更されません。また，チャンク4に，チャンクの作成日時およびカレントチャンクが切り替わった日時が設定されます。

チャンクの作成日時に設定される情報

マージ元チャンクの「チャンクの作成日時」のうち，最も古い日時が設定されます。

カレントチャンクが切り替わった日時に設定される情報

マージ元チャンクの「カレントチャンクが切り替わった日時」のうち，最も新しい日時が設定されます。

(c)　過去に通常状態になったことがない待機状態のチャンクと，過去に通常状態になったことがある待機状態のチャンクをマージしたとき

過去に通常状態になったことがない待機状態のチャンクと，過去に通常状態になったことがある待機状態のチャンクをマージしたときは，マージ先チャンクに，チャンクの作成日時およびカレントチャンクが切り替わった日時が設定されます。

図11‒9　過去に通常状態になったことがない待機状態のチャンクと，過去に通常状態になったことがある待機状態のチャンクをマージした例

［説明］

過去に通常状態になったことがない待機状態のチャンク（チャンク1）と，過去に通常状態になったことがある待機状態のチャンク（チャンク2）をマージすると，マージ先チャンクとして待機状態のチャンク（チャンク4）が作成されます。

その際，カレントチャンクは変更されません。また，チャンク4に，チャンクの作成日時およびカレントチャンクが切り替わった日時が設定されます。

チャンクの作成日時に設定される情報

マージ元チャンクの「チャンクの作成日時」のうち，最も古い日時が設定されます。

カレントチャンクが切り替わった日時に設定される情報

マージ元チャンクの「カレントチャンクが切り替わった日時」のうち，最も新しい日時が設定されます。

重要

過去に通常状態になったことがない待機状態のチャンクと，過去に通常状態になったことがある待機状態のチャンクをマージした場合，マージ先チャンク（待機状態のチャンク）を通常状態のチャンクに変更しても，カレントチャンクにはなりません。

そのため，過去に通常状態になったことがない待機状態のチャンクと，過去に通常状態になったことがある待機状態のチャンクをマージすることは推奨しません。

(6)　adbmergechunkコマンドの--purge-chunkオプション指定時の考慮点

ここでは，adbmergechunkコマンドに--purge-chunkオプションを指定する場合の考慮点について説明します。

--purge-chunkオプションには，WAITまたはNOWAITのどちらかを指定できます。通常は，WAITを指定してください（または，--purge-chunkオプションの指定を省略してください）。

--purge-chunkオプションにWAITを指定してadbmergechunkコマンドを実行すると，マージチャンク処理は次の順番で行われます。--purge-chunkオプションの指定を省略した場合も同様です。

■--purge-chunkオプションにWAITを指定した場合のマージチャンク処理

複数のチャンク（マージ元チャンク）が，1つのチャンク（マージ先チャンク）にマージされます。

マージ完了後に，ほかのSQL文やコマンドによるマージチャンク対象表を参照する処理が存在しない場合は，マージ元チャンクが削除されます。

なお，ほかのSQL文やコマンドによるマージチャンク対象表を参照する処理が存在する場合は，マージ元チャンクの削除を待ちます。マージチャンク対象表を参照する処理が1つも存在しない状況になったら，マージ元チャンクが削除されます。

マージ元チャンクの削除が完了すると，adbmergechunkコマンドが終了します。

--purge-chunkオプションにWAITを指定すると，上記のとおり，マージ元チャンクの削除を待つことがあります。マージ元チャンクの削除を待つ間は，adbmergechunkコマンドが終了しません。そのため，マージチャンク対象表を更新する処理は実行できません。例えば，adbimportコマンドによるバックグラウンドインポートなどは実行できません。

ほかのSQL文やコマンドによるマージチャンク対象表を参照する処理が存在することで，adbmergechunkコマンドがマージ元チャンクの削除を待つと困る場合は，--purge-chunkオプションにNOWAITを指定することを検討してください。--purge-chunkオプションにNOWAITを指定してadbmergechunkコマンドを実行すると，マージチャンク処理は次の順番で行われます。

■--purge-chunkオプションにNOWAITを指定した場合のマージチャンク処理

複数のチャンク（マージ元チャンク）が，1つのチャンク（マージ先チャンク）にマージされます。

マージ完了後に，ほかのSQL文やコマンドによるマージチャンク対象表を参照する処理が存在しない場合は，2.に進みます。

ほかのSQL文やコマンドによるマージチャンク対象表を参照する処理が存在する場合は，3.に進みます。

ほかのSQL文やコマンドによるマージチャンク対象表を参照する処理が存在しない場合は，マージ元チャンクが削除されます。

マージ元チャンクの削除が完了すると，adbmergechunkコマンドが終了します。

ほかのSQL文やコマンドによるマージチャンク対象表を参照する処理が存在する場合は，マージ元チャンクの削除を行わないで，adbmergechunkコマンドが終了します。

マージ元チャンクは削除されないため，削除仕掛中のチャンクとして残ります。

--purge-chunkオプションにNOWAITを指定すると，上記のとおり，マージ元チャンクの削除を行わないでadbmergechunkコマンドが終了することがあります。adbmergechunkコマンドは終了するため，マージチャンク対象表を更新する処理を実行できます。例えば，adbimportコマンドによるバックグラウンドインポートなどが実行できます。このように，--purge-chunkオプションにNOWAITを指定すると，ほかのSQL文やコマンドによるマージチャンク対象表を参照する処理が存在することで，adbmergechunkコマンドがマージ元チャンクの削除を待つというケースを防げます。

ただし，マージ元チャンクは削除されないで削除仕掛中のチャンクとして残るため，PURGE CHUNK文で削除する必要があります。マージ元チャンクを削除しないと，adbmergechunkコマンドを実行できません。また，残っているマージ元チャンクの数だけ，作成できるチャンク数が減ります。adbmergechunkコマンドが終了したあとで，任意のタイミングで，マージ元チャンクをPURGE CHUNK文で削除してください。マージ元チャンクを削除する場合は，「付録C.9　システム表の検索」の「(12)　削除仕掛中のチャンクを調べる場合」を参照して，マージ元チャンクのチャンクIDを調べてください。そして，調べたチャンクIDを基にPURGE CHUNK文で，マージ元チャンクを削除してください。なお，マージ元チャンクのチャンクIDは，KFAA96785-Eメッセージで調べることもできます。

重要

adbmergechunkコマンドの終了後から次のadbmergechunkコマンドを実行するまでの間に，残っているマージ元チャンクをPURGE CHUNK文で削除するタイミングが存在しない場合は，--purge-chunkオプションにNOWAITを指定しないでください。マージ元チャンクが残っているマージチャンク対象表を参照・更新する処理が存在する場合には，PURGE CHUNK文は実行できません。

11.5.10　チャンク数の最大値を変更する方法

マルチチャンク表の定義時に指定したチャンク数の最大値（CHUNKの指定値）を変更する場合は，ALTER TABLE文を実行してください。変更手順を次に示します。

手順

マルチチャンク表の定義時に指定したチャンク数の最大値を確認する

「付録B.24　ディクショナリ表の検索」の「(14)　全マルチチャンク表に作成されるチャンク数の最大値を調べる場合」を参照して，マルチチャンク表の定義時に指定したチャンク数の最大値を確認してください。

ALTER TABLE文でチャンク数の最大値を変更する

ALTER TABLE文の指定例を次に示します。

指定例

店舗表（SHOPSLIST）のチャンク数の最大値を500に変更します。

ALTER TABLE "SHOPSLIST"
      CHANGE OPTION CHUNK=500

重要

ALTER TABLE文のCHANGE OPTION CHUNKに指定する値については，「5.2.4　マルチチャンク表を定義する場合の考慮点」の「(4)　チャンク数の最大値の求め方」を参照して求めてください。

ALTER TABLE文のCHANGE OPTION CHUNKに指定する値が「5.6.2　データ用DBエリアにマルチチャンク表を格納する場合の考慮点」で説明している1つのデータ用DBエリアが管理できるチャンク数の上限を超えないかどうかを確認してください。

11.5.11　チャンクのコメントを変更する方法

チャンクのコメントを変更（新規設定，削除も含む）する場合は，adbchgchunkcommentコマンドを実行してください。変更手順を次に示します。

手順

コメントを変更したいチャンクのチャンクIDを調べる

「付録C.9　システム表の検索」の「(11)　指定したコメントが含まれているチャンクを調べる場合」を参照して，コメントを変更したいチャンクのチャンクIDを確認してください。

adbchgchunkcommentコマンドでコメントを変更する

手順1.で確認したチャンクIDを基に，adbchgchunkcommentコマンドを使用して，チャンクに設定したコメントを変更してください。adbchgchunkcommentコマンドの指定例を次に示します。

指定例

HADBユーザ（ADBUSER01）が，店舗表（SHOPSLIST）のチャンク（チャンクIDが5）に対するコメントを，「'2014/09/01-2014/09/30'」に変更します。

adbchgchunkcomment -u ADBUSER01 -p '#HelloHADB_01'
                   -m '2014/09/01-2014/09/30'
                   -c 5 SHOPSLIST

これで，チャンクに設定したコメントを変更できます。

メモ

adbchgchunkcommentコマンドについては，マニュアルHADB　コマンドリファレンスのadbchgchunkcomment（チャンクのコメントの設定・変更・削除）を参照してください。

11.5.12　チャンクの状態を変更する方法

チャンクの状態を変更する場合，adbchgchunkstatusコマンドを実行してください。adbchgchunkstatusコマンドについては，マニュアルHADB　コマンドリファレンスのadbchgchunkstatus（チャンクの状態変更）を参照してください。また，チャンクの状態の詳細については，「2.14.2　データインポート単位のデータ管理（チャンク）」の「(4)　チャンクの状態変更」を参照してください。

adbchgchunkstatusコマンドを実行すると，次に示すチャンクの状態変更ができます。

待機状態のチャンクを通常状態のチャンクに変更する

adbchgchunkstatusコマンドに，-nオプションを指定します。

通常状態のチャンクを待機状態のチャンクに変更する

adbchgchunkstatusコマンドに，-wオプションを指定します。

重要

adbchgchunkstatusコマンドの-nオプションおよび-wオプションは，同時に指定できます。

チャンクをアーカイブ状態にする場合は，adbarchivechunkコマンドを実行します。また，チャンクのアーカイブ状態を解除する場合は，adbunarchivechunkコマンドを実行します。

詳細については，「11.5.17　チャンクをアーカイブする方法（アーカイブマルチチャンク表使用時）」および「11.5.18　チャンクをアンアーカイブする方法（アーカイブマルチチャンク表使用時）」を参照してください。

メモ

adbimportコマンドによるバックグラウンドインポートで待機状態のチャンクを作成する方法については，「11.5.4　マルチチャンク表にインポートするデータを一時的に検索対象外にする方法（待機状態のチャンクの作成）」を参照してください。

adbimportコマンドで作成した待機状態のチャンクとadbchgchunkstatusコマンドを組み合わせて利用すると，任意のタイミングでデータを検索対象にしたり，検索対象外にしたりする運用を行うこともできます。詳細については，「(4)　運用例（チャンク内のデータを入れ替える）」を参照してください。

(1)　adbchgchunkstatusコマンドによるチャンクの状態変更

adbchgchunkstatusコマンドを使用して，チャンクの状態を変更する手順を次に示します。

■チャンクの状態を変更する手順

状態を変更したいチャンクのチャンクIDを調べる

「付録C.9　システム表の検索」の「(13)　通常状態のチャンクを調べる場合」または「(14)　待機状態のチャンクを調べる場合」を参照して，状態を変更したいチャンクのチャンクIDを確認してください。

adbchgchunkstatusコマンドでチャンクの状態を変更する

手順1.で確認したチャンクIDを基に，adbchgchunkstatusコマンドを使用して，チャンクの状態を変更してください。adbchgchunkstatusコマンドの指定例を次に示します。

指定例1（待機状態のチャンクを通常状態のチャンクに変更する）

HADBユーザ（ADBUSER01）が，店舗表（SHOPSLIST）の待機状態のチャンク（チャンクIDが1）を，通常状態のチャンクに変更します。

adbchgchunkstatus -u ADBUSER01 -p '#HelloHADB_01'
                  -n 1 SHOPSLIST

重要

待機状態のチャンクが大量にある場合，状態を変更する前に，待機状態のチャンクをマージしてチャンク数を減らしてください。通常状態のチャンクが大量になると，検索性能が低下するおそれがあります。チャンクをマージする場合は，「11.5.9　チャンクをマージする方法（チャンク数を減らす方法）」を参照してください。

指定例2（通常状態のチャンクを待機状態のチャンクに変更する）

HADBユーザ（ADBUSER01）が，店舗表（SHOPSLIST）の通常状態のチャンク（チャンクIDが2）を，待機状態のチャンクに変更します。

adbchgchunkstatus -u ADBUSER01  -p '#HelloHADB_01'
                  -w 2 SHOPSLIST

これで，チャンクの状態を変更できます。

なお，チャンクの状態変更によって，カレントチャンクが変更されることがあります。詳細については，「(3)　チャンクの状態変更によるカレントチャンクの切り替え」を参照してください。また，カレントチャンクを元に戻す（チャンクの状態変更の前にカレントチャンクだったチャンクを，状態変更のあともカレントチャンクとする）手順については，「(4)　運用例（チャンク内のデータを入れ替える）」を参照してください。

メモ

adbchgchunkstatusコマンドの-mオプション（チャンクの状態の一括変更設定ファイル）を指定すると，複数の表のチャンクの状態を一括して変更できます。

(2)　チャンクの状態と実行できるSQL文・コマンドの関係

チャンクの状態によって，チャンクに含まれるデータに対して，実行できるSQL文およびコマンドが異なります。チャンクの状態と，実行できるSQL文およびコマンドの関係を次の2つの表に示します。

アーカイブ状態ではないチャンクの場合

「表11‒5　チャンクの状態と，実行できるSQL文およびコマンドの関係（アーカイブ状態ではないチャンクの場合）」を参照してください。

アーカイブ状態のチャンクの場合

「表11‒6　チャンクの状態と，実行できるSQL文およびコマンドの関係（アーカイブ状態のチャンクの場合）」を参照してください。

表11‒5　チャンクの状態と，実行できるSQL文およびコマンドの関係（アーカイブ状態ではないチャンクの場合）

項番

実行するSQL文およびコマンド

チャンクの状態

通常状態

待機状態

削除仕掛中

1

SELECT文

○

×

×

2

COPY文

○

×

×

3

INSERT文

○

×

×

4

UPDATE文

○

×

×

5

DELETE文

○

×

×

6

PURGE CHUNK文

○

○

○

7

TRUNCATE TABLE文

○

○

○

8

adbstartコマンド

（レンジインデクスの一括先読みを実行する場合）

○

○

×

9

adbsqlコマンド

○

△※1

×

10

adbmergechunkコマンド

△※2

△※3

×

11

adbexportコマンド

○

△※4

×

12

adbidxrebuildコマンド

○

○※5

×

13

adbdbstatusコマンド

（チャンクの情報を参照する場合）

○

○

○

14

adbchgchunkcommentコマンド

○

○

○

15

adbchgchunkstatusコマンド

△※7

△※7

×

16

adbarchivechunkコマンド

○

△※6

×

17

adbunarchivechunkコマンド

×

×

×

（凡例）

○：実行できます。

△：実行できますが，制限があります。

×：実行できません。

注※1

adbsqlコマンドのサブコマンド#GETDATAおよび#GETCOUNTだけが実行できます。

注※2

通常状態で，かつアーカイブ状態ではない複数のチャンクを，通常状態で，かつアーカイブ状態ではない1つのチャンクにマージできます。それ以外のチャンクのマージはできません。

注※3

待機状態で，かつアーカイブ状態ではない複数のチャンクを，待機状態で，かつアーカイブ状態ではない1つのチャンクにマージできます。それ以外のチャンクのマージはできません。

注※4

adbexportコマンドの-cオプションを指定した検索だけ実行できます。

注※5

待機状態のチャンクに含まれるインデクスも再作成されます。

注※6

一度も通常状態になったことがない待機状態のチャンクは，アーカイブ状態にできません。

注※7

アーカイブマルチチャンク表の場合，-mオプションを指定してチャンクの状態を変更することはできません。

表11‒6　チャンクの状態と，実行できるSQL文およびコマンドの関係（アーカイブ状態のチャンクの場合）

項番

実行するSQL文およびコマンド

チャンクの状態

通常状態

待機状態

削除仕掛中

1

SELECT文

○

×

×

2

COPY文

○

×

×

3

INSERT文

×

×

×

4

UPDATE文

×

×

×

5

DELETE文

×

×

×

6

PURGE CHUNK文

○

○

○

7

TRUNCATE TABLE文

○

○

○

8

adbstartコマンド

（レンジインデクスの一括先読みを実行する場合）

×※1

×※1

×※1

9

adbsqlコマンド

○

△※2

×

10

adbmergechunkコマンド

△※3

△※4

×

11

adbexportコマンド

○

△※5

×

12

adbidxrebuildコマンド

×※6

×※6

×※6

13

adbdbstatusコマンド

（チャンクの情報を参照する場合）

○

○

○

14

adbchgchunkcommentコマンド

○

○

○

15

adbchgchunkstatusコマンド

△※7

△※7

×

16

adbarchivechunkコマンド

×

×

×

17

adbunarchivechunkコマンド

○

○

×

（凡例）

○：実行できます。

△：実行できますが，制限があります。

×：実行できません。

注※1

アーカイブ状態のチャンク内のデータにはインデクスが存在しません。そのため，adbstartコマンドによるレンジインデクスの一括先読みは実行できません。

注※2

adbsqlコマンドのサブコマンド#GETDATAおよび#GETCOUNTだけが実行できます。

注※3

通常状態で，かつアーカイブ状態の複数のチャンクを，通常状態で，かつアーカイブ状態の1つのチャンクにマージできます。それ以外のチャンクのマージはできません。

注※4

待機状態で，かつアーカイブ状態の複数のチャンクを，待機状態で，かつアーカイブ状態の1つのチャンクにマージできます。それ以外のチャンクのマージはできません。

注※5

adbexportコマンドの-cオプションを指定した検索だけが実行できます。

注※6

アーカイブ状態のチャンク内のデータにはインデクスが存在しません。そのため，adbidxrebuildコマンドによるインデクスの再作成は実行できません。

注※7

アーカイブマルチチャンク表の場合，-mオプションを指定してチャンクの状態を変更することはできません。

(3)　チャンクの状態変更によるカレントチャンクの切り替え

adbchgchunkstatusコマンドでチャンクの状態を変更する場合，状態を変更するチャンクの種類と状態変更の処理内容によって，カレントチャンクの切り替えが発生することがあります。また，システム表STATUS_CHUNKSにあるチャンクの作成日時およびカレントチャンクが切り替わった日時に設定される情報が異なります。

メモ

システム表STATUS_CHUNKSの詳細については，「付録C.5　STATUS_CHUNKSの内容」を参照してください。

詳細を次の表に示します。

表11‒7　チャンクの状態変更の実行条件

状態変更するチャンクの種類と状態変更の処理内容

通常状態のチャンクへの変更

なし

過去に通常状態になったことがある待機状態のチャンク※1

過去に通常状態になったことがない待機状態のチャンク※2

過去に通常状態になったことがある待機状態のチャンク※1，および過去に通常状態になったことがない待機状態のチャンク※2

待機状態のチャンクへの変更

なし

−

（a）

（b）

（c）

カレントチャンクではない通常状態のチャンク

（d）

（e）

（f）

（g）

カレントチャンクである通常状態のチャンク

（h）

（i）

（j）

（k）

カレントチャンク，およびカレントチャンクではない通常状態のチャンク

（l）

（m）

（n）

（o）

（凡例）

−：該当しません。

注※1

チャンクの作成日時，およびカレントチャンクが切り替わった日時が設定された待機状態のチャンクのことです。

注※2

チャンクの作成日時，およびカレントチャンクが切り替わった日時が設定されていない待機状態のチャンクのことです。

■（a）〜（o）の詳細

上記の表で示した（a）〜（o）の詳細については，「(a)　adbchgchunkstatusコマンドの実行例1」〜「(o)　adbchgchunkstatusコマンドの実行例15」で示します。

なお，各実行例は，次の図で示すチャンクに対して，adbchgchunkstatusコマンドを実行しています。

図11‒10　adbchgchunkstatusコマンド実行前のチャンクの状態

(a)　adbchgchunkstatusコマンドの実行例1

「表11‒7　チャンクの状態変更の実行条件」の（a）の条件で，「図11‒10　adbchgchunkstatusコマンド実行前のチャンクの状態」のチャンクに対して，adbchgchunkstatusコマンドを実行した場合の例を次に示します。

図11‒11　（a）の条件でadbchgchunkstatusコマンドを実行した場合

［説明］

過去に通常状態になったことがある待機状態のチャンク（チャンク3と4）を，通常状態のチャンクに変更します。

■（a）の条件でadbchgchunkstatusコマンドを実行した場合の処理結果

カレントチャンク

変更されません。

チャンクの作成日時

設定されません。

カレントチャンクが切り替わった日時

設定されません。

(b)　adbchgchunkstatusコマンドの実行例2

「表11‒7　チャンクの状態変更の実行条件」の（b）の条件で，「図11‒10　adbchgchunkstatusコマンド実行前のチャンクの状態」のチャンクに対して，adbchgchunkstatusコマンドを実行した場合の例を次に示します。

図11‒12　（b）の条件でadbchgchunkstatusコマンドを実行した場合

［説明］

過去に通常状態になったことがない待機状態のチャンク（チャンク6と7）を，通常状態のチャンクに変更します。

このとき，カレントチャンクが変更されます（チャンク7になります）。また，チャンクの作成日時とカレントチャンクの切り替え日時が設定されます。

■（b）の条件でadbchgchunkstatusコマンドを実行した場合の処理結果

カレントチャンク

過去に通常状態になったことがない待機状態のチャンクのうち，adbchgchunkstatusコマンドの-nオプションに指定されたチャンクIDが最も大きいチャンクに変更されます。

チャンクの作成日時

次のチャンクにadbchgchunkstatusコマンドを実行した日時が設定されます。

adbchgchunkstatusコマンドの-nオプションに指定された待機状態のチャンク

カレントチャンクが切り替わった日時

次のチャンクにadbchgchunkstatusコマンドを実行した日時が設定されます。

adbchgchunkstatusコマンドの-nオプションに指定された待機状態のチャンクのうち，カレントチャンクにならなかったチャンク

変更される前にカレントチャンクだったチャンク

(c)　adbchgchunkstatusコマンドの実行例3

「表11‒7　チャンクの状態変更の実行条件」の（c）の条件で，「図11‒10　adbchgchunkstatusコマンド実行前のチャンクの状態」のチャンクに対して，adbchgchunkstatusコマンドを実行した場合の例を次に示します。

図11‒13　（c）の条件でadbchgchunkstatusコマンドを実行した場合

［説明］

過去に通常状態になったことがある待機状態のチャンク（チャンク3と4），および過去に通常状態になったことがない待機状態のチャンク（チャンク6と7）を，通常状態のチャンクに変更します。

このとき，カレントチャンクが変更されます（チャンク7になります）。また，チャンクの作成日時とカレントチャンクの切り替え日時が設定されます。

■（c）の条件でadbchgchunkstatusコマンドを実行した場合の処理結果

カレントチャンク

過去に通常状態になったことがない待機状態のチャンクのうち，adbchgchunkstatusコマンドの-nオプションに指定されたチャンクIDが最も大きいチャンクに変更されます。

チャンクの作成日時

次のチャンクにadbchgchunkstatusコマンドを実行した日時が設定されます。

adbchgchunkstatusコマンドの-nオプションに指定された待機状態のチャンクのうち，過去に通常状態になったことがないチャンク

カレントチャンクが切り替わった日時

次のチャンクにadbchgchunkstatusコマンドを実行した日時が設定されます。

adbchgchunkstatusコマンドの-nオプションに指定された待機状態のチャンクのうち，カレントチャンクにならないで，かつ過去に通常状態になったことがないチャンク

変更される前にカレントチャンクだったチャンク

(d)　adbchgchunkstatusコマンドの実行例4

「表11‒7　チャンクの状態変更の実行条件」の（d）の条件で，「図11‒10　adbchgchunkstatusコマンド実行前のチャンクの状態」のチャンクに対して，adbchgchunkstatusコマンドを実行した場合の例を次に示します。

図11‒14　（d）の条件でadbchgchunkstatusコマンドを実行した場合

［説明］

通常状態のチャンク（チャンク1と2）を，待機状態のチャンクに変更します。

■（d）の条件でadbchgchunkstatusコマンドを実行した場合の処理結果

カレントチャンク

変更されません。

チャンクの作成日時

設定されません。

カレントチャンクが切り替わった日時

設定されません。

(e)　adbchgchunkstatusコマンドの実行例5

「表11‒7　チャンクの状態変更の実行条件」の（e）の条件で，「図11‒10　adbchgchunkstatusコマンド実行前のチャンクの状態」のチャンクに対して，adbchgchunkstatusコマンドを実行した場合の例を次に示します。

図11‒15　（e）の条件でadbchgchunkstatusコマンドを実行した場合

［説明］

通常状態のチャンク（チャンク1と2）を，待機状態のチャンクに変更します。また，過去に通常状態になったことがある待機状態のチャンク（チャンク3と4）を，通常状態のチャンクに変更します。

■（e）の条件でadbchgchunkstatusコマンドを実行した場合の処理結果

カレントチャンク

変更されません。

チャンクの作成日時

設定されません。

カレントチャンクが切り替わった日時

設定されません。

(f)　adbchgchunkstatusコマンドの実行例6

「表11‒7　チャンクの状態変更の実行条件」の（f）の条件で，「図11‒10　adbchgchunkstatusコマンド実行前のチャンクの状態」のチャンクに対して，adbchgchunkstatusコマンドを実行した場合の例を次に示します。

図11‒16　（f）の条件でadbchgchunkstatusコマンドを実行した場合

［説明］

通常状態のチャンク（チャンク1と2）を，待機状態のチャンクに変更します。また，過去に通常状態になったことがない待機状態のチャンク（チャンク6と7）を，通常状態のチャンクに変更します。

このとき，カレントチャンクが変更されます（チャンク7になります）。また，チャンクの作成日時とカレントチャンクの切り替え日時が設定されます。

■（f）の条件でadbchgchunkstatusコマンドを実行した場合の処理結果

カレントチャンク

過去に通常状態になったことがない待機状態のチャンクのうち，adbchgchunkstatusコマンドの-nオプションに指定されたチャンクIDが最も大きいチャンクに変更されます。

チャンクの作成日時

次のチャンクにadbchgchunkstatusコマンドを実行した日時が設定されます。

adbchgchunkstatusコマンドの-nオプションに指定された待機状態のチャンクのうち，過去に通常状態になったことがないチャンク

カレントチャンクが切り替わった日時

次のチャンクにadbchgchunkstatusコマンドを実行した日時が設定されます。

adbchgchunkstatusコマンドの-nオプションに指定された待機状態のチャンクのうち，カレントチャンクにならないで，かつ過去に通常状態になったことがないチャンク

変更される前にカレントチャンクだったチャンク

(g)　adbchgchunkstatusコマンドの実行例7

「表11‒7　チャンクの状態変更の実行条件」の（g）の条件で，「図11‒10　adbchgchunkstatusコマンド実行前のチャンクの状態」のチャンクに対して，adbchgchunkstatusコマンドを実行した場合の例を次に示します。

図11‒17　（g）の条件でadbchgchunkstatusコマンドを実行した場合

［説明］

通常状態のチャンク（チャンク1と2）を，待機状態のチャンクに変更します。また，過去に通常状態になったことがある待機状態のチャンク（チャンク3と4），および過去に通常状態になったことがない待機状態のチャンク（チャンク6と7）を，通常状態のチャンクに変更します。

このとき，カレントチャンクが変更されます（チャンク7になります）。また，チャンクの作成日時とカレントチャンクの切り替え日時が設定されます。

■（g）の条件でadbchgchunkstatusコマンドを実行した場合の処理結果

カレントチャンク

過去に通常状態になったことがない待機状態のチャンクのうち，adbchgchunkstatusコマンドの-nオプションに指定されたチャンクIDが最も大きいチャンクに変更されます。

チャンクの作成日時

次のチャンクにadbchgchunkstatusコマンドを実行した日時が設定されます。

adbchgchunkstatusコマンドの-nオプションに指定された待機状態のチャンクのうち，過去に通常状態になったことがないチャンク

カレントチャンクが切り替わった日時

次のチャンクにadbchgchunkstatusコマンドを実行した日時が設定されます。

adbchgchunkstatusコマンドの-nオプションに指定された待機状態のチャンクのうち，カレントチャンクにならないで，かつ過去に通常状態になったことがないチャンク

変更される前にカレントチャンクだったチャンク

(h)　adbchgchunkstatusコマンドの実行例8

「表11‒7　チャンクの状態変更の実行条件」の（h）の条件で，「図11‒10　adbchgchunkstatusコマンド実行前のチャンクの状態」のチャンクに対して，adbchgchunkstatusコマンドを実行した場合の例を次に示します。

図11‒18　（h）の条件でadbchgchunkstatusコマンドを実行した場合

［説明］

カレントチャンク（チャンク5）を，待機状態のチャンクに変更します。

このとき，新規にチャンクが作成されて，カレントチャンクが変更されます（チャンク8になります）。また，チャンクの作成日時とカレントチャンクの切り替え日時が設定されます。

■（h）の条件でadbchgchunkstatusコマンドを実行した場合の処理結果

カレントチャンク

新規にチャンクが作成されて，そのチャンクがカレントチャンクになります。

チャンクの作成日時

次のチャンクにadbchgchunkstatusコマンドを実行した日時が設定されます。

新規に作成されたチャンク

カレントチャンクが切り替わった日時

次のチャンクにadbchgchunkstatusコマンドを実行した日時が設定されます。

変更される前にカレントチャンクだったチャンク

(i)　adbchgchunkstatusコマンドの実行例9

「表11‒7　チャンクの状態変更の実行条件」の（i）の条件で，「図11‒10　adbchgchunkstatusコマンド実行前のチャンクの状態」のチャンクに対して，adbchgchunkstatusコマンドを実行した場合の例を次に示します。

図11‒19　（i）の条件でadbchgchunkstatusコマンドを実行した場合

［説明］

カレントチャンク（チャンク5）を，待機状態のチャンクに変更します。また，過去に通常状態になったことがある待機状態のチャンク（チャンク3と4）を，通常状態のチャンクに変更します。

このとき，新規にチャンクが作成されて，カレントチャンクが変更されます（チャンク8になります）。また，チャンクの作成日時とカレントチャンクの切り替え日時が設定されます。

■（i）の条件でadbchgchunkstatusコマンドを実行した場合の処理結果

カレントチャンク

新規にチャンクが作成されて，そのチャンクがカレントチャンクになります。

チャンクの作成日時

次のチャンクにadbchgchunkstatusコマンドを実行した日時が設定されます。

新規に作成されたチャンク

カレントチャンクが切り替わった日時

次のチャンクにadbchgchunkstatusコマンドを実行した日時が設定されます。

変更される前にカレントチャンクだったチャンク

(j)　adbchgchunkstatusコマンドの実行例10

「表11‒7　チャンクの状態変更の実行条件」の（j）の条件で，「図11‒10　adbchgchunkstatusコマンド実行前のチャンクの状態」のチャンクに対して，adbchgchunkstatusコマンドを実行した場合の例を次に示します。

図11‒20　（j）の条件でadbchgchunkstatusコマンドを実行した場合

［説明］

カレントチャンク（チャンク5）を，待機状態のチャンクに変更します。また，過去に通常状態になったことがない待機状態のチャンク（チャンク6と7）を，通常状態のチャンクに変更します。

このとき，カレントチャンクが変更されます（チャンク7になります）。また，チャンクの作成日時とカレントチャンクの切り替え日時が設定されます。

■（j）の条件でadbchgchunkstatusコマンドを実行した場合の処理結果

カレントチャンク

過去に通常状態になったことがない待機状態のチャンクのうち，adbchgchunkstatusコマンドの-nオプションに指定されたチャンクIDが最も大きいチャンクに変更されます。

チャンクの作成日時

次のチャンクにadbchgchunkstatusコマンドを実行した日時が設定されます。

adbchgchunkstatusコマンドの-nオプションに指定された待機状態のチャンクのうち，過去に通常状態になったことがないチャンク

カレントチャンクが切り替わった日時

次のチャンクにadbchgchunkstatusコマンドを実行した日時が設定されます。

adbchgchunkstatusコマンドの-nオプションに指定された待機状態のチャンクのうち，カレントチャンクにならないで，かつ過去に通常状態になったことがないチャンク

変更される前にカレントチャンクだったチャンク

(k)　adbchgchunkstatusコマンドの実行例11

「表11‒7　チャンクの状態変更の実行条件」の（k）の条件で，「図11‒10　adbchgchunkstatusコマンド実行前のチャンクの状態」のチャンクに対して，adbchgchunkstatusコマンドを実行した場合の例を次に示します。

図11‒21　（k）の条件でadbchgchunkstatusコマンドを実行した場合

［説明］

カレントチャンク（チャンク5）を，待機状態のチャンクに変更します。また，過去に通常状態になったことがある待機状態のチャンク（チャンク3と4），および過去に通常状態になったことがない待機状態のチャンク（チャンク6と7）を，通常状態のチャンクに変更します。

このとき，カレントチャンクが変更されます（チャンク7になります）。また，チャンクの作成日時とカレントチャンクの切り替え日時が設定されます。

■（k）の条件でadbchgchunkstatusコマンドを実行した場合の処理結果

カレントチャンク

過去に通常状態になったことがない待機状態のチャンクのうち，adbchgchunkstatusコマンドの-nオプションに指定されたチャンクIDが最も大きいチャンクに変更されます。

チャンクの作成日時

次のチャンクにadbchgchunkstatusコマンドを実行した日時が設定されます。

adbchgchunkstatusコマンドの-nオプションに指定された待機状態のチャンクのうち，過去に通常状態になったことがないチャンク

カレントチャンクが切り替わった日時

次のチャンクにadbchgchunkstatusコマンドを実行した日時が設定されます。

adbchgchunkstatusコマンドの-nオプションに指定された待機状態のチャンクのうち，カレントチャンクにならないで，かつ過去に通常状態になったことがないチャンク

変更される前にカレントチャンクだったチャンク

(l)　adbchgchunkstatusコマンドの実行例12

「表11‒7　チャンクの状態変更の実行条件」の（l）の条件で，「図11‒10　adbchgchunkstatusコマンド実行前のチャンクの状態」のチャンクに対して，adbchgchunkstatusコマンドを実行した場合の例を次に示します。

図11‒22　（l）の条件でadbchgchunkstatusコマンドを実行した場合

［説明］

通常状態のチャンク（チャンク1と2），およびカレントチャンク（チャンク5）を，待機状態のチャンクに変更します。

このとき，新規にチャンクが作成されて，カレントチャンクが変更されます（チャンク8になります）。また，チャンクの作成日時とカレントチャンクの切り替え日時が設定されます。

■（l）の条件でadbchgchunkstatusコマンドを実行した場合の処理結果

カレントチャンク

新規にチャンクが作成されて，そのチャンクがカレントチャンクになります。

チャンクの作成日時

次のチャンクにadbchgchunkstatusコマンドを実行した日時が設定されます。

新規に作成されたチャンク

カレントチャンクが切り替わった日時

次のチャンクにadbchgchunkstatusコマンドを実行した日時が設定されます。

変更される前にカレントチャンクだったチャンク

(m)　adbchgchunkstatusコマンドの実行例13

「表11‒7　チャンクの状態変更の実行条件」の（m）の条件で，「図11‒10　adbchgchunkstatusコマンド実行前のチャンクの状態」のチャンクに対して，adbchgchunkstatusコマンドを実行した場合の例を次に示します。

図11‒23　（m）の条件でadbchgchunkstatusコマンドを実行した場合

［説明］

通常状態のチャンク（チャンク1と2），およびカレントチャンク（チャンク5）を，待機状態のチャンクに変更します。また，過去に通常状態になったことがある待機状態のチャンク（チャンク3と4）を，通常状態のチャンクに変更します。

このとき，新規にチャンクが作成されて，カレントチャンクが変更されます（チャンク8になります）。また，チャンクの作成日時とカレントチャンクの切り替え日時が設定されます。

■（m）の条件でadbchgchunkstatusコマンドを実行した場合の処理結果

カレントチャンク

新規にチャンクが作成されて，そのチャンクがカレントチャンクになります。

チャンクの作成日時

次のチャンクにadbchgchunkstatusコマンドを実行した日時が設定されます。

新規に作成されたチャンク

カレントチャンクが切り替わった日時

次のチャンクにadbchgchunkstatusコマンドを実行した日時が設定されます。

変更される前にカレントチャンクだったチャンク

(n)　adbchgchunkstatusコマンドの実行例14

「表11‒7　チャンクの状態変更の実行条件」の（n）の条件で，「図11‒10　adbchgchunkstatusコマンド実行前のチャンクの状態」のチャンクに対して，adbchgchunkstatusコマンドを実行した場合の例を次に示します。

図11‒24　（n）の条件でadbchgchunkstatusコマンドを実行した場合

［説明］

通常状態のチャンク（チャンク1と2），およびカレントチャンク（チャンク5）を，待機状態のチャンクに変更します。また，過去に通常状態になったことがない待機状態のチャンク（チャンク6と7）を，通常状態のチャンクに変更します。

このとき，カレントチャンクが変更されます（チャンク7になります）。また，チャンクの作成日時とカレントチャンクの切り替え日時が設定されます。

■（n）の条件でadbchgchunkstatusコマンドを実行した場合の処理結果

カレントチャンク

過去に通常状態になったことがない待機状態のチャンクのうち，adbchgchunkstatusコマンドの-nオプションに指定されたチャンクIDが最も大きいチャンクに変更されます。

チャンクの作成日時

次のチャンクにadbchgchunkstatusコマンドを実行した日時が設定されます。

adbchgchunkstatusコマンドの-nオプションに指定された待機状態のチャンクのうち，過去に通常状態になったことがないチャンク

カレントチャンクが切り替わった日時

次のチャンクにadbchgchunkstatusコマンドを実行した日時が設定されます。

adbchgchunkstatusコマンドの-nオプションに指定された待機状態のチャンクのうち，カレントチャンクにならないで，かつ過去に通常状態になったことがないチャンク

変更される前にカレントチャンクだったチャンク

(o)　adbchgchunkstatusコマンドの実行例15

「表11‒7　チャンクの状態変更の実行条件」の（o）の条件で，「図11‒10　adbchgchunkstatusコマンド実行前のチャンクの状態」のチャンクに対して，adbchgchunkstatusコマンドを実行した場合の例を次に示します。

図11‒25　（o）の条件でadbchgchunkstatusコマンドを実行した場合

［説明］

通常状態のチャンク（チャンク1と2），およびカレントチャンク（チャンク5）を，待機状態のチャンクに変更します。また，過去に通常状態になったことがある待機状態のチャンク（チャンク3と4），および過去に通常状態になったことがない待機状態のチャンク（チャンク6と7）を，通常状態のチャンクに変更します。

このとき，カレントチャンクが変更されます（チャンク7になります）。また，チャンクの作成日時とカレントチャンクの切り替え日時が設定されます。

■（o）の条件でadbchgchunkstatusコマンドを実行した場合の処理結果

カレントチャンク

過去に通常状態になったことがない待機状態のチャンクのうち，adbchgchunkstatusコマンドの-nオプションに指定されたチャンクIDが最も大きいチャンクに変更されます。

チャンクの作成日時

次のチャンクにadbchgchunkstatusコマンドを実行した日時が設定されます。

adbchgchunkstatusコマンドの-nオプションに指定された待機状態のチャンクのうち，過去に通常状態になったことがないチャンク

カレントチャンクが切り替わった日時

次のチャンクにadbchgchunkstatusコマンドを実行した日時が設定されます。

adbchgchunkstatusコマンドの-nオプションに指定された待機状態のチャンクのうち，カレントチャンクにならないで，かつ過去に通常状態になったことがないチャンク

変更される前にカレントチャンクだったチャンク

(4)　運用例（チャンク内のデータを入れ替える）

チャンク内のデータを入れ替える場合の運用例を説明します。チャンク内のデータを入れ替える際，adbchgchunkstatusコマンドによるチャンクの状態変更を利用します。

運用例

店舗数の拡大および統廃合によって，C地区の店舗情報が変更されました。C地区の店舗情報は，店舗表（SHOPSLIST）のチャンク（チャンクIDが3）に格納されています。C地区の新店舗情報は，CSV形式のファイルに格納されているため，C地区の旧店舗情報が格納されているチャンク（チャンクIDが3）内のデータをすべて入れ替えます。

データの入れ替え中は，C地区の旧店舗情報を参照できるようにします。

チャンク内のデータを入れ替えるときの流れ

次の流れでチャンク内のデータを入れ替えます。

C地区の新店舗情報をバックグラウンドインポートする

チャンクの状態を変更して，C地区の旧店舗情報を参照できなくする（同時にC地区の新店舗情報を参照できるようにする）

C地区の旧店舗情報を削除する

データの入れ替えを始める前に確認すること

チャンク内のデータの入れ替え手順を実施すると，カレントチャンクが変わります。カレントチャンクを変えたくない場合は，カレントチャンクのチャンクIDとチャンクのコメントを確認してください。「付録C.9　システム表の検索」の「(16)　カレントチャンクの情報を調べる場合」を参照し，カレントチャンクのCHUNK_ID（チャンクID）とCHUNK_COMMENT（チャンクに設定されたコメント）を確認してください。

なお，入れ替え前のデータがカレントチャンク内にある場合は，カレントチャンクのチャンクIDとチャンクのコメントを確認する必要はありません。

チャンク内のデータの入れ替え手順

C地区の新店舗情報をバックグラウンドインポートする

adbimport -u ADBUSER01 -p '#HelloHADB_01' -k "'" -s , -g 10
          -w /home/adbmanager/tmp
          -z /home/adbmanager/imp_file/imp_opt_file02.txt
          -b --status wait
          SHOPSLIST
          /home/adbmanager/imp_file/imp_data_path02.txt

adbimportコマンドの実行時，--status waitオプションを指定してください。このオプションを指定すると，データをインポートするチャンクの状態が待機状態になります（新店舗情報は参照できない状態になります）。

メモ

バックグラウンドインポートの処理中，旧店舗情報は参照できます。

インポートした新店舗情報が格納されたチャンクのチャンクIDを確認する

手順1.のバックグラウンドインポート時にKFAA51242-Iメッセージが出力されます。このメッセージにチャンクIDが表示されます。

KFAA51242-I A chunk was created. (chunk id = 5 )

上記の例の場合，インポートした新店舗情報は，チャンクIDが5のチャンクに格納されています。

チャンクの状態を変更して，C地区の旧店舗情報を参照できなくする（同時にC地区の新店舗情報を参照できるようにする）

adbchgchunkstatus -u ADBUSER01 -p '#HelloHADB_01'
                  -n 5 -w 3 SHOPSLIST

旧店舗情報を参照できなくし，新店舗情報を参照できるようにするために，adbchgchunkstatusコマンドでチャンクの状態を変更します。このとき，-nオプションには5を，-wオプションには3を指定します。新店舗情報を格納しているチャンク（チャンクIDが5）が通常状態になり，チャンク内のデータが参照できるようになります。また，旧店舗情報を格納しているチャンク（チャンクIDが3）が待機状態になり，チャンク内のデータは参照できなくなります。

C地区の旧店舗情報を削除する

PURGE CHUNK "SHOPSLIST" WHERE CHUNKID=3

旧店舗情報を格納しているチャンク（チャンクIDが3）内のデータをPURGE CHUNK文で削除します。

なお，PURGE CHUNK文が排他を取得するDBエリアを，参照または更新しているトランザクションがある場合，PURGE CHUNK文がエラーになります。DBエリアを参照または更新しているトランザクションがあるかどうかを確認するには，adbls -d lockコマンドを実行して，DBエリアの排他を取得しているコネクションの有無を確認してください。adbls -d lockコマンドの詳細については，マニュアルHADB　コマンドリファレンスのadbls -d lock（排他資源の状態表示）を参照してください。

上記の操作が完了すると，この例では，チャンクIDが5のチャンクがカレントチャンクになります。カレントチャンクをデータの差し替え前と同じにしたい場合は，カレントチャンクの変更手順の操作を行ってください。

カレントチャンクの変更手順

adbimportコマンドで空のチャンク（データが0件のチャンク）を作成する

adbimportコマンドの入力データファイルに空のファイルを指定して，-bオプションを指定してバックグラウンドインポートを実行してください。

チャンクをマージする

手順1.で作成した空のチャンクと，データの入れ替えを始める前に確認することで確認したカレントチャンクを，adbmergechunkコマンドでマージしてください。このとき，adbmergechunkコマンドの-mオプションには，データの入れ替えを始める前に確認することで確認したチャンクのコメントを指定してください。

チャンクのマージが完了すると，データの入れ替え前にカレントチャンクだったチャンクが，カレントチャンクに戻ります。

11.5.13　マルチチャンク表の再編成が必要かどうかを確認する方法

マルチチャンク表の再編成が必要かどうかを確認する方法について説明します。

メモ

シングルチャンク表の再編成が必要かどうかを確認する方法については，「11.1.12　シングルチャンク表の再編成が必要かどうかを確認する方法」を参照してください。

アーカイブ状態のチャンクについては，データの再編成は不要です。

(1)　表の再編成が必要な理由

マルチチャンク表に対して，次の操作を繰り返し実行すると，表の検索性能やデータの格納効率が低下します。

DELETE文による行の削除

UPDATE文による行の更新

INSERT文による行の挿入

adbimportコマンドによる少量データのバックグラウンドインポート

この場合，マルチチャンク表を再編成すると，データ用DBエリア内のむだな空き領域が解放されて，表の検索性能やデータの格納効率が向上します。

マルチチャンク表の検索性能やデータの格納効率が低下する理由を次に示します。

マルチチャンク表がローストア表の場合

シングルチャンク表の場合と理由は同じです。理由については，「11.1.12　シングルチャンク表の再編成が必要かどうかを確認する方法」の「(1)　表の再編成が必要な理由」の「シングルチャンク表がローストア表の場合」を参照してください。

マルチチャンク表がカラムストア表の場合

シングルチャンク表の場合と理由は同じです。理由については，「11.1.12　シングルチャンク表の再編成が必要かどうかを確認する方法」の「(1)　表の再編成が必要な理由」の「シングルチャンク表がカラムストア表の場合」を参照してください。

ローストア表，カラムストア表共通の理由

マルチチャンク表に対して，adbimportコマンドによる少量データのバックグラウンドインポートを繰り返し実行すると，空き領域の一部が使用されなくなるおそれがあります。この使用されない空き領域は再利用されません（むだな空き領域になります）。その結果，データの格納効率が悪くなり，表の検索性能が低下します。

(2)　再編成が必要かどうかを確認する方法

マルチチャンク表の再編成が必要かどうかを確認する方法を説明します。

マルチチャンク表がローストア表で，SQL文による行の更新，削除を繰り返した場合は，「(a)　マルチチャンク表がローストア表の場合」を参照して，表の再編成が必要かどうかを確認してください。

マルチチャンク表がカラムストア表で，SQL文による行の追加，更新，削除を繰り返した場合は，「(b)　マルチチャンク表がカラムストア表の場合」を参照して，表の再編成が必要かどうかを確認してください。

表に対してadbimportコマンドによる少量データのバックグラウンドインポートを繰り返した場合は，「(c)　少量のデータをバックグラウンドインポートで繰り返し追加した場合」を参照して，表の再編成が必要かどうかを確認してください。

(a)　マルチチャンク表がローストア表の場合

データの格納効率を計算してください。データの格納効率が悪い場合は，マルチチャンク表の再編成を実行してください。データの格納効率はチャンク単位で確認します。手順を次に示します。

手順

現在のチャンクが使用しているセグメント数を確認する

adbdbstatusコマンドで，使用量情報を出力してください。そして，Chunk_ID（チャンクID）をキーにして，Used_segments（使用中セグメント数）を確認してください。adbdbstatusコマンドについては，マニュアルHADB　コマンドリファレンスのadbdbstatus（データベースの状態解析）を参照してください。

現在のチャンク内のデータ件数を基に，データ用DBエリアのセグメント数を求める

現在のチャンク内のデータ件数を確認したあとで，データ用DBエリアのセグメント数を求めてください。

現在のチャンク内のデータ件数は，adbsqlコマンドのサブコマンド#GETCOUNTで確認できます。手順1.で確認したチャンクIDを使用して，adbsqlサブコマンド#GETCOUNTを実行してください。adbsqlコマンドについては，マニュアルHADB　コマンドリファレンスのadbsql（SQLの実行）を参照してください。

データ用DBエリアのセグメント数を求める場合は，「5.8.1　データ用DBエリアの総ページ数の求め方」の「(2)　変数の説明」の「(f)　変数SGROWTBLおよびPGROWTBLの求め方（マルチチャンク表の場合）」を参照してください。

なお，変数SGROWTBLは，データ用DBエリアに格納されている全マルチチャンク表の全チャンクの合計を求める計算式となっています。ここでは，対象表の対象チャンクだけを求めてください。

求めた結果を基に，データの格納効率を求める

手順1.および手順2.で求めた結果を基に，チャンク内のデータの格納効率を求めてください。計算式を次に示します。

計算式

上記の計算結果が0に近い場合，データの格納効率が悪いため，そのチャンクを再編成してください。再編成の運用方法は幾つかあるため，「(3)　再編成方法の選択」を参照して，再編成の運用方法を決めてください。

(b)　マルチチャンク表がカラムストア表の場合

adbdbstatusコマンドを実行して再編成要否の情報を確認し，マルチチャンク表の再編成をするかどうかを決めてください。確認手順を次に示します。

手順

-d reorginfoオプションを指定したadbdbstatusコマンドを実行して，再編成要否の情報を出力する

再編成要否の情報のReorganization_necessity（再編成要否）の出力内容を確認する

Recommendedが出力されている場合

Recommendedが出力されたチャンクの再編成を実行してください。再編成の運用方法は幾つかあるため，「(3)　再編成方法の選択」を参照して，再編成の運用方法を決めてください。

Not_recommendedが出力されている場合

Not_recommendedが出力されたチャンクは再編成する必要はありません。

adbdbstatusコマンドについては，マニュアルHADB　コマンドリファレンスのadbdbstatus（データベースの状態解析）を参照してください。

(c)　少量のデータをバックグラウンドインポートで繰り返し追加した場合

データの格納効率を計算してください。データの格納効率が悪い場合は，マルチチャンク表の再編成を実行してください。格納効率を求める計算式を次に示します。

計算式

格納効率＝page_num÷(segment_num×segment_size)

上記の計算式で求めた結果が1に近いほど，チャンク内のデータの格納効率が良いと判断できます。逆に，0に近いほど，チャンク内のデータの格納効率が悪いと判断できます。0に近い場合は，マルチチャンク表の再編成を実行してください。

変数の説明

page_num

インポート対象の表またはチャンクの使用中ページ数

表の使用中ページ数を確認する場合は，adbdbstatusコマンドで，表のサマリ情報を出力してください。表のサマリ情報のUsed_pagesの内容を確認してください。

チャンクの使用中ページ数を確認する場合は，-d usedオプションを指定したadbdbstatusコマンドを実行してください。DBエリア，表とインデクスの使用量情報を出力できます。DBエリア，表とインデクスの使用量情報から，格納効率を確認したいチャンクのChunk_IDをキーにして，Used_pagesの内容を確認してください。

segment_num

インポート対象の表またはチャンクの使用中セグメント数

表の使用中セグメント数を確認する場合は，adbdbstatusコマンドで，表のサマリ情報を出力してください。表のサマリ情報のUsed_segmentsの内容を確認してください。

チャンクの使用中セグメント数を確認する場合は，-d usedオプションを指定したadbdbstatusコマンドを実行してください。DBエリア，表とインデクスの使用量情報を出力できます。DBエリア，表とインデクスの使用量情報から，格納効率を確認したいチャンクのChunk_IDをキーにして，Used_segmentsの内容を確認してください。

segment_size

インポート対象の表を格納しているDBエリアのセグメントサイズ（1セグメントのページ数）

重要

使用中セグメントが1つだけのチャンクを再編成しても，データの格納効率は向上しません。再編成対象のチャンクの使用中セグメント数が1，または1に近い場合は，次のどちらかの方法でデータを再編成してください。

複数のチャンクをマージしたあとに，「11.5.14　マルチチャンク表を再編成する方法（チャンク単位で再編成する場合）」の手順に従って，マージ後のチャンクを再編成する

「11.5.15　マルチチャンク表を再編成する方法（表全体を再編成する場合）」の「(2)　表の再編成後はデータを1つのチャンクにまとめてもよい場合」の手順に従って，マルチチャンク表全体を再編成する

(3)　再編成方法の選択

マルチチャンク表の再編成方法には，次の表に示すとおり，幾つかの方法があります。条件に合った方法を選択してください。

重要

マルチチャンク表全体を再編成した場合（特にデータ件数が多い場合），再編成に時間が掛かるおそれがあります。そのため，マルチチャンク表全体を再編成するのではなく，チャンク単位での定期的な再編成を推奨します（次の表に示す項番1の方法を推奨します）。

表11‒8　マルチチャンク表の再編成方法

項番

再編成の実行単位

表の検索要否，チャンクの構成

再編成の実行時に必要な条件

再編成の方法

1

チャンク単位

(1)再編成中の表を検索できる※1

(2)チャンクの構成，状態，コメントを再編成前と同じにできる

データ用DBエリアの空き容量

再編成前と再編成後の両方のデータを一時的に保持する必要があります。そのため，再編成対象のチャンクのデータ容量と同じ空き容量がデータ用DBエリア内に必要です。

例えば，1TBのデータを格納するチャンクを再編成する場合，データ用DBエリア内の空き容量が1TB必要です。※2

出力データファイルの出力先の容量

チャンクのデータをエクスポートする出力データファイルを格納できるディスク容量が必要です。

作業用一時ファイルの出力先の容量

データをインポートする際に，一時的に作成される作業用一時ファイルを格納できるディスク容量が必要です。

「11.5.14　マルチチャンク表を再編成する方法（チャンク単位で再編成する場合）」の「(1)　表の検索業務を継続した状態で再編成をする場合」で説明している手順で再編成してください。

2

(1)再編成中の表は検索できない

(2)チャンクの構成，状態，コメントを再編成前と同じにできる

項番1の，2.と3.の条件を満たす必要があります。

なお，カレントチャンクだけが再編成対象となる場合，カレントチャンクに格納されているデータ容量分の空き容量がデータ用DBエリアに必要になります。

「11.5.14　マルチチャンク表を再編成する方法（チャンク単位で再編成する場合）」の「(2)　表の検索業務を停止して再編成をする場合」で説明している手順で再編成してください。

3

表全体

(1)再編成中の表を検索できる※1

(2)チャンクの構成，状態，コメントを再編成前と同じにできる

データ用DBエリアの空き容量

再編成前と再編成後の両方のデータを一時的に保持する必要があります。そのため，再編成対象の表のチャンクの最大データ容量と同じ空き容量がデータ用DBエリア内に必要です。

例えば，表にチャンクが3つあり，それぞれのデータ容量が1TB，2TB，3TBの場合，データ用DBエリア内に3TBの空き容量が必要になります。

出力データファイルの出力先の容量

チャンク単位でエクスポートするため，チャンクのデータをエクスポートする出力データファイルを格納できるディスク容量が必要です。

作業用一時ファイルの出力先の容量

チャンク単位でデータをインポートするため，インポートの際に一時的に作成される作業用一時ファイルを格納できるディスク容量が必要です。

「11.5.15　マルチチャンク表を再編成する方法（表全体を再編成する場合）」の「(1)　表の再編成後もチャンクの構成を同じにしたい場合」で説明している手順で再編成してください。

4

(1)再編成中の表は検索できない

(2)チャンクを1つにマージできる

出力データファイルの出力先の容量

表の全データを一度にエクスポートします。表の全データをエクスポートする出力データファイルを格納できるディスク容量が必要です。

作業用一時ファイルの出力先の容量

表の全データを一度にインポートします。表の全データをインポートする際に一時的に作成される作業用一時ファイルを格納できるディスク容量が必要です。

「11.5.15　マルチチャンク表を再編成する方法（表全体を再編成する場合）」の「(2)　表の再編成後はデータを1つのチャンクにまとめてもよい場合」で説明している手順で再編成してください。

注※1

再編成の手順の1つで，PURGE CHUNK文を実行します。PURGE CHUNK文の実行中は，表を検索することはできません。

注※2

再編成対象のチャンクが2つあり，それぞれのデータ容量が1TB，2TBの場合，データ用DBエリア内に2TBの空き容量が必要になります。

11.5.14　マルチチャンク表を再編成する方法（チャンク単位で再編成する場合）

マルチチャンク表をチャンク単位で再編成する方法を説明します。チャンク単位の再編成は，次のどちらかの方法で行います。通常は，1.の方法でチャンク単位の再編成を実行してください。

表の検索業務を継続した状態で再編成をする方法

この方法の場合，再編成中の表を検索することができます（更新はできません）。

ただし，再編成前と再編成後の両方のデータを一時的に保持する必要があるため，再編成対象の表を格納しているデータ用DBエリアにその分の空き容量が必要になります。空き容量が不足している場合は，この方法は実施できません。そのため，この方法を実施する場合は，adbdbstatusコマンドで，再編成を実行するチャンクのデータ容量と，表を格納しているデータ用DBエリアの空き容量を比較してください。adbdbstatusコマンドについては，マニュアルHADB　コマンドリファレンスのadbdbstatus（データベースの状態解析）を参照してください。

この方法の再編成手順については，「(1)　表の検索業務を継続した状態で再編成をする場合」を参照してください。

表の検索業務を停止して再編成をする方法

再編成対象の表を格納しているデータ用DBエリアの空き容量が不足しているために1.の方法が実施できない場合は，この方法でチャンク単位の再編成を実行してください。この方法の場合，再編成中の表を検索，更新することはできません。

この方法の再編成手順については，「(2)　表の検索業務を停止して再編成をする場合」を参照してください。

なお，カレントチャンクだけが再編成対象となる場合，カレントチャンクに格納されているデータ容量分の空き容量がデータ用DBエリアに必要になります。データ用DBエリアの空き容量が不足している場合は，「11.13.6　データ用DBエリアの空き容量を確保する方法」を参照して，空き容量不足を解消してください。

メモ

マルチチャンク表がカラムストア表の場合，チャンク単位で再編成を実行するサンプルシェルを提供しています。詳細については，「11.5.16　マルチチャンク表を再編成する方法（サンプルシェルを使用して再編成する場合）」を参照してください。

(1)　表の検索業務を継続した状態で再編成をする場合

チャンク単位の再編成手順を次に示します。

手順

APやコマンドが再編成対象の表を更新できない状態にする

次の操作を実行して，APやコマンドが再編成対象の表を更新できない状態にしてください。

HADBサーバマシン上で動作している，再編成対象の表を更新するコマンドやジョブ（定期的に実行しているadbimportコマンドやadbmergechunkコマンドなど）を停止してください。

HADBサーバにアクセスして再編成対象の表を更新するAPや，HADBサーバにアクセスして再編成対象の表を更新するコマンドをすべて停止してください。

上記の操作を両方とも実行することを推奨します。

再編成対象のチャンクの情報を取得する

システム表STATUS_CHUNKS表を検索し，再編成対象のチャンクについて，次に示す情報を取得してください。STATUS_CHUNKS表を検索する方法については，「付録C.9　システム表の検索」の「(3)　表名から表内の全チャンクの情報を調べる場合」を参照してください。

CHUNK_COMMENT（チャンクに設定されたコメント）

CHUNK_STATUS（チャンクの状態）

カレントチャンクの情報を取得する

システム表STATUS_CHUNKS表を検索し，カレントチャンクについて次に示す情報を取得してください。STATUS_CHUNKS表を検索する方法については，「付録C.9　システム表の検索」の「(16)　カレントチャンクの情報を調べる場合」を参照してください。

CHUNK_ID（チャンクID）

再編成対象のチャンクIDと一致しているかどうか（再編成対象のチャンクがカレントチャンクかどうか）を確認してください。

CHUNK_COMMENT（チャンクに設定されたコメント）

マルチチャンク表のデータをチャンク単位にエクスポートする

-cオプションを指定したadbexportコマンドで，マルチチャンク表のデータをチャンク単位にエクスポートしてください。チャンク単位にエクスポートする方法については，「11.5.5　チャンク単位にデータをエクスポートする方法」を参照してください。

エクスポートしたデータを，待機状態のチャンクとしてバックグラウンドインポートする

adbimportコマンドに次に示すオプションを指定して，手順4.でエクスポートしたデータをバックグラウンドインポートしてください。

-bオプション

--status waitオプション

--status waitオプションを指定すると，待機状態のチャンクが作成されて，そのチャンクにデータが格納されます。

-mオプション

手順2.で確認したチャンクのコメントを指定してください。

待機状態のチャンクを作成するバックグラウンドインポートについては，「11.5.4　マルチチャンク表にインポートするデータを一時的に検索対象外にする方法（待機状態のチャンクの作成）」を参照してください。

重要

adbimportコマンドを実行する際，インポートオプションadb_import_rthd_numには，「(3)　インポートオプションの見積もり」に示す計算式を満たす値を指定してください。計算式を満たさない値を指定すると，データの格納効率が悪くなるおそれがあります。

チャンクの状態を変更する

手順2.で調べた再編成対象のチャンクの状態が待機状態の場合，この手順は不要です。手順7.に進んでください。

手順2.で調べた再編成対象のチャンクの状態が通常状態の場合，-wオプションと-nオプションを両方指定して，adbchgchunkstatusコマンドを実行してください。2種類のチャンクの状態を同時に変更してください。

-wオプションに，手順4.でエクスポートしたデータを管理するチャンク（再編成対象のチャンク）を指定する

通常状態のチャンクから，待機状態のチャンクに変更します。

-nオプションに，手順5.でバックグラウンドインポートした待機状態のチャンクを指定する

待機状態のチャンクから，通常状態のチャンクに変更します。

チャンクの状態を変更する方法については，「11.5.12　チャンクの状態を変更する方法」を参照してください。

再編成対象のチャンクを削除する

手順4.でエクスポートしたチャンクを，PURGE CHUNK文で削除してください。なお，PURGE CHUNK文は，マルチチャンク表の検索と同時に実行できません。そのため，マルチチャンク表に対する操作が存在しないタイミングで，PURGE CHUNK文を実行してください。

PURGE CHUNK文でチャンクを削除する方法については，「11.5.6　チャンク単位にデータを削除する方法」を参照してください。

カレントチャンクに関する留意事項

カレントチャンクを再編成した場合，次の手順8.と手順9.は不要です。手順10.に進んでください。

カレントチャンク以外のチャンクを再編成した場合，カレントチャンクが再編成前とは変わります。カレントチャンクを再編成前と同じにしたい場合は，次の手順8.と手順9.を実施して，カレントチャンクを変更してください。

カレントチャンクを再編成前と同じにする必要がない場合は，次の手順8.と手順9.は不要です。手順10.に進んでください。

adbimportコマンドで空のチャンク（データが0件のチャンク）を作成する

adbimportコマンドの入力データファイルに空のファイルを指定して，-bオプションを指定してバックグラウンドインポートを実行してください。

チャンクをマージする

手順8.で作成した空のチャンクと，再編成前のカレントチャンクをadbmergechunkコマンドでマージしてください。このとき，adbmergechunkコマンドの-mオプションには，手順3.で確認した，再編成前のカレントチャンクのコメントを指定してください。

チャンクのマージが完了すると，カレントチャンクが再編成前と同じになります。

APやコマンドが再編成対象の表を更新できる状態にする

次に示す方法で，APやコマンドが再編成対象の表を更新できる状態にしてください。

手順1.で，HADBサーバマシン上で動作しているコマンドやジョブを停止した場合

停止していたコマンドやジョブを開始してください。

手順1.で，HADBサーバにアクセスするAPやコマンドを停止した場合

停止していたAPやコマンドを開始してください。

重要

ここで説明する手順に従ってチャンク単位の再編成を実行した場合，再編成前と再編成後で，再編成対象のチャンクのチャンクIDが変わります。チャンクの構成，状態，コメントは変わりません。

再編成中の表に対して，更新系SQLまたは表を更新するコマンド（adbimportコマンドやadbmergechunkコマンドなど）を実行しないでください。実行した場合，SQL文やコマンドで更新した内容が，再編成後に失われるおそれがあります。

(2)　表の検索業務を停止して再編成をする場合

チャンク単位の再編成手順を次に示します。

手順

APやコマンドが再編成対象の表にアクセスできない状態にする

次の操作を実行して，APやコマンドが再編成対象の表にアクセスできない状態にしてください。

adbchgsrvmodeコマンドに--offlineオプションを指定して，HADBサーバの稼働モードをオフラインモードに変更してください。さらに，HADBサーバマシン上で動作している，対象表を更新するコマンドやジョブ（定期的に実行しているadbimportコマンドやadbmergechunkコマンドなど）を停止してください。

HADBサーバにアクセスするAPやコマンドをすべて停止してください。

上記の操作を両方とも実行することを推奨します。

再編成対象のチャンクの情報を取得する

システム表STATUS_CHUNKS表を検索し，再編成対象のチャンクについて，次に示す情報を取得してください。STATUS_CHUNKS表を検索する方法については，「付録C.9　システム表の検索」の「(3)　表名から表内の全チャンクの情報を調べる場合」を参照してください。

CHUNK_COMMENT（チャンクに設定されたコメント）

CHUNK_STATUS（チャンクの状態）

複数のチャンクを再編成する場合は，再編成対象の全チャンクの情報を取得してください。

カレントチャンクの情報を取得する

システム表STATUS_CHUNKS表を検索し，カレントチャンクについて次に示す情報を取得してください。STATUS_CHUNKS表を検索する方法については，「付録C.9　システム表の検索」の「(16)　カレントチャンクの情報を調べる場合」を参照してください。

CHUNK_ID（チャンクID）

再編成対象のチャンクIDと一致しているかどうか（再編成対象のチャンクにカレントチャンクが含まれるかどうか）を確認してください。

CHUNK_COMMENT（チャンクに設定されたコメント）

重要

この先の手順について

再編成対象のチャンクがカレントチャンク以外の場合

手順4.～手順6.の操作を各チャンクに実施してください。そのあとで，手順7.に進んでください。

再編成対象のチャンクがカレントチャンクとカレントチャンク以外の両方の場合

・最初に，手順4.～手順6.の操作をカレントチャンク以外の各チャンクに実施してください。

・次に，手順4.～手順6.の操作をカレントチャンクに実施してください。

・上記が完了したあとに，手順8.に進んでください。

再編成対象のチャンクがカレントチャンクだけの場合

手順4. → 手順6. → 手順5.の順序で操作してください。そのあとで，手順8.に進んでください。

マルチチャンク表のデータをチャンク単位にエクスポートする

-cオプションを指定したadbexportコマンドで，マルチチャンク表のデータをチャンク単位にエクスポートしてください。チャンク単位にエクスポートする方法については，「11.5.5　チャンク単位にデータをエクスポートする方法」を参照してください。

再編成対象のチャンクを削除する

手順4.でデータをエクスポートした再編成対象のチャンクを，PURGE CHUNK文で削除してください。

PURGE CHUNK文でチャンクを削除する方法については，「11.5.6　チャンク単位にデータを削除する方法」を参照してください。

エクスポートしたデータを，マルチチャンク表にバックグラウンドインポートする

手順2.で調べた再作成対象のチャンクの状態が通常状態の場合

adbimportコマンドに次に示すオプションを指定して，手順4.でエクスポートしたデータをバックグラウンドインポートしてください。

-bオプション

-mオプション

手順2.で確認したチャンクのコメントを指定してください。

バックグラウンドインポートについては，「11.5.2　マルチチャンク表にデータを格納する方法（バックグラウンドインポート）」を参照してください。

手順2.で調べた再作成対象のチャンクの状態が待機状態の場合

adbimportコマンドに次に示すオプションを指定して，手順4.でエクスポートしたデータをバックグラウンドインポートしてください。

-bオプション

--status waitオプション

--status waitオプションを指定すると，待機状態のチャンクが作成されて，そのチャンクにデータが格納されます。

-mオプション

手順2.で確認したチャンクのコメントを指定してください。

待機状態のチャンクを作成するバックグラウンドインポートについては，「11.5.4　マルチチャンク表にインポートするデータを一時的に検索対象外にする方法（待機状態のチャンクの作成）」を参照してください。

重要

adbimportコマンドを実行する際，インポートオプションadb_import_rthd_numには，「(3)　インポートオプションの見積もり」に示す計算式を満たす値を指定してください。計算式を満たさない値を指定すると，データの格納効率が悪くなるおそれがあります。

カレントチャンクを変更する

カレントチャンクが再編成前と再編成後で異なっている状態になっています。カレントチャンクを再編成前と同じにしたい場合は，次に示す操作を実施してください。カレントチャンクを再編成前と同じにする必要がない場合は，次に示す操作は不要です。手順8.に進んでください。

adbimportコマンドで空のチャンク（データが0件のチャンク）を作成する

adbimportコマンドの入力データファイルに空のファイルを指定して，-bオプションを指定してバックグラウンドインポートを実行してください。

チャンクをマージする

上記の操作で作成した空のチャンクと，再編成前のカレントチャンクをadbmergechunkコマンドでマージしてください。このとき，adbmergechunkコマンドの-mオプションには，手順3.で確認した，再編成前のカレントチャンクのコメントを指定してください。

チャンクのマージが完了すると，カレントチャンクが再編成前と同じになります。

APやコマンドが再編成対象の表にアクセスできる状態にする

次に示す方法で，APやコマンドが再編成対象の表にアクセスできる状態にしてください。

手順1.で，HADBサーバの稼働モードをオフラインモードに変更した場合

adbchgsrvmodeコマンドに--normalオプションを指定して，HADBサーバの稼働モードを通常モードに変更してください。また，HADBサーバマシン上で動作しているコマンドやジョブを停止した場合は，停止していたコマンドやジョブを開始してください。

手順1.で，HADBサーバにアクセスするAPやコマンドを停止した場合

停止していたAPやコマンドを開始してください。

重要

ここで説明する手順に従ってチャンク単位の再編成を実行した場合，再編成前と再編成後で，再編成対象のチャンクのチャンクIDが変わります。チャンクの構成，状態，コメントは変わりません。

再編成中の表に対して，更新系SQLまたは表を更新するコマンド（adbimportコマンドやadbmergechunkコマンドなど）を実行しないでください。実行した場合，SQL文やコマンドで更新した内容が，再編成後に失われるおそれがあります。

(3)　インポートオプションの見積もり

再編成を実行した要因によって，インポートオプションadb_import_rthd_numの見積もり方法が異なります。該当する要因の見積もり方法を参照してください。

■行の更新および削除を繰り返したことによって再編成をした場合（かつマルチチャンク表がローストア表の場合）

adbimportコマンドを実行する際，インポートオプションadb_import_rthd_numには，次の計算式を満たす値を指定してください。計算式を満たさない値を指定すると，データの格納効率が悪くなるおそれがあります。

計算式

インポートオプションadb_import_rthd_numの指定値 ≦
    ↑ 再編成対象のセグメント数 × データの格納効率 ↑＋1

再編成対象のセグメント数

再編成対象のチャンクの使用中セグメント数を代入してください。

-d usedオプションを指定したadbdbstatusコマンドで，DBエリア，表とインデクスの使用量情報を出力してください。そして，Chunk_ID（チャンクID）をキーにしてUsed_segments（チャンクごとの使用中セグメント数）の出力内容を確認してください。

adbdbstatusコマンドについては，マニュアルHADB　コマンドリファレンスのadbdbstatus（データベースの状態解析）を参照してください。

表全体を再編成する場合は，表内の全チャンクの使用中セグメント数を合計してください。

データの格納効率

再編成対象のチャンクのデータの格納効率を代入してください。「11.5.13　マルチチャンク表の再編成が必要かどうかを確認する方法」の「(2)　再編成が必要かどうかを確認する方法」の「(a)　マルチチャンク表がローストア表の場合」で求めた値を代入してください。

表全体を再編成する場合は，表内の全チャンクのデータの格納効率を計算してください。

■行の追加，更新，および削除を繰り返したことによって再編成をした場合（かつマルチチャンク表がカラムストア表の場合）

adbimportコマンドを実行する際，インポートオプションadb_import_rthd_numには，次の計算式を満たす値を指定してください。計算式を満たさない値を指定すると，データの格納効率が悪くなるおそれがあります。

計算式

インポートオプションadb_import_rthd_numの指定値 ≦
    ↑ 再編成対象のセグメント数 × 再編成対象の行数
       ÷ カラムデータ用セグメントに格納されている行数 ↑＋1

再編成対象のセグメント数

再編成対象のチャンクの使用中のカラムデータ用セグメント数を代入してください。-d usedオプションを指定したadbdbstatusコマンドで，DBエリア，表とインデクスの使用量情報を出力してください。そして，Chunk_ID（チャンクID）をキーにして，Segment_type（セグメントの種類）がColumn_dataの行のUsed_segments（使用中セグメント数）の出力内容を確認してください。

adbdbstatusコマンドについては，マニュアルHADB　コマンドリファレンスのadbdbstatus（データベースの状態解析）を参照してください。

表全体を再編成する場合は，表内の全チャンクの使用中のカラムデータ用セグメント数を合計してください。

再編成対象の行数

再編成対象のチャンク内のデータ件数を代入してください。

表全体を再編成する場合は，表のデータ件数を代入してください。

adbsqlコマンドの#GETCOUNTコマンドを実行すると，チャンク内のデータ件数，または表のデータ件数を求めることができます。

カラムデータ用セグメントに格納されている行数

再編成対象のチャンクにadbimportコマンドでインポートした行数，または更新行のカラム化機能によってローストア形式からカラムストア形式に変換された行数を代入してください。

adbdbstatusコマンドを実行して，再編成要否の情報を取得してください。再編成対象のチャンクのColumn_data_numの値が，カラムデータ用セグメントに格納されている行数です。

表全体を再編成する場合は，表内の全チャンクのColumn_data_numの値を合計してください。

■少量のデータをバックグラウンドインポートで繰り返し追加したことによって再編成をした場合

adbimportコマンドを実行する際，インポートオプションadb_import_rthd_numには，次の計算式を満たす値を指定してください。計算式を満たさない値を指定すると，データの格納効率が悪くなるおそれがあります。

計算式

インポートオプションadb_import_rthd_numの指定値 ≦
    ↑ 再編成対象のセグメント数 × データの格納効率 ↑＋1

再編成対象のセグメント数

ローストア表を再編成する場合

再編成対象のチャンクの使用中セグメント数を代入してください。

-d usedオプションを指定したadbdbstatusコマンドで，DBエリア，表とインデクスの使用量情報を出力してください。そして，Chunk_ID（チャンクID）をキーにしてUsed_segments（チャンクごとの使用中セグメント数）の出力内容を確認してください。

adbdbstatusコマンドについては，マニュアルHADB　コマンドリファレンスのadbdbstatus（データベースの状態解析）を参照してください。

表全体を再編成する場合は，表内の全チャンクの使用中セグメント数を合計してください。

カラムストア表を再編成する場合

再編成対象のチャンクの使用中のカラムデータ用セグメント数を代入してください。-d usedオプションを指定したadbdbstatusコマンドで，DBエリア，表とインデクスの使用量情報を出力してください。そして，Chunk_ID（チャンクID）をキーにして，Segment_type（セグメントの種類）がColumn_dataの行のUsed_segments（使用中セグメント数）の出力内容を確認してください。

adbdbstatusコマンドについては，マニュアルHADB　コマンドリファレンスのadbdbstatus（データベースの状態解析）を参照してください。

表全体を再編成する場合は，表内の全チャンクの使用中のカラムデータ用セグメント数を合計してください。

データの格納効率

再編成対象のチャンクのデータの格納効率を代入してください。「11.5.13　マルチチャンク表の再編成が必要かどうかを確認する方法」の「(2)　再編成が必要かどうかを確認する方法」の「(c)　少量のデータをバックグラウンドインポートで繰り返し追加した場合」で求めた値を代入してください。

表全体を再編成する場合は，表内の全チャンクのデータの格納効率を計算してください。

11.5.15　マルチチャンク表を再編成する方法（表全体を再編成する場合）

マルチチャンク表全体を再編成する方法を説明します。

重要

マルチチャンク表全体を再編成する場合（特にデータ件数が多い場合），再編成に時間が掛かるおそれがあります。このため，マルチチャンク表全体を再編成するのではなく，再編成が必要なチャンクだけを定期的に再編成することを推奨します。

マルチチャンク表全体の再編成は，次のどちらかの方法で行います。通常は，1.の方法でマルチチャンク表全体の再編成を実行してください。

表の再編成後もチャンクの構成を同じにする方法

この方法の場合，再編成中の表を検索することができます（更新はできません）。また，チャンクの構成，状態，およびコメントを，再編成前の状態と同じにできます。

ただし，再編成前と再編成後の両方のデータを一時的に保持する必要があるため，再編成対象の表を格納しているデータ用DBエリアにその分の空き容量が必要になります。空き容量が不足している場合は，この方法は実施できません。そのため，この方法を実施する場合は，adbdbstatusコマンドで，再編成を実行するチャンクのデータ容量と，表を格納しているデータ用DBエリアの空き容量を比較してください。adbdbstatusコマンドについては，マニュアルHADB　コマンドリファレンスのadbdbstatus（データベースの状態解析）を参照してください。

この方法の再編成手順については，「(1)　表の再編成後もチャンクの構成を同じにしたい場合」を参照してください。

表の再編成後はデータを1つのチャンクにまとめる方法

再編成対象の表を格納しているデータ用DBエリアの空き容量が不足しているために1.の方法が実施できない場合は，この方法で表の再編成を実行してください。この方法の場合，再編成中の表を検索，更新することはできません。また，表中の全データを1つのチャンクにまとめて再編成するため，チャンクの構成，状態，コメントが変わります。

この方法の再編成手順については，「(2)　表の再編成後はデータを1つのチャンクにまとめてもよい場合」を参照してください。

なお，カレントチャンクだけが再編成対象となる場合，カレントチャンクに格納されているデータ容量分の空き容量がデータ用DBエリアに必要になります。

(1)　表の再編成後もチャンクの構成を同じにしたい場合

ここで説明する方法で表を再編成した場合，チャンクの構成，状態，およびコメントを，再編成前の状態と同じにできます。チャンクIDは，表の再編成前とは異なるチャンクIDになります。

表の再編成手順を次に示します。

手順

APやコマンドが再編成対象の表を更新できない状態にする

次の操作を実行して，APやコマンドが再編成対象の表を更新できない状態にしてください。

HADBサーバマシン上で動作している，再編成対象の表を更新するコマンドやジョブ（定期的に実行しているadbimportコマンドやadbmergechunkコマンドなど）を停止してください。

HADBサーバにアクセスして再編成対象の表を更新するAPや，HADBサーバにアクセスして再編成対象の表を更新するコマンドをすべて停止してください。

上記の操作を両方とも実行することを推奨します。

再編成対象の表の全チャンクの情報を取得する

システム表STATUS_CHUNKS表をSQL文で検索し，再編成対象の表の全チャンクの情報を取得してください。次の情報を取得します。

CHUNK_ID（チャンクID）

CHUNK_COMMENT（チャンクに設定されたコメント）

CHUNK_STATUS（チャンクの状態）

CREATE_TIME（チャンクの作成日時）

SWAP_TIME（カレントチャンクが切り替わった日時）

上記の情報を検索するSQL文の例については，「付録C.9　システム表の検索」の「(3)　表名から表内の全チャンクの情報を調べる場合」を参照してください。

重要

カレントチャンクを確認しておいてください。CREATE_TIME（チャンクの作成日時）が設定されていて，かつSWAP_TIME（カレントチャンクが切り替わった日時）がナル値のチャンクが，カレントチャンクです。

チャンク単位に再編成を実行する

再編成対象の表の全チャンクに対して，手順a.～手順d.を繰り返して，チャンク単位に再編成を実行してください。

重要

カレントチャンクは最後に再編成してください。

チャンク単位にデータをエクスポートする

-cオプションを指定したadbexportコマンドで，チャンク単位にデータをエクスポートしてください。チャンク単位にエクスポートする方法については，「11.5.5　チャンク単位にデータをエクスポートする方法」を参照してください。

エクスポートしたデータを，待機状態のチャンクとしてバックグラウンドインポートする

adbimportコマンドに次に示すオプションを指定して，手順a.でエクスポートしたデータをバックグラウンドインポートしてください。

-bオプション

--status waitオプション

--status waitオプションを指定すると，待機状態のチャンクが作成されてデータが格納されます。

-mオプション

手順2.で確認したチャンクに設定されたコメントを指定してください。

待機状態のチャンクを作成するバックグラウンドインポートについては，「11.5.4　マルチチャンク表にインポートするデータを一時的に検索対象外にする方法（待機状態のチャンクの作成）」を参照してください。

重要

adbimportコマンドを実行する際，インポートオプションadb_import_rthd_numには，「11.5.14　マルチチャンク表を再編成する方法（チャンク単位で再編成する場合）」の「(3)　インポートオプションの見積もり」に示す計算式を満たす値を指定してください。計算式を満たさない値を指定すると，データの格納効率が悪くなるおそれがあります。

チャンクの状態を変更する

手順2.で調べた再編成対象のチャンクの状態が待機状態だった場合，この手順は不要です。手順d.に進んでください。

手順2.で調べた再編成対象のチャンクの状態が通常状態だった場合，-wオプションと-nオプションの両方を指定して，adbchgchunkstatusコマンドを実行してください。2種類のチャンクの状態を同時に変更します。

-wオプションには，手順a.でエクスポートしたデータを格納しているチャンク（再編成対象のチャンク）を指定します。このチャンクを通常状態から，待機状態に変更します。

-nオプションには，手順b.でバックグラウンドインポートした待機状態のチャンクを指定します。このチャンクを待機状態から，通常状態に変更します。

チャンクの状態を変更する方法については，「11.5.12　チャンクの状態を変更する方法」を参照してください。

再編成対象のチャンクを削除する

手順a.でエクスポートしたチャンクのデータを，PURGE CHUNK文で削除してください。なお，PURGE CHUNK文は，マルチチャンク表の検索と同時に実行できません。そのため，マルチチャンク表に対する操作が存在しないタイミングで，PURGE CHUNK文を実行してください。

PURGE CHUNK文でチャンクを削除する方法については，「11.5.6　チャンク単位にデータを削除する方法」を参照してください。

APやコマンドが再編成対象の表を更新できる状態にする

すべてのチャンクに対して手順3.の作業が完了したあとに，次の方法でAPやコマンドが再編成対象の表を更新できる状態にしてください。

手順1.で，HADBサーバマシン上で動作しているコマンドやジョブを停止した場合

停止していたコマンドやジョブを開始してください。

手順1.で，HADBサーバにアクセスするAPやコマンドを停止した場合

停止していたAPやコマンドを開始してください。

重要

再編成中の表に対して，更新系SQLまたは表を更新するコマンド（adbimportコマンドやadbmergechunkコマンドなど）を実行しないでください。実行した場合，SQL文やコマンドで更新した内容が，再編成後に失われるおそれがあります。

(2)　表の再編成後はデータを1つのチャンクにまとめてもよい場合

ここで説明する方法で表を再編成した場合，再編成後のチャンクは1つになるため，チャンクの構成，状態，コメント，チャンクIDが変わります。

表の再編成手順を次に示します。

手順

APやコマンドが再編成対象の表にアクセスできない状態にする

次の操作を実行して，APやコマンドが再編成対象の表にアクセスできない状態にしてください。

adbchgsrvmodeコマンドに--offlineオプションを指定して，HADBサーバの稼働モードをオフラインモードに変更してください。さらに，HADBサーバマシン上で動作している，対象表を更新するコマンドやジョブ（定期的に実行しているadbimportコマンドやadbmergechunkコマンドなど）を停止してください。

HADBサーバにアクセスするAPやコマンドをすべて停止してください。

上記の操作を両方とも実行することを推奨します。

表のデータをエクスポートする

adbexportコマンドの-nオプションに再編成対象の表を指定して，表のデータをエクスポートしてください。

adbexportコマンドについては，マニュアルHADB　コマンドリファレンスのadbexport（データのエクスポート）を参照してください。

エクスポートしたデータを作成モードでインポートする

adbimportコマンドに-dオプションを指定して，手順2.でエクスポートしたデータをインポートしてください。-dオプションを指定すると，作成モードでインポートされます。表の既存データをすべて削除してから，手順2.でエクスポートしたデータがインポートされます。

adbimportコマンドについては，マニュアルHADB　コマンドリファレンスのadbimport（データのインポート）を参照してください。

重要

adbimportコマンドを実行する際，インポートオプションadb_import_rthd_numには，「11.5.14　マルチチャンク表を再編成する方法（チャンク単位で再編成する場合）」の「(3)　インポートオプションの見積もり」に示す計算式を満たす値を指定してください。計算式を満たさない値を指定すると，データの格納効率が悪くなるおそれがあります。

APやコマンドが再編成対象の表にアクセスできる状態にする

次の方法で，APやコマンドが再編成対象の表にアクセスできる状態にしてください。

手順1.で，HADBサーバの稼働モードをオフラインモードに変更した場合

adbchgsrvmodeコマンドに--normalオプションを指定して，HADBサーバの稼働モードを通常モードに変更してください。また，HADBサーバマシン上で動作しているコマンドやジョブを停止した場合は，停止していたコマンドやジョブを開始してください。

手順1.で，HADBサーバにアクセスするAPやコマンドを停止した場合

停止していたAPやコマンドを開始してください。

11.5.16　マルチチャンク表を再編成する方法（サンプルシェルを使用して再編成する場合）

HADBでは，マルチチャンク表のチャンクのうち，再編成が必要なチャンクをチャンク単位で再編成するサンプルシェル（$ADBDIR/sample/reorg_column_sample.sh）を提供しています。ここでは，このサンプルシェルを使用した再編成の手順と，サンプルシェルが実行する処理について説明します。

重要

マルチチャンク表がカラムストア表である場合に限り，このサンプルシェルを使用できます。マルチチャンク表がローストア表の場合は，このサンプルシェルは使用できません。

このサンプルシェルは，あくまでサンプルであり，動作保証はしていません。使用する前に必ずサンプルシェルの内容を確認し，必要に応じて修正してください。サンプルシェルの内容を確認しないで使用し，エラーが発生した場合は，データベースが破壊されるおそれがあります。

サンプルシェルを使用した場合，再編成中の表にアクセスすることはできません。

(1)　サンプルシェルを使用した表の再編成手順

サンプルシェルを使用した表の再編成手順を次に示します。

手順

データ用DBエリアの空き容量を確認する

サンプルシェルを実行するには，再編成対象の表を格納しているデータ用DBエリアに，カレントチャンクに格納されているデータ容量分の空き容量が必要になります。

データ用DBエリアの空き容量が不足している場合は，「11.13.6　データ用DBエリアの空き容量を確保する方法」を参照して，空き容量不足を解消してください。

作業用ディレクトリを準備する

必ず，空のディレクトリを準備してください。HADBサーバが，表の再編成処理中に作成するファイルがこのディレクトリに格納されます。

サンプルシェルを実行する

サンプルシェルのコマンドの形式を次に示します。

■サンプルシェルのコマンドの形式

reorg_column_sample.sh user password schema table workdir

表11‒9　引数に指定する内容

項番

引数

指定する内容

1

user

HADBユーザの認可識別子を指定します。

2

password

HADBユーザのパスワードを指定します。

3

schema

再編成対象のカラムストア表のスキーマ名を指定します。

4

table

再編成対象のカラムストア表の表名を指定します。

5

workdir

作業用ディレクトリを指定します。必ず，空のディレクトリを指定してください。

サンプルシェルの実行時，作業用ディレクトリ下に次のファイルが生成されます。サンプルシェルが最後まで正常に実行されると，すべてのファイルが削除されます。

adbdbstatusコマンドの実行結果

出力データパスファイル

再編成するチャンクの出力データファイル

空のチャンク作成用の入力データファイル

空のチャンク作成用の入力データパスファイル

例題

サンプルシェルを使用して，カラムストア表のデータをチャンク単位に再編成します。表名などは次のとおりとします。

認可識別子，スキーマ名：ADBUSER01

パスワード：ADBPASSWORD

処理対象のカラムストア表：T1

作業用ディレクトリ：/home/adbmanager/work_dir

■サンプルシェルのコマンドの指定例

reorg_column_sample.sh ADBUSER01 ADBPASSWORD ADBUSER01 T1 /home/adbmanager/work_dir

重要

サンプルシェルの内部で呼び出す各コマンドでエラーが発生した場合は，エラーの内容を必ず確認してください。そして，必要に応じて対策してから，サンプルシェルを使用してください。

サンプルシェルのコマンドの引数の指定（ユーザ名や，表名など）中に空白を含む場合は，サンプルシェルを使用しないでください。

(2)　サンプルシェルによって実行される処理

サンプルシェルを実行すると，再編成対象の表へのアクセスを停止し，再編成が必要なすべてのチャンクを再編成します。

サンプルシェルによって実行される処理の流れを次に示します。

■処理の流れ

adbchgsrvmode --offlineコマンドが実行されて，HADBサーバの稼働モードがオフラインモードに変更されます。

オフラインモードの詳細については，「10.2.3　HADBサーバの稼働モード」を参照してください。

現在のカレントチャンクのチャンクに設定されたコメント，チャンクID，およびチャンクの状態が取得されます。

次のadbdbstatusコマンドが実行されて，再編成が必要なチャンクのチャンクIDが取得されます。

adbdbstatus -d reorginfo -n 処理対象のカラムストア表 -t

3.で取得したチャンクのうち，カレントチャンク以外のチャンクに対して，次に示す処理a.～処理d.が順に繰り返されます。

再編成対象のチャンクに設定されたコメント，およびチャンクの状態が取得されます。

再編成対象のチャンクのデータがエクスポートされます。

再編成対象のチャンクのデータが削除されます。

処理b.でエクスポートされたデータがインポートされます。このとき，処理a.で取得されたチャンクのコメント，およびチャンクの状態に合わせてインポートが実行されます。

2.で取得されたカレントチャンクが再編成対象の場合は，カレントチャンクに対して4.の処理a.～処理d.が実行されます。2.で取得されたカレントチャンクが再編成対象でない場合は，空のチャンクが作成されて，カレントチャンクとマージされます。

adbchgsrvmode --normalコマンドが実行されて，HADBサーバの稼働モードが通常モードに変更されます。

11.5.17　チャンクをアーカイブする方法（アーカイブマルチチャンク表使用時）

アーカイブマルチチャンク表のチャンクをアーカイブする場合（チャンクをアーカイブ状態にする場合）は，adbarchivechunkコマンドを実行してください。手順を次に示します。

手順

アーカイブ状態にするチャンクを特定する

アーカイブレンジ列の値を使用して，アーカイブ状態にするチャンクを特定してください。adbarchivechunkコマンドに-rオプションと-tオプションを指定して実行すると，アーカイブレンジ列の値の範囲に含まれるチャンクのチャンクIDを確認できます。

指定例

アーカイブレンジ列中の日時情報に2015年1月1日〜2015年1月31日が含まれているチャンクを確認します。

adbarchivechunk -u ADBUSER01 -p '#HelloHADB_01'
                -r '2015/01/01-2015/01/31'
                -t
                SALESLIST

adbarchivechunkコマンドに-rオプションと-tオプションを指定して実行すると，KFAA80245-Iメッセージが出力されます。-rオプションに指定した日付の範囲に含まれるチャンクのチャンクIDをKFAA80245-Iメッセージで確認できます。

チャンクをアーカイブ状態にする

adbarchivechunkコマンドを実行して，チャンクをアーカイブ状態にしてください。このとき，手順1.で調べたチャンクIDを-cオプションに指定します。

指定例

チャンクIDが5のチャンクをアーカイブ状態にします。

adbarchivechunk -u ADBUSER01 -p '#HelloHADB_01'
                -z /home/adbmanager/archive_file/archive_opt_file.txt
                -c 5
                SALESLIST

メモ

adbarchivechunkコマンドに-cオプションではなく，-rオプションでアーカイブレンジ列の値の範囲を指定して，アーカイブ状態にするチャンクを指定することもできます。

アーカイブ状態のチャンクの圧縮率や，アーカイブファイルのファイルサイズを確認したい場合は，adbdbstatusコマンドに-c archivechunkオプションと-nオプションを指定して，アーカイブ状態のチャンクのサマリ情報を出力してください。-nオプションには，アーカイブ状態にしたチャンクがあるアーカイブマルチチャンク表の表名を指定します。そして，次に示す情報を確認してください。

Archive_file_size（アーカイブ状態のチャンクに対応している全アーカイブファイルのファイルサイズの合計値）

Compression_ratio（アーカイブ状態のチャンクの圧縮率）

メモ

adbarchivechunkコマンドについては，マニュアルHADB　コマンドリファレンスのadbarchivechunk（チャンクのアーカイブ）を参照してください。

adbdbstatusコマンドについては，マニュアルHADB　コマンドリファレンスのadbdbstatus（データベースの状態解析）を参照してください。

11.5.18　チャンクをアンアーカイブする方法（アーカイブマルチチャンク表使用時）

アーカイブマルチチャンク表のチャンクをアンアーカイブする場合（チャンクのアーカイブ状態を解除する場合）は，adbunarchivechunkコマンドを実行してください。手順を次に示します。

手順

アーカイブ状態を解除するチャンクを特定する

アーカイブレンジ列の値を使用して，アーカイブ状態を解除するチャンクを特定してください。adbunarchivechunkコマンドに-rオプションと-tオプションを指定して実行すると，アーカイブレンジ列の値の範囲に含まれるチャンクのチャンクIDを確認できます。

指定例

アーカイブレンジ列中の日時情報に2015年1月1日〜2015年1月31日が含まれているチャンクを確認します。

adbunarchivechunk -u ADBUSER01 -p '#HelloHADB_01'
                  -r '2015/01/01-2015/01/31'
                  -t
                  SALESLIST

adbunarchivechunkコマンドに-rオプションと-tオプションを指定して実行すると，KFAA80245-Iメッセージが出力されます。-rオプションに指定した日付の範囲に含まれるチャンクのチャンクIDをKFAA80245-Iメッセージで確認できます。

アーカイブ状態を解除したあとのデータ容量を確認する

チャンクのアーカイブ状態を解除するとデータ容量が増えます。データ容量が増えても問題がないかを確認してください。アーカイブ状態を解除したあとのチャンクのデータ容量を確認する場合は，adbdbstatusコマンドに-c archivechunkオプションと-nオプションを指定して，「アーカイブ状態のチャンクのサマリ情報」を出力してください。-nオプションには，アーカイブ状態を解除するチャンクがあるアーカイブマルチチャンク表の表名を指定します。

「アーカイブ状態のチャンクのサマリ情報」で，アーカイブ状態を解除するチャンクについて，次に示す情報を確認してください。

Unarchive_table_size（アーカイブ状態になる前のチャンクで，表を格納するために使用していたセグメントの容量）

Unarchive_index_size（アーカイブ状態になる前のチャンクで，インデクスを格納するために使用していたセグメントの容量）

上記の値の合計が，アーカイブ状態を解除したあとのチャンクのデータ容量（表データとインデクスデータ）の目安になります。

チャンクのアーカイブ状態を解除する

アーカイブ状態を解除したあとのデータ容量に問題がない場合は，adbunarchivechunkコマンドでチャンクのアーカイブ状態を解除してください。このとき，手順1.で調べたチャンクIDを-cオプションに指定してください。

指定例

チャンクIDが5のチャンクのアーカイブ状態を解除します。

adbunarchivechunk -u ADBUSER01 -p '#HelloHADB_01'
                  -w /home/adbmanager/tmp
                  -z /home/adbmanager/unarchive_file/unarchive_opt_file.txt
                  -c 5
                  SALESLIST

メモ

adbunarchivechunkコマンドに-cオプションではなく，-rオプションでアーカイブレンジ列の値の範囲を指定して，アーカイブ状態を解除するチャンクを指定することもできます。

アーカイブ状態を解除したチャンクについて，指定した範囲のチャンクのアーカイブ状態を解除できているかを確認したい場合は，adbdbstatusコマンドに-c archivechunkオプションと-nオプションを指定して，「アーカイブ状態のチャンクのサマリ情報」を出力してください。-nオプションには，アーカイブ状態を解除したチャンクがあるアーカイブマルチチャンク表の表名を指定します。そして，次に示す情報を確認してください。

Range_min（アーカイブレンジ列の最小値）

Range_max（アーカイブレンジ列の最大値）

また，アーカイブ状態を解除したチャンクについて，データ容量を確認したい場合は，adbdbstatusコマンドに-d usedオプション，-c tableオプションおよび-nオプションを指定して，「使用量情報」を出力してください。-nオプションには，アーカイブ状態を解除したチャンクがあるアーカイブマルチチャンク表の表名を指定します。そして，次に示す情報を確認してください。

Used_segments（使用中セグメント数）

Used_pages（使用中ページ数）

メモ

adbunarchivechunkコマンドを実行すると，HADBサーバはアーカイブ状態を解除するために，システムが使用する一時的なチャンクを作成します。そのため，adbunarchivechunkコマンドを実行したあとに，バックグラウンドインポートやチャンクのマージを実行しても，作成されるチャンクのチャンクIDは「前回作成されたチャンクのチャンクIDに1が加算された番号」にはなりません。

adbunarchivechunkコマンドについては，マニュアルHADB　コマンドリファレンスのadbunarchivechunk（チャンクのアンアーカイブ）を参照してください。

adbdbstatusコマンドについては，マニュアルHADB　コマンドリファレンスのadbdbstatus（データベースの状態解析）を参照してください。

11.5.19　アーカイブ状態のチャンクを確認する方法

adbdbstatusコマンドを実行すると，アーカイブ状態のチャンクを確認できます。手順を次に示します。

手順

adbdbstatusコマンドを実行する

adbdbstatusコマンドを実行して，「アーカイブ状態のチャンクのサマリ情報」を出力してください。

指定例

adbdbstatus -c archivechunk -n ADBUSER01.SALESLIST

adbdbstatusコマンドの実行結果を確認する

adbdbstatusコマンドの実行結果のArchive_statusを確認してください。

Archive_statusに「Archived」が表示されているチャンクは，アーカイブ状態のチャンクです。Archive_statusに何も表示されていないチャンクは，アーカイブされていないチャンクです。

メモ

adbdbstatusコマンドについては，マニュアルHADB　コマンドリファレンスのadbdbstatus（データベースの状態解析）を参照してください。

11.5.20　レギュラーマルチチャンク表をアーカイブマルチチャンク表に変更する方法

レギュラーマルチチャンク表をアーカイブマルチチャンク表に変更するには，ALTER TABLE文を実行します。手順を次に示します。

重要

カラムストア表の場合は，レギュラーマルチチャンク表からアーカイブマルチチャンク表には変更できません。

手順

無効化されるビュー表の有無を確認する

レギュラーマルチチャンク表をアーカイブマルチチャンク表に変更すると，処理対象表に依存するビュー表は無効化されます。そのため，レギュラーマルチチャンク表をアーカイブマルチチャンク表に変更する前に，無効化されるビュー表があるかどうかを確認してください。無効化されるビュー表（依存するビュー表）を調べる場合は，「11.2.11　依存するビュー表を確認する方法」を参照してください。

もし，無効化されるビュー表がある場合は，レギュラーマルチチャンク表をアーカイブマルチチャンク表に変更したあとで，ビュー表の無効化を解除する必要があります。

データ用DBエリア内に作成できるチャンク数を確認する

adbdbstatusコマンドで，レギュラーマルチチャンク表が格納されているデータ用DBエリアの「DBエリアのサマリ情報」を出力してください。そして，次の項目に出力される値が10以上であることを確認してください。

Creatable_chunks（DBエリア内に作成できるチャンク数の上限）

10未満の場合は，レギュラーマルチチャンク表をアーカイブマルチチャンク表に変更できません。アーカイブマルチチャンク表に変更した際に，HADBサーバが自動的に定義するロケーション表とロケーション表のインデクスによって，チャンク数が使用されます。

メモ

adbdbstatusコマンドについては，マニュアルHADB　コマンドリファレンスのadbdbstatus（データベースの状態解析）を参照してください。

アーカイブレンジ列として指定する列を検討する

レギュラーマルチチャンク表の構成列から，アーカイブレンジ列として指定する列を検討してください。アーカイブレンジ列として指定する列を検討する場合は，「5.2.5　アーカイブマルチチャンク表を定義する場合の考慮点【ローストア表】」の「(5)　アーカイブレンジ列の指定」を参照してください。

アーカイブレンジ列として指定する列にレンジインデクスが定義されているかどうかを確認する

手順3.で，アーカイブレンジ列として指定する列を決めたあとで，アーカイブレンジ列に指定する列にレンジインデクスが定義されているかどうかを確認してください。レンジインデクスが定義されているかどうかを確認する場合は，「付録B.24　ディクショナリ表の検索」の「(28)　アーカイブマルチチャンク表のアーカイブレンジ列に定義されたレンジインデクスを調べる場合」を参照してください。

レギュラーマルチチャンク表をアーカイブマルチチャンク表に変更する

ALTER TABLE文で，レギュラーマルチチャンク表をアーカイブマルチチャンク表に変更してください。なお，手順4.の確認結果によってALTER TABLE文の指定方法が異なります。

アーカイブレンジ列として指定する列にレンジインデクスが定義されている場合

ALTER TABLE文のチャンクアーカイブ指定に，「IN DBエリア名」を指定しないでください。

ALTER TABLE文の実行が完了したら，手順7.に進んでください。

アーカイブレンジ列として指定する列にレンジインデクスが定義されていない場合

ALTER TABLE文のチャンクアーカイブ指定に，「IN DBエリア名」を指定してください。「IN DBエリア名」に指定したDBエリアに，HADBサーバが自動的に定義したレンジインデクスが格納されます。レンジインデクスは，アーカイブレンジ列として指定する列に定義されます。

ALTER TABLE文の実行が完了したら，手順6.に進んでください。

メモ

ALTER TABLE文は，マニュアルHADB　SQLリファレンスのALTER TABLE（表定義の変更）を参照してください。

HADBサーバが自動的に定義したレンジインデクスを再作成する

手順5.で，ALTER TABLE文のチャンクアーカイブ指定に「IN DBエリア名」を指定した場合は，対象のアーカイブマルチチャンク表に対して，adbidxrebuildコマンドを実行してください。adbidxrebuildコマンドを実行して，HADBサーバが自動的に定義したレンジインデクスを再作成します。

adbidxrebuildコマンドの実行が完了したら，手順7.に進んでください。

ビュー表の無効化を解除する

処理対象表に依存するビュー表がある場合は，ビュー表の無効化を解除してください。ビュー表の無効化を解除する場合は，「11.2.8　ビュー表の無効化を解除する方法」の「(1)　ALTER TABLE文で表の種別を変更したことによってビュー表が無効化された場合」を参照してください。

これで，レギュラーマルチチャンク表から，アーカイブマルチチャンク表への変更が完了します。

11.5.21　アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更する方法

アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更するには，ALTER TABLE文を実行します。

重要

アーカイブマルチチャンク表にアーカイブ状態のチャンクが存在する場合は，レギュラーマルチチャンク表に変更できません。チャンクのアーカイブ状態を解除する必要があります。

なお，「アーカイブ状態で，かつ削除仕掛中のチャンク」が存在する場合は，adbunarchivechunkコマンドでチャンクのアーカイブ状態を解除できません。PURGE CHUNK文で，対象のチャンクを削除する必要があります。

手順

無効化されるビュー表の有無を確認する

アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更すると，処理対象表に依存するビュー表は無効化されます。そのため，アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更する前に，無効化されるビュー表があるかどうかを確認してください。無効化されるビュー表（依存するビュー表）を調べる場合は，「11.2.11　依存するビュー表を確認する方法」を参照してください。

もし，無効化されるビュー表がある場合は，アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更したあとで，ビュー表の無効化を解除する必要があります。

「アーカイブ状態のチャンク」と「アーカイブ状態で，かつ削除仕掛中のチャンク」の有無を確認する

adbdbstatusコマンドで，アーカイブマルチチャンク表の「表のサマリ情報」を出力してください。そして，次の項目を確認してください（最初に，Archive_chunksを確認してください）。

Archive_chunks（アーカイブ状態のチャンク数）

Archive_chunksの値が0の場合は，手順3.に進んでください。1以上の場合は，アーカイブ状態のチャンクが存在します。adbunarchivechunkコマンドを実行して，全チャンクのアーカイブ状態を解除してください。

その後，adbdbstatusコマンドを再度実行し，Archive_chunksの値が0になっていることを確認してください。0にならない場合は，次に示すPending_delete_chunksを確認してください。

Pending_delete_chunks（表の削除仕掛中のチャンク数）

Pending_delete_chunksの値が1以上で，かつArchive_chunksの値も1以上の場合，「アーカイブ状態で，かつ削除仕掛中のチャンク」が存在します。この場合，PURGE CHUNK文を実行して，「アーカイブ状態で，かつ削除仕掛中のチャンク」をすべて削除してください。

「アーカイブ状態のチャンク」や「アーカイブ状態で，かつ削除仕掛中のチャンク」が存在していると，アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更できません。

メモ

adbdbstatusコマンドについては，マニュアルHADB　コマンドリファレンスのadbdbstatus（データベースの状態解析）を参照してください。

adbunarchivechunkコマンドについては，マニュアルHADB　コマンドリファレンスのadbunarchivechunk（チャンクのアンアーカイブ）を参照してください。

PURGE CHUNK文については，マニュアルHADB　SQLリファレンスのPURGE CHUNK（チャンク内の全行削除）を参照してください。

アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更する

ALTER TABLE文で，アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更してください。

メモ

ALTER TABLE文は，マニュアルHADB　SQLリファレンスのALTER TABLE（表定義の変更）を参照してください。

ビュー表の無効化を解除する

処理対象表に依存するビュー表がある場合は，ビュー表の無効化を解除してください。ビュー表の無効化を解除する場合は，「11.2.8　ビュー表の無効化を解除する方法」の「(1)　ALTER TABLE文で表の種別を変更したことによってビュー表が無効化された場合」を参照してください。

これで，アーカイブマルチチャンク表から，レギュラーマルチチャンク表への変更が完了します。

なお，アーカイブマルチチャンク表のアーカイブレンジ列に自動的に定義されたレンジインデクスは，レギュラーマルチチャンク表に変更しても削除されません。レンジインデクスが不要な場合は，DROP INDEX文で削除してください。レンジインデクスを削除する場合は，「11.4.9　インデクスの削除」を参照してください。

重要

adbunarchivechunkコマンドが中断している状態のときに，ALTER TABLE文を実行しないでください。もし，ALTER TABLE文を実行してしまった場合は，レギュラーマルチチャンク表をアーカイブマルチチャンク表に戻す必要があります。その後，adbunarchivechunkコマンドが中断した状態を解除する必要があります。手順を次に示します。

ALTER TABLE文で，レギュラーマルチチャンク表をアーカイブマルチチャンク表に戻してください。

手順1.で元に戻したアーカイブマルチチャンク表に対して，--forceオプションを指定したadbunarchivechunkコマンドを実行してください。adbunarchivechunkコマンドが中断した状態を解除できます。もし，KFAA50284-Eメッセージが出力されてadbunarchivechunkコマンドがエラーになった場合でも，adbunarchivechunkコマンドが中断した状態は解除されます。

手順1.で元に戻したアーカイブマルチチャンク表を，ALTER TABLE文でレギュラーマルチチャンク表に変更してください。

11.5.22　マルチチャンク表を削除する方法

マルチチャンク表を削除する場合，DROP TABLE文を実行してください。DROP TABLE文については，マニュアルHADB　SQLリファレンスの定義系SQLのDROP TABLE（表の削除）を参照してください。

なお，アーカイブマルチチャンク表を削除した場合，次に示すファイルなども一緒に削除されます。

アーカイブファイル

アーカイブレンジ列に定義されたレンジインデクス

ロケーション表

ロケーション表に定義されたインデクス

11.5.23　バックグラウンドインポートとチャンクを意識した運用例1（定期的にデータの追加と削除を繰り返す運用）

バックグラウンドインポートとチャンクを意識した運用例について説明します。バックグラウンドインポートを使用すると，次に示すような定期的にデータの追加と削除を繰り返す運用ができます。

ここでは，A社の運用例を基に説明します。

■A社の運用例

全国に約1,000の支店を持つA社では，商品の購買履歴を分析する分析システムを導入しています。A社の分析システムのデータベースは，次のように運用されています。

全国にある約1,000の支店の購買履歴データは，分析システムのデータベースの購買履歴表で一元管理します。

分析システムのデータベースには，購買履歴表だけでなく，購買履歴データ以外のマスタデータを管理する店舗表，商品表なども存在します。

1日に1回，全国の各支店から購買履歴データを収集し，まとめて購買履歴表にインポートします。

購買履歴表にデータをインポートしている間も，商品の購買履歴データの分析を実施します。

商品の購買履歴の分析では，6か月ごと，3か月ごと，1か月ごと，1週間ごと，1日ごとの購買履歴をそれぞれ分析します。

システムの検索性能を維持するために，直近1か月分の購買履歴データを毎月1つのチャンクにマージします（チャンク数の増加を抑えます）。

A社の分析業務では，過去6か月分の購買履歴データを必要とします。そのため，購買履歴データが格納されている購買履歴表には，過去6か月分のデータを格納する運用とします。

購買履歴表のデータ容量の増加を抑えるため，6か月より前のデータはバックアップを取得してから削除します。

購買履歴表のデータのバックアップは，月単位で取得します。

購買履歴データの内容に誤りがある場合は，データを修正します。

■分析システムのデータベースのスキーマモデル

A社で運用する分析システムのデータベースのスキーマモデルを，次の図に示します。

図11‒26　A社で運用する分析システムのデータベースのスキーマモデル

［説明］

上記のスタースキーマの場合，購買履歴表（PURCHASE）がファクト表になります。購買履歴表は，データインポートが毎日実行され，その間も分析業務による検索で使用されます。データインポートと表の検索を同時に実行するため，購買履歴表はマルチチャンク表として定義します。また，分析業務では，特定のデータに対する値の集計（平均や合計などを求める）が多いため，購買履歴表はカラムストア表として定義します。「(3)　新しいデータの追加（バックグラウンドインポート）」以降では，この購買履歴表の運用について説明しています。

購買履歴データ以外のマスタデータを管理するために，店舗表（SHOPLIST），商品表（ITEMLIST），顧客表（CUSTOMER），および取引時間表（TRADETIME）を定義します。これらの表は，スタースキーマのディメンジョン表になります。これらの表は，シングルチャンク表かつローストア表として定義します。

■購買履歴表（PURCHASE）に関する運用の流れ

購買履歴表に関する運用の流れを，次の図に示します。

図11‒27　購買履歴表に関する運用の流れ

(1)　更新行のカラム化機能の有効化

カラムストア表である購買履歴表（PURCHASE）に対して，UPDATE文でデータを更新することがあるため，adbcolumnizeコマンドを実行して更新行のカラム化機能を有効にします。

■コマンドの実行例

adbcolumnize --start

メモ

カラムストア表に対してUPDATE文またはINSERT文を実行すると，更新または追加されたデータはローストア形式で格納されるため，カラムストア表の検索性能の低下の原因になります。更新行のカラム化機能を有効にすると，ローストア形式で格納されたデータをカラムストア形式にHADBが自動的に変換するため，カラムストア表の検索性能の低下を防止できます。

(2)　分析システムのデータベースの定義

各支店の購買履歴データを購買履歴表で一元管理するために，購買履歴表（PURCHASE）を定義します。また，購買履歴表にレンジインデクスを定義します。

購買履歴データ以外のマスタデータを管理するために，次の4つの表も定義します。

店舗表（SHOPLIST）

商品表（ITEMLIST）

顧客表（CUSTOMER）

取引時間表（TRADETIME）

(a)　購買履歴表（PURCHASE）の定義

購買履歴表（PURCHASE）は，次のように定義します。

購買履歴表に対してバックグラウンドインポートを実行するため，購買履歴表はマルチチャンク表として定義します。

購買履歴表はスタースキーマのファクト表とするため，購買履歴表はカラムストア表として定義します。

購買履歴表は，DBエリアTBLDAT_001に格納します。

購買履歴表のチャンクの最大数は44にします。見積もり方法を次に示します。

■購買履歴表のチャンクの最大数の見積もり方法

購買履歴表には，過去6か月分のデータを格納します。それを踏まえて，CREATE TABLE文のチャンク指定に指定するチャンク数の最大値を見積もります。

1か月を31日とすると，月に31回バックグラウンドインポートを実行するので，必要なチャンク数は31となります。残り5か月分については，検索性能を維持するために，毎月1つのチャンクにまとめることで，チャンク数を抑えるようにします。

安全率を1.2とすると，作成されるチャンク数の最大値は次の値となります。

作成されるチャンク数の最大値＝ ↑（31＋5）×1.2（安全率）↑＝ 44

メモ

チャンク数が増加すると検索性能に影響を与えます。そのため，使用するチャンク数をできるだけ抑えるように，設計・運用することを推奨します。

この見積もりによって，チャンク数の最大値には44を設定します。この値をCREATE TABLE文のチャンク指定のCHUNKに指定します。購買履歴表を定義するCREATE TABLE文の指定例を次に示します。

■CREATE TABLE文の指定例

CREATE TABLE "PURCHASE"
            ("SHOP_ID"     INTEGER,
             "TRADE_TIME"  TIMESTAMP,
             "ITEM_ID"     INTEGER,
             "ITEM_NAME"   VARCHAR(100),
             "CUSTOMER_ID" INTEGER,
             "PURCHASE_ID" CHAR(8))
    IN "TBLDAT_001"
    CHUNK=44                                ...1
    STORAGE FORMAT COLUMN                   ...2

［説明］

チャンク数の最大値を指定します。この指定をすると，購買履歴表がマルチチャンク表として定義されます。

この指定をすると，購買履歴表がカラムストア表として定義されます。

CREATE TABLE文については，マニュアルHADB　SQLリファレンスの定義系SQLのCREATE TABLE（表の定義）を参照してください。

(b)　購買履歴表（PURCHASE）に対するレンジインデクスの定義

購買履歴表（PURCHASE）に対して，レンジインデクスを定義します。レンジインデクスはDBエリアRIXDAT_001に格納するように定義します。

取引時間（TRADE_TIME列）に対してレンジインデクスを定義します。レンジインデクスを定義するCREATE INDEX文の指定例を次に示します。

■CREATE INDEX文の指定例

CREATE INDEX "TRADE_TIME_RIX"
   ON "PURCHASE"("TRADE_TIME") IN "RIXDAT_001"
      EMPTY INDEXTYPE RANGE

CREATE INDEX文については，マニュアルHADB　SQLリファレンスの定義系SQLのCREATE INDEX（インデクスの定義）を参照してください。

(c)　購買履歴表（PURCHASE）以外の表の定義

購買履歴データ以外のマスタデータを管理するために，次の表も定義します。

店舗表（SHOPLIST）

商品表（ITEMLIST）

顧客表（CUSTOMER）

取引時間表（TRADETIME）

上記の表は，次のように定義します。

上記の表に対しては，バックグラウンドインポートを実行しないため，シングルチャンク表として定義します。

上記の表はスタースキーマのディメンジョン表とするため，ローストア表として定義します。

上記の表は，それぞれDBエリアTBLDAT_002～TBLDAT_005に格納するように定義します。

上記の表の次に示す列に対して，それぞれB-treeインデクスを定義します。B-treeインデクスは，それぞれDBエリアIDXDAT_002～IDXDAT_005に格納するように定義します。

店舗表（SHOPLIST）の支店コード（SHOP_ID列）

商品表（ITEMLIST）の商品ID（ITEM_ID列）

顧客表（CUSTOMER）の顧客番号（CUSTOMER_ID列）

取引時間表（TRADETIME）の取引時間（TRADE_TIME列）

(d)　この運用例で使用する表のイメージ

この運用例で使用する購買履歴表（PURCHASE）のイメージを，次の図に示します。

図11‒28　この運用例で使用する購買履歴表（PURCHASE）のイメージ

(3)　新しいデータの追加（バックグラウンドインポート）

1日に1回，全国の各支店から収集した新しい購買履歴データを，購買履歴表（PURCHASE）に追加します。

新しいデータの追加は，バックグラウンドインポートで実行します。1回のバックグラウンドインポートでマルチチャンク表に格納したデータ，およびそのインデクスは，1つの固まり（チャンク）として管理されます。チャンクについては，「2.14.2　データインポート単位のデータ管理（チャンク）」を参照してください。

メモ

データをチャンク単位で管理することで，チャンク単位でのバックアップの取得や，データの削除ができます。バックグラウンドインポートやチャンクのマージの際に，チャンクに対してコメントを設定できます。コメントを設定しておくと，管理対象とするチャンクを特定しやすくなります。

バックグラウンドインポートには，-bオプションを指定したadbimportコマンドを使用します。adbimportコマンドの実行例を次に示します。

■コマンドの実行例

adbimport -u ADBUSER01 -p '#HelloHADB_01' -k "'" -s , -g 10
          -w /home/adbmanager/tmp
          -z /home/adbmanager/imp_file/imp_opt_file01.txt
          -b -m 'January 2014_daily'
          PURCHASE
          /home/adbmanager/imp_file/imp_data_path01.txt

［説明］

購買履歴表（PURCHASE）に対して，入力データパスファイル（/home/adbmanager/imp_file/imp_data_path01.txt）に設定した入力データファイルの内容をバックグラウンドインポートします。

adbimportコマンドについては，マニュアルHADB　コマンドリファレンスのadbimport（データのインポート）を参照してください。また，「11.5.2　マルチチャンク表にデータを格納する方法（バックグラウンドインポート）」も参照してください。

(4)　バックグラウンドインポートしたデータの修正

「(3)　新しいデータの追加（バックグラウンドインポート）」でバックグラウンドインポートしたデータの内容に誤りがあった場合，データの修正量が少ないときは，UPDATE文またはDELETE文でデータを修正してください。UPDATE文でデータを1件修正する例を次に示します。

■SQL文の実行例

UPDATE "PURCHASE" SET "ITEM_ID"=103 WHERE "PURCHASE_ID"='A0015309'

［説明］

購買履歴表（PURCHASE）に対して，購買履歴ID（PURCHASE_ID）がA0015309のデータの，商品ID（ITEM_ID）を103に更新します。

UPDATE文については，マニュアルHADB　SQLリファレンスのUPDATE（行の更新）を参照してください。

なお，大量のデータ修正が必要な場合は，入力データファイルの内容を修正し，adbimportコマンドを実行して，修正後のデータに入れ替えることを推奨します。修正後のデータに入れ替える手順については，「11.5.12　チャンクの状態を変更する方法」の「(4)　運用例（チャンク内のデータを入れ替える）」を参照してください。

(5)　データの検索

購買履歴表（PURCHASE）に対するバックグラウンドインポートの実行中も，購買履歴表中のデータを検索できます。

バックグラウンドインポートによってデータを追加することで，インポートの対象となるデータベースに対して検索を実行しているユーザが存在しても，データのインポートを実行できます（検索と並行してデータのインポートを実行できます）。

バックグラウンドインポートとデータの検索の関係を次の図に示します。

図11‒29　バックグラウンドインポートとデータの検索の関係

購買履歴表に格納されている購買履歴データを，半年間，3か月間，1か月間，1週間，1日単位で分析します。

マルチチャンク表である購買履歴表にレンジインデクスが定義されている場合，レンジインデクスはキーとなるデータの，チャンク内での最大値・最小値（値域）を保持しています。検索時には探索条件に含まれないデータを格納しているチャンクがスキップされるため，効率良く検索できます。

購買履歴表にレンジインデクスが定義されている場合の処理を次の図に示します。

図11‒30　購買履歴表にレンジインデクスが定義されている場合の処理

［説明］

この例の場合，取引時間（TRADE_TIME列）に対してレンジインデクスが定義されています。そのため，取引時間で検索する際に，探索条件に含まれない取引時間のデータが格納されているチャンクの検索はスキップされます。

(6)　チャンクのマージ

購買履歴表（PURCHASE）中の月ごとのデータを1つのチャンクにまとめることで，チャンク数の増加による検索性能の低下を回避します。この例では，購買履歴表中の1か月分（2014年1月分）のデータを1つのチャンクにまとめます。

(a)　マージ対象とするチャンクの特定

マージ対象とするチャンクのチャンクIDを特定するには，次に示すように，システム表STATUS_CHUNKSを検索します。

SQL文の例を次に示します。

■SQL文の例

SELECT "CHUNK_ID" FROM "MASTER"."STATUS_CHUNKS" TC
   WHERE "TABLE_SCHEMA"='ADBUSER01' AND "TABLE_NAME"='PURCHASE'
      AND "CHUNK_COMMENT"='January 2014_daily'

■検索結果

 CHUNK_ID
 --------------------
                    1
           （中略）
                   31

［説明］

この例の場合は，バックグラウンドインポート時に付加したチャンクのコメント（'January 2014_daily'）をキーにSTATUS_CHUNKS表を検索することで，マージ対象とするチャンクのチャンクID（1～31）を特定しています。

対象となるチャンクと，そのチャンクIDについては，「11.5.8　チャンクの状態や作成されているチャンク数を確認する方法」を参照して確認してください。

(b)　チャンクの再編成要否の確認

「(a)　マージ対象とするチャンクの特定」で確認したマージ対象のチャンクに対して，チャンクの再編成が必要かどうかを確認します。確認するには，adbdbstatusコマンドで再編成要否の情報を取得します。

コマンドの実行例を次に示します。

■コマンドの実行例

adbdbstatus -d reorginfo -n ADBUSER01.PURCHASE -c 1-31

［説明］

この例の場合は，マージ対象とするチャンクのチャンクID（1～31）の再編成要否の情報を取得しています。

再編成要否の情報（Reorganization_necessity）はチャンクごとに出力されます。Reorganization_necessityがRecommendedの場合，そのチャンクの再編成を実行してください。チャンクの再編成手順については，「(c)　チャンクの再編成」を参照してください。

チャンクの再編成後，「(d)　チャンクのマージ」に示す方法で1つのチャンクにマージします。

(c)　チャンクの再編成

「(b)　チャンクの再編成要否の確認」で，再編成要否の情報（Reorganization_necessity）がRecommendedのチャンクがある場合，そのチャンクの再編成を実行します。ここでは，チャンクIDが2のチャンクが再編成の対象となった場合を例に，チャンクを再編成する手順を説明します。

■チャンクを再編成する手順

購買履歴表（PURCHASE）を更新するコマンド，ジョブ，およびAPを停止する

システム表STATUS_CHUNKを検索し，チャンクIDが2のチャンクの状態とコメントを確認する

■SQL文の実行例

SELECT CHUNK_ID, CHUNK_COMMENT, CHUNK_STATUS
  FROM "MASTER"."STATUS_CHUNKS"
    WHERE "TABLE_SCHEMA"='ADBUSER01' AND "TABLE_NAME"='PURCHASE'
      AND "CHUNK_ID"=2

■SQL文の実行結果

CHUNK_ID    CHUNK_COMMENT CHUNK_STATUS
----------- ------------- ------------------------
          2 daily         Normal

adbexportコマンドで，チャンクIDが2のチャンクのデータを出力する

エクスポートオプションファイル（/home/adbmanager/exp_file/exp_opt_file01.txt），出力データパスファイル（/home/adbmanager/exp_file/exp_filepath.txt）を，それぞれ指定して実行します。

■コマンドの実行例

adbexport -u ADBUSER01 -p '#HelloHADB_01'
          -z /home/adbmanager/exp_file/exp_opt_file01.txt
          -n PURCHASE
          -c 2
          /home/adbmanager/exp_file/exp_filepath.txt

■出力データパスファイル（/home/adbmanager/exp_file/exp_filepath.txt）の内容

/home/adbmanager/exp_file/purchase_data0.csv
/home/adbmanager/exp_file/purchase_data1.csv
/home/adbmanager/exp_file/purchase_data2.csv
/home/adbmanager/exp_file/purchase_data3.csv
/home/adbmanager/exp_file/purchase_data4.csv
/home/adbmanager/exp_file/purchase_data5.csv
/home/adbmanager/exp_file/purchase_data6.csv
/home/adbmanager/exp_file/purchase_data7.csv
/home/adbmanager/exp_file/purchase_data8.csv
/home/adbmanager/exp_file/purchase_data9.csv

adbimportコマンドで，出力したデータをインポートする

インポートオプションファイル（/home/adbmanager/imp_file/imp_opt_file01.txt），入力データパスファイル（/home/adbmanager/exp_file/exp_filepath.txt）を，それぞれ指定して実行します。

入力データパスファイルには，adbexportコマンドの実行で使用した出力データパスファイルをそのまま使用します。また，-mオプションには，手順2.で確認したチャンクのコメント（daily）を指定します。

■コマンドの実行例

adbimport -u ADBUSER01 -p '#HelloHADB_01' -k "'" -s , -g 10
          -w /home/adbmanager/tmp
          -z /home/adbmanager/imp_file/imp_opt_file01.txt
          -b --status wait
          -m 'daily'
          PURCHASE
          /home/adbmanager/exp_file/exp_filepath.txt

adbchgchunkstatusコマンドで，チャンクの状態を変更する

再編成の対象のチャンク（チャンクIDは2）と，手順4.で作成したチャンク（チャンクIDは32）の状態を変更します。

■コマンドの実行例

adbchgchunkstatus -u ADBUSER01 -p '#HelloHADB_01'
                  -w 2 -n 32 PURCHASE

上記のコマンドを実行すると，チャンクIDが2のチャンクは待機状態になり，チャンクIDが32のチャンクは通常状態になります。

PURGE CHUNK文で，再編成の対象のチャンク（チャンクIDは2）を削除する

■SQL文の実行例

PURGE CHUNK PURCHASE WHERE CHUNKID=2

購買履歴表（PURCHASE）を更新するコマンド，ジョブ，およびAPを開始する

(d)　チャンクのマージ

チャンクのマージには，adbmergechunkコマンドを使用します。adbmergechunkコマンドの実行例を次に示します。

■コマンドの実行例

adbmergechunk -u ADBUSER01 -p '#HelloHADB_01' -g 2
              -w /home/adbmanager/tmp
              -z /home/adbmanager/merge_file/merge_opt_file01.txt
              -m 'January 2014'
              -c 1-31
              PURCHASE

［説明］

購買履歴表（PURCHASE）に対してマージチャンクオプションファイル（/home/adbmanager/merge_file/merge_opt_file01.txt）に設定した値を入力情報として，-cオプションに指定したチャンクのマージを実行します。

この例では，1から31のチャンクIDのチャンクを1つのチャンクにマージすることで，2014年1月分のデータとしてまとめています。

チャンクのマージの例を次の図に示します。

図11‒31　チャンクのマージの例

チャンクID1から31のチャンクは，adbmergechunkコマンドの正常終了時に自動的に削除されます。

メモ

チャンクをマージすることで検索性能を向上させることができます。また，1表，1DBエリアが管理できるチャンク数には限りがあります。チャンク数が足りない場合には，複数のチャンクを1つにマージすることで，使用するチャンク数を削減できます。

マージ対象のチャンクに対して検索を実行しているユーザが存在しても，マージチャンクは実行できます。

adbmergechunkコマンドについては，マニュアルHADB　コマンドリファレンスのadbmergechunk（チャンクのマージ）を参照してください。また，「11.5.9　チャンクをマージする方法（チャンク数を減らす方法）」も参照してください。

(e)　マージしたチャンクの再編成要否の確認

2014年1月分のデータを1つのチャンクにマージしたあとに，adbdbstatusコマンドを実行して，このチャンクに対する再編成要否の情報（Reorganization_necessity）を確認します。手順を次に示します。

手順

マージしたチャンクのチャンクIDを確認する

■SQL文の実行例

SELECT "CHUNK_ID" FROM "MASTER"."STATUS_CHUNKS" TC
    WHERE "TABLE_SCHEMA"='ADBUSER' AND "TABLE_NAME"='PURCHASE'
      AND "CHUNK_COMMENT"='January 2014'

■SQL文の実行結果

 CHUNK_ID
 -----------------
                32

［説明］

2014年1月分のデータとしてマージされたチャンクのチャンクIDは，上記のSQL文を実行すると確認できます。この例の場合，マージされたチャンクのチャンクIDが32であることがわかります。

再編成要否の情報を確認する

■コマンドの実行例

adbdbstatus -d reorginfo -n ADBUSER01.PURCHASE -c 32

チャンクIDが32のチャンクの再編成要否の情報（Reorganization_necessity）を確認します。Reorganization_necessityがRecommendedの場合，このチャンクの再編成を実行してください。

(7)　データのバックアップ

購買履歴表（PURCHASE）のデータ容量の増加を抑えるために，購買履歴表には過去6か月分のデータを格納する運用にしています。6か月より前のデータはバックアップを取得してから，削除します。バックアップの取得は，1か月に1度実行します。

具体的な手順について，次に示します。

(a)　作成日時が最も古いチャンクの特定

購買履歴表（PURCHASE）で6か月より前のチャンク（作成した日時が最も古いチャンク）を特定します。購買履歴表の最もチャンクの作成日時が古いチャンクを特定するには，次に示すように，システム表STATUS_CHUNKSを検索します。

SQL文の例を次に示します。

■SQL文の例

SELECT "CHUNK_ID" FROM "MASTER"."STATUS_CHUNKS" TC
   WHERE "TABLE_SCHEMA"='ADBUSER01' AND "TABLE_NAME"='PURCHASE'
      AND "CREATE_TIME"=(SELECT MIN("CREATE_TIME")
         FROM "MASTER"."STATUS_CHUNKS"
            WHERE TC."TABLE_SCHEMA"='ADBUSER01'
               AND TC."TABLE_NAME"='PURCHASE')

■検索結果

 CHUNK_ID
 --------------------
                   32
KFAA96404-I 1 rows were selected.

［説明］

STATUS_CHUNKS表を検索した結果，この例の場合はチャンクIDが32のチャンクが，作成日時が最も古いチャンク（6か月より前のチャンク）であることがわかります。

メモ

チャンクをマージした場合は，STATUS_CHUNKS表には，マージ元チャンクのうち，最も古い「チャンクの作成日時」が格納されます。

STATUS_CHUNKS表の検索方法については，「付録C.9　システム表の検索」を参照してください。

(b)　バックアップの取得

購買履歴表（PURCHASE）で最もチャンクの作成日時が古いチャンクのチャンクIDが32であるとわかったので，そのチャンクに含まれるデータのバックアップをCSV形式のファイルで取得します。

バックアップの取得には，adbexportコマンドを使用します。adbexportコマンドの実行例を次に示します。

■コマンドの実行例

adbexport -u ADBUSER01 -p '#HelloHADB_01'
          -z /home/adbmanager/exp_file/exp_opt_file01.txt
          -n PURCHASE
          -c 32
          /home/adbmanager/exp_file/exp_data_path01.txt

■出力データパスファイル（/home/adbmanager/exp_file/exp_data_path01.txt）の内容

/home/adbmanager/exp_backup/backup0001.csv
/home/adbmanager/exp_backup/backup0002.csv
/home/adbmanager/exp_backup/backup0003.csv

［説明］

チャンクIDが32のチャンクに含まれるデータのバックアップをCSV形式のファイル（/home/adbmanager/exp_backup/backup0001.csv，/home/adbmanager/exp_backup/backup0002.csv，/home/adbmanager/exp_backup/backup0003.csv）に取得します。

この例の場合，月ごとにチャンクがマージされているので，1か月分のデータのバックアップになります。

メモ

バックアップを取得するファイルは1つにすることもできますが，複数のファイルに分散することで，出力にかかるオーバヘッドを分散させ性能を向上させることができます。

adbexportコマンドについては，マニュアルHADB　コマンドリファレンスのadbexport（データのエクスポート）を参照してください。また，「11.5.5　チャンク単位にデータをエクスポートする方法」も参照してください。

(8)　古いデータ（チャンク）の削除

購買履歴表（PURCHASE）のデータ容量の増加を抑えるために，6か月より前のデータを削除します。

購買履歴表（PURCHASE）から作成日時が最も古いチャンクを削除します。チャンクを削除するには，PURGE CHUNK文の探索条件にチャンクIDを指定して実行します。

■SQL文の例

PURGE CHUNK "PURCHASE" WHERE CHUNKID=32

［説明］

チャンクIDが32のチャンクに含まれるデータを削除します。

この例の場合，月ごとにチャンクがマージされているので，1か月分のデータが削除されます。

PURGE CHUNK文については，マニュアルHADB　SQLリファレンスの操作系SQLのPURGE CHUNK（チャンク内の全行削除）を参照してください。また，「11.5.6　チャンク単位にデータを削除する方法」も参照してください。

(9)　新しいデータの追加・マージと古いデータの削除の繰り返し

バックグラウンドインポートの実行とチャンクのマージ，およびPURGE CHUNK文を利用したチャンクの削除を繰り返すことで，HADBが管理するデータ量を増やすことなく，購買履歴を分析する運用が継続できます。

11.5.24　バックグラウンドインポートとチャンクを意識した運用例2（待機状態のチャンクを利用した運用）

待機状態のチャンクを利用したバックグラウンドインポートの運用例について説明します。待機状態のチャンクを利用すると，次に示すような任意のタイミングでデータを検索対象にしたり，検索対象外にしたりする運用ができます。

ここでは次のようなシステムでの運用を例に説明します。

全国の各店舗が取り扱う商品データを10の支社から本社が収集し，取り扱う商品データを使用した分析をします。

本社が収集した商品データは，商品表で一元管理します。

商品データは毎月変更されるため，翌月の商品データは各支社から毎月25日までに本社に送付されます。

本社に翌月の商品データが届くたびに，データベースにインポートします。

インポートした翌月の商品データは，月が切り替わるまで，分析対象外にする必要があります。

データベースに翌月の商品データをインポートしている間も，今月の商品データを分析します。

月が切り替わると，分析対象外としていた商品データを分析対象にします。また，今まで分析対象としていた商品データを分析対象外とします。

データベースには，分析対象外とした商品データを6か月間保持します。

データ容量の増加を抑えるため，6か月より前の商品データはバックアップを取得してから削除します。

また，このシステムでの運用の流れを次の図に示します。

図11‒32　このシステムでの運用の流れ（待機状態のチャンクの利用）

(1)　マルチチャンク表とインデクスの定義

商品データを一元管理するために，商品表（ITEMLIST）およびインデクスを定義します。

(a)　商品表（ITEMLIST）の定義

商品表（ITEMLIST）は，DBエリアTBLDAT_002に格納するように定義します。また，バックグラウンドインポートを実施するために，商品表をマルチチャンク表として定義します。

この運用例では，次に示す数のチャンクが必要となります。

分析対象となる今月の商品データを含むチャンク（1個）

各支社から送付された商品データを含むチャンク（11個）

支社の数が10あるため，各支社のデータをインポートするチャンクが10個必要になります。また，それら10個のチャンクをマージするためのチャンクが1個必要になります。よって，合計11個のチャンクが必要になります。

分析対象外の商品データ6か月分を含むチャンク（6個）

このため，安全率を1.2とすると，作成されるチャンク数の最大値は次の値となります。

作成されるチャンク数の最大値＝ ↑（1＋11＋6）×1.2（安全率）↑＝ 22

メモ

チャンク数が増加すると検索性能に影響を与えます。そのため，使用するチャンク数をできるだけ抑えるように，設計・運用することを推奨します。

この見積もりによって，チャンク数の最大値には22を設定します。この値をCREATE TABLE文のチャンク指定のCHUNKに指定します。SQL文の例を次に示します。

■SQL文の例

CREATE TABLE "ITEMLIST"
      ("SHOP_ID" INT,"DELIVERY_TIME" TIMESTAMP,
       "ITEM_ID" INT, "ITEM_NAME" VARCHAR(100))
    IN "TBLDAT002" CHUNK=22

CREATE TABLE文については，マニュアルHADB　SQLリファレンスの定義系SQLのCREATE TABLE（表の定義）を参照してください。

(b)　商品表（ITEMLIST）に対するインデクスの定義

商品表に対して，B-treeインデクスとレンジインデクスを定義します。インデクスはそれぞれDBエリアIDXDAT_002，RIXDAT_002に格納するように定義します。

商品ID（ITEM_ID列）に対してB-treeインデクスを定義し，納品時間（DELIVERY_TIME列）に対してレンジインデクスを定義します。SQL文の例を次に示します。

■SQL文の例

CREATE INDEX "ITEM_ID_IDX"
   ON "ITEMLIST"("ITEM_ID") IN "IDXDAT_002"
      EMPTY

CREATE INDEX "DELIVERY_TIME_RIX"
   ON "ITEMLIST"("DELIVERY_TIME") IN "RIXDAT_002"
      EMPTY INDEXTYPE RANGE

CREATE INDEX文については，マニュアルHADB　SQLリファレンスの定義系SQLのCREATE INDEX（インデクスの定義）を参照してください。

(c)　この運用例で使用する表のイメージ

この運用例で使用する表のイメージを次の図に示します。

図11‒33　この運用例で使用する表のイメージ

(2)　翌月の商品データを待機状態のチャンクに追加（バックグラウンドインポート）

翌月の商品データは，各支社から毎月25日までに本社に送付されます。本社に翌月の商品データが届くたびに，商品表（ITEMLIST）に追加します。

翌月の商品データの追加は，バックグラウンドインポートで実行します。その際，翌月の商品データは，月が切り替わるまで分析対象外にする必要があります。そのため，待機状態のチャンクとして追加します。

1回のバックグラウンドインポートでマルチチャンク表に格納したデータ，およびそのインデクスは，1つの固まり（チャンク）として管理されます。チャンクについては，「2.14.2　データインポート単位のデータ管理（チャンク）」を参照してください。

メモ

データをチャンク単位で管理することで，チャンク単位でのバックアップの取得や，データの削除ができます。バックグラウンドインポートやチャンクのマージの際に，チャンクに対してコメントを設定できます。コメントを設定しておくと，管理対象とするチャンクを特定しやすくなります。

待機状態のチャンクを作成するバックグラウンドインポートの場合，-bオプションおよび--status waitオプションを指定したadbimportコマンドを使用します。adbimportコマンドの実行例を次に示します。

■コマンドの実行例

adbimport -u ADBUSER01 -p '#HelloHADB_01' -k "'" -s , -g 10
          -w /home/adbmanager/tmp
          -z /home/adbmanager/imp_file/imp_opt_file02.txt
          -b --status wait
          -m 'October 2014'
          ITEMLIST
          /home/adbmanager/imp_file/imp_data_path02.txt

［説明］

商品表（ITEMLIST）に対して，入力データパスファイル（/home/adbmanager/imp_file/imp_data_path02.txt）に設定した入力データファイルの内容をバックグラウンドインポートします。

10の支社から翌月の商品データが送付されるたびに，バックグラウンドインポートを実行します。その結果，待機状態のチャンクが10個作成されます。

adbimportコマンドについては，マニュアルHADB　コマンドリファレンスのadbimport（データのインポート）を参照してください。また，「11.5.4　マルチチャンク表にインポートするデータを一時的に検索対象外にする方法（待機状態のチャンクの作成）」も参照してください。

(3)　データの検索

翌月の商品データをデータベースに追加している間も，今月の商品データを検索・分析します。

バックグラウンドインポートによってデータを追加することで，インポートの対象となるデータベースに対して検索を実行しているユーザが存在しても，データのインポートを実行できます（検索と並行してデータのインポートを実行できます）。

バックグラウンドインポートとデータの検索の関係を次の図に示します。

図11‒34　待機状態のチャンクを作成するバックグラウンドインポートとデータの検索の関係

今月の商品データは分析できますが，翌月の商品データは分析対象外であるため，月が切り替わるまで分析できません（待機状態のチャンクは検索できません）。

(4)　待機状態のチャンクのマージ（チャンク数の削減）

各支社から翌月の商品データが送付されるたびに，バックグラウンドインポートすると，待機状態のチャンクが複数作成されます。これらの待機状態のチャンクを通常状態のチャンクに変更して分析対象に含めると，チャンク数の増加によって検索性能が低下するおそれがあります。

そのため，複数ある待機状態のチャンクを，1つのチャンクにまとめることで，チャンク数の増加による検索性能の低下を回避します。この例では，各支社から送付されたすべての商品データを，データベースに追加したあとで，1つのチャンクにまとめます。

(a)　マージ対象とする待機状態のチャンクの特定

マージ対象とする待機状態のチャンクのチャンクIDを特定するには，次に示すように，システム表STATUS_CHUNKSを検索します。

SQL文の例を次に示します。

■SQL文の例

SELECT "CHUNK_ID" FROM "MASTER"."STATUS_CHUNKS" TC
   WHERE "TABLE_SCHEMA"='ADBUSER01' AND "TABLE_NAME"='ITEMLIST'
      AND "CHUNK_COMMENT"='October 2014'

■検索結果

 CHUNK_ID
 --------------------
                    2
           （中略）
                   11

［説明］

この例の場合は，バックグラウンドインポート時に付加したチャンクのコメント（'October 2014'）をキーにSTATUS_CHUNKS表を検索することで，マージ対象とするチャンクのチャンクID（2〜11）を特定しています。

対象となるチャンクと，そのチャンクIDについては，「11.5.8　チャンクの状態や作成されているチャンク数を確認する方法」を参照して確認してください。

(b)　待機状態のチャンクのマージ

待機状態のチャンクのマージには，adbmergechunkコマンドを使用します。adbmergechunkコマンドの実行例を次に示します。

■コマンドの実行例

adbmergechunk -u ADBUSER01 -p '#HelloHADB_01' -g 2
              -w /home/adbmanager/tmp
              -z /home/adbmanager/merge_file/merge_opt_file02.txt
              -m 'October 2014_merge'
              -c 2-11
              ITEMLIST

［説明］

商品表（ITEMLIST）に対してマージチャンクオプションファイル（/home/adbmanager/merge_file/merge_opt_file02.txt）に設定した値を入力情報として，-cオプションに指定した待機状態のチャンクのマージを実行します。

この例では，2から11のチャンクIDのチャンクを1つの待機状態のチャンクにマージすることで，翌月の商品データ（2014年10月分）としてまとめています。

待機状態のチャンクのマージの例を次の図に示します。

図11‒35　待機状態のチャンクのマージの例

チャンクIDが2から11のチャンクは，adbmergechunkコマンドの正常終了時に自動的に削除されます。

メモ

待機状態のチャンクをマージすることで，通常状態のチャンクに変更したときに検索性能の低下を防ぐことができます。また，1表，1DBエリアが管理できるチャンク数には限りがあります。チャンク数が足りない場合には，複数のチャンクを1つにマージすることで，使用するチャンク数を削減できます。

adbmergechunkコマンドについては，マニュアルHADB　コマンドリファレンスのadbmergechunk（チャンクのマージ）を参照してください。また，「11.5.9　チャンクをマージする方法（チャンク数を減らす方法）」も参照してください。

(5)　チャンクの状態変更（分析対象の商品データの切り替え）

月が切り替わったら，分析対象外としていた商品データを分析対象にします。また，今まで分析対象としていた商品データを分析対象外とします。

月が切り替わったら，次のようにチャンクの状態を変更します。

分析対象としていた商品データを含む通常状態のチャンクを，分析対象外とするため待機状態のチャンクに変更

分析対象外としていた商品データを含む待機状態のチャンクを，分析対象とするため通常状態のチャンクに変更

この例では，2014年9月分の商品データを分析対象外に変更し，2014年10月分の商品データを分析対象に変更します。

(a)　状態変更するチャンクのチャンクIDの特定

状態変更するチャンクのチャンクIDを特定するには，次に示すように，システム表STATUS_CHUNKSを検索します。

まず，2014年9月分の商品データを含むチャンクのチャンクIDを特定します。

■SQL文の例（通常状態のチャンクを待機状態のチャンクに変更する場合）

SELECT "CHUNK_ID" FROM "MASTER"."STATUS_CHUNKS" TC
   WHERE "TABLE_SCHEMA"='ADBUSER01' AND "TABLE_NAME"='ITEMLIST'
      AND "CHUNK_COMMENT"='September 2014_merge'

■検索結果

 CHUNK_ID
 --------------------
                    1

［説明］

この例の場合は，チャンクのマージ時に付加したチャンクのコメント（'September 2014_merge'）をキーにSTATUS_CHUNKS表を検索することで，2014年9月分の商品データを含むチャンクのチャンクIDを特定しています。

次に，2014年10月分の商品データを含むチャンクのチャンクIDを特定します。

■SQL文の例（待機状態のチャンクを通常状態のチャンクに変更する場合）

SELECT "CHUNK_ID" FROM "MASTER"."STATUS_CHUNKS" TC
   WHERE "TABLE_SCHEMA"='ADBUSER01' AND "TABLE_NAME"='ITEMLIST'
      AND "CHUNK_COMMENT"='October 2014_merge'

■検索結果

 CHUNK_ID
 --------------------
                   12

［説明］

この例の場合は，チャンクのマージ時に付加したチャンクのコメント（'October 2014_merge'）をキーにSTATUS_CHUNKS表を検索することで，2014年10月分の商品データを含むチャンクのチャンクIDを特定しています。

(b)　チャンクの状態変更

チャンクの状態変更には，adbchgchunkstatusコマンドを使用します。次に示すように，チャンクの状態を変更します。

通常状態のチャンクを，待機状態のチャンクに変更

2014年9月分の商品データを含むチャンク（チャンクID：1）が対象です。

待機状態のチャンクを，通常状態のチャンクに変更

2014年10月分の商品データを含むチャンク（チャンクID：12）が対象です。

adbchgchunkstatusコマンドの実行例を次に示します。

■コマンドの実行例

adbchgchunkstatus -u ADBUSER01 -p '#HelloHADB_01'
                  -w 1 -n 12 ITEMLIST

［説明］

商品表（ITEMLIST）に対して，-wオプションと-nオプションに従って，チャンク状態の変更を実行します。

この例では，チャンクIDが1のチャンクを待機状態に変更し，チャンクIDが12のチャンクを通常状態に，それぞれ変更します。

チャンクの状態変更の例を次の図に示します。

図11‒36　チャンクの状態変更の例

［説明］

2014年9月分の商品データを含むチャンク（チャンクID：1）が分析対象外となり，2014年10月分の商品データを含むチャンク（チャンクID：12）が分析対象となります。

adbchgchunkstatusコマンドについては，マニュアルHADB　コマンドリファレンスのadbchgchunkstatus（チャンクの状態変更）を参照してください。また，「11.5.12　チャンクの状態を変更する方法」も参照してください。

(6)　データのバックアップ

データ容量の増加を抑えるため，6か月より前の商品データはバックアップを取得してから，削除します。データベースのバックアップは月単位で取得します。

(a)　作成日時が最も古いチャンクの特定

商品表（ITEMLIST）で6か月より前のチャンク（作成した日時が最も古いチャンク）を特定します。商品表の最もチャンクの作成日時が古いチャンクを特定するには，次に示すように，システム表STATUS_CHUNKSを検索します。

SQL文の例を次に示します。

■SQL文の例

SELECT "CHUNK_ID" FROM "MASTER"."STATUS_CHUNKS" TC
   WHERE "TABLE_SCHEMA"='ADBUSER01' AND "TABLE_NAME"='ITEMLIST'
      AND "CREATE_TIME"=(SELECT MIN("CREATE_TIME")
         FROM "MASTER"."STATUS_CHUNKS"
            WHERE TC."TABLE_SCHEMA"='ADBUSER01'
               AND TC."TABLE_NAME"='ITEMLIST')

■検索結果

 CHUNK_ID
 --------------------
                    1

［説明］

STATUS_CHUNKS表を検索した結果，この例の場合はチャンクIDが1のチャンクが，作成日時が最も古いチャンク（6か月より前のチャンク）であることがわかります。

メモ

チャンクをマージした場合は，STATUS_CHUNKS表には，マージ元チャンクのうち，最も古い「チャンクの作成日時」が格納されます。

STATUS_CHUNKS表の検索方法については，「付録C.9　システム表の検索」を参照してください。

(b)　バックアップの取得

商品表（ITEMLIST）で最もチャンクの作成日時が古いチャンクのチャンクIDが1であるとわかったので，そのチャンクに含まれるデータのバックアップをCSV形式のファイルで取得します。

バックアップの取得には，adbexportコマンドを使用します。adbexportコマンドの実行例を次に示します。

■コマンドの実行例

adbexport -u ADBUSER01 -p '#HelloHADB_01'
          -z /home/adbmanager/exp_file/exp_opt_file02.txt
          -n ITEMLIST
          -c 1
          /home/adbmanager/exp_file/exp_data_path02.txt

■出力データパスファイル（/home/adbmanager/exp_file/exp_data_path02.txt）の内容

/home/adbmanager/exp_backup/backup0101.csv
/home/adbmanager/exp_backup/backup0102.csv
/home/adbmanager/exp_backup/backup0103.csv

［説明］

チャンクIDが1のチャンクに含まれるデータのバックアップをCSV形式のファイル（/home/adbmanager/exp_backup/backup0101.csv，/home/adbmanager/exp_backup/backup0102.csv，/home/adbmanager/exp_backup/backup0103.csv）に取得します。

この例の場合，月単位でチャンクがマージされているので，1か月分のデータのバックアップになります。

メモ

バックアップを取得するファイルは1つにすることもできますが，複数のファイルに分散することで，出力にかかるオーバヘッドを分散させ性能を向上させることができます。

adbexportコマンドについては，マニュアルHADB　コマンドリファレンスのadbexport（データのエクスポート）を参照してください。また，「11.5.5　チャンク単位にデータをエクスポートする方法」も参照してください。

(7)　古いデータ（チャンク）の削除

データ容量の増加を抑えるため，6か月より前のデータを削除します。

商品表（ITEMLIST）から作成日時が最も古いチャンクを削除します。チャンクを削除するには，PURGE CHUNK文の探索条件にチャンクIDを指定して実行します。

■SQL文の例

PURGE CHUNK "ITEMLIST" WHERE CHUNKID=1

［説明］

チャンクIDが1のチャンクに含まれるデータを削除します。

この例の場合，月単位でチャンクがマージされているので，1か月分のデータが削除されます。

PURGE CHUNK文については，マニュアルHADB　SQLリファレンスの操作系SQLのPURGE CHUNK（チャンク内の全行削除）を参照してください。また，「11.5.6　チャンク単位にデータを削除する方法」も参照してください。

(8)　新しいデータの追加・マージ・状態変更と古いデータの削除の繰り返し

待機状態のチャンクを作成するバックグラウンドインポートの実行，待機状態のチャンクのマージ，チャンクの状態変更およびPURGE CHUNK文を利用したチャンクの削除を繰り返すことで，HADBが管理するデータ量を増やすことなく，対象月の商品データだけを分析する運用が継続できます。

11.5.25　チャンクのアーカイブを意識した運用例

ここでは，検索頻度が少ない古いデータをアーカイブして，データベースの容量増加を抑える運用方法を，次に示す例を使って説明します。ここで説明する運用方法の前提は，次のとおりです。

全国の通信制御機器から発生したセンサデータ（通信量や障害予兆検知に関する情報）を本社が収集し，通信制御機器の交換や増設の要否を判断するために，センサデータを検索・分析します。

本社が収集したセンサデータは，通信制御機器ログ表で一元管理します。

センサデータは，1時間ごとにデータベースにインポートします。

1時間ごとにインポートしたセンサデータは，日が切り替わったタイミングで，1日分のチャンクとして，1つのチャンクにマージします。また，月が切り替わったタイミングで，1か月分のチャンクとして，1つのチャンクにマージします。最終的には，1つのチャンクを月単位で管理します。

データベースにセンサデータをインポートしている間も，センサデータを検索します。直近24時間分（日単位），直近7日分（週単位）および直近1か月分（月単位）のセンサデータを検索します。検索結果を基に，通信制御機器の交換や増設の要否を判断します。

センサデータを検索した結果，通信量がしきい値を超えていた場合は，該当する日と前後1日の日付をキーにして，過去5年間のデータを分析します。通信量がしきい値を超えるケースは，月1回程度です。

データベースにインポートして1年が経過したセンサデータは，検索頻度が非常に少なくなるため，チャンク単位でセンサデータをアーカイブします。月が切り替わったタイミングで，センサデータをアーカイブして，データベースの容量を削減します。

データベースには5年間のデータを保持します。5年を超えたデータは，月が切り替わったタイミングで，チャンク単位で削除します。

このシステムでの運用の流れを次の図に示します。

図11‒37　このシステムでの運用の流れ（チャンクのアーカイブの利用）

(1)　アーカイブディレクトリの作成

この運用例では，データ容量削減のために，1年経過したデータをチャンク単位にアーカイブします。チャンクをアーカイブする際，アーカイブファイルを格納するためのアーカイブディレクトリが必要になります。運用を開始する前に，アーカイブディレクトリを作成してください。

次に示す手順で，アーカイブディレクトリを作成します。

手順

スーパユーザでOSにログインする

スーパユーザで，サーバマシンのOSにログインしてください。

アーカイブディレクトリ用のファイルシステムを作成する

OSのコマンドを実行し，アーカイブディレクトリ用のファイルシステムを作成します。

アーカイブディレクトリ用のLVとして作成した/dev/vg_hadb/hadb_archivedirを，ext4のファイルシステムで作成する場合の実行例を次に示します。

■コマンドの実行例

mkfs -t ext4 /dev/vg_hadb/hadb_archivedir

アーカイブディレクトリ用のマウントポイントを作成する

OSのコマンドを実行し，アーカイブディレクトリ用のマウントポイントを作成します。実行例を次に示します。

■コマンドの実行例

mkdir -p /HADB/archive

アーカイブディレクトリ用のファイルシステムがあるVGを活性化する

OSのコマンドを実行し，アーカイブディレクトリ用のファイルシステムがあるVGを活性化します。実行例を次に示します。

■コマンドの実行例

vgchange -a y /dev/vg_hadb

アーカイブディレクトリ用ファイルシステムをマウントする

OSのコマンドを実行し，アーカイブディレクトリ用ファイルシステムをマウントします。実行例を次に示します。

■コマンドの実行例

mount /dev/vg_hadb/hadb_archivedir /HADB/archive -t ext4 -o defaults,noatime,_netdev4

アーカイブディレクトリのオーナーを変更する

OSのコマンドを実行し，アーカイブディレクトリのオーナーを変更します。アーカイブディレクトリを使用するHADB管理者とHADB管理グループを指定してください。

HADB管理者のユーザ名がadbmanager，HADB管理グループがadbgroupの場合の実行例を次に示します。

■コマンドの実行例

chown adbmanager.adbgroup /HADB/archive

(2)　アーカイブマルチチャンク表の定義

アーカイブディレクトリを作成したあとで，アーカイブマルチチャンク表とインデクスを定義します。

この運用例では，センサデータを一元管理するために，通信制御機器ログ表（INSTRUMENT_LOG）およびインデクスを定義します。

(a)　通信制御機器ログ表（INSTRUMENT_LOG）の定義

通信制御機器ログ表（INSTRUMENT_LOG）は，DBエリアTBLDAT_003に格納するように定義します。また，バックグラウンドインポートおよびチャンクのアーカイブを実施するために，通信制御機器ログ表をアーカイブマルチチャンク表として定義します。

この運用例では，次に示す数のチャンクが必要となります。

1時間ごとにバックグラウンドインポートで追加したセンサデータを管理するチャンク（24個）

1時間ごとにバックグラウンドインポートでデータを追加するため，1日分のチャンクは24個になります。

1日ごとのセンサデータを管理するチャンク（32個）

1か月分（31日分）に加えて，それらをマージするマージ先チャンクが1個必要となるため，合計すると32個になります。

1か月ごとのセンサデータを管理するチャンク（61個）

5年分（60か月分）に加えて，それらをマージするマージ先チャンクが1個必要となるため，合計すると61個になります。

このため，安全率を1.2とすると，作成されるチャンク数の最大値は次の値となります。

メモ

チャンク数が増加すると検索性能に影響を与えます。そのため，使用するチャンク数をできるだけ抑えるように，設計・運用することを推奨します。

この見積もりによって，チャンク数の最大値には141を設定します。この値をCREATE TABLE文のチャンク指定のCHUNKに指定します。

また，通信制御機器ログ表（INSTRUMENT_LOG）の収集日時列（C_TIME）は，データ分析の範囲を特定でき，かつチャンクごとにデータが重ならない列です。そのため，アーカイブレンジ列とします。アーカイブレンジ列に自動的に定義されるレンジインデクスは，通信制御機器ログ表（INSTRUMENT_LOG）に定義する，ほかのインデクスを格納するDBエリアIDXDAT_003に格納します。

次に示す内容を，CREATE TABLE文のチャンクアーカイブ指定に指定します。

アーカイブレンジ列の列名（C_TIME）

自動的に定義されるレンジインデクスを格納するDBエリア名（IDXDAT_003）

作成したアーカイブディレクトリ（/HADB/archive）

CREATE TABLE文の例を次に示します。

■CREATE TABLE文の例

CREATE TABLE "INSTRUMENT_LOG"
            ("SID" INTEGER,
             "C_TIME" TIMESTAMP,
             "TRAFFIC" INTEGER,
             "THROUGH" INTEGER,
             "RETRY" INTEGER,
              ...)
  IN "TBLDAT_003"
  CHUNK= 141
  ARCHIVABLE RANGECOLUMN="C_TIME" IN "IDXDAT_003"
  ARCHIVEDIR='/HADB/archive'

CREATE TABLE文については，マニュアルHADB　SQLリファレンスの定義系SQLのCREATE TABLE（表の定義）を参照してください。

(b)　通信制御機器ログ表（INSTRUMENT_LOG）に対するインデクスの定義

通信制御機器ログ表に対して，B-treeインデクスを定義します。B-treeインデクスはDBエリアIDXDAT_003に格納します。

機器ID列（SID）に対してB-treeインデクスを定義します。CREATE INDEX文の例を次に示します。

■CREATE INDEX文の例

CREATE INDEX "SID_IDX"
   ON "INSTRUMENT_LOG"("SID") IN "IDXDAT_003"
   EMPTY

CREATE INDEX文については，マニュアルHADB　SQLリファレンスの定義系SQLのCREATE INDEX（インデクスの定義）を参照してください。

(c)　この運用例で使用する表のイメージ

この運用例で使用する表のイメージを次の図に示します。

図11‒38　この運用例で使用する表のイメージ

(3)　新しいセンサデータの追加（バックグラウンドインポート）

通信制御機器からリアルタイムにセンサデータが発生します。発生したセンサデータは，1時間ごとに通信制御機器ログ表（INSTRUMENT_LOG）に追加します。

センサデータの追加は，バックグラウンドインポートで実行します。1回のバックグラウンドインポートでアーカイブマルチチャンク表に格納したデータ，およびそのインデクスは，1つの固まり（チャンク）として管理されます。チャンクについては，「2.14.2　データインポート単位のデータ管理（チャンク）」を参照してください。

メモ

データをチャンク単位で管理することで，チャンク単位でのバックアップの取得や，データの削除ができます。バックグラウンドインポートやチャンクをマージする際に，チャンクにコメントを設定できます。コメントを設定しておくと，操作対象のチャンクを特定しやすくなります。

-bオプションを指定したadbimportコマンドを実行して，バックグラウンドインポートを行います。adbimportコマンドの実行例を次に示します。

■コマンドの実行例

adbimport -u ADBUSER01 -p '#HelloHADB_01' -k "'" -s , -g 10
          -w /home/adbmanager/tmp
          -z /home/adbmanager/imp_file/imp_opt_file03.txt
          -b
          -m '2015/03/31'
          INSTRUMENT_LOG
          /home/adbmanager/imp_file/imp_data_path03.txt

［説明］

通信制御機器ログ表（INSTRUMENT_LOG）に対して，入力データパスファイル（/home/adbmanager/imp_file/imp_data_path03.txt）に指定した入力データファイルの内容をバックグラウンドインポートします。

「2015年3月31日」に発生したセンサデータをバックグラウンドインポートで追加するため，-mオプションに「チャンクに設定するコメント」を指定します。

1時間ごとにバックグラウンドインポートを実行します。その結果，1日分（24時間分）のチャンクが24個作成されます。

adbimportコマンドについては，マニュアルHADB　コマンドリファレンスのadbimport（データのインポート）を参照してください。また，「11.5.2　マルチチャンク表にデータを格納する方法（バックグラウンドインポート）」も参照してください。

(4)　データの検索

バックグラウンドインポートを実行している間も，アーカイブマルチチャンク表のデータを検索できます。

バックグラウンドインポートによってセンサデータを追加することで，インポートの対象となるデータベースに対して検索を実行しているHADBユーザが存在しても，データのインポートを実行できます（検索と並行してデータのインポートを実行できます）。

バックグラウンドインポートとデータの検索の関係を次の図に示します。

図11‒39　バックグラウンドインポートとデータの検索の関係

(5)　チャンクのマージ（チャンク数の削減）

チャンク数が増加すると検索性能が低下するおそれがあるため，定期的にチャンクをマージする必要があります。この運用例では，センサデータを1時間ごとにバックグラウンドインポートしているので，1日で24個のチャンクが作成されます。

この運用例では，次に示すタイミングで複数のチャンクをマージして，1個のチャンクにマージしています。最終的には，月単位でチャンクを管理します。

1日分（24時間分）のチャンク24個を，1個のチャンクにマージする

1か月分（31日分）のチャンク31個を，1個のチャンクにマージする

ここでは，1日分（2015年3月31日分）のデータを，1つのチャンクにマージする例を次に示します。

(a)　マージ対象とするチャンクの特定

マージ対象とするチャンクのチャンクIDを特定するには，次に示すように，システム表STATUS_CHUNKSを検索します。SQL文の例を次に示します。

■SQL文の例

SELECT "CHUNK_ID" FROM "MASTER"."STATUS_CHUNKS" TC
   WHERE "TABLE_SCHEMA"='ADBUSER01' AND "TABLE_NAME"='INSTRUMENT_LOG'
      AND "CHUNK_COMMENT"='2015/03/31'

■検索結果

 CHUNK_ID
 --------------------
                   92
           （中略）
                  115

［説明］

この例の場合は，バックグラウンドインポート時に付加したチャンクのコメント（'2015/03/31'）をキーにSTATUS_CHUNKS表を検索することで，マージ対象とするチャンクのチャンクID（92〜115）を特定しています。

対象となるチャンクと，そのチャンクIDについては，「11.5.8　チャンクの状態や作成されているチャンク数を確認する方法」を参照して確認してください。

(b)　チャンクのマージ

adbmergechunkコマンドを実行してチャンクをマージします。adbmergechunkコマンドの実行例を次に示します。

■コマンドの実行例

adbmergechunk -u ADBUSER01 -p '#HelloHADB_01' -g 2
              -w /home/adbmanager/tmp
              -z /home/adbmanager/merge_file/merge_opt_file03.txt
              -m '2015/03/31'
              -c 92-115
              INSTRUMENT_LOG

［説明］

通信制御機器ログ表（INSTRUMENT_LOG）に対してマージチャンクオプションファイル（/home/adbmanager/merge_file/merge_opt_file03.txt）に指定した値を入力情報として，-cオプションに指定したチャンクのマージを実行します。

この例では，92から115のチャンクIDのチャンクを1つの待機状態のチャンクにマージすることで，1日分のセンサデータ（2015年3月31日分）としてまとめています。

チャンクのマージの例を次の図に示します。

図11‒40　チャンクのマージの例

チャンクIDが92から115のチャンクは，adbmergechunkコマンドの正常終了時に自動的に削除されます。

メモ

チャンクをマージすることで，検索性能の低下を防ぐことができます。また，1表，1DBエリアが管理できるチャンク数には限りがあります。使用中のチャンク数が，1表，1DBエリアが管理できる上限に達した場合には，複数のチャンクを1つにマージしてください。チャンクをマージすることで，使用中のチャンク数を削減できます。

adbmergechunkコマンドについては，マニュアルHADB　コマンドリファレンスのadbmergechunk（チャンクのマージ）を参照してください。また，「11.5.9　チャンクをマージする方法（チャンク数を減らす方法）」も参照してください。

(6)　チャンクのアーカイブ（チャンク単位でのデータの圧縮）

この運用例では，データベースに追加してから1年が経過したデータは，検索頻度が非常に少なくなるため，チャンク単位でアーカイブ（データの圧縮）します。チャンクをアーカイブすることで，データベースの容量を削減できます。

重要

アーカイブしたチャンク内のデータを検索する場合，次に示す原因によって，アーカイブされていないチャンク内のデータを検索するときに比べて検索時間が長くなります。

データの伸長に時間が掛かる

インデクスを使用した検索ができない

この運用例のように，検索頻度が非常に少ないが，長期間保持する必要があるデータをアーカイブするようにしてください。詳細については，「2.15.2　チャンクアーカイブ機能を適用するケース」を参照してください。

(a)　チャンクのアーカイブの実行

adbarchivechunkコマンドを実行して，チャンクをアーカイブします。ここでは，2014年3月のセンサデータを管理するチャンクをアーカイブします。adbarchivechunkコマンドの実行例を次に示します。

■コマンドの実行例

adbarchivechunk -u ADBUSER01 -p '#HelloHADB_01' -g 2
                -z /home/adbmanager/arc_file/archive_chunk03.def
                -r 2014/03/01-2014/03/31
                INSTRUMENT_LOG

［説明］

adbarchivechunkコマンドの-rオプションで，アーカイブするチャンクの日付の範囲（2014/03/01-2014/03/31）を指定します。-rオプションに指定した日付の範囲に，アーカイブレンジ列の値の範囲が含まれているチャンクがアーカイブされます。この運用例では，通信制御機器ログ表（INSTRUMENT_LOG）の収集日時列（C_TIME）を，アーカイブレンジ列に指定しています。そのため，収集日時列（C_TIME）の値を基に，2014年3月分のチャンクがアーカイブされます。

(b)　アーカイブの実行結果の確認

adbdbstatusコマンドを実行して，アーカイブしたチャンクの状態を確認します。adbdbstatusコマンドで「アーカイブ状態のチャンクのサマリ情報」を出力すると，アーカイブしたチャンクの状態を確認できます。adbdbstatusコマンドの実行例を次に示します。

■コマンドの実行例

adbdbstatus -c archivechunk
            -n ADBUSER01.INSTRUMENT_LOG
            -r 2014/03/01-2014/03/31

［説明］

アーカイブ状態のチャンク（2014年3月分）のサマリ情報を出力します。次の出力項目から，アーカイブしたチャンクに格納されている行数，アーカイブしたチャンクのデータ容量，およびアーカイブしたチャンクの圧縮率が確認できます。

Rows（アーカイブ状態のチャンクに格納されている行数）

Archive_file_size（アーカイブ状態のチャンクに対応している全アーカイブファイルのファイルサイズの合計値）

Unarchive_table_size（アーカイブ状態になる前のチャンクで，表を格納するために使用していたセグメントの容量）

Unarchive_index_size（アーカイブ状態になる前のチャンクで，インデクスを格納するために使用していたセグメントの容量）

Compression_ratio（アーカイブ状態のチャンクの圧縮率）

(7)　古いデータ（チャンク）の削除

データ容量の増加を抑えるため，5年が経過したデータ（アーカイブ状態のチャンク）を削除します。

通信制御機器ログ表（INSTRUMENT_LOG）から，データを追加して5年が経過した古いチャンクを削除します。削除対象のチャンクのチャンクIDを確認してから，PURGE CHUNK文でチャンクを削除します。

ここでは，2010年4月分のチャンクを削除します。

(a)　チャンクIDの確認

adbdbstatusコマンドを実行して，削除対象のチャンクのチャンクIDを確認します。adbdbstatusコマンドで「アーカイブ状態のチャンクのサマリ情報」を出力すると，削除対象のチャンクのチャンクIDを確認できます。adbdbstatusコマンドの実行例を次に示します。

■コマンドの実行例

adbdbstatus -c archivechunk
            -n ADBUSER01.INSTRUMENT_LOG
            -r 2010/04/01-2010/04/30

［説明］

アーカイブ状態のチャンク（2010年4月分）のサマリ情報を出力します。次の出力項目から，削除対象のチャンクのチャンクID，およびチャンク削除後にアーカイブディレクトリに確保される空き容量が確認できます。

Chunk_ID（チャンクID）

Archive_file_size（アーカイブ状態のチャンクに対応している全アーカイブファイルのファイルサイズの合計値）

(b)　チャンクの削除

adbdbstatusコマンドで確認したチャンクIDを基に，チャンクを削除します。チャンクを削除するには，PURGE CHUNK文の探索条件にチャンクIDを指定して実行します。PURGE CHUNK文の例を次に示します。

■SQL文の例

PURGE CHUNK "INSTRUMENT_LOG" WHERE CHUNKID=4

［説明］

チャンクIDが4のチャンクに含まれるデータを削除します。

この例の場合，月単位でチャンクがマージされているので，1か月分のデータが削除されます。

PURGE CHUNK文については，マニュアルHADB　SQLリファレンスの操作系SQLのPURGE CHUNK（チャンク内の全行削除）を参照してください。また，「11.5.6　チャンク単位にデータを削除する方法」も参照してください。

(8)　新しいデータの追加・マージ・アーカイブと古いデータの削除の繰り返し

次に示す運用を繰り返すことで，長期間保持するデータの容量を抑えながら，センサデータを分析する運用を継続できます。

バックグラウンドインポートの実行

チャンクのマージ

チャンクのアーカイブ

PURGE CHUNK文を利用したチャンクの削除

11.6　コスト情報の収集

コスト情報は，データを効率良く検索するために，adbgetcstコマンドを使用して実表，B-treeインデクスおよびテキストインデクスから収集した検索方法に関する情報のことです。収集したコスト情報は，システム表に格納され，検索処理時に利用されます。

adbgetcstコマンドを使用して，コスト情報を収集するタイミングについて説明します。

■コスト情報を収集するタイミング

次に示す作業を実行したら，コスト情報を収集することを推奨します。

adbimportコマンドを実行して実表にデータを格納した場合

作成モードおよび追加モードに関係なく，adbimportコマンドを使用して実表にデータを格納した場合は，コスト情報を収集することを推奨します。

大量のデータを追加，更新または削除した場合

INSERT文，UPDATE文，およびDELETE文を使用して，大量のデータを追加，更新または削除した場合は，コスト情報を収集することを推奨します。

adbidxrebuildコマンドを実行してインデクスを再作成した場合

adbidxrebuildコマンドを使用してB-treeインデクス，またはテキストインデクスを再作成した場合は，コスト情報を収集することを推奨します。

一度に大量のデータではなく，複数回に分けて少量のデータを追加，更新または削除した場合も，任意のタイミングでコスト情報を収集することを推奨します。

なお，コスト情報を収集する場合，対象表のすべての行を検索するため，収集完了までに時間が掛かります。

adbgetcstコマンドについては，マニュアルHADB　コマンドリファレンスのadbgetcst（コスト情報の収集）を参照してください。

11.7　HADBユーザの管理

ここでは，HADBユーザの管理方法について説明します。

11.7.1　HADBユーザを作成する方法

HADBユーザは，定義系SQLのCREATE USER文で作成します。

DBA権限およびCONNECT権限を持っているHADBユーザが，CREATE USER文を実行してください。

メモ

データベース認証を使用するHADBユーザを作成する場合と，PAM認証またはKeycloak認証を使用するHADBユーザを作成する場合とで，CREATE USER文の指定が異なります。

HADBユーザを作成する例を次に示します。

例1（データベース認証を使用するHADBユーザを作成する場合）

データベース認証を使用するHADBユーザを作成します。

CREATE USER "ADBUSER02" IDENTIFIED BY '#HelloHADB_02'

上記のCREATE USER文を実行すると，次に示す認可識別子（ユーザID）とパスワードのHADBユーザが作成されます。

認可識別子：ADBUSER02

パスワード：#HelloHADB_02

なお，HADBユーザを作成する場合に指定するパスワードの文字数ですが，最低8文字以上とすることを推奨します。

HADBユーザの認可識別子およびパスワードの指定規則については，「9.4.2　認可識別子の指定規則」および「9.4.3　パスワードの指定規則」を参照してください。

例2（PAM認証を使用するHADBユーザを作成する場合）

PAM認証を使用するHADBユーザを作成します。

CREATE USER "OSUSER01" IDENTIFIED WITH PAM

下線部分には，外部ユーザ名（OSユーザ名やLDAPユーザ名など）を指定します。

上記のCREATE USER文を実行すると，認可識別子がOSUSER01のHADBユーザが作成されます。

例3（Keycloak認証を使用するHADBユーザを作成する場合）

Keycloak認証を使用するHADBユーザを作成します。

CREATE USER "KEYUSER01" IDENTIFIED WITH KEYCLOAK

下線部分には，外部ユーザ名（KeycloakサーバまたはLDAPサーバなどに登録されているユーザ名）を指定します。

上記のCREATE USER文を実行すると，認可識別子がKEYUSER01のHADBユーザが作成されます。

重要

作成したHADBユーザには，権限は付与されていません。「11.10.1　HADBユーザにユーザ権限とスキーマ操作権限を付与する方法」を参照して，必要な権限を付与してください。

11.7.2　HADBユーザのパスワードを変更する方法

データベース認証を使用しているHADBユーザのパスワードは，定義系SQLのALTER USER文で変更します。HADBユーザのパスワードを変更する例を次に示します。

指定例

HADBユーザ「ADBUSER02」のパスワードを#HelloHADB_03に変更します。

ALTER USER "ADBUSER02" IDENTIFIED BY '#HelloHADB_03'

重要

DBA権限を持っていないHADBユーザは，自分（HADBサーバに接続中の認可識別子のHADBユーザ）のパスワードだけを変更できます。ほかのHADBユーザのパスワードは変更できません。

DBA権限を持っているHADBユーザは，自分のパスワードを変更できます。さらに，ほかのHADBユーザのパスワードも変更できます。ただし，監査権限を持っているHADBユーザのパスワードは変更できません。

PAM認証を使用しているHADBユーザのパスワードは，ALTER USER文では変更できません。PAM認証を使用している場合は，外部の認証基盤でパスワードを変更してください。例えば，OSユーザ名を使用してPAM認証をしている場合は，passwdコマンドでOSユーザのパスワードを変更してください。

Keycloak認証を使用しているHADBユーザのパスワードは，ALTER USER文では変更できません。KeycloakサーバまたはLDAPサーバなどの外部の認証サーバでパスワードを変更してください。

メモ

HADBユーザのパスワードを変更する場合に指定するパスワードの文字数は，最低8文字以上とすることを推奨します。

パスワードは定期的に変更することを推奨します。

HADBユーザのパスワードの指定規則については，「9.4.3　パスワードの指定規則」を参照してください。

11.7.3　HADBユーザのユーザ認証方式を調べる方法

HADBユーザのユーザ認証方式を調べるには，ディクショナリ表を検索してください。詳細については，「付録B.24　ディクショナリ表の検索」の「(40)　HADBユーザのユーザ認証方式を調べる方法」を参照してください。

11.7.4　HADBユーザのユーザ認証方式を変更する方法

HADBユーザのユーザ認証方式は，定義系SQLのALTER USER文で変更できます。

例1

HADBユーザADBUSER03のユーザ認証方式をPAM認証に変更します。

ALTER USER "ADBUSER03" IDENTIFIED WITH PAM

ADBUSER03が外部ユーザ（OSユーザやLDAPユーザなど）として登録されている必要があります。

例2

HADBユーザADBUSER03のユーザ認証方式をKeycloak認証に変更します。

ALTER USER "ADBUSER03" IDENTIFIED WITH KEYCLOAK

ADBUSER03が外部ユーザとして登録されている必要があります（KeycloakサーバやLDAPサーバなどにADBUSER03が登録されている必要があります）。

例3

HADBユーザADBUSER03のユーザ認証方式をデータベース認証に変更します。

ALTER USER "ADBUSER03" IDENTIFIED BY '#HelloHADB_03'

上記のSQL文を実行すると，HADBユーザADBUSER03のパスワードが#HelloHADB_03になります。

重要

DBA権限を持っていないHADBユーザは，自分（HADBサーバに接続中の認可識別子のHADBユーザ）のユーザ認証方式を変更できます。ほかのHADBユーザのユーザ認証方式は変更できません。

DBA権限を持っているHADBユーザは，自分のユーザ認証方式を変更できます。さらに，ほかのHADBユーザのユーザ認証方式も変更できます。ただし，監査権限または暗号管理権限を持っているHADBユーザのユーザ認証方式は変更できません。

11.7.5　HADBユーザを削除する方法

HADBユーザは，定義系SQLのDROP USER文で削除します。HADBユーザを削除する例を次に示します。

指定例

HADBユーザ「ADBUSER02」を削除します。

DROP USER "ADBUSER02" CASCADE

DBA権限およびCONNECT権限を持っているHADBユーザが，DROP USER文を実行してHADBユーザを削除できます。

メモ

HADBユーザを削除する場合，事前にadbchgsrvmode --offlineコマンドを実行して，HADBサーバの稼働モードをオフラインモードに変更しておくことを推奨します。HADBクライアントからの接続を受け付けないようにしてから，HADBユーザを削除してください。

監査権限を持っているHADBユーザを削除することはできません。監査権限を取り消してもらったあとに，そのHADBユーザを削除してください。監査権限の取り消し方法については，「12.4.1　監査人の追加，削除，変更（監査権限の付与または取り消し）」の「(2)　監査人の削除（監査権限の取り消し）」を参照してください。

データベース認証を使用し，かつDBA権限およびCONNECT権限を持っているHADBユーザが最低1人必要です。そのため，このようなHADBユーザが1人しかいないときに，そのHADBユーザを削除することはできません。

DBエリア暗号化機能を使用している場合，暗号管理権限を持っているHADBユーザが最低1人必要です。そのため，暗号管理権限を持っているHADBユーザが1人しかいないときに，そのHADBユーザを削除することはできません。

DROP USER文については，マニュアルHADB　SQLリファレンスの定義系SQLのDROP USER（HADBユーザの削除）を参照してください。

重要

削除対象のHADBユーザが所有しているスキーマおよび表も削除されるため，次に示す影響があります。

DROP USER文の実行によって削除される表に依存するビュー表（ほかのスキーマのビュー表）が，削除または無効化されます。

DROP USER文の実行によって削除される表を被参照表とする外部キー（ほかのスキーマの外部キー）も削除されます。

スキーマの削除については，「11.12.2　スキーマを削除する方法」を参照してください。スキーマに定義されている実表が更新不可状態だった場合，中断したコマンドによって作成された作業用一時ファイルが残ることがあります。

また，削除対象のHADBユーザが，ほかのHADBユーザにアクセス権限を付与していた場合，そのアクセス権限は取り消されます。

11.8　PAM認証の導入

ここでは，PAM認証の導入方法について説明します。PAM認証については，「2.6.2　PAM認証」を参照してください。

11.8.1　PAM認証の環境設定

(1)　環境設定の流れ

PAM認証の環境設定の流れを次の表に示します。

表11‒10　PAM認証の環境設定の流れ

項番

作業項目

説明

実行者

作業対象のマシン

1

PAMの設定

OSのPAMの認証機能をHADBサーバが使用するためにPAM設定ファイルを準備します。

OSのスーパユーザ

サーバマシン

2

/etc/shadowファイルの読み取り権限の許可

/etc/shadowファイルに対する読み取り権限を持っているOSのグループに，HADB管理者であるOSユーザを追加します。

OSユーザ名とパスワードを使用してPAM認証をする場合に必要な作業です。

3

SSSDの設定

OSのSSSDのサービスを設定します。

LDAPサーバなど，外部の認証サーバを使用してPAM認証をする場合に必要な作業です。

4

HADBユーザの作成

CREATE USER文でHADBユーザを作成します。

DBA権限を持っているHADBユーザ

5

秘密鍵ファイルの作成

HADBクライアントからHADBサーバに送信した暗号化されたパスワードの復号に使用する秘密鍵ファイルを作成します。

HADB管理者

6

公開鍵ファイルの作成

HADBクライアントからHADBサーバへパスワードを暗号化して送信するために，パスワードの暗号化に使用する公開鍵ファイルを作成します。

7

サーバ定義の指定

PAM認証に関するオペランドを指定します。

8

HADBクライアントでの環境設定

サーバマシンで作成した公開鍵ファイルをクライアントマシンにコピーします。また，クライアント定義にPAM認証に関するオペランドを指定します。

HADBクライアントを管理するOSユーザ

クライアントマシン

上記の各作業については，以降で順次説明します。

(2)　PAMの設定

OSのPAMの認証機能をHADBサーバが使用するためには，/etc/pam.dディレクトリにPAM設定ファイルを格納する必要があります。PAM設定ファイルのサンプルファイル（$ADBDIR/sample/pam/hadb）を/etc/pam.dディレクトリ下にコピーして，パーミッションを設定してください。設定手順を次に示します。

手順

次のすべての操作は，OSのスーパユーザで実行してください。

PAM設定ファイルのサンプルファイルをコピーする

PAM設定ファイルのサンプルファイル（$ADBDIR/sample/pam/hadb）を，/etc/pam.dディレクトリ下にコピーしてください。

重要

PAM設定ファイルのサンプルファイル（$ADBDIR/sample/pam/hadb）の内容は変更しないでそのままコピーしてください。

PAM設定ファイルの所有者と所有グループを変更する

chown root:root /etc/pam.d/hadb

上記のコマンドを実行して，PAM設定ファイル（/etc/pam.d/hadb）の所有者と所有グループをOSのスーパユーザに変更します。

PAM設定ファイルに対するパーミッションを設定する

chmod 644 /etc/pam.d/hadb

上記のコマンドを実行して，PAM設定ファイル（/etc/pam.d/hadb）に対して，OSのスーパユーザが読み取りおよび書き込みが実行できるようにパーミッションを設定します。また，OSのスーパユーザ以外のユーザには，PAM設定ファイルに対する読み取り権限だけを設定します。

メモ

PAM設定ファイルのサンプルファイル（$ADBDIR/sample/pam/hadb）の内容を次に示します。

#%PAM-1.0
auth            sufficient       pam_sss.so
auth            required         pam_unix.so
account         sufficient       pam_sss.so
account         required         pam_unix.so

(3)　/etc/shadowファイルの読み取り権限の許可

OSユーザ名とパスワードを使用してPAM認証をする場合は，/etc/shadowファイルに対する読み取り権限を持っているOSのグループに，HADB管理者であるOSユーザを次の手順で追加してください。

手順

/etc/shadowファイルに対する読み取り権限を持つグループshadowを作成し，このグループにHADB管理者であるOSユーザ（adbmanager）を追加する手順を説明します。

次のすべての操作は，OSのスーパユーザで実行してください。

/etc/shadowファイルに対する読み取り権限を許可するOSユーザの所属グループshadowを作成する

groupadd shadow

/etc/shadowファイルの所有グループをshadowに変更する

chgrp shadow /etc/shadow

/etc/shadowファイルのパーミッションを設定する

/etc/shadowファイルに，所有グループに対して読み取り権限だけを許可するようにパーミッションを設定してください。

chmod g+r /etc/shadow

/etc/shadowファイルの所有グループshadowにHADB管理者（adbmanager）を追加する

gpasswd -a adbmanager shadow

上記の設定をしないと，HADB管理者以外のOSユーザ名とパスワードを使用してPAM認証を行った際に，ユーザ名とパスワードが正しくてもPAM認証に失敗します。

メモ

PAM認証の際にLDAPサーバなど外部の認証サーバを使用する場合は，上記の作業を実施する必要はありません。

(4)　SSSDの設定

LDAPサーバなど外部の認証サーバを使用してPAM認証をする場合は，OSのSSSDのサービスを設定してください。SSSDの設定方法については，OSのマニュアルを参照してください。

SSSDの設定が完了したあとに，次のコマンドをOSのスーパユーザで実行し，SSSDのサービスを起動してください。

systemctl start sssd

SSSDのサービスがすでに起動している場合は，次のコマンドをOSのスーパユーザで実行し，SSSDのサービスを再起動してください。

systemctl restart sssd

SSSDのサービスの起動または再起動が完了したあとに，SSSDのサービスを使用して，LDAPサーバなどの外部の認証サーバを使用するユーザでOSに正しくログインできることを確認してください。

メモ

OSユーザ名とパスワードを使用してPAM認証をする場合は，上記の作業を実施する必要はありません。

(5)　HADBユーザの作成

外部ユーザ名（OSユーザ名やLDAPユーザ名など）と同じ名称の認可識別子のHADBユーザを作成してください。DBA権限を持っているHADBユーザで，次のSQL文を実行してください。

CREATE USER "OSUSER01" IDENTIFIED WITH PAM

下線部分には，外部ユーザ名（OSユーザ名やLDAPユーザ名など）を指定します。

上記のCREATE USER文を実行すると，認可識別子がOSUSER01のHADBユーザが作成されます。

重要

作成したHADBユーザには，権限は付与されていません。「11.10.1　HADBユーザにユーザ権限とスキーマ操作権限を付与する方法」を参照して，必要な権限を付与してください。

メモ

ユーザ認証方式をPAM認証からデータベース認証に，またはデータベース認証からPAM認証にあとで変更できます。詳細については，「11.7.4　HADBユーザのユーザ認証方式を変更する方法」を参照してください。

HADBユーザのユーザ認証方式を確認したい場合は，「付録B.24　ディクショナリ表の検索」の「(40)　HADBユーザのユーザ認証方式を調べる方法」を参照してください。

(6)　秘密鍵ファイルの作成

PAM認証を使用する場合，HADBクライアントからHADBサーバへパスワードを送信します。暗号化したパスワードの復号に使用する秘密鍵ファイルを次の手順で作成してください。

手順

次のすべての操作は，HADB管理者で実行してください。

秘密鍵ファイルの保存先ディレクトリをサーバマシン上に作成する

mkdir /HADB/.private_key

上記のコマンドを実行すると，秘密鍵ファイルの保存先ディレクトリとして/HADB/.private_keyが作成されます。

秘密鍵ファイルの保存先ディレクトリに対する権限を設定する

秘密鍵ファイルの保存先ディレクトリに対する書き込み権限，読み取り権限，および実行権限をHADB管理者だけに設定してください。

chmod 700 /HADB/.private_key

秘密鍵ファイルを作成する

OpenSSLのコマンドを実行して，秘密鍵ファイルの保存先ディレクトリ下に秘密鍵ファイルを作成してください。

openssl genrsa -out /HADB/.private_key/adb_privkey.pem 4096

上記のコマンドを実行すると，RSA暗号方式の鍵長4,096ビットの秘密鍵ファイルadb_privkey.pemが作成されます。

メモ

秘密鍵ファイルには，任意のファイル名を指定できます。adb_privkey.pem以外でもかまいません。

鍵長は4,096ビットにしてください。

秘密鍵ファイルには，パスフレーズを設定しないでください。

OpenSSLのコマンドの詳細については，OpenSSLのドキュメントを参照してください。

秘密鍵ファイルに対する読み取り権限をHADB管理者にだけ設定する

chmod 400 /HADB/.private_key/adb_privkey.pem

メモ

秘密鍵ファイルの保存先ディレクトリおよび秘密鍵ファイルは，PAM認証をやめるときなど不要になった場合は，ユーザが削除してください。

(7)　公開鍵ファイルの作成

HADBクライアントからHADBサーバへパスワードを暗号化して送信するために，パスワードの暗号化に使用する公開鍵ファイルを次の手順で作成してください。

手順

次のすべての操作は，HADB管理者で実行してください。

公開鍵ファイルの保存先ディレクトリをサーバマシン上に作成する

mkdir /HADB/public_key

上記のコマンドを実行すると，公開鍵ファイルの保存先ディレクトリとして/HADB/public_keyが作成されます。

公開鍵ファイルの保存先ディレクトリに対する権限を設定する

公開鍵ファイルの保存先ディレクトリに対する書き込み権限，読み取り権限，および実行権限をHADB管理者に設定してください。

chmod 755 /HADB/public_key

公開鍵ファイルを作成する

OpenSSLのコマンドを実行して，公開鍵ファイルの保存先ディレクトリ下に公開鍵ファイルを作成してください。

openssl rsa -in /HADB/.private_key/adb_privkey.pem -pubout -out /HADB/public_key/adb_pubkey.pem

上記のコマンドを実行すると，秘密鍵ファイル（/HADB/.private_key/adb_privkey.pem）に対応した公開鍵ファイル（/HADB/public_key/adb_pubkey.pem）が作成されます。

メモ

秘密鍵ファイルには，「(6)　秘密鍵ファイルの作成」で作成した秘密鍵ファイルを指定してください。

公開鍵ファイルには，任意のファイル名を指定できます。adb_pubkey.pem以外でもかまいません。

OpenSSLのコマンドの詳細については，OpenSSLのドキュメントを参照してください。

公開鍵ファイルに対する読み取り権限を全OSユーザに設定する

chmod 444 /HADB/public_key/adb_pubkey.pem

メモ

公開鍵ファイルの保存先ディレクトリおよび公開鍵ファイルは，PAM認証をやめるときなど不要になった場合は，ユーザが削除してください。

(8)　サーバ定義の指定

サーバ定義に次のオペランドを追加してください。

adb_auth_passwd_privkey_path

adb_cmd_passwd_pubkey_path

指定例

set adb_auth_passwd_privkey_path = /HADB/.private_key/adb_privkey.pem   ...1
set adb_cmd_passwd_pubkey_path = /HADB/public_key/adb_pubkey.pem        ...2

「(6)　秘密鍵ファイルの作成」で作成した秘密鍵ファイルの絶対パスを指定します。

「(7)　公開鍵ファイルの作成」で作成した公開鍵ファイルの絶対パスを指定します。

重要

adb_auth_passwd_privkey_pathオペランドを指定しない場合，PAM認証の使用時にパスワードは暗号化されません。このとき，パスワードは平文でHADBクライアントからHADBサーバへ送信されます。パスワードを平文で送信した場合，パスワードが外部に流出するリスクが高まるため，秘密鍵ファイルおよび公開鍵ファイルを作成してパスワードを暗号化することを推奨します。

マルチノード機能を使用する場合，adb_auth_passwd_privkey_pathオペランドおよびadb_cmd_passwd_pubkey_pathオペランドの指定に注意が必要です。詳細については，「7.2.12　PAM認証に関するオペランド（set形式）」を参照してください。

(9)　HADBクライアントでの環境設定

HADBクライアントで必要な環境設定について説明します。

(a)　公開鍵ファイルの保存先ディレクトリの作成

公開鍵ファイルの保存先ディレクトリを作成して権限を設定します。ここで説明している操作は，HADBクライアントを管理するOSユーザで実行してください。

Linux版のHADBクライアントの場合

手順

公開鍵ファイルの保存先ディレクトリをクライアントマシン上に作成する

mkdir /HADBCLT/public_key

上記のコマンドを実行すると，公開鍵ファイルの保存先ディレクトリとして/HADBCLT/public_keyが作成されます。

公開鍵ファイルの保存先ディレクトリに対する権限を設定する

公開鍵ファイルの保存先ディレクトリに対する書き込み権限，読み取り権限，および実行権限をHADBクライアントを管理するOSユーザだけに設定してください。

chmod 700 /HADBCLT/public_key

Windows版のHADBクライアントの場合

手順

公開鍵ファイルの保存先フォルダをクライアントマシン上に作成する

公開鍵ファイルの保存先フォルダに対する権限を設定する

公開鍵ファイルの保存先フォルダに対する書き込み権限，読み取り権限，および実行権限を，HADBクライアントを管理するOSユーザだけに設定してください。

(b)　公開鍵ファイルの保存

「(a)　公開鍵ファイルの保存先ディレクトリの作成」で作成したディレクトリ下に公開鍵ファイルを保存します。

Linux版のHADBクライアントの場合

手順

公開鍵ファイルを保存する

次のどちらかの方法で公開鍵ファイルをクライアントマシン上に保存してください。

HADBクライアントを管理するOSユーザでサーバマシンにアクセスします。「(7)　公開鍵ファイルの作成」で作成した公開鍵ファイルを，クライアントマシン上に作成した公開鍵ファイルの保存先ディレクトリ下にOSのscpコマンドなどを実行してコピーしてください。

「(7)　公開鍵ファイルの作成」で作成した公開鍵ファイルのコピーをHADB管理者から受け取ります。受け取ったファイルをクライアントマシン上に作成した公開鍵ファイルの保存先ディレクトリ下に保存してください。

公開鍵ファイルに対する読み取り権限をHADBクライアントを管理するOSユーザに設定する

chmod 400 /HADBCLT/public_key/adb_pubkey.pem

Windows版のHADBクライアントの場合

手順

公開鍵ファイルを保存する

次のどちらかの方法で公開鍵ファイルをクライアントマシン上に保存してください。

HADBクライアントを管理するOSユーザでサーバマシンにアクセスします。「(7)　公開鍵ファイルの作成」で作成した公開鍵ファイルを，クライアントマシン上に作成した公開鍵ファイルの保存先フォルダ下にOSのscpコマンドなどを実行してコピーしてください。

「(7)　公開鍵ファイルの作成」で作成した公開鍵ファイルのコピーをHADB管理者から受け取ります。受け取ったファイルをクライアントマシン上に作成した公開鍵ファイルの保存先フォルダ下に保存してください。

公開鍵ファイルに対する読み取り権限をHADBクライアントを管理するOSユーザに設定する

メモ

公開鍵ファイルの保存先ディレクトリ（公開鍵ファイルの保存先フォルダ）および公開鍵ファイルは，PAM認証をやめるときなど不要になった場合は，ユーザが削除してください。

(c)　クライアント定義の指定

クライアント定義に次のオペランドを追加してください。

adb_clt_passwd_pubkey_path

指定例

set adb_clt_passwd_pubkey_path = /HADBCLT/public_key/adb_pubkey.pem

「(b)　公開鍵ファイルの保存」で保存した公開鍵ファイルの絶対パスを指定します。

11.8.2　PAM認証の環境設定例（OSユーザ名を使用してPAM認証をする場合）

OSユーザ名とパスワードを使用してPAM認証をする場合の環境設定例を説明します。次の条件下で環境設定をするとします。

OSユーザ名：OSUSER

パスワード：OSPASSWORD

Linux版のHADBクライアントを使用している

手順

PAMの設定を行う

サーバマシンに正しくログインできることを確認する

PAM認証を使用するOSユーザ名（OSUSER）で，サーバマシンに正しくログインできることを確認してください。

PAM設定ファイルのサンプルファイルをコピーする

OSのスーパユーザで，次のコマンドを実行してください。

cp $ADBDIR/sample/pam/hadb /etc/pam.d/

PAM設定ファイルのサンプルファイル（$ADBDIR/sample/pam/hadb）を，/etc/pam.dディレクトリ下にコピーします。

PAM設定ファイル（/etc/pam.d/hadb）の所有者とパーミッションを変更する

OSのスーパユーザで，次のコマンドを実行してください。

chown root:root /etc/pam.d/hadb
chmod 644 /etc/pam.d/hadb

/etc/shadowファイルに対する読み取り権限を許可する

次のすべての操作は，OSのスーパユーザで実行してください。

/etc/shadowファイルに対する読み取り権限を許可するOSユーザの所属グループshadowを作成する

groupadd shadow

/etc/shadowファイルの所有グループをshadowに変更する

chgrp shadow /etc/shadow

/etc/shadowファイルのパーミッションを設定する

/etc/shadowファイルに，所有グループに対して読み取り権限だけを許可するようにパーミッションを設定します。

chmod g+r /etc/shadow

/etc/shadowファイルの所有グループshadowにHADB管理者（adbmanager）を追加する

gpasswd -a adbmanager shadow

HADBユーザを作成する

HADBユーザを作成する

DBA権限を持っているHADBユーザで，次のSQL文を実行してください。

CREATE USER "OSUSER" IDENTIFIED WITH PAM

上記のSQL文を実行すると，PAM認証を使用するOSユーザ名（OSUSER）と同じ名称の認可識別子のHADBユーザが作成されます。

HADBユーザにCONNECT権限を付与する

DBA権限を持っているHADBユーザで，次のSQL文を実行してください。

GRANT CONNECT TO "OSUSER"

上記のSQL文を実行すると，HADBユーザ（OSUSER）にCONNECT権限が付与されます。

秘密鍵ファイルを作成する

秘密鍵ファイルの保存先ディレクトリを作成する

HADB管理者で，次のコマンドを実行してください。

mkdir /HADB/.private_key
chmod 700 /HADB/.private_key

サーバマシン上に秘密鍵ファイルの保存先ディレクトリ（/HADB/.private_key）を作成し，パーミッションを設定します。

秘密鍵ファイルを作成する

HADB管理者で，次のコマンドを実行してください。

openssl genrsa -out /HADB/.private_key/adb_privkey.pem 4096
chmod 400 /HADB/.private_key/adb_privkey.pem

秘密鍵ファイル（/HADB/.private_key/adb_privkey.pem）を作成し，パーミッションを設定します。

公開鍵ファイルを作成する

公開鍵ファイルの保存先ディレクトリを作成する

HADB管理者で，次のコマンドを実行してください。

mkdir /HADB/public_key
chmod 755 /HADB/public_key

サーバマシン上に公開鍵ファイルの保存先ディレクトリ（/HADB/public_key）を作成し，パーミッションを設定します。

公開鍵ファイルを作成する

HADB管理者で，次のコマンドを実行してください。

openssl rsa -in /HADB/.private_key/adb_privkey.pem -pubout -out /HADB/public_key/adb_pubkey.pem
chmod 444 /HADB/public_key/adb_pubkey.pem

公開鍵ファイル（/HADB/public_key/adb_pubkey.pem）を作成し，パーミッションを設定します。

サーバ定義にオペランドを追加する

サーバ定義に次のオペランドを追加する

set adb_auth_passwd_privkey_path = /HADB/.private_key/adb_privkey.pem
set adb_cmd_passwd_pubkey_path = /HADB/public_key/adb_pubkey.pem

adb_auth_passwd_privkey_pathオペランドには，作成した秘密鍵ファイルの絶対パスを指定します。

adb_cmd_passwd_pubkey_pathオペランドには，作成した公開鍵ファイルの絶対パスを指定します。

HADBサーバを再起動する

HADBクライアントの環境設定を行う

公開鍵ファイルの保存先ディレクトリを作成する

HADBクライアントを管理するOSユーザで，次のコマンドを実行してください。

mkdir /HADBCLT/public_key
chmod 700 /HADBCLT/public_key

クライアントマシン上に公開鍵ファイルの保存先ディレクトリ（/HADBCLT/public_key）を作成し，パーミッションを設定します。

公開鍵ファイルをコピーする

HADBクライアントを管理するOSユーザで，サーバマシン上にある公開鍵ファイル（/HADB/public_key/adb_pubkey.pem）を，クライアントマシン上の公開鍵ファイルの保存先ディレクトリ（/HADBCLT/public_key）下にコピーしてください。

コピー後，次のようにパーミッションを設定してください。

chmod 400 /HADBCLT/public_key/adb_pubkey.pem

クライアント定義にオペランドを追加する

set adb_clt_passwd_pubkey_path = /HADBCLT/public_key/adb_pubkey.pem

adb_clt_passwd_pubkey_pathオペランドを追加し，2.で保存した公開鍵ファイルの絶対パスを指定します。

HADBサーバに接続できることを確認する

adbsqlコマンドを実行する

adbsql

作成したHADBユーザ（OSUSER）でHADBサーバに接続します。

認可識別子の入力要求に応答する

  USER-ID ?
"OSUSER"

作成したHADBユーザの認可識別子（OSユーザ名と同じ）を指定して，［Enter］キーを押してください。

パスワードの入力要求に応答する

  PASSWORD ?

HADBユーザのパスワード（OSユーザのパスワードと同じ）を指定して，［Enter］キーを押してください。

なお，入力したパスワードは表示されません。

次の画面になるとPAM認証に成功し，HADBサーバへの接続が完了しています。

  USER-ID ?
"OSUSER"
  PASSWORD ?
COMMAND ? +----2----+----3----+----4----+----5----+----6----+----7----+

11.8.3　PAM認証の環境設定例（LDAPユーザ名を使用してPAM認証をする場合）

LDAPユーザ名とパスワードを使用してPAM認証をする場合の環境設定例を説明します。次の条件下で環境設定をするとします。

LDAPユーザ名：LDAPUSER

パスワード：LDAPPASSWORD

Linux版のHADBクライアントを使用している

手順

PAMの設定を行う

サーバマシンに正しくログインできることを確認する

OSのSSSDのサービスを使用して，PAM認証を使用するLDAPユーザ名（LDAPUSER）で，サーバマシンに正しくログインできることを確認してください。

PAM設定ファイルのサンプルファイルをコピーする

OSのスーパユーザで，次のコマンドを実行してください。

cp $ADBDIR/sample/pam/hadb /etc/pam.d/

PAM設定ファイルのサンプルファイル（$ADBDIR/sample/pam/hadb）を，/etc/pam.dディレクトリ下にコピーします。

PAM設定ファイル（/etc/pam.d/hadb）の所有者とパーミッションを変更する

OSのスーパユーザで，次のコマンドを実行してください。

chown root:root /etc/pam.d/hadb
chmod 644 /etc/pam.d/hadb

SSSDの設定を行う

SSSDのサービスを再起動する

OSのスーパユーザで，次のコマンドを実行してください。

systemctl restart sssd

HADBユーザを作成する

HADBユーザを作成する

DBA権限を持っているHADBユーザで，次のSQL文を実行してください。

CREATE USER "LDAPUSER" IDENTIFIED WITH PAM

上記のSQL文を実行すると，PAM認証を使用するLDAPユーザ名（LDAPUSER）と同じ名称の認可識別子のHADBユーザが作成されます。

HADBユーザにCONNECT権限を付与する

DBA権限を持っているHADBユーザで，次のSQL文を実行してください。

GRANT CONNECT TO "LDAPUSER"

上記のSQL文を実行すると，HADBユーザ（LDAPUSER）にCONNECT権限が付与されます。

秘密鍵ファイルを作成する

秘密鍵ファイルの保存先ディレクトリを作成する

HADB管理者で，次のコマンドを実行してください。

mkdir /HADB/.private_key
chmod 700 /HADB/.private_key

サーバマシン上に秘密鍵ファイルの保存先ディレクトリ（/HADB/.private_key）を作成し，パーミッションを設定します。

秘密鍵ファイルを作成する

HADB管理者で，次のコマンドを実行してください。

openssl genrsa -out /HADB/.private_key/adb_privkey.pem 4096
chmod 400 /HADB/.private_key/adb_privkey.pem

秘密鍵ファイル（/HADB/.private_key/adb_privkey.pem）を作成し，パーミッションを設定します。

公開鍵ファイルを作成する

公開鍵ファイルの保存先ディレクトリを作成する

HADB管理者で，次のコマンドを実行してください。

mkdir /HADB/public_key
chmod 755 /HADB/public_key

サーバマシン上に公開鍵ファイルの保存先ディレクトリ（/HADB/public_key）を作成し，パーミッションを設定します。

公開鍵ファイルを作成する

HADB管理者で，次のコマンドを実行してください。

openssl rsa -in /HADB/.private_key/adb_privkey.pem -pubout -out /HADB/public_key/adb_pubkey.pem
chmod 444 /HADB/public_key/adb_pubkey.pem

公開鍵ファイル（/HADB/public_key/adb_pubkey.pem）を作成し，パーミッションを設定します。

サーバ定義にオペランドを追加する

サーバ定義に次のオペランドを追加する

set adb_auth_passwd_privkey_path = /HADB/.private_key/adb_privkey.pem
set adb_cmd_passwd_pubkey_path = /HADB/public_key/adb_pubkey.pem

adb_auth_passwd_privkey_pathオペランドには，作成した秘密鍵ファイルの絶対パスを指定します。

adb_cmd_passwd_pubkey_pathオペランドには，作成した公開鍵ファイルの絶対パスを指定します。

HADBサーバを再起動する

HADBクライアントの環境設定を行う

公開鍵ファイルの保存先ディレクトリを作成する

HADBクライアントを管理するOSユーザで，次のコマンドを実行してください。

mkdir /HADBCLT/public_key
chmod 700 /HADBCLT/public_key

クライアントマシン上に公開鍵ファイルの保存先ディレクトリ（/HADBCLT/public_key）を作成し，パーミッションを設定します。

公開鍵ファイルをコピーする

HADBクライアントを管理するOSユーザで，サーバマシン上にある公開鍵ファイル（/HADB/public_key/adb_pubkey.pem）を，クライアントマシン上の公開鍵ファイルの保存先ディレクトリ（/HADBCLT/public_key）下にコピーしてください。

コピー後，次のようにパーミッションを設定してください。

chmod 400 /HADBCLT/public_key/adb_pubkey.pem

クライアント定義にオペランドを追加する

set adb_clt_passwd_pubkey_path = /HADBCLT/public_key/adb_pubkey.pem

adb_clt_passwd_pubkey_pathオペランドを追加し，2.で保存した公開鍵ファイルの絶対パスを指定します。

HADBサーバに接続できることを確認する

adbsqlコマンドを実行する

adbsql

作成したHADBユーザ（LDAPUSER）でHADBサーバに接続します。

認可識別子の入力要求に応答する

  USER-ID ?
"LDAPUSER"

作成したHADBユーザの認可識別子（LDAPユーザ名と同じ）を指定して，［Enter］キーを押してください。

パスワードの入力要求に応答する

  PASSWORD ?

HADBユーザのパスワード（LDAPユーザのパスワードと同じ）を指定して，［Enter］キーを押してください。

なお，入力したパスワードは表示されません。

次の画面になるとPAM認証に成功し，HADBサーバへの接続が完了しています。

  USER-ID ?
"LDAPUSER"
  PASSWORD ?
COMMAND ? +----2----+----3----+----4----+----5----+----6----+----7----+

11.8.4　秘密鍵ファイルおよび公開鍵ファイルの更新

秘密鍵ファイルおよび公開鍵ファイルを更新する手順を次に示します。

手順

次のすべての操作は，HADB管理者で実行してください。

秘密鍵ファイルを作成する

OpenSSLのコマンドを実行して，秘密鍵ファイルの保存先ディレクトリ下に秘密鍵ファイルを作成してください。

openssl genrsa -out /HADB/.private_key/adb_privkey_02.pem 4096

上記のコマンドを実行すると，RSA暗号方式の鍵長4,096ビットの秘密鍵ファイルadb_privkey_02.pemが作成されます。

メモ

鍵長は4,096ビットにしてください。

秘密鍵ファイルには，パスフレーズを設定しないでください。

秘密鍵ファイルに対する読み取り権限をHADB管理者だけに設定する

chmod 400 /HADB/.private_key/adb_privkey_02.pem

公開鍵ファイルを作成する

OpenSSLのコマンドを実行して，公開鍵ファイルの保存先ディレクトリ下に公開鍵ファイルを作成してください。

openssl rsa -in /HADB/.private_key/adb_privkey_02.pem -pubout -out /HADB/public_key/adb_pubkey_02.pem

上記のコマンドを実行すると，1.で作成した秘密鍵ファイル（/HADB/.private_key/adb_privkey_02.pem）に対応した公開鍵ファイル（/HADB/public_key/adb_pubkey_02.pem）が作成されます。

公開鍵ファイルに対する読み取り権限を全OSユーザに設定する

chmod 444 /HADB/public_key/adb_pubkey_02.pem

サーバ定義を変更して，HADBサーバを再起動する

set adb_auth_passwd_privkey_path = /HADB/.private_key/adb_privkey_02.pem
set adb_cmd_passwd_pubkey_path = /HADB/public_key/adb_pubkey_02.pem

adb_auth_passwd_privkey_pathオペランドには，新たに作成した秘密鍵ファイルの絶対パスを指定します。

adb_cmd_passwd_pubkey_pathオペランドには，新たに作成した公開鍵ファイルの絶対パスを指定します。

HADBクライアントに保存している公開鍵ファイルを，新たに作成した公開鍵ファイル（adb_pubkey_02.pem）に差し替える

次の作業を実施してください。

新たに作成した公開鍵ファイルの保存

クライアントマシン上の公開鍵ファイルの保存先ディレクトリ下に，3.で作成した公開鍵ファイルを保存し，権限を設定してください。手順については。「11.8.1　PAM認証の環境設定」の「(9)　HADBクライアントでの環境設定」の「(b)　公開鍵ファイルの保存」を参照してください。

クライアント定義の変更

adb_clt_passwd_pubkey_pathオペランドに，新たに作成した公開鍵ファイルの絶対パスを指定してください。

set adb_clt_passwd_pubkey_path = /HADBCLT/public_key/adb_pubkey_02.pem

11.9　Keycloak認証の導入

ここでは，Keycloak認証の導入方法について説明します。Keycloak認証については，「2.6.3　Keycloak認証」を参照してください。

11.9.1　Keycloak認証の環境設定

Keycloak認証を使用する際の環境設定の流れを次の表に示します。

表11‒11　Keycloak認証を使用する際の環境設定の流れ

作業項目

説明

実行者

Keycloakサーバでの設定

Keycloakサーバで必要な設定を実施します。

Keycloakサーバの管理者

サーバ定義の指定

Keycloak認証に関するオペランドを指定します。

HADB管理者

HADBユーザの作成

CREATE USER文でHADBユーザを作成します。

DBA権限を持っているHADBユーザ

上記の各作業については，以降で順次説明します。

(1)　Keycloakサーバでの設定

Keycloakサーバで次の設定をしてください。Keycloakサーバの操作方法については，Keycloakのドキュメントの「認証サービスガイド」を参照してください。

設定ファイルの指定

サーバ定義にadb_auth_clt_keyc_endpointオペランドを指定する場合，Keycloakの設定ファイルにhostnameを指定したあとにKeycloakサーバを開始してください。指定例を次に示します。

hostname = https://auth.global.com:8080

adb_auth_clt_keyc_endpointオペランドについては，「(2)　サーバ定義の指定」を参照してください。

Keycloakサーバの開始後，次の設定をしてください。

レルムの作成

Keycloakサーバの管理インタフェースを使用してレルム（レルム名は任意）を作成してください。

ユーザの作成

Keycloakサーバでユーザ情報を管理する場合は，作成したレルムにユーザを作成し，パスワードを設定してください。Keycloakサーバに登録するユーザ名は，HADBの認可識別子の名称規則に従う必要があります。認可識別子の名称規則については，マニュアルHADB　SQLリファレンスの名前の指定を参照してください。

また，次の注意事項があります。

作成したユーザには，OTPなどの多要素認証の設定は行わないでください。

ユーザ名にメールアドレスを使用する設定（Email as username）はONにしないでください。

クライアントの作成

作成したレルムにクライアント（クライアントIDは任意）を作成してください。クライアントを作成する際，次のように指定してください。

Client TypeはOpenID Connectを選択してください。

Authentication flowのDirect access grantsを指定してください。

Client authenticationはOFFにしてください。

Front channel logoutはOFFにしてください。

ユーザーフェデレーション機能の設定

LDAPサーバなどの外部の認証サーバを使用する場合は，ユーザーフェデレーション機能の設定を行ってください。

上記の設定以外に，HADBサーバとHADBクライアントからKeycloakサーバに接続できる環境を準備する必要があります。

(2)　サーバ定義の指定

サーバ定義にKeycloak認証に関する次のオペランドを指定してください。

adb_auth_keyc_endpoint

adb_auth_clt_keyc_endpoint

adb_auth_keyc_realm

adb_auth_keyc_clt_id

指定例

set adb_auth_keyc_endpoint = https://auth.local.com:8080              ...1
set adb_auth_clt_keyc_endpoint = https://auth.global.com:8080         ...2
set adb_auth_keyc_realm = production                                  ...3
set adb_auth_keyc_clt_id = hadb                                       ...4

［説明］

HADBサーバが接続するKeycloakサーバのエンドポイントURLを指定します。指定必須のオペランドです。

HADBクライアントが接続するKeycloakサーバのエンドポイントURLを指定します。HADBサーバが接続するKeycloakサーバのエンドポイントURLと，HADBクライアントが接続するKeycloakサーバのエンドポイントURLが異なる場合に，このオペランドを指定してください。

Keycloakサーバで作成したレルム名を指定します。指定必須のオペランドです。

Keycloakサーバで作成したクライアントのクライアントIDを指定します。指定必須のオペランドです。

重要

マルチノード機能を使用する場合は，上記の4つのオペランドの指定値をプライマリノードおよび全セカンダリノードで同じにしてください。

(3)　HADBユーザの作成

外部ユーザ名（Keycloakサーバに登録したユーザ名や，LDAPサーバに登録したユーザ名など）と同じ名称の認可識別子のHADBユーザを作成してください。DBA権限を持っているHADBユーザで，次のSQL文を実行してください。

CREATE USER "KEYUSER01" IDENTIFIED WITH KEYCLOAK

下線部分には，外部ユーザ名（KeycloakサーバやLDAPサーバに登録されているユーザ名など）を指定します。

上記のCREATE USER文を実行すると，認可識別子がKEYUSER01のHADBユーザが作成されます。

重要

作成したHADBユーザには，権限は付与されていません。「11.10.1　HADBユーザにユーザ権限とスキーマ操作権限を付与する方法」を参照して，必要な権限を付与してください。

メモ

ユーザ認証方式を，Keycloak認証からデータベース認証またはPAM認証にあとで変更できます。また，データベース認証またはPAM認証からKeycloak認証にあとで変更できます。詳細については，「11.7.4　HADBユーザのユーザ認証方式を変更する方法」を参照してください。

HADBユーザのユーザ認証方式を確認したい場合は，「付録B.24　ディクショナリ表の検索」の「(40)　HADBユーザのユーザ認証方式を調べる方法」を参照してください。

11.10　ユーザ権限とスキーマ操作権限の管理

ここでは，ユーザ権限とスキーマ操作権限の管理方法について説明します。

監査権限の管理方法については，「12.4.1　監査人の追加，削除，変更（監査権限の付与または取り消し）」を参照してください。

暗号管理権限の管理方法については，「13.4　暗号管理権限を付与または取り消す場合」を参照してください。

11.10.1　HADBユーザにユーザ権限とスキーマ操作権限を付与する方法

ユーザ権限およびスキーマ操作権限は，定義系SQLのGRANT文で付与します。

DBA権限およびCONNECT権限を持っているHADBユーザが，GRANT文を実行してください。

HADBユーザに，ユーザ権限およびスキーマ操作権限を付与する例を次に示します。

指定例1

HADBユーザ「ADBUSER02」に，DBA権限，CONNECT権限およびスキーマ定義権限を付与します。

GRANT DBA,CONNECT,SCHEMA TO "ADBUSER02"

指定例2

HADBユーザ「ADBUSER03」と「ADBUSER04」に，CONNECT権限およびスキーマ定義権限を付与します。

GRANT CONNECT,SCHEMA TO "ADBUSER03","ADBUSER04"

GRANT文については，マニュアルHADB　SQLリファレンスの定義系SQLのGRANT（権限の付与）を参照してください。

重要

同一のHADBユーザが監査管理権限とDBA権限の両方を持つことはできません。そのため，監査管理権限を持っているHADBユーザにDBA権限を付与することはできません。

同一のHADBユーザが暗号管理権限とDBA権限の両方を持つことはできません。そのため，暗号管理権限を持っているHADBユーザにDBA権限を付与することはできません。

11.10.2　HADBユーザが持っているユーザ権限とスキーマ操作権限を確認する方法

HADBユーザが持っているユーザ権限およびスキーマ操作権限は，ディクショナリ表SQL_USERSを検索して確認します。

DBA権限を持っているHADBユーザは，すべてのHADBユーザが持っているユーザ権限およびスキーマ操作権限を確認できます。DBA権限を持っていないHADBユーザは，自分（HADBサーバに接続中の認可識別子のHADBユーザ）が持っているユーザ権限およびスキーマ操作権限だけしか確認できません。

HADBユーザに付与したユーザ権限およびスキーマ操作権限を確認する例を次に示します。

指定例

DBA権限およびCONNECT権限を持ったHADBユーザが，作成されたすべてのHADBユーザに付与されたユーザ権限およびスキーマ操作権限を確認します。

SELECT "USER_NAME","DBA_PRIVILEGE","CONNECT_PRIVILEGE","SCHEMA_PRIVILEGE"
  FROM "MASTER"."SQL_USERS"

検索結果のうち，"DBA_PRIVILEGE"，"CONNECT_PRIVILEGE"，"SCHEMA_PRIVILEGE"が'Y'の場合は，対象のユーザ権限およびスキーマ操作権限を持っています。'N'の場合は，対象のユーザ権限およびスキーマ操作権限を持っていません。

ディクショナリ表SQL_USERSについては，「付録B.13　SQL_USERSの内容」を参照してください。

11.10.3　HADBユーザが持っているユーザ権限とスキーマ操作権限を取り消す方法

HADBユーザに付与したユーザ権限とスキーマ操作権限は，定義系SQLのREVOKE文で取り消せます。

DBA権限およびCONNECT権限を持っているHADBユーザが，REVOKE文を実行してください。

HADBユーザに付与したユーザ権限とスキーマ操作権限を取り消す例を次に示します。

指定例1

HADBユーザ「ADBUSER02」に付与したDBA権限，CONNECT権限およびスキーマ定義権限を取り消します。

REVOKE DBA,CONNECT,SCHEMA FROM "ADBUSER02" CASCADE

重要

スキーマ定義権限を取り消した場合，取り消し対象のHADBユーザが所有しているスキーマおよび表も削除されるため，次に示す影響があります。

REVOKE文の実行によって削除される表に依存するビュー表（ほかのスキーマのビュー表）が，削除または無効化されます。

REVOKE文の実行によって削除される表を被参照表とする外部キー（ほかのスキーマの外部キー）も削除されます。

スキーマの削除については，「11.12.2　スキーマを削除する方法」を参照してください。スキーマに定義されている実表が更新不可状態だった場合，中断したコマンドによって作成された作業用一時ファイルが残ることがあります。

指定例2

HADBユーザ「ADBUSER03」と「ADBUSER04」に付与したCONNECT権限およびスキーマ定義権限を取り消します。ただし，「ADBUSER03」と「ADBUSER04」がスキーマを所有している場合は，REVOKE文の実行を中止します。

REVOKE CONNECT,SCHEMA FROM "ADBUSER03","ADBUSER04" RESTRICT

ADBUSER03はスキーマを所有していて，ADBUSER04はスキーマを所有していない場合に上記のREVOKE文を実行すると，ADBUSER03およびADBUSER04の両方に対して，REVOKE文の実行を中止します。

REVOKE文については，マニュアルHADB　SQLリファレンスの定義系SQLのREVOKE（権限の取り消し）を参照してください。

重要

監査権限を持っているHADBユーザのCONNECT権限およびスキーマ定義権限を取り消すことはできません。

暗号管理権限を持っているHADBユーザのCONNECT権限を取り消すことはできません。

データベース認証を使用し，かつDBA権限およびCONNECT権限を持っているHADBユーザが最低1人必要です。そのため，このようなHADBユーザが1人しかいないときに，そのHADBユーザからDBA権限またはCONNECT権限を取り消すことはできません。

11.11　アクセス権限の管理

ここでは，アクセス権限の管理方法について説明します。

11.11.1　HADBユーザにアクセス権限を付与する方法

スキーマオブジェクトに対するアクセス権限をほかのHADBユーザに付与するには，GRANT文を実行します。

重要

アクセス権限を付与するHADBユーザ（GRANT文を実行するHADBユーザ）は，そのアクセス権限の付与権を持っている必要があります。

ほかのHADBユーザにアクセス権限を付与する方法を，例を使って説明します。

例題1

HADBユーザADBUSER01とADBUSER02に，表A.T1に対するSELECT権限，INSERT権限，およびEXPORT TABLE権限を付与します。

GRANT SELECT,INSERT,EXPORT TABLE ON "A"."T1" TO "ADBUSER01","ADBUSER02"

GRANT文を実行するHADBユーザは，表A.T1に対するSELECT権限，INSERT権限，およびEXPORT TABLE権限を付与権付きで持っている必要があります。

例題2

HADBユーザADBUSER01に，表A.T1に対するアクセス権限を付与します。

GRANT ALL PRIVILEGES ON "A"."T1" TO "ADBUSER01"

GRANT文を実行するHADBユーザは，表A.T1に対するアクセス権限を付与権付きで持っている必要があります。

メモ

GRANT文を実行するHADBユーザが，表A.T1に対する一部の種類のアクセス権限の付与権だけを持っている場合に，上記のGRANT文を実行すると，付与権を持っているアクセス権限だけが付与されます。例えば，GRANT文を実行するHADBユーザが，SELECT権限とINSERT権限の付与権だけを持っている場合に，上記のGRANT文を実行すると，HADBユーザADBUSER01には，SELECT権限とINSERT権限だけが付与されます。

例題3

表A.T1に対するSELECT権限を全HADBユーザに許可します。

GRANT SELECT ON "A"."T1" TO PUBLIC

GRANT文を実行するHADBユーザは，表A.T1の所有者である必要があります。

例題4

HADBユーザADBUSER01に，表A.T1に対するSELECT権限を付与権付きで付与します。

GRANT SELECT ON "A"."T1" TO "ADBUSER01" WITH GRANT OPTION

アクセス権限を付与権付きで付与する場合は，WITH GRANT OPTIONを指定します。

GRANT文を実行するHADBユーザは，表A.T1に対するSELECT権限を付与権付きで持っている必要があります。

GRANT文については，マニュアルHADB　SQLリファレンスの定義系SQLのGRANT（権限の付与）を参照してください。

11.11.2　HADBユーザが持っているアクセス権限を確認する方法

HADBユーザが持っているアクセス権限の種類は，ディクショナリ表SQL_TABLE_PRIVILEGESを検索して確認します。

なお，HADBユーザが持っている権限によって，確認できる範囲が異なります。HADBユーザが参照できるディクショナリ表の範囲については，「2.7.8　HADBユーザが参照できるディクショナリ表とシステム表の範囲」を参照してください。

HADBユーザが持っているアクセス権限の種類を確認する例を次に示します。

指定例

DBA権限およびCONNECT権限を持ったHADBユーザが，作成されたすべてのHADBユーザに付与されたアクセス権限の種類を確認します。

SELECT "GRANTOR","GRANTEE","TABLE_SCHEMA","TABLE_NAME",
       "SELECT_PRIVILEGE","INSERT_PRIVILEGE","UPDATE_PRIVILEGE",
       "DELETE_PRIVILEGE","TRUNCATE_PRIVILEGE",
       "REFERENCES_PRIVILEGE","IMPORT_TABLE_PRIVILEGE",
       "REBUILD_INDEX_PRIVILEGE","GET_COSTINFO_PRIVILEGE",
       "EXPORT_TABLE_PRIVILEGE","MERGE_CHUNK_PRIVILEGE",
       "CHANGE_CHUNK_COMMENT_PRIVILEGE","CHANGE_CHUNK_STATUS_PRIVILEGE",
       "ARCHIVE_CHUNK_PRIVILEGE","UNARCHIVE_CHUNK_PRIVILEGE","COPY_PRIVILEGE"
  FROM "MASTER"."SQL_TABLE_PRIVILEGES"

［説明］

例えば，SELECT権限を持っているかどうかは，SELECT_PRIVILEGE列に表示される情報で確認できます。

'G'が表示された場合は，スキーマオブジェクトに対するSELECT権限を付与権付きで持っています。

'Y'が表示された場合は，スキーマオブジェクトに対するSELECT権限（付与権なし）を持っています。

'N'が表示された場合は，スキーマオブジェクトに対するSELECT権限を持っていません。

スキーマオブジェクトのスキーマ名と表識別子は，TABLE_SCHEMA列とTABLE_NAME列に表示されます。

ディクショナリ表SQL_TABLE_PRIVILEGESについては，「付録B.18　SQL_TABLE_PRIVILEGESの内容」を参照してください。

11.11.3　HADBユーザに付与したアクセス権限を取り消す方法

HADBユーザに付与したアクセス権限を取り消すには，REVOKE文を実行します。

重要

アクセス権限を付与したHADBユーザだけが，そのアクセス権限を取り消すことができます。

HADBユーザに付与したアクセス権限を取り消す方法を，例を使って説明します。

例題1

HADBユーザADBUSER01に付与した，表A.T1に対するSELECT権限を取り消します。

REVOKE SELECT ON "A"."T1" FROM "ADBUSER01"

例題2

HADBユーザADBUSER01に付与した，表A.T1に対する全種類のアクセス権限を取り消します。

REVOKE ALL PRIVILEGES ON "A"."T1" FROM "ADBUSER01" RESTRICT

上記の例の場合，RESTRICTを指定しているため，次のどれかの条件を満たしているときは，REVOKE文がエラーになります。

ADBUSER01が，表A.T1を基表としたビュー表を定義している場合

ADBUSER01が，表A.T1に対するアクセス権限をほかのHADBユーザに付与している場合（ADBUSER01が持っている表A.T1に対するアクセス権限に依存権限がある場合）

ADBUSER01が，表A.T1を被参照表にして定義した参照制約がある場合

例題3

GRANT文のPUBLIC指定で全HADBユーザに許可した，表A.T1に対するSELECT権限の許可を取り消します。

REVOKE SELECT ON "A"."T1" FROM PUBLIC

REVOKE文については，マニュアルHADB　SQLリファレンスの定義系SQLのREVOKE（権限の取り消し）を参照してください。

重要

取り消したアクセス権限に依存権限がある場合，依存権限も一緒に取り消されます。詳細については，「2.7.6　アクセス権限」の「(4)　アクセス権限の取り消し」を参照してください。

ビュー表の基表に対するSELECT権限が取り消された場合，その基表に依存するビュー表が無効化されます。また，付与権付きのSELECT権限が取り消された場合，その付与権を使用して付与されたSELECT権限も取り消されます。それに伴いビュー表が無効化されることがあります。詳細については，「2.7.7　ビュー表に対するアクセス権限」を参照してください。

表に対するREFERENCES権限が取り消された場合，そのREFERENCES権限を使用して定義した参照制約が削除されます。

11.11.4　HADBユーザに付与したアクセス権限の付与権だけを取り消す方法

HADBユーザに付与したアクセス権限の付与権だけを取り消すには，GRANT OPTION FORを指定してREVOKE文を実行します。

重要

付与権付きのアクセス権限を付与したHADBユーザだけが，そのアクセス権限の付与権を取り消すことができます。

HADBユーザに付与したアクセス権限の付与権だけを取り消す方法を，例を使って説明します。

例題

HADBユーザADBUSER01に付与した，表A.T1に対するSELECT権限の付与権だけを取り消します。

REVOKE GRANT OPTION FOR SELECT ON "A"."T1" FROM "ADBUSER01"

付与権だけを取り消す場合は，GRANT OPTION FORを指定してREVOKE文を実行します。

この場合，HADBユーザADBUSER01が持っている，表A.T1に対するSELECT権限は取り消されません。

REVOKE文については，マニュアルHADB　SQLリファレンスの定義系SQLのREVOKE（権限の取り消し）を参照してください。

重要

アクセス権限の付与権を取り消した場合，その付与権を使用して付与したアクセス権限が取り消されます。詳細については，「2.7.6　アクセス権限」の「(4)　アクセス権限の取り消し」を参照してください。

SELECT権限の付与権が取り消された場合，その付与権を使用して付与されたSELECT権限も取り消されます。それに伴いビュー表が無効化されることがあります。詳細については，「2.7.7　ビュー表に対するアクセス権限」を参照してください。

11.11.5　HADBユーザが持っているアクセス権限を変更する方法

HADBユーザが持っているアクセス権限を変更する場合は，不要なアクセス権限を取り消したあとで，必要なアクセス権限を付与する必要があります。

次の手順に従って，アクセス権限を変更してください。

手順

HADBユーザが持っているアクセス権限を確認する

「11.11.2　HADBユーザが持っているアクセス権限を確認する方法」を参照して，持っているアクセス権限を確認してください。

HADBユーザが持っている不要なアクセス権限を取り消す

「11.11.3　HADBユーザに付与したアクセス権限を取り消す方法」を参照して，REVOKE文を実行してください。

HADBユーザに必要なアクセス権限を付与する

「11.11.1　HADBユーザにアクセス権限を付与する方法」を参照して，GRANT文を実行してください。

11.12　スキーマの運用

ここでは，スキーマの運用について説明します。

11.12.1　スキーマを定義する方法

スキーマを定義する場合は，CREATE SCHEMA文を実行します。

CREATE SCHEMA文については，マニュアルHADB　SQLリファレンスの定義系SQLのCREATE SCHEMA（スキーマの定義）を参照してください。

11.12.2　スキーマを削除する方法

スキーマを削除する場合は，DROP SCHEMA文を実行します。

DROP SCHEMA文については，マニュアルHADB　SQLリファレンスの定義系SQLのDROP SCHEMA（スキーマの削除）を参照してください。

重要

スキーマを削除すると，スキーマに定義されたスキーマオブジェクトもすべて削除されます。

削除するスキーマに実表が定義されている場合は，スキーマを削除する前に「11.1.19　実表を削除する方法」を確認してください。実表が更新不可状態のままスキーマを削除すると，中断したコマンドによって作成された作業用一時ファイルが残るおそれがあります。

11.13　データ用DBエリアの運用

ここでは，データ用DBエリア，およびデータ用DBエリアファイルの運用について説明します。

メモ

実表が格納されているデータ用DBエリアを変更したい場合は，「11.1.18　実表が格納されているデータ用DBエリアを変更する方法」を参照してください。

インデクスが格納されているデータ用DBエリアを変更したい場合は，「11.4.8　インデクスが格納されているデータ用DBエリアを変更する方法」を参照してください。

暗号化対象のデータ用DBエリアを追加したい場合は，「13.2　暗号化対象のデータ用DBエリアを追加する場合」を参照してください。

11.13.1　データ用DBエリアを追加する方法

ここでは，adbmodareaコマンドを使用して，新規にデータ用DBエリアを追加する方法を説明します。adbmodareaコマンドについては，マニュアルHADB　コマンドリファレンスのadbmodarea（DBエリアの追加・変更）を参照してください。

データ用DBエリアを追加する場合の指定例を次に示します。HADB管理者が実行してください。

■指定例

データ用DBエリアを追加します。

adbmodarea /HADB/server/conf/adbmodarea.opt

adbmodareaコマンドを実行する場合，DBエリア追加・変更オプションのadbaddareaオペランドを指定したDBエリア追加・変更オプションファイルを作成する必要があります。

DBエリア追加・変更オプションのadbaddareaオペランドについては，マニュアルHADB　コマンドリファレンスのadbmodarea（DBエリアの追加・変更）のadbmodareaコマンドの指定形式を参照してください。

実表，B-treeインデクス，テキストインデクスまたはレンジインデクスを新たに定義する場合で，かつ次に示すケースに該当する場合は，データ用DBエリアを追加することを検討してください。

レンジインデクスを定義するとき

レンジインデクス専用のデータ用DBエリアを追加することを推奨します。

グローバルバッファやデータ用DBエリアファイルを，既存のデータ用DBエリアと分けたいとき

既存の実表，B-treeインデクス，テキストインデクスまたはレンジインデクスへの影響を分散するために，データ用DBエリアを追加してください。

新たに実表を格納するのに適当なページサイズのデータ用DBエリアがないとき

メモ

■追加したデータ用DBエリアとグローバルバッファの関係

サーバ定義adbbuffオペランドの-oオプションを指定していた場合，追加したデータ用DBエリアには，-oオプションの指定に従ってグローバルバッファが自動的に割り当てられます。

-oオプションを指定していなかった場合，追加したデータ用DBエリアには，-oオプションを指定したときと同様のグローバルバッファが自動的に割り当てられます。

どちらの場合も必要な処理性能が得られないときは，追加したデータ用DBエリアに割り当てるグローバルバッファを，adbbuffオペランドに指定してください。詳細については，「7.2.18　グローバルバッファに関するオペランドおよびオプション（コマンド形式）」，および「8.5.2　サーバ定義の変更方法」を参照してください。

また，必要に応じて，adbbuffオペランドの指定値を見直してください。詳細については，「14.2.2　SQL文の実行時間を短縮する方法」を参照してください。

■クラウドストレージ機能を使用している場合

データ用DBエリア数が増えるに従って，HADBサーバの開始，adbdbstatusコマンドの実行，およびチャンクの更新または削除などの各種の処理時間が長くなるおそれがあります。そのため，データ用DBエリアの追加は，必要な場合に限り実行するようにしてください。データ用DBエリアを追加する前に，「5.6　データ用DBエリアの設計」を参照して，データ用DBエリアの追加の妥当性を検討してください。

11.13.2　データ用DBエリアを削除する方法

ここでは，adbmodareaコマンドを使用して，データ用DBエリアを削除する方法を説明します。adbmodareaコマンドについては，マニュアルHADB　コマンドリファレンスのadbmodarea（DBエリアの追加・変更）を参照してください。

データ用DBエリアを削除する場合の指定例を次に示します。HADB管理者が実行してください。

■指定例

データ用DBエリアを削除します。

adbmodarea /HADB/server/conf/adbmodarea.opt

adbmodareaコマンドを実行する場合，DBエリア追加・変更オプションのadbrmareaオペランドを指定したDBエリア追加・変更オプションファイルを作成する必要があります。

DBエリア追加・変更オプションのadbrmareaオペランドについては，マニュアルHADB　コマンドリファレンスのadbmodarea（DBエリアの追加・変更）のadbmodareaコマンドの指定形式を参照してください。

11.13.3　データ用DBエリアを拡張する方法（データ用DBエリアファイルの追加）

ここでは，adbmodareaコマンドを使用して，既存のデータ用DBエリアを拡張する方法について説明します。adbmodareaコマンドについては，マニュアルHADB　コマンドリファレンスのadbmodarea（DBエリアの追加・変更）を参照してください。

新たにデータ用DBエリアファイルを追加して，既存のデータ用DBエリアの容量を拡張したい場合に，adbmodareaコマンドを実行してください。データ用DBエリアの拡張について，次の図に示します。

図11‒41　データ用DBエリアの拡張の概要

データ用DBエリアを拡張する場合の指定例を次に示します。HADB管理者が実行してください。

■指定例

データ用DBエリアを拡張します。

adbmodarea /HADB/server/conf/adbmodarea.opt

adbmodareaコマンドを実行する場合，DBエリア追加・変更オプションのadbexpandareaオペランドを指定したDBエリア追加・変更オプションファイルを作成する必要があります。

DBエリア追加・変更オプションのadbexpandareaオペランドについては，マニュアルHADB　コマンドリファレンスのadbmodarea（DBエリアの追加・変更）のadbmodareaコマンドの指定形式を参照してください。

■クラウドストレージ機能を使用している場合

データ用DBエリアを拡張した場合，S3バケット内またはコンテナー内に約1ペタバイトの新たな領域（仮想DBエリアファイル）が追加されます。クラウドストレージ機能使用時のデータ用DBエリアの拡張の概要を次の図に示します。

図11‒42　クラウドストレージ機能使用時のデータ用DBエリアの拡張の概要

重要

データ用DBエリアを拡張した場合，HADBサーバの開始，adbdbstatusコマンドの実行，およびチャンクの更新または削除などの各種の処理時間が長くなるおそれがあります。そのため，データ用DBエリアの拡張は，データ用DBエリアの容量不足の発生が確実な場合に限り実行するようにしてください。

11.13.4　データ用DBエリアを再初期化する方法

ここでは，特定のデータ用DBエリアを再初期化する方法について説明します。

メモ

データベースの初期設定でデータ用DBエリアを作成（初期化）したあとで，特定のデータ用DBエリアをいったん削除し，同名のデータ用DBエリアとして再度追加することを，データ用DBエリアの再初期化といいます。

特定のデータ用DBエリアを再初期化したい場合は，adbmodareaコマンドを使用します。ただし，adbmodareaコマンドは一度の操作で再初期化を実施できません。そのため，次の手順に従って，データ用DBエリアの再初期化を行ってください。

手順

再初期化したいデータ用DBエリアをいったん削除する

データ用DBエリアを削除する場合，「11.13.2　データ用DBエリアを削除する方法」を参照してください。

同名のデータ用DBエリアとして再度追加する

データ用DBエリアを追加する場合，「11.13.1　データ用DBエリアを追加する方法」を参照してください。

adbmodareaコマンドについては，マニュアルHADB　コマンドリファレンスのadbmodarea（DBエリアの追加・変更）を参照してください。

重要

特定のデータ用DBエリアを再初期化したい場合，adbinitコマンドは使用しないでください。

adbinitコマンドは，データベースの初期設定を行うために，すべてのDBエリアを初期化するコマンドです。すでにデータ用DBエリアが存在する状態で，adbinitコマンドを実行してしまうと，すべてのDBエリア（データ用DBエリア以外のDBエリアも含む）が削除されてしまいます。

11.13.5　データ用DBエリアファイルの格納場所を変更する方法

ここでは，データ用DBエリアを構成するデータ用DBエリアファイルの格納場所を変更する方法について説明します。

メモ

ここでの説明は，クラウドストレージ機能を使用していないことが前提となります。クラウドストレージ機能を使用している場合は，データ用DBエリアのデータの格納場所を変更できません。

重要

1つのデータ用DBエリアが複数のデータ用DBエリアファイルで構成されている場合，データ用DBエリアファイルの格納場所を変更するときには，変更先のファイルにレギュラーファイルとブロックスペシャルファイルが混在しないようにしてください。どちらかのファイルに統一してください。

(1)　データ用DBエリアファイルをレギュラーファイルからブロックスペシャルファイルに変更する

必要なサイズを割り当てたブロックスペシャルファイルを準備したあとで，データ用DBエリアファイルをレギュラーファイルからブロックスペシャルファイルに変更します。

図11‒43　データ用DBエリアファイルをブロックスペシャルファイルに変更する方法

手順

adbstopコマンドでHADBサーバを正常終了する

adbstopコマンドについては，マニュアルHADB　コマンドリファレンスのadbstop（HADBサーバの終了）を参照してください。

データ用DBエリアファイルのファイル名を変更する

レギュラーファイルから，ブロックスペシャルファイルに変更したいデータ用DBエリアファイルのファイル名を変更します。OSのmvコマンドで，ファイル名を変更してください。実行例を次に示します。

■コマンドの実行例

mv /HADB/db/ADBUTBL01 /HADB/db/ADBUTBL01_TMP

この例では，ファイル名をADBUTBL01からADBUTBL01_TMPに変更しています。

ファイル名を変更したデータ用DBエリアファイルをブロックスペシャルファイルにコピーする

手順2.でファイル名を変更したデータ用DBエリアファイルを，ブロックスペシャルファイルにコピーします。OSのddコマンドで，データ用DBエリアファイルをコピーしてください。実行例を次に示します。

■コマンドの実行例

dd if=/HADB/db/ADBUTBL01_TMP of=/dev/mapper/vol01 bs=524288

この例では，レギュラーファイルのデータ用DBエリアファイル（/HADB/db/ADBUTBL01_TMP）を，ブロックスペシャルファイル（/dev/mapper/vol01）にコピーしています。

変更前のファイル名でブロックスペシャルファイルへのシンボリックリンクを作成する

手順3.でデータ用DBエリアファイルをコピーしたブロックスペシャルファイルに対して，シンボリックリンクを作成します。その際，手順2.で変更する前のデータ用DBエリアファイル名で，ブロックスペシャルファイルへのシンボリックリンクを作成する必要があります。OSのlnコマンドで，シンボリックリンクを作成してください。実行例を次に示します。

■コマンドの実行例

ln -s /dev/mapper/vol01 /HADB/db/ADBUTBL01

この例では，変更前のファイル名（/HADB/db/ADBUTBL01）で，ブロックスペシャルファイル（/dev/mapper/vol01）へのシンボリックリンクを作成しています。

adbstartコマンドでHADBサーバを開始する

adbstartコマンドについては，マニュアルHADB　コマンドリファレンスのadbstart（HADBサーバの開始）を参照してください。

HADBサーバの動作確認後に不要なレギュラーファイルを削除する

データ用DBエリアファイルを，レギュラーファイルからブロックスペシャルファイルに変更して，問題がないことを確認してください。問題がない場合は，手順2.でファイル名を変更したデータ用DBエリアファイル（レギュラーファイル）は不要となります。OSのコマンドで削除してください。

(2)　データ用DBエリアファイル（ブロックスペシャルファイル）の格納場所を変更する

必要なサイズを割り当てたブロックスペシャルファイルを準備したあとで，データ用DBエリアファイルの格納場所を変更します（新たなブロックスペシャルファイルに変更します）。

図11‒44　データ用DBエリアファイル（ブロックスペシャルファイル）の格納場所を変更する方法

手順

adbstopコマンドでHADBサーバを正常終了する

adbstopコマンドについては，マニュアルHADB　コマンドリファレンスのadbstop（HADBサーバの終了）を参照してください。

データ用DBエリアファイルの実体を新たなブロックスペシャルファイルにコピーする（格納場所を変更する）

格納場所を変更したいデータ用DBエリアファイルの実体（シンボリックリンクのリンク先にあるブロックスペシャルファイル）を，新たなブロックスペシャルファイルにコピーします。OSのddコマンドで，データ用DBエリアファイルの実体をコピーしてください。実行例を次に示します。

■コマンドの実行例

dd if=/dev/mapper/vol01 of=/dev/mapper/vol02 bs=524288

この例では，データ用DBエリアファイルの実体（/dev/mapper/vol01）を，別のブロックスペシャルファイル（/dev/mapper/vol02）にコピーしています。

変更前の格納場所にあるブロックスペシャルファイルへのシンボリックリンクを削除する

データ用DBエリアファイルの格納場所を変更するために，手順2.でコピー元となったブロックスペシャルファイルへのシンボリックリンクを削除します。OSのrmコマンドで，シンボリックリンク元のシンボリックリンクファイルを削除してください。実行例を次に示します。

■コマンドの実行例

rm /HADB/db/ADBUTBL01

この例では，変更前の格納場所にあるブロックスペシャルファイル（/dev/mapper/vol01）へのシンボリックリンクを削除するため，シンボリックリンク元のシンボリックリンクファイル（/HADB/db/ADBUTBL01）を削除しています。

変更後の格納場所にあるブロックスペシャルファイルへのシンボリックリンクを作成する

データ用DBエリアファイルの格納場所を変更するために，手順2.でコピー先となったブロックスペシャルファイルへのシンボリックリンクを作成します。その際，手順3.で削除したシンボリックリンクファイル名で，ブロックスペシャルファイルへのシンボリックリンクを作成する必要があります。OSのlnコマンドで，シンボリックリンクを作成してください。実行例を次に示します。

■コマンドの実行例

ln -s /dev/mapper/vol02 /HADB/db/ADBUTBL01

この例では，削除したシンボリックリンクファイル名（/HADB/db/ADBUTBL01）で，ブロックスペシャルファイル（/dev/mapper/vol02）へのシンボリックリンクを作成しています。

adbstartコマンドでHADBサーバを開始する

adbstartコマンドについては，マニュアルHADB　コマンドリファレンスのadbstart（HADBサーバの開始）を参照してください。

HADBサーバの動作を確認する

データ用DBエリアファイル（ブロックスペシャルファイル）の格納場所を変更して，問題がないことを確認してください。

11.13.6　データ用DBエリアの空き容量を確保する方法

ここでは，データ用DBエリアの空き容量を確保する方法について説明します。

重要

データ用DBエリアの空き容量を確保する前に，データ用DBエリアを拡張できるかどうかを検討してください。データ用DBエリアの拡張については，「11.13.3　データ用DBエリアを拡張する方法（データ用DBエリアファイルの追加）」を参照してください。

データ用DBエリアの拡張ができない場合は，次に示す対処方法1，または対処方法2を実施して，データ用DBエリアの空き容量を確保してください。対処方法1，または対処方法2を実施してもデータ用DBエリアの空き容量を確保できないときは，対処方法3を実施してください。

対処方法1

チャンクのアーカイブを行います。チャンク内のデータを圧縮して，データ用DBエリアの空き容量を確保します。

詳細については，「(1)　データ用DBエリアの空き容量を確保する方法（データの圧縮）」を参照してください。

対処方法2

実表の再編成を行います。無効な領域を削除したり，データを圧縮したりして，データ用DBエリアの空き容量を確保します。

詳細については，「(2)　データ用DBエリアの空き容量を確保する方法（実表の再編成）」を参照してください。

対処方法3

不要なデータを削除します。不要なデータを削除して，データ用DBエリアの空き容量を確保します。

詳細については，「(3)　データ用DBエリアの空き容量を確保する方法（不要なデータの削除）」を参照してください。

(1)　データ用DBエリアの空き容量を確保する方法（データの圧縮）

空き容量を確保したいデータ用DBエリアにアーカイブマルチチャンク表がある場合は，チャンクをアーカイブすることを検討してください。adbarchivechunkコマンドで，チャンクをアーカイブ状態にしてチャンク内のデータを圧縮すると，データ用DBエリアの空き容量を増やすことができます。

メモ

チャンクのアーカイブについては，「2.15.1　チャンクアーカイブ機能とは」を参照してください。

チャンク内のデータを圧縮する手順を次に示します。

手順

アーカイブマルチチャンク表のスキーマ名と表識別子を調査する

次に示すSELECT文を実行して，データ用DBエリアに格納されているアーカイブマルチチャンク表のスキーマ名と表識別子を調査してください。

指定例

SELECT "MASTER"."SQL_DIV_TABLE"."TABLE_SCHEMA",
        "MASTER"."SQL_DIV_TABLE"."TABLE_NAME"
  FROM "MASTER"."SQL_DIV_TABLE","MASTER"."SQL_TABLES"
    WHERE "DBAREA_ID" = (SELECT "DBAREA_ID"
                              FROM "MASTER"."SQL_DBAREAS"
                                WHERE "DBAREA_NAME" = ?)
      AND "MASTER"."SQL_DIV_TABLE"."TABLE_SCHEMA"
             = "MASTER"."SQL_TABLES"."TABLE_SCHEMA"
      AND "MASTER"."SQL_DIV_TABLE"."TABLE_NAME"
             = "MASTER"."SQL_TABLES"."TABLE_NAME"
      AND "IS_ARCHIVABLE" = 'Y'

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。入力要求には，空き容量を確保したいデータ用DBエリアのDBエリア名を入力してください。

アーカイブ状態にするチャンクを検討する

チャンクをアーカイブ状態にして，データ用DBエリアの空き容量を確保します。アーカイブマルチチャンク表内のアーカイブ状態ではないチャンクの中から，アーカイブするチャンクを検討してください。

チャンクをアーカイブすると，アーカイブされていないチャンク内のデータを検索するときに比べて，検索時間が長くなります。そのため，検索する頻度が少ないチャンクをアーカイブすることを推奨します。例えば，作成日時が新しいチャンク内のデータを検索する頻度が多い場合は，作成日時が古いチャンクをアーカイブしてください。

アーカイブするチャンクの情報を確認する場合は，-d usedオプションを指定したadbdbstatusコマンドを実行して，DBエリア，表とインデクスの使用量情報を確認してください。または，システム表のSTATUS_CHUNKS表をSELECT文で検索してください。詳細については，「11.5.8　チャンクの状態や作成されているチャンク数を確認する方法」の「(1)　adbdbstatusコマンドを実行する場合」または「(3)　システム表STATUS_CHUNKSを検索する場合」を参照してください。

チャンクをアーカイブ状態にして確保できる空き容量を調査する

チャンクをアーカイブ状態にすると，そのチャンクの使用量分だけ，データ用DBエリアの空き容量を確保できます。チャンクをアーカイブ状態にして確保できる空き容量を確認する場合は，-d usedオプションを指定したadbdbstatusコマンドを実行してください。DBエリア，表とインデクスの使用量情報が出力されたら，Chunk_IDをキーにして，Used_segmentsとUsed_pagesを確認してください。

詳細については，「11.5.8　チャンクの状態や作成されているチャンク数を確認する方法」の「(1)　adbdbstatusコマンドを実行する場合」を参照してください。

チャンクをアーカイブ状態にしてデータを圧縮する

adbarchivechunkコマンドを実行して，チャンクをアーカイブします（チャンク内のデータを圧縮します）。チャンクをアーカイブする方法については，「11.5.17　チャンクをアーカイブする方法（アーカイブマルチチャンク表使用時）」を参照してください。

(2)　データ用DBエリアの空き容量を確保する方法（実表の再編成）

実表に対して次の作業を繰り返し実行した場合，実表を再編成することを検討してください。データ用DBエリアの空き容量を確保できる可能性があります。

ローストア表に対するSQL文を使用した行の更新，および行の削除

カラムストア表に対するSQL文を使用した行の追加，行の更新，および行の削除

マルチチャンク表に対するadbimportコマンドを使用したバックグラウンドインポート

メモ

実表を再編成すると，データ用DBエリアの空き容量を確保できる理由を次に示します。

SQL文による行の更新，行の削除，およびadbimportコマンドによるバックグラウンドインポートを繰り返し実行すると，無効な行データや再利用されない空き領域が増加することがあります。実表を再編成すると，無効な行データや再利用されない空き領域が解放されます。そのため，データ用DBエリアの空き容量を確保できる可能性があります。

カラムストア表に対してSQL文を使用した行の追加を実行すると，カラムストア形式ではなくローストア形式で追加されます。ローストア形式で追加されたデータは圧縮されません。実表やインデクスを再編成すると，カラムストア形式でデータが追加されます。カラムストア形式で追加されたデータは圧縮されるため，データ用DBエリアの空き容量を確保できる可能性があります。

実表を再編成する手順を次に示します。

手順

確保できる空き容量を調査する

実表を再編成すると確保できる空き容量を，次の計算式から見積もってください。

計算式（実表の再編成で確保できる空き容量）（単位：メガバイト）

実表の再編成で確保できる空き容量 ＝
    再編成前の実表の使用量 － 再編成後の実表の使用量

再編成前の実表の使用量（単位：メガバイト）

「10.9.2　実表の状態や使用量を確認したい場合」の「(2)　実表の使用量を確認する場合」を参照して，再編成前の実表の使用量を確認してください。

再編成後の実表の使用量（単位：メガバイト）

「5.8　データ用DBエリアの容量見積もり」を参照して見積もってください。なお，参照先の計算式の単位はキロバイトです。そのため，メガバイトに換算してください。

また，実表を再編成すると，実表に定義されたインデクスも再編成されます。インデクスを再編成すると確保できる空き容量を，次の計算式から見積もってください。

計算式（インデクスの再編成で確保できる空き容量）（単位：メガバイト）

インデクスの再編成で確保できる空き容量 ＝
    再編成前のインデクスの使用量 － 再編成後のインデクスの使用量

再編成前のインデクスの使用量（単位：メガバイト）

次の個所を参照して，再編成前のインデクスの使用量を確認してください。

「10.9.3　B-treeインデクスの状態や使用量を確認したい場合」の「(3)　B-treeインデクスの使用量を確認する場合」

「10.9.4　テキストインデクスの状態や使用量を確認したい場合」の「(2)　テキストインデクスの使用量を確認する場合」

「10.9.5　レンジインデクスの状態や使用量を確認したい場合」の「(2)　レンジインデクスの使用量を確認する場合」

再編成後のインデクスの使用量（単位：メガバイト）

「5.8　データ用DBエリアの容量見積もり」を参照して見積もってください。なお，参照先の計算式の単位はキロバイトです。そのため，メガバイトに換算してください。

実表を再編成する

次の個所を参照して，実表を再編成してください。実表を再編成すると，定義されているインデクスも再編成されます。なお，データの格納効率を求める必要はありません。

「11.1.13　シングルチャンク表を再編成する方法」

「11.5.14　マルチチャンク表を再編成する方法（チャンク単位で再編成する場合）」

「11.5.15　マルチチャンク表を再編成する方法（表全体を再編成する場合）」

「11.5.16　マルチチャンク表を再編成する方法（サンプルシェルを使用して再編成する場合）」

重要

マルチチャンク表の場合，不要なチャンクがあるときは，再編成する前に不要なチャンクの削除を検討してください。不要なチャンクの削除については，「(3)　データ用DBエリアの空き容量を確保する方法（不要なデータの削除）」を参照してください。

実表の再編成では，一時的にデータを削除します。そのため，再編成中は，実表のデータを参照できません。

大量のデータを格納している実表の場合，再編成のときにエクスポートするデータサイズが大きくなります。また，再編成にも時間が掛かります。データをエクスポートするための領域がないときや，再編成に必要な時間を確保できないときは，別の方法でデータ用DBエリアの空き容量を確保することを検討してください。

(3)　データ用DBエリアの空き容量を確保する方法（不要なデータの削除）

ここでは，不要なデータを削除して，データ用DBエリアの空き容量を確保する方法について説明します。

次に示す方法ではデータ用DBエリアの空き容量を確保できない場合，不要なデータを削除することを検討してください。

「(1)　データ用DBエリアの空き容量を確保する方法（データの圧縮）」

「(2)　データ用DBエリアの空き容量を確保する方法（実表の再編成）」

次に示す不要なデータを削除することで，データ用DBエリアの空き容量を確保できます。

不要なインデクス

マルチチャンク表にある不要なチャンク

重要

不要なデータの削除には次のリスクが伴います。

運用誤りによるデータの損失

SQL文やコマンドの性能の低下

そのため，各削除処理の留意事項を確認した上で，適用を検討してください。

■空き容量を確保したいデータ用DBエリアに不要なインデクスがある場合

不要なインデクスを削除すると空き容量を確保できます。手順を次に示します。

手順

削除するインデクスを検討する

削除するインデクスを検討する場合は，アクセスパスの統計情報から，インデクスの使用有無を確認することを推奨します。

SQLトレース機能を有効にしている場合，実行したSQL文の終了時に出力されるアクセスパスの統計情報を確認すると，SQL文がインデクスを使用しているかどうかを確認できます。実行しているSQL文が使用していないインデクスを削除するようにしてください。

SQLトレース機能については，「10.11　SQLトレース機能の運用」を参照してください。アクセスパスの統計情報については，「10.11.3　アクセスパスの統計情報の出力例と出力項目」を参照してください。

確保できる空き容量を調査する

削除するインデクスの使用量分だけ，データ用DBエリアの空き容量を確保できます。インデクスの使用量の確認については，次の個所を参照してください。

「10.9.3　B-treeインデクスの状態や使用量を確認したい場合」の「(3)　B-treeインデクスの使用量を確認する場合」

「10.9.4　テキストインデクスの状態や使用量を確認したい場合」の「(2)　テキストインデクスの使用量を確認する場合」

「10.9.5　レンジインデクスの状態や使用量を確認したい場合」の「(2)　レンジインデクスの使用量を確認する場合」

インデクスを削除する

「11.4.9　インデクスの削除」を参照して，不要なインデクスを削除してください。

留意事項

インデクスを削除した場合，削除したインデクスを使用していたSQL文の性能が低下するおそれがあります。

インデクスの削除後に同じインデクスを再定義する必要がある場合，インデクスを削除する前にインデクスの再定義に必要な定義情報を取得しておいてください。定義情報の取得については，「付録B.24　ディクショナリ表の検索」の「(30)　インデクスの定義情報を調べる場合」を参照してください。

■空き容量を確保したいデータ用DBエリアに不要なチャンクを含むマルチチャンク表がある場合

PURGE CHUNK文を使用してマルチチャンク表の不要なチャンクを削除すると空き容量を確保できます。手順を次に示します。

手順

削除するチャンクを検討する

マルチチャンク表内のチャンクの状態を確認して，削除するチャンクを検討してください。例えば，次に示すチャンクは不要である可能性が高いため，優先的に削除するようにしてください。

削除仕掛中のチャンク

アーカイブ状態ではない待機状態のチャンク

検索頻度が極端に少ないチャンク（作成日時が古いチャンクなど）

チャンクの情報を確認する場合は，-d usedオプションを指定したadbdbstatusコマンドを実行して，DBエリア，表とインデクスの使用量情報を確認してください。または，システム表のSTATUS_CHUNKS表をSELECT文で検索してください。詳細については，「11.5.8　チャンクの状態や作成されているチャンク数を確認する方法」の「(1)　adbdbstatusコマンドを実行する場合」または「(3)　システム表STATUS_CHUNKSを検索する場合」を参照してください。

確保できる空き容量を調査する

削除するチャンクの使用量分だけ，データ用DBエリアの空き容量を確保できます。チャンクの使用量を確認する場合は，-d usedオプションを指定したadbdbstatusコマンドを実行してください。DBエリア，表とインデクスの使用量情報が出力されたら，Chunk_IDをキーにして，Used_segmentsとUsed_pagesを確認してください。

詳細については，「11.5.8　チャンクの状態や作成されているチャンク数を確認する方法」の「(1)　adbdbstatusコマンドを実行する場合」を参照してください。

チャンクを削除する

「11.5.6　チャンク単位にデータを削除する方法」を参照して，不要なチャンクを削除してください。

留意事項

削除後に参照する可能性があるチャンク内のデータが存在する場合は，チャンクを削除する前にエクスポートしておいてください。チャンク内のデータをエクスポートする方法については，「11.5.5　チャンク単位にデータをエクスポートする方法」を参照してください。

アーカイブ状態のチャンクを削除してもデータ用DBエリアの空き容量を確保できません。

11.13.7　データ用DBエリアの使用率を監視する方法

データ用DBエリアの使用率を監視することができます。サーバ定義のadb_dbarea_wrn_pnt_use_rateオペランドを指定すると，データ用DBエリアの使用率がこのオペランドの指定値に達したときに，警告メッセージKFAA41230-Wがメッセージログファイルに出力されます。

（例）

set adb_dbarea_wrn_pnt_use_rate = 30,60,90

この場合，データ用DBエリアの使用率が30%，60%，90%に達したときに，KFAA41230-Wメッセージが出力されます。

重要

レギュラーファイルで構成されているデータ用DBエリアは，使用率の監視対象にはなりません。

データ用DBエリア以外のDBエリア（ディクショナリ用DBエリアなど）は，使用率の監視対象にはなりません。

■監視対象から外したいデータ用DBエリアがある場合

adb_dbarea_wrn_pnt_use_rateオペランドを指定すると，ブロックスペシャルファイルで構成されているすべてのデータ用DBエリア（クラウドストレージ機能を使用している場合は全データ用DBエリア）が使用率の監視対象になります。この場合，KFAA41230-Wメッセージが頻繁に出力されることがあります。出力されるKFAA41230-Wメッセージの量を減らしたい場合は，サーバ定義のadb_dbarea_wrn_pnt_except_nameオペランドを指定してください。このオペランドには，使用率の監視対象から外したいデータ用DBエリアを指定します。このオペランドに指定したデータ用DBエリアの使用率が，adb_dbarea_wrn_pnt_use_rateオペランドの指定値に達しても，KFAA41230-Wメッセージは出力されません。

メモ

データ用DBエリアの使用率は，新規にセグメントが確保されて割り当てられるときに計算されます。このとき，データ用DBエリアの使用率がadb_dbarea_wrn_pnt_use_rateオペランドの指定値に達したときに，KFAA41230-Wメッセージが出力されます。

11.14　作業表用DBエリアの運用

ここでは，作業表用DBエリア，および作業表用DBエリアファイルの運用について説明します。

11.14.1　作業表用DBエリアファイルの格納場所を変更する方法

作業表用DBエリアファイルがブロックスペシャルファイルの場合は，作業表用DBエリアファイルの格納場所を，サーバ定義adb_blk_path_wrkオペランドで変更できます。また，作業表用DBエリアファイルを，レギュラーファイルからブロックスペシャルファイルに変更することもできます。手順を次に示します。

手順

adbstopコマンドでHADBサーバを正常終了する

adbstopコマンドについては，マニュアルHADB　コマンドリファレンスのadbstop（HADBサーバの終了）を参照してください。

サーバ定義adb_blk_path_wrkオペランドに作業表用DBエリアファイルの変更後のブロックスペシャルファイルを指定する

サーバ定義adb_blk_path_wrkオペランドについては，「7.2.1　システム構成に関するオペランド（set形式）」のadb_blk_path_wrkオペランドを参照してください。

adbstartコマンドでHADBサーバを開始する

adbstartコマンドについては，マニュアルHADB　コマンドリファレンスのadbstart（HADBサーバの開始）を参照してください。

11.14.2　作業表用DBエリアファイルの容量を小さくする方法

作業表を作成するSQL文を実行する場合，SQL文の内容によっては，作業表の容量が非常に大きくなることがあります。作業表用DBエリアファイルがレギュラーファイルの場合は，作業表の容量によって，レギュラーファイルの容量が非常に大きくなり，ディスクの空き容量が少なくなるおそれがあります。

作業表用DBエリアファイルの容量が大きい場合は，作業表用DBエリアファイルを削除してください。作業表用DBエリアファイルを削除する方法は，「16.3.1　DBエリアファイルの容量増加が原因の場合」の「(3)　作業表用DBエリアファイルのサイズを小さくする」を参照してください。

作業表用DBエリアファイルの格納先は，DBディレクトリ下（$DBDIR/ADBWRK）になります。

重要

作業表用DBエリアファイルの容量が大き過ぎて問題がある場合は，SQL文を実行する前に，SQL文の内容を見直すことを検討してください。

11.15　バッファの運用

ここでは，バッファの運用について説明します。

11.15.1　ローカル作業表用バッファを変更する方法

HADBサーバの稼働中に，ローカル作業表用バッファのページ数を変更する方法について説明します。

サーバ定義adb_dbbuff_wrktbl_clt_blk_numオペランドで指定したローカル作業表用バッファのページ数は，adbmodbuffコマンドで変更できます。

ローカル作業表用バッファのページ数を，adbmodbuffコマンドで変更する方法を次に示します。

手順

サーバ定義adb_dbbuff_wrktbl_clt_blk_numオペランドの指定値を確認する

サーバ定義adb_dbbuff_wrktbl_clt_blk_numオペランドで指定したローカル作業表用バッファのページ数を，adbls -d lbufコマンドで確認してください。

adbls -d lbufコマンドの実行例を次に示します。

コマンドの指定例

adbls -d lbuf

adbls -d lbufコマンドを実行すると，次のような出力結果が表示されます。

実行したコマンドの出力結果の例

CNUMBER    PAGE_SIZE PAGE_NUM
0          256       128 S
1          256       128 S

サーバ定義adb_dbbuff_wrktbl_clt_blk_numオペランドで指定したローカル作業表用バッファのページ数は，CNUMBERが0の行にあるPAGE_NUMに出力された内容になります。

ローカル作業表用バッファのページ数を変更する

手順1.で確認した内容を踏まえて，サーバ定義adb_dbbuff_wrktbl_clt_blk_numオペランドで指定したローカル作業表用バッファのページ数を，adbmodbuffコマンドで変更してください。

これで，HADBサーバの稼働中に，サーバ定義adb_dbbuff_wrktbl_clt_blk_numオペランドで指定したローカル作業表用バッファのページ数を変更できます。

なお，adbmodbuffコマンドで変更した内容は，HADBサーバ終了時に失われます。変更した内容を次回起動時も引き継ぐ場合は，変更した内容をサーバ定義に反映してください。サーバ定義の変更方法については，「8.5.2　サーバ定義の変更方法」を参照してください。

また，次に該当する場合は，ローカル作業表用バッファのページ数をadbmodbuffコマンドで変更できません。

クライアント定義adb_dbbuff_wrktbl_clt_blk_numオペランドを指定した場合

サーバ定義よりもクライアント定義の指定値が優先されるため，adbmodbuffコマンドを実行しても，使用されるローカル作業表用バッファのページ数を変更できません。

エクスポートオプションadb_export_wrktbl_blk_numを指定した場合

サーバ定義よりもエクスポートオプションの指定値が優先されるため，adbmodbuffコマンドを実行しても，使用されるローカル作業表用バッファのページ数を変更できません。

メモ

サーバ定義adb_dbbuff_wrktbl_clt_blk_numオペランドについては，「7.2.2　性能に関するオペランド（set形式）」のadb_dbbuff_wrktbl_clt_blk_numオペランドを参照してください。

adbmodbuffコマンドについては，マニュアルHADB　コマンドリファレンスのadbmodbuff（バッファの変更）を参照してください。

adbls -d lbufコマンドについては，マニュアルHADB　コマンドリファレンスのadbls -d lbuf（ローカル作業表用バッファの情報表示）を参照してください。

11.16　クライアントグループの設定内容の確認

クライアントグループ機能を適用して設定した，クライアントグループおよびコマンドグループに関する情報を確認する方法について説明します。

11.16.1　APを実行したHADBクライアントが所属しているグループを確認したい場合

APを実行したHADBクライアントが所属しているグループを確認するには，adbls -d cnctコマンドを実行してください。

実行結果の「CLIENT_GROUP」列に表示された内容から，APを実行したHADBクライアントが所属しているグループを確認できます。なお，APを実行したHADBクライアントがどのグループにも所属していない場合は，「CLIENT_GROUP」列には何も表示されません。

adbls -d cnctコマンドについては，マニュアルHADB　コマンドリファレンスのadbls -d cnct（コネクションの状態表示）を参照してください。

11.16.2　リアルスレッドを使用しているHADBクライアントが所属しているグループを確認したい場合

リアルスレッドを使用しているHADBクライアントが所属しているグループを確認するには，adbls -d thdコマンドを実行してください。

実行結果の「CLIENT_GROUP」列に表示された内容から，リアルスレッドを使用しているHADBクライアントが所属しているグループを確認できます。なお，HADBクライアントがどのグループにも所属していない場合は，「CLIENT_GROUP」列には何も表示されません。

adbls -d thdコマンドについては，マニュアルHADB　コマンドリファレンスのadbls -d thd（スレッドの状態表示）を参照してください。

11.16.3　各グループに設定した接続数や処理リアルスレッド数を確認したい場合

adbls -d cltgrpコマンドを実行すると，次のことが確認できます。

各グループに設定されている最大同時接続数

各グループに設定されている接続保証数

各グループのHADBサーバへの現在の接続数

各グループに設定されている処理リアルスレッドの最大数

各グループに設定されている処理リアルスレッドの保証数

各グループで使用中の処理リアルスレッド数

各グループに設定されている最大同時接続数に関する警告メッセージの出力契機

各グループに設定されている最大同時接続数に関する警告メッセージの出力済み状態のリセット契機

adbls -d cltgrpコマンドについては，マニュアルHADB　コマンドリファレンスのadbls -d cltgrp（クライアントグループ・コマンドグループの情報表示）を参照してください。

11.17　クライアント定義の集中管理の運用

クライアント定義の集中管理機能を使用して，各HADBクライアントが管理しているクライアント定義を，HADBサーバで一括して管理する方法について説明します。

11.17.1　クライアント定義の集中管理機能を使用する流れ

クライアント定義の集中管理機能を使用する流れについて説明します。

(1)　新たにクライアント定義の集中管理機能を使用する場合の流れ

新たにクライアント定義の集中管理機能を使用する場合の流れを，次の図に示します。

図11‒45　新たにクライアント定義の集中管理機能を使用する場合の流れ

(2)　クライアント定義の集中管理機能の適用内容を変更する場合の流れ

クライアント定義の集中管理機能の適用内容を変更する場合の流れを，次の図に示します。

図11‒46　クライアント定義の集中管理機能の適用内容を変更する場合の流れ

11.17.2　クライアント定義の集中管理機能で必要なファイル

クライアント定義の集中管理機能を使用する場合，次に示すファイルを作成する必要があります。

HADBサーバで作成が必要なファイル

クライアント定義の集中管理機能で使用するクライアント定義ファイル

クライアント管理定義ファイル

HADBクライアントで作成が必要なファイル

HADBクライアントで管理するクライアント定義ファイル

(1)　クライアント定義の集中管理機能で使用するクライアント定義ファイル

クライアント定義の集中管理機能で使用するクライアント定義ファイルには，クライアント定義の集中管理機能で管理する認可識別子に適用したいクライアント定義のオペランドの値を指定します。クライアント定義の集中管理機能で使用するクライアント定義ファイルの内容に従って，対象の認可識別子はHADBサーバに接続します。

クライアント定義の集中管理機能で使用するクライアント定義ファイルのひな形（client.def）は，サーバディレクトリの$ADBDIR/sample/confディレクトリに格納されています。ひな形をコピーして，クライアント定義の各オペランドを指定してください。クライアント定義の指定規則は，サーバ定義と同じです。サーバ定義の指定規則については，「7.3　サーバ定義の文法規則」を参照してください。

メモ

クライアント定義の各オペランドについては，マニュアルHADB　AP開発ガイドのクライアント定義のオペランドの内容を参照してください。

クライアント定義の集中管理機能の適用対象外となるクライアント定義のオペランドについては，指定不要です。適用対象外となるクライアント定義のオペランドについては，マニュアルHADB　AP開発ガイドのクライアント定義の集中管理機能を使用する場合の留意事項を参照してください。

重要

クライアント定義のオペランドのうち，指定を省略したオペランドには，デフォルト値が仮定されます。そのため，HADBクライアントが管理しているクライアント定義ファイルの指定内容を適用したい場合は，クライアント定義の集中管理機能で使用するクライアント定義ファイルにも同じ内容を指定してください。

クライアント定義の集中管理機能で使用するクライアント定義ファイルを作成したら，サーバディレクトリの$ADBDIR/confディレクトリ下に格納してください。クライアント定義ファイルのファイル名は，ひな形（client.def）から変更できます。

なお，複数の認可識別子に対して，別々のクライアント定義ファイルの内容を適用したい場合は，クライアント定義の集中管理機能で使用するクライアント定義ファイルを必要な分だけ作成してください。

(2)　クライアント管理定義ファイル

クライアント管理定義ファイルには，クライアント管理定義のadbclientmangオペランドを指定します。adbclientmangオペランドには，次の2つを指定して関連づけます。

クライアント管理定義のadbclientmangオペランドに指定する内容

クライアント定義の集中管理機能で使用するクライアント定義ファイルのファイル名

クライアント定義ファイルの指定内容を適用したいHADBユーザの認可識別子

クライアント管理定義ファイルのひな形（adbclientdefmang.def）は，サーバディレクトリの$ADBDIR/sample/confディレクトリに格納されています。ひな形をコピーして，クライアント管理定義のadbclientmangオペランドを指定してください。

クライアント管理定義ファイルを作成したら，サーバディレクトリの$ADBDIR/confディレクトリ下に格納してください。ファイル名は，ひな形（adbclientdefmang.def）のままとしてください。

なお，次に示す場合は，クライアント定義の集中管理機能は適用されません。

クライアント管理定義ファイルに何も指定していない（空のファイルである）

クライアント管理定義ファイル内のすべての内容をコメントアウトしている

上記に該当する場合は，HADBクライアントが管理するクライアント定義ファイルの指定内容が適用されます。

(a)　クライアント管理定義の指定形式

｛｛
  〔adbclientmang
     -f クライアント定義の集中管理機能で使用するクライアント定義ファイル
     -i 認可識別子〔,認可識別子〕…〕
｝｝

クライアント管理定義の指定規則は，サーバ定義と同じです。サーバ定義の指定規則については，「7.3　サーバ定義の文法規則」を参照してください。

(b)　クライアント管理定義の指定形式の説明

●-f クライアント定義の集中管理機能で使用するクライアント定義ファイル

〜〈文字列〉((1〜255バイト))

クライアント定義の集中管理機能で使用するクライアント定義ファイルのファイル名を指定します。

このオプションには，サーバディレクトリの$ADBDIR/confディレクトリ下に格納されているクライアント定義ファイルのファイル名だけを指定してください。指定例を次に示します。

指定例（クライアント定義ファイル名がclient01.defの場合）

-f client01.def

また，複数のadbclientmangオペランドの-fオプションに，同じファイル名を指定することもできます。指定例を次に示します。指定例1と指定例2は，どちらも同じ指定内容として扱われます。

指定例1

adbclientmang -f client01.def -i ADBUSER01,ADBUSER02

指定例2

adbclientmang -f client01.def -i ADBUSER01
adbclientmang -f client01.def -i ADBUSER02

なお，-fオプションの指定内容について，次のどれかに該当する場合は，エラーとなります。

$ADBDIR/confディレクトリ下に存在しないファイル名を指定した場合

ファイル名以外にディレクトリ名も指定した場合

このオプションに指定したクライアント定義ファイルの内容に誤りがある場合

●-i 認可識別子

〜〈文字列〉((1〜100バイト))

-fオプションに指定したクライアント定義ファイルの内容を適用して，HADBサーバに接続するHADBユーザの認可識別子を指定します。

このオプションに指定する認可識別子は，1～100バイトの範囲で指定してください。ただし，認可識別子を囲む二重引用符は，1～100バイトには含みません。

このオプションには，コンマで区切ることで，複数の認可識別子を指定できます。指定例を次に示します。

指定例（HADBユーザの認可識別子がADBUSER01とADBUSER02の場合）

-i ADBUSER01,ADBUSER02

重要

認可識別子の文字列中に英小文字がある場合は，認可識別子の指定規則を必ず確認してください。認可識別子の指定規則については，「9.4.2　認可識別子の指定規則」を参照してください。

なお，-iオプションの指定内容について，次のどれかに該当する場合は，エラーとなります。

-iオプションに，同じ認可識別子が複数指定されている場合

複数のadbclientmangオペランドの-iオプションに，同じ認可識別子がそれぞれ指定されている場合

すべての-iオプションに指定した認可識別子の総数が，30,000を超えた場合

(3)　HADBクライアントで管理するクライアント定義ファイル

クライアント定義の集中管理機能を使用する場合でも，HADBクライアントで管理するクライアント定義ファイルを作成する必要があります。

メモ

HADBクライアントで管理するクライアント定義ファイルの作成方法については，マニュアルHADB　AP開発ガイドのクライアント定義の作成方法を参照してください。

HADBクライアントで管理するクライアント定義ファイルには，クライアント定義の集中管理機能の適用対象外となるクライアント定義のオペランドを指定します。接続先のHADBサーバのホスト名やポート番号などです。クライアント定義の集中管理機能の適用対象外となるクライアント定義のオペランドについては，マニュアルHADB　AP開発ガイドのクライアント定義の集中管理機能を使用する場合の留意事項を参照してください。

なお，HADBクライアントで管理するクライアント定義ファイルには，クライアント定義の集中管理機能の適用対象となるクライアント定義のオペランドは，指定不要です。

クライアント定義の集中管理機能の適用対象となるクライアント定義のオペランドは，クライアント定義の集中管理機能で使用するクライアント定義ファイルに指定してください。オペランドの指定を省略した場合は，デフォルト値が仮定されます。

11.17.3　新たにクライアント定義の集中管理機能を使用する方法

新たにクライアント定義の集中管理機能を使用する場合の手順を次に示します。

新たにクライアント定義の集中管理機能を使用する場合の流れについては，「11.17.1　クライアント定義の集中管理機能を使用する流れ」の「(1)　新たにクライアント定義の集中管理機能を使用する場合の流れ」を参照してください。

手順

クライアント定義の集中管理機能で使用するクライアント定義ファイルを作成する

クライアント定義の集中管理機能で使用するクライアント定義ファイルを作成してください。作成したクライアント定義ファイルは，サーバディレクトリの$ADBDIR/confディレクトリ下に格納してください。詳細については，「11.17.2　クライアント定義の集中管理機能で必要なファイル」の「(1)　クライアント定義の集中管理機能で使用するクライアント定義ファイル」を参照してください。

クライアント管理定義ファイルを作成する

クライアント管理定義ファイルを作成してください。作成したクライアント管理定義ファイルは，サーバディレクトリの$ADBDIR/confディレクトリ下に格納してください。ファイル名は，ひな形（adbclientdefmang.def）のままとしてください。詳細については，「11.17.2　クライアント定義の集中管理機能で必要なファイル」の「(2)　クライアント管理定義ファイル」を参照してください。

クライアント定義の集中管理機能を適用する

クライアント定義の集中管理機能で使用するクライアント定義ファイル，およびクライアント管理定義ファイルを作成したら，クライアント定義の集中管理機能を適用してください。

HADBサーバが稼働中かどうかで，クライアント定義の集中管理機能を適用する方法が異なります。

■HADBサーバが停止中の場合

adbstartコマンドを実行して，HADBサーバを開始してください。HADBサーバを開始すると，作成したクライアント定義ファイルとクライアント管理定義ファイルに従って，クライアント定義の集中管理機能が適用されます。

adbstartコマンドについては，マニュアルHADB　コマンドリファレンスのadbstart（HADBサーバの開始）を参照してください。

■HADBサーバが稼働中の場合

--updateオプションを指定したadbclientdefmangコマンドを実行してください。adbclientdefmangコマンドを実行すると，作成したクライアント定義ファイルとクライアント管理定義ファイルに従って，クライアント定義の集中管理機能が適用されます。

adbclientdefmangコマンドについては，マニュアルHADB　コマンドリファレンスのadbclientdefmang（クライアント定義の集中管理）を参照してください。

メモ

クライアント定義の集中管理機能を適用した時点で，adbclientmangオペランドの-iオプションに指定したHADBユーザの認可識別子で，HADBサーバに接続しているHADBクライアントについては，クライアント定義の集中管理機能は適用されません。一度HADBサーバから切り離して，次に接続したタイミングで，クライアント定義の集中管理機能が適用されます。

クライアント定義の集中管理機能の適用状況を確認する

adbclientdefmangコマンドを実行して，クライアント定義の集中管理機能の適用状況を確認してください。

adbclientdefmangコマンドの実行結果から，手順2.で作成したクライアント管理定義ファイルの内容が適用されているかどうかを確認できます。

adbclientdefmangコマンドについては，マニュアルHADB　コマンドリファレンスのadbclientdefmang（クライアント定義の集中管理）を参照してください。

11.17.4　クライアント定義の集中管理機能の適用内容を変更する方法

クライアント定義の集中管理機能の適用内容を変更する場合の手順を次に示します。

クライアント定義の集中管理機能の適用内容を変更する場合の流れについては，「11.17.1　クライアント定義の集中管理機能を使用する流れ」の「(2)　クライアント定義の集中管理機能の適用内容を変更する場合の流れ」を参照してください。

手順

クライアント定義の集中管理機能の適用状況を確認する

adbclientdefmangコマンドを実行して，クライアント定義の集中管理機能の適用状況を確認してください。adbclientdefmangコマンドの実行結果から，現在適用されているクライアント管理定義ファイルの内容が確認できます。

adbclientdefmangコマンドについては，マニュアルHADB　コマンドリファレンスのadbclientdefmang（クライアント定義の集中管理）を参照してください。

クライアント定義の集中管理機能に使用するクライアント定義ファイルの内容を変更する場合は，手順2.に進んでください。

クライアント定義の集中管理機能に使用するクライアント定義ファイルの内容を変更しない場合は，手順3.に進んでください。

クライアント定義の集中管理機能で使用するクライアント定義ファイルを編集する

サーバディレクトリの$ADBDIR/confディレクトリ下に格納している，クライアント定義の集中管理機能で使用するクライアント定義ファイルを編集してください。詳細については，「11.17.2　クライアント定義の集中管理機能で必要なファイル」の「(1)　クライアント定義の集中管理機能で使用するクライアント定義ファイル」を参照してください。

クライアント定義の集中管理機能で使用するクライアント定義ファイルと，HADBユーザの認可識別子の関連づけを変更する場合は，手順3.に進んでください。

クライアント定義の集中管理機能で使用するクライアント定義ファイルと，HADBユーザの認可識別子の関連づけを変更しない場合は，手順4.に進んでください。

クライアント管理定義ファイルを編集する

サーバディレクトリの$ADBDIR/confディレクトリ下に格納している，クライアント管理定義ファイル（adbclientdefmang.def）を編集してください。詳細については，「11.17.2　クライアント定義の集中管理機能で必要なファイル」の「(2)　クライアント管理定義ファイル」を参照してください。

クライアント定義の集中管理機能の適用内容を変更する

クライアント定義の集中管理機能の適用内容を変更してください。

HADBサーバが稼働中かどうかで，クライアント定義の集中管理機能の適用内容を変更する方法が異なります。

■HADBサーバが停止中の場合

adbstartコマンドを実行して，HADBサーバを開始してください。HADBサーバを開始すると，編集したクライアント定義ファイルとクライアント管理定義ファイルに従って，クライアント定義の集中管理機能の適用内容が変更されます。

adbstartコマンドについては，マニュアルHADB　コマンドリファレンスのadbstart（HADBサーバの開始）を参照してください。

■HADBサーバが稼働中の場合

--updateオプションを指定したadbclientdefmangコマンドを実行してください。adbclientdefmangコマンドを実行すると，編集したクライアント定義ファイルとクライアント管理定義ファイルに従って，クライアント定義の集中管理機能の適用内容が変更されます。

adbclientdefmangコマンドについては，マニュアルHADB　コマンドリファレンスのadbclientdefmang（クライアント定義の集中管理）を参照してください。

メモ

クライアント定義の集中管理機能を適用した時点で，adbclientmangオペランドの-iオプションに指定したHADBユーザの認可識別子で，HADBサーバに接続しているHADBクライアントについては，クライアント定義の集中管理機能は適用されません。一度HADBサーバから切り離して，次に接続したタイミングで，クライアント定義の集中管理機能が適用されます。

クライアント定義の集中管理機能の適用状況を確認する

adbclientdefmangコマンドを実行して，クライアント定義の集中管理機能の適用状況を確認してください。

adbclientdefmangコマンドの実行結果から，手順3.で編集したクライアント管理定義ファイルの内容が適用されているかどうかを確認できます。

11.17.5　クライアント定義の集中管理機能の使用例

「11.17.3　新たにクライアント定義の集中管理機能を使用する方法」で示した手順に従ったクライアント定義の集中管理機能の使用例を説明します。

■条件

HADBサーバが停止している

クライアント定義の集中管理機能で，次に示すクライアント定義の指定値を管理する

adb_sql_exe_max_rthd_numオペランド

adb_sql_exe_hashgrp_area_sizeオペランド

adb_sql_exe_hashtbl_area_sizeオペランド

adb_sql_exe_hashflt_area_sizeオペランド

次に示す認可識別子を，クライアント定義の集中管理機能の適用対象とする

ADBUSER01

ADBUSER02

次に示す認可識別子については，クライアント定義の集中管理機能の適用対象としない

ADBUSER03

図11‒47　クライアント定義の集中管理機能の使用例

(1)　クライアント定義の集中管理機能で使用するクライアント定義ファイルを作成する

クライアント定義の集中管理機能で使用するクライアント定義ファイルを作成して，各クライアント定義を指定します。

サーバディレクトリの$ADBDIR/confディレクトリ下に，クライアント定義ファイル（client3.def）を作成します。

クライアント定義の集中管理機能で使用するクライアント定義ファイルの指定例

set adb_sql_exe_max_rthd_num = 12
set adb_sql_exe_hashgrp_area_size = 2400
set adb_sql_exe_hashtbl_area_size = 1000
set adb_sql_exe_hashflt_area_size = 100

(2)　クライアント管理定義ファイルを作成する

サーバディレクトリの$ADBDIR/confディレクトリ下に，クライアント管理定義ファイル（adbclientdefmang.def）を作成して，クライアント管理定義のadbclientmangオペランドを指定します。

クライアント管理定義ファイルの指定例

adbclientmang -f client3.def              ...1
              -i ADBUSER01,ADBUSER02      ...2

［説明］

「(1)　クライアント定義の集中管理機能で使用するクライアント定義ファイルを作成する」で作成したクライアント定義ファイルのファイル名（client3.def）を指定します。

クライアント定義の集中管理機能を適用する認可識別子（ADBUSER01，ADBUSER02）を指定します。

(3)　adbstartコマンドを実行する

adbstartコマンドを実行して，HADBサーバを開始します。HADBサーバを開始すると，次に示す2つのファイルの内容に従って，クライアント定義の集中管理機能が適用されます。

クライアント定義の集中管理機能で使用するクライアント定義ファイル

クライアント管理定義ファイル

メモ

HADBサーバが稼働している場合は，--updateオプションを指定したadbclientdefmangコマンドを実行することで，クライアント管理定義ファイルの内容が適用されます。

(4)　adbclientdefmangコマンドを実行する

adbclientdefmangコマンドを実行して，クライアント定義の集中管理機能の適用状況を確認します。

adbclientdefmangコマンドの実行例

adbclientdefmang -u ADBUSER01        ...1
                 -p '#HelloHADB_01'  ...2

［説明］

adbclientdefmangコマンドを実行するHADBユーザの認可識別子を指定します。

-uオプションに指定した認可識別子のパスワードを指定します。

adbclientdefmangコマンドの実行結果から，「(2)　クライアント管理定義ファイルを作成する」で作成したクライアント管理定義ファイルの内容が適用されているかどうかを確認できます。

adbclientdefmangコマンドの実行結果の例

authorization-identifier client-definition-file
ADBUSER01                client3.def
ADBUSER02                client3.def

［説明］

認可識別子ADBUSER01とADBUSER02に対して，クライアント定義の集中管理機能で使用するクライアント定義ファイル（client3.def）が適用されていることが確認できます。

11.17.6　クライアント定義の集中管理機能の使用をやめる方法

クライアント定義の集中管理機能の使用をやめる場合の手順を次に示します。

手順

クライアント管理定義ファイルを無効化する

サーバディレクトリの$ADBDIR/confディレクトリ下に格納している，クライアント管理定義ファイル（adbclientdefmang.def）に対して，次のどれかを行ってください。

クライアント管理定義ファイルを削除する

クライアント管理定義ファイル内を空にする（何も指定していない状態にする）

クライアント管理定義ファイル内のすべての内容をコメントアウトする

クライアント定義の集中管理機能の使用をやめる

無効化したクライアント管理定義ファイルを基に，クライアント定義の集中管理機能の使用をやめます。

HADBサーバが稼働中かどうかで，クライアント定義の集中管理機能の使用をやめる方法が異なります。

■HADBサーバが停止中の場合

adbstartコマンドを実行して，HADBサーバを開始してください。HADBサーバを開始すると，無効化したクライアント管理定義ファイルに従って，クライアント定義の集中管理機能の使用をやめます。

adbstartコマンドについては，マニュアルHADB　コマンドリファレンスのadbstart（HADBサーバの開始）を参照してください。

■HADBサーバが稼働中の場合

--updateオプションを指定したadbclientdefmangコマンドを実行してください。adbclientdefmangコマンドを実行すると，無効化したクライアント管理定義ファイルに従って，クライアント定義の集中管理機能の使用をやめます。

adbclientdefmangコマンドについては，マニュアルHADB　コマンドリファレンスのadbclientdefmang（クライアント定義の集中管理）を参照してください。

メモ

クライアント定義の集中管理機能の使用をやめた時点で，adbclientmangオペランドの-iオプションに指定したHADBユーザの認可識別子で，HADBサーバに接続している場合は，クライアント定義の集中管理機能は適用されたままです。一度HADBサーバから切り離して，次に接続したタイミングで，クライアント定義の集中管理機能の使用をやめることができます。

11.18　CSVファイル中のデータを検索するときの運用

ここでは，CSVファイル中のデータを検索する方法について説明します。

11.18.1　準備作業

次に示す準備作業を実施してください。

(1)　CSVファイルの準備

次に示すことを実施してください。

CSVファイルは，次のどれかの条件を満たす必要があります。条件を満たしていることを確認してください。

圧縮されていないCSVファイル

OSのgzipコマンドでGZIP形式に圧縮されたCSVファイル

adbexportコマンドでエクスポートした，GZIP形式に圧縮されたCSVファイル

CSVファイルのデータ形式が，規則に従っていることを確認してください。CSVファイルのデータ形式の規則については，マニュアルHADB　SQLリファレンスの構成要素のシステム定義関数のADB_CSVREAD関数にある規則のCSVファイルの形式に関する規則を参照してください。CSVファイルのデータ形式が正しくない場合，データの検索時にエラーとなります。

HADBサーバが動作するサーバマシンのファイルシステムに，CSVファイルを格納してください。

CSVファイルの絶対パス名の長さが，510バイト以下であることを確認してください。

なお，CSVファイルの格納先ディスクには，セクターサイズが512バイトまたは4,096バイトのディスクが使用できます。

(2)　CSVファイルおよびディレクトリへの読み取り権限の付与

HADBサーバがCSVファイルをオープンできるように，HADB管理者に次の権限を付与してください。

CSVファイルへの読み取り権限

CSVファイルを格納するディレクトリへの読み取り権限と実行権限

11.18.2　データの検索方法

検索系SQLにADB_CSVREAD関数を指定して，CSVファイル中のデータを検索します。

（例）

GZIP形式で圧縮した次のCSVファイル中のデータを検索します。

/dir/file1.csv.gz

/dir/file2.csv.gz

/dir/file3.csv.gz

SELECT * FROM TABLE(ADB_CSVREAD(
              MULTISET['/dir/file1.csv.gz','/dir/file2.csv.gz','/dir/file3.csv.gz'],
             'COMPRESSION_FORMAT=GZIP;
              FIELD_NUM=1,2;
              ENCLOSING_CHAR=";
              DELIMITER_CHAR=,;'))
         AS "T1" ("C1" INTEGER, "C2" VARCHAR(32))

［説明］

ADB_CSVREAD関数の引数MULTISET（下線部分）に，CSVファイルの絶対パス名を指定します。そのほかの引数や，ADB_CSVREAD関数の指定方法については，マニュアルHADB　SQLリファレンスの構成要素のシステム定義関数のADB_CSVREAD関数を参照してください。

重要

ADB_CSVREAD関数を指定したSQL文の実行時，HADBサーバはCSVファイルをオープンし，CSVファイル中のデータを読み込みます。そのため，SQL文の実行中は，CSVファイルを編集しないでください。

メモ

CSVファイル中のデータを読み込む際，1つのCSVファイルに対して1つの処理リアルスレッドが割り当てられます。

ADB_CSVREAD関数中に指定するCSVファイルを，表副問合せを使用して指定することもできます。詳細については，マニュアルHADB　SQLリファレンスの構成要素のシステム定義関数のADB_CSVREAD関数を参照してください。

11.19　同義語検索を行う際の運用

ここでは，同義語検索を行う際の準備作業，同義語検索の方法，および同義語辞書の管理方法について説明します。

同義語検索の概要については，「2.17.3　同義語検索」を参照してください。

マルチノード機能を使用している場合に同義語検索を行う場合は，「18.28　同義語検索を行う際の運用（マルチノード機能使用時）」の説明もお読みください。

11.19.1　同義語検索を行うための準備をする

同義語検索を行う場合，ここで説明している準備作業を実施してください。

(1)　テキストインデクスの定義を検討する

同義語検索を行う場合，テキストインデクスを使用すると性能向上が見込まれるため，テキストデータ（文書データ）を格納している列にテキストインデクスを定義することを推奨します。

■テキストインデクスを定義しても効果が見込めないケース

テキストデータ中の文字の種類が少ない場合は，テキストインデクスを定義しても性能向上が見込まれません。例えば，テキストデータが数字だけの場合が該当します。

また，同義語検索を行う際に指定する検索対象文字列が「a」や「0」などの単純で短い文字列の場合は，テキストインデクスを定義しても性能向上が見込まれません。場合によっては，テキストインデクスが使用されないこともあります。

テキストインデクスを定義する際の考慮点については，「5.4.1　テキストインデクスを定義する列を決めるときの考慮点」を参照してください。

■表記ゆれ補正検索との関係

同義語検索は，表記ゆれ補正検索と合わせて実行できます。同義語検索と表記ゆれ補正検索を合わせて実行する場合は，CREATE INDEX文でテキストインデクスを定義する際にCORRECTIONRULE（テキストインデクス表記ゆれ補正指定）を指定してください。

表記ゆれ補正検索については，「2.17.1　表記ゆれ補正検索」を参照してください。

表記ゆれ補正検索を適用するかどうかは，同義語検索を実行する際にスカラ関数CONTAINSの指定で選択できます。そのため，準備の段階で表記ゆれ補正検索を適用するかどうかが不明な場合は，表記ゆれ補正検索に対応するテキストインデクスを定義することを推奨します。

重要

HADBサーバで使用する文字コードがShift-JISの場合（環境変数ADBLANGの指定値がSJISの場合），表記ゆれ補正検索は実行できません。

なお，テキストインデクスを定義しなくても，同義語検索と表記ゆれ補正検索は実行できますが，性能の面から，テキストインデクスを定義することを推奨します。

■ワード検索との関係

同義語検索は，ワード検索と合わせて実行できます。同義語検索とワード検索を合わせて実行する場合は，CREATE INDEX文でテキストインデクスを定義する際，INDEXTYPEにTEXT WORDCONTEXTを指定してください（ワード検索用のテキストインデクスを定義してください）。

ワード検索については，「2.17.4　ワード検索」を参照してください。

ワード検索を適用するかどうかは，同義語検索を実行する際にスカラ関数CONTAINSの指定で選択できます。そのため，準備の段階でワード検索を適用するかどうかが不明な場合は，ワード検索用のテキストインデクスを定義することを推奨します。

なお，テキストインデクスを定義しなくても，同義語検索とワード検索は実行できますが，性能の面から，テキストインデクスを定義することを推奨します。

(2)　テキストインデクスを定義する

テキストインデクスを定義する場合は，次に示す手順でテキストインデクスを定義してください。

手順

CREATE INDEX文を実行して，テキストインデクスを定義する

adbidxrebuildコマンドを実行して，テキストインデクスのインデクスデータを作成する

(3)　同義語辞書ファイルの格納ディレクトリに必要な容量を見積もる

同義語辞書を登録するadbsyndictコマンドを実行すると，同義語辞書の情報を格納した同義語辞書ファイルが作成されます。この同義語辞書ファイルを格納するディレクトリに必要な容量を見積もってください。同義語辞書ファイルの格納ディレクトリに必要な概算容量については，「11.19.12　同義語辞書ファイルの格納ディレクトリに必要な空き容量を確認する」を参照してください。

同義語辞書ファイルの格納ディレクトリに必要な容量を詳細に見積もる場合は，次の個所を参照してください。

「6.14　同義語辞書ファイルの格納ディレクトリの容量見積もり」

「6.21.6　adbsyndictコマンド実行時の作業用一時ファイルの容量見積もり」

上記の見積もり結果の合計サイズが，同義語辞書ファイルの格納ディレクトリに必要な容量になります。

重要

同義語辞書ファイルの格納ディレクトリの空き容量が不足した場合，同義語辞書ファイルの格納ディレクトリを変更する必要があります。同義語辞書ファイルの格納ディレクトリを変更すると，すべての同義語辞書を再登録する必要があるため，ディレクトリを作成しているディスクの容量不足などが発生しないように，見積もりを行ってください。

(4)　同義語辞書ファイルの格納ディレクトリを作成する

同義語辞書ファイルを格納するディレクトリを作成してください。性能の観点から，同義語辞書ファイルの格納ディレクトリだけを作成するファイルシステムを準備することを推奨します。

なお，同義語辞書ファイルの格納ディレクトリを作成するディスクには，セクターサイズが512バイトまたは4,096バイトのディスクが使用できます。

また，同義語辞書ファイルの格納ディレクトリを作成する際，次の点に注意してください。

次のディレクトリは，同義語辞書ファイルの格納ディレクトリにできません。

サーバディレクトリ

サーバディレクトリの下位のディレクトリ

下位のディレクトリにサーバディレクトリがあるディレクトリ

DBディレクトリ

DBディレクトリの下位のディレクトリ

下位のディレクトリにDBディレクトリがあるディレクトリ

ルートディレクトリ

DBディレクトリが/HADB/dbの場合，同義語辞書ファイルの格納ディレクトリにできるディレクトリの例と，できないディレクトリの例を次に示します。

同義語辞書ファイルの格納ディレクトリの例

理由

同義語辞書ファイルの格納ディレクトリにできるディレクトリの例

/HADB/syndict

なし。

同義語辞書ファイルの格納ディレクトリにできないディレクトリの例

/HADB/db

左記のディレクトリは，DBディレクトリと同一のため，同義語辞書ファイルの格納ディレクトリにできません。

/HADB/db/synonym

左記のディレクトリは，DBディレクトリの下位のディレクトリのため，同義語辞書ファイルの格納ディレクトリにできません。

/HADB

左記のディレクトリは，下位のディレクトリにDBディレクトリがあるため，同義語辞書ファイルの格納ディレクトリにできません。

HADBサーバのインストール時にインストールデータを格納したディレクトリを，同義語辞書ファイルの格納ディレクトリにしないでください。

メモ

データベースのバックアップを取得する際，同義語辞書ファイルの格納ディレクトリもバックアップの取得対象になります。バックアップの取得方法については，「10.3　データベースのバックアップ」を参照してください。

(5)　同義語辞書ファイルの格納ディレクトリに対する権限を付与する

次に示す手順で，同義語辞書ファイルの格納ディレクトリに対して必要な権限を付与してください。

手順

同義語辞書ファイルの格納ディレクトリに，HADB管理者に対する読み取り権限，書き込み権限，および実行権限を付与する

同義語辞書ファイルの格納ディレクトリのパスに含まれるすべてのディレクトリに，HADB管理者に対する実行権限を付与する

（例）

同義語辞書ファイルの格納ディレクトリが/HADB/syndictの場合

/HADB/syndictには，読み取り権限，書き込み権限，および実行権限が必要です。

/，および/HADBには，実行権限が必要です。

(6)　サーバ定義を修正する

サーバ定義のadb_syndict_storage_pathオペランドに，同義語辞書ファイルの格納ディレクトリ名を指定してください。adb_syndict_storage_pathオペランドについては，「7.2.9　同義語検索に関するオペランド（set形式）」のadb_syndict_storage_pathを参照してください。

adb_syndict_storage_pathオペランドに同義語辞書ファイルの格納ディレクトリのシンボリックリンクを指定した場合，シンボリックリンクを解決したあとの絶対パス名が，「(4)　同義語辞書ファイルの格納ディレクトリを作成する」で説明している規則に従っているかどうかがチェックされます。

メモ

サーバ定義の変更手順については，「8.5.2　サーバ定義の変更方法」を参照してください。

(7)　同義語一覧定義ファイルを作成する

同義語辞書に登録する同義語の一覧を記述したファイルを作成します。このファイルを同義語一覧定義ファイルといいます。同義語検索を行った場合，同義語一覧定義ファイルに記述された同義語が一括検索されます。

■同義語一覧定義ファイルの指定例

データベース,データバンク,database↓
アプリケーションサーバ,APサーバ,application server↓

（凡例）↓：改行

上記のように同義語一覧定義ファイルを作成した場合，「データベース」，「データバンク」，「database」のどれか1つを検索対象文字列に指定すると，「データベース」，「データバンク」，および「database」のすべての語句が検索対象文字列になります。

「アプリケーションサーバ」，「APサーバ」，「application server」のどれか1つを検索対象文字列に指定すると，「アプリケーションサーバ」，「APサーバ」，および「application server」のすべての語句が検索対象文字列になります。

■同義語一覧定義ファイルの指定規則

各同義語を「，」で区切って記述します。

一括検索の対象とする同義語を1行に記述します。1行に書いた同義語の集まりを同義語グループといいます。下記の例の場合，2つの同義語グループを指定しています。

メモ

ここでは，同義語一覧定義ファイルの基本的な指定規則だけを説明しています。同義語一覧定義ファイルの指定規則の詳細については，「11.19.15　同義語一覧定義ファイルの指定規則」を参照してください。

この例では，同義語一覧定義ファイルを次のファイル名で保存したとします。

/home/adbmanager/dictionary1_synonym.txt

重要

ここで作成した同義語一覧定義ファイルは，同義語辞書に同義語を追加するときなどに使用するため，必ず保管しておいてください。

(8)　辞書情報登録ファイルを作成する

同義語辞書の辞書情報を指定したファイルを作成します。このファイルを辞書情報登録ファイルといいます。ここで作成した辞書情報登録ファイルを，同義語辞書を登録する際に実行するadbsyndictコマンドのオプション引数に指定します。

■辞書情報登録ファイルの指定例

Dictionary1,/home/adbmanager/dictionary1_synonym.txt,CORRECTIONRULE,DBとAPサーバの関連用語↓

（凡例）↓：改行

［説明］

辞書情報登録ファイル中には，次に示す4つの項目を指定します。各項目は，コンマ（ , ）で区切って指定してください。

1列目

同義語辞書名を指定します。

2列目

「(7)　同義語一覧定義ファイルを作成する」で作成した同義語一覧定義ファイルの名称を指定します。

3列目

表記ゆれ補正オプションを指定します。表記ゆれ補正オプションには，表記ゆれ補正検索に対応する同義語辞書を作成するかどうかを指定します。次のどちらかを指定します。

・CORRECTIONRULE：表記ゆれ補正検索に対応する同義語辞書を作成する場合に指定します。

・CASESENSITIVE：表記ゆれ補正検索に対応しない同義語辞書を作成する場合に指定します。

4列目

同義語辞書に対するコメントを指定します。

メモ

ここでは，辞書情報登録ファイルの基本的な指定規則だけを説明しています。辞書情報登録ファイルの指定規則の詳細については，「11.19.16　辞書情報登録ファイルの指定規則」を参照してください。

この例では，辞書情報登録ファイルを次のファイル名で保存したとします。

/home/adbmanager/dictionary1_information.txt

重要

ここで作成した辞書情報登録ファイルは，同義語辞書に同義語を追加するときなどに使用するため，必ず保管しておいてください。

(9)　同義語辞書を登録する

adbsyndictコマンドを実行して同義語辞書を登録します。

コマンドの実行例

adbsyndict -m /home/adbmanager/dictionary1_information.txt

［説明］

-mオプションには，「(8)　辞書情報登録ファイルを作成する」で作成した辞書情報登録ファイルの絶対パス名を指定します。

メモ

同義語辞書の登録が完了した場合，KFAA51509-Iメッセージが出力されます（登録を完了した同義語辞書の数だけメッセージが出力されます）。メッセージ中の同義語辞書名を確認し，同義語辞書の登録が完了したことを確認してください。

adbsyndictコマンドを実行すると，同義語辞書ファイルが作成されます。表記ゆれ補正検索に対応している同義語辞書の場合は，同義語辞書ファイルが3つ作成されます。表記ゆれ補正検索に対応していない同義語辞書の場合は，同義語辞書ファイルが1つだけ作成されます。

同義語辞書ファイルの格納ディレクトリ下に作成される同義語辞書ファイルを，adbsyndictコマンド以外の方法で削除または更新しないでください。

(10)　同義語辞書ファイルの格納ディレクトリのバックアップを取得する

同義語辞書ファイルに障害が発生した場合に備えて，同義語辞書ファイルの格納ディレクトリのバックアップを取得してください。バックアップを取得しないと，同義語辞書ファイルに障害が発生した場合，同義語辞書ファイルをadbsyndictコマンドで再作成する必要があります。

同義語辞書ファイルの格納ディレクトリは，サーバ定義のadb_syndict_storage_pathオペランドに指定したディレクトリです。

11.19.2　同義語検索を行う

スカラ関数CONTAINSを使用して同義語検索を行います。スカラ関数CONTAINSについては，マニュアルHADB　SQLリファレンスのCONTAINSを参照してください。

(1)　基本的な検索例

同義語辞書Dictionary1を使用して，同義語検索を行います。同義語辞書Dictionary1には，次に示す語句が同義語として登録されています。

データベース，データバンク，database

例題

DOCUMENTS列には文書データが格納されています。その文書データ中に「データベース，データバンク，database」のどれかの語句が含まれている文書データ名（TITLE列）を検索します。

実行するSQL文

SELECT "TITLE" FROM "REPORTS"
    WHERE CONTAINS("DOCUMENTS",'SYNONYM("Dictionary1","データバンク")')>0

［説明］

スカラ関数CONTAINS中に同義語辞書名（Dictionary1）と，Dictionary1に登録されている同義語の1つ（データバンク）を指定します。上記のSQL文を実行すると，同義語辞書の同義語グループに登録されている同義語（データベース，データバンク，database）のどれかが文章情報中に含まれている文書データ名（TITLE列）が検索結果として返されます。

メモ

同義語辞書に登録されている同義語を調べる方法については，「11.19.3　同義語辞書に登録されている同義語を確認する」を参照してください。

(2)　表記ゆれ補正検索を適用した検索例

表記ゆれ補正検索に対応している同義語辞書Dictionary1を使用して，同義語検索を行います。同義語辞書Dictionary1には，次に示す語句が同義語として登録されています。

データベース，データバンク，database

例題

DOCUMENTS列には文書データが格納されています。その文書データ中に「データベース，データバンク，database，[図データ]，[図データ]，DATABASE」などの語句が含まれている文書データ名（TITLE列）を検索します。

実行するSQL文

SELECT "TITLE" FROM "REPORTS"
    WHERE CONTAINS("DOCUMENTS",'SYNONYM("Dictionary1",SORTCODE("データバンク"))')>0

［説明］

スカラ関数CONTAINS中に同義語辞書名（Dictionary1）と，Dictionary1に登録されている同義語の1つ（データバンク）を指定します。上記のSQL文を実行すると，同義語辞書の同義語グループに登録されている同義語（データベース，データバンク，database）のどれかが文章情報中に含まれている文書データ名（TITLE列）が検索結果として返されます。

さらに，表記ゆれ補正検索が働くため，[図データ]，[図データ]，DATABASEなどの語句が含まれている文書データの文書データ名（TITLE列）も検索結果として返されます。

(3)　2つの同義語辞書を使用した検索例

次に示す2つの同義語辞書を使用した検索例を説明します。

同義語辞書名：Dictionary2

Dictionary2には，次に示す語句が同義語として登録されています。

リレーショナルデータベース，RDB，relational database，NoSQLデータベース

同義語辞書名：Dictionary3

Dictionary3には，次に示す語句が同義語として登録されています。

リレーショナルデータベース，RDB，relational database，NoSQLデータベース，クラウドデータベース，ビッグデータデータベース

例題

次の条件をすべて満たす文書データ名（TITLE列）を検索します。

DOCUMENTS列に格納されている文書データ中に，「リレーショナルデータベース，RDB，relational database，NoSQLデータベース」のどれかの語句が含まれている

TITLE列に格納されている文書データ名中に，「リレーショナルデータベース，RDB，relational database，NoSQLデータベース，クラウドデータベース，ビッグデータデータベース」のどれかの語句が含まれている

SELECT "TITLE" FROM "REPORTS"
    WHERE CONTAINS("DOCUMENTS",'SYNONYM("Dictionary2","RDB")')>0
      AND CONTAINS("TITLE",'SYNONYM("Dictionary3","RDB")')>0

(4)　注意事項

スカラ関数CONTAINSに指定した検索対象文字列が，同義語辞書に登録されていない場合，同義語検索は行われません。

（例）

同義語辞書に登録されている同義語が「データベース，データバンク，database」の場合に，次のSELECT文を実行しても，同義語検索は行われません。この場合，「RDB」だけが検索対象文字列になります。

SELECT "TITLE" FROM "REPORTS"
    WHERE CONTAINS("DOCUMENTS",'SYNONYM("Dictionary1",SORTCODE("RDB"))')>0

同義語辞書の更新中（adbsyndictコマンドの実行中）に，更新中の同義語辞書を使用した同義語検索を実行できます。ただし，更新前の同義語辞書を使用した検索になるか，または更新後の同義語辞書を使用した検索になるかは，タイミングによって異なります。

11.19.3　同義語辞書に登録されている同義語を確認する

adbsyndictコマンドを実行すると，同義語辞書に登録されている同義語の一覧を出力できます。

例題

同義語辞書Dictionary1に登録されている同義語の一覧を出力します。

手順

adbsyndictコマンドを実行して，同義語辞書Dictionary1に登録されている同義語の一覧を出力する

adbsyndict -n Dictionary1 -o /home/adbmanager/dictionary1_output.txt

-nオプションには，同義語辞書名を指定します。

-oオプションには，同義語辞書Dictionary1に登録されている同義語の一覧を出力するファイルを指定します。

出力されたファイルを開いて同義語の一覧を確認する

同義語の一覧の出力例

"データベース","データバンク","database"↓
"アプリケーションサーバ","APサーバ","application server"↓

（凡例）↓：改行

同義語の一覧は，同義語一覧定義ファイルと同じ形式で出力されます。上記の例のように，1行が1同義語グループの同義語になります。

メモ

手順の1.で同義語の一覧の出力が完了した場合，KFAA51529-Iメッセージが出力されます。メッセージ中の同義語辞書名を確認し，同義語の一覧の出力が完了したことを確認してください。

11.19.4　同義語辞書の情報を確認する

同義語辞書の名称を確認したい場合や，同義語辞書が表記ゆれ補正検索に対応しているかどうかを確認したい場合は，システム表を検索します。

(1)　特定の同義語辞書の情報を確認する

例題

同義語辞書Dictionary1が表記ゆれ補正検索に対応しているかどうかを確認します。

実行するSQL文

SELECT * FROM "MASTER"."STATUS_SYNONYM_DICTIONARIES"
    WHERE "SYNONYM_DICTIONARY_NAME"='Dictionary1'

実行結果の例

［説明］

CORRECTION_RULE欄にCORRECTIONRULEが表示されているため，同義語辞書Dictionary1は表記ゆれ補正検索に対応しています。

CORRECTION_RULE欄にCASESENSITIVEが表示されている場合は，その同義語辞書は表記ゆれ補正検索に対応していません。

説明のない出力項目については，「付録C.6　STATUS_SYNONYM_DICTIONARIESの内容」で説明されているSTATUS_SYNONYM_DICTIONARIESの列情報の説明を参照してください。

上記の検索結果の表示形式は，実際に出力される表示形式とは異なるところがあります。

(2)　すべての同義語辞書の情報を確認する

例題

同義語辞書の一覧と各同義語辞書に関する情報を確認します。

実行するSQL文

SELECT * FROM "MASTER"."STATUS_SYNONYM_DICTIONARIES"

実行結果の例

例えば，SQL文中に指定する同義語辞書名を確認するために，同義語辞書の一覧を表示した場合は，コメントから該当する同義語辞書を推定するようにしてください。

上記の検索結果の表示形式は，実際に出力される表示形式とは異なるところがあります。

11.19.5　同義語を追加する

同義語辞書に同義語を追加する方法を説明します。

例題

同義語辞書Dictionary1に登録されている同義語グループに同義語を追加します。この例では，「リレーショナルデータベース」と「RDB」を追加しています。

手順

保管している同義語一覧定義ファイルの指定を修正する

＜同義語一覧定義ファイルの指定内容＞

データベース,データバンク,database,リレーショナルデータベース,RDB↓
アプリケーションサーバ,APサーバ,application server↓

（凡例）↓：改行

保管しているDictionary1用の同義語一覧定義ファイルを修正します。この例では，下線部分の同義語を追加しています。

重要

変更がない同義語グループはそのまま指定してください。上記の例の2行目（アプリケーションサーバの行）が該当します。上記の例の2行目を指定しないと，アプリケーションサーバの行の同義語グループが削除されてしまいます。

この例では，Dictionary1用の同義語一覧定義ファイルを次のファイル名で保存しているとします。

/home/adbmanager/dictionary1_synonym.txt

保管している辞書情報登録ファイルの指定内容を確認する

＜辞書情報登録ファイルの指定内容＞

Dictionary1,/home/adbmanager/dictionary1_synonym.txt,CORRECTIONRULE,DBとAPサーバの関連用語↓

（凡例）↓：改行

保管しているDictionary1用の辞書情報登録ファイルの指定内容を確認してください。同義語の追加によってコメントを変更する必要がある場合は，コメントを変更してください。

この例では，辞書情報登録ファイルを次のファイル名で保存しているとします。

/home/adbmanager/dictionary1_information.txt

同義語辞書ファイルの格納ディレクトリの空き容量を確認する

空き容量の確認方法については，「11.19.12　同義語辞書ファイルの格納ディレクトリに必要な空き容量を確認する」を参照してください。

adbsyndictコマンドを実行して同義語辞書を更新する

adbsyndict -m /home/adbmanager/dictionary1_information.txt

-mオプションには，手順の2.で確認した辞書情報登録ファイルの絶対パス名を指定します。

同義語辞書ファイルの格納ディレクトリのバックアップを取得する

同義語辞書を更新した場合，同義語辞書ファイルが更新されます。同義語辞書ファイルに障害が発生した場合に備えて，同義語辞書ファイルの格納ディレクトリのバックアップを取得してください。バックアップを取得しないと，同義語辞書ファイルに障害が発生した場合，同義語辞書ファイルをadbsyndictコマンドで再作成する必要があります。

同義語辞書ファイルの格納ディレクトリは，サーバ定義のadb_syndict_storage_pathオペランドに指定したディレクトリです。

メモ

同義語一覧定義ファイルの指定規則については，「11.19.15　同義語一覧定義ファイルの指定規則」を参照してください。

辞書情報登録ファイルの指定規則については，「11.19.16　辞書情報登録ファイルの指定規則」を参照してください。

同義語一覧定義ファイルを紛失してしまった場合は，「11.19.14　同義語一覧定義ファイルを再作成する（同義語一覧定義ファイルを紛失した場合）」を参照して，同義語一覧定義ファイルを再作成してください。

手順の4.で同義語辞書の更新が完了した場合，KFAA51509-Iメッセージが出力されます（更新が完了した同義語辞書の数だけメッセージが出力されます）。メッセージ中の同義語辞書名を確認し，同義語辞書の更新が完了したことを確認してください。

11.19.6　同義語を削除する

同義語辞書から同義語を削除する方法を説明します。

例題

同義語辞書Dictionary1に登録されている同義語を削除します。この例では，「データバンク」を削除しています。

手順

保管している同義語一覧定義ファイルの指定を修正する

＜変更前の同義語一覧定義ファイルの指定内容＞

データベース,データバンク,database↓
アプリケーションサーバ,APサーバ,application server↓

＜変更後の同義語一覧定義ファイルの指定内容＞

データベース,database↓
アプリケーションサーバ,APサーバ,application server↓

（凡例）↓：改行

保管しているDictionary1用の同義語一覧定義ファイルを修正します。この例では，「データバンク」を削除しています。

重要

変更がない同義語グループはそのまま指定してください。上記の例の2行目（アプリケーションサーバの行）が該当します。上記の例の2行目を指定しないと，アプリケーションサーバの行の同義語グループが削除されてしまいます。

この例では，Dictionary1用の同義語一覧定義ファイルを次のファイル名で保存しているとします。

/home/adbmanager/dictionary1_synonym.txt

保管している辞書情報登録ファイルの指定内容を確認する

＜辞書情報登録ファイルの指定内容＞

Dictionary1,/home/adbmanager/dictionary1_synonym.txt,CORRECTIONRULE,DBとAPサーバの関連用語↓

（凡例）↓：改行

保管している辞書情報登録ファイルの指定内容を確認してください。同義語の削除によってコメントを変更する必要がある場合は，コメントを変更してください。

この例では，辞書情報登録ファイルを次のファイル名で保存しているとします。

/home/adbmanager/dictionary1_information.txt

同義語辞書ファイルの格納ディレクトリの空き容量を確認する

空き容量の確認方法については，「11.19.12　同義語辞書ファイルの格納ディレクトリに必要な空き容量を確認する」を参照してください。

adbsyndictコマンドを実行して同義語辞書を更新する

adbsyndict -m /home/adbmanager/dictionary1_information.txt

-mオプションには，手順の2.で確認した辞書情報登録ファイルの絶対パス名を指定します。

同義語辞書ファイルの格納ディレクトリのバックアップを取得する

同義語辞書を更新した場合，同義語辞書ファイルが更新されます。同義語辞書ファイルに障害が発生した場合に備えて，同義語辞書ファイルの格納ディレクトリのバックアップを取得してください。バックアップを取得しないと，同義語辞書ファイルに障害が発生した場合，同義語辞書ファイルをadbsyndictコマンドで再作成する必要があります。

同義語辞書ファイルの格納ディレクトリは，サーバ定義のadb_syndict_storage_pathオペランドに指定したディレクトリです。

メモ

同義語一覧定義ファイルの指定規則については，「11.19.15　同義語一覧定義ファイルの指定規則」を参照してください。

辞書情報登録ファイルの指定規則については，「11.19.16　辞書情報登録ファイルの指定規則」を参照してください。

同義語一覧定義ファイルを紛失してしまった場合は，「11.19.14　同義語一覧定義ファイルを再作成する（同義語一覧定義ファイルを紛失した場合）」を参照して，同義語一覧定義ファイルを再作成してください。

手順の4.で同義語辞書の更新が完了した場合，KFAA51509-Iメッセージが出力されます（更新を完了した同義語辞書の数だけメッセージが出力されます）。メッセージ中の同義語辞書名を確認し，同義語辞書の更新が完了したことを確認してください。

11.19.7　同義語グループを追加する

同義語辞書に同義語グループを追加する方法を説明します。

例題

同義語辞書Dictionary1に同義語グループを追加します。追加する同義語グループには，次に示す同義語を登録します。

ウェブサーバ，WWWサーバ，Webサーバ

手順

保管している同義語一覧定義ファイルの指定を修正する

＜同義語一覧定義ファイルの指定内容＞

データベース,データバンク,database↓
アプリケーションサーバ,APサーバ,application server↓
ウェブサーバ,WWWサーバ,Webサーバ↓

（凡例）↓：改行

保管しているDictionary1用の同義語一覧定義ファイルを修正します。この例では，下線部分の同義語グループを追加しています。

重要

変更がない同義語グループはそのまま指定してください。上記の例の1行目（データベースの行）と2行目（アプリケーションサーバの行）が該当します。上記の例の1行目と2行目を指定しないと，データベースの行の同義語グループとアプリケーションサーバの行の同義語グループが削除されてしまいます。

この例では，Dictionary1用の同義語一覧定義ファイルを次のファイル名で保存しているとします。

/home/adbmanager/dictionary1_synonym.txt

保管している辞書情報登録ファイルの指定内容を確認する

＜辞書情報登録ファイルの指定内容＞

Dictionary1,/home/adbmanager/dictionary1_synonym.txt,CORRECTIONRULE,"DB,APサーバ,Webサーバの関連用語"↓

（凡例）↓：改行

保管している辞書情報登録ファイルの指定内容を確認してください。同義語グループの追加によってコメントを変更する必要がある場合は，コメントを変更してください。この例では，コメント（下線部分）を変更しています。

メモ

コメント中に「,」を指定しているため，囲み文字の「"」でコメントを囲んでいます。

この例では，辞書情報登録ファイルを次のファイル名で保存しているとします。

/home/adbmanager/dictionary1_information.txt

同義語辞書ファイルの格納ディレクトリの空き容量を確認する

空き容量の確認方法については，「11.19.12　同義語辞書ファイルの格納ディレクトリに必要な空き容量を確認する」を参照してください。

adbsyndictコマンドを実行して同義語辞書を更新する

adbsyndict -m /home/adbmanager/dictionary1_information.txt

-mオプションには，手順の2.で確認した辞書情報登録ファイルの絶対パス名を指定します。

同義語辞書ファイルの格納ディレクトリのバックアップを取得する

同義語辞書を更新した場合，同義語辞書ファイルが更新されます。同義語辞書ファイルに障害が発生した場合に備えて，同義語辞書ファイルの格納ディレクトリのバックアップを取得してください。バックアップを取得しないと，同義語辞書ファイルに障害が発生した場合，同義語辞書ファイルをadbsyndictコマンドで再作成する必要があります。

同義語辞書ファイルの格納ディレクトリは，サーバ定義のadb_syndict_storage_pathオペランドに指定したディレクトリです。

メモ

同義語一覧定義ファイルの指定規則については，「11.19.15　同義語一覧定義ファイルの指定規則」を参照してください。

辞書情報登録ファイルの指定規則については，「11.19.16　辞書情報登録ファイルの指定規則」を参照してください。

同義語一覧定義ファイルを紛失してしまった場合は，「11.19.14　同義語一覧定義ファイルを再作成する（同義語一覧定義ファイルを紛失した場合）」を参照して，同義語一覧定義ファイルを再作成してください。

手順の4.で同義語辞書の更新が完了した場合，KFAA51509-Iメッセージが出力されます（更新を完了した同義語辞書の数だけメッセージが出力されます）。メッセージ中の同義語辞書名を確認し，同義語辞書の更新が完了したことを確認してください。

■同義語グループを削除する場合

同義語グループを削除する手順は，ここで説明している同義語グループを追加する手順と同じです。手順の1.の保管している同義語一覧定義ファイルの指定を修正するで，不要となった同義語グループを削除してください。

11.19.8　同義語辞書を登録する

同義語辞書を登録する方法を説明します。

例題

同義語辞書Dictionary2を登録します。Dictionary2には，次の同義語を登録します（同義語グループを1つだけ登録します）。

日立，日立製作所，Hitachi

手順

Dictionary2用の同義語一覧定義ファイルを作成する

＜同義語一覧定義ファイルの指定内容＞

日立,日立製作所,Hitachi↓

（凡例）↓：改行

この例では，作成した同義語一覧定義ファイルを次のファイル名で保存したとします。

/home/adbmanager/dictionary2_synonym.txt

辞書情報登録ファイルを作成する

＜辞書情報登録ファイルの指定内容＞

Dictionary2,/home/adbmanager/dictionary2_synonym.txt,CORRECTIONRULE,日立の同義語↓

（凡例）↓：改行

この例では，作成した辞書情報登録ファイルを次のファイル名で保存したとします。

/home/adbmanager/dictionary2_information.txt

同義語辞書ファイルの格納ディレクトリの空き容量を確認する

空き容量の確認方法については，「11.19.12　同義語辞書ファイルの格納ディレクトリに必要な空き容量を確認する」を参照してください。

adbsyndictコマンドを実行して同義語辞書を登録する

adbsyndict -m /home/adbmanager/dictionary2_information.txt

-mオプションには，手順の2.で作成した辞書情報登録ファイルの絶対パス名を指定します。

同義語辞書ファイルの格納ディレクトリのバックアップを取得する

同義語辞書を登録した場合，同義語辞書ファイルが追加されます。同義語辞書ファイルに障害が発生した場合に備えて，同義語辞書ファイルの格納ディレクトリのバックアップを取得してください。バックアップを取得しないと，同義語辞書ファイルに障害が発生した場合，同義語辞書ファイルをadbsyndictコマンドで再作成する必要があります。

同義語辞書ファイルの格納ディレクトリは，サーバ定義のadb_syndict_storage_pathオペランドに指定したディレクトリです。

メモ

同義語一覧定義ファイルの指定規則については，「11.19.15　同義語一覧定義ファイルの指定規則」を参照してください。

辞書情報登録ファイルの指定規則については，「11.19.16　辞書情報登録ファイルの指定規則」を参照してください。

手順の4.で同義語辞書の登録が完了した場合，KFAA51509-Iメッセージが出力されます（登録を完了した同義語辞書の数だけメッセージが出力されます）。メッセージ中の同義語辞書名を確認し，同義語辞書の登録が完了したことを確認してください。

11.19.9　同義語辞書を削除する

同義語辞書を削除する方法を説明します。

例題

同義語辞書Dictionary1およびDictionary2を削除します。

手順

辞書情報削除ファイルを作成する

＜辞書情報削除ファイルの指定内容＞

Dictionary1↓
Dictionary2↓

（凡例）↓：改行

削除する同義語辞書の名称を指定します。1行に1つの同義語辞書名を指定します。

この例では，作成した辞書情報削除ファイルを次のファイル名で保存したとします。

/home/adbmanager/dictionary_delete.txt

adbsyndictコマンドを実行して同義語辞書を削除する

adbsyndict -d /home/adbmanager/dictionary_delete.txt

-dオプションには，辞書情報削除ファイルの絶対パス名を指定します。

■辞書情報削除ファイルの指定規則

各行の終わりに改行を入力してください。また，辞書情報削除ファイルの最後の行にも改行を入力してください。改行コードは，X'0A'（LF），X'0D0A'（CRLF），またはX'00'のどれかにしてください。

環境変数ADBLANGに指定した文字コードで辞書情報削除ファイルを作成してください。

改行だけの行がある場合，その行を読み飛ばして処理が実行されます。

メモ

手順の2.で同義語辞書の削除が完了した場合，KFAA51509-Iメッセージが出力されます（削除を完了した同義語辞書の数だけメッセージが出力されます）。メッセージ中の同義語辞書名を確認し，同義語辞書の削除が完了したことを確認してください。

11.19.10　同義語辞書を表記ゆれ補正検索対応に変更する

表記ゆれ補正検索に対応していない同義語辞書を，表記ゆれ補正検索に対応する同義語辞書に変更する方法を説明します。

例題

表記ゆれ補正検索に対応していない同義語辞書Dictionary3を，表記ゆれ補正検索に対応する同義語辞書に変更します。その際，コメントも変更します。

手順

保管している辞書情報登録ファイルの指定内容を変更する

＜変更前の辞書情報登録ファイルの指定内容＞

Dictionary3,/home/adbmanager/dictionary3_synonym.txt,CASESENSITIVE,詳細用語↓

＜変更後の辞書情報登録ファイルの指定内容＞

Dictionary3,/home/adbmanager/dictionary3_synonym.txt,CORRECTIONRULE,"詳細用語,表記ゆれ対応"↓

（凡例）↓：改行

保管しているDictionary3用の辞書情報登録ファイルの指定内容を変更します。この例では，次の変更をしています。

3列目

表記ゆれ補正オプションの指定を，CASESENSITIVEからCORRECTIONRULEに変更します。

4列目

コメントを変更します。コメント中に「,」を指定しているため，囲み文字の「"」でコメントを囲みます。

この例では，辞書情報登録ファイルを次のファイル名で保存しているとします。

/home/adbmanager/dictionary3_information.txt

同義語辞書ファイルの格納ディレクトリの空き容量を確認する

空き容量の確認方法については，「11.19.12　同義語辞書ファイルの格納ディレクトリに必要な空き容量を確認する」を参照してください。

adbsyndictコマンドを実行して同義語辞書を更新する

adbsyndict -m /home/adbmanager/dictionary3_information.txt

-mオプションには，手順の1.で変更した辞書情報登録ファイルの絶対パス名を指定します。

同義語辞書ファイルの格納ディレクトリのバックアップを取得する

同義語辞書を更新した場合，同義語辞書ファイルが更新されます。同義語辞書ファイルに障害が発生した場合に備えて，同義語辞書ファイルの格納ディレクトリのバックアップを取得してください。バックアップを取得しないと，同義語辞書ファイルに障害が発生した場合，同義語辞書ファイルをadbsyndictコマンドで再作成する必要があります。

同義語辞書ファイルの格納ディレクトリは，サーバ定義のadb_syndict_storage_pathオペランドに指定したディレクトリです。

メモ

手順の3.で同義語辞書の更新が完了した場合，KFAA51509-Iメッセージが出力されます（更新を完了した同義語辞書の数だけメッセージが出力されます）。メッセージ中の同義語辞書名を確認し，同義語辞書の更新が完了したことを確認してください。

11.19.11　同義語検索のチューニングを行う

同義語検索のチューニングを行う際は，ここで説明することを検討および確認してください。

(1)　テキストインデクスの定義を検討する

文書データを格納している列にテキストインデクスを定義していない場合は，テキストインデクスの定義を検討してください。テキストインデクスを定義すると，アクセスするページ数を減らすことができるため，検索性能の向上が見込まれます。

(2)　テキストインデクスが効果的に使用されているかを確認する

アクセスパスの統計情報に出力されるData_tidx_all_search_cntの値を確認してください。この値が1以上で値が大きいほど，テキストインデクスが効果的に使用されていません。Data_tidx_all_search_cntには，テキストインデクスを使用してチャンク内のデータを検索した際，チャンク内のデータを全件検索した回数が出力されます。

次に示すどちらかの条件を満たすSQL文を指定している場合は，SQL文を変更することで同義語検索の性能が向上することがあります。

同義語検索指定を指定したスカラ関数CONTAINS，LIKE述語，LIKE_REGEX述語を使用した条件を，論理演算子ORを使って複数指定している場合

同義語検索指定を指定したスカラ関数CONTAINSを，論理演算子ORを使って複数指定している場合

この場合，UNIONを指定してそれぞれの検索結果を統合するか，またはテキストインデクスを使用しないで検索することを検討してください。

SQL文の変更例を次に示します。

＜変更前＞

SELECT "TITLE" FROM "REPORTS"
    WHERE CONTAINS("DOCUMENTS",'SYNONYM("Dictionary1","データベース")')>0
       OR CONTAINS("DOCUMENTS",'SYNONYM("Dictionary1","アプリケーションサーバ")')>0
       OR 〜

＜変更後＞

UNIONを使用する場合

SELECT "TITLE" FROM "REPORTS"
    WHERE CONTAINS("DOCUMENTS",'SYNONYM("Dictionary1","データベース")')>0
UNION DISTINCT
SELECT "TITLE" FROM "REPORTS"
    WHERE CONTAINS("DOCUMENTS",'SYNONYM("Dictionary1","アプリケーションサーバ")')>0
UNION DISTINCT 〜

テキストインデクスを使用しない場合

SELECT "TITLE" FROM "REPORTS" /*>> WITHOUT INDEX <<*/
    WHERE CONTAINS("DOCUMENTS",'SYNONYM("Dictionary1","データベース")')>0
       OR CONTAINS("DOCUMENTS",'SYNONYM("Dictionary1","アプリケーションサーバ")')>0
       OR 〜

(3)　同義語辞書ファイルへのアクセス時間を確認する

同義語検索が行われた場合，HADBサーバは同義語辞書ファイルにアクセスします。そのため，専用のファイルシステムに同義語辞書ファイルの格納ディレクトリだけを作成すると，同義語検索の性能向上が見込まれます。

SQL文の統計情報に出力されるSyndict_file_access_timeの値を確認してください。Syndict_file_access_timeには，HADBサーバが同義語辞書ファイルにアクセスしている時間が出力されます。SQL文の実行時間のうち，Syndict_file_access_timeの時間が占める割合が大きい場合は，専用のファイルシステムに同義語辞書ファイルの格納ディレクトリを作成することを検討してください。

同義語辞書ファイルの格納ディレクトリを変更する方法については，「11.19.13　同義語辞書ファイルの格納ディレクトリを変更する」を参照してください。

11.19.12　同義語辞書ファイルの格納ディレクトリに必要な空き容量を確認する

同義語辞書を登録または更新する際，同義語辞書ファイルの格納ディレクトリに必要な空き容量があるかどうかを確認してください。空き容量が不足している場合，adbsyndictコマンドがエラーになります。

必要となる空き容量の概算値は，次に示す計算式で求められます。

計算式（単位：キロバイト）

5×A＋513×C＋27×B＋1,539×D

A：

表記ゆれ補正オプションにCASESENSITIVEを指定する同義語辞書の同義語一覧定義ファイルの合計サイズ（単位：キロバイト）

B：

表記ゆれ補正オプションにCORRECTIONRULEを指定する同義語辞書の同義語一覧定義ファイルの合計サイズ（単位：キロバイト）

C：

表記ゆれ補正オプションにCASESENSITIVEを指定する同義語辞書の数

D：

表記ゆれ補正オプションにCORRECTIONRULEを指定する同義語辞書の数

計算の結果，空き容量が不足している場合は，adbsyndictコマンドで一度に登録または更新する同義語辞書の数を減らしてください。上記の計算式では，一時的に必要となる容量を計算しています。そのため，一度に登録または更新する同義語辞書の数を減らすと，一時的に必要となる容量が減るため，adbsyndictコマンドを実行できることがあります。

メモ

例えば，10個の同義語辞書を更新する場合，更新後の同義語辞書ファイルを10個作成したあとに，更新前の同義語辞書ファイルを削除します。そのため，同義語辞書ファイルの格納ディレクトリ下には，一時的に同義語辞書ファイルが20個存在することになります。

11.19.13　同義語辞書ファイルの格納ディレクトリを変更する

同義語辞書ファイルの格納ディレクトリを変更する方法を説明します。

手順

変更後の同義語辞書ファイルの格納ディレクトリを作成する

作成方法の詳細については，「11.19.1　同義語検索を行うための準備をする」の次の個所を参照してください。

「(3)　同義語辞書ファイルの格納ディレクトリに必要な容量を見積もる」

「(4)　同義語辞書ファイルの格納ディレクトリを作成する」

「(5)　同義語辞書ファイルの格納ディレクトリに対する権限を付与する」

adbstopコマンドを実行してHADBサーバを正常終了する

サーバ定義のadb_syndict_storage_pathオペランドの指定を変更する

手順の1.で作成したディレクトリをadb_syndict_storage_pathオペランドに指定します。

adbstartコマンドを実行してHADBサーバを正常開始する

adbsyndictコマンドを実行してすべての同義語辞書を再登録する

保管している同義語一覧定義ファイルと辞書情報登録ファイルを使用して，すべての同義語辞書を再登録してください。

同義語辞書ファイルの格納ディレクトリのバックアップを取得する

同義語辞書を登録した場合，同義語辞書ファイルが追加されます。同義語辞書ファイルに障害が発生した場合に備えて，同義語辞書ファイルの格納ディレクトリのバックアップを取得してください。バックアップを取得しないと，同義語辞書ファイルに障害が発生した場合，同義語辞書ファイルをadbsyndictコマンドで再作成する必要があります。

同義語辞書ファイルの格納ディレクトリは，サーバ定義のadb_syndict_storage_pathオペランドに指定したディレクトリです。

メモ

手順の5.で同義語辞書の登録が完了した場合，KFAA51509-Iメッセージが出力されます（登録を完了した同義語辞書の数だけメッセージが出力されます）。メッセージ中の同義語辞書名を確認し，同義語辞書の登録が完了したことを確認してください。

11.19.14　同義語一覧定義ファイルを再作成する（同義語一覧定義ファイルを紛失した場合）

adbsyndictコマンドを実行すると，同義語一覧定義ファイルを再作成できます。同義語一覧定義ファイルを紛失したときなどに，同義語一覧定義ファイルを再作成してください。

例題

同義語辞書Dictionary1の同義語一覧定義ファイルを再作成します。

手順

adbsyndictコマンドを実行して，同義語辞書Dictionary1の同義語一覧定義ファイルを再作成する

adbsyndict -n Dictionary1 -o /home/adbmanager/dictionary1_output.txt

-nオプションには，同義語辞書名を指定します。

-oオプションには，出力先のファイル名を指定します。

再作成された同義語一覧定義ファイルを開いて内容を確認する

"データベース","データバンク","database"↓
"アプリケーションサーバ","APサーバ","application server"↓

（凡例）↓：改行

メモ

自分が作成した同義語一覧定義ファイルと，adbsyndictコマンドで再作成した同義語一覧定義ファイルでは，次の点が異なることがあります。

・各同義語に囲み文字（二重引用符）が付きます。

・同義語グループ内で同じ同義語を2つ以上指定していた場合，1つだけが出力されます。

・同義語グループ内の同義語の指定順が異なることがあります。

・改行コードはX'0A'（LF）になります。

手順の1.で同義語一覧定義ファイルの再作成が完了した場合，KFAA51529-Iメッセージが出力されます。メッセージ中の同義語辞書名を確認し，同義語一覧定義ファイルの再作成が完了したことを確認してください。

11.19.15　同義語一覧定義ファイルの指定規則

同義語一覧定義ファイルの指定規則について説明します。

(1)　同義語一覧定義ファイルの指定例

同義語辞書に次の2つの同義語グループを登録します。このときの同義語一覧定義ファイルの指定例を説明します。

データベース，データバンク，database

アプリケーションサーバ，APサーバ，application server

＜同義語一覧定義ファイルの指定例＞

データベース,データバンク,database↓
アプリケーションサーバ,APサーバ,application server↓

（凡例）↓：改行

［説明］

「データベース」，「データバンク」，「database」のどれか1つを検索対象文字列に指定して検索を実行すると，「データベース」，「データバンク」，および「database」のすべての語句が同義語として一括検索されます。

「アプリケーションサーバ」，「APサーバ」，「application server」のどれか1つを検索対象文字列に指定して検索を実行すると，「アプリケーションサーバ」，「APサーバ」，および「application server」のすべての語句が同義語として一括検索されます。

(2)　同義語一覧定義ファイルの指定規則

1行に1つの同義語グループを指定します。

各同義語をコンマ（ , ）で区切って指定します。

各行の終わり（同義語グループの終わり）に改行を入力してください。また，同義語一覧定義ファイルの最後の行にも改行を入力してください。前記の例の場合，application serverの後ろに改行を入力する必要があります。

改行コードは，X'0A'（LF），X'0D0A'（CRLF），またはX'00'のどれかにしてください。

同義語の指定がない行（改行だけの行）があると，adbsyndictコマンドがエラーになります。

環境変数ADBLANGに指定している文字コードで同義語一覧定義ファイルを作成してください。

1つの同義語には，1〜1,000文字の文字列を指定できます。

1つの同義語グループには，2〜1,000の同義語を指定できます。

同義語グループは，1,000,000個まで指定できます。

水平タブX'09'（HT），改行文字X'0A'（LF），またはX'00'を含む同義語は登録できません。

二重引用符（"）を囲み文字として指定することができます。同義語中に「,」がある場合は，囲み文字を指定してください。

同義語の文字列の前後の半角空白は削除されません。「△ab△c△d△△」と記述した場合，「△ab△c△d△△」が同義語として登録されます。△は，半角空白を示しています。

(3)　同義語一覧定義ファイルと同義語辞書の関係

検索条件や，検索対象の文書データの内容によっては，同義語辞書を複数作成して同義語辞書を使い分けることもできます。同義語辞書を複数作成する場合，同義語一覧定義ファイルは同義語辞書ごとに作成します。

例えば，次のような検索をする場合は，2つの同義語一覧定義ファイルを作成し，2つの同義語辞書を作成します。

データベースの一般的な用語が含まれている文章データを検索したい場合

データベースの種類を絞り込んで文章データを検索したい場合（例えば，リレーショナルデータベースに関する文章データを検索したい，NoSQLデータベースに関する文章データを検索したいなど）

■上記の1.の場合の同義語一覧定義ファイル（Terminology.txt）の指定

データベース,データバンク,database,リレーショナルデータベース,RDB,relational database,NoSQLデータベース,クラウドデータベース,ビッグデータデータベース↓

（凡例）↓：改行

この同義語一覧定義ファイルを使用して，同義語辞書Terminologyを作成します。データベースの一般的な用語が含まれている文章データを検索する際に，同義語辞書Terminologyを使用します。

■上記の2.の場合の同義語一覧定義ファイル（Terminology_detail.txt）の指定

リレーショナルデータベース,RDB,relational database↓
NoSQLデータベース,クラウドデータベース,ビッグデータデータベース↓

（凡例）↓：改行

この同義語一覧定義ファイルを使用して，同義語辞書Terminology_detailを作成します。リレーショナルデータベースに関する文章データを検索する場合や，NoSQLデータベースに関する文章データを検索する場合などに，同義語辞書Terminology_detailを使用します。

11.19.16　辞書情報登録ファイルの指定規則

辞書情報登録ファイルの指定規則について説明します。

(1)　辞書情報登録ファイルの指定例

同義語辞書Dictionary2を登録するときの辞書情報登録ファイルの指定例を説明します。

＜辞書情報登録ファイルの指定例＞

Dictionary2,/home/adbmanager/dictionary2_synonym.txt,CORRECTIONRULE,一般用語↓

（凡例）↓：改行

［説明］

辞書情報登録ファイル中には，次に示す4つの項目を指定します。各項目は，コンマ（ , ）で区切って指定します。

同義語辞書名（1列目に指定します）

同義語一覧定義ファイル名（2列目に指定します）

表記ゆれ補正オプション（3列目に指定します）

コメント（4列目に指定します）

(2)　辞書情報登録ファイル中の各項目に指定する内容

■1列目

同義語辞書名：〜〈文字列〉((1〜120バイト))

同義語辞書名を指定します。同義語辞書名はSQL文中に指定するため，わかりやすい名称を指定することを推奨します。

同義語辞書名に使用できる文字列は，半角英字（A〜Z，a〜z），半角数字（0〜9），および下線文字(_)になります。

重要

すでに登録されている同義語辞書名を指定した場合，同義語辞書が再登録されてしまうため，同義語辞書を新規に登録するときは，すでに登録されている辞書名を指定しないように注意してください。登録済みの同義語辞書があるかどうかは，システム表を検索すると，確認できます。システム表の検索方法については，「11.19.4　同義語辞書の情報を確認する」の「(2)　すべての同義語辞書の情報を確認する」を参照してください。

■2列目

同義語一覧定義ファイル名：〜〈OSパス名〉((2〜510バイト))

同義語一覧定義ファイル名を絶対パス名で指定します。

同義語一覧定義ファイル名の指定規則を次に示します。

制御文字（0x00〜0x1f，0x7f）は指定できません。

■3列目

表記ゆれ補正オプション：

表記ゆれ補正検索に対応する同義語辞書を作成するかどうかを指定します。次のどちらかを指定します。

CORRECTIONRULEまたはCR

表記ゆれ補正検索に対応する同義語辞書を作成する場合に指定します。

CASESENSITIVEまたはCS

表記ゆれ補正検索に対応しない同義語辞書を作成する場合に指定します。

CORRECTIONRULEを指定して作成した同義語辞書は，表記ゆれ補正検索をしない場合にも使用できます。そのため，表記ゆれ補正検索を行うかどうかが，同義語辞書の作成時に不明な場合は，CORRECTIONRULEを指定することを推奨します。

メモ

表記ゆれ補正検索を行うかどうかは，同義語検索の実行時にスカラ関数CONTAINSの指定で選択できます。

表記ゆれ補正検索に対応しない同義語辞書を，表記ゆれ補正検索に対応する同義語辞書に変更する場合，同義語辞書を再登録する必要があります。

重要

HADBサーバで使用する文字コードがShift-JISの場合（環境変数ADBLANGの指定値がSJISの場合），表記ゆれ補正検索は実行できません。そのため，表記ゆれ補正オプションにCORRECTIONRULEを指定することはできません。

表記ゆれ補正オプションの指定を省略した場合，CASESENSITIVEが仮定されます。

（例）表記ゆれ補正オプションの指定を省略した場合の例

Dictionary3,/home/adbmanager/dictionary3_synonym.txt,,詳細用語

■4列目

コメント：〜〈文字列〉((0〜1,024バイト))

同義語辞書に対するコメントを指定します。

同義語検索時に使用する同義語辞書がわからなくなってしまった場合，同義語辞書の一覧を表示して，使用する同義語辞書を確認します。その際，ここで指定したコメントから同義語辞書が特定できるように，同義語辞書の内容と関連があるコメントを指定するようにしてください。

メモ

同義語辞書の一覧を表示するには，システム表を検索します。詳細については，「11.19.4　同義語辞書の情報を確認する」の「(2)　すべての同義語辞書の情報を確認する」を参照してください。

同義語辞書の一覧には，同義語辞書名とここで指定したコメントが表示されます。

コメントの指定規則を次に示します。

制御文字（0x00〜0x1f，0x7f）は指定できません。

コメントを省略することもできます。

（例）コメントの指定を省略した場合の例

Dictionary2,/home/adbmanager/dictionary2_synonym.txt,CORRECTIONRULE,

(3)　辞書情報登録ファイルの指定規則

辞書情報登録ファイルには，複数の同義語辞書に関する情報を指定できます。詳細は，「(4)　留意事項」を参照してください。

登録できる同義語辞書の数は最大50個です。

1つの同義語辞書に関する情報を1行に記述します。

各行の終わりに改行を入力してください。また，辞書情報登録ファイルの最後の行にも改行を入力してください。改行コードは，X'0A'（LF），X'0D0A'（CRLF），またはX'00'のどれかにしてください。

改行だけの行がある場合，その行を読み飛ばして処理が実行されます。

環境変数ADBLANGに指定した文字コードで辞書情報登録ファイルを作成してください。

二重引用符（"）を囲み文字として指定することができます。コメントなど，指定する文字列中に「,」がある場合は，囲み文字を指定してください。

（例）

Dictionary3,/home/adbmanager/dictionary2_synonym.txt,CORRECTIONRULE,"一般用語,法律関連"

(4)　留意事項

辞書情報登録ファイルには，次に示すように複数の同義語辞書の辞書情報を指定できます。この場合，一度のadbsyndictコマンドの実行で，複数の同義語辞書を登録することができます。

（例）

Dictionary1,/home/adbmanager/dictionary2_synonym.txt,CORRECTIONRULE,一般用語↓
Dictionary2,/home/adbmanager/dictionary3_synonym.txt,CASESENSITIVE,詳細用語↓

（凡例）↓：改行

例えば，次のような運用をする場合は，上記のように複数の同義語辞書を指定してください。

Dictionary1の同義語を追加，変更，または削除する場合，Dictionary2の同義語も同様に追加，変更，または削除する必要がある場合

このような運用をしない場合は，1つの辞書情報登録ファイルには，1つの同義語辞書の辞書情報だけを指定することを推奨します。

11.20　ディクショナリ表およびシステム表の再編成

ここでは，ディクショナリ表およびシステム表の再編成について説明します。

ディクショナリ表の詳細については，「付録B　ディクショナリ表」を参照してください。

システム表の詳細については，「付録C　システム表」を参照してください。

11.20.1　ディクショナリ表およびシステム表を再編成する理由

HADBユーザが，実表に対してSQL文やコマンドを実行した場合，HADBサーバによって自動的にディクショナリ表（実表）およびシステム表（実表）も更新されることがあります。その際，ディクショナリ表（実表）およびシステム表（実表）に無効な行データが増加することがあります。無効となった行データは，ディスクから削除されません。

ディクショナリ表（実表）およびシステム表（実表）の行が削除されると，削除対象の行データは無効となります。

ディクショナリ表（実表）およびシステム表（実表）の行が更新されると，更新後の行データが新たな行として追加されます。更新前の行データは無効となります。

ディクショナリ表（実表）およびシステム表（実表）に無効な行データが増加し続けた場合，ディクショナリ表（実表）およびシステム表（実表）を格納するディスクの空き容量が不足し，最終的にディクショナリ表（実表）およびシステム表（実表）の更新が発生するような運用は実行できなくなります。例えば，バックグラウンドインポートによるデータインポートやチャンクのマージなどは実行できなくなります。

そのため，定期的にディクショナリ表（実表）およびシステム表（実表）を再編成して，無効な行データを削除する必要があります。ディクショナリ表（実表）およびシステム表（実表）の再編成は，adbreorgsystemdataコマンドで行います。

ディクショナリ表（実表）およびシステム表（実表）に無効な行データが増加するタイミングについては，「表11‒12　ディクショナリ表（実表）に無効な行データが増加するタイミング」および「表11‒13　システム表（実表）に無効な行データが増加するタイミング」を確認してください。

ディクショナリ表（実表）に無効な行データが増加するタイミングを，次の表に示します。

表11‒12　ディクショナリ表（実表）に無効な行データが増加するタイミング

項番

ディクショナリ表（実表）の種類

ディクショナリ表（実表）に無効な行データが増加する操作

1

SQL_TABLES

定義系SQLによる実表，外部表，ビュー表，またはインデクスの削除

CREATE TABLE文による表の定義※1

CREATE INDEX文によるインデクスの定義

ALTER TABLE文による表定義の変更

ALTER VIEW文によるビュー表の再作成

2

SQL_TABLE_PRIVILEGES

定義系SQLによる実表，外部表，またはビュー表の削除

ALTER TABLE文による表定義の変更

ALTER VIEW文によるビュー表の再作成

GRANT文による権限の付与

REVOKE文による権限の取り消し

3

SQL_VIEWS

定義系SQLによる実表※2，外部表※2，またはビュー表の削除

ALTER TABLE文による表定義の変更

ALTER VIEW文によるビュー表の再作成

REVOKE文による権限の取り消し

4

SQL_COLUMNS

定義系SQLによる実表，外部表，またはビュー表の削除

ALTER TABLE文による表定義の変更

ALTER VIEW文によるビュー表の再作成

5

SQL_DBAREAS

定義系SQLによる実表，またはインデクスの削除

CREATE TABLE文による表の定義

CREATE INDEX文によるインデクスの定義

adbmodareaコマンドによるデータ用DBエリアの削除，または拡張

6

SQL_DIV_TABLE

SQL_TABLE_CONSTRAINTS

SQL_KEY_COLUMN_USAGE

SQL_REFERENTIAL_CONSTRAINTS

定義系SQLによる実表の削除

ALTER TABLE文による表定義の変更

7

SQL_DATATYPE_DESCRIPTORS

定義系SQLによる外部表，またはビュー表の削除

8

SQL_INDEXES

SQL_DIV_INDEX

SQL_INDEX_COLINF

定義系SQLによるインデクスの削除

ALTER TABLE文による表定義の変更

9

SQL_VIEW_TABLE_USAGE

定義系SQLによるビュー表の削除

ALTER TABLE文による表定義の変更

ALTER VIEW文によるビュー表の再作成

10

SQL_VIEW_OBJECT

SQL_DEFINE_ENVIRONMENT

定義系SQLによるビュー表の削除

ALTER VIEW文によるビュー表の再作成

11

SQL_DEFINE_SOURCE

定義系SQLによるビュー表の削除

12

SQL_FOREIGN_SERVERS

定義系SQLによる外部サーバの削除

ALTER SERVER文による外部サーバの定義変更

13

SQL_SCHEMATA

定義系SQLによるスキーマの削除

14

SQL_USERS

定義系SQLによるHADBユーザの削除

ALTER USER文によるHADBユーザの情報変更

GRANT文による権限の付与

REVOKE文による権限の取り消し

15

SQL_AUDITS

DROP AUDIT文による監査対象定義の削除

注※1

主キーを参照する外部キーが増えた場合が対象です。

注※2

ビュー表が無効になる場合が対象です。

システム表（実表）に無効な行データが増加するタイミングを，次の表に示します。

表11‒13　システム表（実表）に無効な行データが増加するタイミング

項番

システム表（実表）の種類

システム表（実表）に無効な行データが増加する操作

1

STATUS_TABLES

STATUS_COLUMNS

STATUS_INDEXES

定義系SQLによる表やインデクスの削除※

adbgetcstコマンドによるコスト情報の収集や削除

ALTER TABLE文による表名の変更※

ALTER TABLE文による列名の変更※

ALTER TABLE文による列の削除※

2

STATUS_CHUNKS

定義系SQLによるマルチチャンク表の削除

ALTER TABLE文によるマルチチャンク表の表名変更

PURGE CHUNK文によるチャンクの削除

TRUNCATE TABLE文によるマルチチャンク表に格納されているデータの一括削除

作成モードによるマルチチャンク表へのデータインポート（adbimportコマンドに-dオプションを指定して実行したとき）

バックグラウンドインポートによるマルチチャンク表へのデータインポート（adbimportコマンドに-bオプションを指定して，かつ--status waitオプションを指定しないで実行したとき）

追加モードによるマルチチャンク表へのデータインポート，かつチャンクコメントの変更（adbimportコマンドに-mオプションを指定して実行したとき）

adbidxrebuildコマンドによるインデクスの再作成（バックグラウンドインポートによるマルチチャンク表へのデータインポートが中断したあとに実行したとき）

adbmergechunkコマンドによるチャンクのマージ

adbchgchunkcommentコマンドによるチャンクのコメントの設定，変更および削除

adbchgchunkstatusコマンドによるチャンクの状態変更

adbarchivechunkコマンドによるチャンクのアーカイブ

adbunarchivechunkコマンドよるチャンクのアンアーカイブ

3

STATUS_SYNONYM_DICTIONARIES

adbsyndictコマンドによる同義語辞書の登録，更新および削除

注※

処理対象の表やインデクスに対して，コスト情報を収集している場合が対象です。

11.20.2　ディクショナリ表およびシステム表を再編成するタイミング

無効な行データの増加によるディスクの空き容量の不足を防ぐために，adbreorgsystemdataコマンドを実行して，ディクショナリ表（実表）およびシステム表（実表）を再編成する必要があります。

ディクショナリ表（実表）およびシステム表（実表）を再編成するタイミングは，ディクショナリ用DBエリアファイルまたはシステム表用DBエリアファイルを，レギュラーファイルとブロックスペシャルファイルのどちらに作成したかによって異なります。

メモ

クラウドストレージ機能を使用している場合は，「■ブロックスペシャルファイルの場合」をお読みください。

■レギュラーファイルの場合

無効な行データが増加して，ディクショナリ表（実表）およびシステム表（実表）を格納するディスクの空き容量が不足しても，HADBサーバから警告メッセージは出力されません。

そのため，運用を開始する前に，次に示す手順でディクショナリ表（実表）およびシステム表（実表）を再編成するタイミングを検討してください。そして，運用を開始したあとに，検討したタイミングで，ディクショナリ表（実表）およびシステム表（実表）を再編成するようにしてください。

メモ

ブロックスペシャルファイルの場合は，再編成が必要なタイミングで，HADBサーバから警告メッセージが出力されます。そのため，ディクショナリ用DBエリアファイルおよびシステム表用DBエリアファイルは，ブロックスペシャルファイルに作成することを推奨します。レギュラーファイルからブロックスペシャルファイルに変更する方法は，「11.13.5　データ用DBエリアファイルの格納場所を変更する方法」の「(1)　データ用DBエリアファイルをレギュラーファイルからブロックスペシャルファイルに変更する」を参照してください。

手順

ディクショナリ表（実表）およびシステム表（実表）を再編成する頻度を決める

adbreorgsystemdataコマンドで，ディクショナリ表（実表）およびシステム表（実表）を再編成する頻度を決めてください。基本的には，半年に1回を目安としてください。

ディクショナリ用DBエリアおよびシステム表用DBエリアの容量を見積もる

手順1.で決めた再編成の頻度を踏まえて，ディクショナリ用DBエリアおよびシステム表用DBエリアの容量を見積もってください。見積もりを行う場合は，「5.11　ディクショナリ用DBエリアの容量見積もり」および「5.12　システム表用DBエリアの容量見積もり」を参照してください。

見積もり結果を基にデータベースを作成する

手順2.で求めたディクショナリ用DBエリアおよびシステム表用DBエリアの容量を基に，ディスクを準備して，データベースを作成してください。

定期的にディクショナリ表（実表）およびシステム表（実表）を再編成する

運用を開始したら，手順1.で決めた再編成の頻度に従って，adbreorgsystemdataコマンドを実行してください。

■ブロックスペシャルファイルの場合

無効な行データが増加して，ディクショナリ表（実表）およびシステム表（実表）を格納するディスクの空き容量が不足すると，HADBサーバから次の警告メッセージが出力されます。

KFAA61213-Wメッセージ

KFAA61214-Wメッセージ

警告メッセージが出力されたら，adbreorgsystemdataコマンドを実行して，ディクショナリ表（実表）およびシステム表（実表）を再編成してください。

なお，警告メッセージが出力されなくても，運用に合わせてディクショナリ表（実表）およびシステム表（実表）を再編成しても問題ありません。その場合は，半年に1回を目安に，adbreorgsystemdataコマンドを実行することを推奨します。

11.20.3　ディクショナリ表およびシステム表を再編成する方法

ディクショナリ表（実表）およびシステム表（実表）を再編成する場合は，adbreorgsystemdataコマンドを実行します。

adbreorgsystemdataコマンドについては，マニュアルHADB　コマンドリファレンスのadbreorgsystemdata（ディクショナリ表およびシステム表の再編成）を参照してください。

重要

ディクショナリ表（実表）およびシステム表（実表）の再編成処理中には，処理対象表を格納する各DBエリアに，「再編成前のデータ」と「再編成後のデータ」の2つのデータが一時的に存在します。

ディクショナリ表（実表）を再編成する場合，ディクショナリ表（実表）を格納するディクショナリ用DBエリアが該当します。

システム表（実表）を再編成する場合，システム表（実表）を格納するシステム表用DBエリアが該当します。

そのため，各DBエリアに対応するディスクに2つのデータを格納できるだけの空き容量がない場合は，ディクショナリ表（実表）またはシステム表（実表）を再編成できません。

■adbreorgsystemdataコマンドの実行例

この実行例では，システム表（実表）のSTATUS_CHUNKS表に対して，再編成を行います。また，adbreorgsystemdataコマンドがタイムアウトになるまでの時間として，300秒を指定します。

adbreorgsystemdata --timeout 300
                   -c table
                   -f /home/adbmanager/reorg_file/unldpath.txt
                   -n STATUS_CHUNKS

メモ

adbreorgsystemdataコマンドを実行する際，--timeoutオプションを指定することを推奨します。

adbreorgsystemdataコマンドを実行すると，通常は数十秒から数分程度で終了します。ただし，特定のSQL文やコマンドを実行している場合は，adbreorgsystemdataコマンドが待ち状態となります。そのため，adbreorgsystemdataコマンドの実行時間が長くなるおそれがあります。

adbreorgsystemdataコマンドでディクショナリ表（実表）の再編成を実行している間は，ほかのSQL文やコマンドは同時に実行できません。

また，adbreorgsystemdataコマンドでシステム表（実表）の再編成を実行している間は，adbimportコマンドやadbmergechunkコマンドなどは実行できません。adbreorgsystemdataコマンドの待ち状態については，「11.20.4　ディクショナリ表およびシステム表の再編成と排他制御」を参照してください。

adbreorgsystemdataコマンドの実行時間が長くなることで，システムの運用に支障が出る場合は，--timeoutオプションを指定してください。--timeoutオプションに指定した時間内でadbreorgsystemdataコマンドが終了しなかった場合は，再編成処理がキャンセルされます。

adbreorgsystemdataコマンドがキャンセルされた場合は，出力されたメッセージを確認したあとで，再度adbreorgsystemdataコマンドを実行してください。

11.20.4　ディクショナリ表およびシステム表の再編成と排他制御

ここでは，adbreorgsystemdataコマンドと排他制御の関係，およびadbreorgsystemdataコマンドの待ち状態について説明します。

(1)　adbreorgsystemdataコマンドと排他制御の関係

adbreorgsystemdataコマンドを実行すると，HADBサーバは「2.10.5　確保される排他資源と排他制御モード」に従って，排他資源を確保します。

ただし，adbreorgsystemdataコマンドを，ディクショナリ表（実表）またはシステム表（実表）のどちらの表に対して実行するかによって確保される排他資源が異なります。

ディクショナリ表（実表）に対してadbreorgsystemdataコマンドを実行すると，排他資源の「シングルコネクション」を占有モード（EX）で確保します。そのため，ほかのSQL文やコマンドは実行できません。

システム表（実表）に対してadbreorgsystemdataコマンドを実行すると，排他資源の「システム表用DBエリア」を占有モード（EX）で確保します。そのため，adbimportコマンドやadbmergechunkコマンドなどは実行できません。

また，次に示すSQL文やコマンドを実行している場合，システム表（実表）に対してadbreorgsystemdataコマンドは待ち状態になります（KFAA80257-Iメッセージが出力されたあとで，再編成の処理が中断します）。実行しているSQL文やコマンドが終了したあとで，システム表（実表）に対するadbreorgsystemdataコマンドの処理が再開されます。

■システム表（実表）に対するadbreorgsystemdataコマンドを待ち状態にするSQL文とコマンド

検索系SQL（システム表（実表），またはアーカイブマルチチャンク表※に実行する場合）

更新系SQL（アーカイブマルチチャンク表※に実行する場合）

adbexportコマンド（システム表（実表），またはアーカイブマルチチャンク表※に実行する場合）

--shared-lockオプションを指定したadbdbstatusコマンド（システム表用DBエリアに実行する場合）

--shared-lockオプションを指定したadbdbstatusコマンド（adbreorgsystemdataコマンドの処理対象であるシステム表（実表）に実行する場合）

--shared-lockオプションを指定したadbdbstatusコマンド（adbreorgsystemdataコマンドの処理対象であるシステム表（実表）のインデクスに実行する場合）

注※

adbreorgsystemdataコマンドを，システム表（実表）のSTATUS_CHUNKS表に実行するときが該当します。STATUS_CHUNKS表以外のシステム表（実表）に対してadbreorgsystemdataコマンドを実行するときは，アーカイブマルチチャンク表に対象のSQL文とコマンドを実行していても，adbreorgsystemdataコマンドは待ち状態にはなりません。

SQL文やコマンドの終了を待たないで，システム表（実表）に対するadbreorgsystemdataコマンドの待ち状態を解消したい場合は，「11.20.4　ディクショナリ表およびシステム表の再編成と排他制御」の「(2)　システム表に対するadbreorgsystemdataコマンドの待ち状態を解消する方法」を参照してください。

(2)　システム表に対するadbreorgsystemdataコマンドの待ち状態を解消する方法

待ち状態の原因となっているSQL文やコマンドの終了を待たないで，システム表（実表）に対するadbreorgsystemdataコマンドの待ち状態を解消したい場合は，対象のSQL文やコマンドを終了する必要があります。

システム表（実表）に対するadbreorgsystemdataコマンドが待ち状態の原因となっているSQL文やコマンドを終了したい場合は，次に示す手順を実施してください。

手順

adbls -d lockコマンドを実行する

次の条件に該当する項目「CID」を確認してください。

項目「RESOURCEID」に，adbreorgsystemdataコマンドの処理対象表の表IDが出力されている行

adbreorgsystemdataコマンドの処理対象表であるシステム表（実表）の表IDについては，「付録C.1　システム表の概要」の「(1)　システム表の一覧」を参照してください。

adbls -d cnctコマンドを実行する

次のどちらかの条件に該当する項目「CID」を確認してください。

項目「CLIENT_TYPE」にcommandが出力されている行，かつ項目「CONNECT_TIME」に出力されている時刻が，前回実施したシステム表（実表）に対するadbreorgsystemdataコマンドで出力されたKFAA80256-Iメッセージの出力時刻よりも前である行

項目「CLIENT_TYPE」にcommandが出力されていない行，かつ項目「SQL_ELAPSED_TIME」に出力されているマイクロ秒から求めたSQL文の経過時間が，前回実施したシステム表（実表）に対するadbreorgsystemdataコマンドで出力されたKFAA80256-Iメッセージの出力時刻よりも前である行

adbcancelコマンドを実行する

手順1.および手順2.の両方で確認した項目「CID」が，システム表（実表）に対するadbreorgsystemdataコマンドが待ち状態の原因となっているSQL文またはコマンドのコネクションIDです。adbcancelコマンドにコネクションIDを指定して実行すると，システム表（実表）に対するadbreorgsystemdataコマンドの待ち状態が解消されます。

各コマンドについては，マニュアルHADB　コマンドリファレンスを参照してください。

11.20.5　ディクショナリ表およびシステム表の状態や使用量を確認する方法

ディクショナリ表（実表）またはシステム表（実表）の状態，使用量および格納効率を確認する方法について説明します。

(1)　ディクショナリ表（実表）およびシステム表（実表）の状態や使用量を確認する

ディクショナリ表（実表）およびシステム表（実表）の状態や使用量を確認する場合は，adbdbstatusコマンドで「表のサマリ情報」を出力してください。

adbdbstatusコマンドについては，マニュアルHADB　コマンドリファレンスのadbdbstatus（データベースの状態解析）を参照してください。

実行するコマンドの例

ここでは，システム表（実表）のSTATUS_CHUNKS表について，サマリ情報を出力します。

adbdbstatus -d summary -c table -n "HADB"."STATUS_CHUNKS" -S M --shared-lock

コマンドを実行すると，標準出力にシステム表HADB.STATUS_CHUNKSのサマリ情報が出力されます。adbdbstatusコマンドによる出力結果の確認項目を次に示します。

再編成前のデータが残っているかどうかを確認する場合

Pending_delete_chunksの出力内容を確認してください。Pending_delete_chunksに出力されている値が1の場合，再編成前のデータ（削除仕掛中のチャンク）が残っています。

adbreorgsystemdataコマンドを再実行すると，再編成前のデータを削除できます。

ディクショナリ表（実表）およびシステム表（実表）の使用量を確認する場合

MB_Used_pagesの出力内容を確認してください。コマンドの実行例では，システム表用DBエリア内に格納されているシステム表（実表）のデータが使用している領域を，メガバイト単位で確認できます。また，ディクショナリ表（実表）についてサマリ情報を出力した場合は，ディクショナリ用DBエリア内に格納されているディクショナリ表（実表）のデータが使用している領域を，メガバイト単位で確認できます。

なお，--shared-lockオプションを指定した場合は，MB_Used_pagesの出力内容に，削除仕掛中のチャンクが使用している領域は含まれません。MB_Used_pagesの出力内容に，削除仕掛中のチャンクが使用している領域を含めたい場合は，--shared-lockオプションを指定しないでください。

(2)　ディクショナリ表（実表）およびシステム表（実表）の格納効率を確認する

ディクショナリ表（実表）およびシステム表（実表）の格納効率を確認する場合は，SQLトレース機能を使用する必要があります。

手順

SQLトレース情報が出力されるようにする

SQLトレース機能を使用して，次に示すSQLトレース情報が出力されるようにしてください。

アクセスパス情報

アクセスパスの統計情報

SQLトレース情報の出力については，「10.11.5　SQLトレース情報を出力するための準備」を参照してください。

メモ

次に示すサーバ定義のオペランドにYを指定すれば，アクセスパス情報およびアクセスパスの統計情報が出力されます。

adb_sql_trc_outオペランド

adb_sql_trc_accesspathオペランド

サーバ定義のオペランドについては，「7.2.6　SQL文に関するオペランド（set形式）」を参照してください。

また，HADBサーバを開始している場合は，adbchgsqltrcコマンドを使用してください。adbchgsqltrcコマンドについては，マニュアルHADB　コマンドリファレンスのadbchgsqltrc（SQLトレース情報の出力開始・停止）を参照してください。

SQL文でディクショナリ表またはシステム表の行数を確認する

格納効率を確認するディクショナリ表またはシステム表に対して，DBA権限を持つHADBユーザで，行数を出力するSQL文を実行してください。SQL文を実行して出力された行数が，対象表の行数となります。なお，SQL_AUDITS表については監査管理権限を持つHADBユーザで，SQL文を実行してください。

ディクショナリ表またはシステム表の対象行数を求めるSQL文を次に示します。

表11‒14　ディクショナリ表またはシステム表の対象行数を求めるSQL文

項番

DBエリア名

表名

実行するSQL文

1

ディクショナリ用DBエリア

SQL_TABLES

SELECT COUNT(TABLE_TYPE)
  FROM MASTER.SQL_TABLES

2

SQL_COLUMNS

SELECT COUNT(COLUMN_ID)
  FROM MASTER.SQL_COLUMNS

3

SQL_INDEXES

SELECT COUNT(TABLE_ID)
  FROM MASTER.SQL_INDEXES

4

SQL_DIV_TABLE

SELECT COUNT(TABLE_ID)
  FROM MASTER.SQL_DIV_TABLE

5

SQL_DIV_INDEX

SELECT COUNT(INDEX_ID)
  FROM MASTER.SQL_DIV_INDEX

6

SQL_DBAREAS

SELECT COUNT(DBAREA_TYPE)
  FROM MASTER.SQL_DBAREAS

7

SQL_SCHEMATA

SELECT COUNT(SCHEMA_DEFINER)
  FROM MASTER.SQL_SCHEMATA

8

SQL_VIEWS

SELECT COUNT(IS_UPDATABLE)
  FROM MASTER.SQL_VIEWS

9

SQL_VIEW_TABLE_USAGE

SELECT COUNT(TABLE_TYPE)
  FROM MASTER.SQL_VIEW_TABLE_USAGE

10

SQL_DEFINE_SOURCE

SELECT COUNT(SOURCE_TYPE)
  FROM MASTER.SQL_DEFINE_SOURCE

11

SQL_DEFINE_ENVIRONMENT

SQL_VIEW_OBJECT※

SELECT COUNT(DEFINE_VR)
  FROM MASTER.SQL_DEFINE_ENVIRONMENT

12

SQL_USERS

SELECT COUNT(USER_ID)
  FROM MASTER.SQL_USERS

13

SQL_TABLE_CONSTRAINTS

SELECT COUNT(CONSTRAINT_TYPE)
  FROM MASTER.SQL_TABLE_CONSTRAINTS

14

SQL_INDEX_COLINF

SELECT COUNT(INDEX_ID)
  FROM MASTER.SQL_INDEX_COLINF

15

SQL_KEY_COLUMN_USAGE

SELECT COUNT(COLUMN_ORDER)
  FROM MASTER.SQL_KEY_COLUMN_USAGE

16

SQL_REFERENTIAL_CONSTRAINTS

SELECT COUNT(IS_DISABLE)
  FROM MASTER.SQL_REFERENTIAL_CONSTRAINTS

17

SQL_TABLE_PRIVILEGES

SELECT COUNT(GRANTEE_TYPE)
  FROM MASTER.SQL_TABLE_PRIVILEGES

18

SQL_AUDITS

SELECT COUNT(OPERATION_TYPE)
  FROM MASTER.SQL_AUDITS

19

SQL_FOREIGN_SERVERS

SELECT COUNT(SERVER_OWNER)
  FROM MASTER.SQL_FOREIGN_SERVERS

20

SQL_DATATYPE_DESCRIPTORS

SELECT COUNT(TYPE_NAME)
  FROM MASTER.SQL_DATATYPE_DESCRIPTORS

21

システム表用DBエリア

STATUS_TABLES

SELECT COUNT(COLLECT_TIME)
  FROM MASTER.STATUS_TABLES

22

STATUS_COLUMNS

SELECT COUNT(DATA_TYPE_CODE)
  FROM MASTER.STATUS_COLUMNS

23

STATUS_INDEXES

SELECT COUNT(COLLECT_TIME)
  FROM MASTER.STATUS_INDEXES

24

STATUS_CHUNKS

SELECT COUNT(NVL(CREATE_TIME,CURRENT_TIMESTAMP))
  FROM MASTER.STATUS_CHUNKS

25

STATUS_SYNONYM_DICTIONARIES

SELECT COUNT(CREATE_TIME)
  FROM MASTER.STATUS_SYNONYM_DICTIONARIES

注※

SQL_VIEW_OBJECT表は検索できません。そのため，同じタイミングでディクショナリ表を更新するSQL_DEFINE_ENVIRONMENT表を検索して行数を確認してください。また，adbreorgsystemdataコマンドで再編成する場合は，両方の表を再編成するようにしてください。

無効な行データの行数を確認する

手順2.で実行したSQL文によって出力されたSQLトレース情報のアクセスパス情報から，ディクショナリ表またはシステム表の「無効な行データの行数」を確認してください。次の条件に該当するアクセスパス情報の「Data_deleted_rows_cnt」の値を確認してください。

スキーマ名が「HADB」である。

表名が「手順2.で実行したSQL文に該当するディクショナリ表またはシステム表」である。

条件に該当する「Data_deleted_rows_cnt」の値が，対象表にある無効な行データの行数となります。

ディクショナリ表（実表）またはシステム表（実表）の格納効率を求める

手順2.と手順3.で求めた値を基に，対象のディクショナリ表（実表）またはシステム表（実表）の格納効率を求めてください。計算式を次に示します。

計算式

ディクショナリ表（実表）およびシステム表（実表）の格納効率 ＝
                 手順2.の結果 ÷ (手順2.の結果 ＋ 手順3.の結果)

計算式で求めた値が0に近い場合は，対象のディクショナリ表（実表）またはシステム表（実表）の格納効率が悪いと判断できます。adbreorgsystemdataコマンドで，ディクショナリ表およびシステム表を再編成してください。

11.21　更新行のカラム化機能の運用（カラムストア表の検索性能の維持）

カラムストア表の検索性能を維持するための機能（更新行のカラム化機能）の使用方法について説明します。

11.21.1　更新行のカラム化機能とは

カラムストア表に対してINSERT文またはUPDATE文を実行すると，追加または更新されたデータはローストア形式でカラムストア表に格納されます。カラムストア表にローストア形式のデータが格納された場合，カラムストア表の特性を生かした検索（特定の列データの検索や，特定の列データに対する値の集計など）の性能が低下するおそれがあります。また，データの圧縮率も低下するおそれがあります。更新行のカラム化機能を使用すると，HADBが，カラムストア表に格納されたローストア形式のデータをカラムストア形式に自動的に変換します。これによって，カラムストア表の検索性能の低下，およびデータの圧縮率の低下を防ぐことができます。カラムストア表に対してINSERT文またはUPDATE文を実行することがある場合は，更新行のカラム化機能を使用してください。

更新行のカラム化機能の概要を次の図に示します。

図11‒48　更新行のカラム化機能の概要

メモ

更新行のカラム化機能を使用するには，adbcolumnizeコマンドを実行して更新行のカラム化機能を有効にする必要があります。デフォルトの設定では，更新行のカラム化機能は動作しません。詳細については，「11.21.2　準備作業」を参照してください。

■メンテナンス処理

カラムストア表に格納されたローストア形式のデータをカラムストア形式に変換する処理をメンテナンス処理といいます。メンテナンス処理は，解析処理，再配置処理，および再利用処理の3つの処理から構成されています。メンテナンス処理の詳細については，「11.21.7　メンテナンス処理の詳細」を参照してください。

重要

トランザクションおよびコマンドの処理性能に影響を及ぼさないように，トランザクションまたはコマンドが実行されている間は，メンテナンス処理は実行されません。また，メンテナンス処理の実行中にトランザクションまたはコマンドが開始された場合は，メンテナンス処理を中断し，トランザクションまたはコマンドの処理が完了したあとにメンテナンス処理を再開します。

なお，ここでいうコマンドとは，HADBサーバに接続するコマンドのことです。HADBサーバに接続するコマンドについては，マニュアルHADB　コマンドリファレンスのコマンドの一覧と共通規則のコマンドの一覧を参照してください。

トランザクションまたはコマンドが常に実行中であるようなシステムの場合は，メンテナンス処理を実行する時間を確保できないため，更新行のカラム化機能の使用を見合わせてください。

■表またはチャンクの再編成との関係

更新行のカラム化機能を使用すると，ローストア形式のデータがカラムストア形式に変換されますが，次に示す無効となった行データは削除されません。

UPDATE文によって更新された更新前の行データ

DELETE文によって削除された行データ

無効となった行データを削除するには，表またはチャンクの再編成を実行する必要があります。表またはチャンクの再編成を実行すると，無効となった行データが格納されていたページを再利用できます。

また，一度に大量のデータをINSERT文またはUPDATE文で追加・更新した場合，大量のローデータ用セグメントが作成されます。そのため，更新行のカラム化機能を使用しても，検索性能の低下やデータベース容量の増加を防止できません。したがって，一度に大量のデータをINSERT文またはUPDATE文で追加・更新した場合は，そのあとに表またはチャンクの再編成の実行を検討してください。

メモ

更新行のカラム化機能と，表またはチャンクの再編成を組み合わせた運用を推奨します。運用例については，「11.5.23　バックグラウンドインポートとチャンクを意識した運用例1（定期的にデータの追加と削除を繰り返す運用）」を参照してください。

■制限事項

B-treeインデクスが定義されているカラムストア表は，更新行のカラム化機能の適用対象外となります。

11.21.2　準備作業

更新行のカラム化機能を使用する際の準備作業について説明します。

(1)　機能の適用対象となるカラムストア表を確認する

B-treeインデクスが定義されているカラムストア表は，更新行のカラム化機能の適用対象外となります。そのため，更新行のカラム化機能を有効にする前に，「付録B.24　ディクショナリ表の検索」の「(39)　更新行のカラム化機能の対象となる表を調べる方法（B-treeインデクスを定義していないカラムストア表を調べる方法）」を参照して，更新行のカラム化機能の適用対象となるカラムストア表を確認してください。

更新行のカラム化機能の適用対象となるカラムストア表に対して，INSERT文またはUPDATE文を実行することがある場合は，更新行のカラム化機能を使用します。

(2)　HADBサーバが使用するメモリ所要量を見積もる

更新行のカラム化機能を使用する場合，次の個所を参照してHADBサーバが使用するメモリ所要量を再見積もりしてください。

「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」

「6.3.4　通常運用時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（通常運用時）」

(3)　監視対象のメッセージを追加する

メンテナンス処理が，何らかの要因によって停止していないかを，次のメッセージで確認できます。次のメッセージを監視対象に追加してください。

KFAA41220-W

更新行のカラム化機能で使用するファイルの入出力制御の開始処理に失敗した場合に出力されるメッセージです。

KFAA51277-I

メンテナンス処理が24時間動作していない場合に出力されるメッセージです。

KFAA51280-W

メンテナンス処理でエラーが発生した場合に出力されるメッセージです。

■メッセージの出力例

更新行のカラム化機能に関するエラーメッセージがメッセージログファイルに出力された場合，エラーの原因を示すメッセージと，更新行のカラム化機能でエラーが発生したことを示すメッセージを一緒に出力します。

（例）

2019/06/24 15:13:28 … 00000000009999000001 KFAA40007-E メッセージテキスト    ...1
2019/06/24 15:13:28 … 00000000009999000001 KFAA51280-W メッセージテキスト    ...2

［説明］

エラーの原因を示すメッセージです。メモリ不足が発生したことを示すメッセージです。このメッセージで説明されている対処方法に従います。

メンテナンス処理でエラーが発生したことを示すメッセージです。

更新行のカラム化機能に関連するメッセージのコネクション通番には，9999000001（上記の例の下線部分）が出力されます。

(4)　更新行のカラム化機能を有効にする

adbcolumnizeコマンドを実行して，更新行のカラム化機能を有効にしてください。更新行のカラム化機能を有効にすると，メンテナンス処理が実行されます。

コマンドの実行例

adbcolumnize --start

更新行のカラム化機能が有効になったことを「11.21.3　更新行のカラム化機能の状態（有効または無効）を確認する方法」で説明している方法で確認してください。

メモ

更新行のカラム化機能の有効または無効の状態は，HADBサーバを再起動しても引き継がれます。

マルチノード機能のプライマリノードの切り替え，コールドスタンバイ構成の系切り替えが発生した場合でも，更新行のカラム化機能の有効または無効の状態は引き継がれます。

11.21.3　更新行のカラム化機能の状態（有効または無効）を確認する方法

更新行のカラム化機能の状態（有効または無効）を確認したい場合は，adbcolumnizeコマンドを実行してください。

コマンドの実行例

adbcolumnize -d

コマンドの実行結果の例

STATUS
ACTIVE

STATUS欄に更新行のカラム化機能の状態が表示されます。ACTIVEが表示された場合は，更新行のカラム化機能は有効な状態です。INACTIVEが表示された場合は，更新行のカラム化機能は無効な状態です。

11.21.4　更新行のカラム化機能を一時的に無効にする場合

次に示す場合は，更新行のカラム化機能を一時的に無効にしてください。

バックアップを取得する場合

更新行のカラム化機能によってローストア形式のデータがカラムストア形式に変換される場合，データベースの更新処理が発生します。バックアップを取得する際に，データベースの更新を抑止したい場合は，更新行のカラム化機能を一時的に無効にしてください。

SQL文やコマンドの実行時間にまったく影響を与えたくない場合

更新行のカラム化機能を有効にしている場合，SQL文やコマンドの実行時間に多少の影響（0.5秒程度）を与える可能性があります。影響をまったく与えたくない場合は，更新行のカラム化機能を一時的に無効にしてください。

例えば，次のような処理を実行する場合に，更新行のカラム化機能を無効にするかどうかを検討してください。

短時間（数秒～数分）で完了するSQL文またはコマンドを実行する場合（実行時間への影響が大きいと判断した場合）

実行時間に影響を与えてはいけないSQL文またはコマンドを実行する場合

バッチ処理など，決められた時間に完了する必要がある処理を実行する場合

メモ

ここでいうコマンドとは，「HADBサーバに接続するコマンド」のことです。

実行時間の影響が0.5秒程度というのは目安です。処理を実行する際の条件によって異なります。メンテナンス処理の実行中に，SQL文またはコマンドが実行された場合，メンテナンス処理の中断処理が発生し，その中断処理が完了するまでSQL文またはコマンドの実行が待たされます。その時間が0.5秒程度掛かります。

DBエリアにフラッシュストレージではなくハードディスクを使用している場合，またはブロックスペシャルファイルではなくレギュラーファイルを使用している場合は，メンテナンス処理の中断処理に数秒以上掛かる可能性があります。

更新行のカラム化機能を無効にする場合は，adbcolumnizeコマンドを実行してください。

コマンドの実行例

adbcolumnize --stop

更新行のカラム化機能が無効になったことを「11.21.3　更新行のカラム化機能の状態（有効または無効）を確認する方法」で説明している方法で確認してください。

11.21.5　更新行のカラム化機能に関するエラーが発生した場合の対処方法

更新行のカラム化機能に関するエラーが発生した場合，次のどちらかのメッセージが出力されます。それぞれの対処方法について説明します。

KFAA51280-W

メンテナンス処理中にエラーが発生した場合，このメッセージが出力されます。

KFAA41220-W

更新行のカラム化機能で使用するファイルの入出力制御の開始処理でエラーが発生した場合，このメッセージが出力されます。

(1)　メンテナンス処理中にエラーが発生した場合（KFAA51280-W）

メンテナンス処理中にエラーが発生した場合，KFAA51280-Wメッセージがメッセージログファイルに出力されます。この場合，KFAA51280-Wメッセージの対策欄を参照して，エラーの対処をしてください。

エラーの対処をしないで，更新行のカラム化機能を有効な状態のままにしておくと，メンテナンス処理が6時間ごとに再実行されて同じエラーが発生します（KFAA51280-Wメッセージが再度出力されます）。

(2)　更新行のカラム化機能で使用するファイルの入出力制御の開始処理でエラーが発生した場合（KFAA41220-W）

HADBサーバの開始時に，更新行のカラム化機能で使用するファイルの入出力制御の開始処理が実行されます。更新行のカラム化機能で使用するファイルの入出力制御の開始処理でエラーが発生した場合，KFAA41220-Wメッセージがメッセージログファイルに出力されます。この場合，KFAA41220-Wメッセージの対策欄の説明に従って，エラーの対処をしてください。エラーの対処をしないで，更新行のカラム化機能を有効な状態のままにしておくと，メンテナンス処理が6時間ごとに再実行されます。このとき，更新行のカラム化機能で使用するファイルの入出力制御の開始処理が実行されて，同じエラーが発生します（KFAA41220-Wメッセージが再度出力されます）。

11.21.6　メンテナンス処理が実行されない場合の対処方法

次のどれかの条件に該当する場合は，メンテナンス処理が実行されません。

トランザクションまたはHADBサーバに接続するコマンドが実行中の場合

HADBサーバの稼働モードが静止モードの場合

ノードの復帰処理中の場合（マルチノード機能使用時）

メンテナンス処理が24時間実行されなかった場合，KFAA51277-Iメッセージが出力されます。そのあとも，メンテナンス処理が実行されない状況が続くと，KFAA51277-Iメッセージが24時間ごとに出力されます。

上記の条件ごとに対処方法を説明します。

(1)　トランザクションまたはHADBサーバに接続するコマンドが実行中の場合

トランザクションまたはHADBサーバに接続するコマンドが実行中の場合，トランザクションおよびコマンドの処理性能に影響を及ぼさないように，メンテナンス処理は実行されません。また，メンテナンス処理の実行中にトランザクションまたはコマンドが開始された場合は，メンテナンス処理が中断されます。

メンテナンス処理が長時間実行されない場合，または長時間実行されないと予想される場合は，定期的にカラムストア表の再編成要否を確認してください。再編成が必要な場合は，再編成を実行してください。カラムストア表の再編成要否の確認方法については，次の個所を参照してください。

「11.1.12　シングルチャンク表の再編成が必要かどうかを確認する方法」の「(3)　シングルチャンク表がカラムストア表の場合」

「11.5.13　マルチチャンク表の再編成が必要かどうかを確認する方法」の「(2)　再編成が必要かどうかを確認する方法」の「(b)　マルチチャンク表がカラムストア表の場合」

(2)　HADBサーバの稼働モードが静止モードの場合

HADBサーバの稼働モードが静止モードの場合，データベースの更新が抑止されるため，メンテナンス処理が実行されません。HADBサーバの稼働モードを静止モードからほかのモードに変更すると，メンテナンス処理が実行されます。

稼働モードの確認方法，および変更方法については，「10.2.3　HADBサーバの稼働モード」を参照してください。

(3)　ノードの復帰処理中の場合（マルチノード機能使用時）

ノードの復帰処理中の間は，メンテナンス処理が実行されません。ノードの復帰処理が完了すると，メンテナンス処理が実行されます。ノードの復帰については，「18.16.3　マルチノード構成へのノードの復帰」を参照してください。

11.21.7　メンテナンス処理の詳細

更新行のカラム化機能のメンテナンス処理について説明します。

(1)　メンテナンス処理とは

メンテナンス処理は，次の3つの処理で構成されています。

解析処理

カラムストア表内のローストア形式のデータの格納状況を解析します。HADBによって再配置処理が必要と判断された場合，再配置処理と再利用処理が実行されます。

解析処理の開始タイミングは，HADBによって制御されています。

再配置処理

カラムストア表内のローストア形式のデータをカラムストア形式に変換します。変換したデータをカラムストア形式のデータを格納するセグメント（カラムデータ用セグメント）に格納します。

再利用処理

カラムストア形式に変換したローストア形式のデータを削除し，ローストア形式のデータを格納していたページを再利用可能なページにします。再利用可能となったページは，INSERT文またはUPDATE文によって追加または更新されたデータをローストア形式で格納する際に再利用されます

メモ

更新不可状態のカラムストア表は，メンテナンス処理の対象になりません。

レンジインデクスが未完状態のカラムストア表は，メンテナンス処理の対象になりません。

(2)　メンテナンス処理が中断されるケース

次の場合，メンテナンス処理が中断されます。

トランザクションが開始された場合，またはHADBサーバに接続するコマンドが実行された場合

トランザクションが開始された場合，またはHADBサーバに接続するコマンドが実行された場合，実行中のメンテナンス処理が中断されます。トランザクションまたはコマンドの終了後に，メンテナンス処理が再開されます。

HADBサーバとのコネクションが確立された場合

HADBサーバとのコネクションを確立する場合，ユーザ認証と権限チェックのためにトランザクションが一時的に開始されます。そのため，実行中のメンテナンス処理が中断されます。HADBサーバとのコネクションが確立すると，このトランザクションは終了します。トランザクションの終了後，メンテナンス処理が再開されます。

adbcolumnize --stopコマンドを実行した場合

adbcolumnize --stopコマンドを実行して更新行のカラム化機能を無効にした場合，実行中のメンテナンス処理が中断されます。adbcolumnize --startコマンドを実行して更新行のカラム化機能を有効にすると，メンテナンス処理が再開されます。

adbstopコマンドを実行した場合

adbstopコマンドを実行してHADBサーバを終了した場合，実行中のメンテナンス処理が中断されます。adbstartコマンドを実行してHADBサーバを開始すると，メンテナンス処理が再開されます。

adbchgsrvmode --quiescenceコマンドを実行した場合

adbchgsrvmode --quiescenceコマンドを実行して，HADBサーバの稼働モードを静止モードに変更した場合，実行中のメンテナンス処理が中断されます。adbchgsrvmodeコマンドを実行して，HADBサーバの稼働モードを静止モード以外に変更すると，メンテナンス処理が再開されます。

ノードの復帰処理が開始された場合（マルチノード機能の使用時）

ノードの復帰処理が開始された場合，実行中のメンテナンス処理が中断されます。ノードの復帰処理の完了後に，メンテナンス処理が再開されます。

12　監査証跡機能の運用

この章では，監査証跡機能の運用について説明します。

12.1　監査証跡機能を使用する際に検討する項目

ここでは，監査証跡機能を使用する際に，事前に検討が必要な項目について説明します。

12.1.1　監査対象定義の検討（監査証跡を出力するイベントの選定）

監査証跡機能では，監査対象イベントごとに監査証跡を出力できます。しかし，すべてのイベントで監査証跡を出力した場合，監査証跡の出力量が膨大になり，監査の効率が低下するおそれがあります。そのため，監査の目的に応じて必要となる監査証跡を検討し，監査の対象とするイベントを決めてください。監査の目的と監査の対象とするイベントの例を次の表に示します。

表12‒1　監査の目的と監査の対象とするイベントの例

監査の目的

監査の対象とするイベントの例

監査対象イベントの種類

HADBサーバの設定が不正に変更されていないことを監査で確認する場合

HADBサーバの開始，終了

必須監査イベント

監査証跡機能に対して不正な操作が行われていないことを監査で確認する場合

監査証跡機能に対する操作

必須監査イベント

HADBサーバに対する不審な接続がないことを監査で確認する場合

HADBサーバへの接続

選択監査イベント

データの改ざんや，持ち出しがないことを監査で確認する場合

表の作成，検索，更新，および削除

選択監査イベント

セキュリティポリシーに従った運用が行われていることを監査で確認する場合（HADBユーザのパスワードが定期的に変更されているか，HADB暗号鍵が定期的に変更されているかなど）

HADBユーザのパスワードの変更

選択監査イベント

HADB暗号鍵の更新

必須監査イベント

必須監査イベントとは，監査証跡機能が有効な場合に監査証跡が必ず出力されるイベントです。選択監査イベントとは，監査証跡を出力するかどうかを選択できるイベントです。選択監査イベントで監査証跡を出力したい場合は，CREATE AUDIT文で監査対象を定義する必要があります。

監査の目的に応じて，必須監査イベントだけを監査対象とするか，選択監査イベントも監査対象に含めるかを決めてください。

監査対象イベントの一覧（必須監査イベントの一覧および選択監査イベントの一覧）については，「12.9.1　監査対象イベントの一覧と出力項目」を参照してください。

12.1.2　監査証跡機能で使用するディスクの設計

監査証跡機能で使用するディスク（記憶領域）の設計について説明します。

監査証跡機能で使用するディレクトリを次に示します。

監査証跡の出力先ディレクトリ

監査証跡の保存先ディレクトリ

監査証跡の長期保存先ディレクトリ

各ディレクトリを作成するディスク（記憶領域）は，それぞれ専用に用意することを推奨します。すべてのディレクトリを1つのディスク（記憶領域）に作成した場合，ディスク（記憶領域）に対するI/Oが集中するため，HADBサーバの処理性能が低下するおそれがあります。

また，監査証跡を参照する際，監査証跡ファイルに対する書き込みは発生しません。そのため，次に示す2つのディレクトリは，ライトワンス型のディスク（記憶領域）に作成することを推奨します。ライトワンス型のディスク（記憶領域）に作成することで，監査証跡ファイルに対する改ざんを防止する効果が期待できます。

監査証跡の保存先ディレクトリ

監査証跡の長期保存先ディレクトリ

上記のディレクトリを作成するディスク（記憶領域）は，監査証跡の参照頻度や保存期間によって，使い分けることを推奨します。例えば，監査証跡の保存先ディレクトリに存在する監査証跡ファイルは，頻繁に参照することが考えられます。そのため，高速なアクセスを実現できるフラッシュドライブを使用することを検討してください。また，監査証跡の長期保存先ディレクトリに存在する監査証跡ファイルは，参照頻度が低く，かつ長期間保存しておくことが考えられるため，フラッシュドライブよりもハードディスクや磁気テープを使用することを検討してください。

監査証跡機能で使用するディスク（記憶領域）の構成例を，次の図に示します。この構成例では，監査証跡の保存先ディレクトリで，監査証跡ファイルを1年間保存します。その後，監査証跡の長期保存先ディレクトリで，監査証跡ファイルを9年間保存します。

図12‒1　監査証跡機能で使用するディスク（記憶領域）の構成例

監査証跡機能で使用するディスク（記憶領域）に必要な容量の求め方については，次の個所を参照してください。

「12.1.3　監査証跡のデータ容量の見積もり」

「12.1.4　監査証跡ファイルの圧縮率の見積もり」

「12.1.5　監査証跡機能で使用するディレクトリの容量見積もり」

なお，監査証跡の出力先ディレクトリを作成するディスクには，セクターサイズが512バイトまたは4,096バイトのディスクが使用できます。

12.1.3　監査証跡のデータ容量の見積もり

監査証跡機能に必要なディスク容量を見積もるためには，HADBサーバが出力する監査証跡のデータ容量を求める必要があります。

次のどちらかの方法で，監査証跡のデータ容量を求めてください。

監査証跡機能を適用した小規模のテスト環境で，出力される監査証跡のデータ容量を確認する

想定されるHADBサーバの運用，およびデータベースへの操作を基に監査証跡のデータ容量を見積もる

監査証跡のデータ容量は，HADBサーバの環境，実行するSQL文やコマンドなどによって大きく異なります。そのため，1.の方法で求めることを推奨します。テスト環境を準備できない場合は，2.の方法で求めてください。2.の方法で求める場合は，次の表に従って監査証跡のデータ容量を求めてください。

表12‒2　監査証跡の概算データ容量

項番

監査対象イベントの例

監査証跡の概算データ容量（単位：キロバイト）

1

HADBサーバの開始

4

2

HADBサーバの終了

1

3

HADBサーバへの接続※

1

4

HADBサーバからの切り離し※

1

5

SQL文の実行

2＋SQL文のサイズ

6

コマンドの実行

1

注※

コマンドの実行時にも発生します。

2.の方法で監査証跡のデータ容量を求める例を，次に示します。

■2.の方法で監査証跡のデータ容量を求める例

次の条件で，HADBサーバを運用することを想定します。

HADBサーバを1日1回再起動する（HADBサーバの終了とHADBサーバの開始を行う）

1コネクション当たり2キロバイトのSQL文を2回実行する（その処理が毎秒1コネクション発生する）

必須監査イベントと選択監査イベントの両方について，監査証跡を出力する

この条件の場合，1日（86,400秒）当たりの監査証跡の概算データ容量を次に示します。

計算式

監査証跡の概算データ容量 =
    4キロバイト＋1キロバイト＋(1キロバイト＋(2キロバイト＋2キロバイト)×2＋1キロバイト)×86,400秒
  = 864,005キロバイト/日

上記の条件で出力される監査証跡の概算データ容量は，1日当たり864,005キロバイト（約850メガバイト）となります。

12.1.4　監査証跡ファイルの圧縮率の見積もり

監査証跡ファイルは，OSのgzipコマンドで圧縮できます。そのため，次に示すディレクトリで監査証跡ファイルを保存する場合，圧縮することでファイルサイズを削減できます。

監査証跡の保存先ディレクトリ

監査証跡の長期保存先ディレクトリ

監査証跡ファイルをgzipコマンドで圧縮する場合，監査証跡機能に必要なディスク容量を見積もるために，監査証跡ファイルの圧縮率を求める必要があります。

次のどちらかの方法で，監査証跡ファイルの圧縮率を求めてください。

監査証跡機能を適用した小規模のテスト環境で作成された監査証跡ファイルをgzipコマンドで圧縮して，圧縮率を確認する

圧縮率を0.25と仮定する（圧縮前の監査証跡ファイルが，1/4のファイルサイズに圧縮されると仮定する）

監査証跡ファイルの圧縮率は，HADBサーバの環境，実行するSQL文やコマンドなどによって大きく異なります。そのため，1.の方法で求めることを推奨します。テスト環境を準備できない場合は，2.の方法で求めてください。

12.1.5　監査証跡機能で使用するディレクトリの容量見積もり

「12.1.3　監査証跡のデータ容量の見積もり」および「12.1.4　監査証跡ファイルの圧縮率の見積もり」の見積もり結果を基に，監査証跡機能で使用するディレクトリの容量を見積もってください。そして，監査証跡機能で使用するディレクトリを作成するディスクを用意してください。容量の見積もりが必要なディレクトリは，次の3つです。

監査証跡の出力先ディレクトリ

監査証跡の保存先ディレクトリ

監査証跡の長期保存先ディレクトリ

出力される監査証跡のデータ容量や監査証跡ファイルの圧縮率は，HADBサーバの環境，実行するSQL文やコマンドなどによって大きく異なります。そのため，見積もり結果よりも余裕を持って，ディスクの容量を準備してください。また，大容量のディスクを準備した場合でも，監査証跡機能の使用中は，ディスクの空き容量を必ず監視してください。

特に，監査証跡の出力先ディレクトリを作成するディスクが満杯にならないように，注意してください。監査証跡の出力先ディレクトリを作成するディスクが満杯になった場合，「12.1.7　監査証跡ファイルへの書き込みに失敗した場合の処理方式の検討」の選択に従って，HADBサーバは動作します。そのため，通常運用時だけでなく突発的な作業も考慮して，余裕を持ってディスクの容量を確保してください。

監査証跡機能で使用するディレクトリ容量の見積もり例を，次の表に示します。

■見積もり例の条件

監査証跡ファイルに出力される監査証跡のデータ容量は，1日当たり864,005キロバイト（約850メガバイト）とする

監査証跡の出力先ディレクトリにある監査証跡ファイルを，1日1回の頻度で監査証跡の保存先ディレクトリに移動させる

監査証跡ファイルは，合計で10年間保存する

監査証跡の保存先ディレクトリで，監査証跡ファイルを1年間保存します。

その後，監査証跡の長期保存先ディレクトリで，監査証跡ファイルを9年間保存します。

監査証跡の長期保存先ディレクトリで保存する監査証跡ファイルは，OSのgzipコマンドで圧縮する

このときの監査証跡ファイルの圧縮率は0.25とします。

各ディレクトリ容量は，最低限必要な容量（必須容量）と余裕を持たせた容量（予備容量）を合計して求めることとする

表12‒3　監査証跡機能で使用するディレクトリ容量の見積もり例

項番

ディレクトリの種類

監査証跡ファイルの格納期間

必須容量（単位：ギガバイト）

予備容量（単位：ギガバイト）

合計容量（単位：ギガバイト）

1

監査証跡の出力先ディレクトリ

1日

0.9

1.8（2日分）

2.7

2

監査証跡の保存先ディレクトリ

1年（365日）

329

54（2か月分）

383

3

監査証跡の長期保存先ディレクトリ

9年（3,285日）

740※1，※2

83（1年分）※1

823

注※1

圧縮後の監査証跡ファイルの総容量です。

注※2

圧縮前の監査証跡ファイルの総容量は，約2,957ギガバイトです。

この見積もり例の場合，各ディレクトリを作成するために，上記の表で見積もった「合計容量」以上の容量があるディスクをそれぞれ用意する必要があります。

12.1.6　監査人の選定

監査証跡機能を使用する場合は，次の担当者（監査人）が必要になります。

監査証跡機能の管理担当者

監査証跡機能の運用を行う担当者です。監査証跡機能の運用時に使用するadbaudittrailコマンドを実行するため，HADB管理グループに所属するOSユーザのOSアカウントが必要になります。

また，監査管理権限を持っているHADBユーザが必要になります。

監査担当者

監査証跡を参照して，データベースの利用状況の監査を行う担当者です。

監査証跡は，サーバマシン以外のマシンから参照できるため，監査担当者はサーバマシンのOSアカウントを必ず持つ必要はありません。サーバマシン上で監査証跡を参照する場合に限り，HADB管理グループに所属するOSユーザのOSアカウントが必要になります。

また，監査参照権限を持っているHADBユーザが必要になります。

なお，監査担当者の操作に対しても監査を行う場合は，監査担当者を複数人用意して，監査担当者の操作については相互に監査するようにしてください。

メモ

外部の監査担当者による外部監査を行う場合は，外部の監査担当者には，監査参照権限を持っているHADBユーザを用意することを推奨します。

監査証跡機能の管理担当者と監査担当者を1人で兼ねることもできますが，それぞれの担当者を選定することを推奨します。

重要

データベースの管理担当者（DBA権限を持っているHADBユーザ）とは別に，監査人を選定してください。

監査人は，監査に関する業務だけを行うことを推奨します。監査に関する業務で使用するHADBユーザは，ほかの業務で使用するHADBユーザとは兼ねないで，監査に関する業務だけで使用するHADBユーザとして作成することを推奨します。

監査証跡機能を使用する場合のユーザ構成例を次の図に示します。

図12‒2　監査証跡機能を使用する場合のユーザ構成例

［説明］

この例の場合，監査の担当部署に所属する監査証跡機能の管理担当者は，監査証跡機能の運用時に使用するOSユーザとHADBユーザ（ADBAUDITADMIN）を専用で持っています。

監査の担当部署に所属する監査担当者は，監査時に使用するOSユーザとHADBユーザ（ADBAUDITVIEWER）を共用しています。

外部の監査担当者の操作は，監査証跡の参照だけに限定します。そのため，サーバマシンのOSアカウントは付与しないで，サーバマシン以外のマシンから監査証跡を参照するようにします。また，外部の監査担当者だけが使用する，監査参照権限を持っているHADBユーザ（ADBOUTSIDEAUDITVIEWER）を作成します。

12.1.7　監査証跡ファイルへの書き込みに失敗した場合の処理方式の検討

次に示す原因で，監査証跡を監査証跡ファイルに書き込めない場合，HADBサーバを停止するかどうかを検討する必要があります。

監査証跡の出力先ディレクトリを作成したディスクが満杯になったとき

監査証跡の出力先ディレクトリを作成したディスクで障害が発生したとき

監査証跡ファイルへの書き込みに失敗した場合の処理方式として，次のどちらかを選択してください。選択した内容を，adbaudittrail --startコマンドの--write-errorオプションに指定してください。

■HADBサーバの停止

監査証跡ファイルに監査証跡を書き込めない場合，HADBサーバを停止します。このときのHADBサーバの終了モードは，異常終了となります。

HADBサーバの動作継続よりも，HADBユーザが行った操作を監査証跡として残すことを優先したい場合は，こちらを選択してください。監査証跡の取得漏れを最小限にできます。

HADBサーバを停止する場合は，--write-errorオプションにDOWNを指定してください。または，--write-errorオプションを省略してください。

■HADBサーバの動作継続

監査証跡ファイルに監査証跡を書き込めない場合でも，HADBサーバを停止しません。監査証跡ファイルに書き込めなかった監査証跡は破棄されますが，HADBサーバは動作を継続します。

HADBユーザが行った操作を監査証跡として残すことよりも，HADBサーバの動作継続を優先したい場合は，こちらを選択してください。

HADBサーバの動作を継続する場合は，--write-errorオプションにFAILSOFTを指定してください。なお，FAILSOFTを指定した場合，監査証跡ファイルに監査証跡を書き込めない原因の対処が完了すると，次回の監査証跡の書き込みタイミングから，監査証跡ファイルへの出力が自動的に再開されます。

監査証跡ファイルへの出力が再開されたことを確認したい場合，次のどちらかの方法で確認してください。

次回の監査証跡の書き込みタイミングまで待ってから，adbaudittrail -dコマンドを実行する

adbaudittrail --swapコマンドで監査証跡の書き込みを発生させてから，adbaudittrail -dコマンドを実行する

adbaudittrail -dコマンドを実行したら，auditの出力内容にACTIVEが表示されていることを確認してください。ACTIVEの場合，監査証跡ファイルへの出力が再開されています。

メモ

adbaudittrailコマンドについては，マニュアルHADB　コマンドリファレンスのadbaudittrail（監査証跡機能の管理）を参照してください。

12.2　監査証跡機能の環境設定

ここでは，監査証跡機能の環境設定を行う方法について説明します。次の図に示す手順に従って，監査証跡機能の環境設定を行います。

図12‒3　監査証跡機能の環境設定手順

上記の各手順を次項以降で順次説明します。

12.2.1　HADBサーバの正常終了

監査証跡機能の環境設定は，HADBサーバが正常終了している状態で実施する必要があります。

HADBサーバを正常終了するために，HADB管理者はadbstopコマンドを実行してください。

すでに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コマンドで正常終了してください。

12.2.2　監査証跡機能で使用するディレクトリの準備

監査証跡機能で使用するディレクトリを準備します。

HADB管理者は，「12.1.2　監査証跡機能で使用するディスクの設計」～「12.1.5　監査証跡機能で使用するディレクトリの容量見積もり」の検討結果に従って，次に示す監査証跡機能で使用するディレクトリを準備してください。

監査証跡の出力先ディレクトリ

監査証跡の保存先ディレクトリ

監査証跡の長期保存先ディレクトリ

HADB管理者は，監査証跡機能で使用するディレクトリを，次の手順で準備してください。各手順の詳細は，OSのマニュアルを参照してください。

手順

監査証跡で使用するディレクトリを作成するディスクを用意する

監査証跡で使用するディレクトリの容量を見積もってください。見積もり結果以上の容量があるディスクを用意してください。

ファイルシステムを構築する

手順1.で用意したディスク上に，ファイルシステムを構築してください。

マウント用のディレクトリを作成する

手順2.で構築したファイルシステムをマウントするディレクトリを作成してください。そして，マウントしてください。

監査証跡で使用するディレクトリを作成する

監査証跡で使用するディレクトリを，各ディレクトリ用に構築したファイルシステム上に作成してください。

監査証跡で使用するディレクトリにパーミッションを設定する

監査証跡で使用するディレクトリには，HADB管理者に対して書き込み権限，読み取り権限，および実行権限を設定してください。

12.2.3　監査証跡機能で使用するサーバ定義の指定

監査証跡機能で使用するサーバ定義の指定について説明します。

監査証跡機能を使用する場合，HADB管理者は，次に示すオペランドをサーバ定義に指定する必要があります。サーバ定義の指定方法については，「8.5　サーバ定義の作成および変更方法」を参照してください。

■監査証跡機能に関するオペランド

各オペランドの詳細は，「7.2.10　監査証跡機能に関するオペランド（set形式）」を参照してください。

adb_audit_log_pathオペランド

監査証跡の出力先ディレクトリを絶対パス名で指定します。監査証跡機能を使用する場合，このオペランドは必ず指定してください。

adb_audit_log_max_sizeオペランド

通常，このオペランドの指定は不要です。監査証跡ファイルの最大容量を大きくしたい場合に，このオペランドを指定します。

adb_audit_log_max_numオペランド

通常，このオペランドの指定は不要です。作成される監査証跡ファイル数の上限を設定したい場合に，このオペランドを指定します。

12.2.4　HADBサーバの正常開始（オフラインモード）

HADBサーバをオフラインモードで開始します。HADB管理者は，--offlineオプションを指定してadbstartコマンドを実行してください。

HADBサーバをオフラインモードで開始することで，監査証跡機能の環境設定を実施している間に，不正にアクセスされることを防げます。

オフラインモードの詳細については，「10.2.3　HADBサーバの稼働モード」を参照してください。

12.2.5　監査人の作成

DBA権限を持っているHADBユーザが，監査人（監査権限を持っているHADBユーザ）を作成します。

重要

DBA権限を持っているHADBユーザには，監査管理権限を付与できません。

暗号管理権限を持っているHADBユーザには，監査管理権限を付与できません。

PAM認証またはKeycloak認証を使用しているHADBユーザには，監査管理権限または監査参照権限を付与できません。

監査人の作成手順を次に示します。

例題

次の監査人を作成します。

監査管理権限を持つHADBユーザ（認可識別子がADBAUDITADMIN）

監査参照権限を持つHADBユーザ（認可識別子がADBAUDITOR）

手順

HADBユーザを追加する

CREATE USER "ADBAUDITADMIN" IDENTIFIED BY '#HelloHADB_AUD01'
CREATE USER "ADBAUDITOR" IDENTIFIED BY '#HelloHADB_AUD02'

認可識別子がADBAUDITADMINと，認可識別子がADBAUDITORのHADBユーザを追加します。

追加したHADBユーザに，CONNECT権限と監査権限を付与する

GRANT CONNECT,AUDIT ADMIN TO "ADBAUDITADMIN"
GRANT CONNECT,AUDIT VIEWER TO "ADBAUDITOR"

ADBAUDITADMINにはCONNECT権限と監査管理権限を，ADBAUDITORにはCONNECT権限と監査参照権限を付与します。

以上の操作で監査人が作成されます。

重要

監査証跡機能の管理担当者と監査担当者は，作成された監査人の初期パスワード（#HelloHADB_AUD01，#HelloHADB_AUD02）をすぐに変更してください。パスワードの変更方法については，「11.7.2　HADBユーザのパスワードを変更する方法」を参照してください。

監査人を作成したデータベースの管理担当者は，監査人の初期パスワードを知っています。そのため，初期パスワードを変更しないと，データベースの管理担当者が，作成した監査人を使用して監査の不正などを行うおそれがあります。

監査証跡機能を有効にするには，監査管理権限を持っているHADBユーザが1人以上必要になります。

既存のHADBユーザを監査人にする場合は，上記の手順の2.だけを実施してください。

12.2.6　監査証跡機能の有効化

監査証跡機能を有効にする方法について説明します。

監査証跡機能を有効にする場合，adbaudittrailコマンドを実行する必要があります。監査管理権限を持っているHADBユーザが，--startオプションを指定してadbaudittrailコマンドを実行してください。

また，監査証跡機能を有効にする際，--write-errorオプションによって，監査証跡ファイルに監査証跡を書き込めなくなったときの処理方式を指定できます。「12.1.7　監査証跡ファイルへの書き込みに失敗した場合の処理方式の検討」で検討した結果に従って，--write-errorオプションを指定してください。

■--write-errorオプションにDOWNを指定する場合

--write-errorオプションにDOWNを指定すると，監査証跡ファイルに監査証跡を書き込めない場合，HADBサーバを停止します。

指定例を次に示します。

adbaudittrail -u ADBAUDITADMIN
              -p '#HelloHADB_ADMIN'
              --start --write-error DOWN

■--write-errorオプションにFAILSOFTを指定する場合

--write-errorオプションにFAILSOFTを指定すると，監査証跡ファイルに監査証跡を書き込めない場合でも，HADBサーバを停止しません。監査証跡ファイルに書き込めなかった監査証跡は破棄されますが，HADBサーバは動作を継続します。

指定例を次に示します。

adbaudittrail -u ADBAUDITADMIN
              -p '#HelloHADB_ADMIN'
              --start --write-error FAILSOFT

メモ

adbaudittrailコマンドについては，マニュアルHADB　コマンドリファレンスのadbaudittrail（監査証跡機能の管理）を参照してください。

12.2.7　監査対象の定義

監査対象を定義する場合は，CREATE AUDIT文を実行します。

重要

監査管理権限を持っているHADBユーザだけが，監査対象を定義できます。

監査証跡機能が有効なときだけ，監査対象を定義できます。

監査対象を定義する例を次に示します。

例題

選択監査イベントでも監査証跡を出力するために，監査対象を定義します。

CREATE AUDIT AUDITTYPE EVENT FOR ANY OPERATION

なお，定義済みの監査対象定義と同一の監査対象を定義することはできません。

12.2.8　HADBサーバの稼働モードの変更（通常モード）

監査証跡機能の環境設定が完了したら，HADBサーバの稼働モードを通常モードに変更します。

HADB管理者は，--normalオプションを指定してadbchgsrvmodeコマンドを実行してください。HADBサーバの稼働モードが，オフラインモードから通常モードに変更されます。

メモ

adbchgsrvmodeコマンドについては，マニュアルHADB　コマンドリファレンスのadbchgsrvmode（HADBサーバの稼働モードの変更）を参照してください。

12.3　監査証跡機能の定期運用

ここでは，監査証跡機能で定期的に行う運用項目について説明します。

■監査証跡ファイルの移動

次に示す方法で，監査証跡ファイルを保存用のディレクトリに移動させます。

「12.3.1　監査証跡ファイルの移動（監査証跡の保存先ディレクトリへの移動）」

「12.3.2　監査証跡ファイルの移動（監査証跡の長期保存先ディレクトリへの移動）」

■監査証跡ファイルの参照

次に示す方法で，監査証跡ファイルに出力された監査証跡を確認します。

「12.3.3　監査証跡の参照（SELECT文で監査証跡を参照する場合）」

「12.3.4　監査証跡の参照（CSV形式に変換した監査証跡を参照する場合）」

12.3.1　監査証跡ファイルの移動（監査証跡の保存先ディレクトリへの移動）

監査証跡ファイルを，監査証跡の出力先ディレクトリから監査証跡の保存先ディレクトリに移動させることについて説明します。

HADB管理者は，定期的に監査証跡ファイルを，監査証跡の出力先ディレクトリから監査証跡の保存先ディレクトリに移動させてください。定期的に監査証跡ファイルを移動させることで，次のような事象が発生することを防いでください。

監査証跡の出力先ディレクトリを作成したディスクが満杯になること

サーバ定義のadb_audit_log_max_numオペランドに0を指定している場合，上限なく監査証跡ファイルが作成されます。そのため，監査証跡ファイルを移動させないと，最終的にはディスクが満杯になります。

古い監査証跡ファイルが削除されること

サーバ定義のadb_audit_log_max_numオペランドに4以上を指定している場合，作成される監査証跡ファイル数の上限が設定されます。監査証跡ファイル数が上限を超えた場合，いちばん古い監査証跡ファイルが削除されます。そのため，監査証跡ファイルを移動させないと，古い監査証跡ファイルが削除されてしまいます。

監査証跡ファイルを移動させるタイミングには，次の2つがあります。監査証跡の出力先ディレクトリを作成したディスクが満杯になる前，かつ古い監査証跡ファイルが削除される前に，監査証跡ファイルを移動させるようにしてください。

■監査証跡ファイルを移動させるタイミング

事前に決めたタイミングで移動させる

事前に決めたタイミングで，監査証跡ファイルを移動させます。例えば，1日1回のタイミングで，監査証跡ファイルを移動させます。

監査証跡ファイルが切り替わったときに移動させる

監査証跡ファイルが切り替わった直後に，監査証跡ファイルを移動させます。監査証跡ファイルの切り替え時に出力されるKFAA81401-Iメッセージ，およびKFAA81402-Iメッセージを監視してください。

重要

サーバ定義のadb_audit_log_max_numオペランドに4以上を指定している場合，事前に決めたタイミングで監査証跡ファイルを移動させる前に，古い監査証跡ファイルが削除されるおそれがあります。そのため，メッセージを監視して，監査証跡ファイルが切り替わった直後に，監査証跡ファイルを移動させるようにしてください。

監査証跡ファイルを移動させる場合，次の手順で実施してください。

■監査証跡ファイルを移動させる手順

監査証跡ファイルを，監査証跡の出力先ディレクトリから監査証跡の保存先ディレクトリにコピーする

ただし，現用の監査証跡ファイルはコピーしないでください。

監査証跡ファイルのコピーが完了したら，コピー元の監査証跡ファイルを削除する

ただし，次のファイルは削除しないでください。

現用の監査証跡ファイル

ADB_AUDITREAD関数で読み込み対象になっている監査証跡ファイル

重要

現用の監査証跡ファイルを削除した場合，現用の監査証跡ファイルに出力された監査証跡が失われます。そのため，現用の監査証跡ファイルは削除しないように注意してください。

監査証跡ファイルを移動させる例を，次に示します。

■監査証跡ファイルを移動させる例

監査証跡ファイルを，監査証跡の出力先ディレクトリ（/mnt/audittrail/outputarea/audit）から監査証跡の保存先ディレクトリ（/mnt/audittrail/shorttimesavearea/audit_bak）に移動させます。

移動が必要な監査証跡ファイルの一覧を作成する

OSのfindコマンドで，監査証跡の出力先ディレクトリに存在する監査証跡ファイルを検索して，移動が必要な監査証跡ファイルの一覧（/home/adbmanager/tmp/auditfilelist.txt）を作成します。なお，次のコマンドでは，現用の監査証跡ファイルは検索対象外となっています。

find /mnt/audittrail/outputarea/audit ¥
    -name "adbaud-????????-??????-???*.aud" ¥
    > /home/adbmanager/tmp/auditfilelist.txt

移動が必要な監査証跡ファイルをコピーする

移動が必要な監査証跡ファイルの一覧（/home/adbmanager/tmp/auditfilelist.txt）に存在する全ファイルを，OSのcpコマンドで，監査証跡の出力先ディレクトリから監査証跡の保存先ディレクトリにコピーします。

while read filename ; do
  cp ${filename} /mnt/audittrail/shorttimesavearea/audit_bak
done < /home/adbmanager/tmp/auditfilelist.txt

コピーが完了した監査証跡ファイルを削除する

監査証跡ファイルのコピーが完了したら，OSのrmコマンドで，コピー元の監査証跡ファイルを監査証跡の出力先ディレクトリから削除します。

while read filename ; do
  rm ${filename}
done < /home/adbmanager/tmp/auditfilelist.txt

移動が必要な監査証跡ファイルの一覧を削除する

OSのrmコマンドで，手順1.で作成した移動が必要な監査証跡ファイルの一覧（/home/adbmanager/tmp/auditfilelist.txt）を削除します。

rm /home/adbmanager/tmp/auditfilelist.txt

12.3.2　監査証跡ファイルの移動（監査証跡の長期保存先ディレクトリへの移動）

監査証跡ファイルを，監査証跡の保存先ディレクトリから監査証跡の長期保存先ディレクトリに移動させることについて説明します。

HADB管理者は，監査期間が過ぎた監査証跡ファイルを，監査証跡の保存先ディレクトリから監査証跡の長期保存先ディレクトリに移動させてください。

監査証跡ファイルを移動させる場合，次の手順で実施してください。

■監査証跡ファイルを移動させる手順

監査証跡ファイルを，監査証跡の保存先ディレクトリから監査証跡の長期保存先ディレクトリにコピーする

監査証跡ファイルのコピーが完了したら，コピー元の監査証跡ファイルを削除する

なお，必要に応じて，監査証跡の長期保存先ディレクトリに移動させた監査証跡ファイルを，OSのgzipコマンドで圧縮してください。

監査証跡ファイルを移動させる例を，次に示します。

■監査証跡ファイルを移動させる例

監査証跡の保存先ディレクトリ（/mnt/audittrail/shorttimesavearea/audit_bak）に1年間格納した監査証跡ファイルを，監査証跡の長期保存先ディレクトリ（/mnt/audittrail/longtimesavearea/audit_bak）に移動させます。

移動が必要な監査証跡ファイルの一覧を作成する

OSのfindコマンドで，監査証跡の保存先ディレクトリに1年間格納した監査証跡ファイルを検索して，移動が必要な監査証跡ファイルの一覧（/home/adbmanager/tmp/auditfilelist.txt）を作成します。

find /mnt/audittrail/shorttimesavearea/audit_bak ¥
    -name "adbaud-????????-??????-???*.aud" -and -mtime 365 ¥
    > /home/adbmanager/tmp/auditfilelist.txt

移動が必要な監査証跡ファイルをコピーする

移動が必要な監査証跡ファイルの一覧（/home/adbmanager/tmp/auditfilelist.txt）に存在する全ファイルを，OSのcpコマンドで，監査証跡の保存先ディレクトリから監査証跡の長期保存先ディレクトリにコピーします。

while read filename ; do
  cp ${filename} /mnt/audittrail/longtimesavearea/audit_bak
done < /home/adbmanager/tmp/auditfilelist.txt

コピーが完了した監査証跡ファイルを削除する

監査証跡ファイルのコピーが完了したら，OSのrmコマンドで，コピー元の監査証跡ファイルを監査証跡の保存先ディレクトリから削除します。

while read filename ; do
  rm ${filename}
done < /home/adbmanager/tmp/auditfilelist.txt

移動させた監査証跡ファイルを圧縮する

OSのgzipコマンドで，監査証跡の長期保存先ディレクトリに移動させた監査証跡ファイルを圧縮します。

gzip /mnt/audittrail/longtimesavearea/audit_bak/*.aud

移動が必要な監査証跡ファイルの一覧を削除する

OSのrmコマンドで，手順1.で作成した移動が必要な監査証跡ファイルの一覧（/home/adbmanager/tmp/auditfilelist.txt）を削除します。

rm /home/adbmanager/tmp/auditfilelist.txt

12.3.3　監査証跡の参照（SELECT文で監査証跡を参照する場合）

監査証跡を参照するには，ADB_AUDITREAD関数を指定したSELECT文を実行します。

重要

監査参照権限を持っているHADBユーザだけが，ADB_AUDITREAD関数を指定したSELECT文を実行して，監査証跡を参照できます。

監査証跡を参照するSELECT文の例を次に示します。

例題1

監査証跡の保存先ディレクトリ（/mnt/audittrail/savearea）下の全監査証跡ファイル中の監査証跡を参照します。

SELECT文の実行例

SELECT * FROM TABLE(ADB_AUDITREAD(MULTISET['/mnt/audittrail/savearea/*.aud'])) "DT"

［説明］

下線部分に，参照する監査証跡が格納されている監査証跡ファイルのパス名を指定します。この例の場合，監査証跡ファイル名に特殊文字の*を指定（*.aud）しているため，/mnt/audittrail/saveareaディレクトリ下の全監査証跡ファイル（ファイル拡張子がaudのファイル）に格納されている監査証跡を参照しています。

例題2

2017年4月1日～2017年4月30日の間に，HADBサーバにアクセスしたHADBユーザの一覧を参照します。監査証跡ファイルは，監査証跡の保存先ディレクトリ（/mnt/audittrail/savearea）下に保存されています。

SELECT文の実行例

SELECT DISTINCT "USER_NAME"
    FROM TABLE(ADB_AUDITREAD(MULTISET['/mnt/audittrail/savearea/*.aud'])) "DT"
       WHERE "EXEC_TIME" BETWEEN TIMESTAMP'2017/04/01 00:00:00.000000'
                             AND TIMESTAMP'2017/04/30 23:59:59.999999'

［説明］

USER_NAME列には，HADBユーザの認可識別子が格納されています。EXEC_TIME列には，HADBユーザがHADBサーバに対する操作を実行した日時（イベントが完了した日時）が格納されています。USER_NAME列およびEXEC_TIME列は，ADB_AUDITREAD関数によって作成される表関数導出表の列名です。表関数導出表の列名については，「12.9.2　監査証跡を検索するときの表関数導出表の列構成」を参照してください。

監査証跡を参照する際のSELECT文の例については，「12.7.5　定期監査の実施」も参照してください。

ADB_AUDITREAD関数の指定規則については，マニュアルHADB　SQLリファレンスのADB_AUDITREAD関数を参照してください。

■留意事項

ADB_AUDITREAD関数の入力情報にできる監査証跡ファイルは，HADBサーバが出力した監査証跡ファイルか，その監査証跡ファイルをOSのgzipコマンドで圧縮したファイルです。また，複数のHADBサーバを運用している場合に，ほかのHADBサーバが出力した監査証跡ファイルもADB_AUDITREAD関数の入力情報にできます。

ADB_AUDITREAD関数には，監査証跡ファイルをgzipコマンドで圧縮したファイルを指定できます。tarコマンドを使用してアーカイブされたgzipファイルは指定できません。

ADB_AUDITREAD関数中に指定する監査証跡ファイルのパスに含まれる各ディレクトリに対して，HADB管理者がアクセスできるように読み取り権限と実行権限を設定しておいてください。例えば，監査証跡ファイルが/mnt/audittrail/saveareaディレクトリ下に格納されている場合，/，/mnt，/mnt/audittrail，および/mnt/audittrail/saveareaの各ディレクトリに対して，HADB管理者がアクセスできるように読み取り権限と実行権限を設定しておく必要があります。また，/mnt/audittrail/saveareaディレクトリ下の監査証跡ファイルに対して，HADB管理者が読み込めるように読み取り権限を設定しておいてください。正しく権限を設定していない場合，ADB_AUDITREAD関数を指定したSELECT文がエラーになります。

監査証跡の出力先ディレクトリ下の監査証跡ファイル中の監査証跡は参照しない運用を推奨します。監査証跡の参照中に，参照中の監査証跡が格納されている監査証跡ファイルが削除された場合，SQL文の実行結果が想定したものにならないことがあります。監査証跡ファイルは，次の契機に削除されます。

監査証跡の出力先ディレクトリ下の監査証跡ファイルを，監査証跡の保存先ディレクトリまたは監査証跡の長期保存先ディレクトリ下に移動させたとき

次の条件をすべて満たす場合に，現用の監査証跡ファイルの切り替えが発生したとき

・監査証跡ファイルの世代数の上限を指定している場合

・監査証跡の出力先ディレクトリ下の監査証跡ファイルの数が世代数の上限に達している場合

2つ目の契機については，HADBサーバが監査証跡ファイルを自動的に削除するため，運用で回避できません。そのため，監査証跡の保存先ディレクトリまたは監査証跡の長期保存先ディレクトリ下の監査証跡ファイル中の監査証跡を参照することを推奨します。

監査証跡の出力先ディレクトリ下の監査証跡ファイル中の監査証跡を参照したい場合は，その監査証跡ファイルを監査証跡の保存先ディレクトリに移動したあとに参照するようにしてください。

現用の監査証跡ファイル中の監査証跡は参照できません。現用の監査証跡ファイル中の監査証跡を参照したい場合は，現用の監査証跡ファイルを切り替えたあとに，その監査証跡ファイルを参照してください。現用の監査証跡ファイルの切り替え手順については，「12.4.2　現用の監査証跡ファイルの切り替え」を参照してください。

12.3.4　監査証跡の参照（CSV形式に変換した監査証跡を参照する場合）

Microsoft Excelなどの表計算ソフトで監査証跡を参照することができます。adbexportコマンドを実行して監査証跡をCSV形式のデータに変換し，そのCSV形式のデータを表計算ソフトの入力情報にしてください。監査証跡をCSV形式のデータに変換する手順を次に示します。

例題

監査証跡の保存先ディレクトリ（/mnt/audittrail/savearea）下の全監査証跡ファイル中の監査証跡を，CSV形式のデータに変換します。

手順

adbexportコマンドの出力データパスファイルを作成する

出力データパスファイルには，出力データファイルのパス名（監査証跡をCSV形式で出力するファイルのパス名）を記述します。出力データパスファイルの記述例を次に示します。

/home/auditviewer/audit/audit1.csv     ←このファイルに監査証跡がCSV形式で出力されます。

出力データパスファイルを，/home/auditviewer/export/expf01.txtに保存します。

adbexportコマンドのSQL記述ファイルを作成する

SQL記述ファイルには，ADB_AUDITREAD関数を指定したSELECT文を記述します。SQL記述ファイルの記述例を次に示します。

SELECT * FROM TABLE
    (ADB_AUDITREAD(MULTISET['/mnt/audittrail/savearea/*.aud'])) "T1"

SQL記述ファイルを，/home/auditviewer/export/sel01.txtに保存します。

ヒント

この例の場合，SELECT文に探索条件を指定していないため，ADB_AUDITREAD関数の読み込み対象となる監査証跡ファイル中の全監査証跡が検索対象（CSV形式に変換される監査証跡）になります。監査証跡のうち，必要な情報だけをCSV形式で出力したい場合は，次のどちらかの方法を実行してください。

SQL記述ファイルに記述するSELECT文に，探索条件を指定する

SQL記述ファイルに，ビュー表を検索するSELECT文を記述する

この場合，ADB_AUDITREAD関数を指定した表関数導出表を表参照に指定した問合せ指定に，探索条件を指定したビュー表を定義しておく必要があります。

adbexportコマンドを実行する

adbexport -u ADBAUDITOR -p '#HelloHADB_Aud01'
          -q /home/auditviewer/export/sel01.txt
          /home/auditviewer/export/expf01.txt

-uと-pオプションには，監査参照権限を持っているHADBユーザの認可識別子とパスワードを指定します。

-qオプションには，手順2.で作成したSQL記述ファイルを指定します。

/home/auditviewer/export/expf01.txtは，手順1.で作成した出力データパスファイルのパス名です。

重要

監査証跡をCSV形式のデータに変換する作業は，監査参照権限を持っているHADBユーザだけが実行できます。

出力データパスファイル，およびSQL記述ファイルの指定規則の詳細については，マニュアルHADB　コマンドリファレンスのadbexportコマンドの指定形式の指定形式およびオプションの説明を参照してください。

重要

監査証跡をCSV形式のデータに変換してファイルに保存した場合，そのファイルの取り扱いに注意してください。そのファイルを参照できるのは，監査の実行者だけとなるようにしてください。また，ファイルが更新されないように対策をする必要があります。

監査証跡は，監査の実行者（監査参照権限を持っているHADBユーザ）だけが参照することを推奨しています。そのため，基本的には「12.3.3　監査証跡の参照（SELECT文で監査証跡を参照する場合）」で説明している方法で監査証跡を参照するようにしてください。

12.4　監査証跡機能の非定期運用

ここでは，監査証跡機能で非定期に行う運用項目について説明します。

「12.4.1　監査人の追加，削除，変更（監査権限の付与または取り消し）」

「12.4.2　現用の監査証跡ファイルの切り替え」

「12.4.3　監査対象定義の確認」

「12.4.4　監査対象定義の変更」

「12.4.5　監査証跡機能の動作状況の確認」

12.4.1　監査人の追加，削除，変更（監査権限の付与または取り消し）

監査人の追加，削除，変更方法（監査権限の付与または取り消し方法）について，例を使って説明します。

(1)　監査人の追加（監査権限の付与）

監査人の追加は，DBA権限を持っているHADBユーザが行います。監査人の追加手順を次に示します。

例題

監査管理権限を持つ監査人（認可識別子がADBAUDITADMIN01）と，監査参照権限を持つ監査人（認可識別子がADBAUDITOR01）を追加します。HADBユーザを新規に作成し，そのHADBユーザに監査権限を付与します。

手順

HADBユーザを追加する

CREATE USER "ADBAUDITADMIN01" IDENTIFIED BY '#HelloHADB_AUD01'
CREATE USER "ADBAUDITOR01" IDENTIFIED BY '#HelloHADB_AUD02'

認可識別子がADBAUDITADMIN01と，認可識別子がADBAUDITOR01のHADBユーザを追加します。

追加したHADBユーザに，CONNECT権限と監査権限を付与する

GRANT CONNECT,AUDIT ADMIN TO "ADBAUDITADMIN01"
GRANT CONNECT,AUDIT VIEWER TO "ADBAUDITOR01"

ADBAUDITADMIN01にはCONNECT権限と監査管理権限を，ADBAUDITOR01にはCONNECT権限と監査参照権限を付与します。

重要

追加された監査人は，すぐに初期パスワード（#HelloHADB_AUD01，#HelloHADB_AUD02）を変更してください。パスワードの変更方法については，「11.7.2　HADBユーザのパスワードを変更する方法」を参照してください。

既存のHADBユーザを監査人にする場合は，上記の手順1.の操作は必要ありません。また，既存のHADBユーザがCONNECT権限を持っている場合は，上記の手順2.で監査権限だけを付与します。

メモ

DBA権限を持っているHADBユーザに監査管理権限を付与することはできません。

暗号管理権限を持っているHADBユーザに監査管理権限を付与することはできません。

PAM認証またはKeycloak認証を使用するHADBユーザに，監査管理権限および監査参照権限を付与することはできません。

(2)　監査人の削除（監査権限の取り消し）

監査人の削除手順を次に示します。

例題1

監査管理権限を持っている監査人（認可識別子はADBAUDITADMIN）を削除します。

手順

監査人（ADBAUDITADMIN）が持っている監査管理権限を取り消す

REVOKE AUDIT ADMIN FROM "ADBAUDITADMIN"

この操作は，監査管理権限を持っているHADBユーザが実行します。

監査管理権限を取り消したHADBユーザ（ADBAUDITADMIN）を削除する

DROP USER "ADBAUDITADMIN"

この操作は，DBA権限を持っているHADBユーザが実行します。

例題2

監査参照権限を持っている監査人（認可識別子はADBAUDITOR）を削除します。

手順

監査人（ADBAUDITOR）が持っている監査参照権限を取り消す

REVOKE AUDIT VIEWER FROM "ADBAUDITOR"

この操作は，監査管理権限を持っているHADBユーザが実行します。

監査参照権限を取り消したHADBユーザ（ADBAUDITOR）を削除する

DROP USER "ADBAUDITOR"

この操作は，DBA権限を持っているHADBユーザが実行します。

(3)　監査人の変更

監査人の変更手順を次に示します。

例題

監査管理権限を持っている監査人を変更します。認可識別子がADBAUDITADMIN01のHADBユーザから，認可識別子がADBAUDITADMIN02のHADBユーザに監査人を変更します。

認可識別子がADBAUDITADMIN02のHADBユーザを新規に作成し，そのHADBユーザを新たな監査人にします。

手順

HADBユーザ（ADBAUDITADMIN02）を追加する

CREATE USER "ADBAUDITADMIN02" IDENTIFIED BY '#HelloHADB_AUD02'

認可識別子がADBAUDITADMIN02のHADBユーザを追加します。

この操作は，DBA権限を持っているHADBユーザが実行します。

追加したHADBユーザ（ADBAUDITADMIN02）に，CONNECT権限と監査管理権限を付与する

GRANT CONNECT,AUDIT ADMIN TO "ADBAUDITADMIN02"

この操作は，DBA権限を持っているHADBユーザが実行します。

監査人（ADBAUDITADMIN01）が持っている監査管理権限を取り消す

REVOKE AUDIT ADMIN FROM "ADBAUDITADMIN01"

この操作は，監査管理権限を持っているHADBユーザが実行します。

監査管理権限を取り消したHADBユーザ（ADBAUDITADMIN01）を削除する

DROP USER "ADBAUDITADMIN01"

この操作は，DBA権限を持っているHADBユーザが実行します。

この操作は，このHADBユーザが不要な場合に限り実施してください。

重要

新たな監査人（ADBAUDITADMIN02）は，すぐに初期パスワード（#HelloHADB_AUD02）を変更してください。パスワードの変更方法については，「11.7.2　HADBユーザのパスワードを変更する方法」を参照してください。

既存のHADBユーザを新たな監査人にする場合は，上記の手順1.の操作は必要ありません。また，既存のHADBユーザがCONNECT権限を持っている場合は，上記の手順2.で監査管理権限だけを付与します。

メモ

DBA権限を持っているHADBユーザに監査管理権限を付与することはできません。

暗号管理権限を持っているHADBユーザに監査管理権限を付与することはできません。

PAM認証またはKeycloak認証を使用するHADBユーザに，監査管理権限および監査参照権限を付与することはできません。

(4)　留意事項

監査管理権限を持っているHADBユーザは，自分が持っている監査権限，およびほかのHADBユーザが持っている監査権限を取り消すことができます。

監査証跡機能が有効な場合，監査管理権限とCONNECT権限の両方を持っているHADBユーザが自分だけのときは，自分が持っている監査管理権限を取り消すことはできません。

監査証跡機能が無効な場合，監査権限を取り消すことはできません。ただし，次に示す条件をすべて満たす場合は，自分が持っている監査管理権限を取り消すことができます。

監査管理権限を持っているHADBユーザが自分だけである

監査参照権限を持っているHADBユーザがいない

12.4.2　現用の監査証跡ファイルの切り替え

現用の監査証跡ファイルの切り替えについて説明します。

現用の監査証跡ファイル中の監査証跡は，参照できません。そのため，現用の監査証跡ファイル中の監査証跡を参照したい場合は，監査証跡ファイルの切り替えを実施する必要があります。監査証跡ファイルの切り替えは，adbaudittrailコマンドで実施できます。

監査管理権限を持っているHADBユーザが，--swapオプションを指定したadbaudittrailコマンドを実行してください。

メモ

adbaudittrailコマンドについては，マニュアルHADB　コマンドリファレンスのadbaudittrail（監査証跡機能の管理）を参照してください。

--swapオプションを指定してadbaudittrailコマンドを実行すると，監査証跡ファイルの切り替えが行われて，現用の監査証跡ファイルがリネームされます。リネームされた監査証跡ファイルに出力された監査証跡は，次に示す方法で参照してください。

「12.3.3　監査証跡の参照（SELECT文で監査証跡を参照する場合）」

「12.3.4　監査証跡の参照（CSV形式に変換した監査証跡を参照する場合）」

12.4.3　監査対象定義の確認

監査対象定義を確認する場合は，ディクショナリ表SQL_AUDITSを検索します。

重要

監査管理権限を持っているHADBユーザだけが，ディクショナリ表SQL_AUDITSを検索できます。

ディクショナリ表SQL_AUDITSの検索例を次に示します。

SQL文の実行例

SELECT * FROM "MASTER"."SQL_AUDITS"

検索結果の例

OPERATION_TYPE   EVENT_TYPE  ...  AUDIT_TYPE  IS_EXCLUSION_AUDIT
--------------   ----------       ----------  ------------------
ANY              **********  ...  EVENT                        N

検索結果の行がある場合は，監査対象定義が存在します。この例の場合，監査対象定義が存在するため，選択監査イベントでも監査証跡が出力されます。

検索結果の行がない場合は，監査対象定義は存在しません。この場合，選択監査イベントでは監査証跡が出力されません。

なお，検索結果の例は，adbsqlコマンドでSQL文を実行したときの例です。**********は，ナル値を意味しています。

12.4.4　監査対象定義の変更

監査対象定義の変更方法（監査対象を定義する方法，または監査対象定義を削除する方法）について説明します。

重要

監査管理権限を持っているHADBユーザだけが，監査対象定義を変更できます。

監査証跡機能が有効なときだけ，監査対象定義を変更できます。

■監査対象の定義

監査対象を定義する場合は，CREATE AUDIT文を実行します。監査対象を定義する例を次に示します。

例題

選択監査イベントでも監査証跡を出力するために，監査対象を定義します。

CREATE AUDIT AUDITTYPE EVENT FOR ANY OPERATION

なお，定義済みの監査対象定義と同一の監査対象を定義することはできません。

■監査対象定義の削除

監査対象定義を削除する場合は，DROP AUDIT文を実行します。監査対象定義を削除する例を次に示します。

例題

選択監査イベントでの監査証跡の出力をやめるために，監査対象定義を削除します。

DROP AUDIT AUDITTYPE EVENT FOR ANY OPERATION

12.4.5　監査証跡機能の動作状況の確認

監査証跡機能の動作状況を確認する方法について説明します。

監査証跡機能の動作状況を確認したい場合，adbaudittrailコマンドを実行する必要があります。

次のどちらかに該当するHADBユーザが，-dオプションを指定したadbaudittrailコマンドを実行してください。

監査管理権限を持っているHADBユーザ

監査参照権限を持っているHADBユーザ

メモ

adbaudittrailコマンドについては，マニュアルHADB　コマンドリファレンスのadbaudittrail（監査証跡機能の管理）を参照してください。

-dオプションを指定してadbaudittrailコマンドを実行すると，監査証跡機能の動作状況が表示されます。

■監査証跡機能が有効かどうかを確認したい場合

監査証跡機能が有効かどうかを確認したい場合は，auditの出力内容を確認してください。

auditの出力内容がACTIVEまたはACTIVE(NO OUTPUT)の場合，監査証跡機能は有効です。なお，ACTIVE(NO OUTPUT)の場合は，監査証跡ファイルへの監査証跡の出力が抑止されている状態です。

auditの出力内容がINACTIVEの場合，監査証跡機能は無効です。

■監査証跡ファイルに監査証跡を書き込めなくなったときの処理方式を確認したい場合

ディスクの満杯やディスク障害などの原因によって，監査証跡ファイルに監査証跡を書き込めなくなったときの処理方式を確認したい場合は，write-errorの出力内容を確認してください。

write-errorの出力内容がDOWNの場合，監査証跡ファイルへの書き込みに失敗すると，HADBサーバを異常終了する設定になっています。

write-errorの出力内容がFAILSOFTの場合，監査証跡ファイルへの書き込みに失敗しても，HADBサーバは動作を継続する設定になっています。

■監査証跡機能に関するサーバ定義の指定値を確認したい場合

監査証跡機能に関するサーバ定義の指定値を確認したい場合は，次の項目に出力された内容を確認してください。

audit-directory-pathの出力内容には，サーバ定義のadb_audit_log_pathオペランドに指定したディレクトリ名が表示されます。監査証跡の出力先ディレクトリを確認できます。

audit-file-max-sizeの出力内容には，サーバ定義のadb_audit_log_max_sizeオペランドに指定した値が表示されます。監査証跡ファイルの最大容量を確認できます。

audit-file-numberの出力内容には，サーバ定義のadb_audit_log_max_numオペランドに指定した値が表示されます。監査証跡ファイルの最大世代数を確認できます。

12.5　監査証跡機能のトラブルシュート

ここでは，監査証跡機能に関するトラブルがあった場合の対処方法について説明します。

監査証跡の出力時にエラーが発生した場合，KFAA51404-Eメッセージが出力されます。KFAA51404-Eメッセージの変数aa....aaの内容によって，対処方法が異なります。

変数aa....aaがThe audit trail file disk is fullの場合

「12.5.1　監査証跡の出力先ディレクトリを作成したディスクが満杯になった場合の対処方法」を参照してください。

変数aa....aaがerrno cc....ccの場合

「12.5.2　監査証跡の出力先ディレクトリを作成したディスクで障害が発生した場合の対処方法」を参照してください。

変数aa....aaがThe audit trail file could not be opened, because file descriptors were insufficientの場合

「12.5.3　ファイルディスクリプタが不足した場合の対処方法」を参照してください。

KFAA51404-Eメッセージについては，マニュアルHADB　メッセージを参照してください。

12.5.1　監査証跡の出力先ディレクトリを作成したディスクが満杯になった場合の対処方法

監査証跡の出力先ディレクトリを作成したディスクが満杯になった場合の対処方法について説明します。

監査証跡の出力先ディレクトリを作成したディスクが満杯になった場合，KFAA51404-Eメッセージの変数aa....aaにThe audit trail file disk is fullが表示されます。HADBサーバが稼働しているかどうかによって，対処方法が異なります。

■HADBサーバが異常終了している場合

次に示す3つの対処方法から1つを選択して，ディスクの空き容量を確保してください。そのあとで，adbstartコマンドでHADBサーバを開始してください。

■HADBサーバが稼働している場合

次に示す3つの対処方法のうち，1.または2.を選択して，ディスクの空き容量を確保してください。HADBサーバが稼働している状態で対処できます。

なお，3.を実施したい場合は，adbstopコマンドでHADBサーバを終了する必要があります。HADBサーバの終了後に，3.を実施してディスクの空き容量を確保してください。そのあとで，adbstartコマンドでHADBサーバを開始してください。

対処方法

監査証跡の出力先ディレクトリに存在する現用以外の監査証跡ファイルを，監査証跡の保存先ディレクトリに移動させる

監査証跡の出力先ディレクトリを作成したディスクに存在する，不要なファイルを削除する

監査証跡の出力先ディレクトリを作成したディスクの容量を大きくして，ディスクの空き容量を増やす

12.5.2　監査証跡の出力先ディレクトリを作成したディスクで障害が発生した場合の対処方法

監査証跡の出力先ディレクトリを作成したディスクで障害が発生した場合の対処方法について説明します。

監査証跡の出力先ディレクトリを作成したディスクで障害が発生した場合，KFAA51404-Eメッセージの変数aa....aaにerrno cc....ccが表示されます。対処方法を次に示します。

対処方法

HADBサーバを終了する

HADBサーバが稼働している場合は，adbstopコマンドでHADBサーバを終了してください。

エラーの原因を取り除く

errno cc....ccに表示されたエラー番号をOSのマニュアルで調べて，エラーの原因を取り除いてください。

エラーの原因を取り除くことができない場合は，監査証跡の出力先ディレクトリを新規に作成してください。そして，新規に作成した監査証跡の出力先ディレクトリのパス名を，サーバ定義のadb_audit_log_pathオペランドに指定してください。

HADBサーバを開始する

adbstartコマンドでHADBサーバを開始してください。

12.5.3　ファイルディスクリプタが不足した場合の対処方法

ファイルディスクリプタが不足した場合の対処方法について説明します。

ファイルディスクリプタが不足した場合，KFAA51404-Eメッセージの変数aa....aaにThe audit trail file could not be opened, because file descriptors were insufficientが表示されます。対処方法を次に示します。

対処方法

HADBサーバプロセス以外のプロセスでクローズできるファイルがある場合は，そのファイルをクローズする

ファイルをクローズしても解決しない場合は，次の手順に進んでください。

HADBサーバを終了する

adbstopコマンドで，HADBサーバを終了してください。

カーネルパラメタの指定値を変更して，ファイルディスクリプタ数の上限を増やす

カーネルパラメタのnofileおよびfile-maxの指定値を大きくしてください。カーネルパラメタについては，「6.2　カーネルパラメタの見積もり」を参照してください。

HADBサーバを開始する

adbstartコマンドで，HADBサーバを開始してください。

12.6　監査証跡機能の使用をやめる場合

監査証跡機能の使用をやめるときの操作手順を次の図に示します。

図12‒4　監査証跡機能の使用をやめるときの操作手順

手順

監査証跡機能を無効にする監査人を選定する

監査証跡機能を無効にする監査人（監査管理権限を持っているHADBユーザ）を1人決めてください。選定した監査人が，手順2.～5.を実施します。

監査対象定義を削除する

手順1.で選定した監査人が，定義されている監査対象定義を，DROP AUDIT文ですべて削除してください。監査対象定義を削除する方法は，「12.4.4　監査対象定義の変更」を参照してください。

監査証跡機能を無効にする監査人以外の監査人をすべて削除する

監査証跡機能を無効にする前に，手順1.で選定した監査人以外の監査人をすべて削除する必要があります。次の手順で削除してください。

まず，手順1.で選定した監査人が，すべての監査人の認可識別子を調べます。監査人の認可識別子を調べる場合は，「付録B.24　ディクショナリ表の検索」の「(37)　監査人の認可識別子と監査人が持っている監査権限を調べる方法」を参照してください。

次に，手順1.で選定した監査人が，調べた監査人の認可識別子を基に，自分を含むすべての監査人が持っている監査参照権限をREVOKE文で取り消します。監査参照権限を持っているHADBユーザが存在しないようにしてください。監査参照権限を取り消す際のSQL文の例については，「12.4.1　監査人の追加，削除，変更（監査権限の付与または取り消し）」の「(2)　監査人の削除（監査権限の取り消し）」を参照してください。

最後に，手順1.で選定した監査人が，調べた監査人の認可識別子を基に，手順1.で選定した監査人以外の監査人が持っている監査管理権限をREVOKE文で取り消します。監査管理権限を持っているHADBユーザが，手順1.で選定した監査人だけになるようにしてください。監査管理権限を取り消す際のSQL文の例については，「12.4.1　監査人の追加，削除，変更（監査権限の付与または取り消し）」の「(2)　監査人の削除（監査権限の取り消し）」を参照してください。

監査証跡機能を無効にする

手順1.で選定した監査人が，adbaudittrailコマンドで監査証跡機能を無効にします。--stopオプションを指定してadbaudittrailコマンドを実行してください。監査証跡機能を無効にすると，監査証跡が出力されなくなります。

コマンドの実行例

adbaudittrail -u ADBAUDITADMIN
              -p '#HelloHADB_ADMIN'
              --stop

メモ

adbaudittrailコマンドについては，マニュアルHADB　コマンドリファレンスのadbaudittrail（監査証跡機能の管理）を参照してください。

監査証跡機能を無効にした監査人を削除する

手順1.で選定した監査人は，REVOKE文で監査人自身の監査管理権限を取り消してください。監査管理権限の取り消しについては，「12.4.1　監査人の追加，削除，変更（監査権限の付与または取り消し）」の「(2)　監査人の削除（監査権限の取り消し）」を参照してください。

監査証跡の出力先ディレクトリを削除する

監査証跡機能を無効にすると，監査証跡は出力されなくなります。監査証跡の出力先ディレクトリは不要になるため，必要に応じて削除してください。

まず，HADB管理者が，監査証跡の出力先ディレクトリに存在する監査証跡ファイルを，監査証跡の保存先ディレクトリに移動します。監査証跡ファイルを移動する方法については，「12.3.1　監査証跡ファイルの移動（監査証跡の保存先ディレクトリへの移動）」を参照してください。

次に，HADB管理者が，監査証跡の出力先ディレクトリを削除します。

監査証跡機能に関するサーバ定義のオペランドを削除する

監査証跡機能の使用をやめる場合，サーバ定義に指定した次のオペランドは不要になります。HADB管理者は，必要に応じて次のオペランドを削除してください。

adb_audit_log_pathオペランド

adb_audit_log_max_sizeオペランド

adb_audit_log_max_numオペランド

サーバ定義を変更する方法については，「8.5.2　サーバ定義の変更方法」を参照してください。

12.7　監査証跡機能の運用例

実際の業務を想定した監査証跡機能の運用例について説明します。

12.7.1　A社の情報分析システムの構成

ECサイトを運営するA社を例にして，監査証跡機能の運用例を説明します。

監査証跡機能の使用を決定した背景

A社は，インターネット上で商品やサービスを販売するECサイトを運営しています。A社では，顧客の個人情報，販売履歴，在庫状況などの情報をHADBのデータベースで管理しています。これらの情報（データ）は，人気商品や顧客の好みをリアルタイムに分析するために，30分ごとにデータベースにインポートされています。データベースにインポートされるデータには，個人情報が含まれているため，A社は，HADBの監査証跡機能を使用して，データベースの監査をできるようにしました。

A社の情報分析システムの稼働状況

ECサイトにログインした顧客の情報や，ECサイトの販売情報および在庫情報を，30分ごとにデータベースにインポートする

BIツールを使用して情報分析をする

HADBサーバで処理するクエリは，1日に2,000～2,400回程度発生する

1SQL文の長さは16キロバイト未満である

A社のECサイトと情報分析システムの構成を次の図に示します。

図12‒5　A社のECサイトと情報分析システムの構成

上記の条件とシステムの構成を前提として，監査証跡機能の運用例を以降で説明します。

12.7.2　設計

監査証跡機能を適切に使用するために，事前に設計しておくことを説明します。

(1)　監査の方針を決める

最初に，監査の対象や，監査の実施間隔などの監査方針を決めます。

A社の情報分析システムでは，個人情報を扱っています。そのため，社員が個人情報に不正アクセスしていないかを監査で確認する必要があります。また，販売履歴や売り上げ情報なども社外秘の情報のため，社員がこれらの情報に不正アクセスしていないかを監査で確認する必要があります。

売り上げ情報や，訪問客数などは月に1回計上しているため，このタイミングで監査を実施することにします。

以上のことから，監査の対象とする操作と，監査の実施間隔を次のように決めます。

監査の対象とする操作

個人情報を格納しているデータベースへのアクセス操作

販売履歴や売り上げ情報などの社外秘の情報を格納しているデータベースへのアクセス操作

監査の実施間隔

月に1回実施

(2)　監査証跡を出力するイベントを決める

「(1)　監査の方針を決める」で決めた監査方針に従って，監査証跡を出力するイベントを決めます。

監査対象のデータを格納しているデータベースへのアクセス記録が，監査の際に必要になります。また，データベースにアクセスしたユーザが，どのような経路でHADBサーバに接続してきたかを特定するために，HADBサーバへの接続または切断処理が発生したときの記録も必要になります。

データベースへのアクセス記録を出力するには，操作系SQLイベントを監査証跡の出力対象イベントとする必要があります。また，HADBサーバへの接続または切断処理に関する記録を出力するには，セッションイベントを監査証跡の出力対象イベントとする必要があります。操作系SQLイベントおよびセッションイベントの発生時に，監査証跡を出力する場合は，CREATE AUDIT文で選択監査イベントを監査対象として定義する必要があります。

メモ

イベントの種類，イベントの種類と操作の関係については，「12.9.1　監査対象イベントの一覧と出力項目」を参照してください。

(3)　監査証跡機能で使用するディレクトリを設計する

A社の情報分析システムで扱うデータには，個人情報が含まれているため，監査証跡ファイルの保管規則を次のように決めました。

過去3か月分の監査証跡ファイルは，監査証跡の出力先ディレクトリ下に保管する

出力後3か月が経過した監査証跡ファイルは，監査証跡の保存先ディレクトリに移動する

出力後1年が経過するまで，監査証跡の保存先ディレクトリ下に監査証跡ファイルを保管する

監査証跡の保存先ディレクトリ下に保管している，出力後1年が経過した監査証跡ファイルは削除する

A社の情報分析システムでは，データベースへのデータインポートが30分ごとに実行されます。また，BIツールからの検索クエリが，1日に約2,400回発生します。これらを考慮し，監査証跡機能で使用するディレクトリを設計します。

■監査証跡の出力先ディレクトリの設計

監査証跡の出力先ディレクトリには，3か月分の監査証跡ファイルを格納できる容量が必要になります。監査証跡の出力先ディレクトリの容量は次のように見積もります。

計算式

｛2,400クエリ×｛2キロバイト＋16キロバイト(SQL文長)｝＋24×2×(1キロバイト＋1キロバイト＋1キロバイト)｝×31日×3か月
＝｛2,400×(2＋16)＋24×2×(1＋1＋1)｝×31×3＝4,030,992キロバイト
≒4ギガバイト

上記の計算結果から，監査証跡の出力先ディレクトリを作成するディスク領域は，余裕も含めて10ギガバイトにします。

このディスク領域を/mnt/audittrail/outputareaにマウントし，監査証跡の出力先ディレクトリのパスを次のようにします。

/mnt/audittrail/outputarea/audit

■監査証跡の保存先ディレクトリの設計

監査証跡の保存先ディレクトリには，9か月分の監査証跡ファイルを格納できる容量が必要になります。監査証跡の保存先ディレクトリの容量は次のように見積もります。

計算式

｛2,400クエリ×｛2キロバイト＋16キロバイト(SQL文長)｝＋24×2×（1キロバイト＋1キロバイト＋1キロバイト）｝×31日×9か月
＝｛2,400×(2＋16)＋24×2×(1＋1＋1)｝×31×9＝12,092,976キロバイト
≒12ギガバイト

上記の計算結果から，監査証跡の保存先ディレクトリを作成するディスク領域は，余裕も含めて20ギガバイトにします。

このディスク領域を/mnt/audittrail/saveareaにマウントし，監査証跡の保存先ディレクトリのパスを次のようにします。

/mnt/audittrail/savearea/audit_bak

メモ

出力後3か月が経過した監査証跡ファイルを監査証跡の保存先ディレクトリに移動したあとに，出力後1年が経過した監査証跡ファイルを削除します。そのため，監査証跡の保存先ディレクトリには，9か月分の監査証跡ファイルを格納する容量が必要になります。

(4)　監査人を選定する

監査証跡機能を使用する場合，監査人を選定する必要があります。監査人とは，監査証跡機能の管理，運用を担当したり，監査を実施したりする人のことです。

データベースの運用担当者と，データベースの運用担当者の操作を確認する監査人は，別々の人物が担当する必要があります。A社では，監査証跡機能の使用に伴い，情報分析システムの担当者の役割分担を次の図のように決めました。

図12‒6　A社の情報分析システムの担当者の役割分担

DB管理担当者

HADBのデータベースを管理，運用する人です。主にデータベースのメンテナンス作業などを担当します。OSにログインする際は，HADB管理者のOSアカウントを使用します。また，HADBサーバに接続する際は，DBA権限を持っているHADBユーザの認可識別子ADBADMINを使用します。

監査証跡機能の管理担当者

監査証跡機能の管理，運用をする人です。監査証跡機能の有効または無効を管理したり，監査対象の定義をしたりします。OSにログインする際は，HADB管理グループに所属するOSユーザのアカウントを使用します。また，HADBサーバに接続する際は，監査管理権限を持っているHADBユーザの認可識別子ADBAUDITADMINを使用します。

DB監査担当者

監査を担当する人です。監査証跡を参照して，データベースの操作記録などを確認します。OSにログインする際は，HADB管理グループに所属するOSユーザのアカウントを使用します。また，HADBサーバに接続する際は，監査参照権限を持っているHADBユーザの認可識別子ADBAUDITVIEWERを使用します。

DB監査担当者は2名選定し，OSユーザのアカウントや，HADBユーザの認可識別子は，両者が使用します。

(5)　監査証跡ファイルへの書き込みに失敗した場合の処理方式を選択する

ディスクの満杯，またはディスク障害などによって，HADBサーバが監査証跡ファイルへの書き込みに失敗した場合の処理方式を選択する必要があります。次のどちらの処理方式にするかを選択します。

監査証跡ファイルへの書き込みに失敗した場合，HADBサーバを停止（異常終了）します。

監査証跡ファイルへの書き込みに失敗した場合，書き込みに失敗した監査証跡を破棄します。HADBサーバの動作は継続します。

上記の2.の方法を選択した場合，監査証跡の欠損が発生するおそれがあります。この場合，セキュリティインシデントが発生したときの調査が不十分になるおそれがあります。また，安全管理措置を怠ったと見なされると，社会的信用の失墜につながり，大きな損失となるおそれもあります。

情報分析システムは，24時間連続稼働が求められるECサイトとは完全に切り離されています。そのため，情報分析システムが停止しても，ECサイトの運営に影響はありません。

以上のことから，情報分析システムでは，監査証跡ファイルの書き込みに失敗した場合，HADBサーバを停止する1.の処理方式を選択することにしました。

さらに，監査証跡ファイルの書き込みに失敗したときに出力されるKFAA51404-Eメッセージを監視し，書き込み失敗を検知した場合は，HADBサーバの管理担当者と監査証跡機能の管理担当者に対して，メールが送信される運用を決めました。

12.7.3　環境設定

「12.7.2　設計」で決定した方針や運用方法に基づいて，監査証跡機能の環境設定を行います。

(1)　監査証跡機能で使用するディレクトリを作成する

監査証跡機能で使用する次のディレクトリを作成します。

監査証跡の出力先ディレクトリ（/mnt/audittrail/outputarea/audit）

監査証跡の保存先ディレクトリ（/mnt/audittrail/savearea/audit_bak）

各ディレクトリに対して必要となるパーミッションについては，「12.2.2　監査証跡機能で使用するディレクトリの準備」を参照してください。

重要

DB管理担当者が，HADB管理者のアカウントでOSにログインして，ディレクトリを作成します。

(2)　サーバ定義に監査証跡機能に関するオペランドを追加する

サーバ定義にadb_audit_log_pathオペランドを追加します。adb_audit_log_pathオペランドには，「(1)　監査証跡機能で使用するディレクトリを作成する」で作成した監査証跡の出力先ディレクトリを指定します。

サーバ定義に追加するオペランドの指定例

set adb_audit_log_path = /mnt/audittrail/outputarea/audit

なお，次に示す監査証跡機能に関するオペランドについては，デフォルト値を適用するため，指定を省略します。

adb_audit_log_max_size

adb_audit_log_max_num

重要

DB管理担当者が，HADB管理者のアカウントでOSにログインしてこの操作を行います。

HADBサーバが稼働中の場合は，HADBサーバを正常終了してからサーバ定義を修正してください。

(3)　HADBサーバをオフラインモードで開始する

adbstartコマンドを実行して，HADBサーバをオフラインモードで開始します。HADBサーバをオフラインモードで開始することで，監査証跡機能の環境設定を実施している間に，不正なアクセスが行われることを防ぐことができます。

コマンドの実行例

adbstart --offline

重要

DB管理担当者が，HADB管理者のアカウントでOSにログインしてこの操作を行います。

(4)　監査人を作成する

監査証跡機能の管理担当者や，DB監査担当者が使用する監査人（監査権限を持っているHADBユーザ）を作成します。

監査人の作成

監査証跡機能の管理担当者が使用するHADBユーザ（ADBAUDITADMIN）を新規に作成し，そのHADBユーザに監査管理権限を付与します。

監査管理権限を持つHADBユーザの作成例

CREATE USER "ADBAUDITADMIN" IDENTIFIED BY '@udi+@dmin'
GRANT AUDIT ADMIN,CONNECT TO "ADBAUDITADMIN"

また，DB監査担当者が使用するHADBユーザ（ADBAUDITVIEWER）を新規に作成し，そのHADBユーザに監査参照権限を付与します。

監査参照権限を持つHADBユーザの作成例

CREATE USER "ADBAUDITVIEWER" IDENTIFIED BY '@udi+viewer'
GRANT AUDIT VIEWER,CONNECT TO "ADBAUDITVIEWER"

重要

DB管理担当者が，DBA権限を持っているHADBユーザの認可識別子（ADBADMIN）でHADBサーバに接続してこの操作を行います。

監査人のパスワード変更

監査人の作成後，DB管理担当者は，監査証跡機能の管理担当者に，監査管理権限を付与したHADBユーザの認可識別子と初期パスワードを連絡します。また，DB監査担当者には，監査参照権限を付与したHADBユーザの認可識別子と初期パスワードを連絡します。各担当者は，そのHADBユーザの認可識別子でHADBサーバに接続し，初期パスワードを変更してください。

監査管理権限を持っているHADBユーザのパスワードの変更例

ALTER USER "ADBAUDITADMIN" IDENTIFIED BY '@uditDDD'

認可識別子がADBAUDITADMINのHADBユーザでHADBサーバに接続し，上記のSQL文を実行します。

監査参照権限を持っているHADBユーザのパスワードの変更例

ALTER USER "ADBAUDITVIEWER" IDENTIFIED BY '@uditVVV'

認可識別子がADBAUDITVIEWERのHADBユーザでHADBサーバに接続し，上記のSQL文を実行します。

メモ

監査人（監査権限を持っているHADBユーザ）のパスワードの変更は，監査人本人だけが実行できます。

(5)　監査証跡機能を有効にする

adbaudittrail --startコマンドを実行して，監査証跡機能を有効にします。

コマンドの実行例

adbaudittrail -u "ADBAUDITADMIN" -p '@uditDDD' --start --write-error DOWN

［説明］

-uと-pオプションには，監査管理権限を持っているHADBユーザの認可識別子とパスワードを指定します。

--startオプションは，監査証跡機能を有効にする際に指定するオプションです。

--write-errorオプションには，「12.7.2　設計」の「(5)　監査証跡ファイルへの書き込みに失敗した場合の処理方式を選択する」で決定した処理方式を指定します。この例では，DOWN（監査証跡ファイルへの書き込みに失敗した場合，HADBサーバを異常終了する処理方式）を指定します。

重要

監査証跡機能の管理担当者が，HADB管理グループに所属するユーザのアカウントでOSにログインし，この操作を行います。

adbaudittrail --startコマンドの実行後，adbaudittrail -dコマンドを実行して，監査証跡機能が有効になっていることを確認します。

コマンドの実行例

adbaudittrail -u "ADBAUDITADMIN" -p '@uditDDD' -d

コマンドの実行結果

audit  write-error audit-directory-path             audit-file-max-size audit-file-number
ACTIVE DOWN        /mnt/audittrail/outputarea/audit 256                 0

［説明］

監査証跡機能が有効になっている場合は，audit列にACTIVEが表示されます。

write-error列には，--write-errorオプションの指定値（監査証跡ファイルへの書き込みに失敗した場合の処理方式）が表示されます。

(6)　監査対象を定義する

「12.7.2　設計」の「(2)　監査証跡を出力するイベントを決める」で決めた設計方針に基づいて，選択監査イベントでも監査証跡を出力するようにします。CREATE AUDIT文を実行して，監査対象を定義します。

CREATE AUDIT文の実行例

CREATE AUDIT AUDITTYPE EVENT FOR ANY OPERATION

重要

監査証跡機能の管理担当者が，監査管理権限を持っているHADBユーザの認可識別子（ADBAUDITADMIN）でHADBサーバに接続してこの操作を行います。

(7)　HADBサーバの稼働モードを変更する

adbchgsrvmodeコマンドを実行して，HADBサーバの稼働モードを通常モードに変更します。稼働モードを通常モードに変更すると，クライアントからのHADBサーバへの接続要求を受け付けます。

コマンドの実行例

adbchgsrvmode --normal

重要

DB管理担当者が，HADB管理者のアカウントでOSにログインしてこの操作を行います。

12.7.4　定期運用

次に示す操作を定期的に実施します。

監査証跡の出力先ディレクトリ下の監査証跡ファイルを，監査証跡の保存先ディレクトリに移動する

監査証跡の保存先ディレクトリ下の，保管期間を超えた監査証跡ファイルを削除する

それぞれの操作について説明します。

(1)　監査証跡ファイルを移動する

監査証跡の出力先ディレクトリ下の監査証跡ファイルを，定期的に監査証跡の保存先ディレクトリ下に移動します。「12.7.2　設計」の「(3)　監査証跡機能で使用するディレクトリを設計する」で決めた監査証跡ファイルの保管規則に基づいて，出力後3か月が経過した監査証跡ファイルを監査証跡の保存先ディレクトリに移動します。

コマンドの実行例

find /mnt/audittrail/outputarea/audit -name "adbaud-*.aud" -and -mtime 93 -exec mv {} /mnt/audittrail/savearea/audit_bak ¥;

重要

DB管理担当者が，HADB管理者のアカウントでOSにログインしてこの操作を行います。

(2)　監査証跡ファイルを削除する

監査証跡の保存先ディレクトリ下の監査証跡ファイルを定期的に削除します。「12.7.2　設計」の「(3)　監査証跡機能で使用するディレクトリを設計する」で決めた監査証跡ファイルの保管規則に基づいて，出力後1年が経過した監査証跡ファイルを削除します。

コマンドの実行例

find /mnt/audittrail/savearea/audit_bak -name "adbaud-*.aud" -and -mtime 365 -exec rm -f {} ¥;

重要

DB管理担当者が，HADB管理者のアカウントでOSにログインしてこの操作を行います。

監査証跡ファイルの移動と削除を自動化したい場合は，次のコマンドをcronに登録します。

crontab -e
# 以下，crontab の設定記述。
# 毎日0時5分に，出力後3か月が経過した監査証跡ファイルを移動する。
5 0 * * * /bin/find /mnt/audittrail/outputarea/audit -name "adbaud-*.aud" -and -mtime 93 -exec mv {} /mnt/audittrail/savearea/audit_bak ¥;
# 毎日0時5分に，出力後1年が経過した監査証跡ファイルを削除する。
5 0 * * * /bin/find /mnt/audittrail/savearea/audit_bak -name "adbaud-*.aud" -and -mtime 365 -exec rm -f {} ¥;

12.7.5　定期監査の実施

「12.7.2　設計」の「(1)　監査の方針を決める」で決めた監査方針に基づいて，次のことを定期監査で確認します。

HADBサーバへの不審な接続がないことを確認する

A社の運用では，基本的にBIツールからHADBサーバに接続しています。データベースのメンテナンス作業などで，DB管理担当者がHADBサーバに接続する場合は，HADBサーバへの接続申請を事前に行っています。そのため，これら以外の方法でHADBサーバへの接続が行われていないかを確認します。また，HADBサーバへの接続は，申請どおりに適切に行われているかを確認します。

データベースの不正操作がないことを確認する

データベースの操作は，BIツールが自動的に作成したSQL文によって行われます。そのため，実行されるSQL文は定型的なものが多く，基本的には数パターンのSQL文しか実行されません。そのパターンから外れた，複雑なSQL文が実行されていないかを確認します。複雑なSQL文が実行されている場合，不正操作の可能性があります。

監査証跡機能の設定が不正に変更されていないことを確認する

監査証跡機能の設定変更は，社内で決められた手順に従って申請を行い，変更の許可が下りたあとに実施されます。そのため，許可されていない設定変更が実施されていないかを確認します。

上記の各監査項目の確認方法の例を以降で説明します。

(1)　HADBサーバへの不審な接続がないことを確認する

A社の情報分析システムでは，BIツールからHADBサーバに接続する際に使用される，認可識別子とアクセス元のマシンのIPアドレスが，次のように決まっています。

認可識別子：BI_ANALYSIS

アクセス元のマシンのIPアドレス：11.168.xx.32

HADBサーバへの接続時に，上記以外の認可識別子やIPアドレスが使用された場合，そのHADBサーバへの接続は，不正操作の可能性があります。

また，A社では，DB管理担当者が，データベースのメンテナンス作業などを行う場合は，事前に申請をする規則になっています。申請書には，メンテナンスの理由，作業内容，使用するマシン，作業の実施時刻，作業時に使用するHADBユーザの認可識別子などの情報を記入します。申請以外の作業を実施した場合は，実施した作業とその理由を申請先に報告します。このような規則で運用されているため，申請以外の操作や，報告以外の操作でHADBサーバへの接続が行われた場合，そのHADBサーバへの接続は，不正操作の可能性があります。

以上のことから，定期監査の際は次のことを確認します。

HADBサーバへの接続に失敗したHADBユーザがいるか

申請内容（認可識別子，マシンのIPアドレス，作業時間帯）にはない，HADBサーバへの接続が行われていないか

それぞれの調査方法を以降で説明します。

■HADBサーバへの接続に失敗したHADBユーザがいるかどうかを調査する方法

BIツールからのHADBサーバへの接続は，基本的には失敗しません。そのため，HADBサーバへの接続に失敗したHADBユーザがいるかどうかを重点的に調査します。次のSQL文を実行すると，HADBサーバへの接続に失敗したHADBユーザを確認できます。

SQL文の実行例

SELECT "USER_NAME","CLIENT_IP_ADDRESS","EXEC_TIME"                                   ...1
  FROM TABLE(ADB_AUDITREAD(MULTISET['/mnt/audittrail/outputarea/audit/*.aud'])) "DT" ...2
    WHERE "EVENT_SUBTYPE"='CONNECT' AND "EVENT_RESULT"='FAILURE'                     ...3

［説明］

HADBサーバへの接続に失敗したHADBユーザの認可識別子（USER_NAME），接続依頼元のマシンのIPアドレス（CLIENT_IP_ADDRESS），接続操作を実行した日時（EXEC_TIME）の一覧を出力するために指定します。

定期監査では，過去3か月の監査証跡を調査対象とするため，監査証跡の出力先ディレクトリ（/mnt/audittrail/outputarea/audit）下の全監査証跡ファイルを入力情報にします。

HADBサーバへの接続が失敗した操作記録を抽出するための条件を指定します。

上記のSQL文の実行結果を確認します。認可識別子（USER_NAME），接続依頼元のマシンのIPアドレス（CLIENT_IP_ADDRESS），接続操作を実行した日時（EXEC_TIME）が，申請の内容や，事後報告の内容と合っているかを確認します。合っていない操作記録がある場合は，不正操作の可能性があるため，そのことを監査結果として報告します。

■申請内容（認可識別子，マシンのIPアドレス，作業時間帯）にはない，HADBサーバへの接続が行われていないかを調査する方法

申請された作業以外で，HADBサーバへの接続が行われていないかを調査します。次のSQL文を実行すると，申請された作業以外の，HADBサーバへの接続記録を確認できます。

SQL文の実行例

SELECT "USER_NAME","CLIENT_IP_ADDRESS","EXEC_TIME"                                   ...1
  FROM TABLE(ADB_AUDITREAD(MULTISET['/mnt/audittrail/outputarea/audit/*.aud'])) "DT" ...2
    WHERE "EVENT_SUBTYPE"='CONNECT'                                                  ...3
     AND ("CLIENT_IP_ADDRESS"!='10.196.xx.122'                                       ...4
       OR "USER_NAME"!='MAINTENANCE_USER25239'                                       ...4
       OR "EXEC_TIME" NOT BETWEEN TIMESTAMP'2017/06/08 00:00:00.000000'              ...4
                              AND TIMESTAMP'2017/06/08 00:30:00.000000')             ...4

［説明］

HADBサーバへの接続を試みたHADBユーザの認可識別子（USER_NAME），接続依頼元のマシンのIPアドレス（CLIENT_IP_ADDRESS），接続操作を実行した日時（EXEC_TIME）の一覧を出力するために指定します。

定期監査では，過去3か月の監査証跡を調査対象とするため，監査証跡の出力先ディレクトリ（/mnt/audittrail/outputarea/audit）下の全監査証跡ファイルを入力情報にします。

HADBサーバへの接続記録を抽出するための条件を指定します。

申請内容に当てはまらない条件を指定します。申請内容に記載されているIPアドレス，認可識別子，作業時間を否定条件で指定します。

上記のSQL文の例は，申請された作業が1件の場合の例です。申請された作業が複数ある場合は，その申請内容の条件を探索条件に追加してください。

上記のSQL文の実行結果には，申請された作業以外でHADBサーバへの接続を試みたHADBユーザの認可識別子などが出力されます。これらのHADBサーバへの接続は，不正操作の可能性があるため，そのことを監査結果として報告します。

(2)　データベースの不正操作がないことを確認する

A社の情報分析システムでは，次に示すデータベース操作が行われます。

表へのデータインポート（30分ごとに実行）

BIツールを使用したデータベースの検索

申請された作業によるデータベース操作

上記以外のデータベース操作は，不正操作の可能性があるため，定期監査の際は次のことを確認します。

不審なデータインポートが実行されていないか

BIツール以外の方法で，データベースの検索が実行されていないか

申請されていないデータベース操作が実行されていないか

それぞれの調査方法を以降で説明します。

■不審なデータインポートが実行されていないかを調査する方法

次のSQL文を実行すると，表へのデータインポートの操作記録を確認できます。

SQL文の実行例

SELECT "USER_NAME","EXEC_TIME"                                                       ...1
  FROM TABLE(ADB_AUDITREAD(MULTISET['/mnt/audittrail/outputarea/audit/*.aud'])) "DT" ...2
    WHERE "EVENT_SUBTYPE"='ADBIMPORT'                                                ...3

［説明］

データインポートを実行したHADBユーザの認可識別子（USER_NAME），データインポートを実行した日時（EXEC_TIME）の一覧を出力するために指定します。

定期監査では，過去3か月の監査証跡を調査対象とするため，監査証跡の出力先ディレクトリ（/mnt/audittrail/outputarea/audit）下の全監査証跡ファイルを入力情報にします。

adbimportコマンドを実行した操作記録を抽出するための条件を指定します。

上記のSQL文の実行結果のEXEC_TIME列（データインポートを実行した日時）を確認します。A社では，毎時00分頃または30分頃にデータインポートが実行されます。明らかに違う時刻にデータインポートが実行されている場合は，定期的なデータインポートではない可能性があります。また，事前に申請されているデータインポートではない場合も不正操作の可能性があるため，そのことを監査結果として報告します。

■BIツール以外の方法で，データベースの検索が実行されていないかを調査する方法

次のSQL文を実行すると，BIツールを使用した検索を除いた，データベースの検索記録を確認できます。

SQL文の実行例

SELECT "USER_NAME","EXEC_TIME"                                                       ...1
  FROM TABLE(ADB_AUDITREAD(MULTISET['/mnt/audittrail/outputarea/audit/*.aud'])) "DT" ...2
    WHERE "EVENT_SUBTYPE"='SELECT'                                                   ...3
     AND ("CLIENT_IP_ADDRESS"!='11.168.xx.32' OR "USER_NAME"!='BI_ANALYSIS')         ...3

［説明］

データベースの検索（BIツールを使用した検索を除く）を実行したHADBユーザの認可識別子（USER_NAME），検索を実行した日時（EXEC_TIME）の一覧を出力するために指定します。

定期監査では，過去3か月の監査証跡を調査対象とするため，監査証跡の出力先ディレクトリ（/mnt/audittrail/outputarea/audit）下の全監査証跡ファイルを入力情報にします。

データベースの検索記録（BIツールを使用した検索を除く）を抽出するための条件を指定します。

BIツールを使用してデータベースを検索する場合，HADBサーバへの接続時に使用する認可識別子は，BI_ANALYSIS固定となっています。また，HADBサーバへの接続元のクライアントのIPアドレスは，11.168.xx.32固定となっています。したがって，この認可識別子またはIPアドレス以外でHADBサーバに接続している場合は，BIツールを使用しないでデータベースを検索しています。この検索は，不正操作の可能性があるため，そのことを監査結果として報告します。

なお，事前に申請されているデータベースの検索操作でないことも確認してください。

■申請されていないデータベース操作が実行されていないかを調査する方法

申請されていないデータベース操作が実行されていないかを調査するには，データベースの操作記録の一覧を出力し，申請内容と照らし合わせるなどの方法が考えられます。

(3)　監査証跡機能の設定が不正に変更されていないことを確認する

監査証跡機能の設定は，社内で決められた手順に従って変更の申請を行い，変更の許可が下りた場合に限り設定変更ができる規則になっています。したがって，申請されていない設定変更が行われた場合，その設定変更は不正操作の可能性があります。

また，申請が行われている場合であっても，申請内容と異なる設定変更が行われたときは，その設定変更も不正操作の可能性があります。これらの不正操作の可能性を監査の結果として報告します。

次のSQL文を実行すると，監査証跡機能の設定変更の操作記録を確認できます。

SQL文の実行例

SELECT "USER_NAME","CLIENT_IP_ADDRESS","EXEC_TIME"                                   ...1
  FROM TABLE(ADB_AUDITREAD(MULTISET['/mnt/audittrail/outputarea/audit/*.aud'])) "DT" ...2
    WHERE "EVENT_TYPE"='AUDIT'                                                       ...3

［説明］

監査証跡機能の設定変更を行ったHADBユーザの認可識別子（USER_NAME），設定変更を依頼したマシンのIPアドレス（CLIENT_IP_ADDRESS），設定変更を行った日時（EXEC_TIME）の一覧を出力するために指定します。

定期監査では，過去3か月の監査証跡を調査対象とするため，監査証跡の出力先ディレクトリ（/mnt/audittrail/outputarea/audit）下の全監査証跡ファイルを入力情報にします。

監査証跡機能の設定変更を行った際の操作記録を抽出するための条件を指定します。

上記のSQL文の実行結果を確認します。申請されていない設定変更が行われている場合，その設定変更は不正操作の可能性があるため，そのことを監査結果として報告します。

12.7.6　セキュリティインシデント発生時の調査

次に示すセキュリティインシデントが発生したときの調査例を説明します。

セキュリティインシデントの発生状況

A社のECサイトを利用しているユーザの個人情報が，インターネット上に流出している可能性があるとの連絡があり，確認したところ，A社の情報分析システムで管理していた顧客情報であることが判明しました。そこで，DB管理担当者と監査証跡機能の管理担当者が，顧客情報の漏えい経路の確認，漏えい時期，漏えいしたデータの規模についての調査を行うことに決定しました。調査方法の例を以降で説明します。

(1)　情報の漏えい元を特定する

インターネット上に流出した情報には，顧客の性別や誕生日などの情報が含まれていることが調査の結果わかっています。これらの情報は，情報分析システムのデータベースのCUSTOMERS_ANALYSIS表に格納されている情報であることから，この表のデータが情報の漏えい元であると特定しました。

(2)　漏えい元の情報にアクセスしたHADBユーザを調査する

漏えい元の情報を格納しているCUSTOMERS_ANALYSIS表にアクセスしたHADBユーザ，アクセス元IPアドレス，アクセス日時，およびアクセス件数を調査します。

次のSQL文を実行すると，CUSTOMERS_ANALYSIS表にアクセスしたHADBユーザなどの情報を確認できます。

SQL文の実行例

SELECT "USER_NAME","CLIENT_IP_ADDRESS","EXEC_TIME","ACCESS_COUNT"                     ...1
  FROM TABLE(ADB_AUDITREAD(MULTISET['/mnt/audittrail/savearea/audit_bak/*.aud',       ...2
                                    '/mnt/audittrail/outputarea/audit/*.aud'])) "DT"  ...2
    WHERE "OBJECT_SCHEMA_NAME"='ANALYSIS_SYSTEM'                                      ...3
      AND "OBJECT_NAME"='CUSTOMERS_ANALYSIS'                                          ...3
      AND ("EVENT_SUBTYPE"='SELECT' OR "EVENT_SUBTYPE"='ADBEXPORT')                   ...4
      AND "EVENT_RESULT"='SUCCESS'                                                    ...5

［説明］

CUSTOMERS_ANALYSIS表にアクセスしたHADBユーザの認可識別子（USER_NAME），表へのアクセスを依頼したマシンのIPアドレス（CLIENT_IP_ADDRESS），アクセス日時（EXEC_TIME），およびアクセス件数（ACCESS_COUNT）の一覧を出力するために指定します。

不正アクセスの実行時期が不明なため，すべての監査証跡を調査対象にします。そのため，次のディレクトリ下の全監査証跡ファイルを入力情報にします。

監査証跡の保存先ディレクトリ（/mnt/audittrail/savearea/audit_bak）

監査証跡の出力先ディレクトリ（/mnt/audittrail/outputarea/audit）

漏えい元のCUSTOMERS_ANALYSIS表のスキーマ名と表識別子を検索の条件に指定します。

実行された操作（SELECT文による表検索，adbexportコマンドによる表データのエクスポート）を検索の条件に指定します。

4.の操作（イベント）が成功したという条件を，検索の条件に指定します。

重要

DB監査担当者が，監査参照権限を持っているHADBユーザの認可識別子（ADBAUDITVIEWER）でHADBサーバに接続してこの操作を行います。

現用ファイル中の監査証跡も調査対象にする場合は，adbaudittrail --swapコマンドで現用の監査証跡ファイルを切り替えたあとにSQL文を実行してください。

(3)　不正アクセスを実行したHADBユーザが，ほかの表にアクセスした形跡がないかを調査する

「(2)　漏えい元の情報にアクセスしたHADBユーザを調査する」で，不正アクセスを実行したHADBユーザを特定したあとに，そのHADBユーザがほかの表にアクセスした形跡がないかを調査します。不正アクセスを実行したHADBユーザが，ほかの表にもアクセスしている場合，その表に格納されている情報も漏えいしているおそれがあります。

次のSQL文を実行すると，不正アクセスを実行したHADBユーザがアクセスした表を確認できます。

SQL文の実行例

不正アクセスを実行したHADBユーザの認可識別子をADBUSER05とした場合の例です。

SELECT "EXEC_TIME","OBJECT_OWNER_NAME","OBJECT_SCHEMA_NAME",                          ...1
                 "OBJECT_NAME","ACCESS_COUNT"                                         ...1
  FROM TABLE(ADB_AUDITREAD(MULTISET['/mnt/audittrail/savearea/audit_bak/*.aud',       ...2
                                    '/mnt/audittrail/outputarea/audit/*.aud'])) "DT"  ...2
    WHERE "USER_NAME"='ADBUSER05'                                                     ...3
     AND ("OBJECT_TYPE"='TABLE' OR "OBJECT_TYPE"='VIEW')                              ...4
     AND ("EVENT_SUBTYPE"='SELECT' OR "EVENT_SUBTYPE"='ADBEXPORT')                    ...5
     AND "EVENT_RESULT"='SUCCESS'                                                     ...6
     AND "OBJECT_NAME"!='CUSTOMERS_ANALYSIS'                                          ...7

［説明］

次の項目の一覧を出力するために指定します。

不正アクセスを実行したHADBユーザが表（ビュー表も含む）にアクセスした日時（EXEC_TIME）

不正アクセスを実行したHADBユーザがアクセスした表の情報

表の所有者の認可識別子（OBJECT_OWNER_NAME）

表のスキーマ名（OBJECT_SCHEMA_NAME）

表識別子（OBJECT_NAME）

アクセス件数（ACCESS_COUNT）

不正アクセスの実行時期が不明なため，すべての監査証跡を調査対象にします。そのため，次のディレクトリ下の全監査証跡ファイルを入力情報にします。

監査証跡の保存先ディレクトリ（/mnt/audittrail/savearea/audit_bak）

監査証跡の出力先ディレクトリ（/mnt/audittrail/outputarea/audit）

不正アクセスを実行したHADBユーザの認可識別子（ADBUSER05）を検索の条件に指定します。

オブジェクトの種別（表とビュー表）を検索の条件に指定します。

実行された操作（SELECT文による表検索，adbexportコマンドによる表データのエクスポート）を検索の条件に指定します。

5.の操作（イベント）が成功したという条件を，検索の条件に指定します。

CUSTOMERS_ANALYSIS表を除外することを検索の条件に指定します。CUSTOMERS_ANALYSIS表に対して不正アクセスを実行していることがわかっているため，この条件を指定します。

重要

DB監査担当者が，監査参照権限を持っているHADBユーザの認可識別子（ADBAUDITVIEWER）でHADBサーバに接続してこの操作を行います。

現用ファイル中の監査証跡も調査対象にする場合は，adbaudittrail --swapコマンドで現用の監査証跡ファイルを切り替えたあとにSQL文を実行してください。

(4)　調査結果を報告する

次のような調査結果をまとめて，報告をします。

情報を漏えいさせたHADBユーザ

「(2)　漏えい元の情報にアクセスしたHADBユーザを調査する」で特定したHADBユーザが，情報を漏えいさせたHADBユーザの可能性があります。

情報が漏えいした日時

「(2)　漏えい元の情報にアクセスしたHADBユーザを調査する」および「(3)　不正アクセスを実行したHADBユーザが，ほかの表にアクセスした形跡がないかを調査する」で特定した日時が，情報が漏えいした日時である可能性があります。

漏えいした情報

「(1)　情報の漏えい元を特定する」および「(3)　不正アクセスを実行したHADBユーザが，ほかの表にアクセスした形跡がないかを調査する」で特定した表に格納されている情報が漏えいしている可能性があります。

漏えいした情報の件数（被害規模）

「(2)　漏えい元の情報にアクセスしたHADBユーザを調査する」および「(3)　不正アクセスを実行したHADBユーザが，ほかの表にアクセスした形跡がないかを調査する」で特定したアクセス件数が，漏えいした可能性のある情報の件数になります。

12.8　監査証跡機能とJP1/Audit Management - Managerとの連携

ここでは，監査証跡機能とJP1/Audit Management - Manager（JP1/Audit）を連携する方法について説明します。

監査証跡機能とJP1/Auditの連携に関する説明は，JP1/AuditおよびJP1/Baseについての知識があることを前提としています。JP1/Auditの詳細については，マニュアルJP1/Audit　構築・運用ガイドを参照してください。また，JP1/Baseの詳細については，マニュアルJP1/Base　運用ガイドを参照してください。

監査証跡の変換に関する概要を知りたい場合は，「2.18.9　監査証跡の変換（JP1/Audit Management - Managerとの連携）」を参照してください。

重要

JP1/Auditのマニュアルでは，監査証跡のことを監査ログと表記しています。そのため，HADBのマニュアルでも，監査証跡を監査ログと表記する個所があります。

12.8.1　監査証跡機能とJP1/Auditを連携する際の概要

ここでは，監査証跡機能とJP1/Auditを連携する際の概要として，次の3点について説明します。

システム構成例

サーバ構成と前提ソフトウェア

adbconvertaudittrailfileコマンドを実行する際の注意事項

(1)　システム構成例

ここでは，監査証跡機能とJP1/Auditを連携する場合のシステム構成について説明します。

監査証跡機能とJP1/Auditを連携する場合のシステム構成例を，次の図に示します。

図12‒7　監査証跡機能とJP1/Auditを連携する場合のシステム構成例

［説明］

図に示すシステム構成例では，2種類のサーバ（監査ログ管理サーバと監査ログ収集対象サーバ）で構成されています。

監査ログ管理サーバでは，監査ログ収集対象サーバ上のJP1/Baseのイベントデータベースから監査証跡を収集して，一元管理します。

監査ログ収集対象サーバでは，監査ログ収集対象サーバ上のHADBサーバが監査証跡を出力して，adbconvertaudittrailfileコマンドで変換します。そして，変換後の監査証跡を収集して，監査ログ収集対象サーバ上のJP1/Baseのイベントデータベースに蓄積します。

メモ

監査を行うユーザは，Webブラウザ上から監査ログ管理サーバにアクセスして，監査を実施できます。

(2)　サーバ構成と前提ソフトウェア

ここでは，監査証跡機能とJP1/Auditを連携する場合のサーバ構成と，前提ソフトウェアについて説明します。

■サーバ構成

「(1)　システム構成例」で説明しているとおり，監査証跡機能とJP1/Auditを連携する場合は，次の2種類のサーバが必要です。

監査ログ管理サーバ

JP1/AuditおよびJP1/Baseが稼働するサーバマシンです。監査ログ収集対象サーバから監査証跡を収集して，一元管理します。

監査ログ収集対象サーバ

HADBサーバおよびJP1/Baseが稼働するサーバマシンです。adbconvertaudittrailfileコマンドで変換されたHADBサーバの監査証跡を収集して，JP1/Baseのイベントデータベースに蓄積します。

重要

HADBサーバとJP1/Auditでは，前提OSが異なります。そのため，HADBサーバが稼働するサーバマシンに，JP1/Auditをインストールすることはできません。

監査ログ管理サーバの前提OSについては，マニュアルJP1/Audit　構築・運用ガイドを参照してください。

■前提ソフトウェア

監査証跡機能とJP1/Auditを連携する場合の前提ソフトウェアを，次の表に示します。

表12‒4　監査証跡機能とJP1/Auditを連携する場合の前提ソフトウェア

導入対象のサーバ

前提ソフトウェア

監査ログ管理サーバ

HADBサーバのOSがRHEL 8の場合

JP1/Audit Management - Manager 11-00-04以降

JP1/Base 12-10以降

HADBサーバのOSがRHEL 9以降の場合

監査証跡機能とJP1/Auditの連携はできません。

監査ログ収集対象サーバ

HADBサーバのOSがRHEL 8の場合

JP1/Base 12-10-02以降

HADBサーバのOSがRHEL 9以降の場合

監査証跡機能とJP1/Auditの連携はできません。

(3)　adbconvertaudittrailfileコマンドを実行する際の注意事項

adbconvertaudittrailfileコマンドを実行する際の注意事項を次に示します。

adbconvertaudittrailfileコマンドは，JP1/Auditで監査ログを監視しているときに実行してください。監査ログの監視を停止しているときに，adbconvertaudittrailfileコマンドを実行しても，変換された監査証跡はJP1/Auditに収集されません。監査ログの監視については，マニュアルJP1/Audit　構築・運用ガイドを参照してください。

adbconvertaudittrailfileコマンドは，HADBサーバが稼働中のときだけ実行できます。adbconvertaudittrailfileコマンドの実行中に，ほかのユーザがHADBサーバを利用することを避けたいときは，HADBサーバの稼働モードをメンテナンスモードに変更してください。そのあとで，adbconvertaudittrailfileコマンドを実行してください。メンテナンスモードについては，「10.2.3　HADBサーバの稼働モード」を参照してください。

adbconvertaudittrailfileコマンドは，現用の監査証跡ファイルに対しては実行できません。現用の監査証跡ファイル内の監査証跡を変換したい場合は，事前にadbaudittrail --swapコマンドで，現用の監査証跡ファイルの切り替えを行ってください。そのあとで，リネームされた監査証跡ファイルに対して，adbconvertaudittrailfileコマンドを実行してください。現用の監査証跡ファイルの切り替えについては，「12.4.2　現用の監査証跡ファイルの切り替え」を参照してください。

メモ

adbconvertaudittrailfileコマンドについては，マニュアルHADB　コマンドリファレンスのadbconvertaudittrailfile（監査証跡ファイルの変換）を参照してください。

adbaudittrailコマンドについては，HADB　コマンドリファレンスのadbaudittrail（監査証跡機能の管理）を参照してください。

12.8.2　統一フォーマット用監査証跡ファイルの形式と出力項目

ここでは，adbconvertaudittrailfileコマンドで変換された監査証跡が出力される，統一フォーマット用監査証跡ファイルの形式について説明します。

adbconvertaudittrailfileコマンドを実行すると，統一フォーマット用監査証跡ファイルには，1行ごとに1つの監査証跡が出力されます。また，統一フォーマット用監査証跡ファイルには，最初の監査証跡が出力される前に空白行が出力されます。

統一フォーマット用監査証跡ファイルに出力される，adbconvertaudittrailfileコマンドで変換された監査証跡の出力形式と出力項目を次に示します。

■adbconvertaudittrailfileコマンドで変換された監査証跡の出力形式

CALFHM 1.0,出力項目1=値1,出力項目2=値2,出力項目3=値3,…出力項目n=値n

■adbconvertaudittrailfileコマンドで変換された監査証跡の出力項目

adbconvertaudittrailfileコマンドで変換された監査証跡の出力項目を，次の表に示します。

adbconvertaudittrailfileコマンドで変換された監査証跡の出力項目の大部分は，ADB_AUDITREAD関数で監査証跡ファイル中の監査証跡を表形式のデータ集合（表関数導出表）に変換したときの出力項目と同じです。ADB_AUDITREAD関数による表関数導出表の列構成については，「12.9.2　監査証跡を検索するときの表関数導出表の列構成」を参照してください。

なお，出力項目に出力されるデータが出力項目のバイト数の上限を超える場合は，データの先頭またはデータの末尾が省略されます。このとき，該当個所には，省略されたことを示す「...」が付与されます。次の表で，特に記述がない出力項目についてはデータの末尾が省略されます。

また，出力されるデータがNULLの場合，出力項目そのものが出力されません。

表12‒5　adbconvertaudittrailfileコマンドで変換された監査証跡の出力項目の一覧

項番

出力項目

出力される内容

ADB_AUDITREAD関数で変換した表関数導出表に該当する列名

区分

項目名

属性名

1

ヘッダ情報

共通仕様識別子

−

CALFHMが出力されます。

統一フォーマット用監査証跡ファイル内の，すべての監査証跡の先頭に共通で出力されます。

なし

2

共通仕様リビジョン番号

−

1.0が出力されます。

統一フォーマット用監査証跡ファイル内の，すべての監査証跡の先頭に共通で出力されます。

なし

3

共通情報

通番

seqnum

1〜2,147,483,647の値が，出力行ごとにカウントされて出力されます。

最大値に達した場合は，1に戻ります。

また，adbconvertaudittrailfileコマンドの実行ごとに1に戻ります。

なし

4

メッセージID

msgid

「表12‒10　監査証跡を検索するときの表関数導出表の列構成」のEXIT_STATUS列の内容が出力されます。

EXIT_STATUS

5

日付・時刻

date

「表12‒10　監査証跡を検索するときの表関数導出表の列構成」のEXEC_TIME列の内容が，次の形式で出力されます。

YYYY-MM-DDThh:mm:ss.nnnTZD

YYYY-MM-DD：年月日

T：日付と時刻の区切り

hh:mm:ss.nnn：時分秒ミリ秒

TZD：監査証跡ファイルに監査証跡が出力されたときのタイムゾーン※1

EXEC_TIME

6

発生プログラム名

progid

HADBが出力されます。

なし

7

発生コンポーネント名

compid

「表12‒10　監査証跡を検索するときの表関数導出表の列構成」のADBDIR列の内容が，64バイト以内で出力されます。

64バイトを超える場合は，データの先頭が省略されます。

出力される値は，エスケープされます。※2

ADBDIR

8

発生プロセスID

pid

「表12‒10　監査証跡を検索するときの表関数導出表の列構成」のHADB_PROCESS_ID列の内容が出力されます。

HADB_PROCESS_ID

9

発生場所

ocp:host

「表12‒10　監査証跡を検索するときの表関数導出表の列構成」のHADB_HOST_NAME列の内容が，64バイト以内で出力されます。

HADB_HOST_NAME

10

事象の種別

ctgry

「表12‒10　監査証跡を検索するときの表関数導出表の列構成」のEVENT_SUBTYPE列の内容が，統一フォーマットで定められている種別に変換されて出力されます。

変換内容については，「表12‒6　イベント種別の値と監査事象の種別の値の対応」を参照してください。

EVENT_SUBTYPE

11

事象の結果

result

「表12‒10　監査証跡を検索するときの表関数導出表の列構成」のEVENT_RESULT列の内容が出力されます。

EVENT_RESULT

12

サブジェクト識別情報

subj:uid

「表12‒10　監査証跡を検索するときの表関数導出表の列構成」のUSER_NAME列の内容が出力されます。

なお，USER_NAME列の内容が，NULLのときは出力されません。

USER_NAME

13

subj:euid

「表12‒10　監査証跡を検索するときの表関数導出表の列構成」のOS_USER_NAME列の内容が，100バイト以内で出力されます。

なお，USER_NAME列の内容がNULLのときだけ出力されます。

OS_USER_NAME

14

「表12‒10　監査証跡を検索するときの表関数導出表の列構成」のOS_USER_NAME列とUSER_NAME列の内容が，両方ともNULLの場合に，「*」が出力されます。

なし

15

固有情報

オブジェクト情報

obj

「表12‒10　監査証跡を検索するときの表関数導出表の列構成」のOBJECT_SCHEMA_NAME列とOBJECT_NAME列の内容が連結されて出力されます。

出力形式については，「表12‒7　オブジェクト情報の出力書式」を参照してください。

出力される値は，エスケープされます。※2

OBJECT_SCHEMA_NAME

OBJECT_NAME

16

動作情報

op

「表12‒10　監査証跡を検索するときの表関数導出表の列構成」のEVENT_SUBTYPE列の内容が，32バイト以内で出力されます。

出力される値は，エスケープされます。※2

EVENT_SUBTYPE

17

リクエスト送信元ホスト

from:ipv4

「表12‒10　監査証跡を検索するときの表関数導出表の列構成」のCLIENT_IP_ADDRESS列の内容が出力されます。

CLIENT_IP_ADDRESS

18

リクエスト送信元ポート番号

from:port

「表12‒10　監査証跡を検索するときの表関数導出表の列構成」のCLIENT_PORT_NUMBER列の内容が出力されます。

CLIENT_PORT_NUMBER

19

メッセージ

msg

変換元の監査証跡ファイルのファイル名が出力されます。ディレクトリ名は含まれません。

出力される値は，エスケープされます。※2

なし

（凡例）

−：該当しません。

注※1

UTC（協定世界時）からのオフセットを示したタイムゾーン指定です。次のどれかが出力されます。

+hh:mm

UTC（協定世界時）からhh:mmだけ進んでいることを示します。

-hh:mm

UTC（協定世界時）からhh:mmだけ遅れていることを示します。

Z

UTC（協定世界時）と同じであることを示します。

日本標準時は，「+09:00」となります。

注※2

エスケープによって，出力される値全体が二重引用符（"）で囲まれます。また，出力される値に二重引用符（"）が含まれる場合は，2つの二重引用符（""）に置き換えられます。

データの長さには，エスケープによる二重引用符（"）も含まれます。そのため，エスケープによる二重引用符（"）を含んだデータが，出力できるバイト数の上限よりも長い場合は，データの先頭またはデータの末尾が省略されます。

HADBの監査証跡のイベント種別の値と，統一フォーマットの監査事象の種別の値の対応を，次の表に示します。

表12‒6　イベント種別の値と監査事象の種別の値の対応

項番

イベントの分類

イベントの種類

監査証跡に出力されるイベント種別の値

統一フォーマットの監査事象の種別の値

1

必須監査イベント

システムイベント

ADBSTART

StartStop

2

ADBSTOP

3

ADBCHGSRVMODE

ConfigurationAccess

4

ADBCHGNODETYPE

5

ADBCHGSQLTRC

6

ADBCLIENTDEFMANG

7

ADBMODAREA

8

ADBMODBUFF

9

ADBCOLUMNIZE

10

監査イベント

GRANT

AccessControl

11

REVOKE

12

CREATE AUDIT

ConfigurationAccess

13

DROP AUDIT

14

ALTER USER

AccessControl

15

ADBAUDITTRAIL START

ConfigurationAccess

16

ADBAUDITTRAIL STOP

17

ADBAUDITTRAIL SWAP

18

ADBAUDITTRAIL DISPLAY

19

SELECT

ContentAccess

20

ADBEXPORT

21

ADBCONVERTAUDITTRAILFILE

22

暗号イベント

ADBMKDMK

ConfigurationAccess

23

ADBUPDDMK

24

GRANT

AccessControl

25

REVOKE

26

選択監査イベント

セッションイベント

CONNECT

Authentication

27

CONNECT(PAM)

28

CONNECT(Keycloak)

29

DISCONNECT

30

権限管理イベント

GRANT

AccessControl

31

REVOKE

32

CREATE USER

33

DROP USER

34

ALTER USER

35

定義系SQLイベント

CREATE FOREIGN TABLE

ContentAccess

36

CREATE INDEX

37

CREATE SCHEMA

38

CREATE SERVER

39

CREATE TABLE

40

CREATE VIEW

41

DROP FOREIGN TABLE

42

DROP INDEX

43

DROP SCHEMA

44

DROP SERVER

45

DROP TABLE

46

DROP VIEW

47

ALTER SERVER

48

ALTER TABLE

49

ALTER VIEW

50

操作系SQLイベント

SELECT

51

INSERT

52

UPDATE

53

DELETE

54

TRUNCATE TABLE

55

PURGE CHUNK

56

COPY

57

UNKNOWN

58

GETDATA

59

GETCOUNT

60

TABLES

61

COLUMNS

62

INDEXES

63

CHUNKS

64

GETUSER

65

コマンド操作イベント

ADBIMPORT

66

ADBIDXREBUILD

67

ADBGETCST

68

ADBDBSTATUS

69

ADBEXPORT

70

ADBMERGECHUNK

71

ADBCHGCHUNKCOMMENT

72

ADBCHGCHUNKSTATUS

73

ADBARCHIVECHUNK

74

ADBUNARCHIVECHUNK

75

ADBREORGSYSTEMDATA

76

ADBSYNDICT

オブジェクト情報の出力書式を，次の表に示します。オブジェクト情報は，OBJECT_SCHEMA_NAME列およびOBJECT_NAME列の値によって，次に示すどれかの書式で出力されます。

表12‒7　オブジェクト情報の出力書式

項番

OBJECT_SCHEMA_NAME列

OBJECT_NAME列

書式

出力例

1

非ナル値

非ナル値

OBJECT_SCHEMA_NAME列とOBJECT_NAME列の値を，ピリオド（.）で連結します。

obj="ADBUSER01.T1"

2

ナル値

非ナル値

OBJECT_NAME列の値だけを出力します。

obj="ADBUSER01"※

3

ナル値

ナル値

出力されません。

−

（凡例）

−：該当しません。

注※

CREATE SCHEMA文の出力例です。この例の場合，OBJECT_NAME列にはスキーマ名が出力されます。

12.8.3　監査証跡機能とJP1/Auditを連携する際の環境設定

ここでは，監査証跡機能とJP1/Auditを連携する際の環境設定について説明します。

監査証跡機能とJP1/Auditを連携する場合，HADBサーバとJP1/Auditの両方で環境設定が必要です。

(1)　HADBサーバの環境設定

HADBサーバの環境設定としては，統一フォーマット用監査証跡の出力先ディレクトリを準備する必要があります。

統一フォーマット用監査証跡の出力先ディレクトリを作成する際の注意点を，次に示します。

4ギガバイト以上の空き容量があるディスクに，統一フォーマット用監査証跡の出力先ディレクトリを作成してください。統一フォーマット用監査証跡の出力先ディレクトリには，次のファイルが格納されます。

統一フォーマット用監査証跡ファイル（adbcommonauditXX.log）

adbconvertaudittrailfileコマンドで変換された監査証跡が出力されるファイルです。最大で4つのファイルが格納されます。ファイル名のXXは通番であり，01～04のどれかになります。

4つの統一フォーマット用監査証跡ファイルの合計サイズは，最大で2ギガバイトです。ただし，統一フォーマット用監査証跡ファイルの切り替えを行う際に，古いデータが一時的に残るおそれがあります。そのため，4ギガバイト以上の空き容量があるディスクを準備してください。

統一フォーマット用監査証跡管理ファイル（.adbcommonaudit）

統一フォーマット用監査証跡ファイル群を管理するファイルです。1つのファイルだけ格納されます。

メモ

統一フォーマット用監査証跡ファイルの切り替えについては，マニュアルHADB　コマンドリファレンスのadbconvertaudittrailfile（監査証跡ファイルの変換）を参照してください。

統一フォーマット用監査証跡の出力先ディレクトリのフルパスの長さは，末尾の「/」を含めて239バイト以内にしてください。フルパスの長さが240バイト以上ある場合，JP1/Auditが正しく設定できません。

HADB管理者がアクセスできるように，統一フォーマット用監査証跡の出力先ディレクトリには，読み取り権限，書き込み権限および実行権限を付与してください。

運用テストを行うなどで，1つのサーバマシンで複数のHADBサーバを動作させる場合，それぞれの環境で，専用の統一フォーマット用監査証跡の出力先ディレクトリを準備してください。1つの統一フォーマット用監査証跡の出力先ディレクトリを，複数のHADBサーバで共有しないでください。

(2)　JP1/Auditの環境設定

JP1/Auditでは，HADBサーバは標準サポート外のプログラムとして扱われます。そのため，次の環境設定が必要になります。

JP1/Baseのイベントサービスの設定

「(a)　JP1/Baseのイベントサービスの設定」を参照してください。

正規化ルールファイルの定義

「(b)　正規化ルールファイルの定義」を参照してください。

動作定義ファイルの作成

「(c)　動作定義ファイルの作成」を参照してください。

製品定義ファイルの作成

「(d)　製品定義ファイルの作成」を参照してください。

監査ログ標準レポート定義ファイルの編集

「(e)　監査ログ標準レポート定義ファイルの編集」を参照してください。

監査ログの収集対象の設定

「(f)　監査ログの収集対象の設定」を参照してください。

各環境設定の詳細手順については，マニュアルJP1/Audit　構築・運用ガイドを参照してください。または，マニュアルJP1/Base　運用ガイドを参照してください。

(a)　JP1/Baseのイベントサービスの設定

JP1/Baseのイベントサービスの設定を行う必要があります。HADBサーバが出力する監査証跡の件数を踏まえて，監査ログ専用イベントデータベースのサイズを適切に指定してください。

なお，1回のadbconvertaudittrailfileコマンドで変換する監査証跡の件数を見積もることができない場合は，監査ログ専用イベントデータベースには最大サイズを指定してください。

(b)　正規化ルールファイルの定義

正規化ルールファイルについては，新規に定義する必要はありません。

adbconvertaudittrailfileコマンドで統一フォーマット用監査証跡ファイルに出力する監査証跡は，日立オープンミドルウェア製品の統一フォーマット形式に従っています。そのため，JP1/Auditが標準で提供する統一フォーマット用の正規化ルールファイル（admrglrule_CALFHM.conf）を使用できます。

(c)　動作定義ファイルの作成

JP1/Auditの連携で使用する動作定義ファイルを作成する必要があります。作成手順を次に示します。

手順

動作定義ファイルのサンプルファイルをコピーする

サーバディレクトリ下の$ADBDIR/sample/jp1auditディレクトリに格納されているサンプルファイル（admjevlog_HADB.conf）をコピーしてください。そして，JP1/Audit Management - Managerのインストール先フォルダ¥conf¥logdefに，サンプルファイル（admjevlog_HADB.conf）を格納してください。

動作定義ファイルのサンプルファイルの設定内容を確認する

サンプルファイルの設定内容を変更する必要はありません。次の設定内容かどうかを確認してください。

設定内容

retry-times=60
retry-interval=10
FILETYPE=SEQ2
ACTDEF =<Information>1000 "^CALFHM"

なお，運用テストを行うなどで，1つのサーバマシンで複数のHADBサーバを動作させる場合，動作定義ファイルはそれぞれの環境に作成する必要があります。その場合，動作定義ファイルのファイル名を「admjevlog_HADB_任意の文字列.conf」にリネームして，ほかのファイル名と重複させないでください。また，「任意の文字列」は，「(d)　製品定義ファイルの作成」で説明している製品定義ファイルと一致させてください。

(d)　製品定義ファイルの作成

JP1/Auditの連携で使用する製品定義ファイルを作成する必要があります。作成手順を次に示します。

手順

製品定義ファイルのサンプルファイルをコピーする

サーバディレクトリ下の$ADBDIR/sample/jp1auditディレクトリに格納されているサンプルファイル（HADB.conf）をコピーしてください。そして，JP1/Audit Management - Managerのインストール先フォルダ¥conf¥productに，サンプルファイル（HADB.conf）を格納してください。

製品定義ファイルのサンプルファイルの設定内容を確認する

サンプルファイルの設定内容を変更する必要はありません。次の設定内容かどうかを確認してください。

設定内容

AuditLogNum=4
AuditLogName=adbcommonaudit01.log
AuditLogName=adbcommonaudit02.log
AuditLogName=adbcommonaudit03.log
AuditLogName=adbcommonaudit04.log
RegularPattern=admrglrule_CALFHM.conf
ReadOnly=1

なお，運用テストを行うなどで，1つのサーバマシンで複数のHADBサーバを動作させる場合，製品定義ファイルはそれぞれの環境に作成する必要があります。その場合，製品定義ファイルのファイル名を「HADB_任意の文字列.conf」にリネームし，ほかのファイル名と重複させないでください。また，「任意の文字列」は，「(c)　動作定義ファイルの作成」で説明している動作定義ファイルと一致させてください。

(e)　監査ログ標準レポート定義ファイルの編集

監査ログ標準レポート定義ファイルの編集を行う必要があります。編集手順を次に示します。

重要

通常，JP1/Auditが正規化ルールファイルを使用して収集した監査証跡については，監査ログレポート定義ファイルを使用します。しかし，HADBサーバは，日立オープンミドルウェア製品の統一フォーマット形式を採用しています。そのため，監査ログレポート定義ファイルではなく，監査ログ標準レポート定義ファイルを使用できます。

手順

JP1/Audit Management - Managerの仮想ディレクトリ¥conf下に格納されている監査ログ標準レポート定義ファイル（admAnalysis.ini）に，次に示す内容を追記してください。

記述内容

[HADB]
TYPE=Common

なお，記述行の最後には，必ず改行を記述してください。

(f)　監査ログの収集対象の設定

監査ログの収集対象の設定を行う必要があります。JP1/Auditの監査ログ収集マネージャを使用して，HADBサーバを収集対象として設定してください。設定方法の詳細については，マニュアルJP1/Audit　構築・運用ガイドを参照してください。

HADBサーバを収集対象に設定する場合に，［収集対象の設定］ダイアログに設定する値を次に示します。

表12‒8　監査ログの収集対象の設定値

項番

項目

設定値

1

サーバ

HADBサーバのホスト名を指定してください。

2

プログラム

プルダウンメニューから，製品定義ファイル名と一致するものを選択してください。

例えば，製品定義ファイルのファイル名が「HADB.conf」の場合は，［HADB］を選択してください。

なお，「_」は「/」に置き換えられて表示されます。

3

ログフォルダ

「(1)　HADBサーバの環境設定」で準備した，統一フォーマット用監査証跡の出力先ディレクトリをフルパスで指定してください。

4

コメント

任意のコメントを入力してください。

5

OS起動時に監査ログの監視を開始する

設定は不要です。

重要

統一フォーマット用監査証跡ファイル内の監査証跡をJP1/Auditが収集するためには，JP1/Auditが監査ログの監視を開始している必要があります。JP1/Auditの環境設定が終わったら，必ず監査ログの監視を開始してください。また，OS起動時に監査ログの監視を開始するように，OSを設定することを推奨します。

12.8.4　監査証跡機能とJP1/Auditを連携する際の運用方法

JP1/Auditと連携する場合の運用方法を次に示します。運用方法には，adbconvertaudittrailfileコマンドによる監査証跡の変換タイミングによって，次の2つがあります。

運用方法1

監査証跡ファイルが切り替わったタイミングでadbconvertaudittrailfileコマンドを実行して，監査証跡を変換する運用方法です。

詳細については，「(1)　運用方法1（監査証跡ファイルが切り替わったタイミングで変換する運用）」を参照してください。

運用方法2

定期的なタイミングでadbconvertaudittrailfileコマンドを実行して，監査証跡を変換する運用方法です。

定期的に変換を行う場合，変換対象の監査証跡ファイルの数だけ，adbconvertaudittrailfileコマンドを実行する必要があります。

詳細については，「(2)　運用方法2（定期的なタイミングで変換する運用）」を参照してください。

なお，一度に複数の監査証跡ファイルを変換すると，統一フォーマット用監査証跡ファイルの切り替えによって，収集途中の監査証跡が消失するおそれがあります。この場合，JP1/Auditが一部の監査証跡を収集できないことがあります。そのため，運用方法2よりも，運用方法1を採用することを推奨します。

(1)　運用方法1（監査証跡ファイルが切り替わったタイミングで変換する運用）

監査証跡ファイルが切り替わったタイミングで監査証跡を変換する方法を，次に示します。

この運用方法では，現用の監査証跡ファイルの切り替え時に出力されるメッセージを監視して，監査証跡ファイルが切り替わるたびにadbconvertaudittrailfileコマンドを実行する必要があります。対象メッセージの出力時に，adbconvertaudittrailfileコマンドを自動で実行するジョブを作成して，運用することを推奨します。

なお，HADBサーバを終了したときに切り替わった監査証跡ファイルは，次にHADBサーバを開始するまでは変換できません。そのため，adbconvertaudittrailfileコマンドを実行する前に，HADBサーバが稼働中であることを確認する必要があります。

手順

メッセージを監視する

サーバメッセージログファイル（$ADBDIR/spool/adbmessageXX.log※）を確認して，監査証跡ファイルの切り替え時に出力されるKFAA81401-Iメッセージ，およびKFAA81402-Iメッセージを監視してください。このとき，切り替わった監査証跡ファイルのファイルパスを取得してください。

注※

XXは通番であり，01〜04のどれかになります。

監査証跡ファイルを，監査証跡の出力先ディレクトリから監査証跡の保存先ディレクトリに移動する

手順1.で取得した監査証跡ファイルのファイルパスを基に，対象の監査証跡ファイルを移動してください。

adbls -d srvコマンドを実行する

HADBサーバが稼働中であることを確認します。出力項目STATUSに出力されるHADBサーバの状態が，次のどれかであることを確認してください。

ACTIVE：稼働中（通常モード）

QUIESCE：稼働中（静止モード）

OFFLINE：稼働中（オフラインモード）

MAINTNCE：稼働中（メンテナンスモード）

もし，HADBサーバが稼働中でない場合は，HADBサーバの開始を待ってください（HADBサーバの開始を待つように，自動で実行するジョブを作成してください）。HADB管理者や別のジョブによって，HADBサーバが開始したあとで，次の手順に進んでください。

重要

adbconvertaudittrailfileコマンドを自動で実行するジョブに，HADBサーバを開始する処理を組み込んでしまうと，HADBサーバが終了できなくなります。そのため，HADBサーバが稼働中ではない場合は，adbconvertaudittrailfileコマンドを自動で実行するジョブとは別の方法で，HADBサーバを開始するようにしてください。

adbconvertaudittrailfileコマンドを実行する

手順2.で移動した監査証跡ファイルを，adbconvertaudittrailfileコマンドで変換してください。

メモ

adbconvertaudittrailfileコマンドを自動で実行するジョブとは別に，定期的に現用の監査証跡ファイルを切り替えることを推奨します。現用の監査証跡ファイルの切り替えは，adbaudittrail --swapコマンドで行ってください。定期的にadbaudittrail --swapコマンドを実行することで，ジョブによって監査証跡の変換が行われるようにしてください。

(2)　運用方法2（定期的なタイミングで変換する運用）

定期的なタイミングで監査証跡を変換する運用方法を，次に示します。

この運用方法では，監査証跡の出力先ディレクトリに格納されているすべての監査証跡ファイルが，adbconvertaudittrailfileコマンドの実行対象です。1日1回，週に1回など，定期的にadbconvertaudittrailfileコマンドを実行するバッチプログラムを作成して，そのバッチプログラムを実行することを推奨します。

手順

adbls -d srvコマンドを実行する

HADBサーバが稼働中であることを確認します。出力項目STATUSに出力されるHADBサーバの状態が，次のどれかであることを確認してください。

ACTIVE：稼働中（通常モード）

QUIESCE：稼働中（静止モード）

OFFLINE：稼働中（オフラインモード）

MAINTNCE：稼働中（メンテナンスモード）

もし，HADBサーバが稼働中でない場合は，HADBサーバを開始してください。そのあとで，次の手順に進んでください。

移動が必要な監査証跡ファイルの一覧を作成する

OSのfindコマンドで，監査証跡の出力先ディレクトリに存在する監査証跡ファイルを検索して，移動が必要な監査証跡ファイルの一覧（/home/adbmanager/tmp/auditfilelist.txt）を作成します。なお，次のコマンドでは，現用の監査証跡ファイルは検索対象外となっています。

コマンドの実行例

find /mnt/audittrail/outputarea/audit ¥
    -name "adbaud-????????-??????-???*.aud" ¥
    > /home/adbmanager/tmp/auditfilelist.txt

移動が必要な監査証跡ファイルをコピーする

移動が必要な監査証跡ファイルの一覧（/home/adbmanager/tmp/auditfilelist.txt）に存在する全ファイルを，OSのcpコマンドで，監査証跡の出力先ディレクトリから監査証跡の保存先ディレクトリにコピーします。

while read filename ; do
  cp ${filename} /mnt/audittrail/shorttimesavearea/audit_bak
done < /home/adbmanager/tmp/auditfilelist.txt

コピーが完了した監査証跡ファイルを削除する

監査証跡ファイルのコピーが完了したら，OSのrmコマンドで，コピー元の監査証跡ファイルを監査証跡の出力先ディレクトリから削除します。

while read filename ; do
  rm ${filename}
done < /home/adbmanager/tmp/auditfilelist.txt

adbconvertaudittrailfileコマンドを実行する

手順2.で作成した移動が必要な監査証跡ファイルの一覧（/home/adbmanager/tmp/auditfilelist.txt）を基に，移動した監査証跡ファイルすべてをadbconvertaudittrailfileコマンドで変換してください。

なお，一度に複数の監査証跡ファイルを変換すると，統一フォーマット用監査証跡ファイルの切り替えによって，収集途中の監査証跡が消失するおそれがあります。この場合，JP1/Auditが一部の監査証跡を収集できないことがあります。

移動が必要な監査証跡ファイルの一覧を削除する

OSのrmコマンドで，手順2.で作成した移動が必要な監査証跡ファイルの一覧（/home/adbmanager/tmp/auditfilelist.txt）を削除します。

rm /home/adbmanager/tmp/auditfilelist.txt

12.8.5　監査の実施

JP1/Auditが収集した監査証跡は，Webブラウザ上からJP1/Auditの監査ログ管理画面で検索・集計できます。詳細については，マニュアルJP1/Audit　構築・運用ガイドを参照してください。

なお，adbconvertaudittrailfileコマンドは，JP1/Auditで表示できる監査証跡の情報だけを統一フォーマット用監査証跡ファイルに出力しています。そのため，JP1/Auditで確認できる内容では，監査に必要な情報が不足することがあります。例えば，実行したSQL文や表のアクセス件数などは，JP1/Auditでは確認できません。

JP1/Auditで確認した監査証跡について，さらに詳しい情報を参照したい場合は，JP1/Audit上の［固有情報］に記録された監査証跡ファイル名を対象に，ADB_AUDITREAD関数を指定したSQL文を実行して，監査証跡を参照してください。ADB_AUDITREAD関数を指定したSQL文については，「12.3.3　監査証跡の参照（SELECT文で監査証跡を参照する場合）」を参照してください。

12.9　監査対象イベントと表関数導出表の列構成

ここでは，監査対象イベントと表関数導出表の列構成について説明します。

「12.9.1　監査対象イベントの一覧と出力項目」

「12.9.2　監査証跡を検索するときの表関数導出表の列構成」

「12.9.3　監査証跡の出力契機と出力項目」

12.9.1　監査対象イベントの一覧と出力項目

ここでは，監査対象イベントの一覧と出力項目について説明します。

監査対象イベントの一覧と出力項目を次の表に示します。

表12‒9　監査対象イベントの一覧と出力項目

項番

イベントの分類

イベントの種類

イベントの内容

1

必須監査イベント

システムイベント

システムの開始，終了および変更を，監査対象にします。

次に示すイベントが実行されたときに，監査証跡が出力されます。

HADBサーバの開始※1（adbstartコマンド）

HADBサーバの終了※2（adbstopコマンド）

HADBサーバの稼働モードの変更（adbchgsrvmodeコマンド）

ノード種別の変更（adbchgnodetypeコマンド）

SQLトレース情報の出力開始・停止（adbchgsqltrcコマンド）

クライアント定義の集中管理（adbclientdefmangコマンド）

DBエリアの追加・変更（adbmodareaコマンド）

バッファの変更（adbmodbuffコマンド）

更新行のカラム化機能の管理（adbcolumnizeコマンド）

2

監査イベント

監査に関する操作を，監査対象にします。

次に示すイベントが実行されたときに，監査証跡が出力されます。

監査管理権限の付与（GRANT文のAUDIT ADMIN）

監査参照権限の付与（GRANT文のAUDIT VIEWER）

監査管理権限の取り消し（REVOKE文のAUDIT ADMIN）

監査参照権限の取り消し（REVOKE文のAUDIT VIEWER）

監査対象の定義（CREATE AUDIT文）

監査対象定義情報の削除（DROP AUDIT文）

監査対象定義情報の参照（ディクショナリ表のSQL_AUDITS表の検索）

ディクショナリ表のSQL_AUDITS表に依存するビュー表の検索

監査人のパスワード変更（ALTER USER文）

監査証跡機能の有効化（--startオプションを指定したadbaudittrailコマンド）

監査証跡機能の無効化（--stopオプションを指定したadbaudittrailコマンド）

監査証跡ファイルの切り替え（--swapオプションを指定したadbaudittrailコマンド）

監査証跡機能に関連する情報の参照（-dオプションを指定したadbaudittrailコマンド）

監査証跡用のシステム定義関数の使用（ADB_AUDITREAD関数）

ADB_AUDITREAD関数を指定した導出表に依存するビュー表の検索

監査証跡ファイルの変換（adbconvertaudittrailfileコマンド）

3

暗号イベント

DBエリア暗号化機能で使用するHADB暗号鍵の管理に関する操作を，監査対象にします。

次に示すイベントが実行されたときに，監査証跡が出力されます。

HADB暗号鍵の作成（adbmkdmkコマンド）

HADB暗号鍵の更新（adbupddmkコマンド）

暗号管理権限の付与（GRANT文のCRYPTO ADMIN）

暗号管理権限の取り消し（REVOKE文のCRYPTO ADMIN）

4

選択監査イベント

セッションイベント

HADBユーザの認可識別子とパスワードによるユーザ認証を，監査対象にします。

次に示すイベントが実行されたときに，監査証跡が出力されます。

HADBサーバへの接続

HADBサーバからの切り離し

5

権限管理イベント

権限の付与または取り消しを，監査対象にします。

次に示すイベントが実行されたときに，監査証跡が出力されます。

権限の付与（GRANT文）

権限の取り消し（REVOKE文）

HADBユーザの作成（CREATE USER文）

HADBユーザの削除（DROP USER文）

HADBユーザの情報変更（ALTER USER文）

6

定義系SQLイベント

オブジェクトの定義，削除または変更を，監査対象にします。

次に示すイベントが実行されたときに，監査証跡が出力されます。

オブジェクトの定義

CREATE FOREIGN TABLE文

CREATE INDEX文

CREATE SCHEMA文

CREATE SERVER文

CREATE TABLE文

CREATE VIEW文

オブジェクトの削除

DROP FOREIGN TABLE文

DROP INDEX文

DROP SCHEMA文

DROP SERVER文

DROP TABLE文

DROP VIEW文

オブジェクトの変更

ALTER SERVER文

ALTER TABLE文

ALTER VIEW文

7

操作系SQLイベント

オブジェクトに対するアクセスを，監査対象にします。

次に示すイベントが実行されたときに，監査証跡が出力されます。

表の検索（SELECT文）※3

表への行挿入（INSERT文）

表の行更新（UPDATE文）

表の行削除（DELETE文）

表の全行削除（TRUNCATE TABLE文）

表の出力（COPY文）

チャンク内の全行削除（PURGE CHUNK文）

SQL構文の解析エラー

チャンクに格納されているデータの取得（adbsqlコマンドのサブコマンド#GETDATA）

チャンクに格納されているデータの件数の取得（adbsqlコマンドのサブコマンド#GETCOUNT）

表情報の表示（adbsqlコマンドのサブコマンド#TABLES）

列情報の表示（adbsqlコマンドのサブコマンド#COLUMNS）

インデクス情報の表示（adbsqlコマンドのサブコマンド#INDEXES）

チャンク情報の表示（adbsqlコマンドのサブコマンド#CHUNKS）

認可識別子の表示（adbsqlコマンドのサブコマンド#GETUSER）

8

コマンド操作イベント※4

HADBサーバに接続するコマンドの実行を，監査対象にします。

次に示すイベントが実行されたときに，監査証跡が出力されます。

データのインポート（adbimportコマンド）

インデクスの再作成（adbidxrebuildコマンド）

コスト情報の収集（adbgetcstコマンド）

データベースの状態解析（adbdbstatusコマンド）

データのエクスポート（adbexportコマンド）

チャンクのマージ（adbmergechunkコマンド）

チャンクのコメントの設定・変更・削除（adbchgchunkcommentコマンド）

チャンクの状態変更（adbchgchunkstatusコマンド）

チャンクのアーカイブ（adbarchivechunkコマンド）

チャンクのアンアーカイブ（adbunarchivechunkコマンド）

ディクショナリ表（実表）およびシステム表（実表）の再編成（adbreorgsystemdataコマンド）

同義語辞書の登録・削除（adbsyndictコマンド）

注※1

HADBサーバを起動できた場合に，監査対象となります。

注※2

HADBサーバの終了は，--forceオプションを指定したadbstopコマンドの実行以外が，監査対象となります。

注※3

SQLパラレル実行機能が適用された検索系SQLの場合，SQLメインノードの監査証跡ファイルにだけ監査証跡が出力されます。SQLサブノードの監査証跡ファイルには監査証跡は出力されません。

注※4

adbsqlコマンドは，コマンド操作イベントの対象外です。adbsqlコマンドを通じて実行した操作に応じて，ほかの種類のイベントとして記録されます。

HADBユーザが明示的に実行しない操作は，監査の対象外です。具体的には，次の情報は監査の対象外となります。

adbsqlコマンドのサブコマンドが内部的に実行するSQL文

コマンドが内部的に実行するSQL文※

次に示すSQL文にCASCADEを指定した場合または省略した場合に，CASCADE指定によって再帰的に行われるオブジェクトの削除や権限の取り消し

DROP USER文

DROP SCHEMA文

DROP TABLE文

DROP FOREIGN TABLE文

DROP SERVER文

REVOKE文

注※

adbexportコマンドの-qオプションに指定したSQL文は，監査対象となります。

12.9.2　監査証跡を検索するときの表関数導出表の列構成

ここでは，監査証跡を検索するときの表関数導出表の列構成について説明します。

監査証跡を検索するときの表関数導出表の列構成を次の表に示します。

表12‒10　監査証跡を検索するときの表関数導出表の列構成

項番

列名称

列のデータ型

説明

非ナル値制約

1

HADB_VERSION

CHAR(8)

イベントを受け付けたHADBサーバのバージョンが出力されます。

なし

2

AUDIT_TRAIL_TYPE

VARCHAR(32)

監査証跡を取得した契機が出力されます。

EVENT（イベントの終了）

なし

3

EXEC_TIME

TIMESTAMP(6)

イベントが完了した時刻が出力されます。

なし

4

USER_NAME

VARCHAR(100)

イベントを実行したHADBユーザの認可識別子が出力されます。

なし

5

EVENT_TYPE

VARCHAR(32)

イベントの種類が出力されます。

SYSTEM（システムイベント）

AUDIT（監査イベント）

CRYPTO（暗号イベント）

SESSION（セッションイベント）

PRIVILEGE（権限管理イベント）

DEFINE（定義系SQLイベント）

MANIPULATE（操作系SQLイベント）

COMMAND（コマンド操作イベント）

なし

6

EVENT_SUBTYPE

VARCHAR(64)

イベント種別が出力されます。

詳細は「表12‒11　監査証跡に出力されるイベント種別の値」を参照してください。

なし

7

EVENT_RESULT

CHAR(10)

イベントが成功したかどうかが出力されます。

SUCCESS（成功）

FAILURE（失敗）

OCCURRENCE（発生）※

注※

イベント種別DISCONNECTのイベント結果として出力される場合があります。詳細については，「12.10.2　コマンドの実行時に出力される監査証跡についての留意事項」の「(2)　adbcancelコマンドを実行した場合の留意事項」を参照してください。

なし

8

USED_PRIVILEGE

VARCHAR(32)

AUDIT_TRAIL_TYPE列にEVENTが出力されている場合は，NULLが出力されます。

なし

9

OS_USER_NAME

VARCHAR(256)

イベント発行元クライアントのOSアカウント名が出力されます。

OSアカウント名が識別できない場合は，NULLが出力されます。

なし

10

AP_NAME

VARCHAR(30)

イベント発行者のAP識別子が出力されます。

HADBサーバに接続するコマンドを実行した場合は，コマンド名がAP識別子として出力されます。

イベント発行者のAP識別子を識別できない場合は，NULLが出力されます。

なし

11

CLIENT_IP_ADDRESS※

VARCHAR(46)

イベント発行元クライアントのIPアドレスが出力されます。

イベント発行元クライアントのIPアドレスを識別できない場合は，NULLが出力されます。

なし

12

CLIENT_PORT_NUMBER※

INTEGER

イベント発行元クライアントのポート番号が出力されます。

イベント発行元クライアントのポート番号を識別できない場合は，NULLが出力されます。

なし

13

CLIENT_PROCESS_NAME

VARCHAR(255)

イベント発行元クライアントのプロセス名が出力されます。

次に該当する場合は，NULLが出力されます。

イベント発行元クライアントがJDBCドライバの場合

イベント発行元クライアントのプロセス名を識別できない場合

なし

14

CLIENT_PROCESS_ID

INTEGER

イベント発行元クライアントのプロセスIDが出力されます。

イベント発行元クライアントのプロセスIDを識別できない場合は，NULLが出力されます。

なし

15

HADB_HOST_NAME

VARCHAR(255)

イベントを受け付けたHADBサーバのホスト名が出力されます。

HADBサーバのホスト名を識別できない場合は，NULLが出力されます。

なし

16

HADB_IP_ADDRESS

VARCHAR(46)

イベントを受け付けたHADBサーバのIPアドレスが出力されます。

HADBサーバのIPアドレスを識別できない場合は，NULLが出力されます。

なし

17

HADB_PORT_NUMBER

INTEGER

イベントを受け付けたHADBサーバのポート番号が出力されます。

HADBサーバのポート番号を識別できない場合は，NULLが出力されます。

なし

18

HADB_PROCESS_ID

INTEGER

イベントを受け付けたHADBサーバのプロセスIDが出力されます。

HADBサーバのプロセスIDを識別できない場合は，NULLが出力されます。

なし

19

ADBDIR

VARCHAR(118)

環境変数ADBDIRに指定したサーバディレクトリのパス名が出力されます。

指定したパス名の長さが118バイトを超えている場合は，118バイトまでの内容が出力されます。

なし

20

HADB_NODE_NUMBER

INTEGER

マルチノード機能を使用している場合，イベントを受け付けたHADBサーバのノード番号（1～12）が出力されます。SQLパラレル実行機能が適用された検索系SQLに関するイベントのときは，SQLメインノードのノード番号が出力されます。

マルチノード機能を使用していない場合は，NULLが出力されます。

なし

21

CONNECTION_ID

INTEGER

イベントを実行したコネクションのコネクションID（1～1,024）が出力されます。

コネクションIDを識別できない場合は，NULLが出力されます。

なし

22

CONNECTION_NUMBER

BIGINT

イベントを実行したコネクションのコネクション通番（1～4,294,967,295）が出力されます。

コネクション通番を識別できない場合は，NULLが出力されます。

なし

23

STATEMENT_HANDLE

INTEGER

イベントを実行する際に使用した文ハンドル（1～4,095）が出力されます。

文ハンドルを識別できない場合は，NULLが出力されます。

なし

24

SQL_SERIAL_NUMBER

BIGINT

イベントのSQL文通番（1～9,223,372,036,854,775,807）が出力されます。

SQL文通番を識別できない場合は，NULLが出力されます。

なし

25

MESSAGE_LOG_INFO

CHAR(20)

イベントのメッセージログ情報が出力されます。

メッセージログ情報を識別できない場合は，NULLが出力されます。

なし

26

EXIT_STATUS

INTEGER

AUDIT_TRAIL_TYPE列にEVENTが出力されている場合は，次のどちらかが出力されます。

SQL文を実行した場合は，SQLCODEが出力されます。

コマンドを実行した場合は，リターンコードが出力されます。

なし

27

OBJECT_TYPE

VARCHAR(32)

イベントの対象として指定されたオブジェクトの種別が出力されます。

FOREIGN TABLE（外部表）

INDEX（インデクス）

SCHEMA（スキーマ）

SERVER（外部サーバ）

TABLE（実表）

TABLE FUNCTION（表関数導出表）

VIEW（ビュー表）

オブジェクトの種別を識別できない場合は，NULLが出力されます。

各種別の出力契機は「表12‒19　オブジェクトの種別が監査証跡に出力される契機」を参照してください。

なお，暗号化対象のDBエリアに格納されているオブジェクトを操作した場合，末尾に'(ENCRYPTED)'の文字列が付加されて出力されることがあります。

なし

28

OBJECT_OWNER_NAME

VARCHAR(100)

イベントの対象として指定されたオブジェクトの所有者の認可識別子が出力されます。

オブジェクトの所有者を識別できない場合は，NULLが出力されます。

なし

29

OBJECT_SCHEMA_NAME

VARCHAR(100)

イベントの対象として指定されたオブジェクトのスキーマ名が出力されます。

オブジェクトのスキーマ名を識別できない場合は，NULLが出力されます。

なし

30

OBJECT_NAME

VARCHAR(100)

イベントの対象として指定されたオブジェクトの識別子が出力されます。

オブジェクトの識別子を識別できない場合は，NULLが出力されます。

なし

31

ACCESS_COUNT

BIGINT

イベントによって，オブジェクト（実表，外部表，ビュー表）に対してアクセスした行数が出力されます。次の行数が出力対象です。

検索した行数（データエクスポートも含む）

挿入した行数（データインポートも含む）

更新した行数

削除した行数

アクセスした行数の取得に失敗した場合は，NULLが出力されます。

各操作で出力される行数の詳細は「表12‒20　ACCESS_COUNT列に出力される行数」を参照してください。

なし

32

PRIVILEGE_TYPE

VARCHAR(32)

イベントによって，付与または取り消しの対象として指定された権限名が出力されます。

各権限の名称は「表12‒12　監査証跡に出力される権限名」を参照してください。

権限名を識別できない場合は，NULLが出力されます。

なし

33

PRIVILEGE_USER_NAME

VARCHAR(100)

次のどちらかに該当するHADBユーザの認可識別子が出力されます。

権限の付与または取り消しの対象として，指定されたHADBユーザの認可識別子

HADBユーザの作成，HADBユーザの削除，またはHADBユーザの情報変更の対象として，指定されたHADBユーザの認可識別子

HADBユーザの認可識別子を識別できない場合は，NULLが出力されます。

なし

34

SQL_SOURCE

VARCHAR(64000)

イベントで実行したSQL文が出力されます。

1つのSQL文で複数のオブジェクトを指定した場合，それぞれの監査証跡にSQL文が出力されます。

SQL文は64,000バイトまで出力され，それ以降は切り捨てられます。

実行したSQL文がない場合は，NULLが出力されます。

なし

35

PARAM

VARCHAR(64000)

イベントで実行したSQL文の？パラメタが出力されます。

1つのSQL文で複数のオブジェクトを指定した場合，それぞれの監査証跡に？パラメタが出力されます。

？パラメタは，コンマ（ , ）で区切って表示されます。例を次に示します。

？パラメタ,？パラメタ,？パラメタ,…

？パラメタは64,000バイトまで出力され，それ以降は切り捨てられます。

？パラメタが指定されていない場合は，NULLが出力されます。

？パラメタにバインドされたデータの各データ型の表示形式は，「表12‒13　？パラメタの出力形式」を参照してください。

なし

36

BEFORE_SYSTEM_INFO

VARCHAR(2000)

システム変更前の情報が出力されます。

次に示すイベントが成功したときに出力されます。

adbstart

HADBサーバの稼働モードが出力されます。出力される情報の詳細は，「イベント（adbstartとadbchgsrvmode）の成功時に出力される値」を参照してください。

adbchgsrvmode

HADBサーバの稼働モードが出力されます。出力される情報の詳細は，「イベント（adbstartとadbchgsrvmode）の成功時に出力される値」を参照してください。

adbchgnodetype

ノード種別が出力されます。出力される情報の詳細は，「イベント（adbchgnodetype）の成功時に出力される値」を参照してください。

adbchgsqltrc

有効になっているトレース情報とトレースレベルが出力されます。出力される情報の詳細は，「イベント（adbchgsqltrc）の成功時に出力される値」を参照してください。

adbclientdefmang

クライアント定義ファイルとHADBユーザの関連づけが出力されます。出力される情報の詳細は，「イベント（adbclientdefmang）の成功時に出力される値」を参照してください。

adbmodarea

更新前のDBエリア情報が出力されます。出力される情報の詳細は，「イベント（adbmodarea）の成功時に出力される値」を参照してください。

adbmodbuff

ローカル作業表用バッファのページ数が出力されます。出力される情報の詳細は，「イベント（adbmodbuff）の成功時に出力される値」を参照してください。

adbcolumnize

更新行のカラム化機能の状態に関する情報が出力されます。出力される情報の詳細は，「イベント（adbcolumnize）の成功時に出力される値」を参照してください。

上記以外のイベントの場合は，NULLが出力されます。

システム変更前の情報は2,000バイトまで出力され，それ以降は切り捨てられます。

なお，システム変更がない場合は，「イベント実行時のシステム情報」が出力されます。そのため，BEFORE_SYSTEM_INFO列とAFTER_SYSTEM_INFO列で，同じ内容が出力されます。

なし

37

AFTER_SYSTEM_INFO

VARCHAR(2000)

システム変更後の情報が出力されます。

次に示すイベントが成功したときに出力されます。

adbstart

HADBサーバの稼働モードが出力されます。出力される情報の詳細は，「イベント（adbstartとadbchgsrvmode）の成功時に出力される値」を参照してください。

adbchgsrvmode

HADBサーバの稼働モードが出力されます。出力される情報の詳細は，「イベント（adbstartとadbchgsrvmode）の成功時に出力される値」を参照してください。

adbchgnodetype

ノード種別が出力されます。出力される情報の詳細は，「イベント（adbchgnodetype）の成功時に出力される値」を参照してください。

adbchgsqltrc

有効になっているトレース情報とトレースレベルが出力されます。出力される情報の詳細は，「イベント（adbchgsqltrc）の成功時に出力される値」を参照してください。

adbclientdefmang

クライアント定義ファイルとHADBユーザの関連づけが出力されます。出力される情報の詳細は，「イベント（adbclientdefmang）の成功時に出力される値」を参照してください。

adbmodarea

更新後のDBエリア情報が出力されます。出力される情報の詳細は，「イベント（adbmodarea）の成功時に出力される値」を参照してください。

adbmodbuff

ローカル作業表用バッファのページ数が出力されます。出力される情報の詳細は，「イベント（adbmodbuff）の成功時に出力される値」を参照してください。

adbcolumnize

更新行のカラム化機能の状態に関する情報が出力されます。出力される情報の詳細は，「イベント（adbcolumnize）の成功時に出力される値」を参照してください。

上記以外のイベントの場合は，NULLが出力されます。

システムの変更情報は2,000バイトまで出力され，それ以降は切り捨てられます。

なお，システム変更がない場合は，「イベント実行時のシステム情報」が出力されます。そのため，BEFORE_SYSTEM_INFO列とAFTER_SYSTEM_INFO列で，同じ内容が出力されます。

なし

38

SERVER_OPERAND

VARCHAR(4000)

HADBサーバの開始時に，サーバ定義に指定されているオペランドの値が出力されます。

各サーバ定義は，スラッシュ（/）で区切って出力されます。

サーバ定義の情報は4,000バイトまで出力され，それ以降は切り捨てられます。

HADBサーバの開始時以外（EVENT_SUBTYPE列にADBSTARTと出力されたとき以外）は，NULLが出力されます。

SERVER_OPERAND列に出力されるサーバ定義の形式は，「表12‒14　サーバ定義の出力形式」を参照してください。

なし

39

USER_INFO_1

VARCHAR(100)

HADBユーザが任意に設定した付加情報が出力されます。

次に示す場合は，NULLが出力されます。

HADBユーザが設定した付加情報を識別できない場合

HADBユーザが付加情報を設定していない場合

なし

40

USER_INFO_2

VARCHAR(100)

なし

41

USER_INFO_3

VARCHAR(100)

なし

注※

HADBサーバと同一マシンのHADBクライアントで実行されたSQL文の監査証跡については，次の情報が出力されます。

IPアドレス：127.0.0.1

ポート番号：NULL

マルチノード機能を使用している場合，HADBサーバと同一マシンのHADBクライアントで実行されたSQL文の監査証跡でも，SQL文が処理されたノードによって，出力される情報が変わることがあります。

■EVENT_SUBTYPE列に出力されるイベント種別の値

「表12‒10　監査証跡を検索するときの表関数導出表の列構成」のEVENT_SUBTYPE列に出力されるイベント種別の値を，次の表に示します。

表12‒11　監査証跡に出力されるイベント種別の値

項番

イベントの分類

イベントの種類

イベントの種別

監査証跡に出力されるイベント種別の値

1

必須監査イベント

システムイベント

HADBサーバの開始（adbstartコマンド）

ADBSTART

2

HADBサーバの終了（adbstopコマンド）

ADBSTOP

3

HADBサーバの稼働モードの変更（adbchgsrvmodeコマンド）

ADBCHGSRVMODE

4

ノード種別の変更（adbchgnodetypeコマンド）

ADBCHGNODETYPE

5

SQLトレース情報の出力開始・停止（adbchgsqltrcコマンド）

ADBCHGSQLTRC

6

クライアント定義の集中管理（adbclientdefmangコマンド）

ADBCLIENTDEFMANG

7

DBエリアの追加・変更（adbmodareaコマンド）

ADBMODAREA

8

バッファの変更（adbmodbuffコマンド）

ADBMODBUFF

9

更新行のカラム化機能の管理（adbcolumnizeコマンド）

ADBCOLUMNIZE

10

監査イベント

監査管理権限の付与（GRANT文のAUDIT ADMIN）

GRANT

11

監査参照権限の付与（GRANT文のAUDIT VIEWER）

12

監査管理権限の取り消し（REVOKE文のAUDIT ADMIN）

REVOKE

13

監査参照権限の取り消し（REVOKE文のAUDIT VIEWER）

14

監査対象の定義（CREATE AUDIT文）

CREATE AUDIT

15

監査対象定義の削除（DROP AUDIT文）

DROP AUDIT

16

監査人のパスワード変更（ALTER USER文）

ALTER USER

17

監査証跡機能の有効化（--startオプションを指定したadbaudittrailコマンド）

ADBAUDITTRAIL START

18

監査証跡機能の無効化（--stopオプションを指定したadbaudittrailコマンド）

ADBAUDITTRAIL STOP

19

監査証跡ファイルの切り替え（--swapオプションを指定したadbaudittrailコマンド）

ADBAUDITTRAIL SWAP

20

監査証跡機能に関連する情報の参照（-dオプションを指定したadbaudittrailコマンド）

ADBAUDITTRAIL DISPLAY

21

監査対象定義情報の参照（ディクショナリ表のSQL_AUDITS表の検索）

ディクショナリ表のSQL_AUDITS表に依存するビュー表の検索

SELECT

22

ADBEXPORT

23

監査証跡用のシステム定義関数の使用（ADB_AUDITREAD関数）

ADB_AUDITREAD関数を指定した導出表に依存するビュー表の検索

SELECT

24

ADBEXPORT

25

監査証跡ファイルの変換（adbconvertaudittrailfileコマンド）

ADBCONVERTAUDITTRAILFILE

26

暗号イベント

HADB暗号鍵の作成（adbmkdmkコマンド）

ADBMKDMK

27

HADB暗号鍵の更新（adbupddmkコマンド）

ADBUPDDMK

28

暗号管理権限の付与（GRANT文のCRYPTO ADMIN）

GRANT

29

暗号管理権限の取り消し（REVOKE文のCRYPTO ADMIN）

REVOKE

30

選択監査イベント

セッションイベント

HADBサーバへの接続（データベース認証の使用時）

CONNECT

31

HADBサーバへの接続（PAM認証の使用時）

CONNECT(PAM)

32

HADBサーバへの接続（Keycloak認証の使用時）

CONNECT(Keycloak)

33

HADBサーバからの切り離し

DISCONNECT

34

権限管理イベント

DBA権限の付与（GRANT文のDBA）

GRANT

35

CONNECT権限の付与（GRANT文のCONNECT）

36

スキーマ定義権限の付与（GRANT文のSCHEMA）

37

SELECT権限の付与（GRANT文のSELECT）

38

INSERT権限の付与（GRANT文のINSERT）

39

UPDATE権限の付与（GRANT文のUPDATE）

40

DELETE権限の付与（GRANT文のDELETE）

41

TRUNCATE権限の付与（GRANT文のTRUNCATE）

42

COPY権限の付与（GRANT文のCOPY）

43

REFERENCES権限の付与（GRANT文のREFERENCES）

44

IMPORT TABLE権限の付与（GRANT文のIMPORT TABLE）

45

REBUILD INDEX権限の付与（GRANT文のREBUILD INDEX）

46

GET COSTINFO権限の付与（GRANT文のGET COSTINFO）

47

EXPORT TABLE権限の付与（GRANT文のEXPORT TABLE）

48

MERGE CHUNK権限の付与（GRANT文のMERGE CHUNK）

49

CHANGE CHUNK COMMENT権限の付与（GRANT文のCHANGE CHUNK COMMENT）

50

CHANGE CHUNK STATUS権限の付与（GRANT文のCHANGE CHUNK STATUS）

51

ARCHIVE CHUNK権限の付与（GRANT文のARCHIVE CHUNK）

52

UNARCHIVE CHUNK権限の付与（GRANT文のUNARCHIVE CHUNK）

53

DBA権限の取り消し（REVOKE文のDBA）

REVOKE

54

CONNECT権限の取り消し（REVOKE文のCONNECT）

55

スキーマ定義権限の取り消し（REVOKE文のSCHEMA）

56

SELECT権限の取り消し（REVOKE文のSELECT）

57

INSERT権限の取り消し（REVOKE文のINSERT）

58

UPDATE権限の取り消し（REVOKE文のUPDATE）

59

DELETE権限の取り消し（REVOKE文のDELETE）

60

TRUNCATE権限の取り消し（REVOKE文のTRUNCATE）

61

COPY権限の取り消し（REVOKE文のCOPY）

62

REFERENCES権限の取り消し（REVOKE文のREFERENCES）

63

IMPORT TABLE権限の取り消し（REVOKE文のIMPORT TABLE）

64

REBUILD INDEX権限の取り消し（REVOKE文のREBUILD INDEX）

65

GET COSTINFO権限の取り消し（REVOKE文のGET COSTINFO）

66

EXPORT TABLE権限の取り消し（REVOKE文のEXPORT TABLE）

67

MERGE CHUNK権限の取り消し（REVOKE文のMERGE CHUNK）

68

CHANGE CHUNK COMMENT権限の取り消し（REVOKE文のCHANGE CHUNK COMMENT）

69

CHANGE CHUNK STATUS権限の取り消し（REVOKE文のCHANGE CHUNK STATUS）

70

ARCHIVE CHUNK権限の取り消し（REVOKE文のARCHIVE CHUNK）

71

UNARCHIVE CHUNK権限の取り消し（REVOKE文のUNARCHIVE CHUNK）

72

HADBユーザの作成（CREATE USER文）

CREATE USER

73

HADBユーザの削除（DROP USER文）

DROP USER

74

HADBユーザの情報変更（ALTER USER文）

ALTER USER

75

定義系SQLイベント

外部表の定義（CREATE FOREIGN TABLE文）

CREATE FOREIGN TABLE

76

インデクスの定義（CREATE INDEX文）

CREATE INDEX

77

スキーマの定義（CREATE SCHEMA文）

CREATE SCHEMA

78

外部サーバの定義（CREATE SERVER文）

CREATE SERVER

79

実表の定義（CREATE TABLE文）

CREATE TABLE

80

ビュー表の定義（CREATE VIEW文）

CREATE VIEW

81

外部表の削除（DROP FOREIGN TABLE文）

DROP FOREIGN TABLE

82

インデクスの削除（DROP INDEX文）

DROP INDEX

83

スキーマの削除（DROP SCHEMA文）

DROP SCHEMA

84

外部サーバの削除（DROP SERVER文）

DROP SERVER

85

実表の削除（DROP TABLE文）

DROP TABLE

86

ビュー表の削除（DROP VIEW文）

DROP VIEW

87

外部サーバの定義変更（ALTER SERVER文）

ALTER SERVER

88

表定義の変更（ALTER TABLE文）

ALTER TABLE

89

ビュー定義の変更（ALTER VIEW文）

ALTER VIEW

90

操作系SQLイベント

表の検索（SELECT文）

SELECT

91

表への行挿入（INSERT文）

INSERT

92

表の行更新（UPDATE文）

UPDATE

93

表の行削除（DELETE文）

DELETE

94

表の全行削除（TRUNCATE TABLE文）

TRUNCATE TABLE

95

チャンク内の全行削除（PURGE CHUNK文）

PURGE CHUNK

96

検索結果のファイルへの出力（COPY文）

COPY

97

SQL構文の解析エラー

UNKNOWN

98

チャンクに格納されているデータの取得（adbsqlコマンドのサブコマンド#GETDATA）

GETDATA

99

チャンクに格納されているデータの件数の取得（adbsqlコマンドのサブコマンド#GETCOUNT）

GETCOUNT

100

表情報の表示（adbsqlコマンドのサブコマンド#TABLES）

TABLES

101

列情報の表示（adbsqlコマンドのサブコマンド#COLUMNS）

COLUMNS

102

インデクス情報の表示（adbsqlコマンドのサブコマンド#INDEXES）

INDEXES

103

チャンク情報の表示（adbsqlコマンドのサブコマンド#CHUNKS）

CHUNKS

104

認可識別子の表示（adbsqlコマンドのサブコマンド#GETUSER）

GETUSER

105

コマンド操作イベント

データのインポート（adbimportコマンド）

ADBIMPORT

106

インデクスの再作成（adbidxrebuildコマンド）

ADBIDXREBUILD

107

コスト情報の収集（adbgetcstコマンド）

ADBGETCST

108

データベースの状態解析（adbdbstatusコマンド）

ADBDBSTATUS

109

データのエクスポート（adbexportコマンド）

ADBEXPORT

110

チャンクのマージ（adbmergechunkコマンド）

ADBMERGECHUNK

111

チャンクのコメントの設定・変更・削除（adbchgchunkcommentコマンド）

ADBCHGCHUNKCOMMENT

112

チャンクの状態変更（adbchgchunkstatusコマンド）

ADBCHGCHUNKSTATUS

113

チャンクのアーカイブ（adbarchivechunkコマンド）

ADBARCHIVECHUNK

114

チャンクのアンアーカイブ（adbunarchivechunkコマンド）

ADBUNARCHIVECHUNK

115

ディクショナリ表（実表）およびシステム表（実表）の再編成（adbreorgsystemdataコマンド）

ADBREORGSYSTEMDATA

116

同義語辞書の登録・削除（adbsyndictコマンド）

ADBSYNDICT

■PRIVILEGE_TYPE列に出力される権限名の値

「表12‒10　監査証跡を検索するときの表関数導出表の列構成」のPRIVILEGE_TYPE列に出力される権限名の値を，次の表に示します。

表12‒12　監査証跡に出力される権限名

項番

権限の種別

監査証跡に出力される権限名

1

DBA権限

DBA

2

CONNECT権限

CONNECT

3

スキーマ定義権限

SCHEMA

4

監査管理権限

AUDIT ADMIN

5

監査参照権限

AUDIT VIEWER

6

暗号管理権限

CRYPTO ADMIN

7

SELECT権限

SELECT

8

INSERT権限

INSERT

9

UPDATE権限

UPDATE

10

DELETE権限

DELETE

11

TRUNCATE権限

TRUNCATE

12

COPY権限

COPY

13

REFERENCES権限

REFERENCES

14

IMPORT TABLE権限

IMPORT TABLE

15

REBUILD INDEX権限

REBUILD INDEX

16

GET COSTINFO権限

GET COSTINFO

17

EXPORT TABLE権限

EXPORT TABLE

18

MERGE CHUNK権限

MERGE CHUNK

19

CHANGE CHUNK COMMENT権限

CHANGE CHUNK COMMENT

20

CHANGE CHUNK STATUS権限

CHANGE CHUNK STATUS

21

ARCHIVE CHUNK権限

ARCHIVE CHUNK

22

UNARCHIVE CHUNK権限

UNARCHIVE CHUNK

■PARAM列に出力される？パラメタにバインドされたデータの各データ型の表示形式

「表12‒10　監査証跡を検索するときの表関数導出表の列構成」のPARAM列に出力される？パラメタにバインドされたデータの各データ型の表示形式を，次の表に示します。

表12‒13　？パラメタの出力形式

項番

データ型

出力形式

1

INTEGER

10進数形式

2

BIGINT

3

DECIMAL(m, n)

10進数形式

4

NUMERIC(m, n)

5

SMALLINT

10進数形式

6

DOUBLE PRECISION

仮数（10進数）E指数（10進数）

7

FLOAT

8

REAL

9

CHARACTER(n)

'文字列形式'

10

VARCHAR(n)

'文字列形式'※

実長0の場合は，''として出力する

11

STRING

12

DATE

日付データの既定の出力表現

13

TIME(p)

時刻データの既定の出力表現

14

TIMESTAMP(p)

時刻印データの既定の出力表現

15

BINARY(n)

X'16進数値'

16

VARBINARY(n)

X'16進数値'

実長0の場合は，X''として出力する

17

BOOLEAN

論理データの既定の出力表現

18

UUID

UUIDデータの既定の出力表現

19

ROW

X'16進数値'

（凡例）

m，n，p：正の整数

注

？パラメタにバインドされたデータがナル値の場合は，PARAM列にNULLが出力されます。

注※

NULL述語の値式に？パラメタを単独で指定した場合に，？パラメタにナル値以外の値を指定すると，指定した値に関係なく'*'が出力されます。

■SERVER_OPERAND列に出力されるサーバ定義の出力形式

「表12‒10　監査証跡を検索するときの表関数導出表の列構成」のSERVER_OPERAND列に出力されるサーバ定義の出力形式を，次の表に示します。

表12‒14　サーバ定義の出力形式

項番

形式

出力形式

1

set形式

オペランド名 = 指定値※1

2

コマンド形式

コマンド名 オプション名指定値[, オプション名指定値 …]※2

注※1

「= 指定値」部分の最大長は1,024バイトです。それ以上長い場合は1,024バイトで打ち切られます。

注※2

「オプション名 指定値[, オプション名 指定値 …]」部分の最大長は1,024バイトです。それ以上長い場合は1,024バイトで打ち切られます。

また，サーバ定義の指定例とSERVER_OPERAND列の出力例を示します。指定が有効になっているサーバ定義のオペランド名と指定値の組み合わせごとに，スラッシュ（/）で区切られて情報が出力されます。

サーバ定義の指定例

set adb_db_path = XXXXX
set adb_rpc_port = YYYYY
set adb_sys_max_users = 10
set adb_sys_rthd_num = 40
set adb_sys_uthd_num = 128
set adb_sql_exe_max_rthd_num = 4
set adb_sys_memory_limit = 64000
adbbuff -g TBLBUF01 -n ADBUTBL01 -p 1000000 -v 1024
adbbuff -g IDXBUF01 ¥
        -n ADBUIDX01 ¥
        -p 2500000
adbcltgrp -g group -m 10 -u 0 -r 40 -e 0 -w 0

SERVER_OPERAND列の出力例

adb_db_path = XXXXX / adb_rpc_port = YYYYY / adb_sys_max_users = 10 / adb_sys_rthd_num = 40 / adb_sys_uthd_num = 128 / adb_sql_exe_max_rthd_num = 4 /
adb_sys_memory_limit = 64000 / adbbuff -g TBLBUF01 -n ADBUTBL01 -p 1000000 -v 1024 / adbbuff -g IDXBUF01 -n ADBUIDX01 -p 2500000 / adbcltgrp -g group -m 10 -u 0 -r 40 -e 0 -w 0

■BEFORE_SYSTEM_INFO列およびAFTER_SYSTEM_INFO列に出力される値

「表12‒10　監査証跡を検索するときの表関数導出表の列構成」のBEFORE_SYSTEM_INFO列，およびAFTER_SYSTEM_INFO列に出力される値を，イベントごとに次に示します。

イベント（adbstartとadbchgsrvmode）の成功時に出力される値

イベント（adbstartとadbchgsrvmode）の成功時には，次の表に示す各稼働モードの値が出力されます。

表12‒15　稼働モードの値

項番

稼働モード

値

1

通常モード

NORMAL

2

静止モード

QUIESCENCE

3

オフラインモード

OFFLINE

4

メンテナンスモード

MAINTENANCE

マルチノード機能を使用している場合

プライマリノードでadbstartコマンドを実行した場合，BEFORE_SYSTEM_INFO列には，前回起動時にプライマリノードだったノードのHADBサーバの稼働モードが出力されます。

セカンダリノードまたはワーカーノードでadbstartコマンドを実行した場合，BEFORE_SYSTEM_INFO列には，常にNULLが出力されます。

イベント（adbchgnodetype）の成功時に出力される値

イベント（adbchgnodetype）の成功時には，次の表に示す各ノード種別の値が出力されます。

表12‒16　ノード種別の値

項番

ノード種別

値

1

プライマリノード

PRIMARY

2

セカンダリノード

SECONDARY

イベント（adbchgsqltrc）の成功時に出力される値

イベント（adbchgsqltrc）の成功時には，次の2つの表に示すトレース情報とトレースレベルの値が出力されます。

表12‒17　トレース情報の値

項番

トレース情報

値

1

アクセスパス情報

accesspath

2

？パラメタ情報

param

表12‒18　トレースレベルの値

項番

トレースレベル

値

1

SQL文単位で出力

sql

2

コール単位で出力

call

イベント（adbchgsqltrc）の成功時には，有効になっているトレース情報とトレースレベルが，トレース情報，トレースレベルの順にスラッシュ（/）で区切られて出力されます。なお，SQLトレース機能が無効の場合は，空文字が出力されます。

アクセスパスが有効で，トレースレベルがSQL文単位となっている場合の出力例を次に示します。

accesspath / sql

イベント（adbclientdefmang）の成功時に出力される値

イベント（adbclientdefmang）の成功時には，「表12‒14　サーバ定義の出力形式」のコマンド形式に従って，各クライアント管理定義がスラッシュ（/）で区切られて出力されます。クライアント定義の集中管理機能が無効な場合は，空文字が出力されます。

クライアント管理定義の指定例と出力例を，次に示します。

クライアント管理定義の指定例

adbclientmang -f client01.def -i USER01, USER02
adbclientmang -f client02.def -i USER03

出力例

adbclientmang -f client01.def -i USER01, USER02 / adbclientmang -f client02.def -i USER03

イベント（adbmodarea）の成功時に出力される値

イベント（adbmodarea）の成功時には，次の形式で値が出力されます。

AREA NAME = DBエリア名, FILE NUMBER = DBエリアファイル数

［説明］

DBエリア名

DBエリア名が出力されます。指定値，または正規化済み文字列のどちらかが出力されます。

なお，暗号化対象のDBエリアを追加，削除，または拡張した場合，システムの変更情報（変更前）とシステムの変更情報（変更後）のDBエリア名の末尾に，'(ENCRYPTED)'の文字列が付加されて出力されます。

DBエリアファイル数

DBエリアファイル数が出力されます。ファイル数が不明の場合は，?が出力されます。DBエリアが存在しない場合は，0が出力されます。

DBエリア追加・変更オプションファイルの指定例と出力例を，次に示します。

（例1）データ用DBエリア（ADBUTBL02）を追加した場合

DBエリア追加・変更オプションファイルの指定例

adbaddarea -n ADBUTBL02

出力例（BEFORE_SYSTEM_INFO列）

AREA NAME = ADBUTBL02, FILE NUMBER = 0

出力例（AFTER_SYSTEM_INFO列）

AREA NAME = ADBUTBL02, FILE NUMBER = 1

（例2）暗号化対象のデータ用DBエリア（ADBUTBL03）を追加した場合

DBエリア追加・変更オプションファイルの指定例

adbaddarea -n ADBUTBL03 -e

出力例（BEFORE_SYSTEM_INFO列）

AREA NAME = ADBUTBL03(ENCRYPTED), FILE NUMBER = 0

出力例（AFTER_SYSTEM_INFO列）

AREA NAME = ADBUTBL03(ENCRYPTED), FILE NUMBER = 1

イベント（adbmodbuff）の成功時に出力される値

イベント（adbmodbuff）の成功時には，adbmodbuffコマンドで変更したローカル作業表用バッファのページ数（5～100,000,000）が出力されます。

adbmodbuffコマンドのバッファ変更オプションファイルの指定例と出力例を，次に示します。

バッファ変更オプションファイルの指定例

set adb_dbbuff_wrktbl_clt_blk_num = 256

出力例

256

イベント（adbcolumnize）の成功時に出力される値

イベント（adbcolumnize）の成功時には，更新行のカラム化機能の状態に関する情報が出力されます。

更新行のカラム化機能が有効の場合：ACTIVE

更新行のカラム化機能が無効の場合：INACTIVE

■OBJECT_TYPE列に出力されるオブジェクトの種別が出力される契機

「表12‒10　監査証跡を検索するときの表関数導出表の列構成」のOBJECT_TYPE列に出力されるオブジェクトの種別が出力される契機を，次の表に示します。

表12‒19　オブジェクトの種別が監査証跡に出力される契機

項番

オブジェクトの種別

出力契機

1

FOREIGN TABLE

外部表の定義

外部表の参照（データエクスポートも含む）

外部表の削除

アクセス権限の付与・取り消し

2

INDEX※1，※3

インデクスの定義・削除

インデクスの再作成（adbidxrebuildコマンド）

3

SCHEMA

スキーマの定義・削除

4

SERVER

外部サーバの定義

外部サーバの定義変更

外部サーバの削除

5

TABLE※4

実表の定義

実表の定義の変更

実表の参照（データエクスポートも含む）

実表の更新（データインポートも含む）

実表の削除

アクセス権限の付与・取り消し

コスト情報の収集（adbgetcstコマンド）

チャンクのマージ（adbmergechunkコマンド）

チャンクのコメントの設定・変更・削除（adbchgchunkcommentコマンド）

チャンクの状態変更（adbchgchunkstatusコマンド）

チャンクのアーカイブ（adbarchivechunkコマンド）

チャンクのアンアーカイブ（adbunarchivechunkコマンド）

ディクショナリ表（実表）およびシステム表（実表）の再構成（adbreorgsystemdataコマンド）

6

TABLE FUNCTION※2

表関数導出表の参照（データエクスポートも含む）

7

VIEW

ビュー表の定義

ビュー表の再作成

ビュー表の参照（データエクスポートも含む）

ビュー表の更新

ビュー表の削除

アクセス権限の付与・取り消し

注※1

表の検索で利用したインデクスの情報は出力されません。

注※2

オブジェクトの識別子は，表関数の関数名となります。表関数の引数は出力されません。

注※3

暗号化対象のDBエリアに格納されているインデクスに対して操作を行った場合，次のように末尾に'(ENCRYPTED)'の文字列が付加されて出力されます。

INDEX(ENCRYPTED)

注※4

暗号化対象のDBエリアに格納されている表に対して操作を行った場合，次のように末尾に'(ENCRYPTED)'の文字列が付加されて出力されます。

TABLE(ENCRYPTED)

ただし，次の出力契機では，'(ENCRYPTED)'は付加されません。

ディクショナリ表（実表）およびシステム表（実表）の再構成（adbreorgsystemdataコマンド）

■ACCESS_COUNT列に出力される各操作で出力される行数

「表12‒10　監査証跡を検索するときの表関数導出表の列構成」のACCESS_COUNT列に出力される各操作で出力される行数を，次の表に示します。

表12‒20　ACCESS_COUNT列に出力される行数

項番

イベント

操作によって出力される監査証跡のEVENT_SUBTYPE

出力される行数

1

SELECT文

SELECT

検索結果の行数※1，※2，※3

2

INSERT文

INSERT

「表12‒10　監査証跡を検索するときの表関数導出表の列構成」のOBJECT_NAME列に出力された表に挿入した行数※3

3

SELECT

NULL※2

4

UPDATE文

UPDATE

「表12‒10　監査証跡を検索するときの表関数導出表の列構成」のOBJECT_NAME列に出力された表を更新した行数※3

5

SELECT

NULL※2

6

DELETE文

DELETE

「表12‒10　監査証跡を検索するときの表関数導出表の列構成」のOBJECT_NAME列に出力された表から削除した行数※3

7

SELECT

NULL※2

8

TRUNCATE TABLE文

TRUNCATE TABLE

0

9

PURGE CHUNK文

PURGE CHUNK

0

10

SELECT

NULL※2

11

COPY文

COPY

検索結果を出力した行数※2，※3

12

SELECT

NULL※2

13

定義系SQL

それぞれのイベント種別

0※4

14

adbimportコマンド

ADBIMPORT

「表12‒10　監査証跡を検索するときの表関数導出表の列構成」のOBJECT_NAME列に出力された表にデータインポートした行数※3

15

adbexportコマンド

ADBEXPORT

データエクスポートした行数※2，※3

16

上記以外

それぞれのイベント種別

NULL

注※1

カーソルをクローズした時点で，HADBサーバ側でFETCH処理が完了している行数が出力されます。そのため，検索結果の一括転送によって，HADBクライアント側でFETCH処理を行っている行数ではなく，次の計算式で求めた行数が出力されることがあります。その場合，HADBクライアント側でFETCH処理を行っている行数よりも大きな値になります。

一括転送行数 × 2 － 1

注※2

1つのSQL文または1つのコマンドを実行した場合に，「表12‒10　監査証跡を検索するときの表関数導出表の列構成」のEVENT_SUBTYPE列の内容が同一である監査証跡が複数出力されたときは，それらの監査証跡のACCESS_COUNT列には同じ値が出力されます。

注※3

「表12‒10　監査証跡を検索するときの表関数導出表の列構成」のEVENT_RESULT列がFAILUREの場合，0が出力されます。

注※4

1つの定義系SQLを実行した場合に，複数の監査証跡が出力されたときは，それらの監査証跡のACCESS_COUNT列には同じ値（0）が出力されます。

各イベントの監査証跡の出力契機と出力項目については，「12.9.3　監査証跡の出力契機と出力項目」を参照してください。

12.9.3　監査証跡の出力契機と出力項目

ここでは，監査証跡の出力契機と出力項目について説明します。

監査証跡の出力契機と出力項目を，次の表に示します。表の「監査証跡用の表関数導出表の列構成」列が横に長いため，ここでは5つの表に分割して記載しています。

「表12‒21　監査証跡の出力契機と出力項目（その1）」

「表12‒22　監査証跡の出力契機と出力項目（その2）」

「表12‒23　監査証跡の出力契機と出力項目（その3）」

「表12‒24　監査証跡の出力契機と出力項目（その4）」

「表12‒25　監査証跡の出力契機と出力項目（その5）」

上記の5つの表にある「監査イベント」列の詳細については，「12.9.1　監査対象イベントの一覧と出力項目」の「表12‒9　監査対象イベントの一覧と出力項目」を参照してください。

上記の5つの表にある「監査証跡用の表関数導出表の列構成」列の詳細については，「12.9.2　監査証跡を検索するときの表関数導出表の列構成」の「表12‒10　監査証跡を検索するときの表関数導出表の列構成」を参照してください。

また，5つの表の凡例と注釈は，「表12‒25　監査証跡の出力契機と出力項目（その5）」の末尾にまとめて記載しています。

表12‒21　監査証跡の出力契機と出力項目（その1）

監査イベント

監査証跡用の表関数導出表の列構成（その1）

項番

イベントの分類

イベントの種類

イベントの内容

HADBのバージョン

（HADB_VERSION）

監査証跡の種別

（AUDIT_TRAIL_TYPE）

イベント実行日時

（EXEC_TIME）

イベント実行ユーザ

（USER_NAME）

イベントの種類

（EVENT_TYPE）

イベント種別

（EVENT_SUBTYPE）

1

必須監査イベント

システムイベント

HADBサーバの開始（adbstartコマンド）

○

EVENT

○

SYSTEM

ADBSTART

2

HADBサーバの終了（adbstopコマンド）

正常終了

○

EVENT

○

SYSTEM

ADBSTOP

3

HADBサーバの稼働モードの変更（adbchgsrvmodeコマンド）

正常終了

○

EVENT

○

SYSTEM

ADBCHGSRVMODE

4

ノード種別の変更（adbchgnodetypeコマンド）

正常終了

○

EVENT

○

SYSTEM

ADBCHGNODETYPE

5

SQLトレース情報の出力開始・停止（adbchgsqltrcコマンド）

正常終了

○

EVENT

○

SYSTEM

ADBCHGSQLTRC

6

クライアント定義の集中管理（--updateオプションを指定したadbclientdefmangコマンド）

正常終了※2

○

EVENT

○

○

SYSTEM

ADBCLIENTDEFMANG

7

クライアント定義の集中管理（-iオプションを指定したadbclientdefmangコマンド）

正常終了※2

○

EVENT

○

○

SYSTEM

ADBCLIENTDEFMANG

8

DBエリアの追加・変更（adbmodareaコマンド）

正常終了※2

○

EVENT

○

SYSTEM

ADBMODAREA

9

バッファの変更（adbmodbuffコマンド）

正常終了※2

○

EVENT

○

SYSTEM

ADBMODBUFF

10

更新行のカラム化機能の管理（adbcolumnizeコマンド）

正常終了

○

EVENT

○

SYSTEM

ADBCOLUMNIZE

11

監査イベント

監査管理権限の付与（GRANT文のAUDIT ADMIN）

正常終了※6，※7

○

EVENT

○

○

AUDIT

GRANT

12

監査参照権限の付与（GRANT文のAUDIT VIEWER）

正常終了※6，※7

○

EVENT

○

○

AUDIT

GRANT

13

監査管理権限の取り消し（REVOKE文のAUDIT ADMIN）

正常終了※6，※7

○

EVENT

○

○

AUDIT

REVOKE

14

監査参照権限の取り消し（REVOKE文のAUDIT VIEWER）

正常終了※6，※7

○

EVENT

○

○

AUDIT

REVOKE

15

監査対象の定義（CREATE AUDIT文）

正常終了

○

EVENT

○

○

AUDIT

CREATE AUDIT

16

監査対象定義情報の削除（DROP AUDIT文）

正常終了

○

EVENT

○

○

AUDIT

DROP AUDIT

17

監査人のパスワード変更（ALTER USER文）

正常終了

○

EVENT

○

○

AUDIT

ALTER USER

18

監査証跡機能の有効化（--startオプションを指定したadbaudittrailコマンド）

正常終了※2

○

EVENT

○

○

AUDIT

ADBAUDITTRAIL START

19

監査証跡機能の無効化（--stopオプションを指定したadbaudittrailコマンド）

正常終了※2

○

EVENT

○

○

AUDIT

ADBAUDITTRAIL STOP

20

監査証跡ファイルの切り替え（--swapオプションを指定したadbaudittrailコマンド）

正常終了※2，※9

○

EVENT

○

○

AUDIT

ADBAUDITTRAIL SWAP

21

監査証跡機能に関連する情報の参照（-dオプションを指定したadbaudittrailコマンド）

正常終了※2，※9

○

EVENT

○

○

AUDIT

ADBAUDITTRAIL DISPLAY

22

監査証跡用のシステム定義関数の実行（ADB_AUDITREAD関数）（操作系SQL）

正常終了

○

EVENT

○

○

AUDIT

SELECT

23

ADB_AUDITREAD関数を指定した導出表に依存するビュー表の検索（操作系SQL）

正常終了

○

EVENT

○

○

AUDIT

SELECT

24

監査証跡用のシステム定義関数の実行（ADB_AUDITREAD関数）（-qオプションを指定したadbexportコマンド）

正常終了※2

○

EVENT

○

○

AUDIT

ADBEXPORT

25

ADB_AUDITREAD関数を指定した導出表に依存するビュー表の検索（-qオプションを指定したadbexportコマンド）

正常終了※2

○

EVENT

○

○

AUDIT

ADBEXPORT

26

ディクショナリ表のSQL_AUDITS表の検索（操作系SQL）

正常終了

○

EVENT

○

○

AUDIT

SELECT

27

ディクショナリ表のSQL_AUDITS表に依存するビュー表の検索（操作系SQL）

正常終了

○

EVENT

○

○

AUDIT

SELECT

28

ディクショナリ表のSQL_AUDITS表の検索（-qオプションを指定していないadbexportコマンド）

正常終了※2

○

EVENT

○

○

AUDIT

ADBEXPORT

29

ディクショナリ表のSQL_AUDITS表に依存するビュー表の検索（-qオプションを指定していないadbexportコマンド）

正常終了※2

○

EVENT

○

○

AUDIT

ADBEXPORT

30

ディクショナリ表のSQL_AUDITS表の検索（-qオプションを指定したadbexportコマンド）

正常終了※2

○

EVENT

○

○

AUDIT

ADBEXPORT

31

ディクショナリ表のSQL_AUDITS表に依存するビュー表の検索（-qオプションを指定したadbexportコマンド）

正常終了※2

○

EVENT

○

○

AUDIT

ADBEXPORT

32

監査証跡ファイルの変換（adbconvertaudittrailfileコマンド）

正常終了※2，※9

○

EVENT

○

○

AUDIT

ADBCONVERTAUDITTRAILFILE

33

暗号イベント

HADB暗号鍵の作成（adbmkdmkコマンド）

正常終了※2

○

EVENT

○

○

CRYPTO

ADBMKDMK

34

HADB暗号鍵の更新（adbupddmkコマンド）

正常終了※2

○

EVENT

○

○

CRYPTO

ADBUPDDMK

35

暗号管理権限の付与（GRANT文のCRYPTO ADMIN）

正常終了※6，※7

○

EVENT

○

○

CRYPTO

GRANT

36

暗号管理権限の取り消し（REVOKE文のCRYPTO ADMIN）

正常終了※6，※7

○

EVENT

○

○

CRYPTO

REVOKE

37

選択監査イベント

セッションイベント

HADBサーバへの接続

正常終了（データベース認証の使用時）

○

EVENT

○

○

SESSION

CONNECT

38

正常終了（PAM認証の使用時）

○

EVENT

○

○

SESSION

CONNECT(PAM)

39

正常終了（Keycloak認証の使用時）

○

EVENT

○

○

SESSION

CONNECT(Keycloak)

40

HADBサーバからの切り離し

正常終了※1

○

EVENT

○

○

SESSION

DISCONNECT

41

権限管理イベント

DBA権限の付与（GRANT文のDBA）

正常終了※6

○

EVENT

○

○

PRIVILEGE

GRANT

42

CONNECT権限の付与（GRANT文のCONNECT）

正常終了※6

○

EVENT

○

○

PRIVILEGE

GRANT

43

SCHEMA権限の付与（GRANT文のSCHEMA）

正常終了※6

○

EVENT

○

○

PRIVILEGE

GRANT

44

SELECT権限の付与（GRANT文のSELECT）

正常終了※6

○

EVENT

○

○

PRIVILEGE

GRANT

45

INSERT権限の付与（GRANT文のINSERT）

正常終了※6

○

EVENT

○

○

PRIVILEGE

GRANT

46

UPDATE権限の付与（GRANT文のUPDATE）

正常終了※6

○

EVENT

○

○

PRIVILEGE

GRANT

47

DELETE権限の付与（GRANT文のDELETE）

正常終了※6

○

EVENT

○

○

PRIVILEGE

GRANT

48

TRUNCATE権限の付与（GRANT文のTRUNCATE）

正常終了※6

○

EVENT

○

○

PRIVILEGE

GRANT

49

COPY権限の付与（GRANT文のCOPY）

正常終了※6

○

EVENT

○

○

PRIVILEGE

GRANT

50

REFERENCES権限の付与（GRANT文のREFERENCES）

正常終了※6

○

EVENT

○

○

PRIVILEGE

GRANT

51

IMPORT TABLE権限の付与（GRANT文のIMPORT TABLE）

正常終了※6

○

EVENT

○

○

PRIVILEGE

GRANT

52

REBUILD INDEX権限の付与（GRANT文のREBUILD INDEX）

正常終了※6

○

EVENT

○

○

PRIVILEGE

GRANT

53

GET COSTINFO権限の付与（GRANT文のGET COSTINFO）

正常終了※6

○

EVENT

○

○

PRIVILEGE

GRANT

54

EXPORT TABLE権限の付与（GRANT文のEXPORT TABLE）

正常終了※6

○

EVENT

○

○

PRIVILEGE

GRANT

55

MERGE CHUNK権限の付与（GRANT文のMERGE CHUNK）

正常終了※6

○

EVENT

○

○

PRIVILEGE

GRANT

56

CHANGE CHUNK COMMENT権限の付与（GRANT文のCHANGE CHUNK COMMENT）

正常終了※6

○

EVENT

○

○

PRIVILEGE

GRANT

57

CHANGE CHUNK STATUS権限の付与（GRANT文のCHANGE CHUNK STATUS）

正常終了※6

○

EVENT

○

○

PRIVILEGE

GRANT

58

ARCHIVE CHUNK権限の付与（GRANT文のARCHIVE CHUNK）

正常終了※6

○

EVENT

○

○

PRIVILEGE

GRANT

59

UNARCHIVE CHUNK権限の付与（GRANT文のUNARCHIVE CHUNK）

正常終了※6

○

EVENT

○

○

PRIVILEGE

GRANT

60

DBA権限の取り消し（REVOKE文のDBA）

正常終了※6

○

EVENT

○

○

PRIVILEGE

REVOKE

61

CONNECT権限の取り消し（REVOKE文のCONNECT）

正常終了※6

○

EVENT

○

○

PRIVILEGE

REVOKE

62

SCHEMA権限の取り消し（REVOKE文のSCHEMA）

正常終了※6

○

EVENT

○

○

PRIVILEGE

REVOKE

63

SELECT権限の取り消し（REVOKE文のSELECT）

正常終了※6

○

EVENT

○

○

PRIVILEGE

REVOKE

64

INSERT権限の取り消し（REVOKE文のINSERT）

正常終了※6

○

EVENT

○

○

PRIVILEGE

REVOKE

65

UPDATE権限の取り消し（REVOKE文のUPDATE）

正常終了※6

○

EVENT

○

○

PRIVILEGE

REVOKE

66

DELETE権限の取り消し（REVOKE文のDELETE）

正常終了※6

○

EVENT

○

○

PRIVILEGE

REVOKE

67

TRUNCATE権限の取り消し（REVOKE文のTRUNCATE）

正常終了※6

○

EVENT

○

○

PRIVILEGE

REVOKE

68

COPY権限の取り消し（REVOKE文のCOPY）

正常終了※6

○

EVENT

○

○

PRIVILEGE

REVOKE

69

REFERENCES権限の取り消し（REVOKE文のREFERENCES）

正常終了※6

○

EVENT

○

○

PRIVILEGE

REVOKE

70

IMPORT TABLE権限の取り消し（REVOKE文のIMPORT TABLE）

正常終了※6

○

EVENT

○

○

PRIVILEGE

REVOKE

71

REBUILD INDEX権限の取り消し（REVOKE文のREBUILD INDEX）

正常終了※6

○

EVENT

○

○

PRIVILEGE

REVOKE

72

GET COSTINFO権限の取り消し（REVOKE文のGET COSTINFO）

正常終了※6

○

EVENT

○

○

PRIVILEGE

REVOKE

73

EXPORT TABLE権限の取り消し（REVOKE文のEXPORT TABLE）

正常終了※6

○

EVENT

○

○

PRIVILEGE

REVOKE

74

MERGE CHUNK権限の取り消し（REVOKE文のMERGE CHUNK）

正常終了※6

○

EVENT

○

○

PRIVILEGE

REVOKE

75

CHANGE CHUNK COMMENT権限の取り消し（REVOKE文のCHANGE CHUNK COMMENT）

正常終了※6

○

EVENT

○

○

PRIVILEGE

REVOKE

76

CHANGE CHUNK STATUS権限の取り消し（REVOKE文のCHANGE CHUNK STATUS）

正常終了※6

○

EVENT

○

○

PRIVILEGE

REVOKE

77

ARCHIVE CHUNK権限の取り消し（REVOKE文のARCHIVE CHUNK）

正常終了※6

○

EVENT

○

○

PRIVILEGE

REVOKE

78

UNARCHIVE CHUNK権限の取り消し（REVOKE文のUNARCHIVE CHUNK）

正常終了※6

○

EVENT

○

○

PRIVILEGE

REVOKE

79

HADBユーザの作成（CREATE USER文）

正常終了

○

EVENT

○

○

PRIVILEGE

CREATE USER

80

HADBユーザの削除（DROP USER文）

正常終了

○

EVENT

○

○

PRIVILEGE

DROP USER

81

HADBユーザの情報変更（ALTER USER文）

正常終了

○

EVENT

○

○

PRIVILEGE

ALTER USER

82

定義系SQLイベント

外部表の定義（CREATE FOREIGN TABLE）

正常終了

○

EVENT

○

○

DEFINE

CREATE FOREIGN TABLE

83

インデクスの定義（CREATE INDEX文）

正常終了

○

EVENT

○

○

DEFINE

CREATE INDEX

84

スキーマの定義（CREATE SCHEMA文）

正常終了

○

EVENT

○

○

DEFINE

CREATE SCHEMA

85

外部サーバの定義（CREATE SERVER）

正常終了

○

EVENT

○

○

DEFINE

CREATE SERVER

86

実表の定義（CREATE TABLE文）

正常終了

○

EVENT

○

○

DEFINE

CREATE TABLE

87

ビュー表の定義（CREATE VIEW文）

正常終了

○

EVENT

○

○

DEFINE

CREATE VIEW

88

外部表の削除（DROP FOREIGN TABLE）

正常終了

○

EVENT

○

○

DEFINE

DROP FOREIGN TABLE

89

インデクスの削除（DROP INDEX文）

正常終了

○

EVENT

○

○

DEFINE

DROP INDEX

90

スキーマの削除（DROP SCHEMA文）

正常終了

○

EVENT

○

○

DEFINE

DROP SCHEMA

91

外部サーバの削除（DROP SERVER）

正常終了

○

EVENT

○

○

DEFINE

DROP SERVER

92

実表の削除（DROP TABLE文）

正常終了

○

EVENT

○

○

DEFINE

DROP TABLE

93

ビュー表の削除（DROP VIEW文）

正常終了

○

EVENT

○

○

DEFINE

DROP VIEW

94

外部サーバの定義変更（ALTER SERVER）

正常終了

○

EVENT

○

○

DEFINE

ALTER SERVER

95

実表の定義変更（ALTER TABLE文）

正常終了

○

EVENT

○

○

DEFINE

ALTER TABLE

96

ビュー表の定義変更（ALTER VIEW文）

正常終了

○

EVENT

○

○

DEFINE

ALTER VIEW

97

操作系SQLイベント

表の検索（SELECT文）

正常終了

○

EVENT

○

○

MANIPULATE

SELECT

98

表への行挿入（INSERT文※3）

正常終了

○

EVENT

○

○

MANIPULATE

INSERT

99

表の行更新（UPDATE文※3）

正常終了

○

EVENT

○

○

MANIPULATE

UPDATE

100

表の行削除（DELETE文※3）

正常終了

○

EVENT

○

○

MANIPULATE

DELETE

101

表の全行削除（TRUNCATE TABLE文）

正常終了

○

EVENT

○

○

MANIPULATE

TRUNCATE TABLE

102

チャンク内の全行削除（PURGE CHUNK文※3）

正常終了

○

EVENT

○

○

MANIPULATE

PURGE CHUNK

103

表の出力（COPY文※3）

正常終了

○

EVENT

○

○

MANIPULATE

COPY

104

SQL構文の解析エラー

○

EVENT

○

○

MANIPULATE

UNKNOWN

105

チャンクに格納されているデータの取得（adbsqlコマンドのサブコマンド#GETDATA）

正常終了

○

EVENT

○

○

MANIPULATE

GETDATA

106

チャンクに格納されているデータの件数の取得（adbsqlコマンドのサブコマンド#GETCOUNT）

正常終了

○

EVENT

○

○

MANIPULATE

GETCOUNT

107

表情報の表示（adbsqlコマンドのサブコマンド#TABLES）

正常終了

○

EVENT

○

○

MANIPULATE

TABLES

108

列情報の表示（adbsqlコマンドのサブコマンド#COLUMNS）

正常終了

○

EVENT

○

○

MANIPULATE

COLUMNS

109

インデクス情報の表示（adbsqlコマンドのサブコマンド#INDEXES）

正常終了

○

EVENT

○

○

MANIPULATE

INDEXES

110

チャンク情報の表示（adbsqlコマンドのサブコマンド#CHUNKS）

正常終了

○

EVENT

○

○

MANIPULATE

CHUNKS

111

認可識別子の表示（adbsqlコマンドのサブコマンド#GETUSER）

正常終了

○

EVENT

○

○

MANIPULATE

GETUSER

112

コマンド操作イベント

データのインポート（adbimportコマンド）

正常終了※2

○

EVENT

○

○

COMMAND

ADBIMPORT

113

データのエクスポート（-qオプションを指定していないadbexportコマンド）

正常終了※2

○

EVENT

○

○

COMMAND

ADBEXPORT

114

データのエクスポート（-qオプションを指定したadbexportコマンド）

正常終了※2

○

EVENT

○

○

COMMAND

ADBEXPORT

115

インデクスの再作成（adbidxrebuildコマンド）

正常終了※2

○

EVENT

○

○

COMMAND

ADBIDXREBUILD

116

コスト情報の収集（adbgetcstコマンド）

正常終了※2

○

EVENT

○

○

COMMAND

ADBGETCST

117

データベースの状態解析（adbdbstatusコマンド）

正常終了※2

○

EVENT

○

COMMAND

ADBDBSTATUS

118

チャンクのマージ（adbmergechunkコマンド）

正常終了※2

○

EVENT

○

○

COMMAND

ADBMERGECHUNK

119

チャンクのコメントの設定・変更・削除（adbchgchunkcommentコマンド）

正常終了※2

○

EVENT

○

○

COMMAND

ADBCHGCHUNKCOMMENT

120

チャンクの状態変更（adbchgchunkstatusコマンド）

正常終了※2

○

EVENT

○

○

COMMAND

ADBCHGCHUNKSTATUS

121

チャンクのアーカイブ（adbarchivechunkコマンド）

正常終了※2

○

EVENT

○

○

COMMAND

ADBARCHIVECHUNK

122

チャンクのアンアーカイブ（adbunarchivechunkコマンド）

正常終了※2

○

EVENT

○

○

COMMAND

ADBUNARCHIVECHUNK

123

ディクショナリ表（実表）およびシステム表（実表）の再編成（adbreorgsystemdataコマンド）

正常終了※2

○

EVENT

○

COMMAND

ADBREORGSYSTEMDATA

124

同義語辞書の登録・削除（adbsyndictコマンド）

正常終了※2

○

EVENT

○

COMMAND

ADBSYNDICT

表12‒22　監査証跡の出力契機と出力項目（その2）

監査イベント

監査証跡用の表関数導出表の列構成（その2）

項番

イベントの分類

イベントの種類

イベントの内容

イベント成否

（EVENT_RESULT）

確認した権限

（USED_PRIVILEGE）

クライアント側のOSアカウント名

（OS_USER_NAME）

AP識別子

（AP_NAME）

クライアントのIPアドレス

（CLIENT_IP_ADDRESS）

クライアントのポート番号

（CLIENT_PORT_NUMBER）

クライアントのプロセス名

（CLIENT_PROCESS_NAME）

クライアントのプロセスID

（CLIENT_PROCESS_ID）

1

必須監査イベント

システムイベント

HADBサーバの開始（adbstartコマンド）

SUCCESS

○

○

○

2

HADBサーバの終了（adbstopコマンド）

正常終了

SUCCESS

○

▼

▼

○

○

3

HADBサーバの稼働モードの変更（adbchgsrvmodeコマンド）

正常終了

SUCCESS

○

○

○

4

ノード種別の変更（adbchgnodetypeコマンド）

正常終了

SUCCESS

○

○

○

5

SQLトレース情報の出力開始・停止（adbchgsqltrcコマンド）

正常終了

SUCCESS

○

○

○

6

クライアント定義の集中管理（--updateオプションを指定したadbclientdefmangコマンド）

正常終了※2

SUCCESS

○

○

○

○

7

クライアント定義の集中管理（-iオプションを指定したadbclientdefmangコマンド）

正常終了※2

SUCCESS

○

○

○

○

8

DBエリアの追加・変更（adbmodareaコマンド）

正常終了※2

SUCCESS

○

○

○

○

9

バッファの変更（adbmodbuffコマンド）

正常終了※2

SUCCESS

○

○

○

○

10

更新行のカラム化機能の管理（adbcolumnizeコマンド）

正常終了

SUCCESS

○

○

○

11

監査イベント

監査管理権限の付与（GRANT文のAUDIT ADMIN）

正常終了※6，※7

SUCCESS

○

○

○

■

◇

○

12

監査参照権限の付与（GRANT文のAUDIT VIEWER）

正常終了※6，※7

SUCCESS

○

○

○

■

◇

○

13

監査管理権限の取り消し（REVOKE文のAUDIT ADMIN）

正常終了※6，※7

SUCCESS

○

○

○

■

◇

○

14

監査参照権限の取り消し（REVOKE文のAUDIT VIEWER）

正常終了※6，※7

SUCCESS

○

○

○

■

◇

○

15

監査対象の定義（CREATE AUDIT文）

正常終了

SUCCESS

○

○

○

■

◇

○

16

監査対象定義情報の削除（DROP AUDIT文）

正常終了

SUCCESS

○

○

○

■

◇

○

17

監査人のパスワード変更（ALTER USER文）

正常終了

SUCCESS

○

○

○

■

◇

○

18

監査証跡機能の有効化（--startオプションを指定したadbaudittrailコマンド）

正常終了※2

SUCCESS

○

○

○

○

19

監査証跡機能の無効化（--stopオプションを指定したadbaudittrailコマンド）

正常終了※2

SUCCESS

○

○

○

○

20

監査証跡ファイルの切り替え（--swapオプションを指定したadbaudittrailコマンド）

正常終了※2，※9

SUCCESS

○

○

▼

▼

○

○

21

監査証跡機能に関連する情報の参照（-dオプションを指定したadbaudittrailコマンド）

正常終了※2，※9

SUCCESS

○

○

▼

▼

○

○

22

監査証跡用のシステム定義関数の実行（ADB_AUDITREAD関数）（操作系SQL）

正常終了

SUCCESS

○

○

○

■

◇

○

23

ADB_AUDITREAD関数を指定した導出表に依存するビュー表の検索（操作系SQL）

正常終了

SUCCESS

○

○

○

■

◇

○

24

監査証跡用のシステム定義関数の実行（ADB_AUDITREAD関数）（-qオプションを指定したadbexportコマンド）

正常終了※2

SUCCESS

○

○

○

○

25

ADB_AUDITREAD関数を指定した導出表に依存するビュー表の検索（-qオプションを指定したadbexportコマンド）

正常終了※2

SUCCESS

○

○

○

○

26

ディクショナリ表のSQL_AUDITS表の検索（操作系SQL）

正常終了

SUCCESS

○

○

○

■

◇

○

27

ディクショナリ表のSQL_AUDITS表に依存するビュー表の検索（操作系SQL）

正常終了

SUCCESS

○

○

○

■

◇

○

28

ディクショナリ表のSQL_AUDITS表の検索（-qオプションを指定していないadbexportコマンド）

正常終了※2

SUCCESS

○

○

○

○

29

ディクショナリ表のSQL_AUDITS表に依存するビュー表の検索（-qオプションを指定していないadbexportコマンド）

正常終了※2

SUCCESS

○

○

○

○

30

ディクショナリ表のSQL_AUDITS表の検索（-qオプションを指定したadbexportコマンド）

正常終了※2

SUCCESS

○

○

○

○

31

ディクショナリ表のSQL_AUDITS表に依存するビュー表の検索（-qオプションを指定したadbexportコマンド）

正常終了※2

SUCCESS

○

○

○

○

32

監査証跡ファイルの変換（adbconvertaudittrailfileコマンド）

正常終了※2，※9

SUCCESS

○

○

○

○

33

暗号イベント

HADB暗号鍵の作成（adbmkdmkコマンド）

正常終了※2

SUCCESS

○

○

○

○

34

HADB暗号鍵の更新（adbupddmkコマンド）

正常終了※2

SUCCESS

○

○

○

○

35

暗号管理権限の付与（GRANT文のCRYPTO ADMIN）

正常終了※6，※7

SUCCESS

○

○

○

■

◇

○

36

暗号管理権限の取り消し（REVOKE文のCRYPTO ADMIN）

正常終了※6，※7

SUCCESS

○

○

○

■

◇

○

37

選択監査イベント

セッションイベント

HADBサーバへの接続

正常終了（データベース認証の使用時）

SUCCESS

○

○

▽

△

◇

○

38

正常終了（PAM認証の使用時）

SUCCESS

○

○

▽

△

◇

○

39

正常終了（Keycloak認証の使用時）

SUCCESS

○

○

▽

△

◇

○

40

HADBサーバからの切り離し

正常終了※1

SUCCESS

○

○

▽

△

◇

○

41

権限管理イベント

DBA権限の付与（GRANT文のDBA）

正常終了※6

SUCCESS

○

○

○

■

◇

○

42

CONNECT権限の付与（GRANT文のCONNECT）

正常終了※6

SUCCESS

○

○

○

■

◇

○

43

SCHEMA権限の付与（GRANT文のSCHEMA）

正常終了※6

SUCCESS

○

○

○

■

◇

○

44

SELECT権限の付与（GRANT文のSELECT）

正常終了※6

SUCCESS

○

○

○

■

◇

○

45

INSERT権限の付与（GRANT文のINSERT）

正常終了※6

SUCCESS

○

○

○

■

◇

○

46

UPDATE権限の付与（GRANT文のUPDATE）

正常終了※6

SUCCESS

○

○

○

■

◇

○

47

DELETE権限の付与（GRANT文のDELETE）

正常終了※6

SUCCESS

○

○

○

■

◇

○

48

TRUNCATE権限の付与（GRANT文のTRUNCATE）

正常終了※6

SUCCESS

○

○

○

■

◇

○

49

COPY権限の付与（GRANT文のCOPY）

正常終了※6

SUCCESS

○

○

○

■

◇

○

50

REFERENCES権限の付与（GRANT文のREFERENCES）

正常終了※6

SUCCESS

○

○

○

■

◇

○

51

IMPORT TABLE権限の付与（GRANT文のIMPORT TABLE）

正常終了※6

SUCCESS

○

○

○

■

◇

○

52

REBUILD INDEX権限の付与（GRANT文のREBUILD INDEX）

正常終了※6

SUCCESS

○

○

○

■

◇

○

53

GET COSTINFO権限の付与（GRANT文のGET COSTINFO）

正常終了※6

SUCCESS

○

○

○

■

◇

○

54

EXPORT TABLE権限の付与（GRANT文のEXPORT TABLE）

正常終了※6

SUCCESS

○

○

○

■

◇

○

55

MERGE CHUNK権限の付与（GRANT文のMERGE CHUNK）

正常終了※6

SUCCESS

○

○

○

■

◇

○

56

CHANGE CHUNK COMMENT権限の付与（GRANT文のCHANGE CHUNK COMMENT）

正常終了※6

SUCCESS

○

○

○

■

◇

○

57

CHANGE CHUNK STATUS権限の付与（GRANT文のCHANGE CHUNK STATUS）

正常終了※6

SUCCESS

○

○

○

■

◇

○

58

ARCHIVE CHUNK権限の付与（GRANT文のARCHIVE CHUNK）

正常終了※6

SUCCESS

○

○

○

■

◇

○

59

UNARCHIVE CHUNK権限の付与（GRANT文のUNARCHIVE CHUNK）

正常終了※6

SUCCESS

○

○

○

■

◇

○

60

DBA権限の取り消し（REVOKE文のDBA）

正常終了※6

SUCCESS

○

○

○

■

◇

○

61

CONNECT権限の取り消し（REVOKE文のCONNECT）

正常終了※6

SUCCESS

○

○

○

■

◇

○

62

SCHEMA権限の取り消し（REVOKE文のSCHEMA）

正常終了※6

SUCCESS

○

○

○

■

◇

○

63

SELECT権限の取り消し（REVOKE文のSELECT）

正常終了※6

SUCCESS

○

○

○

■

◇

○

64

INSERT権限の取り消し（REVOKE文のINSERT）

正常終了※6

SUCCESS

○

○

○

■

◇

○

65

UPDATE権限の取り消し（REVOKE文のUPDATE）

正常終了※6

SUCCESS

○

○

○

■

◇

○

66

DELETE権限の取り消し（REVOKE文のDELETE）

正常終了※6

SUCCESS

○

○

○

■

◇

○

67

TRUNCATE権限の取り消し（REVOKE文のTRUNCATE）

正常終了※6

SUCCESS

○

○

○

■

◇

○

68

COPY権限の取り消し（REVOKE文のCOPY）

正常終了※6

SUCCESS

○

○

○

■

◇

○

69

REFERENCES権限の取り消し（REVOKE文のREFERENCES）

正常終了※6

SUCCESS

○

○

○

■

◇

○

70

IMPORT TABLE権限の取り消し（REVOKE文のIMPORT TABLE）

正常終了※6

SUCCESS

○

○

○

■

◇

○

71

REBUILD INDEX権限の取り消し（REVOKE文のREBUILD INDEX）

正常終了※6

SUCCESS

○

○

○

■

◇

○

72

GET COSTINFO権限の取り消し（REVOKE文のGET COSTINFO）

正常終了※6

SUCCESS

○

○

○

■

◇

○

73

EXPORT TABLE権限の取り消し（REVOKE文のEXPORT TABLE）

正常終了※6

SUCCESS

○

○

○

■

◇

○

74

MERGE CHUNK権限の取り消し（REVOKE文のMERGE CHUNK）

正常終了※6

SUCCESS

○

○

○

■

◇

○

75

CHANGE CHUNK COMMENT権限の取り消し（REVOKE文のCHANGE CHUNK COMMENT）

正常終了※6

SUCCESS

○

○

○

■

◇

○

76

CHANGE CHUNK STATUS権限の取り消し（REVOKE文のCHANGE CHUNK STATUS）

正常終了※6

SUCCESS

○

○

○

■

◇

○

77

ARCHIVE CHUNK権限の取り消し（REVOKE文のARCHIVE CHUNK）

正常終了※6

SUCCESS

○

○

○

■

◇

○

78

UNARCHIVE CHUNK権限の取り消し（REVOKE文のUNARCHIVE CHUNK）

正常終了※6

SUCCESS

○

○

○

■

◇

○

79

HADBユーザの作成（CREATE USER文）

正常終了

SUCCESS

○

○

○

■

◇

○

80

HADBユーザの削除（DROP USER文）

正常終了

SUCCESS

○

○

○

■

◇

○

81

HADBユーザの情報変更（ALTER USER文）

正常終了

SUCCESS

○

○

○

■

◇

○

82

定義系SQLイベント

外部表の定義（CREATE FOREIGN TABLE）

正常終了

SUCCESS

○

○

○

■

◇

○

83

インデクスの定義（CREATE INDEX文）

正常終了

SUCCESS

○

○

○

■

◇

○

84

スキーマの定義（CREATE SCHEMA文）

正常終了

SUCCESS

○

○

○

■

◇

○

85

外部サーバの定義（CREATE SERVER）

正常終了

SUCCESS

○

○

○

■

◇

○

86

実表の定義（CREATE TABLE文）

正常終了

SUCCESS

○

○

○

■

◇

○

87

ビュー表の定義（CREATE VIEW文）

正常終了

SUCCESS

○

○

○

■

◇

○

88

外部表の削除（DROP FOREIGN TABLE）

正常終了

SUCCESS

○

○

○

■

◇

○

89

インデクスの削除（DROP INDEX文）

正常終了

SUCCESS

○

○

○

■

◇

○

90

スキーマの削除（DROP SCHEMA文）

正常終了

SUCCESS

○

○

○

■

◇

○

91

外部サーバの削除（DROP SERVER）

正常終了

SUCCESS

○

○

○

■

◇

○

92

実表の削除（DROP TABLE文）

正常終了

SUCCESS

○

○

○

■

◇

○

93

ビュー表の削除（DROP VIEW文）

正常終了

SUCCESS

○

○

○

■

◇

○

94

外部サーバの定義変更（ALTER SERVER）

正常終了

SUCCESS

○

○

○

■

◇

○

95

実表の定義変更（ALTER TABLE文）

正常終了

SUCCESS

○

○

○

■

◇

○

96

ビュー表の定義変更（ALTER VIEW文）

正常終了

SUCCESS

○

○

○

■

◇

○

97

操作系SQLイベント

表の検索（SELECT文）

正常終了

SUCCESS

○

○

○

■

◇

○

98

表への行挿入（INSERT文※3）

正常終了

SUCCESS

○

○

○

■

◇

○

99

表の行更新（UPDATE文※3）

正常終了

SUCCESS

○

○

○

■

◇

○

100

表の行削除（DELETE文※3）

正常終了

SUCCESS

○

○

○

■

◇

○

101

表の全行削除（TRUNCATE TABLE文）

正常終了

SUCCESS

○

○

○

■

◇

○

102

チャンク内の全行削除（PURGE CHUNK文※3）

正常終了

SUCCESS

○

○

○

■

◇

○

103

表の出力（COPY文※3）

正常終了

SUCCESS

○

○

○

■

◇

○

104

SQL構文の解析エラー

FAILURE

○

○

○

■

◇

○

105

チャンクに格納されているデータの取得（adbsqlコマンドのサブコマンド#GETDATA）

正常終了

SUCCESS

○

○

○

■

○

○

106

チャンクに格納されているデータの件数の取得（adbsqlコマンドのサブコマンド#GETCOUNT）

正常終了

SUCCESS

○

○

○

■

○

○

107

表情報の表示（adbsqlコマンドのサブコマンド#TABLES）

正常終了

SUCCESS

○

○

○

■

○

○

108

列情報の表示（adbsqlコマンドのサブコマンド#COLUMNS）

正常終了

SUCCESS

○

○

○

■

○

○

109

インデクス情報の表示（adbsqlコマンドのサブコマンド#INDEXES）

正常終了

SUCCESS

○

○

○

■

○

○

110

チャンク情報の表示（adbsqlコマンドのサブコマンド#CHUNKS）

正常終了

SUCCESS

○

○

○

■

○

○

111

認可識別子の表示（adbsqlコマンドのサブコマンド#GETUSER）

正常終了

SUCCESS

○

○

○

■

○

○

112

コマンド操作イベント

データのインポート（adbimportコマンド）

正常終了※2

SUCCESS

○

○

○

○

113

データのエクスポート（-qオプションを指定していないadbexportコマンド）

正常終了※2

SUCCESS

○

○

○

○

114

データのエクスポート（-qオプションを指定したadbexportコマンド）

正常終了※2

SUCCESS

○

○

○

○

115

インデクスの再作成（adbidxrebuildコマンド）

正常終了※2

SUCCESS

○

○

○

○

116

コスト情報の収集（adbgetcstコマンド）

正常終了※2

SUCCESS

○

○

○

○

117

データベースの状態解析（adbdbstatusコマンド）

正常終了※2

SUCCESS

○

○

○

○

118

チャンクのマージ（adbmergechunkコマンド）

正常終了※2

SUCCESS

○

○

○

○

119

チャンクのコメントの設定・変更・削除（adbchgchunkcommentコマンド）

正常終了※2

SUCCESS

○

○

○

○

120

チャンクの状態変更（adbchgchunkstatusコマンド）

正常終了※2

SUCCESS

○

○

○

○

121

チャンクのアーカイブ（adbarchivechunkコマンド）

正常終了※2

SUCCESS

○

○

○

○

122

チャンクのアンアーカイブ（adbunarchivechunkコマンド）

正常終了※2

SUCCESS

○

○

○

○

123

ディクショナリ表（実表）およびシステム表（実表）の再編成（adbreorgsystemdataコマンド）

正常終了※2

SUCCESS

○

○

○

○

124

同義語辞書の登録・削除（adbsyndictコマンド）

正常終了※2

SUCCESS

○

○

○

○

表12‒23　監査証跡の出力契機と出力項目（その3）

監査イベント

監査証跡用の表関数導出表の列構成（その3）

項番

イベントの分類

イベントの種類

イベントの内容

HADBのホスト名

（HADB_HOST_NAME）

HADBのIPアドレス

（HADB_IP_ADDRESS）

HADBのポート番号

（HADB_PORT_NUMBER）

HADBのプロセスID

（HADB_PROCESS_ID）

HADBのサーバディレクトリ

（ADBDIR）

HADBのノード番号※8

（HADB_NODE_NUMBER）

コネクションID

（CONNECTION_ID）

コネクション通番

（CONNECTION_NUMBER）

文ハンドル

（STATEMENT_HANDLE）

SQL文通番

（SQL_SERIAL_NUMBER）

1

必須監査イベント

システムイベント

HADBサーバの開始（adbstartコマンド）

○

○

○

○

○

○

2

HADBサーバの終了（adbstopコマンド）

正常終了

○

○

○

○

○

○

3

HADBサーバの稼働モードの変更（adbchgsrvmodeコマンド）

正常終了

○

○

○

○

○

○

4

ノード種別の変更（adbchgnodetypeコマンド）

正常終了

○

○

○

○

○

○

5

SQLトレース情報の出力開始・停止（adbchgsqltrcコマンド）

正常終了

○

○

○

○

○

○

6

クライアント定義の集中管理（--updateオプションを指定したadbclientdefmangコマンド）

正常終了※2

○

○

○

○

○

○

○

○

7

クライアント定義の集中管理（-iオプションを指定したadbclientdefmangコマンド）

正常終了※2

○

○

○

○

○

○

○

○

8

DBエリアの追加・変更（adbmodareaコマンド）

正常終了※2

○

○

○

○

○

○

○

○

9

バッファの変更（adbmodbuffコマンド）

正常終了※2

○

○

○

○

○

○

○

○

10

更新行のカラム化機能の管理（adbcolumnizeコマンド）

正常終了

○

○

○

○

○

○

11

監査イベント

監査管理権限の付与（GRANT文の AUDIT ADMIN）

正常終了※6，※7

○

○

○

○

○

○

○

○

○

○

12

監査参照権限の付与（GRANT文のAUDIT VIEWER）

正常終了※6，※7

○

○

○

○

○

○

○

○

○

○

13

監査管理権限の取り消し（REVOKE文のAUDIT ADMIN）

正常終了※6，※7

○

○

○

○

○

○

○

○

○

○

14

監査参照権限の取り消し（REVOKE文のAUDIT VIEWER）

正常終了※6，※7

○

○

○

○

○

○

○

○

○

○

15

監査対象の定義（CREATE AUDIT文）

正常終了

○

○

○

○

○

○

○

○

○

○

16

監査対象定義情報の削除（DROP AUDIT文）

正常終了

○

○

○

○

○

○

○

○

○

○

17

監査人のパスワード変更（ALTER USER文）

正常終了

○

○

○

○

○

○

○

○

○

○

18

監査証跡機能の有効化（--startオプションを指定したadbaudittrailコマンド）

正常終了※2

○

○

○

○

○

○

○

○

19

監査証跡機能の無効化（--stopオプションを指定したadbaudittrailコマンド）

正常終了※2

○

○

○

○

○

○

○

○

20

監査証跡ファイルの切り替え（--swapオプションを指定したadbaudittrailコマンド）

正常終了※2，※9

○

○

○

○

○

○

○

○

21

監査証跡機能に関連する情報の参照（-dオプションを指定したadbaudittrailコマンド）

正常終了※2，※9

○

○

○

○

○

○

○

○

22

監査証跡用のシステム定義関数の実行（ADB_AUDITREAD関数）（操作系SQL）

正常終了

○

○

○

○

○

○

○

○

○

○

23

ADB_AUDITREAD関数を指定した導出表に依存するビュー表の検索（操作系SQL）

正常終了

○

○

○

○

○

○

○

○

○

○

24

監査証跡用のシステム定義関数の実行（ADB_AUDITREAD関数）（-qオプションを指定したadbexportコマンド）

正常終了※2

○

○

○

○

○

○

○

○

25

ADB_AUDITREAD関数を指定した導出表に依存するビュー表の検索（-qオプションを指定したadbexportコマンド）

正常終了※2

○

○

○

○

○

○

○

○

26

ディクショナリ表のSQL_AUDITS表の検索（操作系SQL）

正常終了

○

○

○

○

○

○

○

○

○

○

27

ディクショナリ表のSQL_AUDITS表に依存するビュー表の検索（操作系SQL）

正常終了

○

○

○

○

○

○

○

○

○

○

28

ディクショナリ表のSQL_AUDITS表の検索（-qオプションを指定していないadbexportコマンド）

正常終了※2

○

○

○

○

○

○

○

○

29

ディクショナリ表のSQL_AUDITS表に依存するビュー表の検索（-qオプションを指定していないadbexportコマンド）

正常終了※2

○

○

○

○

○

○

○

○

30

ディクショナリ表のSQL_AUDITS表の検索（-qオプションを指定したadbexportコマンド）

正常終了※2

○

○

○

○

○

○

○

○

31

ディクショナリ表のSQL_AUDITS表に依存するビュー表の検索（-qオプションを指定したadbexportコマンド）

正常終了※2

○

○

○

○

○

○

○

○

32

監査証跡ファイルの変換（adbconvertaudittrailfileコマンド）

正常終了※2，※9

○

○

○

○

○

○

○

○

33

暗号イベント

HADB暗号鍵の作成（adbmkdmkコマンド）

正常終了※2

○

○

○

○

○

○

○

○

34

HADB暗号鍵の更新（adbupddmkコマンド）

正常終了※2

○

○

○

○

○

○

○

○

35

暗号管理権限の付与（GRANT文のCRYPTO ADMIN）

正常終了※6，※7

○

○

○

○

○

○

○

○

○

○

36

暗号管理権限の取り消し（REVOKE文のCRYPTO ADMIN）

正常終了※6，※7

○

○

○

○

○

○

○

○

○

○

37

選択監査イベント

セッションイベント

HADBサーバへの接続

正常終了（データベース認証の使用時）

○

○

○

○

○

○

○

○

38

正常終了（PAM認証の使用時）

○

○

○

○

○

○

○

○

39

正常終了（Keycloak認証の使用時）

○

○

○

○

○

○

○

○

40

HADBサーバからの切り離し

正常終了※1

○

○

○

○

○

○

○

○

41

権限管理イベント

DBA権限の付与（GRANT文のDBA）

正常終了※6

○

○

○

○

○

○

○

○

○

○

42

CONNECT権限の付与（GRANT文のCONNECT）

正常終了※6

○

○

○

○

○

○

○

○

○

○

43

SCHEMA権限の付与（GRANT文のSCHEMA）

正常終了※6

○

○

○

○

○

○

○

○

○

○

44

SELECT権限の付与（GRANT文のSELECT）

正常終了※6

○

○

○

○

○

○

○

○

○

○

45

INSERT権限の付与（GRANT文のINSERT）

正常終了※6

○

○

○

○

○

○

○

○

○

○

46

UPDATE権限の付与（GRANT文のUPDATE）

正常終了※6

○

○

○

○

○

○

○

○

○

○

47

DELETE権限の付与（GRANT文のDELETE）

正常終了※6

○

○

○

○

○

○

○

○

○

○

48

TRUNCATE権限の付与（GRANT文のTRUNCATE）

正常終了※6

○

○

○

○

○

○

○

○

○

○

49

COPY権限の付与（GRANT文のCOPY）

正常終了※6

○

○

○

○

○

○

○

○

○

○

50

REFERENCES権限の付与（GRANT文のREFERENCES）

正常終了※6

○

○

○

○

○

○

○

○

○

○

51

IMPORT TABLE権限の付与（GRANT文のIMPORT TABLE）

正常終了※6

○

○

○

○

○

○

○

○

○

○

52

REBUILD INDEX権限の付与（GRANT文のREBUILD INDEX）

正常終了※6

○

○

○

○

○

○

○

○

○

○

53

GET COSTINFO権限の付与（GRANT文のGET COSTINFO）

正常終了※6

○

○

○

○

○

○

○

○

○

○

54

EXPORT TABLE権限の付与（GRANT文のEXPORT TABLE）

正常終了※6

○

○

○

○

○

○

○

○

○

○

55

MERGE CHUNK権限の付与（GRANT文のMERGE CHUNK）

正常終了※6

○

○

○

○

○

○

○

○

○

○

56

CHANGE CHUNK COMMENT権限の付与（GRANT文のCHANGE CHUNK COMMENT）

正常終了※6

○

○

○

○

○

○

○

○

○

○

57

CHANGE CHUNK STATUS権限の付与（GRANT文のCHANGE CHUNK STATUS）

正常終了※6

○

○

○

○

○

○

○

○

○

○

58

ARCHIVE CHUNK権限の付与（GRANT文のARCHIVE CHUNK）

正常終了※6

○

○

○

○

○

○

○

○

○

○

59

UNARCHIVE CHUNK権限の付与（GRANT文のUNARCHIVE CHUNK）

正常終了※6

○

○

○

○

○

○

○

○

○

○

60

DBA権限の取り消し（REVOKE文のDBA）

正常終了※6

○

○

○

○

○

○

○

○

○

○

61

CONNECT権限の取り消し（REVOKE文のCONNECT）

正常終了※6

○

○

○

○

○

○

○

○

○

○

62

SCHEMA権限の取り消し（REVOKE文のSCHEMA）

正常終了※6

○

○

○

○

○

○

○

○

○

○

63

SELECT権限の取り消し（REVOKE文のSELECT）

正常終了※6

○

○

○

○

○

○

○

○

○

○

64

INSERT権限の取り消し（REVOKE文のINSERT）

正常終了※6

○

○

○

○

○

○

○

○

○

○

65

UPDATE権限の取り消し（REVOKE文のUPDATE）

正常終了※6

○

○

○

○

○

○

○

○

○

○

66

DELETE権限の取り消し（REVOKE文のDELETE）

正常終了※6

○

○

○

○

○

○

○

○

○

○

67

TRUNCATE権限の取り消し（REVOKE文のTRUNCATE）

正常終了※6

○

○

○

○

○

○

○

○

○

○

68

COPY権限の取り消し（REVOKE文のCOPY）

正常終了※6

○

○

○

○

○

○

○

○

○

○

69

REFERENCES権限の取り消し（REVOKE文のREFERENCES）

正常終了※6

○

○

○

○

○

○

○

○

○

○

70

IMPORT TABLE権限の取り消し（REVOKE文のIMPORT TABLE）

正常終了※6

○

○

○

○

○

○

○

○

○

○

71

REBUILD INDEX権限の取り消し（REVOKE文のREBUILD INDEX）

正常終了※6

○

○

○

○

○

○

○

○

○

○

72

GET COSTINFO権限の取り消し（REVOKE文のGET COSTINFO）

正常終了※6

○

○

○

○

○

○

○

○

○

○

73

EXPORT TABLE権限の取り消し（REVOKE文のEXPORT TABLE）

正常終了※6

○

○

○

○

○

○

○

○

○

○

74

MERGE CHUNK権限の取り消し（REVOKE文のMERGE CHUNK）

正常終了※6

○

○

○

○

○

○

○

○

○

○

75

CHANGE CHUNK COMMENT権限の取り消し（REVOKE文のCHANGE CHUNK COMMENT）

正常終了※6

○

○

○

○

○

○

○

○

○

○

76

CHANGE CHUNK STATUS権限の取り消し（REVOKE文のCHANGE CHUNK STATUS）

正常終了※6

○

○

○

○

○

○

○

○

○

○

77

ARCHIVE CHUNK権限の取り消し（REVOKE文のARCHIVE CHUNK）

正常終了※6

○

○

○

○

○

○

○

○

○

○

78

UNARCHIVE CHUNK権限の取り消し（REVOKE文のUNARCHIVE CHUNK）

正常終了※6

○

○

○

○

○

○

○

○

○

○

79

HADBユーザの作成（CREATE USER文）

正常終了

○

○

○

○

○

○

○

○

○

○

80

HADBユーザの削除（DROP USER文）

正常終了

○

○

○

○

○

○

○

○

○

○

81

HADBユーザの情報変更（ALTER USER文）

正常終了

○

○

○

○

○

○

○

○

○

○

82

定義系SQLイベント

外部表の定義（CREATE FOREIGN TABLE）

正常終了

○

○

○

○

○

○

○

○

○

○

83

インデクスの定義（CREATE INDEX文）

正常終了

○

○

○

○

○

○

○

○

○

○

84

スキーマの定義（CREATE SCHEMA文）

正常終了

○

○

○

○

○

○

○

○

○

○

85

外部サーバの定義（CREATE SERVER）

正常終了

○

○

○

○

○

○

○

○

○

○

86

実表の定義（CREATE TABLE文）

正常終了

○

○

○

○

○

○

○

○

○

○

87

ビュー表の定義（CREATE VIEW文）

正常終了

○

○

○

○

○

○

○

○

○

○

88

外部表の削除（DROP FOREIGN TABLE）

正常終了

○

○

○

○

○

○

○

○

○

○

89

インデクスの削除（DROP INDEX文）

正常終了

○

○

○

○

○

○

○

○

○

○

90

スキーマの削除（DROP SCHEMA文）

正常終了

○

○

○

○

○

○

○

○

○

○

91

外部サーバの削除（DROP SERVER）

正常終了

○

○

○

○

○

○

○

○

○

○

92

実表の削除（DROP TABLE文）

正常終了

○

○

○

○

○

○

○

○

○

○

93

ビュー表の削除（DROP VIEW文）

正常終了

○

○

○

○

○

○

○

○

○

○

94

外部サーバの定義変更（ALTER SERVER）

正常終了

○

○

○

○

○

○

○

○

○

○

95

実表の定義変更（ALTER TABLE文）

正常終了

○

○

○

○

○

○

○

○

○

○

96

ビュー表の定義変更（ALTER VIEW文）

正常終了

○

○

○

○

○

○

○

○

○

○

97

操作系SQLイベント

表の検索（SELECT文）

正常終了

○

○

○

○

○

○

○

○

○

○

98

表への行挿入（INSERT文※3）

正常終了

○

○

○

○

○

○

○

○

○

○

99

表の行更新（UPDATE文※3）

正常終了

○

○

○

○

○

○

○

○

○

○

100

表の行削除（DELETE文※3）

正常終了

○

○

○

○

○

○

○

○

○

○

101

表の全行削除（TRUNCATE TABLE文）

正常終了

○

○

○

○

○

○

○

○

○

○

102

チャンク内の全行削除（PURGE CHUNK文※3）

正常終了

○

○

○

○

○

○

○

○

○

○

103

表の出力（COPY文※3）

正常終了

○

○

○

○

○

○

○

○

○

○

104

SQL構文の解析エラー

○

○

○

○

○

○

○

○

○

○

105

チャンクに格納されているデータの取得（adbsqlコマンドのサブコマンド#GETDATA）

正常終了

○

○

○

○

○

○

○

○

106

チャンクに格納されているデータの件数の取得（adbsqlコマンドのサブコマンド#GETCOUNT）

正常終了

○

○

○

○

○

○

○

○

107

表情報の表示（adbsqlコマンドのサブコマンド#TABLES）

正常終了

○

○

○

○

○

○

○

○

108

列情報の表示（adbsqlコマンドのサブコマンド#COLUMNS）

正常終了

○

○

○

○

○

○

○

○

109

インデクス情報の表示（adbsqlコマンドのサブコマンド#INDEXES）

正常終了

○

○

○

○

○

○

○

○

110

チャンク情報の表示（adbsqlコマンドのサブコマンド#CHUNKS）

正常終了

○

○

○

○

○

○

○

○

111

認可識別子の表示（adbsqlコマンドのサブコマンド#GETUSER）

正常終了

○

○

○

○

○

○

○

○

112

コマンド操作イベント

データのインポート（adbimportコマンド）

正常終了※2

○

○

○

○

○

○

○

○

113

データのエクスポート（-qオプションを指定していないadbexportコマンド）

正常終了※2

○

○

○

○

○

○

○

○

114

データのエクスポート（-qオプションを指定したadbexportコマンド）

正常終了※2

○

○

○

○

○

○

○

○

115

インデクスの再作成（adbidxrebuildコマンド）

正常終了※2

○

○

○

○

○

○

○

○

116

コスト情報の収集（adbgetcstコマンド）

正常終了※2

○

○

○

○

○

○

○

○

117

データベースの状態解析（adbdbstatusコマンド）

正常終了※2

○

○

○

○

○

○

○

○

118

チャンクのマージ（adbmergechunkコマンド）

正常終了※2

○

○

○

○

○

○

○

○

119

チャンクのコメントの設定・変更・削除（adbchgchunkcommentコマンド）

正常終了※2

○

○

○

○

○

○

○

○

120

チャンクの状態変更（adbchgchunkstatusコマンド）

正常終了※2

○

○

○

○

○

○

○

○

121

チャンクのアーカイブ（adbarchivechunkコマンド）

正常終了※2

○

○

○

○

○

○

○

○

122

チャンクのアンアーカイブ（adbunarchivechunkコマンド）

正常終了※2

○

○

○

○

○

○

○

○

123

ディクショナリ表（実表）およびシステム表（実表）の再編成（adbreorgsystemdataコマンド）

正常終了※2

○

○

○

○

○

○

○

○

124

同義語辞書の登録・削除（adbsyndictコマンド）

正常終了※2

○

○

○

○

○

○

○

○

表12‒24　監査証跡の出力契機と出力項目（その4）

監査イベント

監査証跡用の表関数導出表の列構成（その4）

項番

イベントの分類

イベントの種類

イベントの内容

メッセージログ情報

（MESSAGE_LOG_INFO）

終了コード

（EXIT_STATUS）

オブジェクトの種別※4

（OBJECT_TYPE）

オブジェクトの所有者※4

（OBJECT_OWNER_NAME）

オブジェクトのスキーマ名※4

（OBJECT_SCHEMA_NAME）

オブジェクト名※4

（OBJECT_NAME）

アクセス件数※5

（ACCESS_COUNT）

1

必須監査イベント

システムイベント

HADBサーバの開始（adbstartコマンド）

○

○

2

HADBサーバの終了（adbstopコマンド）

正常終了

○

○

3

HADBサーバの稼働モードの変更（adbchgsrvmodeコマンド）

正常終了

○

○

4

ノード種別の変更（adbchgnodetypeコマンド）

正常終了

○

○

5

SQLトレース情報の出力開始・停止（adbchgsqltrcコマンド）

正常終了

○

○

6

クライアント定義の集中管理（--updateオプションを指定したadbclientdefmangコマンド）

正常終了※2

○

○

7

クライアント定義の集中管理（-iオプションを指定したadbclientdefmangコマンド）

正常終了※2

○

○

8

DBエリアの追加・変更（adbmodareaコマンド）

正常終了※2

○

○

9

バッファの変更（adbmodbuffコマンド）

正常終了※2

○

○

10

更新行のカラム化機能の管理（adbcolumnizeコマンド）

正常終了

○

○

11

監査イベント

監査管理権限の付与（GRANT文のAUDIT ADMIN）

正常終了※6，※7

○

○

○

12

監査参照権限の付与（GRANT文のAUDIT VIEWER）

正常終了※6，※7

○

○

○

13

監査管理権限の取り消し（REVOKE文のAUDIT ADMIN）

正常終了※6，※7

○

○

○

14

監査参照権限の取り消し（REVOKE文のAUDIT VIEWER）

正常終了※6，※7

○

○

○

15

監査対象の定義（CREATE AUDIT文）

正常終了

○

○

○

16

監査対象定義情報の削除（DROP AUDIT文）

正常終了

○

○

○

17

監査人のパスワード変更（ALTER USER文）

正常終了

○

○

○

18

監査証跡機能の有効化（--startオプションを指定したadbaudittrailコマンド）

正常終了※2

○

○

19

監査証跡機能の無効化（--stopオプションを指定したadbaudittrailコマンド）

正常終了※2

○

○

20

監査証跡ファイルの切り替え（--swapオプションを指定したadbaudittrailコマンド）

正常終了※2，※9

○

○

21

監査証跡機能に関連する情報の参照（-dオプションを指定したadbaudittrailコマンド）

正常終了※2，※9

○

○

22

監査証跡用のシステム定義関数の実行（ADB_AUDITREAD関数）（操作系SQL）

正常終了

○

○

TABLE FUNCTION

○

○

○

○

23

ADB_AUDITREAD関数を指定した導出表に依存するビュー表の検索（操作系SQL）

正常終了

○

○

VIEW

○

○

○

○

24

監査証跡用のシステム定義関数の実行（ADB_AUDITREAD関数）（-qオプションを指定したadbexportコマンド）

正常終了※2

○

○

TABLE FUNCTION

○

○

○

○

25

ADB_AUDITREAD関数を指定した導出表に依存するビュー表の検索（-qオプションを指定したadbexportコマンド）

正常終了※2

○

○

VIEW

○

○

○

○

26

ディクショナリ表のSQL_AUDITS表の検索（操作系SQL）

正常終了

○

○

VIEW

○

○

○

○

27

ディクショナリ表のSQL_AUDITS表に依存するビュー表の検索（操作系SQL）

正常終了

○

○

VIEW

○

○

○

○

28

ディクショナリ表のSQL_AUDITS表の検索（-qオプションを指定していないadbexportコマンド）

正常終了※2

○

○

VIEW

○

○

○

○

29

ディクショナリ表のSQL_AUDITS表に依存するビュー表の検索（-qオプションを指定していないadbexportコマンド）

正常終了※2

○

○

VIEW

○

○

○

○

30

ディクショナリ表のSQL_AUDITS表の検索（-qオプションを指定したadbexportコマンド）

正常終了※2

○

○

VIEW

○

○

○

○

31

ディクショナリ表のSQL_AUDITS表に依存するビュー表の検索（-qオプションを指定したadbexportコマンド）

正常終了※2

○

○

VIEW

○

○

○

○

32

監査証跡ファイルの変換（adbconvertaudittrailfileコマンド）

正常終了※2，※9

○

○

33

暗号イベント

HADB暗号鍵の作成（adbmkdmkコマンド）

正常終了※2

○

○

34

HADB暗号鍵の更新（adbupddmkコマンド）

正常終了※2

○

○

35

暗号管理権限の付与（GRANT文のCRYPTO ADMIN）

正常終了※6，※7

○

○

○

36

暗号管理権限の取り消し（REVOKE文のCRYPTO ADMIN）

正常終了※6，※7

○

○

○

37

選択監査イベント

セッションイベント

HADBサーバへの接続

正常終了（データベース認証の使用時）

○

○

38

正常終了（PAM認証の使用時）

○

○

39

正常終了（Keycloak認証の使用時）

○

○

40

HADBサーバからの切り離し

正常終了※1

○

○

41

権限管理イベント

DBA権限の付与（GRANT文のDBA）

正常終了※6

○

○

○

42

CONNECT権限の付与（GRANT文のCONNECT）

正常終了※6

○

○

○

43

SCHEMA権限の付与（GRANT文のSCHEMA）

正常終了※6

○

○

○

44

SELECT権限の付与（GRANT文のSELECT）

正常終了※6

○

○

TABLE，FOREIGN TABLEまたはVIEW

○

○

○

○

45

INSERT権限の付与（GRANT文のINSERT）

正常終了※6

○

○

TABLE，FOREIGN TABLEまたはVIEW

○

○

○

○

46

UPDATE権限の付与（GRANT文のUPDATE）

正常終了※6

○

○

TABLE，FOREIGN TABLEまたはVIEW

○

○

○

○

47

DELETE権限の付与（GRANT文のDELETE）

正常終了※6

○

○

TABLE，FOREIGN TABLEまたはVIEW

○

○

○

○

48

TRUNCATE権限の付与（GRANT文のTRUNCATE）

正常終了※6

○

○

TABLE，FOREIGN TABLEまたはVIEW

○

○

○

○

49

COPY権限の付与（GRANT文のCOPY）

正常終了※6

○

○

TABLE，FOREIGN TABLEまたはVIEW

○

○

○

○

50

REFERENCES権限の付与（GRANT文のREFERENCES）

正常終了※6

○

○

TABLE，FOREIGN TABLEまたはVIEW

○

○

○

○

51

IMPORT TABLE権限の付与（GRANT文のIMPORT TABLE）

正常終了※6

○

○

TABLE，FOREIGN TABLEまたはVIEW

○

○

○

○

52

REBUILD INDEX権限の付与（GRANT文のREBUILD INDEX）

正常終了※6

○

○

TABLE，FOREIGN TABLEまたはVIEW

○

○

○

○

53

GET COSTINFO権限の付与（GRANT文のGET COSTINFO）

正常終了※6

○

○

TABLE，FOREIGN TABLEまたはVIEW

○

○

○

○

54

EXPORT TABLE権限の付与（GRANT文のEXPORT TABLE）

正常終了※6

○

○

TABLE，FOREIGN TABLEまたはVIEW

○

○

○

○

55

MERGE CHUNK権限の付与（GRANT文のMERGE CHUNK）

正常終了※6

○

○

TABLE，FOREIGN TABLEまたはVIEW

○

○

○

○

56

CHANGE CHUNK COMMENT権限の付与（GRANT文のCHANGE CHUNK COMMENT）

正常終了※6

○

○

TABLE，FOREIGN TABLEまたはVIEW

○

○

○

○

57

CHANGE CHUNK STATUS権限の付与（GRANT文のCHANGE CHUNK STATUS）

正常終了※6

○

○

TABLE，FOREIGN TABLEまたはVIEW

○

○

○

○

58

ARCHIVE CHUNK権限の付与（GRANT文のARCHIVE CHUNK）

正常終了※6

○

○

TABLE，FOREIGN TABLEまたはVIEW

○

○

○

○

59

UNARCHIVE CHUNK権限の付与（GRANT文のUNARCHIVE CHUNK）

正常終了※6

○

○

TABLE，FOREIGN TABLEまたはVIEW

○

○

○

○

60

DBA権限の取り消し（REVOKE文のDBA）

正常終了※6

○

○

○

61

CONNECT権限の取り消し（REVOKE文のCONNECT）

正常終了※6

○

○

○

62

SCHEMA権限の取り消し（REVOKE文のSCHEMA）

正常終了※6

○

○

○

63

SELECT権限の取り消し（REVOKE文のSELECT）

正常終了※6

○

○

TABLE，FOREIGN TABLEまたはVIEW

○

○

○

○

64

INSERT権限の取り消し（REVOKE文のINSERT）

正常終了※6

○

○

TABLE，FOREIGN TABLEまたはVIEW

○

○

○

○

65

UPDATE権限の取り消し（REVOKE文のUPDATE）

正常終了※6

○

○

TABLE，FOREIGN TABLEまたはVIEW

○

○

○

○

66

DELETE権限の取り消し（REVOKE文のDELETE）

正常終了※6

○

○

TABLE，FOREIGN TABLEまたはVIEW

○

○

○

○

67

TRUNCATE権限の取り消し（REVOKE文のTRUNCATE）

正常終了※6

○

○

TABLE，FOREIGN TABLEまたはVIEW

○

○

○

○

68

COPY権限の取り消し（REVOKE文のCOPY）

正常終了※6

○

○

TABLE，FOREIGN TABLEまたはVIEW

○

○

○

○

69

REFERENCES権限の取り消し（REVOKE文のREFERENCES）

正常終了※6

○

○

TABLE，FOREIGN TABLEまたはVIEW

○

○

○

○

70

IMPORT TABLE権限の取り消し（REVOKE文のIMPORT TABLE）

正常終了※6

○

○

TABLE，FOREIGN TABLEまたはVIEW

○

○

○

○

71

REBUILD INDEX権限の取り消し（REVOKE文のREBUILD INDEX）

正常終了※6

○

○

TABLE，FOREIGN TABLEまたはVIEW

○

○

○

○

72

GET COSTINFO権限の取り消し（REVOKE文のGET COSTINFO）

正常終了※6

○

○

TABLE，FOREIGN TABLEまたはVIEW

○

○

○

○

73

EXPORT TABLE権限の取り消し（REVOKE文のEXPORT TABLE）

正常終了※6

○

○

TABLE，FOREIGN TABLEまたはVIEW

○

○

○

○

74

MERGE CHUNK権限の取り消し（REVOKE文のMERGE CHUNK）

正常終了※6

○

○

TABLE，FOREIGN TABLEまたはVIEW

○

○

○

○

75

CHANGE CHUNK COMMENT権限の取り消し（REVOKE文のCHANGE CHUNK COMMENT）

正常終了※6

○

○

TABLE，FOREIGN TABLEまたはVIEW

○

○

○

○

76

CHANGE CHUNK STATUS権限の取り消し（REVOKE文のCHANGE CHUNK STATUS）

正常終了※6

○

○

TABLE，FOREIGN TABLEまたはVIEW

○

○

○

○

77

ARCHIVE CHUNK権限の取り消し（REVOKE文のARCHIVE CHUNK）

正常終了※6

○

○

TABLE，FOREIGN TABLEまたはVIEW

○

○

○

○

78

UNARCHIVE CHUNK権限の取り消し（REVOKE文のUNARCHIVE CHUNK）

正常終了※6

○

○

TABLE，FOREIGN TABLEまたはVIEW

○

○

○

○

79

HADBユーザの作成（CREATE USER文）

正常終了

○

○

○

80

HADBユーザの削除（DROP USER文）

正常終了

○

○

○

81

HADBユーザの情報変更（ALTER USER文）

正常終了

○

○

○

82

定義系SQLイベント

外部表の定義（CREATE FOREIGN TABLE）

正常終了

○

○

FOREIGN TABLE

○

○

○

○

83

インデクスの定義（CREATE INDEX文）

正常終了

○

○

INDEX

○

○

○

○

84

スキーマの定義（CREATE SCHEMA文）

正常終了

○

○

SCHEMA

○

○

○

85

外部サーバの定義（CREATE SERVER）

正常終了

○

○

SERVER

○

○

○

86

実表の定義（CREATE TABLE文）

正常終了

○

○

TABLE

○

○

○

○

87

ビュー表の定義（CREATE VIEW文）

正常終了

○

○

VIEW

○

○

○

○

88

外部表の削除（DROP FOREIGN TABLE）

正常終了

○

○

FOREIGN TABLE

○

○

○

○

89

インデクスの削除（DROP INDEX文）

正常終了

○

○

INDEX

○

○

○

○

90

スキーマの削除（DROP SCHEMA文）

正常終了

○

○

SCHEMA

○

○

○

91

外部サーバの削除（DROP SERVER）

正常終了

○

○

SERVER

○

○

○

92

実表の削除（DROP TABLE文）

正常終了

○

○

TABLE

○

○

○

○

93

ビュー表の削除（DROP VIEW文）

正常終了

○

○

VIEW

○

○

○

○

94

外部サーバの定義変更（ALTER SERVER）

正常終了

○

○

SERVER

○

○

○

95

実表の定義変更（ALTER TABLE文）

正常終了

○

○

TABLE

○

○

○

○

96

ビュー表の定義変更（ALTER VIEW文）

正常終了

○

○

VIEW

○

○

○

○

97

操作系SQLイベント

表の検索（SELECT文）

正常終了

○

○

TABLE，FOREIGN TABLE，VIEWまたはTABLE FUNCTION

○

○

○

○

98

表への行挿入（INSERT文※3）

正常終了

○

○

TABLEまたはVIEW

○

○

○

○

99

表の行更新（UPDATE文※3）

正常終了

○

○

TABLEまたはVIEW

○

○

○

○

100

表の行削除（DELETE文※3）

正常終了

○

○

TABLEまたはVIEW

○

○

○

○

101

表の全行削除（TRUNCATE TABLE文）

正常終了

○

○

TABLE

○

○

○

○

102

チャンク内の全行削除（PURGE CHUNK文※3）

正常終了

○

○

TABLE

○

○

○

○

103

表の出力（COPY文※3）

正常終了

○

○

○

104

SQL構文の解析エラー

○

○

○

105

チャンクに格納されているデータの取得（adbsqlコマンドのサブコマンド#GETDATA）

正常終了

○

○

○

106

チャンクに格納されているデータの件数の取得（adbsqlコマンドのサブコマンド#GETCOUNT）

正常終了

○

○

○

107

表情報の表示（adbsqlコマンドのサブコマンド#TABLES）

正常終了

○

○

○

108

列情報の表示（adbsqlコマンドのサブコマンド#COLUMNS）

正常終了

○

○

○

109

インデクス情報の表示（adbsqlコマンドのサブコマンド#INDEXES）

正常終了

○

○

○

110

チャンク情報の表示（adbsqlコマンドのサブコマンド#CHUNKS）

正常終了

○

○

○

111

認可識別子の表示（adbsqlコマンドのサブコマンド#GETUSER）

正常終了

○

○

○

112

コマンド操作イベント

データのインポート（adbimportコマンド）

正常終了※2

○

○

TABLE

○

○

○

○

113

データのエクスポート（-qオプションを指定していないadbexportコマンド）

正常終了※2

○

○

TABLE，FOREIGN TABLEまたはVIEW

○

○

○

○

114

データのエクスポート（-qオプションを指定したadbexportコマンド）

正常終了※2

○

○

TABLE，FOREIGN TABLE，VIEWまたはTABLE FUNCTION

○

○

○

○

115

インデクスの再作成（adbidxrebuildコマンド）

正常終了※2

○

○

INDEX

○

○

○

116

コスト情報の収集（adbgetcstコマンド）

正常終了※2

○

○

TABLE

○

○

○

117

データベースの状態解析（adbdbstatusコマンド）

正常終了※2

○

○

118

チャンクのマージ（adbmergechunkコマンド）

正常終了※2

○

○

TABLE

○

○

○

119

チャンクのコメントの設定・変更・削除（adbchgchunkcommentコマンド）

正常終了※2

○

○

TABLE

○

○

○

120

チャンクの状態変更（adbchgchunkstatusコマンド）

正常終了※2

○

○

TABLE

○

○

○

121

チャンクのアーカイブ（adbarchivechunkコマンド）

正常終了※2

○

○

TABLE

○

○

○

122

チャンクのアンアーカイブ（adbunarchivechunkコマンド）

正常終了※2

○

○

TABLE

○

○

○

123

ディクショナリ表（実表）およびシステム表（実表）の再編成（adbreorgsystemdataコマンド）

正常終了※2

○

○

TABLE

○

○

○

124

同義語辞書の登録・削除（adbsyndictコマンド）

正常終了※2

○

○

表12‒25　監査証跡の出力契機と出力項目（その5）

監査イベント

監査証跡用の表関数導出表の列構成（その5）

項番

イベントの分類

イベントの種類

イベントの内容

付与，または取り消した権限

（PRIVILEGE_TYPE）

イベント対象になった認可識別子

（PRIVILEGE_USER_NAME）

SQL文

（SQL_SOURCE）

？パラメタ

（PARAM）

システムの変更情報（変更前）

（BEFORE_SYSTEM_INFO）

システムの変更情報（変更後）

（AFTER_SYSTEM_INFO）

データベースの設定情報

（SERVER_OPERAND）

ユーザ付加情報1

（USER_INFO_1）

ユーザ付加情報2

（USER_INFO_2）

ユーザ付加情報3

（USER_INFO_3）

1

必須監査イベント

システムイベント

HADBサーバの開始（adbstartコマンド）

●

○

○

2

HADBサーバの終了（adbstopコマンド）

正常終了

3

HADBサーバの稼働モードの変更（adbchgsrvmodeコマンド）

正常終了

○

○

4

ノード種別の変更（adbchgnodetypeコマンド）

正常終了

○

○

5

SQLトレース情報の出力開始・停止（adbchgsqltrcコマンド）

正常終了

○

○

6

クライアント定義の集中管理（--updateオプションを指定したadbclientdefmangコマンド）

正常終了※2

○

○

7

クライアント定義の集中管理（-iオプションを指定したadbclientdefmangコマンド）

正常終了※2

8

DBエリアの追加・変更（adbmodareaコマンド）

正常終了※2

○

○

9

バッファの変更（adbmodbuffコマンド）

正常終了※2

○

○

10

更新行のカラム化機能の管理（adbcolumnizeコマンド）

正常終了

○

○

11

監査イベント

監査管理権限の付与（GRANT文のAUDIT ADMIN）

正常終了※6，※7

○

○

○

○

○

○

12

監査参照権限の付与（GRANT文のAUDIT VIEWER）

正常終了※6，※7

○

○

○

○

○

○

13

監査管理権限の取り消し（REVOKE文のAUDIT ADMIN）

正常終了※6，※7

○

○

○

○

○

○

14

監査参照権限の取り消し（REVOKE文のAUDIT VIEWER）

正常終了※6，※7

○

○

○

○

○

○

15

監査対象の定義（CREATE AUDIT文）

正常終了

○

○

○

○

16

監査対象定義情報の削除（DROP AUDIT文）

正常終了

○

○

○

○

17

監査人のパスワード変更（ALTER USER文）

正常終了

○

○

○

○

○

18

監査証跡機能の有効化（--startオプションを指定したadbaudittrailコマンド）

正常終了※2

19

監査証跡機能の無効化（--stopオプションを指定したadbaudittrailコマンド）

正常終了※2

20

監査証跡ファイルの切り替え（--swapオプションを指定したadbaudittrailコマンド）

正常終了※2，※9

21

監査証跡機能に関連する情報の参照（-dオプションを指定したadbaudittrailコマンド）

正常終了※2，※9

22

監査証跡用のシステム定義関数の実行（ADB_AUDITREAD関数）（操作系SQL）

正常終了

○

○

○

○

○

23

ADB_AUDITREAD関数を指定した導出表に依存するビュー表の検索（操作系SQL）

正常終了

○

○

○

○

○

24

監査証跡用のシステム定義関数の実行（ADB_AUDITREAD関数）（-qオプションを指定したadbexportコマンド）

正常終了※2

○

25

ADB_AUDITREAD関数を指定した導出表に依存するビュー表の検索（-qオプションを指定したadbexportコマンド）

正常終了※2

○

26

ディクショナリ表のSQL_AUDITS表の検索（操作系SQL）

正常終了

○

○

○

○

○

27

ディクショナリ表のSQL_AUDITS表に依存するビュー表の検索（操作系SQL）

正常終了

○

○

○

○

○

28

ディクショナリ表のSQL_AUDITS表の検索（-qオプションを指定していないadbexportコマンド）

正常終了※2

29

ディクショナリ表のSQL_AUDITS表に依存するビュー表の検索（-qオプションを指定していないadbexportコマンド）

正常終了※2

30

ディクショナリ表のSQL_AUDITS表の検索（-qオプションを指定したadbexportコマンド）

正常終了※2

○

31

ディクショナリ表のSQL_AUDITS表に依存するビュー表の検索（-qオプションを指定したadbexportコマンド）

正常終了※2

○

32

監査証跡ファイルの変換（adbconvertaudittrailfileコマンド）

正常終了※2，※9

33

暗号イベント

HADB暗号鍵の作成（adbmkdmkコマンド）

正常終了※2

34

HADB暗号鍵の更新（adbupddmkコマンド）

正常終了※2

35

暗号管理権限の付与（GRANT文のCRYPTO ADMIN）

正常終了※6，※7

○

○

○

○

○

○

36

暗号管理権限の取り消し（REVOKE文のCRYPTO ADMIN）

正常終了※6，※7

○

○

○

○

○

○

37

選択監査イベント

セッションイベント

HADBサーバへの接続

正常終了（データベース認証の使用時）

38

正常終了（PAM認証の使用時）

39

正常終了（Keycloak認証の使用時）

40

HADBサーバからの切り離し

正常終了※1

○

○

○

41

権限管理イベント

DBA権限の付与（GRANT文のDBA）

正常終了※6

○

○

○

○

○

○

42

CONNECT権限の付与（GRANT文のCONNECT）

正常終了※6

○

○

○

○

○

○

43

SCHEMA権限の付与（GRANT文のSCHEMA）

正常終了※6

○

○

○

○

○

○

44

SELECT権限の付与（GRANT文のSELECT）

正常終了※6

○

○

○

○

○

○

45

INSERT権限の付与（GRANT文のINSERT）

正常終了※6

○

○

○

○

○

○

46

UPDATE権限の付与（GRANT文のUPDATE）

正常終了※6

○

○

○

○

○

○

47

DELETE権限の付与（GRANT文のDELETE）

正常終了※6

○

○

○

○

○

○

48

TRUNCATE権限の付与（GRANT文のTRUNCATE）

正常終了※6

○

○

○

○

○

○

49

COPY権限の付与（GRANT文のCOPY）

正常終了※6

○

○

○

○

○

○

50

REFERENCES権限の付与（GRANT文のREFERENCES）

正常終了※6

○

○

○

○

○

○

51

IMPORT TABLE権限の付与（GRANT文のIMPORT TABLE）

正常終了※6

○

○

○

○

○

○

52

REBUILD INDEX権限の付与（GRANT文のREBUILD INDEX）

正常終了※6

○

○

○

○

○

○

53

GET COSTINFO権限の付与（GRANT文のGET COSTINFO）

正常終了※6

○

○

○

○

○

○

54

EXPORT TABLE権限の付与（GRANT文のEXPORT TABLE）

正常終了※6

○

○

○

○

○

○

55

MERGE CHUNK権限の付与（GRANT文のMERGE CHUNK）

正常終了※6

○

○

○

○

○

○

56

CHANGE CHUNK COMMENT権限の付与（GRANT文のCHANGE CHUNK COMMENT）

正常終了※6

○

○

○

○

○

○

57

CHANGE CHUNK STATUS権限の付与（GRANT文のCHANGE CHUNK STATUS）

正常終了※6

○

○

○

○

○

○

58

ARCHIVE CHUNK権限の付与（GRANT文のARCHIVE CHUNK）

正常終了※6

○

○

○

○

○

○

59

UNARCHIVE CHUNK権限の付与（GRANT文のUNARCHIVE CHUNK）

正常終了※6

○

○

○

○

○

○

60

DBA権限の取り消し（REVOKE文のDBA）

正常終了※6

○

○

○

○

○

○

61

CONNECT権限の取り消し（REVOKE文のCONNECT）

正常終了※6

○

○

○

○

○

○

62

SCHEMA権限の取り消し（REVOKE文のSCHEMA）

正常終了※6

○

○

○

○

○

○

63

SELECT権限の取り消し（REVOKE文のSELECT）

正常終了※6

○

○

○

○

○

○

64

INSERT権限の取り消し（REVOKE文のINSERT）

正常終了※6

○

○

○

○

○

○

65

UPDATE権限の取り消し（REVOKE文のUPDATE）

正常終了※6

○

○

○

○

○

○

66

DELETE権限の取り消し（REVOKE文のDELETE）

正常終了※6

○

○

○

○

○

○

67

TRUNCATE権限の取り消し（REVOKE文のTRUNCATE）

正常終了※6

○

○

○

○

○

○

68

COPY権限の取り消し（REVOKE文のCOPY）

正常終了※6

○

○

○

○

○

○

69

REFERENCES権限の取り消し（REVOKE文のREFERENCES）

正常終了※6

○

○

○

○

○

○

70

IMPORT TABLE権限の取り消し（REVOKE文のIMPORT TABLE）

正常終了※6

○

○

○

○

○

○

71

REBUILD INDEX権限の取り消し（REVOKE文のREBUILD INDEX）

正常終了※6

○

○

○

○

○

○

72

GET COSTINFO権限の取り消し（REVOKE文のGET COSTINFO）

正常終了※6

○

○

○

○

○

○

73

EXPORT TABLE権限の取り消し（REVOKE文のEXPORT TABLE）

正常終了※6

○

○

○

○

○

○

74

MERGE CHUNK権限の取り消し（REVOKE文のMERGE CHUNK）

正常終了※6

○

○

○

○

○

○

75

CHANGE CHUNK COMMENT権限の取り消し（REVOKE文のCHANGE CHUNK COMMENT）

正常終了※6

○

○

○

○

○

○

76

CHANGE CHUNK STATUS権限の取り消し（REVOKE文のCHANGE CHUNK STATUS）

正常終了※6

○

○

○

○

○

○

77

ARCHIVE CHUNK権限の取り消し（REVOKE文のARCHIVE CHUNK）

正常終了※6

○

○

○

○

○

○

78

UNARCHIVE CHUNK権限の取り消し（REVOKE文のUNARCHIVE CHUNK）

正常終了※6

○

○

○

○

○

○

79

HADBユーザの作成（CREATE USER文）

正常終了

○

○

○

○

○

80

HADBユーザの削除（DROP USER文）

正常終了

○

○

○

○

○

81

HADBユーザの情報変更（ALTER USER文）

正常終了

○

○

○

○

○

82

定義系SQLイベント

外部表の定義（CREATE FOREIGN TABLE）

正常終了

○

○

○

○

83

インデクスの定義（CREATE INDEX文）

正常終了

○

○

○

○

84

スキーマの定義（CREATE SCHEMA文）

正常終了

○

○

○

○

85

外部サーバの定義（CREATE SERVER）

正常終了

○

○

○

○

86

実表の定義（CREATE TABLE文）

正常終了

○

○

○

○

87

ビュー表の定義（CREATE VIEW文）

正常終了

○

○

○

○

88

外部表の削除（DROP FOREIGN TABLE）

正常終了

○

○

○

○

89

インデクスの削除（DROP INDEX文）

正常終了

○

○

○

○

90

スキーマの削除（DROP SCHEMA文）

正常終了

○

○

○

○

91

外部サーバの削除（DROP SERVER）

正常終了

○

○

○

○

92

実表の削除（DROP TABLE文）

正常終了

○

○

○

○

93

ビュー表の削除（DROP VIEW文）

正常終了

○

○

○

○

94

外部サーバの定義変更（ALTER SERVER）

正常終了

○

○

○

○

95

実表の定義変更（ALTER TABLE文）

正常終了

○

○

○

○

96

ビュー表の定義変更（ALTER VIEW文）

正常終了

○

○

○

○

97

操作系SQLイベント

表の検索（SELECT文）

正常終了

○

○

○

○

○

98

表への行挿入（INSERT文※3）

正常終了

○

○

○

○

○

99

表の行更新（UPDATE文※3）

正常終了

○

○

○

○

○

100

表の行削除（DELETE文※3）

正常終了

○

○

○

○

○

101

表の全行削除（TRUNCATE TABLE文）

正常終了

○

○

○

○

102

チャンク内の全行削除（PURGE CHUNK文※3）

正常終了

○

○

○

○

○

103

表の出力（COPY文※3）

正常終了

○

○

○

○

○

104

SQL構文の解析エラー

○

○

○

○

105

チャンクに格納されているデータの取得（adbsqlコマンドのサブコマンド#GETDATA）

正常終了

106

チャンクに格納されているデータの件数の取得（adbsqlコマンドのサブコマンド#GETCOUNT）

正常終了

107

表情報の表示（adbsqlコマンドのサブコマンド#TABLES）

正常終了

108

列情報の表示（adbsqlコマンドのサブコマンド#COLUMNS）

正常終了

109

インデクス情報の表示（adbsqlコマンドのサブコマンド#INDEXES）

正常終了

110

チャンク情報の表示（adbsqlコマンドのサブコマンド#CHUNKS）

正常終了

111

認可識別子の表示（adbsqlコマンドのサブコマンド#GETUSER）

正常終了

112

コマンド操作イベント

データのインポート（adbimportコマンド）

正常終了※2

113

データのエクスポート（-qオプションを指定していないadbexportコマンド）

正常終了※2

114

データのエクスポート（-qオプションを指定したadbexportコマンド）

正常終了※2

○

115

インデクスの再作成（adbidxrebuildコマンド）

正常終了※2

116

コスト情報の収集（adbgetcstコマンド）

正常終了※2

117

データベースの状態解析（adbdbstatusコマンド）

正常終了※2

118

チャンクのマージ（adbmergechunkコマンド）

正常終了※2

119

チャンクのコメントの設定・変更・削除（adbchgchunkcommentコマンド）

正常終了※2

120

チャンクの状態変更（adbchgchunkstatusコマンド）

正常終了※2

121

チャンクのアーカイブ（adbarchivechunkコマンド）

正常終了※2

122

チャンクのアンアーカイブ（adbunarchivechunkコマンド）

正常終了※2

123

ディクショナリ表（実表）およびシステム表（実表）の再編成（adbreorgsystemdataコマンド）

正常終了※2

124

同義語辞書の登録・削除（adbsyndictコマンド）

正常終了※2

（凡例）

○

出力情報がある場合は，該当する情報が出力されます。出力情報がない場合は，NULLが出力されます。

空欄

NULLが出力されます。

■

UNIXドメイン通信による接続の場合は，NULLが出力されます。

◇

クライアントがJDBCドライバの場合は，NULLが出力されます。

●

マルチノード機能を使用している場合，ノードによって出力される情報が異なります。

プライマリノードの場合は，前回起動時にプライマリノードだったノードのHADBサーバの稼働モードが出力されます。

セカンダリノードまたはワーカーノードの場合は，常にNULLが出力されます。

▽

実行したコマンドの処理の延長である場合は，NULLが出力されます。

△

次のどちらかに該当する場合は，NULLが出力されます。

UNIXドメイン通信による接続の場合

実行したコマンドの処理の延長である場合

▼

マルチノード機能を使用している場合は，次のどれかのケースに該当する監査証跡に，サーバ間通信で使用するプライマリノードのIPアドレスとポート番号が出力されます。次のケースに該当しない監査証跡には，NULLが出力されます。

プライマリノードで--nodeオプションを指定しないでadbstopコマンドを実行した際に，「イベント種別（EVENT_SUBTYPE）」列にADBSTOPが出力されている監査証跡

セカンダリノードまたはワーカーノードに出力されている監査証跡が対象です。

-nオプションにセカンダリノードまたはワーカーノードのノード番号を指定してadbaudittrail --swapコマンドを実行した際に，「イベント種別（EVENT_SUBTYPE）」列にADBAUDITTRAIL SWAPが出力されている監査証跡

セカンダリノードで処理が実行されて，セカンダリノードに出力されている監査証跡が対象です。または，ワーカーノードで処理が実行されて，ワーカーノードに出力されている監査証跡が対象です。

-nオプションにセカンダリノードまたはワーカーノードのノード番号を指定してadbaudittrail -dコマンドを実行した際に，「イベント種別（EVENT_SUBTYPE）」列にADBAUDITTRAIL DISPLAYが出力されている監査証跡

セカンダリノードで処理が実行されて，セカンダリノードに出力されている監査証跡が対象です。または，ワーカーノードで処理が実行されて，ワーカーノードに出力されている監査証跡が対象です。

注

上記の凡例以外の出力情報（EVENT，SYSTEMなど）は，表内に記載されているとおりの内容が出力されます。詳細については，「12.9.2　監査証跡を検索するときの表関数導出表の列構成」の「表12‒10　監査証跡を検索するときの表関数導出表の列構成」を参照してください。

なお，「オブジェクトの種別（OBJECT_TYPE）」列については，出力情報がない場合，NULLが出力されます。

注※1

コネクションプーリングを使用している場合は，Connectionオブジェクトのcloseは含みません（SQLトレース情報に出力されるコール種別DISPが該当します）。

注※2

対象イベントの前後には，「イベント種別（EVENT_SUBTYPE）」列にCONNECTとDISCONNECTが出力された監査証跡が，それぞれ出力されます。それぞれの監査証跡について，次に示す列には実行したコマンド名が出力されます。

「AP識別子（AP_NAME）」列

「クライアントのプロセス名（CLIENT_PROCESS_NAME）」列

注※3

SELECT文以外の操作系SQLで問合せ式本体を含むSQL文を実行した場合，問合せ式本体に記述したオブジェクトに関する監査証跡は，「表の検索（SELECT文）」行と同じ情報が出力されます。

注※4

次のどちらかに該当する場合は，表内に出力情報が記載されていても，NULLが出力されます。

イベント対象のオブジェクトがすべて表値構成子の場合

コマンド実行時に，どのオブジェクトに対しても処理が実行されなかった場合

注※5

SQL文の実行まで完了した場合と区別するために，SQL文の前処理だけが完了した状態で文ハンドルをクローズした場合はNULLが出力されます。なお，コマンドは該当しません。

注※6

SQL文に指定されたすべての認可識別子に対して，権限の付与または権限の取り消しが不要だった場合は，次に示す列にNULLが出力されます。

「オブジェクトの種別（OBJECT_TYPE）」列

「オブジェクトの所有者（OBJECT_OWNER_NAME）」列

「オブジェクトのスキーマ名（OBJECT_SCHEMA_NAME）」列

「オブジェクト名（OBJECT_NAME）」列

「付与，または取り消した権限（PRIVILEGE_TYPE）」列

「イベント対象になった認可識別子（PRIVILEGE_USER_NAME）」列

注※7

SQL文に指定されたすべての認可識別子に対して，権限の付与または権限の取り消しが不要だった場合は，「イベントの種類（EVENT_TYPE）」列にPRIVILEGEが出力されます。

注※8

マルチノード機能を使用した場合に，情報が出力されます。マルチノード機能を使用していない場合は，NULLが出力されます。

注※9

マルチノード機能を使用している場合，対象イベントの「イベント種別（EVENT_SUBTYPE）」列にCONNECTとDISCONNECTが出力される監査証跡は，常にプライマリノードで出力されます。

12.10　監査証跡機能使用時の留意事項

ここでは，監査証跡機能使用時の留意事項について説明します。

「12.10.1　1つのイベントで複数の監査証跡が出力されるケース」

「12.10.2　コマンドの実行時に出力される監査証跡についての留意事項」

12.10.1　1つのイベントで複数の監査証跡が出力されるケース

イベントの対象となるオブジェクトが複数ある場合，対象となるオブジェクトの数だけ監査証跡が出力されます。例えば，次のSQL文を実行した場合，表T1についての監査証跡と，表T2についての監査証跡がそれぞれ出力されます。

SELECT * FROM "T1","T2"

同様に，イベントの対象となる権限や認可識別子が複数ある場合も，権限や認可識別子の組み合わせの数だけ監査証跡が出力されます。1つのイベントで複数の監査証跡が出力されるケースを次の表に示します。

表12‒26　1つのイベントで複数の監査証跡が出力されるケース

項番

実行したイベント

出力される監査証跡の数

1

監査管理権限の付与

権限を付与した認可識別子の数

2

監査参照権限の付与

3

監査管理権限の取り消し

権限を取り消した認可識別子の数

4

監査参照権限の取り消し

5

暗号管理権限の付与

権限を付与した認可識別子の数

6

暗号管理権限の取り消し

権限を取り消した認可識別子の数

7

権限の付与（アクセス権限以外の場合）

MAX（1 ，付与した権限の数 × 権限を付与した認可識別子の数）

8

権限の付与（アクセス権限の場合）

MAX（1 ，付与したアクセス権限の数※1 × 対象オブジェクトの数※2 × 権限を付与した認可識別子の数）※6，※7

9

権限の取り消し（アクセス権限以外の場合）

MAX（1 ，取り消した権限の数 × 権限を取り消した認可識別子の数）

10

権限の取り消し（アクセス権限の場合）

MAX（1 ，取り消したアクセス権限の数※1 × 対象オブジェクトの数※2 × 権限を取り消した認可識別子の数）※6，※7

11

表の検索（SELECT文の場合）

MAX（1 ，問合せ式本体に指定した対象オブジェクトの数※4）

12

表の検索（SELECT文以外の操作系SQLの場合※3）

問合せ式本体に指定した対象オブジェクトの数※4

13

インデクスの再作成

MAX（1 ，再作成したインデクスの数※5）

14

コスト情報の収集

MAX（1 ，コスト情報を収集した表の数※5）

15

データエクスポート（-qオプションを指定したadbexportコマンドの場合）

MAX（1 ，SQL記述ファイル中に記述したSQL文の問合せ式本体に指定した対象オブジェクトの数※4）

注※1

ALL PRIVILEGESを指定してGRANT文またはREVOKE文を実行した場合，すべてのアクセス権限を指定したときと同じ動作になります。

注※2

ALL TABLESを指定してGRANT文またはREVOKE文を実行した場合，対象オブジェクトの数は，GRANT文またはREVOKE文を実行したHADBユーザのスキーマ内の実表と外部表の合計数になります。ただし，SQL文がエラーになったときは，全実表と全外部表分の監査証跡が出力されないことがあります。

注※3

問合せ式本体を含むINSERT文などの操作系SQLを実行した場合，問合せ式本体中に指定したオブジェクトについての監査証跡は，表の検索イベントとして出力されます。

注※4

同じオブジェクトを複数指定した場合は，重複排除されます。また，表値構成子はオブジェクト数としてカウントされません。

注※5

オブジェクトごとにイベントの成功，失敗の情報が監査証跡に出力されます。また，失敗した時点でコマンドの処理がエラーになるため，失敗したオブジェクトの後ろに指定されたオブジェクトからは監査証跡が出力されません。

注※6

指定した権限を1つも付与しないでGRANT文が正常終了した場合，GRANT文についての監査証跡が1つだけ出力されます。その際，オブジェクト，権限種別，HADBユーザの認可識別子には，NULLが出力されます。REVOKE文の場合も同様です。

注※7

アクセス権限の付与または取り消しの際にSQL文がエラーになった場合，付与または取り消されたアクセス権限がないため，指定したすべてのアクセス権限が監査証跡の出力対象になります。エラーによって対象オブジェクトの種別が判別できない場合は，対象オブジェクトの種別にNULLが出力されます。

12.10.2　コマンドの実行時に出力される監査証跡についての留意事項

(1)　HADBサーバに接続するコマンドを実行したときに出力される監査証跡

HADBサーバに接続するコマンドを実行した場合，コマンドについての監査証跡以外に，次のイベントの監査証跡が出力されます。

HADBサーバへの接続

HADBサーバからの切り離し

HADBサーバに接続するコマンドについては，マニュアルHADB　コマンドリファレンスのコマンドの一覧を参照してください。

(2)　adbcancelコマンドを実行した場合の留意事項

HADBサーバに接続するコマンドに対してadbcancelコマンドを実行したタイミングや，HADBサーバに接続するコマンドの実行中にHADBサーバが通信エラーを検知したタイミングによっては，監査証跡に出力される情報とコマンドの戻り値が次の表に示すようになります。

表12‒27　監査証跡に出力される情報とコマンドの戻り値

adbcancelコマンドを実行したタイミング，またはHADBサーバが通信エラーを検知したタイミング

HADBサーバへの接続についての監査証跡

コマンドについての監査証跡

HADBサーバからの切り離しについての監査証跡

コマンドの戻り値

HADBサーバへの接続とコマンドの処理の間

「成功」で出力される

出力されない

「発生」で出力される※

エラー

コマンドの処理とHADBサーバからの切り離しの間

「成功」で出力される

コマンドの処理が成功している場合は，「成功」で出力される

「発生」で出力される※

エラー

注※

イベント結果に「発生」が出力された場合，HADBサーバからの切り離し自体は完了しています。「発生」が出力された原因については，メッセージログを参照してください。

(3)　adbaudittrailコマンドを実行した場合の留意事項

次のタイミングでHADBサーバが現用の監査証跡ファイルのリネームに失敗した場合，監査証跡に出力される終了コードとコマンドのリターンコードが不一致になります。

HADBサーバを終了したとき

監査証跡機能を無効化したとき

マルチノード機能の使用時にadbaudittrailコマンドを実行した場合，監査証跡は次の表に示すノードに出力されます。

表12‒28　adbaudittrailコマンドの実行時に監査証跡が出力されるノード

項番

adbaudittrailコマンドに指定したオプション

監査証跡の出力先ノード

HADBサーバへの接続についての監査証跡

adbaudittrailコマンドについての監査証跡

HADBサーバからの切り離しについての監査証跡

1

--start

プライマリノード

プライマリノード

プライマリノード

2

--stop

3

--swap

プライマリノード※1

コマンドを実行したノード

プライマリノード※1

4

--swap -n ノード番号

プライマリノード

-nオプションに指定したノード番号のノード※2，※3

プライマリノード

5

-d

プライマリノード※1

コマンドを実行したノード

プライマリノード※1

6

-d -n ノード番号

プライマリノード

-nオプションに指定したノード番号のノード※2，※3

プライマリノード

注※1

プライマリノードで実行した場合，CLIENT_IP_ADDRESSとCLIENT_PORT_NUMBERにはNULLが出力されます。セカンダリノードまたはワーカーノードで実行した場合，CLIENT_IP_ADDRESSとCLIENT_PORT_NUMBERには，adbaudittrailコマンドがプライマリノードのHADBサーバに接続するときに使用したIPアドレスとポート番号が出力されます。CLIENT_IP_ADDRESSとCLIENT_PORT_NUMBERは，監査証跡を検索するときの表関数導出表の列名です。詳細については，「12.9.2　監査証跡を検索するときの表関数導出表の列構成」を参照してください。

注※2

adbaudittrailコマンドの-nオプションにセカンダリノードまたはワーカーノードのノード番号を指定した場合，CLIENT_IP_ADDRESSとCLIENT_PORT_NUMBERには，サーバ間通信で使用するプライマリノードのIPアドレスとポート番号が出力されます。プライマリノードのノード番号を指定した場合は，CLIENT_IP_ADDRESSとCLIENT_PORT_NUMBERにはNULLが出力されます。CLIENT_IP_ADDRESSとCLIENT_PORT_NUMBERは，監査証跡を検索するときの表関数導出表の列名です。詳細については，「12.9.2　監査証跡を検索するときの表関数導出表の列構成」を参照してください。

注※3

次に示すエラーが発生した場合，adbaudittrailコマンドについての監査証跡は，プライマリノードに出力されます。

監査管理権限（-dオプションの場合は監査権限）を持っていないHADBユーザがadbaudittrailコマンドを実行した場合

監査証跡機能が無効なときにadbaudittrailコマンドを実行した場合

(4)　adbconvertaudittrailfileコマンドを実行した場合の留意事項

マルチノード機能の使用時にadbconvertaudittrailfileコマンドを実行した場合，監査証跡は次の表に示すノードに出力されます。

表12‒29　adbconvertaudittrailfileコマンドの実行時に監査証跡が出力されるノード

監査証跡の出力先ノード

HADBサーバへの接続についての監査証跡

adbconvertaudittrailfileコマンドについての監査証跡

HADBサーバからの切り離しについての監査証跡

プライマリノード※

コマンドを実行したノード

プライマリノード※

注※

プライマリノードで実行した場合，CLIENT_IP_ADDRESSとCLIENT_PORT_NUMBERにはNULLが出力されます。セカンダリノードまたはワーカーノードで実行した場合，CLIENT_IP_ADDRESSとCLIENT_PORT_NUMBERには，adbconvertaudittrailfileコマンドがプライマリノードのHADBサーバに接続するときに使用したIPアドレスとポート番号が出力されます。CLIENT_IP_ADDRESSとCLIENT_PORT_NUMBERは，監査証跡を検索するときの表関数導出表の列名です。詳細については，「12.9.2　監査証跡を検索するときの表関数導出表の列構成」を参照してください。

13　DBエリア暗号化機能の運用

この章では，DBエリア暗号化機能の運用について説明します。

13.1　DBエリア暗号化機能の環境設定

DBエリア暗号化機能の環境設定方法について説明します。

13.1.1　HADBサーバを新規導入する場合

ここでの説明は，HADBサーバを新規導入する際に，DBエリア暗号化機能の環境設定を一緒に行うことを前提としています。

HADBサーバの新規導入時にDBエリア暗号化機能の環境設定をする場合は，「8.1　システム構築の手順」で説明している「環境変数の設定」が完了したあとに，以降で説明する作業をしてください。

(1)　HADB暗号鍵を管理する人の選定

HADB暗号鍵を格納するHADB暗号鍵ファイルは，OSが扱うことができるファイルシステム上のファイルとして保存します。HADB暗号鍵ファイルのパーミッションは，HADB管理者だけに読み取り権限が設定されます。職務分掌の観点から，HADB管理者を操作する人を次の2名に分けることを推奨します。

データベースの管理担当者

HADB暗号鍵の管理担当者

HADB暗号鍵の管理および廃棄などの作業は，HADB暗号鍵の管理担当者が責任を持って実施するようにしてください。

(2)　HADB暗号鍵ファイルの保存先ディレクトリの作成

HADB暗号鍵ファイルの保存先ディレクトリを作成して，パーミッションを設定してください。

手順

次のすべての操作は，HADB管理者で実行してください。

HADB暗号鍵ファイルの保存先ディレクトリを作成する

mkdir /HADB/.crypto

上記のコマンドを実行すると，HADB暗号鍵ファイルの保存先ディレクトリとして/HADB/.cryptoが作成されます。

メモ

ディレクトリ名はドット（ . ）から始まる名称にして，隠しディレクトリにすることを推奨します。

HADB暗号鍵ファイルの保存先ディレクトリのパーミッションを700に設定する

chmod 700 /HADB/.crypto

(3)　データベースの初期設定

adbinitコマンドを実行して，データベースを初期設定します。その際，adbinitコマンドの初期設定オプションに暗号化対象のDBエリアを指定します。

＜初期設定オプションの指定例＞

set adb_init_dbarea_initialize = Y
         :
         :
set adb_init_dmkey_path = /HADB/.crypto/adb_dmkey     ...1
set adb_init_dic_encrypt = Y                          ...2
set adb_init_wrk_encrypt = Y                          ...3
set adb_init_stbl_encrypt = Y                         ...4
adbinitdbarea -n DBAREA01 ¥
              -p 4 ¥
              -v /dev/mapper/VolG01,/dev/mapper/VolG02 ¥
              -q ¥
              -i 2G,2 ¥
              -e                                      ...5
adbinitdbarea -n DBAREA02 ¥
              -p 4 ¥
              -v /dev/mapper/VolG03,/dev/mapper/VolG04,/dev/mapper/VolG05 ¥
              -q ¥
              -i 2G,3 ¥
              -e                                      ...5

［説明］

このオペランドを指定すると，adbinitコマンドの実行時にHADB暗号鍵が作成されます。このオペランドには，HADB暗号鍵の出力先ファイル名（HADB暗号鍵ファイル名）を絶対パスで指定します。

「(2)　HADB暗号鍵ファイルの保存先ディレクトリの作成」で作成したHADB暗号鍵ファイルの保存先ディレクトリ（/HADB/.crypto）下に，任意のファイル名を指定します。

この例では，HADB暗号鍵ファイルとして/HADB/.crypto/adb_dmkeyが作成されます。

このオペランドを指定すると，ディクショナリ用DBエリアが暗号化対象になります。

このオペランドを指定すると，作業表用DBエリアが暗号化対象になります。

このオペランドを指定すると，システム表用DBエリアが暗号化対象になります。

-eオプションを指定したデータ用DBエリアが暗号化対象になります。機密情報が含まれている可能性がある表およびインデクスを格納するデータ用DBエリアにこのオプションを指定してください。

メモ

データ用DBエリアを暗号化対象にした場合，次のDBエリアにも機密情報が含まれる可能性があるため，これらのDBエリアも暗号化対象にすることを推奨します。

ディクショナリ用DBエリア

作業表用DBエリア

システム表用DBエリア

上記の内容で初期設定オプションファイル（/HADB/server/conf/adbinit.opt）を作成し，adbinitコマンドを実行してください。

＜adbinitコマンドの実行例＞

adbinit -u ADBUSER01                                  ...1
        -p '#HelloHADB_01'                            ...2
        /HADB/server/conf/adbinit.opt                 ...3
        /HADB/db                                      ...4

［説明］

HADBユーザ名を指定します。adbinitコマンドを実行すると，認可識別子がADBUSER01であるHADBユーザが作成されます。

パスワードを指定します。ここで指定したパスワードが，1.で作成されるHADBユーザのパスワードになります。

作成した初期設定オプションのファイル名を指定します。

DBディレクトリ名を指定します。

重要

adbinitコマンドの入力後，KFAA90013-Qメッセージが出力されます。このメッセージが出力されたら，パスワードを入力してください。ここで入力したパスワードが，HADB暗号鍵利用パスワードとして設定されます。

HADB暗号鍵利用パスワードは，adbinitコマンドの-pオプションに指定するパスワードと異なるパスワードにしてください。

HADB暗号鍵利用パスワードは，「(1)　HADB暗号鍵を管理する人の選定」で選定したHADB暗号鍵の管理担当者が決めて入力してください。

(4)　サーバ定義の作成

サーバ定義を作成します。サーバ定義の作成については，「7.　サーバ定義の設計」，および「8.5　サーバ定義の作成および変更方法」を参照してください。

なお，サーバ定義を作成する際，adb_crypto_dmkey_pathオペランドにHADB暗号鍵ファイルの絶対パスを指定してください。

set adb_crypto_dmkey_path = /HADB/.crypto/adb_dmkey

「(3)　データベースの初期設定」で説明しているadb_init_dmkey_pathオペランドに指定したHADB暗号鍵ファイル（/HADB/.crypto/adb_dmkey）を指定します。

(5)　HADBサーバの開始

adbstartコマンドを実行してHADBサーバを開始します。

重要

adbstartコマンドの入力後，KFAA90013-Qメッセージが出力されます。このメッセージが出力されたら，「(3)　データベースの初期設定」で設定したHADB暗号鍵利用パスワードを入力してください。

HADB暗号鍵利用パスワードは，「(1)　HADB暗号鍵を管理する人の選定」で選定したHADB暗号鍵の管理担当者が入力してください。

(6)　HADBユーザの作成および暗号管理権限の付与

HADB暗号鍵を作成または更新する際，暗号管理権限とCONNECT権限が必要になります。HADB暗号鍵を管理するためのHADBユーザを作成し，そのHADBユーザに暗号管理権限とCONNECT権限を付与してください。

手順

次のすべての操作は，DBA権限およびCONNECT権限を持っているHADBユーザ（「(3)　データベースの初期設定」で作成したHADBユーザADBUSER01）で実行してください。

HADBユーザを作成する

CREATE USER "CADMIN" IDENTIFIED BY 'Mk0fb3KVY8LqJk'

上記のCREATE USER文を実行すると，認可識別子が"CADMIN"で，パスワードが"Mk0fb3KVY8LqJk"であるHADBユーザが作成されます。

暗号管理権限を付与する

GRANT CRYPTO ADMIN, CONNECT TO "CADMIN"

上記のGRANT文を実行すると，1.で作成したHADBユーザCADMINに暗号管理権限とCONNECT権限が付与されます。

HADB暗号鍵の管理担当者が，ここで作成したHADBユーザCADMINを使用して，adbmkdmkコマンドを実行してHADB暗号鍵を作成したり，adbupddmkコマンドを実行してHADB暗号鍵を更新したりします。

重要

HADB暗号鍵の管理担当者は，HADBユーザCADMINのパスワードをすぐに変更してください。パスワードの変更方法については，「11.7.2　HADBユーザのパスワードを変更する方法」を参照してください。

13.1.2　HADBサーバをすでに運用している場合

HADBサーバをすでに運用している場合に，DBエリア暗号化機能の環境設定をする手順を説明します。

重要

ここで説明する手順では，データ用DBエリア以外のDBエリアは暗号化できません。ディクショナリ用DBエリア，作業表用DBエリア，またはシステム表用DBエリアも暗号化したい場合は，データベースの初期設定から実施する必要があります。「13.1.1　HADBサーバを新規導入する場合」で説明している作業を実施してください。

手順

HADB暗号鍵を管理する人を選定する

詳細については，「13.1.1　HADBサーバを新規導入する場合」の「(1)　HADB暗号鍵を管理する人の選定」を参照してください。

HADB暗号鍵ファイルの保存先ディレクトリを作成する

詳細については，「13.1.1　HADBサーバを新規導入する場合」の「(2)　HADB暗号鍵ファイルの保存先ディレクトリの作成」を参照してください。

HADBユーザを作成して暗号管理権限を付与する

詳細については，「13.1.1　HADBサーバを新規導入する場合」の「(6)　HADBユーザの作成および暗号管理権限の付与」を参照してください。

HADB暗号鍵を作成する

暗号管理権限を持っているHADBユーザでadbmkdmkコマンドを実行し，HADB暗号鍵を作成します。

adbmkdmk -u CADMIN -p CADMINPSW /HADB/.crypto/adb_dmkey

-uオプションには，暗号管理権限を持っているHADBユーザ（3.で作成したHADBユーザ）の認可識別子を指定し，-pオプションにはパスワードを指定します。

また，HADB暗号鍵の出力先ファイル（この例では/HADB/.crypto/adb_dmkey）を指定します。

重要

adbmkdmkコマンドの入力後，KFAA90013-Qメッセージが出力されます。このメッセージが出力されたら，パスワードを入力してください。ここで入力したパスワードが，HADB暗号鍵利用パスワードとして設定されます。

HADBサーバを終了する

adbstop

サーバ定義を変更する

サーバ定義にadb_crypto_dmkey_pathオペランドを追加します。

set adb_crypto_dmkey_path = /HADB/.crypto/adb_dmkey

4.で指定したHADB暗号鍵の出力先ファイル名（HADB暗号鍵ファイル名）の絶対パスを指定します。

HADBサーバを開始する

adbstart

adbstartコマンドの入力後，HADB暗号鍵利用パスワードの入力を求めるKFAA90013-Qメッセージが出力されます。4.で設定したHADB暗号鍵利用パスワードを入力してください。

adbmodareaコマンドで，暗号化対象のデータ用DBエリアを追加する

追加方法については，「13.2　暗号化対象のデータ用DBエリアを追加する場合」を参照してください。

13.2　暗号化対象のデータ用DBエリアを追加する場合

adbmodareaコマンドを実行して，暗号化対象のデータ用DBエリアを追加します。データ用DBエリアの追加方法については，「11.13.1　データ用DBエリアを追加する方法」を参照してください。

暗号化対象のデータ用DBエリアを追加する場合，DBエリア追加・変更オプションに-eオプションを指定してください。

＜DBエリア追加・変更オプションの指定例＞

adbaddarea -n NEWAREA ¥
           -v /dev/mapper/VolG01,/dev/mapper/VolG02 ¥
           -q ¥
           -i 500M,2 ¥
           -e    ← -eオプションを指定すると，暗号化対象のデータ用DBエリアになります。

13.3　暗号化対象のDBエリアを調べる場合

暗号化したいデータを格納する表，およびその表のインデクスを定義する場合，それらの表およびインデクスを暗号化対象のデータ用DBエリアに格納する必要があります。暗号化対象のデータ用DBエリアを調べるには，ディクショナリ表を検索してください。詳細については，「付録B.24　ディクショナリ表の検索」の「(41)　暗号化対象のDBエリアの一覧を表示する方法」を参照してください。

13.4　暗号管理権限を付与または取り消す場合

暗号管理権限は，GRANT文で付与して，REVOKE文で取り消します。暗号管理権限の詳細については，「2.7.5　暗号管理権限」を参照してください。

暗号管理権限を付与する場合

（例）

GRANT CRYPTO ADMIN TO "CADMIN"

上記のGRANT文を実行すると，HADBユーザCADMINに暗号管理権限が付与されます。

DBA権限を持つHADBユーザが，ほかのHADBユーザに暗号管理権限を付与します。

複数のHADBユーザに暗号管理権限を付与できます。

メモ

CONNECT権限を持っていないHADBユーザに暗号管理権限を付与する場合，CONNECT権限および暗号管理権限をGRANT文で付与してください。CONNECT権限を持っていないHADBユーザに暗号管理権限だけを付与することはできません。

DBA権限を持っているHADBユーザには，暗号管理権限を付与できません。

監査管理権限を持っているHADBユーザには，暗号管理権限を付与できません。

PAM認証またはKeycloak認証を使用するHADBユーザには，暗号管理権限を付与できません。

職務分掌の観点から，暗号管理権限，DBA権限，監査管理権限を持つHADBユーザを利用する人は，それぞれ別の人にすることを推奨します。

暗号管理権限を取り消す場合

（例）

REVOKE CRYPTO ADMIN FROM "CADMIN"

上記のREVOKE文を実行すると，HADBユーザCADMINに付与されている暗号管理権限が取り消されます。

DBA権限を持つHADBユーザが，ほかのHADBユーザが持っている暗号管理権限を取り消すことができます。

また，暗号管理権限を持つHADBユーザは，自分自身が持っている暗号管理権限を取り消すことができます。

メモ

DBエリア暗号化機能を使用する場合，暗号管理権限を持っているHADBユーザが最低1人必要です。そのため，暗号管理権限を持っているHADBユーザが1人しかいないときに，そのHADBユーザの暗号管理権限を取り消したり，暗号管理権限を持つHADBユーザを削除したりすることはできません。

13.5　DBエリア暗号化機能を使用している状態かどうかを確認する場合

次の条件をすべて満たす場合，DBエリア暗号化機能を使用している状態になります。

サーバ定義にadb_crypto_dmkey_pathオペランドを指定している

暗号化対象のDBエリアが1つ以上ある

暗号化対象のDBエリアが1つ以上あるかどうかは，「付録B.24　ディクショナリ表の検索」の「(41)　暗号化対象のDBエリアの一覧を表示する方法」で説明している方法で確認できます。

ただし，上記の条件を満たさない場合でも，DBエリア暗号化機能を使用している状態になることがあります。HADBサーバの開始時にKFAA90013-Qメッセージが出力されてHADB暗号鍵利用パスワードの入力が求められ，かつKFAA51423-Wメッセージが出力されない場合も，DBエリア暗号化機能を使用している状態になります。

13.6　バックアップを取得する場合

バックアップの取得方法は，DBエリア暗号化機能を使用しているかどうかに関係なく同じです。定期的にバックアップを取得してください。バックアップの取得方法については，「10.3　データベースのバックアップ」を参照してください。

ただし，DBエリア暗号化機能を使用している場合は，データベースのバックアップを取得するときに次の作業も実施してください。

データベースのバックアップ時に使用しているHADB暗号鍵ファイルのバックアップも一緒に取得してください。

バックアップを取得したHADB暗号鍵ファイルに対するHADB暗号鍵利用パスワードを管理してください。

重要

HADB暗号鍵ファイルのバックアップを取得し忘れたり，HADB暗号鍵利用パスワードを忘れたりした場合，バックアップからデータベースを回復してもデータを復号できません。また，HADBサーバを開始することもできません。

バックアップを取得するHADB暗号鍵ファイルを間違ったり，HADB暗号鍵ファイルのバックアップを紛失したりした場合も，データを復号できませんし，HADBサーバも開始できません。

定期的にバックアップを取得していてバックアップデータが複数になる場合，バックアップデータとHADB暗号鍵ファイル（およびHADB暗号鍵利用パスワード）を対応付けて厳重に管理してください。

13.7　セキュリティインシデントが発生した場合

セキュリティインシデントが発生した場合，被害の拡大を防ぐために早急に対処する必要があります。DBエリア暗号化機能に関するセキュリティインシデントが発生したときの対処方法について説明します。

HADB暗号鍵利用パスワードが漏えいした場合

HADB暗号鍵利用パスワードが漏えいした場合，HADB暗号鍵およびデータ暗号鍵が復号されて，機密情報の漏えいにつながるおそれがあります。至急，HADB暗号鍵およびデータ暗号鍵を更新してください。

なお，HADB暗号鍵を更新するときに設定するHADB暗号鍵利用パスワードは，漏えいしたHADB暗号鍵利用パスワードとは異なるパスワードにしてください。

HADB暗号鍵ファイルが漏えいした場合

HADB暗号鍵ファイルが漏えいした場合，HADB暗号鍵ファイルを使用する際に必要となるHADB暗号鍵利用パスワードがわかってしまうと，機密情報の漏えいにつながるおそれがあります。特に，解読が容易なHADB暗号鍵利用パスワードを使用している場合，機密情報の漏えいリスクが高まります。至急，HADB暗号鍵およびデータ暗号鍵を更新してください。

なお，HADB暗号鍵を更新するときに設定するHADB暗号鍵利用パスワードは，漏えいしたHADB暗号鍵ファイルのHADB暗号鍵利用パスワードとは異なるパスワードにしてください。

HADB暗号鍵が漏えいした場合

HADB暗号鍵が漏えいした場合，データ暗号鍵が復号されて機密情報の漏えいにつながるおそれがあります。至急，HADB暗号鍵およびデータ暗号鍵を更新してください。

データ暗号鍵が漏えいした場合

メモリ上に存在する復号された状態のデータ暗号鍵が漏えいした場合，機密情報の漏えいにつながるおそれがあります。至急，データ暗号鍵を更新してください。

DBA権限または暗号管理権限を持っているHADBユーザのパスワードが漏えいした場合

DBA権限または暗号管理権限を持っているHADBユーザのパスワードが漏えいした場合，HADB暗号鍵が不正に操作されるおそれがあります。至急，パスワードを変更してください。HADBユーザのパスワードを変更する方法については，「11.7.2　HADBユーザのパスワードを変更する方法」を参照してください。

メモ

HADB暗号鍵の更新方法については，「13.8　HADB暗号鍵を更新する場合」を参照してください。

データ暗号鍵の更新方法については，「13.9　データ暗号鍵を更新する場合」を参照してください。

13.8　HADB暗号鍵を更新する場合

HADB暗号鍵は，1年を目安に定期的に更新することを推奨します。同じHADB暗号鍵を長期間使い続けると，攻撃者などに暗号の解読時間を与えてしまうおそれがあります。HADB暗号鍵の更新手順を次に示します。

手順

データベースのバックアップを取得する

HADB暗号鍵の更新に失敗した場合に備えて，データベースのバックアップを取得してください。

バックアップの取得方法については，「13.6　バックアップを取得する場合」を参照してください。

HADB暗号鍵を新規に作成する

暗号管理権限を持っているHADBユーザでadbmkdmkコマンドを実行し，HADB暗号鍵を新規に作成してください。

adbmkdmk -u CADMIN -p CADMINPSW /HADB/.crypto/adb_v2_dmkey

-uオプションには暗号管理権限を持っているHADBユーザの認可識別子を指定し，-pオプションにはパスワードを指定します。

また，HADB暗号鍵の出力先ファイル（この例では/HADB/.crypto/adb_v2_dmkey）を指定します。

重要

adbmkdmkコマンドの入力後，KFAA90013-Qメッセージが出力されます。新規に作成するHADB暗号鍵のHADB暗号鍵利用パスワードを新たに設定してください。

HADBサーバの稼働モードをメンテナンスモードに変更する

adbchgsrvmode --maintenance

HADB暗号鍵の更新処理はデータベースへのアクセスに影響を及ぼすため，HADBサーバの稼働モードを上記のコマンドを実行してメンテナンスモードに変更します。

HADB暗号鍵を更新する

暗号管理権限を持っているHADBユーザでadbupddmkコマンドを実行し，HADB暗号鍵を更新してください。

adbupddmk -u CADMIN -p CADMINPSW           ...[a]
          /HADB/.crypto/adb_dmkey          ...[b]
          /HADB/.crypto/adb_v2_dmkey       ...[c]

暗号管理権限を持っているHADBユーザの認可識別子とパスワードを指定します。

使用中のHADB暗号鍵ファイルを絶対パスで指定します。

2.で新規に作成したHADB暗号鍵ファイルを絶対パスで指定します。

重要

adbupddmkコマンドの入力後，KFAA90013-Qメッセージが出力されます。使用中のHADB暗号鍵利用パスワードを入力してください。

そのあと，KFAA90013-Qメッセージが再度出力されます。2.で新たに設定したHADB暗号鍵利用パスワードを入力してください。

メモ

adbupddmkコマンドとほかのコマンドを同時に実行することはできません。

サーバ定義を変更する

サーバ定義のadb_crypto_dmkey_pathオペランドに指定しているHADB暗号鍵ファイルのパスを，更新後のHADB暗号鍵ファイルのパス（/HADB/.crypto/adb_v2_dmkey）に変更してください。

set adb_crypto_dmkey_path = /HADB/.crypto/adb_v2_dmkey

このオペランドの指定を変更したあとに，HADBサーバを再起動する必要はありません。

HADBサーバの稼働モードを元に戻す

adbchgsrvmode --normal

上記は，HADBサーバの稼働モードを通常モードに変更する例です。

重要

HADB暗号鍵ファイルのパーミッションは変更しないでください。adbmkdmkコマンドでHADB暗号鍵を作成した場合，HADB暗号鍵ファイルのパーミッションはHADB管理者に対してだけ読み取り権限が設定されています。HADB暗号鍵ファイルのパーミッションを変更すると，HADB暗号鍵の漏えいリスクが高まり，機密情報の漏えいにつながるおそれがあります。

マルチノード機能の使用時にHADB暗号鍵を更新する場合は，「18.30.4　HADB暗号鍵を更新する場合」を参照してください。

13.9　データ暗号鍵を更新する場合

データ暗号鍵は，2年以内を目安に定期的に更新することを推奨します。同じデータ暗号鍵を長期間使い続けると，攻撃者などに暗号の解読時間を与えてしまうおそれがあります。

データ暗号鍵の更新手順は，データ用DBエリア以外のDBエリアを暗号化対象にしているかどうかによって異なります。それぞれの更新手順を説明します。

13.9.1　データ用DBエリア以外のDBエリアを暗号化している場合

データ用DBエリア以外のDBエリアを暗号化している場合にデータ暗号鍵を更新するには，adbinitコマンドでデータベースを初期設定し直す必要があります。そのため，DBエリア，表，インデクスの再定義や，表へのデータの再インポートなどをする必要があります。手順を以降で説明します。

(1)　データベースのバックアップを取得する

データ暗号鍵の更新手順を間違えると，データベースの状態がデータ暗号鍵の更新前とは異なってしまうおそれがあります。そのため，データ暗号鍵を更新する前にデータベースのバックアップを取得してください。バックアップの取得方法については，「13.6　バックアップを取得する場合」を参照してください。

データ暗号鍵の更新手順を間違えた場合，バックアップからデータベースを回復し，データ暗号鍵を再度更新してください。

(2)　全HADBユーザの情報を取得する

全HADBユーザの情報の取得方法については，「17.2.2　全HADBユーザの情報の取得」を参照してください。

メモ

ここで取得した情報は，後ほどの作業で使用します。

(3)　adbinitコマンドの初期設定オプションファイルを作成する

adbinitコマンドでデータベースを初期設定し直す必要があるため，現状のDBエリアの構成を反映した初期設定オプションファイル（adbinit.optファイル）を次の手順で作成してください。

メモ

現状のDBエリアの構成を反映した初期設定オプションファイルがある場合は，ここで説明する作業を実施する必要はありません。

ここで作成した初期設定オプションファイルは，後ほどの作業で使用します。

手順

次のすべての操作は，HADB管理者で実行してください。

初期設定オプションファイル（adbinit.optファイル）を作成する

作成方法については，「17.2.3　adbinitコマンドの初期設定オプションファイルの作成」を参照してください。

adbinit.optファイルを修正する

adbinit.optファイルをエディタで開いてください。

暗号化対象のDBエリアを確認し，初期設定オプションにDBエリアを暗号化するオプションを指定してください。

DBA権限を持っているHADBユーザで，「付録B.24　ディクショナリ表の検索」の「(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ファイルの例＞

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]
      :
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ファイルを保存する

■マルチノード機能を使用している場合

上記の手順で作成したadbinit.optファイルは，プライマリノードで使用するadbinit.optファイルです。

セカンダリノードまたはワーカーノードで使用するadbinit.optファイルは次の手順で作成してください。

手順

全セカンダリノードおよび全ワーカーノードに，上記の手順で作成したadbinit.optファイルを配布する

セカンダリノードまたはワーカーノードで，1.で配布したadbinit.optファイルをエディタで開く

次のコマンドを実行する

echo "¥"$(ls -l $DBDIR/ADBWRK | awk '{print $NF}')¥""

$DBDIRの部分（下線部分）は，DBディレクトリのパスを指定してください。

adb_init_wrk_blk_pathオペランドの指定を修正する

3.のコマンドの実行結果がブロックスペシャルファイルの場合は，実行結果に出力されたファイル名をadb_init_wrk_blk_pathオペランドに指定してください。

ブロックスペシャルファイルではない場合は，adb_init_wrk_blk_pathオペランドを削除してください。

adb_init_dbarea_initializeオペランドの指定値をYからNに変更する

adbinit.optファイルを保存する

全セカンダリノードおよび全ワーカーノードで，2.～6.を実施する

■クラウドストレージ機能を使用している場合

クラウドストレージ機能を使用している場合は，初期設定オプションファイル（adbinit.optファイル）を次の手順で作成してください。

手順

次のすべての操作は，HADB管理者で実行してください。

初期設定オプションファイルの基となるファイルを作成する

echo "set adb_init_wrk_blk_path = ¥"$(ls -l $DBDIR/ADBWRK ¥
| awk '{print $NF}')¥"" >>adbinit.opt

上記のコマンドを実行すると，カレントディレクトリにadbinit.optファイル（初期設定オプションファイルの基となるファイル）が作成されます。

なお，$DBDIRの部分（下線部分）は，DBディレクトリのパスを指定してください。

adbdbstatusコマンドを実行する

adbdbstatusコマンドを実行して，データ用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 '/"ADBDIC"/d' ¥
      -e '/"ADBSTBL"/d' ¥
| sed -r 's/^"(.*)" "(.*)"/adbinitdbarea -n ¥¥"¥1¥¥"/g' ¥
>>adbinit.opt

上記のコマンドを実行すると，adbinit.optファイルの内容は次のようになります。

＜作成されるadbinit.optファイルの例＞

set adb_init_wrk_blk_path = "/dev/disk/by-id/wwn-0x60...a67b"
set adb_init_dbarea_initialize = Y
adbinitdbarea -n ¥"DBAREA1¥"
adbinitdbarea -n ¥"NEWAREA1¥"

adbinit.optファイルを修正する（その1）

adbinit.optファイルをエディタで開いて，次の修正をしてください。

adb_init_wrk_blk_pathオペランドにブロックスペシャルファイルが指定されていない場合は，このオペランドを削除してください。

adbinit.optファイルを修正する（その2）

暗号化対象のDBエリアを確認し，初期設定オプションにDBエリアを暗号化するオプションを指定してください。

DBA権限を持っているHADBユーザで，「付録B.24　ディクショナリ表の検索」の「(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ファイルの例＞

set adb_init_dbarea_initialize = Y
set adb_init_wrk_blk_path = "/dev/disk/by-id/wwn-0x60...a67b"
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]
      :
adbinitdbarea -n ¥"DBAREA1¥"
adbinitdbarea -e -n ¥"NEWAREA1¥"                              ...[e]

［説明］

ディクショナリ用DBエリアを暗号化するときに指定するオペランドを追加します。

作業表用DBエリアを暗号化するときに指定するオペランドを追加します。

システム表用DBエリアを暗号化するときに指定するオペランドを追加します。

HADB暗号鍵の出力先ファイル名を指定するオペランドを追加します。

データ用DBエリアNEWAREA1を暗号化するときに指定する-eオプション（下線部分）を追加します。

adbinit.optファイルを修正する（その3）

クラウドストレージ機能に関するオペランドを追加してください。修正後のadbinit.optファイルの例を次に示します。

・オブジェクトストレージにAmazon S3またはAmazon S3互換オブジェクトストレージを使用している場合

set adb_init_dbarea_initialize = Y
set adb_init_wrk_blk_path = "/dev/disk/by-id/wwn-0x60...a67b"
set adb_init_dic_encrypt = Y
set adb_init_wrk_encrypt = Y
set adb_init_stbl_encrypt = Y
set adb_init_dmkey_path = /HADB/.crypto/adb_dmkey
set adb_init_cld_aws_region = ap-northeast-1          ...[a]
set adb_init_cld_aws_bucket = adbbucket               ...[b]
set adb_init_cld_cache_path = /HADB/ADBCCH            ...[c]
set adb_init_cld_sysdir_storage = Y                   ...[d]
      :
adbinitdbarea -n ¥"DBAREA1¥"
adbinitdbarea -e -n ¥"NEWAREA1¥"

［説明］

S3オブジェクトの格納先リージョン名（ap-northeast-1）を指定するオペランドを追加します。サーバ定義のadb_sys_cld_aws_regionオペランドに指定したリージョン名を指定してください。

Amazon S3互換オブジェクトストレージを使用している場合は，adb_init_cld_aws_regionオペランドではなくadb_sys_cld_endpointオペランドを指定してください。サーバ定義のadb_sys_cld_endpointオペランドに指定したエンドポイントURLを指定してください。

S3オブジェクトの格納先S3バケット名（adbbucket）を指定するオペランドを追加します。サーバ定義のadb_sys_cld_aws_bucketオペランドに指定したS3バケット名を指定してください。

キャッシュファイルの格納先ディレクトリ名（/HADB/ADBCCH）を指定するオペランドを追加します。サーバ定義のadb_sys_cld_cache_pathオペランドに指定したキャッシュファイルの格納先ディレクトリ名を指定してください。

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にしている場合は，このオペランドを追加してYを指定してください。adbls -d cfmコマンドを実行し，コマンドの実行結果に##ADBCACHEGRP_ADBSYSという名称のキャッシュグループがある場合は，クラウドストレージ機能のシステムディレクトリ対応オプションが有効になっています。

・オブジェクトストレージにAzure Blob Storageを使用している場合

set adb_init_dbarea_initialize = Y
set adb_init_wrk_blk_path = "/dev/disk/by-id/wwn-0x60...a67b"
set adb_init_dic_encrypt = Y
set adb_init_wrk_encrypt = Y
set adb_init_stbl_encrypt = Y
set adb_init_dmkey_path = /HADB/.crypto/adb_dmkey
set adb_sys_cld_az_storage_account = adbstorageaccount   ...[a]
set adb_sys_cld_az_container = adbcontainer              ...[b]
set adb_init_cld_cache_path = /HADB/ADBCCH               ...[c]
      :
adbinitdbarea -n ¥"DBAREA1¥"
adbinitdbarea -e -n ¥"NEWAREA1¥"

［説明］

Azure Blob Storageのストレージアカウント名（adbstorageaccount）を指定するオペランドを追加します。サーバ定義のadb_sys_cld_az_storage_accountオペランドに指定したストレージアカウント名を指定してください。

BLOBの格納先コンテナー名（adbcontainer）を指定するオペランドを追加します。サーバ定義のadb_sys_cld_az_containerオペランドに指定したコンテナー名を指定してください。

キャッシュファイルの格納先ディレクトリ名（/HADB/ADBCCH）を指定するオペランドを追加します。サーバ定義のadb_sys_cld_cache_pathオペランドに指定したキャッシュファイルの格納先ディレクトリ名を指定してください。

adbinit.optファイルを保存する

メモ

マルチノード機能を使用している場合は，セカンダリノードまたはワーカーノードで使用するadbinit.optファイルを作成する必要があります。作成手順については，「■マルチノード機能を使用している場合」を参照してください。

(4)　表およびインデクスの定義情報を取得する

データベースの初期設定後に表やインデクスを再定義するため，表およびインデクスの定義情報と，表に対するアクセス権限の情報を取得してください。取得方法については，「17.2.4　表およびインデクスの定義情報の取得」を参照してください。

メモ

ここで取得した情報は，後ほどの作業で使用します。

(5)　表のデータをエクスポートする

「17.2.5　表のデータのエクスポート」に示す方法で，すべての表のデータをエクスポートしてください。

(6)　監査証跡機能，同義語検索に関する情報を取得する

監査証跡機能を使用している場合，または同義語検索を行っている場合は，「17.2.6　監査証跡機能，同義語検索に関する情報の取得」に示す方法で，監査証跡機能，同義語検索に関する情報を取得してください。

メモ

ここで取得した情報は，後ほどの作業で必要になります。

(7)　データベースを初期設定する

次の手順でデータベースを初期設定してください。

手順

adbstopコマンドでHADBサーバを終了する

マルチノード機能を使用している場合は，マルチノード構成のHADBサーバを終了してください。終了方法については，「18.5.2　マルチノード構成のHADBサーバの終了方法」を参照してください。

データベースを初期設定する

HADB管理者でadbinitコマンドを実行し，データベースを初期設定してください。

「(3)　adbinitコマンドの初期設定オプションファイルを作成する」で作成した初期設定オプションファイルを使用してください。

マルチノード機能を使用している場合は，2.の作業を全ノードで実施してください。実施後，プライマリノードで作成されたHADB暗号鍵ファイルを全ノードに配布してください。配布方法については，「18.30.1　DBエリア暗号化機能の環境設定をする場合」のHADB暗号鍵ファイルの配布を参照してください。

サーバ定義を変更する

「(3)　adbinitコマンドの初期設定オプションファイルを作成する」で作成した初期設定オプションファイルにadb_init_dmkey_pathオペランドを指定した場合，サーバ定義のadb_crypto_dmkey_pathオペランドにadb_init_dmkey_pathオペランドに指定したHADB暗号鍵の出力先ファイル名（HADB暗号鍵ファイル名）の絶対パスを指定してください。

初期設定オプションファイルにadb_init_dmkey_pathオペランドを指定していない場合は，サーバ定義のadb_crypto_dmkey_pathオペランドを削除してください。

マルチノード機能を使用している場合は，3.の作業を全ノードで実施してください。サーバ定義のadb_crypto_dmkey_pathオペランドを指定する場合は，各ノードに配布したHADB暗号鍵ファイルの絶対パスを指定してください。

adbstartコマンドでHADBサーバを開始する

マルチノード構成のHADBサーバを開始する場合は，各ノードでのadbstartコマンドの入力後にHADB暗号鍵利用パスワードの入力要求メッセージ（KFAA90013-Q）が出力されます。詳細については，「18.30.2　マルチノード構成のHADBサーバを開始する場合」を参照してください。

(8)　HADBユーザを作成して権限を付与する

CREATE USER文でHADBユーザを作成して，作成したHADBユーザにGRANT文で権限を付与してください。

「(2)　全HADBユーザの情報を取得する」で取得した全HADBユーザの情報を使用して，HADBユーザを作成して権限を付与します。

HADBユーザを作成して権限を付与する際の注意事項，およびHADBユーザの作成と権限を付与するSQL文の例については，「17.4.1　HADBユーザの作成および権限の付与」を参照してください。

(9)　表およびインデクスを再作成する

データベースの初期設定前に定義していた表およびインデクスを再定義し，表にデータをインポートしてください。また，表に対するアクセス権限も付与してください。手順を次に示します。

手順

次の1.～3.および5.の操作方法については，「17.4.2　表およびインデクスの再作成」の手順の1.～3.および5.を参照してください。

表およびインデクスを再定義する

表およびインデクスを再定義する際は，「(4)　表およびインデクスの定義情報を取得する」で取得した，表およびインデクスの定義情報を使用してください。

ビュー表を再定義する

ビュー表を再定義する際は，「(4)　表およびインデクスの定義情報を取得する」で取得した，ビュー表の定義情報を使用してください。

表に対するアクセス権限を付与する

アクセス権限を付与する際は，「(4)　表およびインデクスの定義情報を取得する」で取得した，表に対するアクセス権限の情報を使用してください。

表にデータをインポートする

adbimportコマンドを実行して，表にデータをインポートしてください。

マルチチャンク表にデータをインポートする場合

「(5)　表のデータをエクスポートする」でエクスポートしたデータを入力データファイルにして，バックグラウンドインポートを実行してください。

なお，初回のデータインポートの際は，作成モードでデータインポートを実行してください。手順については，「11.1.10　実表にデータを格納する方法（データインポート）」および「11.5.2　マルチチャンク表にデータを格納する方法（バックグラウンドインポート）」を参照してください。

重要

「(5)　表のデータをエクスポートする」で取得した，チャンクコメントおよびチャンクの状態に合わせてオプションを指定してください。

カレントチャンクは，いちばん最後にインポートしてください。「(5)　表のデータをエクスポートする」でカレントチャンクを調べています。

マルチチャンク表ではない表にデータをインポートする場合

「(5)　表のデータをエクスポートする」でエクスポートしたデータを入力データファイルにして，adbimportコマンドを実行してください。

メモ

この作業は，データベース管理の担当者が実施してください。表の所有者と同じ認可識別子のHADBユーザを使用してデータをインポートしてください。

コスト情報を収集する

コスト情報を収集する際は，「(4)　表およびインデクスの定義情報を取得する」で取得した，コスト情報を収集している表の一覧を使用してください。

(10)　監査証跡機能，同義語検索の環境設定をする

データベースの初期設定前に監査証跡機能を使用していた場合

「12.2　監査証跡機能の環境設定」を参照して，監査証跡機能の環境設定をしてください。

環境設定をする際，「(6)　監査証跡機能，同義語検索に関する情報を取得する」で取得した監査証跡に関する情報を使用してください。監査対象を定義していた場合は，監査対象の定義が必要です。監査対象を定義していない場合は，監査対象の定義は不要です。監査対象の定義方法については，「12.2.7　監査対象の定義」を参照してください。

データベースの初期設定前に同義語検索を行っていた場合

「11.19.1　同義語検索を行うための準備をする」を参照して，同義語検索の環境設定をしてください。

「(6)　監査証跡機能，同義語検索に関する情報を取得する」で，同義語一覧定義ファイルおよび辞書情報登録ファイルを作成した場合は，それらのファイルを使用して同義語辞書ファイルを作成してください。

(11)　HADBユーザのユーザ認証方式とパスワードを変更する

HADBユーザのユーザ認証方式の変更

この時点では，全HADBユーザのユーザ認証方式がデータベース認証になっています。

「(2)　全HADBユーザの情報を取得する」で取得した情報を使用してください。AUTHENTICATION_TYPE列に'PAM'が表示されているHADBユーザは，PAM認証を使用しています。このHADBユーザのユーザ認証方式をPAM認証に変更してください。AUTHENTICATION_TYPE列に'Keycloak'が表示されているHADBユーザは，Keycloak認証を使用しています。このHADBユーザのユーザ認証方式をKeycloak認証に変更してください。

ユーザ認証方式の変更方法については，「11.7.4　HADBユーザのユーザ認証方式を変更する方法」を参照してください。

HADBユーザのパスワードの変更

「(2)　全HADBユーザの情報を取得する」で取得した情報を使用してください。AUTHENTICATION_TYPE列に'DB'が表示されているHADBユーザは，データベース認証を使用しています。このHADBユーザを使用する人に，HADBユーザの認可識別子と設定済みのパスワードを知らせてください。そして，このHADBユーザを使用する人が，HADBユーザのパスワードを変更してください。パスワードの変更方法については，「11.7.2　HADBユーザのパスワードを変更する方法」を参照してください。

13.9.2　データ用DBエリアだけを暗号化している場合

データ用DBエリアだけを暗号化している場合にデータ暗号鍵を更新するには，暗号化対象のすべてのデータ用DBエリアを再作成する必要があります。そのため，暗号化対象のデータ用DBエリアに格納されている表およびインデクスの再定義や，表へのデータインポートなどを実施する必要があります。手順を以降で説明します。

(1)　データベースのバックアップを取得する

データ暗号鍵の更新手順を間違えると，データベースの状態がデータ暗号鍵の更新前とは異なってしまうおそれがあります。そのため，データ暗号鍵を更新する前にデータベースのバックアップを取得してください。バックアップの取得方法については，「13.6　バックアップを取得する場合」を参照してください。

データ暗号鍵の更新手順を間違えた場合，バックアップからデータベースを回復し，データ暗号鍵を再度更新してください。

(2)　DBエリア追加・変更オプションファイルを作成する

暗号化対象のデータ用DBエリアを再作成（いったん削除したあとに追加）するため，暗号化対象のデータ用DBエリアの情報を取得し，それを基にadbmodareaコマンドのDBエリア追加・変更オプションファイルを作成してください。

■データ用DBエリアを削除するときに使用するDBエリア追加・変更オプションファイルの作成

暗号化対象のデータ用DBエリアを削除するときに使用するDBエリア追加・変更オプションファイルを次の手順で作成してください。

手順

暗号化対象のデータ用DBエリアの一覧を取得する

DBA権限を持っているHADBユーザで，「付録B.24　ディクショナリ表の検索」の「(41)　暗号化対象のDBエリアの一覧を表示する方法」で説明している作業を実施してください。

暗号化対象のデータ用DBエリアの一覧が出力されます。

＜暗号化対象のデータ用DBエリアの一覧の出力例＞

 DBAREA_ID    DBAREA_TYPE DBAREA_NAME
 ------------ ----------- -----------------------------------------------------
           11        DATA ADBUIDX01
           12        DATA ADBUTBL01
           14        DATA ADBUTBL03
KFAA96404-I 3 rows were selected.

メモ

DBAREA_TYPE列にDATA以外が出力されている場合は，データ用DBエリア以外のDBエリアを暗号化しています。この場合は，「13.9.1　データ用DBエリア以外のDBエリアを暗号化している場合」の方法でデータ暗号鍵を更新してください。

DBエリア追加・変更オプションファイルを作成する

1.で出力された実行結果を使用して，暗号化対象のデータ用DBエリアを削除するときに使用するDBエリア追加・変更オプションファイルを作成してください。

adbrmarea -n ADBUIDX01

adbrmarea -n ADBUTBL01

adbrmarea -n ADBUTBL03

下線部分には，DBAREA_NAME列に出力されたデータ用DBエリア名を指定します。

この例の場合，削除するデータ用DBエリアが3つあるので，DBエリア追加・変更オプションファイルを3つ作成しています。

■データ用DBエリアを追加するときに使用するDBエリア追加・変更オプションファイルの作成

暗号化対象のデータ用DBエリアを削除したあとに，同じデータ用DBエリアを追加するため，現状のデータ用DBエリアの構成を反映したDBエリア追加・変更オプションファイルを次の手順で作成してください。

クラウドストレージ機能を使用しているかどうかによって手順が異なります。

手順（クラウドストレージ機能を使用していない場合）

次のすべての操作は，HADB管理者が実行してください。

DBエリア追加・変更オプションの基となる情報を作成する

adbdbstatusコマンドを実行して，データ用DBエリアなどを構成するファイルの情報を出力してください。

adbdbstatus -d used | grep -E "^Used" | awk -F',' '{print $3, $9}' | awk '!a[$0]++' ¥
| sed -e '/"ADBDIC"/d' ¥
      -e '/"ADBSTBL"/d' ¥
| sed -r 's/^"(.*)" "(.*)"/adbaddarea -n ¥¥"¥1¥¥" -i 0K,x -v "¥2",¥¥/g'

＜上記のコマンドの実行結果の例＞

adbaddarea -n ¥"ADBUIDX01¥" -i 0K,x -v "/dev/disk/by-id/wwn-0x60...0000",¥
adbaddarea -n ¥"ADBUTBL01¥" -i 0K,x -v "/dev/disk/by-id/wwn-0x60...0001",¥
adbaddarea -n ¥"ADBUTBL02¥" -i 0K,x -v "/dev/disk/by-id/wwn-0x60...0400",¥
adbaddarea -n ¥"ADBUTBL03¥" -i 0K,x -v "/dev/disk/by-id/wwn-0x60...0401",¥
adbaddarea -n ¥"ADBUTBL03¥" -i 0K,x -v "/dev/disk/by-id/wwn-0x60...0402",¥

1.の実行結果を編集する

1.の実行結果をエディタに貼り付けて，このファイルの内容をDBエリア追加・変更オプションファイルとして修正していきます。マニュアルHADB　コマンドリファレンスのDBエリア追加・変更オプションの形式を参照して，ファイルの内容を修正してください。

また，次のことを確認して修正してください。

「■データ用DBエリアを削除するときに使用するDBエリア追加・変更オプションファイルの作成」の手順の1.のDBAREA_NAME列に出力されたDBエリア以外が-nオプションに指定されている場合は，adbaddarea以降の記述を削除してください。

-vオプションにブロックスペシャルファイルが指定されていない場合は，次の修正をしてください。

-vオプションに指定されているDBエリアファイルがDBディレクトリ直下にある場合

＜修正例＞

adbaddarea -n ¥"ADBUTBL01¥" -i 0K,x -v "$DBDIR/ADBUTBL01",¥
   ↓下記のように修正する。
adbaddarea -n ¥"ADBUTBL01¥" -i 0K,1

$DBDIRの部分は，DBディレクトリのパスが表示されます。上記の例の場合，DBディレクトリの直下にDBエリアファイルADBUTBL01があります。

この場合，次の修正をしてください。

・-vオプション以降の指定を削除する。

・-iオプションに指定している作成ファイル数を1に変更する。

-vオプションに指定されているDBエリアファイルがDBディレクトリ直下にない場合

＜修正例＞

adbaddarea -n ¥"ADBUTBL01¥" -i 0K,x -v "$DBDIR/AREAS/ADBUTBL01",¥
   ↓下記のように修正する。
adbaddarea -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行目以降については，ブロックスペシャルファイルより前の記述を削除してください。

最終行の末尾の「,¥」を削除してください。

すべてのadbaddareaオペランドに-eオプションを追加してください。

＜修正後のファイルの例＞

adbaddarea -e -n ¥"ADBUIDX01¥" -i 0K,1 -v "/dev/disk/by-id/wwn-0x60...0000"
adbaddarea -e -n ¥"ADBUTBL01¥" -i 0K,1 -v "/dev/disk/by-id/wwn-0x60...0001"
adbaddarea -e -n ¥"ADBUTBL03¥" -i 0K,2 -v "/dev/disk/by-id/wwn-0x60...0401",¥
                                          "/dev/disk/by-id/wwn-0x60...0402"

ファイルを編集する

データ用DBエリアファイルのシンボリックリンクをDBディレクトリ下のサブディレクトリに配置している場合，そのデータ用DBエリアを定義しているadbaddareaオペランドに，-fオプションを指定する必要があります。3.では，adbaddareaオペランドに-fオプションを指定する必要があるかどうかと，-fオプションに指定するパスを調査します。

なお，2.で-fオプションを指定したadbaddareaオペランドについては，3.の作業は不要です。

手順

メモ

手順の各操作にある$DBDIRにはDBディレクトリ名を入力してください。また，実行結果にある$DBDIRにはDBディレクトリ名が表示されます。

DBディレクトリ直下のファイルの一覧を表示する

ls $DBDIR

上記のコマンドを実行すると，DB ディレクトリ直下のファイルの一覧が表示されます。

＜lsコマンドの実行結果の例＞

ADBDIC ADBMST ADBSTBL ADBSYS ADBWORK ADBWRK AREAS ADBUIDX01 ADBUTBL01 ADBUTBL02 SPOOL

上記の実行結果に，2.の「＜修正後のファイルの例＞」に指定しているデータ用DBエリア名と同名のファイルがあるかどうかを確認してください。この例の場合，同名のファイルとしてADBUIDX01およびADBUTBL01はありますが，ADBUTBL03はありません。したがって，データ用DBエリアファイルのシンボリックリンクADBUIDX01およびADBUTBL01はDBディレクトリ直下に配置されていますが，シンボリックリンクADBUTBL03はDBディレクトリ直下に配置されていません。シンボリックリンクADBUTBL03は，DBディレクトリ下のサブディレクトリに配置されています。

シンボリックリンクADBUTBL03の配置場所を調査する

findコマンドを実行して，a.の実行結果に表示されていないシンボリックリンクADBUTBL03が，DBディレクトリ内のどこに配置されているかを調査してください。

find $DBDIR -name ADBUTBL03 2>/dev/null

上記のコマンドを実行すると，DBディレクトリ内に存在するファイル名がADBUTBL03であるファイルの一覧が表示されます。

＜findコマンドの実行結果の例＞

$DBDIR/AREAS/OLD/ADBUTBL03
$DBDIR/AREAS/NEW/ADBUTBL03

上記の実行結果のように，異なるパスの同名ファイルが複数表示された場合は，次の手順に進んでください。

パスが1 つしか表示されない場合は，d.に進んでください。

$DBDIR/AREAS/OLD/ADBUTBL03のリンク先を調査する

ls -lコマンドを実行して，b.の実行結果に表示された$DBDIR/AREAS/OLD/ADBUTBL03のリンク先を表示してください。

ls -l $DBDIR/AREAS/OLD/ADBUTBL03* | sed -e 's/.* -> //g'

＜lsコマンドの実行結果の例＞

/dev/disk/by-id/wwn-0x60...a000

上記の実行結果と，2.の「＜修正後のファイルの例＞」に指定しているデータ用DBエリアADBUTBL03の定義の-vオプションに指定しているブロックスペシャルファイルのパスを見比べてください。

この例の場合，上記の実行結果とブロックスペシャルファイルのパスが一致していないため，該当するファイルではありません。

$DBDIR/AREAS/NEW/ADBUTBL03のリンク先を調査する

ls -lコマンドを実行して，b.の実行結果に表示された$DBDIR/AREAS/NEW/ADBUTBL03のリンク先を表示してください。

ls -l $DBDIR/AREAS/NEW/ADBUTBL03* | sed -e 's/.* -> //g'

＜lsコマンドの実行結果の例＞

/dev/disk/by-id/wwn-0x60...0401
/dev/disk/by-id/wwn-0x60...0402

上記の実行結果と，2.の「＜修正後のファイルの例＞」に指定しているデータ用DBエリアADBUTBL03の定義の-vオプションに指定しているブロックスペシャルファイルのパスを見比べてください。

この例の場合，上記の実行結果とブロックスペシャルファイルのパスが一致しています。したがって，$DBDIR/AREAS/NEW/ADBUTBL03が，該当するファイルとなります。$DBDIR/AREAS/NEW/ADBUTBL03の下線部分を，データ用DBエリアADBUTBL03のadbaddareaオペランドの-fオプションに指定してください。

＜修正後のファイルの例＞

adbaddarea -e -n ¥"ADBUIDX01¥" -i 0K,1 -v "/dev/disk/by-id/wwn-0x60...0000"
adbaddarea -e -n ¥"ADBUTBL01¥" -i 0K,1 -v "/dev/disk/by-id/wwn-0x60...0001"
adbaddarea -e -n ¥"ADBUTBL03¥" -f ¥"AREAS/NEW/¥" -i 0K,2¥
           -v "/dev/disk/by-id/wwn-0x60...0401",¥
              "/dev/disk/by-id/wwn-0x60...0402"

下線部分の-fオプションを追加します。

DBエリア追加・変更オプションファイルを作成する

3.で作成したファイルを，追加するデータ用DBエリアごとに3つに分割して，DBエリア追加・変更オプションファイルを作成してください。

adbaddarea -e -n ¥"ADBUIDX01¥" -i 0K,1 -v "/dev/disk/by-id/wwn-0x60...0000"

adbaddarea -e -n ¥"ADBUTBL01¥" -i 0K,1 -v "/dev/disk/by-id/wwn-0x60...0001"

adbaddarea -e -n ¥"ADBUTBL03¥" -f ¥"AREAS/NEW/¥" -i 0K,2¥
           -v "/dev/disk/by-id/wwn-0x60...0401",¥
              "/dev/disk/by-id/wwn-0x60...0402"

手順（クラウドストレージ機能を使用している場合）

DBエリア追加・変更オプションファイルを作成する

暗号化対象のデータ用DBエリアを追加するときに使用するDBエリア追加・変更オプションファイルを作成してください。

adbaddarea -e -n ADBUIDX01

adbaddarea -e -n ADBUTBL01

adbaddarea -e -n ADBUTBL03

下線部分には，「■データ用DBエリアを削除するときに使用するDBエリア追加・変更オプションファイルの作成」の2.で指定した削除対象のデータ用DBエリア名を指定します。

この例の場合，追加するデータ用DBエリアが3つあるので，DBエリア追加・変更オプションファイルを3つ作成しています。

メモ

ここで作成したDBエリア追加・変更オプションファイルは，後ほどの作業で使用します。

(3)　表およびインデクスの定義情報を取得する

データ用DBエリアの再作成後に表やインデクスを再定義するため，表およびインデクスの定義情報と，表に対するアクセス権限の情報を次の手順で取得してください。

メモ

ここで取得した情報は，後ほどの作業で使用します。

手順

暗号化対象のデータ用DBエリアに格納されている表およびインデクスの一覧を取得する

DBA権限を持っているHADBユーザで，「付録B.24　ディクショナリ表の検索」の「(15)　DBエリアに格納されている表の表名を調べる場合」および「(16)　DBエリアに格納されているインデクスのインデクス名を調べる場合」で説明している作業を実施してください。

表に対するアクセス権限の情報を取得する

DBA権限を持っているHADBユーザでディクショナリ表を検索し，暗号化対象のデータ用DBエリアに格納されている表のアクセス権限の情報を取得してください。

SELECT "GRANTOR","GRANTEE","OWNER","SELECT_PRIVILEGE","INSERT_PRIVILEGE",
       "UPDATE_PRIVILEGE","DELETE_PRIVILEGE","TRUNCATE_PRIVILEGE",
       "REFERENCES_PRIVILEGE", "IMPORT_TABLE_PRIVILEGE","REBUILD_INDEX_PRIVILEGE",
       "GET_COSTINFO_PRIVILEGE","EXPORT_TABLE_PRIVILEGE","MERGE_CHUNK_PRIVILEGE",
       "CHANGE_CHUNK_COMMENT_PRIVILEGE","CHANGE_CHUNK_STATUS_PRIVILEGE",
       "ARCHIVE_CHUNK_PRIVILEGE","UNARCHIVE_CHUNK_PRIVILEGE","COPY_PRIVILEGE"
    FROM "MASTER"."SQL_TABLE_PRIVILEGES"
      WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=?

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求には表のスキーマ名を，2番目の要求には表の表識別子を入力してください。入力するスキーマ名と表識別子は，1.の調査結果に出力されたTABLE_SCHEMA列とTABLE_NAME列のスキーマ名と表識別子を使用してください。

上記のSELECT文の実行結果の各列に出力される情報を説明します。

GRANTOR列

アクセス権限を付与したHADBユーザの認可識別子が出力されます。

GRANTEE列

アクセス権限を付与されたHADBユーザの認可識別子が出力されます。

OWNER列

表の所有者であるHADBユーザの認可識別子が出力されます。

上記以外の列

HADBユーザが各種のアクセス権限を持っているかどうかの情報が出力されます。'G'が出力されている場合は，そのアクセス権限を付与権付きで持っています。'Y'が出力されている場合は，そのアクセス権限を持っています。'N'が出力されている場合は，そのアクセス権限を持っていません。

暗号化対象のデータ用DBエリアに格納されている表およびインデクスの定義情報を取得する

DBA権限を持っているHADBユーザで，「付録B.24　ディクショナリ表の検索」の「(29)　実表の定義情報を調べる場合」および「(30)　インデクスの定義情報を調べる場合」で説明している作業を実施してください。

メモ

HADBでは，表およびインデクスの定義情報を出力する機能を提供していません。そのため，ディクショナリ表を検索して，表およびインデクスの定義情報を取得しておき，データ用DBエリアの再作成後に表およびインデクスを再定義できるようにしておく必要があります。

表およびインデクスを定義したときの定義情報がある場合は，この作業を実施する必要はありません。

暗号化対象のデータ用DBエリアに格納されている表に定義されている全インデクスの定義情報を取得する

DBA権限を持っているHADBユーザで，「付録B.24　ディクショナリ表の検索」の「(30)　インデクスの定義情報を調べる場合」で説明している作業を実施してください。

なお，3.で取得したインデクスの定義情報と重複している情報がある場合は，その情報を削除してください。

暗号化対象のデータ用DBエリアに格納されている表を基表とするビュー表の名称を取得する

DBA権限を持っているHADBユーザで，「付録B.24　ディクショナリ表の検索」の「(9)　表名から表を使用する全ビュー表のビュー表名を調べる場合」で説明している作業を実施してください。

なお，SELECT文の実行結果の重複排除をしてください。

ビュー表のビューレベルを取得する

DBA権限を持っているHADBユーザでディクショナリ表を検索してください。

SELECT "TABLE_SCHEMA" AS "スキーマ名"
      ,"TABLE_NAME" AS "表識別子"
      ,"VIEW_LEVEL" AS "ビューレベル"
    FROM "MASTER"."SQL_VIEWS"
      WHERE "TABLE_SCHEMA" = ? AND "TABLE_NAME" = ?

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求には，5.で取得したビュー表のスキーマ名を，2番目の入力要求にはビュー表の表識別子を入力してください。

コスト情報を収集している表の一覧を取得する

DBA権限を持っているHADBユーザで，「付録C.9　システム表の検索」の「(1)　コスト情報を収集した全実表の表名と収集日時を調べる場合」で説明している作業を実施してください。

(4)　表のデータをエクスポートする

暗号化対象のデータ用DBエリアに格納されている表のデータをエクスポートしてください。表がマルチチャンク表かどうかで手順が異なります。

メモ

次の手順の操作は，表の所有者が実行してください。

マルチチャンク表の場合

手順

チャンクに関する情報を取得する

「付録C.9　システム表の検索」の「(3)　表名から表内の全チャンクの情報を調べる場合」で説明している作業を実施し，チャンクに関する次の情報を取得してください。

チャンクID

チャンクコメント

チャンクの状態

チャンクの作成日時

チャンクの切り替え日時

重要

暗号化対象のデータ用DBエリアの再作成後，再定義した表にデータをインポートします。その際，カレントチャンクはいちばん最後にインポートする必要があるため，カレントチャンクの情報を記録しておいてください。次の2つの条件をすべて満たすチャンクがカレントチャンクです。

チャンクの作成日時が設定されている

チャンクの切り替え日時がナル値になっている

メモ

ここで取得した情報は，後ほどの作業で使用します。

adbexportコマンドを実行して，全チャンクのデータをCSVファイルに出力してください。方法については，「11.5.5　チャンク単位にデータをエクスポートする方法」を参照してください。

マルチチャンク表ではない場合

adbexportコマンドを実行して，表のデータをCSVファイルに出力してください。方法については，「11.1.11　実表のデータをファイルに出力する方法（データをエクスポートする方法）」を参照してください。

(5)　暗号化対象のデータ用DBエリアを再作成する

次の手順で，暗号化対象のデータ用DBエリアを再作成してください。

手順

暗号化対象のデータ用DBエリアに格納されている表およびインデクスを削除する

DROP TABLE文およびDROP INDEX文を実行して，暗号化対象のデータ用DBエリアに格納されている表およびインデクスを削除してください。

なお，DROP TABLE文を実行する際，削除動作を指定しないでください。

削除対象の表およびインデクスは，「(3)　表およびインデクスの定義情報を取得する」で情報を取得しています。

メモ

暗号化対象のデータ用DBエリアに格納されている表をDROP TABLE文（削除動作省略）で削除すると，その表のインデクスは自動的に削除されます。

暗号化対象のDBエリアに，表は格納されていないがインデクスだけが格納されている場合は，そのインデクスはDROP INDEX文で削除してください。

暗号化対象のデータ用DBエリアを削除する

adbmodareaコマンドを実行して，暗号化対象のデータ用DBエリアを削除してください。

「(2)　DBエリア追加・変更オプションファイルを作成する」で作成したDBエリア追加・変更オプションファイルを使用してください。

メモ

1回のadbmodareaコマンドではデータ用DBエリアを1つしか削除できないため，削除するデータ用DBエリアの数だけadbmodareaコマンドを繰り返し実行してください。

暗号化対象のデータ用DBエリアを追加する

adbmodareaコマンドを実行して，暗号化対象のデータ用DBエリアを追加してください。

「(2)　DBエリア追加・変更オプションファイルを作成する」で作成したDBエリア追加・変更オプションファイルを使用してください。

メモ

1回のadbmodareaコマンドではデータ用DBエリアを1つしか追加できないため，追加するデータ用DBエリアの数だけadbmodareaコマンドを繰り返し実行してください。

(6)　表およびインデクスを再作成する

再作成したデータ用DBエリアに格納されていた表およびインデクスを再定義し，表にデータをインポートしてください。また，表に対するアクセス権限も付与してください。手順を次に示します。

手順

表を再定義する

表の所有者がCREATE TABLE文を実行して，暗号化対象のデータ用DBエリアに格納していた表を再定義してください。「(3)　表およびインデクスの定義情報を取得する」で取得した表の定義情報を使用してください。

インデクスを再定義する

表の所有者がCREATE INDEX文を実行して，次のインデクスを再定義してください。「(3)　表およびインデクスの定義情報を取得する」で取得したインデクスの定義情報を使用してください。

暗号化対象のデータ用DBエリアに格納していた表のインデクス

暗号化対象のデータ用DBエリアに格納していたインデクス※

注※

表は暗号化していないデータ用DBエリアに格納していて，インデクスだけが暗号化対象のデータ用DBエリアに格納されている場合が該当します。この場合，インデクスを再定義したあとに，インデクスを定義した表を処理対象表に指定してadbidxrebuildコマンドを実行し，インデクスを再作成してください。

表に対するアクセス権限を付与する

1.で再定義した表に対するアクセス権限をGRANT文で付与してください。

「(3)　表およびインデクスの定義情報を取得する」で取得した，表に対するアクセス権限の情報を使用して，次の手順でアクセス権限を付与します。

「GRANTOR列の値 = OWNER列の値」かつ「GRANTOR列の値≠GRANTEE列の値」の行がある場合，表の所有者がGRANTEE列に表示されているHADBユーザにアクセス権限を付与します。各種アクセス権限を持っているかどうかを示す列の値によって，付与するアクセス権限が異なります。'G'が表示されている場合は，付与権付きでアクセス権限を付与します。'Y'が表示されている場合は，アクセス権限を付与します。'N'が表示されている場合は，アクセス権限を付与しません。

「a.でアクセス権限を付与されたHADBユーザ = GRANTOR列の値」の行がある場合，GRANTOR列に表示されているHADBユーザが，GRANTEE列に表示されているHADBユーザにアクセス権限を付与します。各種アクセス権限を持っているかどうかを示す列の値によって，付与するアクセス権限が異なります。'G'が表示されている場合は，付与権付きでアクセス権限を付与します。'Y'が表示されている場合は，アクセス権限を付与します。'N'が表示されている場合は，アクセス権限を付与しません。

b.の作業を「b.でアクセス権限を付与されたHADBユーザ = GRANTOR列の値」の行が出てこなくなるまで繰り返します。

a.～c.の作業をすべての表に対して実行してください。

ビュー表を再作成する

ALTER VIEW文を実行して，ビュー表を再作成してください。

「(3)　表およびインデクスの定義情報を取得する」の「5．暗号化対象のデータ用DBエリアに格納されている表を基表とするビュー表の名称を取得する」で調べたビュー表を再作成します。

メモ

「(3)　表およびインデクスの定義情報を取得する」の「6．ビュー表のビューレベルを取得する」で調べたビューレベルの値が低いビュー表から順に，ビュー表の所有者がビュー表を再作成してください。

表にデータをインポートする

adbimportコマンドを実行して，再定義した表にデータをインポートしてください。

マルチチャンク表にデータをインポートする場合

「(4)　表のデータをエクスポートする」でエクスポートしたデータを入力データファイルにして，バックグラウンドインポートを実行してください。

なお，初回のデータインポートの際は，作成モードでデータインポートを実行してください。手順については，「11.1.10　実表にデータを格納する方法（データインポート）」および「11.5.2　マルチチャンク表にデータを格納する方法（バックグラウンドインポート）」を参照してください。

重要

「(4)　表のデータをエクスポートする」で取得した，チャンクコメントおよびチャンクの状態に合わせてオプションを指定してください。

カレントチャンクは，いちばん最後にインポートしてください。「(4)　表のデータをエクスポートする」でカレントチャンクを調べています。

マルチチャンク表ではない表にデータをインポートする場合

「(4)　表のデータをエクスポートする」でエクスポートしたデータを入力データファイルにして，adbimportコマンドを実行してください。

コスト情報を収集する

adbgetcstコマンドを実行して，表のコスト情報を収集してください。

1.で再定義した表のうち，コスト情報を収集していた表のコスト情報を収集します。コスト情報を収集していた表の一覧は，「(3)　表およびインデクスの定義情報を取得する」で取得しています。

メモ

収集したコスト情報は，データ用DBエリアの再作成前のコスト情報とは異なる可能性があります。そのため，データ用DBエリアの再作成前とはSQL文のアクセスパスが変わる可能性があります。

13.10　暗号化していないDBエリアを暗号化する場合

暗号化していないDBエリアを暗号化する方法について説明します。データ用DBエリアを暗号化する場合と，データ用DBエリア以外のDBエリアを暗号化する場合とで方法が異なります。それぞれの方法を説明します。

13.10.1　データ用DBエリアを暗号化する場合

データ用DBエリアを暗号化する場合，そのデータ用DBエリアをいったん削除してから，暗号化対象のデータ用DBエリアとして再度追加する必要があります。そのため，データ用DBエリアに格納されている表，インデクスの再定義や，表へのデータの再インポートなどをする必要があります。

＜以降の手順の説明について＞

表T1に機密情報が含まれているため，表T1を格納しているデータ用DBエリアを暗号化する手順を説明します。

(1)　データベースのバックアップを取得する

データ用DBエリアの暗号化手順を間違えると，データベースの状態が手順の実施前とは異なってしまうおそれがあります。そのため，データ用DBエリアを暗号化する前にデータベースのバックアップを取得してください。バックアップの取得方法については，「13.6　バックアップを取得する場合」を参照してください。

データ用DBエリアの暗号化手順を間違えた場合，バックアップからデータベースを回復し，そのあとにデータ用DBエリアを再度暗号化してください。

(2)　暗号化するデータ用DBエリアを調べる

表T1を格納しているデータ用DBエリアと，表T1のインデクスを格納しているデータ用DBエリアを調べてください。これらのデータ用DBエリアを暗号化します。

手順

次のすべての操作は，DBA権限を持っているHADBユーザで実行してください。

表T1を格納しているデータ用DBエリアを調べる

「付録B.24　ディクショナリ表の検索」の「(10)　表名から表が格納されているDBエリア名を調べる場合」で説明している作業を実施してください。

表T1の全インデクス名を調べる

「付録B.24　ディクショナリ表の検索」の「(8)　表名から表に定義された全インデクス名を調べる場合」で説明している作業を実施してください。

表T1のインデクスを格納しているデータ用DBエリアを調べる

「付録B.24　ディクショナリ表の検索」の「(13)　インデクス名からインデクスが格納されているDBエリア名を調べる場合」で説明している作業を実施してください。

表とインデクスを同じデータ用DBエリアに格納している場合，1.と3.の実行結果に出力されるデータ用DBエリア名が重複します。

メモ

ここでは，表T1がデータ用DBエリアADBUTBL01に，表T1のインデクス（IDX01）がADBUIDX01に格納されているとします。以降の手順では，データ用DBエリアADBUTBL01およびADBUIDX01を暗号化する手順を説明します。

(3)　DBエリア追加・変更オプションファイルを作成する

データ用DBエリア（ADBUTBL01，ADBUIDX01）をいったん削除したあとに，暗号化対象のデータ用DBエリア（ADBUTBL01，ADBUIDX01）として再度追加します。そのため，暗号化するデータ用DBエリアの情報を取得し，それを基にadbmodareaコマンドのDBエリア追加・変更オプションファイルを作成してください。

■データ用DBエリアを削除するときに使用するDBエリア追加・変更オプションファイルの作成

データ用DBエリア（ADBUTBL01，ADBUIDX01）を削除するためのDBエリア追加・変更オプションファイルを作成してください。

＜ADBUTBL01削除用のDBエリア追加・変更オプションファイル＞

adbrmarea -n ADBUTBL01

＜ADBUIDX01削除用のDBエリア追加・変更オプションファイル＞

adbrmarea -n ADBUIDX01

■データ用DBエリアを追加するときに使用するDBエリア追加・変更オプションファイルの作成

データ用DBエリア（ADBUTBL01，ADBUIDX01）を暗号化対象のデータ用DBエリアとして追加するため，現状のADBUTBL01，ADBUIDX01の構成を反映したDBエリア追加・変更オプションファイルを次の手順で作成してください。

クラウドストレージ機能を使用しているかどうかによって手順が異なります。

手順（クラウドストレージ機能を使用していない場合）

次のすべての操作は，HADB管理者が実行してください。

DBエリア追加・変更オプションの基となる情報を作成する

adbdbstatusコマンドを実行して，データ用DBエリアなどを構成するファイルの情報を出力してください。

adbdbstatus -d used | grep -E "^Used" | awk -F',' '{print $3, $9}' | awk '!a[$0]++' ¥
| sed -e '/"ADBDIC"/d' ¥
      -e '/"ADBSTBL"/d' ¥
| sed -r 's/^"(.*)" "(.*)"/adbaddarea -n ¥¥"¥1¥¥" -i 0K,x -v "¥2",¥¥/g'

＜上記のコマンドの実行結果の例＞

adbaddarea -n ¥"ADBUIDX01¥" -i 0K,x -v "/dev/disk/by-id/wwn-0x60...0000",¥
adbaddarea -n ¥"ADBUTBL01¥" -i 0K,x -v "/dev/disk/by-id/wwn-0x60...0400",¥
adbaddarea -n ¥"ADBUTBL01¥" -i 0K,x -v "/dev/disk/by-id/wwn-0x60...0401",¥
adbaddarea -n ¥"ADBUTBL01¥" -i 0K,x -v "/dev/disk/by-id/wwn-0x60...0402",¥
adbaddarea -n ¥"ADBUTBL02¥" -i 0K,x -v "/dev/disk/by-id/wwn-0x60...0002",¥
adbaddarea -n ¥"ADBUTBL03¥" -i 0K,x -v "/dev/disk/by-id/wwn-0x60...0003",¥

1.の実行結果を編集する

1.の実行結果をエディタに貼り付けて，このファイルの内容をDBエリア追加・変更オプションファイルとして修正していきます。マニュアルHADB　コマンドリファレンスのDBエリア追加・変更オプションの形式を参照して，ファイルの内容を修正してください。

また，次のことを確認して修正してください。

-nオプションにADBUTBL01，ADBUIDX01以外が指定されている行を削除してください。

-vオプションにブロックスペシャルファイルが指定されていない場合は，次の修正をしてください。

-vオプションに指定されているDBエリアファイルがDBディレクトリ直下にある場合

＜修正例＞

adbaddarea -n ¥"ADBUTBL01¥" -i 0K,x -v "$DBDIR/ADBUTBL01",¥
   ↓下記のように修正する。
adbaddarea -n ¥"ADBUTBL01¥" -i 0K,1

$DBDIRの部分は，DBディレクトリのパスが表示されます。上記の例の場合，DBディレクトリの直下にDBエリアファイルADBUTBL01があります。

この場合，次の修正をしてください。

・-vオプション以降の指定を削除する。

・-iオプションに指定している作成ファイル数を1に変更する。

-vオプションに指定されているDBエリアファイルがDBディレクトリ直下にない場合

＜修正例＞

adbaddarea -n ¥"ADBUTBL01¥" -i 0K,x -v "$DBDIR/AREAS/ADBUTBL01",¥
   ↓下記のように修正する。
adbaddarea -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行目以降については，ブロックスペシャルファイルより前の記述を削除してください。

最終行の末尾の「,¥」を削除してください。

すべてのadbaddareaオペランドに-eオプションを追加してください。

＜修正後のファイルの例＞

adbaddarea -e -n ¥"ADBUIDX01¥" -i 0K,1 -v "/dev/disk/by-id/wwn-0x60...0000"
adbaddarea -e -n ¥"ADBUTBL01¥" -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"

ファイルを編集する

ADBUTBL01，ADBUIDX01のデータ用DBエリアファイルのシンボリックリンクをDBディレクトリ下のサブディレクトリに配置している場合，ADBUTBL01，ADBUIDX01を定義しているadbaddareaオペランドに，-fオプションを指定する必要があります。3.では，adbaddareaオペランドに-fオプションを指定する必要があるかどうかと，-fオプションに指定するパスを調査します。

なお，2.で-fオプションを指定したadbaddareaオペランドについては，3.の作業は不要です。

手順

メモ

手順の各操作にある$DBDIRにはDBディレクトリ名を入力してください。また，実行結果にある$DBDIRにはDBディレクトリ名が表示されます。

DBディレクトリ直下のファイルの一覧を表示する

ls $DBDIR

上記のコマンドを実行すると，DB ディレクトリ直下のファイルの一覧が表示されます。

＜lsコマンドの実行結果の例＞

ADBDIC  ADBMST  ADBSTBL  ADBSYS  ADBWORK  ADBWRK  AREAS ADBUIDX01  ADBUTBL02  SPOOL

上記の実行結果に，ADBUTBL01，ADBUIDX01と同名のファイルがあるかどうかを確認してください。この例の場合，同名のファイルとしてADBUIDX01はありますが，ADBUTBL01はありません。したがって，ADBUIDX01のデータ用DBエリアファイルのシンボリックリンクADBUIDX01はDBディレクトリ直下に配置されていますが，ADBUTBL01のデータ用DBエリアファイルのシンボリックリンクADBUTBL01はDBディレクトリ直下に配置されていません。

シンボリックリンクADBUTBL01の配置場所を調査する

findコマンドを実行して，a.の実行結果に表示されていないシンボリックリンクADBUTBL01が，DBディレクトリ内のどこに配置されているかを調査してください。

find $DBDIR -name ADBUTBL01 2>/dev/null

上記のコマンドを実行すると，DBディレクトリ内に存在するファイル名がADBUTBL01であるファイルの一覧が表示されます。

＜findコマンドの実行結果の例＞

$DBDIR/AREAS/OLD/ADBUTBL01
$DBDIR/AREAS/NEW/ADBUTBL01

上記の実行結果のように，異なるパスの同名ファイルが複数表示された場合は，次の手順に進んでください。

パスが1 つしか表示されない場合は，d.に進んでください。

$DBDIR/AREAS/OLD/ADBUTBL01のリンク先を調査する

ls -lコマンドを実行して，b.の実行結果に表示された$DBDIR/AREAS/OLD/ADBUTBL01のリンク先を表示してください。

ls -l $DBDIR/AREAS/OLD/ADBUTBL01* | sed -e 's/.* -> //g'

＜lsコマンドの実行結果の例＞

/dev/disk/by-id/wwn-0x60...a000

上記の実行結果と，2.の「＜修正後のファイルの例＞」に指定しているデータ用DBエリアADBUTBL01の定義の-vオプションに指定しているブロックスペシャルファイルのパスを見比べてください。

この例の場合，上記の実行結果とブロックスペシャルファイルのパスが一致していないため，該当するファイルではありません。

$DBDIR/AREAS/NEW/ADBUTBL01のリンク先を調査する

ls -lコマンドを実行して，b.の実行結果に表示された$DBDIR/AREAS/NEW/ADBUTBL01のリンク先を表示してください。

ls -l $DBDIR/AREAS/NEW/ADBUTBL01* | 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

上記の実行結果と，2.の「＜修正後のファイルの例＞」に指定しているデータ用DBエリアADBUTBL01の定義の-vオプションに指定しているブロックスペシャルファイルのパスを見比べてください。

この例の場合，上記の実行結果とブロックスペシャルファイルのパスが一致しています。したがって，$DBDIR/AREAS/NEW/ADBUTBL01が，該当するファイルとなります。$DBDIR/AREAS/NEW/ADBUTBL01の下線部分を，データ用DBエリアADBUTBL01のadbaddareaオペランドの-fオプションに指定してください。

＜修正後のファイルの例＞

adbaddarea -e -n ¥"ADBUIDX01¥" -i 0K,1 -v "/dev/disk/by-id/wwn-0x60...0000"
adbaddarea -e -n ¥"ADBUTBL01¥" -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オプションを追加します。

DBエリア追加・変更オプションファイルを作成する

3.で作成したファイルを，追加するデータ用DBエリアごとに2つに分割して，DBエリア追加・変更オプションファイルを作成してください。

＜ADBUIDX01追加用のDBエリア追加・変更オプションファイルの例＞

adbaddarea -e -n ¥"ADBUIDX01¥" -i 0K,1 -v "/dev/disk/by-id/wwn-0x60...0000"

＜ADBUTBL01追加用のDBエリア追加・変更オプションファイルの例＞

adbaddarea -e -n ¥"ADBUTBL01¥" -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"

手順（クラウドストレージ機能を使用している場合）

DBエリア追加・変更オプションファイルを作成する

暗号化対象のデータ用DBエリアを追加するときに使用するDBエリア追加・変更オプションファイルを作成してください。

＜ADBUIDX01追加用のDBエリア追加・変更オプションファイルの例＞

adbaddarea -e -n ADBUIDX01

＜ADBUTBL01追加用のDBエリア追加・変更オプションファイルの例＞

adbaddarea -e -n ADBUTBL01

下線部分には，追加するデータ用DBエリア名（ADBUIDX01，ADBUTBL01）を指定します。

メモ

ここで作成したDBエリア追加・変更オプションファイルは，後ほどの作業で使用します。

(4)　表およびインデクスの定義情報を取得する

データ用DBエリア（ADBUTBL01，ADBUIDX01）の再作成後に表やインデクスを再定義するため，表およびインデクスの定義情報と，表に対するアクセス権限の情報を次の手順で取得してください。

手順

データ用DBエリア（ADBUTBL01，ADBUIDX01）に格納されている表またはインデクスを確認する

ADBUTBL01，ADBUIDX01に表T1およびインデクスIDX01以外の表またはインデクスが格納されていないかを確認してください。DBA権限を持っているHADBユーザで，「付録B.24　ディクショナリ表の検索」の「(15)　DBエリアに格納されている表の表名を調べる場合」および「(16)　DBエリアに格納されているインデクスのインデクス名を調べる場合」で説明している作業を実施してください。

メモ

ここでは，ADBUTBL01には，表T1以外に表T2が格納されているとします。また，ADBUIDX01には，インデクスIDX01以外に表T3が格納されているとします。以降の手順は，その前提で説明します。

ADBUTBL01，ADBUIDX01はいったん削除するため，表T2および表T3もいったん削除する必要があります。そのため，ADBUTBL01，ADBUIDX01の追加後に，表T1だけではなく，表T2および表T3も再作成する必要があります。

表に対するアクセス権限の情報を取得する

データ用DBエリア（ADBUTBL01，ADBUIDX01）に格納されている表T1，表T2，および表T3に対するアクセス権限の情報を取得してください。「13.9.2　データ用DBエリアだけを暗号化している場合」の「(3)　表およびインデクスの定義情報を取得する」の「2．表に対するアクセス権限の情報を取得する」の作業を実施してください。

データ用DBエリア（ADBUTBL01，ADBUIDX01）に格納されている表およびインデクスの定義情報を取得する

ADBUTBL01，ADBUIDX01に格納されている表T1，表T2，および表T3とインデクスIDX01の定義情報を取得してください。DBA権限を持っているHADBユーザで，「付録B.24　ディクショナリ表の検索」の「(29)　実表の定義情報を調べる場合」および「(30)　インデクスの定義情報を調べる場合」で説明している作業を実施してください。

メモ

HADBでは，表およびインデクスの定義情報を出力する機能を提供していません。そのため，ディクショナリ表を検索して，表およびインデクスの定義情報を取得しておき，データ用DBエリアの再作成後に表およびインデクスを再定義できるようにしておく必要があります。

表およびインデクスを定義したときの定義情報がある場合は，この作業を実施する必要はありません。

表T2および表T3のインデクスの定義情報を取得する

表T2および表T3をいったん削除するため，表T2および表T3のインデクスもいったん削除されます。そのため，表T2および表T3のインデクスを再定義する際に必要となるインデクスの定義情報を取得してください。DBA権限を持っているHADBユーザで，「付録B.24　ディクショナリ表の検索」の「(30)　インデクスの定義情報を調べる場合」で説明している作業を実施してください。

なお，3.で取得したインデクスの定義情報と重複している情報がある場合は，その情報を削除してください。

データ用DBエリア（ADBUTBL01，ADBUIDX01）に格納されている表を基表とするビュー表の名称を取得する

表T1，表T2，および表T3を基表とするビュー表の名称を取得してください。DBA権限を持っているHADBユーザで，「付録B.24　ディクショナリ表の検索」の「(9)　表名から表を使用する全ビュー表のビュー表名を調べる場合」で説明している作業を実施してください。

なお，SELECT文の実行結果の重複排除をしてください。

ビュー表のビューレベルを取得する

DBA権限を持っているHADBユーザでディクショナリ表を検索してください。

SELECT "TABLE_SCHEMA" AS "スキーマ名"
      ,"TABLE_NAME" AS "表識別子"
      ,"VIEW_LEVEL" AS "ビューレベル"
    FROM "MASTER"."SQL_VIEWS"
      WHERE "TABLE_SCHEMA" = ? AND "TABLE_NAME" = ?

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求には，5.で取得したビュー表のスキーマ名を，2番目の入力要求にはビュー表の表識別子を入力してください。

メモ

表T1，表T2，および表T3をいったん削除するため，それらの表を基表とするビュー表（5.で調べたビュー表）が無効化されます。ビュー表を再作成する際，ビューレベルの値が低いビュー表から順に再作成する必要があるため，ここでビューレベルの値を取得しておきます。

データ用DBエリア（ADBUTBL01，ADBUIDX01）に格納されている表がコスト情報を収集しているかどうかを確認する

表T1，表T2，および表T3が，コスト情報を収集しているかどうかを確認してください。

DBA権限を持っているHADBユーザで，「付録C.9　システム表の検索」の「(1)　コスト情報を収集した全実表の表名と収集日時を調べる場合」で説明している作業を実施すると，コスト情報を収集している表の一覧が表示されます。その一覧に表T1，表T2，表T3があれば，コスト情報を収集しています。

メモ

コスト情報を収集している場合は，表T1，表T2，表T3の再定義後にコスト情報を収集する必要があります。

メモ

ここで取得した情報は，後ほどの作業で使用します。

(5)　表のデータをエクスポートする

データ用DBエリア（ADBUTBL01，ADBUIDX01）に格納されている表T1，表T2，および表T3のデータをエクスポートしてください。エクスポートの方法については，「13.9.2　データ用DBエリアだけを暗号化している場合」の「(4)　表のデータをエクスポートする」を参照してください。

(6)　データ用DBエリアを暗号化する

データ用DBエリア（ADBUTBL01，ADBUIDX01）を暗号化してください。

手順

データ用DBエリア（ADBUTBL01，ADBUIDX01）に格納されている表およびインデクスを削除する

DROP TABLE文を実行して，表T1，表T2，および表T3を削除してください。このとき，削除動作は省略してください。

メモ

DROP TABLE文（削除動作は省略）を実行すると，表T1のインデクス（IDX01）も自動的に削除されます。

表T1，表T2，表T3以外のインデクスがデータ用DBエリア（ADBUTBL01，ADBUIDX01）に格納されている場合は，そのインデクスをDROP INDEX文で削除してください。

データ用DBエリア（ADBUTBL01，ADBUIDX01）を削除する

adbmodareaコマンドを実行して，データ用DBエリア（ADBUTBL01，ADBUIDX01）を削除してください。

「(3)　DBエリア追加・変更オプションファイルを作成する」で作成した「データ用DBエリアを削除するときに使用するDBエリア追加・変更オプションファイル」を使用してください。

データ用DBエリア（ADBUTBL01，ADBUIDX01）を追加する

adbmodareaコマンドを実行して，データ用DBエリア（ADBUTBL01，ADBUIDX01）を暗号化対象のデータ用DBエリアとして追加してください。

「(3)　DBエリア追加・変更オプションファイルを作成する」で作成した「データ用DBエリアを追加するときに使用するDBエリア追加・変更オプションファイル」を使用してください。

(7)　表およびインデクスを再作成する

削除した表（表T1，表T2，および表T3）とインデクスを再定義し，表にデータをインポートしてください。

手順

表を再定義する

表の所有者がCREATE TABLE文を実行して，削除した表（表T1，表T2，および表T3）を再定義してください。「(4)　表およびインデクスの定義情報を取得する」で取得した表の定義情報を使用してください。

インデクスを再定義する

表の所有者がCREATE INDEX文を実行して，削除したインデクス（IDX01）を再定義してください。「(4)　表およびインデクスの定義情報を取得する」で取得したインデクスの定義情報を使用してください。

＜留意事項＞

表T2または表T3にインデクスが定義されていた場合は，そのインデクスもCREATE INDEX文で再定義してください。

表T1，表T2，または表T3以外の表のインデクスがデータ用DBエリア（ADBUTBL01，ADBUIDX01）に格納されている場合，そのインデクスもCREATE INDEX文で再定義してください。そのあとに，そのインデクスの表を処理対象表に指定してadbidxrebuildコマンドを実行し，インデクスを再作成してください。

表に対するアクセス権限を付与する

1.で再定義した表に対するアクセス権限をGRANT文で付与してください。

「(4)　表およびインデクスの定義情報を取得する」で取得した，表に対するアクセス権限の情報を使用してアクセス権限を付与します。

アクセス権限の付与方法については，「13.9.2　データ用DBエリアだけを暗号化している場合」の「(6)　表およびインデクスを再作成する」の「3．表に対するアクセス権限を付与する」を参照してください。

ビュー表を再作成する

ALTER VIEW文を実行して，ビュー表を再作成してください。

「(4)　表およびインデクスの定義情報を取得する」の「5．データ用DBエリア（ADBUTBL01，ADBUIDX01）に格納されている表を基表とするビュー表の名称を取得する」で調べたビュー表を再作成します。

重要

「(4)　表およびインデクスの定義情報を取得する」の「6．ビュー表のビューレベルを取得する」で調べたビューレベルの値が低いビュー表から順に，ビュー表の所有者がビュー表を再作成してください。

表にデータをインポートする

adbimportコマンドを実行して，再定義した表T1，表T2，および表T3にデータをインポートしてください。

マルチチャンク表にデータをインポートする場合

「(5)　表のデータをエクスポートする」でエクスポートしたデータを入力データファイルにして，バックグラウンドインポートを実行してください。

なお，初回のデータインポートの際は，作成モードでデータインポートを実行してください。手順については，「11.1.10　実表にデータを格納する方法（データインポート）」および「11.5.2　マルチチャンク表にデータを格納する方法（バックグラウンドインポート）」を参照してください。

重要

「(5)　表のデータをエクスポートする」で取得した，チャンクコメントおよびチャンクの状態に合わせてオプションを指定してください。

カレントチャンクは，いちばん最後にインポートしてください。「(5)　表のデータをエクスポートする」でカレントチャンクを調べています。

マルチチャンク表ではない表にデータをインポートする場合

「(5)　表のデータをエクスポートする」でエクスポートしたデータを入力データファイルにして，adbimportコマンドを実行してください。

コスト情報を収集する

adbgetcstコマンドを実行して，表のコスト情報を収集してください。

「(4)　表およびインデクスの定義情報を取得する」で，コスト情報を収集していた表を調査しています。

メモ

収集したコスト情報は，データ用DBエリアの再作成前のコスト情報とは異なる可能性があります。そのため，データ用DBエリアの再作成前とはSQL文のアクセスパスが変わる可能性があります。

13.10.2　データ用DBエリア以外のDBエリアを暗号化する場合

ディクショナリ用DBエリア，作業表用DBエリア，またはシステム表用DBエリアを暗号化する場合，adbinitコマンドでデータベースを初期設定し直す必要があります。そのため，DBエリア，表，インデクスの再定義や，表へのデータの再インポートなどをする必要があります。手順は，「13.9.1　データ用DBエリア以外のDBエリアを暗号化している場合」のデータ暗号鍵を更新する手順と同じです。

■暗号化するDBエリアの選択

「13.9.1　データ用DBエリア以外のDBエリアを暗号化している場合」の「(3)　adbinitコマンドの初期設定オプションファイルを作成する」の手順の「2．adbinit.optファイルを修正する」で初期設定オプション（adbinit.optファイル）を修正しています。このときに，暗号化するDBエリアを選択します。

＜adbinit.optファイルの例＞

set adb_init_dic_encrypt = Y                        ...1
set adb_init_wrk_encrypt = Y                        ...2
set adb_init_stbl_encrypt = Y                       ...3
set adb_init_dmkey_path = /HADB/.crypto/adb_dmkey
      :
adbinitdbarea -e -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"

［説明］

ディクショナリ用DBエリアを暗号化する場合は，このオペランドを指定します。

作業表用DBエリアを暗号化する場合は，このオペランドを指定します。

システム表用DBエリアを暗号化する場合は，このオペランドを指定します。

■暗号化するDBエリアの選択（クラウドストレージ機能を使用している場合）

「13.9.1　データ用DBエリア以外のDBエリアを暗号化している場合」の「(3)　adbinitコマンドの初期設定オプションファイルを作成する」の「■クラウドストレージ機能を使用している場合」の手順の「4．adbinit.optファイルを修正する（その2）」で初期設定オプション（adbinit.optファイル）を修正しています。このときに，暗号化するDBエリアを選択します。

＜adbinit.optファイルの例＞

set adb_init_dbarea_initialize = Y
set adb_init_wrk_blk_path = "/dev/disk/by-id/wwn-0x60...a67b"
set adb_init_dic_encrypt = Y                                    ...1
set adb_init_wrk_encrypt = Y                                    ...2
set adb_init_stbl_encrypt = Y                                   ...3
set adb_init_dmkey_path = /HADB/.crypto/adb_dmkey
      :
adbinitdbarea -n ¥"DBAREA1¥"
adbinitdbarea -e -n ¥"NEWAREA1¥"

［説明］

ディクショナリ用DBエリアを暗号化する場合は，このオペランドを指定します。

作業表用DBエリアを暗号化する場合は，このオペランドを指定します。

システム表用DBエリアを暗号化する場合は，このオペランドを指定します。

13.11　暗号化対象のDBエリアの暗号化をやめる場合

暗号化対象のDBエリアの暗号化をやめる方法は，対象のDBエリアがデータ用DBエリアの場合と，データ用DBエリア以外のDBエリアの場合とで方法が異なります。それぞれの方法を説明します。

13.11.1　データ用DBエリアの暗号化をやめる場合

データ用DBエリアの暗号化をやめる場合，そのデータ用DBエリアをいったん削除してから，非暗号化対象のデータ用DBエリアとして再度追加する必要があります。そのため，データ用DBエリアに格納されている表，インデクスの再定義や，表へのデータの再インポートなどをする必要があります。

＜以降の手順の説明について＞

表T1のデータを暗号化する必要がなくなったため，表T1を格納しているデータ用DBエリアの暗号化をやめる手順を説明します。

(1)　データベースのバックアップを取得する

データ用DBエリアの暗号化をやめる手順を間違えると，データベースの状態が手順の実施前とは異なってしまうおそれがあります。そのため，データ用DBエリアの暗号化をやめる前にデータベースのバックアップを取得してください。バックアップの取得方法については，「13.6　バックアップを取得する場合」を参照してください。

データ用DBエリアの暗号化をやめる手順を間違えた場合，バックアップからデータベースを回復し，そのあとにデータ用DBエリアの暗号化をやめる手順を再度実施してください。

(2)　暗号化をやめるデータ用DBエリアを調べる

表T1を格納しているデータ用DBエリアと，表T1のインデクスを格納しているデータ用DBエリアを調べてください。これらのデータ用DBエリアの暗号化をやめます。

手順

次のすべての操作は，DBA権限を持っているHADBユーザで実行してください。

表T1を格納しているデータ用DBエリアを調べる

「付録B.24　ディクショナリ表の検索」の「(10)　表名から表が格納されているDBエリア名を調べる場合」で説明している作業を実施してください。

表T1の全インデクス名を調べる

「付録B.24　ディクショナリ表の検索」の「(8)　表名から表に定義された全インデクス名を調べる場合」で説明している作業を実施してください。

表T1のインデクスを格納しているデータ用DBエリアを調べる

「付録B.24　ディクショナリ表の検索」の「(13)　インデクス名からインデクスが格納されているDBエリア名を調べる場合」で説明している作業を実施してください。

表とインデクスを同じデータ用DBエリアに格納している場合，1.と3.の実行結果に出力されるデータ用DBエリア名が重複します。

メモ

ここでは，表T1がデータ用DBエリアADBUTBL01に，表T1のインデクス（IDX01）がADBUIDX01に格納されているとします。以降の手順では，データ用DBエリアADBUTBL01およびADBUIDX01の暗号化をやめる手順を説明します。

(3)　DBエリア追加・変更オプションファイルを作成する

暗号化対象のデータ用DBエリア（ADBUTBL01，ADBUIDX01）を削除したあとに，非暗号化対象のデータ用DBエリア（ADBUTBL01，ADBUIDX01）として追加します。そのため，暗号化対象のデータ用DBエリアの情報を取得し，それを基にadbmodareaコマンドのDBエリア追加・変更オプションファイルを作成してください。

■データ用DBエリアを削除するときに使用するDBエリア追加・変更オプションファイルの作成

データ用DBエリア（ADBUTBL01，ADBUIDX01）を削除するためのDBエリア追加・変更オプションファイルを作成してください。

＜ADBUTBL01削除用のDBエリア追加・変更オプションファイル＞

adbrmarea -n ADBUTBL01

＜ADBUIDX01削除用のDBエリア追加・変更オプションファイル＞

adbrmarea -n ADBUIDX01

■データ用DBエリアを追加するときに使用するDBエリア追加・変更オプションファイルの作成

データ用DBエリア（ADBUTBL01，ADBUIDX01）を非暗号化対象のデータ用DBエリアとして追加するため，現状のADBUTBL01，ADBUIDX01の構成を反映したDBエリア追加・変更オプションファイルを次の手順で作成してください。

クラウドストレージ機能を使用しているかどうかによって手順が異なります。

手順（クラウドストレージ機能を使用していない場合）

次のすべての操作は，HADB管理者が実行してください。

DBエリア追加・変更オプションの基となる情報を作成する

adbdbstatusコマンドを実行して，データ用DBエリアなどを構成するファイルの情報を出力してください。

adbdbstatus -d used | grep -E "^Used" | awk -F',' '{print $3, $9}' | awk '!a[$0]++' ¥
| sed -e '/"ADBDIC"/d' ¥
      -e '/"ADBSTBL"/d' ¥
| sed -r 's/^"(.*)" "(.*)"/adbaddarea -n ¥¥"¥1¥¥" -i 0K,x -v "¥2",¥¥/g'

＜上記のコマンドの実行結果の例＞

adbaddarea -n ¥"ADBUIDX01¥" -i 0K,x -v "/dev/disk/by-id/wwn-0x60...0000",¥
adbaddarea -n ¥"ADBUTBL01¥" -i 0K,x -v "/dev/disk/by-id/wwn-0x60...0400",¥
adbaddarea -n ¥"ADBUTBL01¥" -i 0K,x -v "/dev/disk/by-id/wwn-0x60...0401",¥
adbaddarea -n ¥"ADBUTBL01¥" -i 0K,x -v "/dev/disk/by-id/wwn-0x60...0402",¥
adbaddarea -n ¥"ADBUTBL02¥" -i 0K,x -v "/dev/disk/by-id/wwn-0x60...0002",¥
adbaddarea -n ¥"ADBUTBL03¥" -i 0K,x -v "/dev/disk/by-id/wwn-0x60...0003",¥

1.の実行結果を編集する

1.の実行結果をエディタに貼り付けて，このファイルの内容をDBエリア追加・変更オプションファイルとして修正していきます。マニュアルHADB　コマンドリファレンスのDBエリア追加・変更オプションの形式を参照して，ファイルの内容を修正してください。

また，次のことを確認して修正してください。

-nオプションにADBUTBL01，ADBUIDX01以外が指定されている行を削除してください。

-vオプションにブロックスペシャルファイルが指定されていない場合は，次の修正をしてください。

-vオプションに指定されているDBエリアファイルがDBディレクトリ直下にある場合

＜修正例＞

adbaddarea -n ¥"ADBUTBL01¥" -i 0K,x -v "$DBDIR/ADBUTBL01",¥
   ↓下記のように修正する。
adbaddarea -n ¥"ADBUTBL01¥" -i 0K,1

$DBDIRの部分は，DBディレクトリのパスが表示されます。上記の例の場合，DBディレクトリの直下にDBエリアファイルADBUTBL01があります。

この場合，次の修正をしてください。

・-vオプション以降の指定を削除する。

・-iオプションに指定している作成ファイル数を1に変更する。

-vオプションに指定されているDBエリアファイルがDBディレクトリ直下にない場合

＜修正例＞

adbaddarea -n ¥"ADBUTBL01¥" -i 0K,x -v "$DBDIR/AREAS/ADBUTBL01",¥
   ↓下記のように修正する。
adbaddarea -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行目以降については，ブロックスペシャルファイルより前の記述を削除してください。

最終行の末尾の「,¥」を削除してください。

＜修正後のファイルの例＞

adbaddarea -n ¥"ADBUIDX01¥" -i 0K,1 -v "/dev/disk/by-id/wwn-0x60...0000"
adbaddarea -n ¥"ADBUTBL01¥" -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"

ファイルを編集する

ADBUTBL01，ADBUIDX01のデータ用DBエリアファイルのシンボリックリンクをDBディレクトリ下のサブディレクトリに配置している場合，ADBUTBL01，ADBUIDX01を定義しているadbaddareaオペランドに，-fオプションを指定する必要があります。3.では，adbaddareaオペランドに-fオプションを指定する必要があるかどうかと，-fオプションに指定するパスを調査します。

なお，2.で-fオプションを指定したadbaddareaオペランドについては，3.の作業は不要です。

手順

メモ

手順の各操作にある$DBDIRにはDBディレクトリ名を入力してください。また，実行結果にある$DBDIRにはDBディレクトリ名が表示されます。

DBディレクトリ直下のファイルの一覧を表示する

ls $DBDIR

上記のコマンドを実行すると，DB ディレクトリ直下のファイルの一覧が表示されます。

＜lsコマンドの実行結果の例＞

ADBDIC  ADBMST  ADBSTBL  ADBSYS  ADBWORK  ADBWRK  AREAS ADBUIDX01  ADBUTBL02  SPOOL

上記の実行結果に，ADBUTBL01，ADBUIDX01と同名のファイルがあるかどうかを確認してください。この例の場合，同名のファイルとしてADBUIDX01はありますが，ADBUTBL01はありません。したがって，ADBUIDX01のデータ用DBエリアファイルのシンボリックリンクADBUIDX01はDBディレクトリ直下に配置されていますが，ADBUTBL01のデータ用DBエリアファイルのシンボリックリンクADBUTBL01はDBディレクトリ直下に配置されていません。

シンボリックリンクADBUTBL01の配置場所を調査する

findコマンドを実行して，a.の実行結果に表示されていないシンボリックリンクADBUTBL01が，DBディレクトリ内のどこに配置されているかを調査してください。

find $DBDIR -name ADBUTBL01 2>/dev/null

上記のコマンドを実行すると，DBディレクトリ内に存在するファイル名がADBUTBL01であるファイルの一覧が表示されます。

＜findコマンドの実行結果の例＞

$DBDIR/AREAS/OLD/ADBUTBL01
$DBDIR/AREAS/NEW/ADBUTBL01

上記の実行結果のように，異なるパスの同名ファイルが複数表示された場合は，次の手順に進んでください。

パスが1 つしか表示されない場合は，d.に進んでください。

$DBDIR/AREAS/OLD/ADBUTBL01のリンク先を調査する

ls -lコマンドを実行して，b.の実行結果に表示された$DBDIR/AREAS/OLD/ADBUTBL01のリンク先を表示してください。

ls -l $DBDIR/AREAS/OLD/ADBUTBL01* | sed -e 's/.* -> //g'

＜lsコマンドの実行結果の例＞

/dev/disk/by-id/wwn-0x60...a000

上記の実行結果と，2.の「＜修正後のファイルの例＞」に指定しているデータ用DBエリアADBUTBL01の定義の-vオプションに指定しているブロックスペシャルファイルのパスを見比べてください。

この例の場合，上記の実行結果とブロックスペシャルファイルのパスが一致していないため，該当するファイルではありません。

$DBDIR/AREAS/NEW/ADBUTBL01のリンク先を調査する

ls -lコマンドを実行して，b.の実行結果に表示された$DBDIR/AREAS/NEW/ADBUTBL01のリンク先を表示してください。

ls -l $DBDIR/AREAS/NEW/ADBUTBL01* | 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

上記の実行結果と，2.の「＜修正後のファイルの例＞」に指定しているデータ用DBエリアADBUTBL01の定義の-vオプションに指定しているブロックスペシャルファイルのパスを見比べてください。

この例の場合，上記の実行結果とブロックスペシャルファイルのパスが一致しています。したがって，$DBDIR/AREAS/NEW/ADBUTBL01が，該当するファイルとなります。$DBDIR/AREAS/NEW/ADBUTBL01の下線部分を，データ用DBエリアADBUTBL01のadbaddareaオペランドの-fオプションに指定してください。

＜修正後のファイルの例＞

adbaddarea -n ¥"ADBUIDX01¥" -i 0K,1 -v "/dev/disk/by-id/wwn-0x60...0000"
adbaddarea -n ¥"ADBUTBL01¥" -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オプションを追加します。

DBエリア追加・変更オプションファイルを作成する

3.で作成したファイルを，追加するデータ用DBエリアごとに2つに分割して，DBエリア追加・変更オプションファイルを作成してください。

＜ADBUIDX01追加用のDBエリア追加・変更オプションファイルの例＞

adbaddarea -n ¥"ADBUIDX01¥" -i 0K,1 -v "/dev/disk/by-id/wwn-0x60...0000"

＜ADBUTBL01追加用のDBエリア追加・変更オプションファイルの例＞

adbaddarea -n ¥"ADBUTBL01¥" -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"

手順（クラウドストレージ機能を使用している場合）

DBエリア追加・変更オプションファイルを作成する

非暗号化対象のデータ用DBエリアを追加するときに使用するDBエリア追加・変更オプションファイルを作成してください。

＜ADBUIDX01追加用のDBエリア追加・変更オプションファイルの例＞

adbaddarea -n ADBUIDX01

＜ADBUTBL01追加用のDBエリア追加・変更オプションファイルの例＞

adbaddarea -n ADBUTBL01

下線部分には，追加するデータ用DBエリア名（ADBUIDX01，ADBUTBL01）を指定します。

メモ

ここで作成したDBエリア追加・変更オプションファイルは，後ほどの作業で使用します。

(4)　表およびインデクスの定義情報を取得する

データ用DBエリア（ADBUTBL01，ADBUIDX01）の再作成後に表やインデクスを再定義するため，表およびインデクスの定義情報と，表に対するアクセス権限の情報を次の手順で取得してください。

手順

データ用DBエリア（ADBUTBL01，ADBUIDX01）に格納されている表またはインデクスを確認する

ADBUTBL01，ADBUIDX01に表T1およびインデクスIDX01以外の表またはインデクスが格納されていないかを確認してください。DBA権限を持っているHADBユーザで，「付録B.24　ディクショナリ表の検索」の「(15)　DBエリアに格納されている表の表名を調べる場合」および「(16)　DBエリアに格納されているインデクスのインデクス名を調べる場合」で説明している作業を実施してください。

メモ

ここでは，ADBUTBL01には，表T1以外に表T2が格納されているとします。また，ADBUIDX01には，インデクスIDX01以外に表T3が格納されているとします。以降の手順は，その前提で説明します。

ADBUTBL01，ADBUIDX01はいったん削除するため，表T2および表T3もいったん削除する必要があります。そのため，ADBUTBL01，ADBUIDX01の追加後に，表T1だけではなく，表T2および表T3も再作成する必要があります。

表に対するアクセス権限の情報を取得する

データ用DBエリア（ADBUTBL01，ADBUIDX01）に格納されている表T1，表T2，および表T3に対するアクセス権限の情報を取得してください。「13.9.2　データ用DBエリアだけを暗号化している場合」の「(3)　表およびインデクスの定義情報を取得する」の「2．表に対するアクセス権限の情報を取得する」の作業を実施してください。

データ用DBエリア（ADBUTBL01，ADBUIDX01）に格納されている表およびインデクスの定義情報を取得する

ADBUTBL01，ADBUIDX01に格納されている表T1，表T2，および表T3とインデクスIDX01の定義情報を取得してください。DBA権限を持っているHADBユーザで，「付録B.24　ディクショナリ表の検索」の「(29)　実表の定義情報を調べる場合」および「(30)　インデクスの定義情報を調べる場合」で説明している作業を実施してください。

メモ

HADBでは，表およびインデクスの定義情報を出力する機能を提供していません。そのため，ディクショナリ表を検索して，表およびインデクスの定義情報を取得しておき，データ用DBエリアの再作成後に表およびインデクスを再定義できるようにしておく必要があります。

表およびインデクスを定義したときの定義情報がある場合は，この作業を実施する必要はありません。

表T2と表T3のインデクスの定義情報を取得する

表T2と表T3をいったん削除するため，表T2と表T3のインデクスもいったん削除されます。そのため，表T2と表T3のインデクスを再定義する際に必要となるインデクスの定義情報を取得してください。DBA権限を持っているHADBユーザで，「付録B.24　ディクショナリ表の検索」の「(30)　インデクスの定義情報を調べる場合」で説明している作業を実施してください。

なお，3.で取得したインデクスの定義情報と重複している情報がある場合は，その情報を削除してください。

データ用DBエリア（ADBUTBL01，ADBUIDX01）に格納されている表を基表とするビュー表の名称を取得する

表T1，表T2，および表T3を基表とするビュー表の名称を取得してください。DBA権限を持っているHADBユーザで，「付録B.24　ディクショナリ表の検索」の「(9)　表名から表を使用する全ビュー表のビュー表名を調べる場合」で説明している作業を実施してください。

なお，SELECT文の実行結果の重複排除をしてください。

ビュー表のビューレベルを取得する

DBA権限を持っているHADBユーザでディクショナリ表を検索してください。

SELECT "TABLE_SCHEMA" AS "スキーマ名"
      ,"TABLE_NAME" AS "表識別子"
      ,"VIEW_LEVEL" AS "ビューレベル"
    FROM "MASTER"."SQL_VIEWS"
      WHERE "TABLE_SCHEMA" = ? AND "TABLE_NAME" = ?

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求には，5.で取得したビュー表のスキーマ名を，2番目の入力要求にはビュー表の表識別子を入力してください。

メモ

表T1，表T2，および表T3をいったん削除するため，それらの表を基表とするビュー表（5.で調べたビュー表）が無効化されます。ビュー表を再作成する際，ビューレベルの値が低いビュー表から順に再作成する必要があるため，ここでビューレベルの値を取得しておきます。

データ用DBエリア（ADBUTBL01，ADBUIDX01）に格納されている表がコスト情報を収集しているかどうかを確認する

表T1，表T2，および表T3が，コスト情報を収集しているかどうかを確認してください。

DBA権限を持っているHADBユーザで，「付録C.9　システム表の検索」の「(1)　コスト情報を収集した全実表の表名と収集日時を調べる場合」で説明している作業を実施すると，コスト情報を収集している表の一覧が表示されます。その一覧に表T1，表T2，表T3があれば，コスト情報を収集しています。

メモ

コスト情報を収集している場合は，表T1，表T2，表T3の再定義後にコスト情報を収集する必要があります。

メモ

ここで取得した情報は，後ほどの作業で使用します。

(5)　表のデータをエクスポートする

データ用DBエリア（ADBUTBL01，ADBUIDX01）に格納されている表T1，表T2，および表T3のデータをエクスポートしてください。エクスポートの方法については，「13.9.2　データ用DBエリアだけを暗号化している場合」の「(4)　表のデータをエクスポートする」を参照してください。

(6)　データ用DBエリアの暗号化をやめる

データ用DBエリア（ADBUTBL01，ADBUIDX01）の暗号化をやめてください。

手順

データ用DBエリア（ADBUTBL01，ADBUIDX01）に格納されている表およびインデクスを削除する

DROP TABLE文を実行して，表T1，表T2，および表T3を削除してください。このとき，削除動作は省略してください。

メモ

DROP TABLE文（削除動作は省略）を実行すると，表T1のインデクス（IDX01）も自動的に削除されます。

表T1，表T2，表T3以外のインデクスがデータ用DBエリア（ADBUTBL01，ADBUIDX01）に格納されている場合は，そのインデクスをDROP INDEX文で削除してください。

データ用DBエリア（ADBUTBL01，ADBUIDX01）を削除する

adbmodareaコマンドを実行して，データ用DBエリア（ADBUTBL01，ADBUIDX01）を削除してください。

「(3)　DBエリア追加・変更オプションファイルを作成する」で作成した「データ用DBエリアを削除するときに使用するDBエリア追加・変更オプションファイル」を使用してください。

データ用DBエリア（ADBUTBL01，ADBUIDX01）を追加する

adbmodareaコマンドを実行して，データ用DBエリア（ADBUTBL01，ADBUIDX01）を非暗号化対象のデータ用DBエリアとして追加してください。

「(3)　DBエリア追加・変更オプションファイルを作成する」で作成した「データ用DBエリアを追加するときに使用するDBエリア追加・変更オプションファイル」を使用してください。

(7)　表およびインデクスを再作成する

削除した表（表T1，表T2，および表T3）とインデクスを再定義し，表にデータをインポートしてください。

手順

表を再定義する

表の所有者がCREATE TABLE文を実行して，削除した表（表T1，表T2，および表T3）を再定義してください。「(4)　表およびインデクスの定義情報を取得する」で取得した表の定義情報を使用してください。

インデクスを再定義する

表の所有者がCREATE INDEX文を実行して，削除したインデクス（IDX01）を再定義してください。「(4)　表およびインデクスの定義情報を取得する」で取得したインデクスの定義情報を使用してください。

＜留意事項＞

表T2または表T3にインデクスが定義されていた場合は，そのインデクスもCREATE INDEX文で再定義してください。

表T1，表T2，または表T3以外の表のインデクスがデータ用DBエリア（ADBUTBL01，ADBUIDX01）に格納されている場合，そのインデクスもCREATE INDEX文で再定義してください。そのあとに，そのインデクスの表を処理対象表に指定してadbidxrebuildコマンドを実行し，インデクスを再作成してください。

表に対するアクセス権限を付与する

1.で再定義した表に対するアクセス権限をGRANT文で付与してください。

「(4)　表およびインデクスの定義情報を取得する」で取得した，表に対するアクセス権限の情報を使用してアクセス権限を付与します。

アクセス権限の付与方法については，「13.9.2　データ用DBエリアだけを暗号化している場合」の「(6)　表およびインデクスを再作成する」の「3．表に対するアクセス権限を付与する」を参照してください。

ビュー表を再作成する

ALTER VIEW文を実行して，ビュー表を再作成してください。

「(4)　表およびインデクスの定義情報を取得する」の「5．データ用DBエリア（ADBUTBL01，ADBUIDX01）に格納されている表を基表とするビュー表の名称を取得する」で調べたビュー表を再作成します。

重要

「(4)　表およびインデクスの定義情報を取得する」の「6．ビュー表のビューレベルを取得する」で調べたビューレベルの値が低いビュー表から順に，ビュー表の所有者がビュー表を再作成してください。

表にデータをインポートする

adbimportコマンドを実行して，再定義した表T1，表T2，および表T3にデータをインポートしてください。

マルチチャンク表にデータをインポートする場合

「(5)　表のデータをエクスポートする」でエクスポートしたデータを入力データファイルにして，バックグラウンドインポートを実行してください。

なお，初回のデータインポートの際は，作成モードでデータインポートを実行してください。手順については，「11.1.10　実表にデータを格納する方法（データインポート）」および「11.5.2　マルチチャンク表にデータを格納する方法（バックグラウンドインポート）」を参照してください。

重要

「(5)　表のデータをエクスポートする」で取得した，チャンクコメントおよびチャンクの状態に合わせてオプションを指定してください。

カレントチャンクは，いちばん最後にインポートしてください。「(5)　表のデータをエクスポートする」でカレントチャンクを調べています。

マルチチャンク表ではない表にデータをインポートする場合

「(5)　表のデータをエクスポートする」でエクスポートしたデータを入力データファイルにして，adbimportコマンドを実行してください。

コスト情報を収集する

adbgetcstコマンドを実行して，表のコスト情報を収集してください。

「(4)　表およびインデクスの定義情報を取得する」で，コスト情報を収集していた表を調査しています。

メモ

収集したコスト情報は，データ用DBエリアの再作成前のコスト情報とは異なる可能性があります。そのため，データ用DBエリアの再作成前とはSQL文のアクセスパスが変わる可能性があります。

「13.11.1　データ用DBエリアの暗号化をやめる場合」の作業を実施した結果，暗号化対象のDBエリアが1つもない状態になった場合でも，HADBサーバの開始時にHADB暗号鍵利用パスワードの入力要求メッセージが出力されます（HADB暗号鍵利用パスワードを入力しないとHADBサーバを開始できません）。HADBサーバの開始時にHADB暗号鍵利用パスワードの入力要求メッセージを出力しないようにするには，「13.13　DBエリア暗号化機能の使用をやめる場合」で説明している作業を実施してください。

13.11.2　データ用DBエリア以外のDBエリアの暗号化をやめる場合

ディクショナリ用DBエリア，作業表用DBエリア，またはシステム表用DBエリアの暗号化をやめる場合，adbinitコマンドでデータベースを初期設定し直す必要があります。そのため，DBエリア，表，インデクスの再定義や，表へのデータの再インポートなどをする必要があります。手順は，データ暗号鍵を更新する手順と同じです。手順については，「13.9.1　データ用DBエリア以外のDBエリアを暗号化している場合」を参照してください。

■暗号化をやめるDBエリアの選択

「13.9.1　データ用DBエリア以外のDBエリアを暗号化している場合」の「(3)　adbinitコマンドの初期設定オプションファイルを作成する」の手順の「2．adbinit.optファイルを修正する」で初期設定オプション（adbinit.optファイル）を修正しています。このときに，暗号化をやめるDBエリアを選択します。

＜adbinit.optファイルの例＞

set adb_init_dic_encrypt = Y                        ...1
set adb_init_wrk_encrypt = Y                        ...2
set adb_init_stbl_encrypt = Y                       ...3
set adb_init_dmkey_path = /HADB/.crypto/adb_dmkey   ...4
      :
adbinitdbarea -e -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"

［説明］

ディクショナリ用DBエリアの暗号化をやめる場合は，このオペランドを指定しないようにします。

作業表用DBエリアの暗号化をやめる場合は，このオペランドを指定しないようにします。

システム表用DBエリアの暗号化をやめる場合は，このオペランドを指定しないようにします。

1.～3.のオペランドおよび-eオプションを指定したadbinitdbareaオペランドを指定しない場合は，このオペランドを指定しないようにします。

■暗号化をやめるDBエリアの選択（クラウドストレージ機能を使用している場合）

「13.9.1　データ用DBエリア以外のDBエリアを暗号化している場合」の「(3)　adbinitコマンドの初期設定オプションファイルを作成する」の「■クラウドストレージ機能を使用している場合」の手順の「4．adbinit.optファイルを修正する（その2）」で初期設定オプション（adbinit.optファイル）を修正しています。このときに，暗号化をやめるDBエリアを選択します。

＜adbinit.optファイルの例＞

set adb_init_dbarea_initialize = Y
set adb_init_wrk_blk_path = "/dev/disk/by-id/wwn-0x60...a67b"
set adb_init_dic_encrypt = Y                                    ...1
set adb_init_wrk_encrypt = Y                                    ...2
set adb_init_stbl_encrypt = Y                                   ...3
set adb_init_dmkey_path = /HADB/.crypto/adb_dmkey               ...4
      :
adbinitdbarea -n ¥"DBAREA1¥"
adbinitdbarea -e -n ¥"NEWAREA1¥"

［説明］

ディクショナリ用DBエリアの暗号化をやめる場合は，このオペランドを指定しないようにします。

作業表用DBエリアの暗号化をやめる場合は，このオペランドを指定しないようにします。

システム表用DBエリアの暗号化をやめる場合は，このオペランドを指定しないようにします。

1.～3.のオペランドおよび-eオプションを指定したadbinitdbareaオペランドを指定しない場合は，このオペランドを指定しないようにします。

13.12　暗号化対象のDBエリアのデータなどを破棄する場合

次の作業を実施する場合は，十分に注意してください。

暗号化対象のDBエリアのデータを破棄する場合

暗号化対象のDBエリアのバックアップファイルを破棄する場合

HADB暗号鍵ファイルを破棄する場合

暗号化されているデータが格納されているファイル（バックアップファイルも含む）や，HADB暗号鍵ファイルは，安全な方法で破棄してください。例えば，ファイルをHDDに保存している場合は，OSのshredコマンドなどを実行してディスク上にデータの痕跡が残らないように削除操作を複数回実行してください。また，ファイルをSSDに保存している場合は，SSDのデータチップを物理的に完全に破壊したり，SSD用に用意されたデータ消去コマンドを実行したりしてください。

13.13　DBエリア暗号化機能の使用をやめる場合

DBエリア暗号化機能の使用をやめる場合は，データベースを初期設定し直す必要があります。DBエリア暗号化機能の使用をやめるときの手順を次に示します。

手順

データベースのバックアップを取得する

「13.9.1　データ用DBエリア以外のDBエリアを暗号化している場合」の「(1)　データベースのバックアップを取得する」の作業を実施してください。

全HADBユーザの情報を取得する

「13.9.1　データ用DBエリア以外のDBエリアを暗号化している場合」の「(2)　全HADBユーザの情報を取得する」の作業を実施してください。

初期設定オプションファイルを作成する

「13.9.1　データ用DBエリア以外のDBエリアを暗号化している場合」の「(3)　adbinitコマンドの初期設定オプションファイルを作成する」の作業を実施してください。

ただし，「(3)　adbinitコマンドの初期設定オプションファイルを作成する」の手順の「2．adbinit.optファイルを修正する」は実施しないでください。

クラウドストレージ機能を使用している場合は，「■クラウドストレージ機能を使用している場合」の手順の「4．adbinit.optファイルを修正する（その2）」は実施しないでください。

表およびインデクスの定義情報を取得する

「13.9.1　データ用DBエリア以外のDBエリアを暗号化している場合」の「(4)　表およびインデクスの定義情報を取得する」の作業を実施してください。

表のデータをエクスポートする

「13.9.1　データ用DBエリア以外のDBエリアを暗号化している場合」の「(5)　表のデータをエクスポートする」の作業を実施してください。

監査証跡機能，同義語検索に関する情報を取得する

「13.9.1　データ用DBエリア以外のDBエリアを暗号化している場合」の「(6)　監査証跡機能，同義語検索に関する情報を取得する」の作業を実施してください。

データベースを初期設定する

「13.9.1　データ用DBエリア以外のDBエリアを暗号化している場合」の「(7)　データベースを初期設定する」の作業を実施してください。

データベースを初期設定する際，3.で作成した初期設定オプションファイルを使用してください。

HADBユーザを作成して権限を付与する

「13.9.1　データ用DBエリア以外のDBエリアを暗号化している場合」の「(8)　HADBユーザを作成して権限を付与する」の作業を実施してください。

表およびインデクスを再作成する

「13.9.1　データ用DBエリア以外のDBエリアを暗号化している場合」の「(9)　表およびインデクスを再作成する」の作業を実施してください。

監査証跡機能，同義語検索の環境設定をする

「13.9.1　データ用DBエリア以外のDBエリアを暗号化している場合」の「(10)　監査証跡機能，同義語検索の環境設定をする」の作業を実施してください。

HADBユーザのユーザ認証方式とパスワードを変更する

「13.9.1　データ用DBエリア以外のDBエリアを暗号化している場合」の「(11)　HADBユーザのユーザ認証方式とパスワードを変更する」の作業を実施してください。

使用していたHADB暗号鍵ファイルを削除する

HADB暗号鍵ファイルの保存先ディレクトリも削除してください。

14　チューニング

この章では，HADBのチューニングについて説明します。

14.1　処理性能の向上に関するチューニング

ここでは，HADBサーバの処理性能を向上させるためのチューニング方法について説明します。

各コマンドの処理性能を向上させるためのチューニング方法については，「14.3　コマンドの実行時間の短縮に関するチューニング」を参照してください。

14.1.1　レンジインデクスの一括先読み

HADBサーバの開始後，初回の表検索時のテーブルスキャンが遅い場合，レンジインデクスの一括先読みの適用を検討してください。レンジインデクスの一括先読みについては，「5.5.3　レンジインデクスの一括先読み」を参照してください。

14.1.2　定義したレンジインデクスの見直し

レンジインデクスを使用した検索処理の状況を確認することで，定義したレンジインデクスを見直す方法について説明します。

通常は，SQL文の統計情報を確認してください。レンジインデクスを使用した検索処理の状況を確認して，必要があれば，定義したレンジインデクスを見直します。

ただし，レンジインデクスが定義された複数の表に対する検索処理の状況を確認する場合は，アクセスパスの統計情報を確認してください。SQL文の統計情報では，どのレンジインデクスを見直せばよいかわかりません。

定義したレンジインデクスを見直す方法を次に示します。

SQL文の統計情報を確認する場合

「(1)　SQL文の統計情報を確認してレンジインデクスを見直す」を参照してください。

アクセスパスの統計情報を確認する場合

「(2)　アクセスパスの統計情報を確認してレンジインデクスを見直す」を参照してください。

(1)　SQL文の統計情報を確認してレンジインデクスを見直す

SQL文の統計情報を確認して，レンジインデクスを使用した検索処理の状況を確認します。

SQL文の統計情報は，次に示すどちらかの方法で確認してください。

adbstatコマンドを実行する

マニュアルHADB　コマンドリファレンスのadbstat（HADBサーバの統計解析）を参照してください。

SQLトレースファイルを確認する

「10.11.2　SQLトレース情報に出力される情報」の「(10)　SQL文の統計情報」を参照してください。

SQL文の統計情報を確認して，レンジインデクスを使用した検索処理の状況を確認する手順を，次に示します。

手順

「チャンクのスキップ」によるレンジインデクスの使用状況を確認する

レンジインデクスを使用した検索処理で，チャンクのスキップがどれだけ実行されているかについて確認します。

SQL文の統計情報に出力された，次に示す項目を確認してください。

Ridx_chunk_skip_cnt（レンジインデクスを使用した検索で，表のチャンクをスキップした回数）

Ridx_chunk_judge_cnt（レンジインデクスを使用した検索で，表のチャンクが探索条件を満たす値域のデータを格納しているかどうかを判定した回数）

確認した項目を基に，次に示す計算式を求めてください。

計算式

「セグメントのスキップ」によるレンジインデクスの使用状況を確認する

レンジインデクスを使用した検索処理で，セグメントのスキップがどれだけ実行されているかについて確認します。

SQL文の統計情報に出力された，次に示す項目を確認してください。

Ridx_sgmt_skip_cnt（レンジインデクスを使用した検索で，表のセグメントをスキップした回数）

Ridx_sgmt_judge_cnt（レンジインデクスを使用した検索で，表のセグメントが探索条件を満たす値域のデータを格納しているかどうかを判定した回数）

確認した項目を基に，次に示す計算式を求めてください。

計算式

定義したレンジインデクスを見直す

手順1.および手順2.で計算した結果が両方とも0の場合，または両方とも0に近い場合は，レンジインデクスの効果がありません（チャンクのスキップ，およびセグメントのスキップが実行されていません）。そのため，定義したレンジインデクスを削除することを検討してください。

効果がないレンジインデクスを使用すると，レンジインデクスを使用しない検索処理よりも，検索処理に時間が掛かるおそれがあります。

なお，手順1.および手順2.で計算した結果が両方とも1に近い場合，または片方だけ1に近い場合は，レンジインデクスの効果があります（チャンクのスキップ，またはセグメントのスキップが実行されています）。そのため，定義したレンジインデクスの見直しは不要です。

重要

シングルチャンク表の場合でも，手順1.を実施してください。レンジインデクスは，シングルチャンク表を1つのチャンクとして，チャンクのスキップを実行します。そのため，レンジインデクスの効果の有無を確認する必要があります。

(2)　アクセスパスの統計情報を確認してレンジインデクスを見直す

アクセスパスの統計情報を確認して，レンジインデクスを使用した検索処理の状況を確認します。

アクセスパスの統計情報は，SQLトレースファイルを確認してください。アクセスパスの統計情報については，「10.11.3　アクセスパスの統計情報の出力例と出力項目」を参照してください。

アクセスパスの統計情報を確認して，レンジインデクスを使用した検索処理の状況を確認する手順を，次に示します。

手順

「チャンクのスキップ」によるレンジインデクスの使用状況を確認する

レンジインデクスを使用した検索処理で，チャンクのスキップがどれだけ実行されているかについて確認します。

アクセスパスの統計情報に出力された，次に示す項目を確認してください。

Data_ridx_chunk_skip_cnt（レンジインデクスを使用した検索で，表のチャンクをスキップした回数）

Data_ridx_chunk_judge_cnt（レンジインデクスを使用した検索で，表のチャンクを判定した回数）

確認した項目を基に，次に示す計算式を求めてください。

計算式

「セグメントのスキップ」によるレンジインデクスの使用状況を確認する

レンジインデクスを使用した検索処理で，セグメントのスキップがどれだけ実行されているかについて確認します。

アクセスパスの統計情報に出力された，次に示す項目を確認してください。

Data_ridx_sgmt_skip_cnt（レンジインデクスを使用した検索で，表のセグメントをスキップした回数）

Data_ridx_sgmt_judge_cnt（レンジインデクスを使用した検索で，表のセグメントを判定した回数）

確認した項目を基に，次に示す計算式を求めてください。

計算式

定義したレンジインデクスを見直す

手順1.および手順2.で計算した結果が両方とも0の場合，または両方とも0に近い場合は，レンジインデクスの効果がありません（チャンクのスキップ，およびセグメントのスキップが実行されていません）。そのため，定義したレンジインデクスを削除することを検討してください。

効果がないレンジインデクスを使用すると，レンジインデクスを使用しない検索処理よりも，検索処理に時間が掛かるおそれがあります。

なお，手順1.および手順2.で計算した結果が両方とも1に近い場合，または片方だけ1に近い場合は，レンジインデクスの効果があります（チャンクのスキップ，またはセグメントのスキップが実行されています）。そのため，定義したレンジインデクスの見直しは不要です。

重要

シングルチャンク表の場合でも，手順1.を実施してください。レンジインデクスは，シングルチャンク表を1つのチャンクとして，チャンクのスキップを実行します。そのため，レンジインデクスの効果の有無を確認する必要があります。

14.1.3　定義したテキストインデクスの見直し

テキストインデクスが効果的に使用されているかどうかを確認する方法について説明します。

確認方法

SQLトレースファイルに出力されているアクセスパスの統計情報の次の出力項目を確認してください。

Data_tidx_all_search_cnt

上記の項目には，テキストインデクスを使用してチャンク内のデータを検索した際，チャンク内のデータを全件検索した回数が出力されます。上記の項目に1以上の値が出力されている場合は，対処を検討してください。

メモ

アクセスパスの統計情報については，「10.11.3　アクセスパスの統計情報の出力例と出力項目」を参照してください。

対処方法

次に示すどちらかの対処を行うと，性能が改善する可能性があります。

UNIONを使用してそれぞれの検索結果を統合するようにSQL文を修正する

テキストインデクスを使用しないで検索するようにSQL文を修正する（インデクス指定を指定する）

SQL文の修正例については，「11.19.11　同義語検索のチューニングを行う」の「(2)　テキストインデクスが効果的に使用されているかを確認する」を参照してください。

次の条件をすべて満たすSQL文を指定している場合は，性能低下の原因となっている可能性があります。

LIKE述語，LIKE_REGEX述語，またはスカラ関数CONTAINSを検索条件に指定している

上記の述語およびスカラ関数を指定した検索条件を，論理演算子ORを使って複数指定している

上記の述語およびスカラ関数を指定した検索条件中にテキストインデクスの構成列を指定している

上記の条件を満たす場合，すべての検索条件に指定されている検索文字列を使用して検索が行われます。検索条件の数が非常に多い場合，テキストインデクスによる絞り込みは行われません。このとき，テキストインデクスを使用した全件検索が行われるため，検索時間が非常に長くなるおそれがあります。

また，同義語検索が行われた場合，内部処理では，各同義語を指定した検索条件が論理演算子ORを使って複数個指定された形に変更されます。そのため，同義語グループに登録されている同義語が非常に多い場合，テキストインデクスによる絞り込みではなく，テキストインデクスを使用した全件検索が行われます。

14.1.4　HADBサーバ開始時間の短縮（HugePagesの適用）

ここでは，HADBサーバの開始時間を短縮する方法について説明します。

HADBのグローバルバッファはOSの共有メモリを使用しています。そのため，HADBのサーバ定義で大量のグローバルバッファを確保する定義を指定すると，OSのメモリを管理するTLB内に要求されたアドレスがない状態（TLBミス）が多発します。その結果，共有メモリのアクセス性能が低下し，HADBサーバの開始時間が長くなります。

このような場合，HADBの共有メモリにHugePagesを適用してください。HugePagesはTLBのページテーブルを拡張する機能です。TLBのページテーブルを拡張することでTLBミスが少なくなり，共有メモリへのアクセス性能が改善されます。

HADBの共有メモリにHugePagesを適用する手順を次に示します。

設定方法

HADBサーバを終了する

adbstopコマンドを実行して，HADBサーバを終了してください。

HugePagesを有効にするために，次のカーネルパラメタを指定する

vm.nr_hugepagesパラメタ

vm.hugetlb_shm_groupパラメタ

soft memlockパラメタ

hard memlockパラメタ

各カーネルパラメタの詳細については，「6.2　カーネルパラメタの見積もり」を参照してください。

OSを再起動する

カーネルパラメタの指定を変更した場合，OSを再起動してください。

サーバ定義を変更する

サーバ定義にadb_sys_shm_huge_page_sizeオペランドを指定してください。

また，手順2.でvm.nr_hugepagesパラメタの指定値を変更した場合，サーバ定義のadb_sys_memory_limitオペランドの指定値も変更してください。

HADBサーバを開始する

adbstartコマンドを実行して，HADBサーバを開始してください。

メモ

サーバ定義のadb_sys_shm_huge_page_sizeオペランド，adb_sys_memory_limitオペランドについては，「7.2.2　性能に関するオペランド（set形式）」のadb_sys_shm_huge_page_sizeオペランド，adb_sys_memory_limitオペランドを参照してください。

14.1.5　SQL文の実行待ち状態の発生防止

ここでは，サーバ定義のadb_sys_rthd_numオペランドに指定した処理リアルスレッド数の見直しによる処理性能の向上について説明します。

指定した処理リアルスレッド数が少ない場合，SQL文の実行待ち状態が発生することがあります。SQL文の実行待ち状態が発生すると，SQL文の処理に時間が掛かるおそれがあるため，指定した処理リアルスレッド数が適切かどうかを確認してください。

手順

SQL文の実行待ち状態を確認する

adbstatコマンドを実行して出力される「HADBサーバの統計情報」のうち，次に示す情報を確認してください。

SQL_execute_wait_total_time（SQL文の実行待ち状態の合計時間）

SQL_execute_wait_cnt（SQL文の実行待ち状態の発生回数）

SQL_execute_wait_total_timeおよびSQL_execute_wait_cntに出力された値が，どちらも0でない場合，SQL文の実行待ち状態が発生しています。この場合，adb_sys_rthd_numオペランドの指定値を大きくすることで，SQL文の実行待ち状態が発生しなくなり，処理性能が向上することがあります。

HADBサーバを終了する

adbstopコマンドを実行して，HADBサーバを終了してください。

サーバ定義を変更する

サーバ定義のadb_sys_rthd_numオペランドの指定値を大きくして，HADBサーバが使用する処理リアルスレッド数を多くしてください。

重要

adb_sys_rthd_numオペランドの指定値を変更した場合，必ずHADBサーバのメモリ所要量を再見積もりしてください。HADBサーバのメモリ所要量の見積もりについては，「6.3　HADBサーバのメモリ所要量の見積もり」を参照してください。

HADBサーバを開始する

adbstartコマンドを実行して，HADBサーバを開始してください。

メモ

サーバ定義のadb_sys_rthd_numオペランドについては，「7.2.2　性能に関するオペランド（set形式）」のadb_sys_rthd_numオペランドを参照してください。

14.1.6　SQL文の処理時間の短縮

ここでは，サーバ定義およびクライアント定義のadb_sql_exe_max_rthd_numオペランドに指定した最大SQL処理リアルスレッド数の見直しによる処理性能の向上について説明します。

指定した最大SQL処理リアルスレッド数が少ない場合，SQL文の実行時に使用される処理リアルスレッドの数が少なくなるため，SQL文の処理に時間が掛かるおそれがあります。指定した最大SQL処理リアルスレッド数が適切かどうかを確認してください。

(1)　検索系SQLの処理時間を短縮する方法

検索系SQL（SELECT文，COPY文）の処理時間を短縮する手順を次に示します。

手順

検索系SQLの実行時間を確認する

adbstatコマンドを実行して出力される「コネクションの稼働情報」のうち，次に示す情報を確認してください。

SELECT_total_time（SELECT文の実行時間）

COPY_total_time（COPY文の実行時間）

adb_sql_exe_max_rthd_numオペランドの指定値を見直す

手順1.で確認したSELECT_total_timeまたはCOPY_total_timeに出力された値が大きい場合，SQL文の処理に時間が掛かっているおそれがあります。この場合，サーバ定義およびクライアント定義のadb_sql_exe_max_rthd_numオペランドの指定値を大きくすることで，処理性能が向上することがあります。

重要

クライアント定義のadb_sql_exe_max_rthd_numオペランドと，サーバ定義のadb_sql_exe_max_rthd_numオペランドの両方の指定値を確認してください。クライアント定義の指定値だけを大きくした結果，クライアント定義の指定値がサーバ定義の指定値を超えた場合，サーバ定義の指定値が適用されます（変更後のクライアント定義の指定値が適用されません）。該当する場合は，サーバ定義とクライアント定義の両方のadb_sql_exe_max_rthd_numオペランドの指定値を大きくしてください。

adb_sql_exe_max_rthd_numオペランドの指定値を大きくした場合は，サーバ定義のadb_sys_rthd_numオペランドの指定値も大きくしてください。adb_sql_exe_max_rthd_numオペランドの指定値だけを大きくすると，SQL文の実行待ち状態が発生するおそれがあります。

adb_sql_exe_max_rthd_numオペランドおよびadb_sys_rthd_numオペランドの指定値を変更した場合，必ずHADBサーバのメモリ所要量を再見積もりしてください。HADBサーバのメモリ所要量の見積もりについては，「6.3　HADBサーバのメモリ所要量の見積もり」を参照してください。

HADBサーバを終了する

adbstopコマンドを実行して，HADBサーバを終了してください。

サーバ定義およびクライアント定義を変更する

次のオペランドの指定値を大きくしてください。

サーバ定義およびクライアント定義のadb_sql_exe_max_rthd_numオペランド

サーバ定義のadb_sys_rthd_numオペランド

HADBサーバを開始する

adbstartコマンドを実行して，HADBサーバを開始してください。

メモ

サーバ定義のadb_sql_exe_max_rthd_numオペランド，adb_sys_rthd_numオペランドについては，「7.2.2　性能に関するオペランド（set形式）」のadb_sql_exe_max_rthd_numオペランド，adb_sys_rthd_numオペランドを参照してください。

クライアント定義のadb_sql_exe_max_rthd_numオペランドについては，マニュアルHADB　AP開発ガイドの性能に関するオペランドを参照してください。

(2)　定義系SQLと操作系SQLの処理時間を短縮する方法

定義系SQL，および操作系SQLの処理時間を短縮する方法について説明します。

対象の定義系SQL，および操作系SQLを次に示します。

定義系SQL

ALTER TABLE文（アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更する場合）

DROP TABLE文

DROP INDEX文

DROP USER文

DROP SCHEMA文

REVOKE文（スキーマ操作権限の取り消し）

操作系SQL

PURGE CHUNK文

TRUNCATE TABLE文

定義系SQL，および操作系SQLの処理時間を短縮する手順を次に示します。

手順

DBエリアファイル数を確認する

adbdbstatusコマンドを実行して出力される「DBエリアのサマリ情報」のうち，次に示す情報を確認してください。

Number_of_files（DBエリアファイル数）

なお，確認するDBエリアは，SQL文の対象となる表およびインデクスが格納されているDBエリアになります。そのDBエリアを構成するDBエリアファイル数のうち，最も大きい数を確認してください。

adb_sql_exe_max_rthd_numオペランドの指定値を見直す

手順1.で確認したNumber_of_filesに出力された各DBエリアのDBエリアファイル数のうち，最も大きいDBエリアファイル数と，adb_sql_exe_max_rthd_numオペランドの指定値を比較してください。DBエリアファイル数の方が大きい場合は，SQL文の処理に時間が掛かっているおそれがあります。この場合，adb_sql_exe_max_rthd_numオペランドの指定値を大きくして，DBエリアファイル数※と同じ値にしてください。処理性能が向上することがあります。

注※

クラウドストレージ機能を使用している場合は，「DBエリアファイル数×64」としてください。

重要

クライアント定義のadb_sql_exe_max_rthd_numオペランドと，サーバ定義のadb_sql_exe_max_rthd_numオペランドの両方の指定値を確認してください。クライアント定義の指定値だけを大きくした結果，クライアント定義の指定値がサーバ定義の指定値を超えた場合，サーバ定義の指定値が適用されます（変更後のクライアント定義の指定値が適用されません）。該当する場合は，サーバ定義とクライアント定義の両方のadb_sql_exe_max_rthd_numオペランドの指定値を大きくしてください。

adb_sql_exe_max_rthd_numオペランドの指定値を大きくした場合，SQL文の実行待ち状態が発生するおそれがあるため，あわせてサーバ定義のadb_sys_rthd_numオペランドの指定値も大きくしてください。

adb_sql_exe_max_rthd_numオペランドおよびadb_sys_rthd_numオペランドの指定値を変更した場合，必ずHADBサーバのメモリ所要量を再見積もりしてください。HADBサーバのメモリ所要量の見積もりについては，「6.3　HADBサーバのメモリ所要量の見積もり」を参照してください。

HADBサーバを終了する

adbstopコマンドを実行して，HADBサーバを終了してください。

サーバ定義およびクライアント定義を変更する

次のオペランドの指定値を大きくしてください。

サーバ定義およびクライアント定義のadb_sql_exe_max_rthd_numオペランド

サーバ定義のadb_sys_rthd_numオペランド

HADBサーバを開始する

adbstartコマンドを実行して，HADBサーバを開始してください。

メモ

サーバ定義のadb_sql_exe_max_rthd_numオペランド，adb_sys_rthd_numオペランドについては，「7.2.2　性能に関するオペランド（set形式）」のadb_sql_exe_max_rthd_numオペランド，adb_sys_rthd_numオペランドを参照してください。

クライアント定義のadb_sql_exe_max_rthd_numオペランドについては，マニュアルHADB　AP開発ガイドの性能に関するオペランドを参照してください。

14.1.7　ユーザログバッファ面数の拡張

ここでは，サーバ定義のadb_log_usrbuf_numオペランドの見直しによる処理性能の向上について説明します。

ユーザログバッファ面数が満杯となった場合，ユーザログバッファからユーザログファイルに，ユーザログが掃き出されます。ユーザログバッファの掃き出し時に，ユーザログファイルへのI/Oが発生するため，更新性能が低下するおそれがあります。そのため，確保するユーザログバッファ面数が適切かどうかを確認してください。

手順

ユーザログバッファの満杯による掃き出し回数を確認する

adbstatコマンドを実行して出力される情報のうち，次に示す情報を確認してください。

Log_usrbuf_out_cnt（ユーザログバッファの満杯による掃き出し回数）

メモ

adbstatコマンドについては，マニュアルHADB　コマンドリファレンスのadbstat（HADBサーバの統計解析）を参照してください。

adb_log_usrbuf_numオペランドの指定値を見直す

手順1.で確認したLog_usrbuf_out_cntに出力された値が1以上の場合，ユーザログバッファの掃き出しが発生しています。この場合，サーバ定義のadb_log_usrbuf_numオペランドの指定値を大きくして，ユーザログバッファ面数を拡張してください。ユーザログバッファ面数を拡張することで，更新処理時に，ユーザログバッファの満杯による掃き出しが発生しなくなります。

重要

ユーザログバッファ面数を拡張した場合，HADBサーバ開始時のプロセス共通メモリの所要量が増加します。「6.3.3　HADBサーバ開始時のメモリ所要量の求め方」の「(3)　プロセス共通メモリの所要量の求め方（HADBサーバ開始時）」の「(h)　変数RECCTLの求め方」を参照して，再見積もりをしてください。

HADBサーバを終了する

adbstopコマンドを実行して，HADBサーバを終了してください。

サーバ定義を変更する

サーバ定義のadb_log_usrbuf_numオペランドの指定値を大きくしてください。

HADBサーバを開始する

adbstartコマンドを実行して，HADBサーバを開始してください。

メモ

サーバ定義のadb_log_usrbuf_numオペランドについては，「7.2.3　システムログに関するオペランド（set形式）」のadb_log_usrbuf_numオペランドを参照してください。

14.1.8　ユーザログファイルの初期化容量の拡張

ここでは，サーバ定義のadb_log_usrfile_sizeオペランドの見直しによる処理性能の向上について説明します。

ユーザログの増加によってユーザログファイルの容量が初期化した容量を超えた場合，ユーザログファイルは自動的に拡張されます。ユーザログファイルの拡張処理は，更新性能への影響が大きいため，ユーザログファイルの初期化容量が適切かどうかを確認してください。

手順

ユーザログファイルの最大使用量を確認する

adbstatコマンドを実行して出力される情報のうち，次に示す情報を確認してください。

Log_usrfile_max_size（ユーザログファイルの最大使用量）

メモ

adbstatコマンドについては，マニュアルHADB　コマンドリファレンスのadbstat（HADBサーバの統計解析）を参照してください。

adb_log_usrfile_sizeオペランドの指定値を見直す

手順1.で確認したLog_usrfile_max_sizeに出力された値が，サーバ定義のadb_log_usrfile_sizeオペランドのユーザログファイルの初期化容量の指定値よりも大きい場合，ユーザログファイルの拡張が発生しています。この場合，adb_log_usrfile_sizeオペランドのユーザログファイルの初期化容量を，Log_usrfile_max_sizeに出力された値を目安に大きくしてください。ユーザログファイルの初期化容量を大きくすることで，更新処理時にユーザログファイルの拡張が発生しなくなります。

重要

ユーザログファイルの初期化容量を大きくする場合，「6.12　システムログファイルの容量見積もり」を参照して，再見積もりをしてください。

HADBサーバを終了する

adbstopコマンドを実行して，HADBサーバを終了してください。

サーバ定義を変更する

サーバ定義のadb_log_usrfile_sizeオペランドのユーザログファイルの初期化容量の指定値を大きくしてください。

HADBサーバを開始する

adbstartコマンドを実行して，HADBサーバを開始してください。

メモ

サーバ定義のadb_log_usrfile_sizeオペランドについては，「7.2.3　システムログに関するオペランド（set形式）」のadb_log_usrfile_sizeオペランドを参照してください。

14.1.9　ユーザログファイルの縮小化容量の見直し

ここでは，サーバ定義のadb_log_usrfile_sizeオペランドに指定したユーザログファイルの容量の縮小契機の見直しによる処理性能の向上について説明します。

更新トランザクションの決着時，更新トランザクションが使用していたユーザログファイルの容量が，ユーザログファイルの容量の縮小契機に指定した容量を超えている場合，HADBサーバはユーザログファイルを初期化容量に縮小します。ユーザログファイルを初期化容量に縮小する回数が増加すると，更新性能に影響を及ぼすおそれがあるため，次に示す手順でadb_log_usrfile_sizeオペランドの指定値を見直してください。

手順

ユーザログファイルが初期化容量に縮小された回数を確認する

adbstatコマンドを実行して出力される情報のうち，次に示す情報を確認してください。

Log_usrfile_reduced_cnt（ユーザログファイルが初期化容量に縮小された回数）

メモ

adbstatコマンドについては，マニュアルHADB　コマンドリファレンスのadbstat（HADBサーバの統計解析）を参照してください。

adb_log_usrfile_sizeオペランドの指定値を見直す

手順1.で確認したLog_usrfile_reduced_cntに出力された値が大きい場合，ユーザログファイルの初期化容量への縮小回数が多いことを意味しています。この場合，サーバ定義のadb_log_usrfile_sizeオペランドの次の指定値を大きくすることを推奨します。

ユーザログファイルの初期化容量

ユーザログファイルの容量の縮小契機

上記の指定値を大きくすると，ユーザログファイルの初期化容量への縮小回数が減ります。

ヒント

adbstatコマンドの実行結果のLog_usrfile_max_sizeに出力された値が，定常運用中のユーザログファイルの最大使用量になります。この値に，安全係数として1.5～2倍した値をadb_log_usrfile_sizeオペランドのユーザログファイルの容量の縮小契機に指定することを推奨します。これによって，非定期運用などでデータベースの大量更新を行ったときに限り，ユーザログファイルの縮小処理が動作するようにできます。

HADBサーバを終了する

adbstopコマンドを実行して，HADBサーバを終了してください。

サーバ定義を変更する

サーバ定義のadb_log_usrfile_sizeオペランドの次の指定値を大きくしてください。

ユーザログファイルの初期化容量

ユーザログファイルの容量の縮小契機

HADBサーバを開始する

adbstartコマンドを実行して，HADBサーバを開始してください。

メモ

サーバ定義のadb_log_usrfile_sizeオペランドについては，「7.2.3　システムログに関するオペランド（set形式）」のadb_log_usrfile_sizeオペランドを参照してください。

14.1.10　DBエリアの自動増分の発生防止

ここでは，DBエリアの自動増分の発生による更新性能の低下を防ぐ方法について説明します。

データ用DBエリアファイル，ディクショナリ用DBエリアファイル，およびシステム表用DBエリアファイルがレギュラーファイルで構成されている場合に，DBエリアの自動増分が発生すると，DBエリアファイル拡張時の更新処理の性能が低下するおそれがあります。そのため，対象のDBエリアで自動増分が発生しているかどうかを確認してください。

adbstatコマンドを実行して出力される情報のうち，次に示す情報を確認してください。

DBarea_extension_cnt（DBエリアが自動増分した回数）

メモ

adbstatコマンドについては，マニュアルHADB　コマンドリファレンスのadbstat（HADBサーバの統計解析）を参照してください。

DBarea_extension_cntに出力された値が1以上の場合，DBエリアの自動増分が発生しています。自動増分によるDBエリアファイル拡張時の更新性能の低下を防ぎたい場合は，データ用DBエリアファイル，ディクショナリ用DBエリアファイル，およびシステム表用DBエリアファイルをレギュラーファイルからブロックスペシャルファイルに変更して，DBエリアの自動増分が発生しないようにしてください。データ用DBエリアファイル，ディクショナリ用DBエリアファイル，およびシステム表用DBエリアファイルをブロックスペシャルファイルに変更する場合，次のどちらかの方法で対象のDBエリアの容量を求めて，必要なサイズを割り当てたブロックスペシャルファイルを準備してください。

対象のDBエリアの容量見積もりを実施する

データ用DBエリアの容量は，「5.8　データ用DBエリアの容量見積もり」を参照して求めてください。

ディクショナリ用DBエリアの容量は，「5.11　ディクショナリ用DBエリアの容量見積もり」を参照して求めてください。

システム表用DBエリアの容量は，「5.12　システム表用DBエリアの容量見積もり」を参照して求めてください。

adbdbstatusコマンドを実行する

マニュアルHADB　コマンドリファレンスのadbdbstatus（データベースの状態解析）の使用例のデータベース全体の使用量を調べる（DBエリアのサマリ情報の出力）を参照して，対象のDBエリアの使用量を求めてください。

必要なサイズを割り当てたブロックスペシャルファイルを準備したあとで，対象のDBエリアファイルをブロックスペシャルファイルに変更します。変更する方法については，「11.13.5　データ用DBエリアファイルの格納場所を変更する方法」の「(1)　データ用DBエリアファイルをレギュラーファイルからブロックスペシャルファイルに変更する」を参照してください。

14.1.11　作業表用DBエリアのファイル構成の変更

ここでは，作業表用DBエリアの自動増分の発生による，SQL文の処理性能の低下を防ぐ方法について説明します。

作業表用DBエリアファイルがレギュラーファイルで構成されている場合，まず，adbinitコマンドの実行時に，最も小さい容量で作業表用DBエリアが作成されます。そのあとで，作業表を作成するSQL文を実行したときに，DBエリアの自動増分によって，作業表用DBエリアに必要な容量が確保されます。

作業表用DBエリアの自動増分が発生すると，作業表を作成するSQL文の処理性能に影響します。自動増分の発生によって，SQL文の処理性能が低下することを防ぎたい場合は，作業表用DBエリアファイルをブロックスペシャルファイルで構成することを検討してください。

adbstatコマンドを実行して出力される「HADBサーバの統計情報」のうち，次に示す情報を確認してください。

Wrktbl_page_use_max（最大割り当て作業表ページ数）

Wrktbl_page_use_maxに出力された値を，「5.9　作業表用DBエリアの容量見積もり」の計算式中の変数WRK_PAGE_NUMに代入して，作業表用DBエリアの容量を見積もってください。見積もり結果を基に，必要なサイズを割り当てたブロックスペシャルファイルを準備してください。

必要なサイズを割り当てたブロックスペシャルファイルを準備したあとで，作業表用DBエリアファイルをブロックスペシャルファイルに変更します。変更する方法については，「11.14.1　作業表用DBエリアファイルの格納場所を変更する方法」を参照してください。

14.2　バッファの見直しによるSQL文の実行時間の短縮に関するチューニング

ここでは，次に示すバッファに関するオペランドの指定値の見直しによる処理性能の向上について説明します。

サーバ定義のadbbuffオペランド

サーバ定義のadb_dbbuff_wrktbl_glb_blk_numオペランド

クライアント定義のadb_dbbuff_wrktbl_clt_blk_numオペランド

なお，各オペランドの指定値を見直す場合，必ずメモリ所要量を再見積もりしてください。

14.2.1　チューニングを行う前に確認すること

ここでは，SQL文やコマンドの実行時間を短縮するチューニングを行う前に確認する内容について説明します。次の2点を見直してください。

実表やインデクスを格納するデータ用DBエリアの見直し

次の状態であるかどうかを確認してください。

1つのデータ用DBエリアには，1つの実表だけが格納されている

対象のデータ用DBエリアに格納されている実表を調べる場合は，「付録B.24　ディクショナリ表の検索」の「(15)　DBエリアに格納されている表の表名を調べる場合」を参照してください。

1つのデータ用DBエリアには，1つのインデクスだけが格納されている

対象のデータ用DBエリアに格納されているインデクスを調べる場合は，「付録B.24　ディクショナリ表の検索」の「(16)　DBエリアに格納されているインデクスのインデクス名を調べる場合」を参照してください。

「5.6.1　データ用DBエリアを設計する際の考慮点」のとおり，1つのデータ用DBエリアに，複数の実表や複数のインデクスが格納されていると，I/Oが集中して性能が低下するおそれがあります。特に，1つのデータ用DBエリアに，ローストア表とカラムストア表を混在して格納しないようにしてください。そのため，1つのデータ用DBエリアには，1つの実表だけ，または1つのインデクスだけを格納するようにしてください。

実表やインデクスが格納されているデータ用DBエリアを見直す場合は，「11.1.18　実表が格納されているデータ用DBエリアを変更する方法」および「11.4.8　インデクスが格納されているデータ用DBエリアを変更する方法」を参照してください。

データ用DBエリアに割り当てるグローバルバッファの見直し

1つのデータ用DBエリアに，専用のグローバルバッファを割り当てているかどうかを確認してください。対象のデータ用DBエリアに割り当てているグローバルバッファを確認する場合は，adbls -d gbufコマンドを使用してください。adbls -d gbufコマンドについては，マニュアルHADB　コマンドリファレンスのadbls -d gbuf（グローバルバッファの情報表示）を参照してください。

1つのグローバルバッファを複数のデータ用DBエリアに割り当てている場合は，性能が低下するおそれがあります。そのため，1つのグローバルバッファを1つのデータ用DBエリアだけに割り当てるようにしてください。グローバルバッファを見直す場合は，サーバ定義adbbuffオペランドの指定値を変更してください。サーバ定義adbbuffオペランドについては，「7.2.18　グローバルバッファに関するオペランドおよびオプション（コマンド形式）」を参照してください。サーバ定義を変更する方法については，「8.5.2　サーバ定義の変更方法」を参照してください。

14.2.2　SQL文の実行時間を短縮する方法

adbbuffオペランドの指定値を見直すことで，SQL文の実行時間を短縮できる場合があります。

adbstatコマンドで出力される情報によって，チューニング方法が異なります。

グローバルバッファの統計情報

SQL文の統計情報

まずは，グローバルバッファの統計情報を確認して，チューニングを行ってください。そのあとで，特定のSQL文の実行時間を短縮したい場合は，SQL文の統計情報を確認して，チューニングを行ってください。

(1)　グローバルバッファの統計情報によるSQL文の実行時間の短縮

手順

グローバルバッファのヒット率を確認する

adbstatコマンドを実行して出力される「グローバルバッファの統計情報」のうち，次に示す情報を確認してください。

DBbuff_page_hit_rate（グローバルバッファのページヒット率）

グローバルバッファの割り当て方を見直す

手順1.で確認したDBbuff_page_hit_rateに出力された値が50以下の場合，次の3点を見直してください。

グローバルバッファのページ数を大きくする

DBエリアに割り当てるグローバルバッファのページ数が少な過ぎることが考えられます。adbbuffオペランドの-pオプションに指定した値を大きくしてください。

専用のグローバルバッファを割り当てる

複数のDBエリアに対して，1つのグローバルバッファを割り当てている場合，adbbuffオペランドで，各DBエリアに専用のグローバルバッファを割り当ててください。

テーブルスキャンバッファを確保する

テーブルスキャンを実行するSQL文がある場合は，adbbuffオペランドの-vオプションを指定して，テーブルスキャンバッファを確保してください。

HADBサーバを終了する

adbstopコマンドを実行して，HADBサーバを終了してください。

サーバ定義を変更する

サーバ定義のadbbuffオペランドの指定を，手順2.で決めた方針で変更してください。

HADBサーバを開始する

adbstartコマンドを実行して，HADBサーバを開始してください。

メモ

サーバ定義のadbbuffオペランドについては，「7.2.18　グローバルバッファに関するオペランドおよびオプション（コマンド形式）」のadbbuffオペランドを参照してください。

(2)　SQL文の統計情報によるSQL文の実行時間の短縮

手順

グローバルバッファのヒット率を確認する

adbstatコマンドを実行して出力される「SQL文の統計情報」のうち，次に示す情報を確認してください。

DBbuff_page_hit_rate（グローバルバッファのページヒット率）

グローバルバッファの割り当て方を見直す

手順1.で確認したDBbuff_page_hit_rateに出力された値が50以下の場合，次の3点を見直してください。

グローバルバッファのページ数を大きくする

DBエリアに割り当てるグローバルバッファのページ数が少な過ぎることが考えられます。adbbuffオペランドの-pオプションに指定した値を大きくしてください。

専用のグローバルバッファを割り当てる

複数のDBエリアに対して，1つのグローバルバッファを割り当てている場合，「SQL文の統計情報」のDBbuff_page_request_cnt（グローバルバッファのページ要求回数）を確認してください。そして，ページ要求回数が多いDBエリアに，adbbuffオペランドで専用のグローバルバッファを割り当ててください。

テーブルスキャンバッファを確保する

テーブルスキャンを実行するSQL文がある場合は，adbbuffオペランドの-vオプションを指定して，テーブルスキャンバッファを確保してください。

HADBサーバを終了する

adbstopコマンドを実行して，HADBサーバを終了してください。

サーバ定義を変更する

サーバ定義のadbbuffオペランドの指定を，手順2.で決めた方針で変更してください。

HADBサーバを開始する

adbstartコマンドを実行して，HADBサーバを開始してください。

メモ

サーバ定義のadbbuffオペランドについては，「7.2.18　グローバルバッファに関するオペランドおよびオプション（コマンド形式）」のadbbuffオペランドを参照してください。

14.2.3　グローバル作業表を作成するSQL文の実行時間を短縮する方法

グローバル作業表を作成するSQL文を実行する場合，グローバル作業表用のグローバルバッファのページ数を増やすことで，SQL文の実行時間を短縮できることがあります。

グローバル作業表を作成するSQL文については，マニュアルHADB　AP開発ガイドのAPの性能向上に関する設計の作業表が作成されるSQLを実行する際の考慮点のSQLを実行した場合に作成される作業表についてを参照してください。

adbstatコマンドで出力される情報によって，チューニング方法が異なります。

グローバルバッファの統計情報

SQL文の統計情報

まずは，グローバルバッファの統計情報を確認して，チューニングを行ってください。そのあとで，特定のSQL文の実行時間を短縮したい場合は，SQL文の統計情報を確認して，チューニングを行ってください。

(1)　グローバルバッファの統計情報によるグローバル作業表を作成するSQL文の実行時間の短縮

手順

グローバルバッファからのファイル書き込み回数を確認する

adbstatコマンドを実行して出力されるグローバルバッファの統計情報のうち，まず，次に示す情報を確認してください。

DBbuff_name（グローバルバッファ名）

DBbuff_nameがADBWRKとなっているグローバルバッファについて，次に示す情報を確認してください。

DBbuff_page_write_cnt（グローバルバッファからのファイル書き込み回数）

DBbuff_page_write_cntに出力された値が1以上の場合，グローバルバッファからファイルへの書き込みが発生しています。該当する場合は，手順2.に進んでください。

HADBサーバを終了する

adbstopコマンドを実行して，HADBサーバを終了してください。

サーバ定義を変更する

サーバ定義のadb_dbbuff_wrktbl_glb_blk_numオペランドの指定値を大きくしてください。

HADBサーバを開始する

adbstartコマンドを実行して，HADBサーバを開始してください。

グローバル作業表を作成するSQL文を再実行する

グローバル作業表を作成するSQL文を再実行したあとに，手順1.を実施して，DBbuff_page_write_cntに出力された値が減っているかどうかを確認してください。

手順1.～手順5.を繰り返す

手順1.～手順5.を繰り返して，DBbuff_page_write_cntに出力された値が0になるまで調整すると，グローバル作業表を作成するSQL文の実行時間を短縮できることがあります。

メモ

サーバ定義のadb_dbbuff_wrktbl_glb_blk_numオペランドについては，「7.2.2　性能に関するオペランド（set形式）」のadb_dbbuff_wrktbl_glb_blk_numオペランドを参照してください。

(2)　SQL文の統計情報によるグローバル作業表を作成するSQL文の実行時間の短縮

手順

グローバルバッファからのファイル書き込み回数を確認する

adbstatコマンドを実行して出力される「SQL文の統計情報」のうち，まず，次に示す情報を確認してください。

DBbuff_name（グローバルバッファ名）

DBbuff_nameがADBWRKとなっているグローバルバッファについて，次に示す情報を確認してください。

DBbuff_page_write_cnt（グローバルバッファからのファイル書き込み回数）

DBbuff_page_put_cnt（グローバルバッファへの書き込み回数）

グローバルバッファからファイルへの書き込みが多発していないか確認する

手順1.で確認したDBbuff_page_write_cntとDBbuff_page_put_cntの関係が，次に示す計算式を満たしている場合，グローバルバッファからファイルへの書き込みが多発しているおそれがあります。

計算式

DBbuff_page_write_cntに出力された値 ＞ DBbuff_page_put_cntに出力された値÷2

計算式を満たしている場合，手順3.に進んでください。

HADBサーバを終了する

adbstopコマンドを実行して，HADBサーバを終了してください。

サーバ定義を変更する

サーバ定義のadb_dbbuff_wrktbl_glb_blk_numオペランドの指定値を大きくしてください。

HADBサーバを開始する

adbstartコマンドを実行して，HADBサーバを開始してください。

グローバル作業表を作成するSQL文を再実行する

グローバル作業表を作成するSQL文を再実行したあとに，手順1.を実施して，DBbuff_page_write_cntに出力された値が，計算式を満たさないことを確認してください。

手順1.～手順6.を繰り返す

手順1.～手順6.を繰り返して，DBbuff_page_write_cntに出力された値が計算式を満たさなくなるまで調整すると，グローバル作業表を作成するSQL文の実行時間を短縮できることがあります。

メモ

サーバ定義のadb_dbbuff_wrktbl_glb_blk_numオペランドについては，「7.2.2　性能に関するオペランド（set形式）」のadb_dbbuff_wrktbl_glb_blk_numオペランドを参照してください。

14.2.4　ローカル作業表を作成するSQL文の実行時間を短縮する方法

ローカル作業表を作成するSQL文を実行する場合，ローカル作業表用バッファのページ数を増やすことで，SQL文の実行時間を短縮できることがあります。

ローカル作業表を作成するSQL文については，マニュアルHADB　AP開発ガイドのAPの性能向上に関する設計の作業表が作成されるSQLを実行する際の考慮点のSQLを実行した場合に作成される作業表についてを参照してください。

adbstatコマンドで出力される情報によって，チューニング方法が異なります。

コネクションの稼働情報

SQL文の統計情報

まずは，コネクションの稼働情報を確認して，チューニングを行ってください。そのあとで，特定のSQL文の実行時間を短縮したい場合は，SQL文の統計情報を確認して，チューニングを行ってください。

メモ

クライアント定義adb_dbbuff_wrktbl_clt_blk_numオペランドを指定していないコネクションの場合は，HADBサーバの稼働中にadbmodbuffコマンドで，サーバ定義adb_dbbuff_wrktbl_clt_blk_numオペランドで指定したローカル作業表用バッファのページ数を変更できます。「11.15.1　ローカル作業表用バッファを変更する方法」を参照してください。

(1)　コネクションの稼働情報によるローカル作業表を作成するSQL文の実行時間の短縮

手順

ローカル作業表用バッファからのファイル書き込み回数を確認する

adbstatコマンドを実行して出力される「コネクションの稼働情報」のうち，次に示す情報を確認してください。

DBbuff_wrktbl_clt_write_cnt（ローカル作業表用バッファからのファイル書き込み回数）

クライアント定義を変更する

手順1.で確認したDBbuff_wrktbl_clt_write_cntに出力された値が1以上の場合，ローカル作業表用バッファからファイルへの書き込みが発生しています。クライアント定義のadb_dbbuff_wrktbl_clt_blk_numオペランドの指定値を大きくしてください。

クライアント定義を変更する場合は，マニュアルHADB　AP開発ガイドのクライアント定義変更時の注意事項で説明している手順に従ってクライアント定義を変更してください。

ローカル作業表を作成するSQL文を再実行する

ローカル作業表を作成するSQL文を再実行したあとに，手順1.を実施して，DBbuff_wrktbl_clt_write_cntに出力された値が減っているかどうかを確認してください。

手順1.～手順3.を繰り返す

手順1.～手順3.を繰り返して，DBbuff_wrktbl_clt_write_cntに出力された値が0になるまで調整すると，ローカル作業表を作成するSQL文の実行時間を短縮できることがあります。

メモ

クライアント定義のadb_dbbuff_wrktbl_clt_blk_numオペランドについては，マニュアルHADB　AP開発ガイドの性能に関するオペランドを参照してください。

(2)　SQL文の統計情報によるローカル作業表を作成するSQL文の実行時間の短縮

手順

ローカル作業表用バッファからのファイル書き込み回数を確認する

adbstatコマンドを実行して出力される「SQL文の統計情報」のうち，次に示す情報を確認してください。

DBbuff_wrktbl_clt_write_cnt（ローカル作業表用バッファからのファイル書き込み回数）

DBbuff_wrktbl_clt_put_cnt（ローカル作業表用バッファへの書き込み回数）

クライアント定義を変更する

手順1.で確認したDBbuff_wrktbl_clt_write_cntとDBbuff_wrktbl_clt_put_cntの情報の関係が，次に示す計算式を満たしている場合，ローカル作業表用バッファからファイルへの書き込みが多発しているおそれがあります。

計算式

DBbuff_wrktbl_clt_write_cntに出力された値 ＞ DBbuff_wrktbl_clt_put_cntに出力された値÷2

計算式を満たしている場合，クライアント定義のadb_dbbuff_wrktbl_clt_blk_numオペランドの指定値を大きくしてください。

クライアント定義を変更する場合は，マニュアルHADB　AP開発ガイドのクライアント定義変更時の注意事項で説明している手順に従ってクライアント定義を変更してください。

ローカル作業表を作成するSQL文を再実行する

ローカル作業表を作成するSQL文を再実行したあとに，手順1.を実施して，DBbuff_wrktbl_clt_write_cntに出力された値が，計算式を満たさないことを確認してください。

手順1.～手順3.を繰り返す

手順1.～手順3.を繰り返して，DBbuff_wrktbl_clt_write_cntに出力された値が計算式を満たさなくなるまで調整すると，ローカル作業表を作成するSQL文の実行時間を短縮できることがあります。

メモ

クライアント定義のadb_dbbuff_wrktbl_clt_blk_numオペランドについては，マニュアルHADB　AP開発ガイドの性能に関するオペランドを参照してください。

14.2.5　テーブルスキャンを実行するSQL文の実行時間を短縮する方法

adbbuffオペランドの-vオプションを指定した場合に，-vオプションの指定値を見直すことで，テーブルスキャンを実行するSQL文の実行時間を短縮できることがあります。

adbstatコマンドで出力される情報によって，チューニング方法が異なります。

グローバルバッファの統計情報

SQL文の統計情報

最初に，グローバルバッファの統計情報を確認して，チューニングを行ってください。そのあとで，特定のSQL文の実行時間を短縮したい場合は，SQL文の統計情報を確認して，チューニングを行ってください。

(1)　グローバルバッファの統計情報によるテーブルスキャンを実行するSQL文の実行時間の短縮

手順

テーブルスキャンバッファでバッファ不足が発生した回数，およびテーブルスキャンバッファのページヒット率を確認する

adbstatコマンドを実行して出力される「グローバルバッファの統計情報」のうち，次に示す情報を確認してください。

DBbuff_tblscan_failed_cnt（テーブルスキャンバッファでバッファ不足が発生した回数）

DBbuff_tblscan_hit_rate（テーブルスキャンバッファのページヒット率）

DBbuff_tblscan_failed_cntに出力された値が1以上の場合で，かつDBbuff_tblscan_hit_rateに出力された値が低い場合，テーブルスキャンバッファの面数が不足しています。そのため，テーブルスキャン実行時にグローバルバッファでの読み込みが発生しています。該当する場合は，手順2.に進んでください。

HADBサーバを終了する

adbstopコマンドを実行して，HADBサーバを終了してください。

サーバ定義を変更する

サーバ定義のadbbuffオペランドの-vオプションの指定値に，サーバ定義のadb_sys_rthd_numオペランドの指定値分を加算してください。

HADBサーバを開始する

adbstartコマンドを実行して，HADBサーバを開始してください。

テーブルスキャンを実行するSQL文を再実行する

テーブルスキャンを実行するSQL文を再実行したあとに，手順1.を実施して，DBbuff_tblscan_failed_cntに出力された値が減っているかどうかを確認してください。また，DBbuff_tblscan_hit_rateに出力された値が増えているかどうかを確認してください。

手順1.～手順5.を繰り返す

手順1.～手順5.を繰り返して，DBbuff_tblscan_failed_cntに出力された値が0に近い値になるまで調整すると，DBbuff_tblscan_hit_rateに出力された値が増えてテーブルスキャンバッファのページヒット率が改善されます。そのため，テーブルスキャンを実行するSQL文の実行時間を短縮できる場合があります。

メモ

サーバ定義のadbbuffオペランドについては，「7.2.18　グローバルバッファに関するオペランドおよびオプション（コマンド形式）」のadbbuffオペランドを参照してください。

(2)　SQL文の統計情報によるテーブルスキャンを実行するSQL文の実行時間の短縮

手順

テーブルスキャンバッファでバッファ不足が発生した回数を確認する

adbstatコマンドを実行して出力される「SQL文の統計情報」のうち，次に示す情報を確認してください。

DBbuff_tblscan_failed_cnt（テーブルスキャンバッファでバッファ不足が発生した回数）

DBbuff_tblscan_insufficient_buff_num（テーブルスキャンバッファの不足バッファ面数）

DBbuff_tblscan_failed_cntに出力された値が1以上の場合，テーブルスキャンバッファの面数が不足しています。そのため，テーブルスキャン実行時にグローバルバッファでの読み込みが発生しています。該当する場合は，手順2.に進んでください。

HADBサーバを終了する

adbstopコマンドを実行して，HADBサーバを終了してください。

サーバ定義を変更する

サーバ定義のadbbuffオペランドの-vオプションの指定値に，DBbuff_tblscan_insufficient_buff_numに出力された値分を加算してください。

HADBサーバを開始する

adbstartコマンドを実行して，HADBサーバを開始してください。

テーブルスキャンを実行するSQL文を再実行する

テーブルスキャンを実行するSQL文の実行時間を短縮できる場合があります。

メモ

サーバ定義のadbbuffオペランドについては，「7.2.18　グローバルバッファに関するオペランドおよびオプション（コマンド形式）」のadbbuffオペランドを参照してください。

14.3　コマンドの実行時間の短縮に関するチューニング

ここでは，コマンドの実行時間を短縮する方法について説明します。

メモ

コマンドの実行時間を短縮するチューニングを行う前に，データ用DBエリアやグローバルバッファの見直しを行ってください。詳細については，「14.2.1　チューニングを行う前に確認すること」を参照してください。

14.3.1　adbimportコマンドの実行時間の短縮

adbimportコマンドのインポートオプションの性能に関するオプションに適切な値を指定することで，インポートの性能を向上させ，adbimportコマンドの実行時間を短縮できることがあります。

adbimportコマンドのインポートオプションの指定形式については，マニュアルHADB　コマンドリファレンスのadbimport（データのインポート）のadbimportコマンドの指定形式のインポートオプションの形式を参照してください。

14.3.2　adbidxrebuildコマンドの実行時間の短縮

ここでは，adbidxrebuildコマンドの実行時間を短縮する方法について説明します。

adbidxrebuildコマンドを実行する場合，サーバ定義adbbuffオペランドの-vオプションを指定することで，adbidxrebuildコマンドの実行時間を短縮できることがあります。-vオプションを指定しているときは，指定値を見直すことで，adbidxrebuildコマンドの実行時間を短縮できることがあります。

手順

-vオプションの指定値を見積もる

「7.2.18　グローバルバッファに関するオペランドおよびオプション（コマンド形式）」にあるサーバ定義のadbbuffオペランドの-vオプションに指定する値を見積もってください。その際，変数sql_rthd_numには，サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値ではなく，次の値を代入してください。

↓(インデクス再作成オプションadb_idxrebuild_rthd_numの指定値 －1)÷2↓

HADBサーバを終了する

adbstopコマンドを実行して，HADBサーバを終了してください。

サーバ定義を変更する

サーバ定義のadbbuffオペランドに-vオプションを追加するか，または-vオプションの指定値を変更してください。手順1.で見積もった値を-vオプションに指定します。

HADBサーバを開始する

adbstartコマンドを実行して，HADBサーバを開始してください。

adbidxrebuildコマンドを実行する

adbstatコマンドを実行して，グローバルバッファの統計情報を出力する

「14.2.5　テーブルスキャンを実行するSQL文の実行時間を短縮する方法」の「(1)　グローバルバッファの統計情報によるテーブルスキャンを実行するSQL文の実行時間の短縮」を参照して，adbstatコマンドを実行して出力される「グローバルバッファの統計情報」のDBbuff_tblscan_failed_cntに出力される値が0に近い値になるまで調整してください。調整することで，adbidxrebuildコマンドの実行時間を短縮できる場合があります。

なお，参照先の「テーブルスキャンを実行するSQL文」は，「adbidxrebuildコマンド」に読み替えてください。

14.3.3　adbgetcstコマンドの実行時間の短縮

ここでは，adbgetcstコマンドの実行時間を短縮する方法について説明します。

adbgetcstコマンドを実行する場合，サーバ定義adbbuffオペランドの-vオプションを指定することで，adbgetcstコマンドの実行時間を短縮できることがあります。-vオプションを指定しているときは，指定値を見直すことで，adbgetcstコマンドの実行時間を短縮できることがあります。

手順

-vオプションの指定値を見積もる

「7.2.18　グローバルバッファに関するオペランドおよびオプション（コマンド形式）」にあるサーバ定義のadbbuffオペランドの-vオプションに指定する値を見積もってください。その際，変数sql_rthd_numには，サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値ではなく，次の値を代入してください。

コスト情報収集オプションadb_getcst_rthd_numの指定値 －1

HADBサーバを終了する

adbstopコマンドを実行して，HADBサーバを終了してください。

サーバ定義を変更する

サーバ定義のadbbuffオペランドに-vオプションを追加するか，または-vオプションの指定値を変更してください。手順1.で見積もった値を-vオプションに指定します。

HADBサーバを開始する

adbstartコマンドを実行して，HADBサーバを開始してください。

adbgetcstコマンドを実行する

adbstatコマンドを実行して，グローバルバッファの統計情報を出力する

「14.2.5　テーブルスキャンを実行するSQL文の実行時間を短縮する方法」の「(1)　グローバルバッファの統計情報によるテーブルスキャンを実行するSQL文の実行時間の短縮」を参照して，adbstatコマンドを実行して出力される「グローバルバッファの統計情報」のDBbuff_tblscan_failed_cntに出力される値が0に近い値になるまで調整してください。調整することで，adbgetcstコマンドの実行時間を短縮できる場合があります。

なお，参照先の「テーブルスキャンを実行するSQL文」は，「adbgetcstコマンド」に読み替えてください。

14.3.4　adbexportコマンドの実行時間の短縮

ここでは，adbexportコマンドの実行時間を短縮する方法について説明します。

adbexportコマンドでSQL文の検索結果をエクスポートする場合，次に示す項目を確認することで，adbexportコマンドの実行時間を短縮できることがあります。

「14.2.2　SQL文の実行時間を短縮する方法」

「14.2.3　グローバル作業表を作成するSQL文の実行時間を短縮する方法」

「14.2.4　ローカル作業表を作成するSQL文の実行時間を短縮する方法」

参照先の「クライアント定義adb_dbbuff_wrktbl_clt_blk_numオペランドの指定値」は，「エクスポートオプションadb_export_wrktbl_blk_numの指定値」に読み替えてください。また，「ローカル作業表を作成するSQL文」は，「adbexportコマンド」に読み替えてください。

「14.5　ハッシュテーブル領域サイズの見直しによるSQL文の実行時間の短縮に関するチューニング」

「14.8　ハッシュフィルタ領域サイズの見直しによるSQL文の実行時間の短縮に関するチューニング」

上記の項目を参照して，チューニングしてください。

また，サーバ定義adbbuffオペランドの-vオプションを指定することで，adbexportコマンドの実行時間を短縮できることがあります。-vオプションを指定しているときは，指定値を見直すことで，adbexportコマンドの実行時間を短縮できることがあります。

手順

-vオプションの指定値を見積もる

「7.2.18　グローバルバッファに関するオペランドおよびオプション（コマンド形式）」にあるサーバ定義のadbbuffオペランドの-vオプションに指定する値を見積もってください。その際，変数sql_rthd_numには，サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値ではなく，次の値を代入してください。

↓(エクスポートオプションadb_export_rthd_numの指定値 －1)÷2↓

HADBサーバを終了する

adbstopコマンドを実行して，HADBサーバを終了してください。

サーバ定義を変更する

サーバ定義のadbbuffオペランドに-vオプションを追加するか，または-vオプションの指定値を変更してください。手順1.で見積もった値を-vオプションに指定します。

HADBサーバを開始する

adbstartコマンドを実行して，HADBサーバを開始してください。

adbexportコマンドを実行する

adbstatコマンドを実行して，グローバルバッファの統計情報を出力する

「14.2.5　テーブルスキャンを実行するSQL文の実行時間を短縮する方法」の「(1)　グローバルバッファの統計情報によるテーブルスキャンを実行するSQL文の実行時間の短縮」を参照して，adbstatコマンドを実行して出力される「グローバルバッファの統計情報」のDBbuff_tblscan_failed_cntに出力される値が0に近い値になるまで調整してください。調整することで，adbexportコマンドの実行時間を短縮できる場合があります。

なお，参照先の「テーブルスキャンを実行するSQL文」は，「adbexportコマンド」に読み替えてください。

14.3.5　adbmergechunkコマンドの実行時間の短縮

ここでは，adbmergechunkコマンドの実行時間を短縮する方法について説明します。

adbmergechunkコマンドを実行する場合，サーバ定義adbbuffオペランドの-vオプションを指定することで，adbmergechunkコマンドの実行時間を短縮できることがあります。-vオプションを指定しているときは，指定値を見直すことで，adbmergechunkコマンドの実行時間を短縮できることがあります。

手順

-vオプションの指定値を見積もる

「7.2.18　グローバルバッファに関するオペランドおよびオプション（コマンド形式）」にあるサーバ定義のadbbuffオペランドの-vオプションに指定する値を見積もってください。その際，変数sql_rthd_numには，サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値ではなく，次の値を代入してください。

↓(マージチャンクオプションadb_mergechunk_rthd_numの指定値 －1)÷2↓

HADBサーバを終了する

adbstopコマンドを実行して，HADBサーバを終了してください。

サーバ定義を変更する

サーバ定義のadbbuffオペランドに-vオプションを追加するか，または-vオプションの指定値を変更してください。手順1.で見積もった値を-vオプションに指定します。

HADBサーバを開始する

adbstartコマンドを実行して，HADBサーバを開始してください。

adbmergechunkコマンドを実行する

adbstatコマンドを実行して，グローバルバッファの統計情報を出力する

「14.2.5　テーブルスキャンを実行するSQL文の実行時間を短縮する方法」の「(1)　グローバルバッファの統計情報によるテーブルスキャンを実行するSQL文の実行時間の短縮」を参照して，adbstatコマンドを実行して出力される「グローバルバッファの統計情報」のDBbuff_tblscan_failed_cntに出力される値が0に近い値になるまで調整してください。調整することで，adbmergechunkコマンドの実行時間を短縮できる場合があります。

なお，参照先の「テーブルスキャンを実行するSQL文」は，「adbmergechunkコマンド」に読み替えてください。

14.3.6　adbarchivechunkコマンドの実行時間の短縮

ここでは，adbarchivechunkコマンドの実行時間を短縮する方法について説明します。

adbarchivechunkコマンドを実行する場合，サーバ定義adbbuffオペランドの-vオプションを指定することで，adbarchivechunkコマンドの実行時間を短縮できることがあります。-vオプションを指定しているときは，指定値を見直すことで，adbarchivechunkコマンドの実行時間を短縮できることがあります。

手順

-vオプションの指定値を見積もる

「7.2.18　グローバルバッファに関するオペランドおよびオプション（コマンド形式）」にあるサーバ定義のadbbuffオペランドの-vオプションに指定する値を見積もってください。その際，変数sql_rthd_numには，サーバ定義adb_sql_exe_max_rthd_numオペランドの指定値ではなく，次の値を代入してください。

↓(アーカイブチャンクオプションadb_arcv_rthd_numの指定値 －1)÷2↓

HADBサーバを終了する

adbstopコマンドを実行して，HADBサーバを終了してください。

サーバ定義を変更する

サーバ定義のadbbuffオペランドに-vオプションを追加するか，または-vオプションの指定値を変更してください。手順1.で見積もった値を-vオプションに指定します。

HADBサーバを開始する

adbstartコマンドを実行して，HADBサーバを開始してください。

adbarchivechunkコマンドを実行する

adbstatコマンドを実行して，グローバルバッファの統計情報を出力する

「14.2.5　テーブルスキャンを実行するSQL文の実行時間を短縮する方法」の「(1)　グローバルバッファの統計情報によるテーブルスキャンを実行するSQL文の実行時間の短縮」を参照して，adbstatコマンドを実行して出力される「グローバルバッファの統計情報」のDBbuff_tblscan_failed_cntに出力される値が0に近い値になるまで調整してください。調整することで，adbarchivechunkコマンドの実行時間を短縮できる場合があります。

なお，参照先の「テーブルスキャンを実行するSQL文」は，「adbarchivechunkコマンド」に読み替えてください。

14.4　メモリ使用量の削減に関するチューニング

ここでは，adbstatコマンドで出力される統計情報や，SQLトレースファイルに出力されるSQLトレース情報を確認して，HADBサーバが使用するメモリ量を削減する方法について説明します。

14.4.1　HugePagesを適用した共有メモリの使用量の削減

HADBサーバの共有メモリにHugePagesを適用した場合，必要以上にメモリを確保することがあります。その結果，Linuxのカーネルなどの性能が低下するおそれがあります。

HADBサーバの共有メモリにHugePagesを適用した場合は，確保しているメモリ量が適切かどうかを確認してください。チューニング方法を次に示します。

手順

全メモリの最大使用量を確認する

adbstatコマンドを実行して出力される「HADBサーバの統計情報」のうち，次に示す情報を確認してください。

Total_memory_max_size（全メモリの最大使用量）

カーネルパラメタを確認する

HADBサーバをインストールしたマシンのOSに設定したカーネルパラメタvm.nr_hugepagesの指定値を確認してください。

確保しているメモリ量が適切かどうかを確認する

手順1.で確認したTotal_memory_max_sizeに出力された値よりも，手順2.で確認したvm.nr_hugepagesの指定値が大きい場合，必要以上にメモリを確保しています。vm.nr_hugepagesの指定値を，Total_memory_max_sizeに出力された値にあわせて小さくしてください。

重要

adbstopコマンドを実行してHADBサーバを終了したあとに，vm.nr_hugepagesの指定値を変更してください。

OSを再起動する

サーバ定義を変更する

手順3.でvm.nr_hugepagesの指定値を変更した場合，サーバ定義のadb_sys_memory_limitオペランドの指定値を変更してください。

HADBサーバを開始する

adbstartコマンドを実行して，HADBサーバを開始してください。

メモ

サーバ定義のadb_sys_memory_limitオペランドについては，「7.2.2　性能に関するオペランド（set形式）」のadb_sys_memory_limitオペランドを参照してください。

14.4.2　グローバルバッファの見直しによるメモリ使用量の削減

使用していないグローバルバッファの割り当てを解除したり，グローバルバッファに指定したページ数を見直したりすることで，HADBサーバが使用するメモリ量を削減できます。

(1)　使用していないグローバルバッファの割り当て解除

ここでは，レンジインデクス専用のグローバルバッファ，およびテーブルスキャンバッファを割り当てている場合のチューニング方法を次に示します。

■adbbuffオペランドに-aオプションを指定している場合

レンジインデクスバッファのページ要求回数を確認する

adbstatコマンドを実行して出力される「グローバルバッファの統計情報」のうち，次に示す情報に出力された値が0かどうかを確認してください。

DBbuff_page_rng_request_cnt（レンジインデクスバッファのページ要求回数）

DBbuff_page_rng_request_cntに出力される値が0の場合，レンジインデクスが定義されていない，またはレンジインデクスを使用しないDBエリアにレンジインデクス専用のグローバルバッファを割り当てているおそれがあります。

この場合は，adbbuffオペランドの-aオプションを削除してください。HADBサーバが使用するメモリ量を削減できます。

HADBサーバを終了する

adbstopコマンドを実行して，HADBサーバを終了してください。

サーバ定義を変更する

サーバ定義のadbbuffオペランドの-aオプションを削除してください。

HADBサーバを開始する

adbstartコマンドを実行して，HADBサーバを開始してください。

■adbbuffオペランドに-vオプションを指定している場合

テーブルスキャンバッファのページ要求回数を確認する

adbstatコマンドを実行して出力される「グローバルバッファの統計情報」のうち，次に示す情報に出力された値が0かどうかを確認してください。

DBbuff_tblscan_request_cnt（テーブルスキャンバッファのページ要求回数）

DBbuff_tblscan_request_cntに出力される値が0の場合，テーブルスキャンを実行するSQL文を実行しないDBエリアにテーブルスキャンバッファを割り当てているおそれがあります。

この場合は，adbbuffオペランドの-vオプションを削除してください。HADBサーバが使用するメモリ量を削減できます。

HADBサーバを終了する

adbstopコマンドを実行して，HADBサーバを終了してください。

サーバ定義を変更する

サーバ定義のadbbuffオペランドの-vオプションを削除してください。

HADBサーバを開始する

adbstartコマンドを実行して，HADBサーバを開始してください。

メモ

サーバ定義のadbbuffオペランドについては，「7.2.18　グローバルバッファに関するオペランドおよびオプション（コマンド形式）」のadbbuffオペランドを参照してください。

(2)　グローバルバッファに指定したページ数の見直し

ここでは，グローバルバッファに指定したページ数が多過ぎる場合のチューニング方法を次に示します。

■adbbuffオペランドに-pオプションを指定している場合

グローバルバッファ面数を確認する

adbstatコマンドを実行して出力される「グローバルバッファの統計情報」のうち，次に示す2つの情報に出力された値を確認してください。

DBbuff_page_use_cnt（割り当て済みのグローバルバッファ面数）

DBbuff_page_num（総グローバルバッファ面数）

DBbuff_page_use_cntに出力された値が，DBbuff_page_numに出力された値よりも小さい場合，adbbuffオペランドの-pオプションに指定した値が大き過ぎるおそれがあります。該当する場合は，手順2.に進んでください。

HADBサーバを終了する

adbstopコマンドを実行して，HADBサーバを終了してください。

サーバ定義を変更する

サーバ定義のadbbuffオペランドの-pオプションの指定値を，次の計算式で求めた値に変更してください。HADBサーバが使用するメモリ量を削減できます。

HADBサーバを開始する

adbstartコマンドを実行して，HADBサーバを開始してください。

■adbbuffオペランドに-aオプションを指定している場合

レンジインデクスバッファ面数を確認する

adbstatコマンドを実行して出力される「グローバルバッファの統計情報」のうち，次に示す2つの情報に出力された値を確認してください。

DBbuff_page_rng_use_cnt（割り当て済みのレンジインデクスバッファ面数）

DBbuff_page_rng_num（総レンジインデクスバッファ面数）

DBbuff_page_rng_use_cntに出力された値が，DBbuff_page_rng_numに出力された値よりも小さい場合，adbbuffオペランドの-aオプションに指定した値が大き過ぎるおそれがあります。該当する場合は，手順2.に進んでください。

HADBサーバを終了する

adbstopコマンドを実行して，HADBサーバを終了してください。

サーバ定義を変更する

サーバ定義のadbbuffオペランドの-aオプションの指定値を，次の計算式で求めた値に変更してください。HADBサーバが使用するメモリ量を削減できます。

HADBサーバを開始する

adbstartコマンドを実行して，HADBサーバを開始してください。

メモ

サーバ定義のadbbuffオペランドについては，「7.2.18　グローバルバッファに関するオペランドおよびオプション（コマンド形式）」のadbbuffオペランドを参照してください。

14.4.3　ローカル作業表用バッファの見直しによるメモリ使用量の削減

SQLトレース情報に出力された「アクセスパスの統計情報」を確認することで，ローカル作業表用バッファのページ数を見直す方法について説明します。

ローカル作業表用バッファのページ数を見直すことで，メモリ使用量を削減できることがあります。

手順

アクセスパスの統計情報を確認する

SQLトレース情報に出力された「アクセスパスの統計情報」を確認してください。アクセスパスの統計情報に出力された「データアクセス情報」のうち，次に示す出力項目を確認してください。

Data_dbbuff_wrktbl_clt_write_cnt（ローカル作業表用バッファからファイルへの書き込み回数）

Data_wrktbl_page_use_max（割り当てた作業表のページ数のうち，最も大きいページ数）

出力項目の値を確認したら，手順2.に進んでください。

オペランドの指定値を確認する

次に示すオペランドの指定値を確認してください。

adb_sql_exe_max_rthd_num

adb_dbbuff_wrktbl_clt_blk_num

各オペランドの指定値を確認したら，手順3.に進んでください。

ローカル作業表用バッファの見直しが必要かどうかを確認する

確認した値を基に，次に示す計算式を求めてください。

計算式（ローカル作業表用バッファの見直しが必要かどうかの確認）

上記の計算式を満たす場合，確保しているローカル作業表用バッファのページ数が，実際に必要なページ数よりも多いおそれがあります。この場合，手順4.に進んでください。

クライアント定義を変更する

該当するコネクションのクライアント定義のadb_dbbuff_wrktbl_clt_blk_numオペランドの指定値を，次に示す計算式で求めた値に変更してください。

計算式（adb_dbbuff_wrktbl_clt_blk_numオペランドの値）

上記の計算式で求めた値に，該当するコネクションのクライアント定義のadb_dbbuff_wrktbl_clt_blk_numオペランドの指定値を変更すると，処理性能に影響を与えることなく，メモリ使用量を削減することができます。

クライアント定義を変更する場合は，マニュアルHADB　AP開発ガイドのクライアント定義変更時の注意事項で説明している手順に従ってクライアント定義を変更してください。

メモ

クライアント定義のadb_dbbuff_wrktbl_clt_blk_numオペランドについては，マニュアルHADB　AP開発ガイドの性能に関するオペランドを参照してください。

14.5　ハッシュテーブル領域サイズの見直しによるSQL文の実行時間の短縮に関するチューニング

ここでは，次に示すオペランドに指定したハッシュテーブル領域サイズの見直しによる，SQL文の実行時間を短縮する方法について説明します。

サーバ定義のadb_sql_exe_hashtbl_area_sizeオペランド

クライアント定義のadb_sql_exe_hashtbl_area_sizeオペランド

なお，adbexportコマンドにSQL文を指定して実行した場合でも，同様にSQL文の実行時間を短縮できます。その場合は，adb_sql_exe_hashtbl_area_sizeオペランドをエクスポートオプションadb_export_hashtbl_area_sizeに読み替えてください。

ハッシュテーブル領域を使用する次の処理が適用されるSQL文を実行する場合に，ハッシュテーブル領域サイズを大きくすると，SQL文の実行時間を短縮できることがあります。

表の結合方式のハッシュジョイン

グループ化の処理方式のグローバルハッシュグループ化

副問合せの処理方式のハッシュ実行

SELECT DISTINCTの処理方式のハッシュ実行

集合演算の処理方式のハッシュ実行

手順

ハッシュテーブル領域の領域不足が発生した処理の有無を確認する

SQLトレース情報に出力された「アクセスパスの統計情報」を確認してください。アクセスパスの統計情報に出力された「ハッシュテーブル領域に関する情報」のうち，次に示す出力項目がYとなっている処理があるかどうかを確認してください。

Hashtbl_area_shortage（ハッシュテーブル領域の領域不足の発生有無）

Yとなっている処理があった場合は，手順2.に進んでください。

KFAA51130-Wメッセージの出力有無を確認する

手順1.でYとなっている処理がある場合，次の2つを突き合わせてください。

該当する処理の「SQL文の実行情報」に出力されるmessage_log_info

サーバメッセージログファイル

突き合わせの結果，サーバメッセージログファイルに，KFAA51130-Wメッセージが出力されているかどうかを確認してください。KFAA51130-Wメッセージが出力されている場合は，手順3.に進んでください。

adb_sql_exe_hashtbl_area_sizeオペランドの指定値を見直す

手順2.でKFAA51130-Wメッセージが出力されている場合は，ハッシュテーブル領域内で処理できなかったデータを，複数回にわたって作業表に格納して処理している可能性があります。そのため，SQL文の実行時間が長くなっているおそれがあります。

この場合，サーバ定義およびクライアント定義のadb_sql_exe_hashtbl_area_sizeオペランドの指定値を大きくしてください。ハッシュテーブル領域を使用する処理が適用されるSQL文の実行時間を短縮できることがあります。

重要

クライアント定義のadb_sql_exe_hashtbl_area_sizeオペランドと，サーバ定義のadb_sql_exe_hashtbl_area_sizeオペランドの両方の指定値を確認してください。クライアント定義の指定値だけを大きくした結果，クライアント定義の指定値がサーバ定義の指定値を超えた場合，サーバ定義の指定値が適用されます（変更後のクライアント定義の指定値が適用されません）。該当する場合は，サーバ定義とクライアント定義の両方のadb_sql_exe_hashtbl_area_sizeオペランドの指定値を大きくしてください。

adb_sql_exe_hashtbl_area_sizeオペランドの指定値を変更した場合，必ずHADBサーバのメモリ所要量を再見積もりしてください。HADBサーバのメモリ所要量の再見積もりについては，「6.3.4　通常運用時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（通常運用時）」の「(c)　変数RTHD_EXESQLSZの求め方」の変数HASHTBL_PROC_SIZEを参照してください。

サーバ定義およびクライアント定義を変更する

サーバ定義およびクライアント定義のadb_sql_exe_hashtbl_area_sizeオペランドの指定値を大きくしてください。

サーバ定義を変更する場合

adbstopコマンドでHADBサーバをいったん終了してください。そのあとに，サーバ定義を変更し，adbstartコマンドでHADBサーバを開始してください。

クライアント定義を変更する場合

マニュアルHADB　AP開発ガイドのクライアント定義変更時の注意事項で説明している手順に従ってクライアント定義を変更してください。

SQL文を再実行する

SQL文を再実行して，SQL文の実行時間が短縮されるかどうかを確認してください。

メモ

アクセスパスの統計情報に出力された「ハッシュテーブル領域に関する情報」については，「10.11.3　アクセスパスの統計情報の出力例と出力項目」の「(2)　アクセスパスの統計情報に出力される項目」の「(e)　ハッシュテーブル領域に関する情報」を参照してください。

サーバ定義のadb_sql_exe_hashtbl_area_sizeオペランドについては，「7.2.2　性能に関するオペランド（set形式）」のadb_sql_exe_hashtbl_area_sizeオペランドを参照してください。

クライアント定義のadb_sql_exe_hashtbl_area_sizeオペランドについては，マニュアルHADB　AP開発ガイドの性能に関するオペランドを参照してください。

14.6　ハッシュグループ化領域サイズの見直しによるSQL文の実行時間の短縮に関するチューニング

ここでは，次に示すオペランドに指定したハッシュグループ化領域サイズの見直しによる，SQL文の実行時間を短縮する方法について説明します。

サーバ定義のadb_sql_exe_hashgrp_area_sizeオペランド

クライアント定義のadb_sql_exe_hashgrp_area_sizeオペランド

ローカルハッシュグループ化が適用されるSQL文を実行する場合に，ハッシュグループ化領域サイズを大きくすると，SQL文の実行時間を短縮できることがあります。

手順

ハッシュグループ化領域の領域不足が発生した処理の有無を確認する

SQLトレース情報に出力された「アクセスパスの統計情報」を確認してください。アクセスパスの統計情報に出力された「ハッシュグループ化領域に関する情報」のうち，次に示す出力項目にYがあるかどうかを確認してください。

Hashgrp_area_shortage（ハッシュグループ化領域の領域不足の発生有無）

もし，Yがあった場合で，かつローカルハッシュグループ化の処理がある場合は，手順2.に進んでください。

adb_sql_exe_hashgrp_area_sizeオペランドの指定値を見直す

手順1.で，ハッシュグループ化領域の領域不足が発生したローカルハッシュグループ化の処理がある場合は，ハッシュグループ化領域内で処理できなかったデータを，作業表に格納して処理している可能性があります。そのため，SQL文の実行時間が長くなっているおそれがあります。

この場合，手順1.で確認したHashgrp_area_shortageがYとなっているすべてのローカルハッシュグループ化の処理について，「アクセスパスの統計情報」に出力された「ハッシュグループ化領域に関する情報」のうち，次に示す出力項目を確認してください。

Hashgrp_area_sufficient_size（ハッシュグループ化領域で領域不足が発生しない十分な領域サイズ）

そして，出力された値のうち，最大値以上の値を，サーバ定義またはクライアント定義のadb_sql_exe_hashgrp_area_sizeオペランドに指定してください。ローカルハッシュグループ化が適用されるSQL文の実行時間を短縮できることがあります。

重要

adb_sql_exe_hashgrp_area_sizeオペランドの指定値を変更した場合，必ずHADBサーバのメモリ所要量を再見積もりしてください。HADBサーバのメモリ所要量の見積もりについては，「6.3　HADBサーバのメモリ所要量の見積もり」を参照してください。

次のどちらかの条件を満たす場合，ハッシュグループ化領域ではなく作業表にデータが格納されることがあります（ハッシュグループ化領域が不足するケースに該当します）。

GROUP BY句のグループ化列に実データ長が長いSTRING型がある場合

集合関数の結果に実データ長が長いSTRING型がある場合

この場合，Hashgrp_area_sufficient_sizeに出力された値以上の値を，サーバ定義またはクライアント定義のadb_sql_exe_hashgrp_area_sizeオペランドに指定してSQL文を再実行しても，ハッシュグループ化領域の不足が再度発生する可能性があります。

サーバ定義またはクライアント定義を変更する

サーバ定義またはクライアント定義のadb_sql_exe_hashgrp_area_sizeオペランドの指定値を大きくしてください。

サーバ定義を変更する場合

adbstopコマンドでHADBサーバをいったん終了してください。そのあとに，サーバ定義を変更し，adbstartコマンドでHADBサーバを開始してください。

クライアント定義を変更する場合

マニュアルHADB　AP開発ガイドのクライアント定義変更時の注意事項で説明している手順に従ってクライアント定義を変更してください。

SQL文を再実行する

SQL文を再実行して，SQL文の実行時間が短縮されるかどうかを確認してください。

メモ

アクセスパスの統計情報に出力された「ハッシュグループ化領域に関する情報」については，「10.11.3　アクセスパスの統計情報の出力例と出力項目」の「(2)　アクセスパスの統計情報に出力される項目」の「(d)　ハッシュグループ化領域に関する情報」を参照してください。

サーバ定義のadb_sql_exe_hashgrp_area_sizeオペランドについては，「7.2.2　性能に関するオペランド（set形式）」のadb_sql_exe_hashgrp_area_sizeオペランドを参照してください。

クライアント定義adb_sql_exe_hashgrp_area_sizeオペランドについては，マニュアルHADB　AP開発ガイドの性能に関するオペランドを参照してください。

14.7　ハッシュジョインが適用されるINNER JOINの結合順序の見直しによるSQL文の実行時間の短縮に関するチューニング

ここでは，ハッシュジョインが適用されるINNER JOINの結合順序の見直しによる，SQL文の実行時間を短縮する方法について説明します。

ハッシュジョインが適用されるINNER JOINを含むSQL文を実行する場合，INNER JOINの外表と内表を入れ替えた結合方式指定を行うと，SQL文の実行時間を短縮できることがあります。

手順

ハッシュジョインが適用されるINNER JOINの有無を確認する

SQLトレース情報に出力された「実行したSQL文とアクセスパス情報」を確認してください。アクセスパス情報に，ハッシュジョインが適用されたINNER JOINがあるかどうかを確認してください。

ハッシュジョインが適用されたINNER JOINがある場合は，手順2.に進んでください。

ハッシュジョインでハッシュテーブル領域の領域不足の発生有無を確認する

ハッシュジョインが適用されたINNER JOINがある場合，そのハッシュジョインについて，SQLトレース情報に出力された「アクセスパスの統計情報」を確認してください。アクセスパスの統計情報に出力された「ハッシュテーブル領域に関する情報」のうち，次に示す出力項目がYとなっているかどうかを確認してください。

Hashtbl_area_shortage（ハッシュテーブル領域の領域不足の発生有無）

Yとなっている場合は，手順3.に進んでください。

ハッシュジョインの外表と内表の処理行数を確認する

ハッシュテーブル領域の領域不足が発生している場合，SQLトレース情報に出力された「アクセスパスの統計情報」を確認してください。アクセスパスの統計情報に出力された「検索処理に関する情報」のうち，次に示す出力項目を確認してください。

Scan_row_cnt（検索処理した行数）

ハッシュジョインの外表の処理行数が，内表の処理行数と比べて，十分に多いかどうかを確認してください。ハッシュジョインの外表の処理行数が，内表の処理行数よりも十分に多い場合は，手順4.に進んでください。

ハッシュジョインの結合順序を見直す

ハッシュジョインが適用されるINNER JOINに，処理行数の少なかった内表を外表としたハッシュジョインとなるように，結合方式指定を指定してください。

ハッシュジョインの外表の処理行数が，内表の処理行数よりも十分に多い場合は，ハッシュテーブル領域で処理できなかった外表のデータをいったん作業表に格納しています。そのため，SQL文の実行時間が長くなっているおそれがあります。

結合方式指定を指定することで，ハッシュジョインが適用されるINNER JOINを含むSQL文の実行時間を短縮できることがあります。

メモ

アクセスパス情報については，「10.11.2　SQLトレース情報に出力される情報」の「(5)　実行したSQL文とアクセスパス情報」を参照してください。

アクセスパスの統計情報に出力された「ハッシュテーブル領域に関する情報」については，「10.11.3　アクセスパスの統計情報の出力例と出力項目」の「(2)　アクセスパスの統計情報に出力される項目」の「(e)　ハッシュテーブル領域に関する情報」を参照してください。

アクセスパスの統計情報に出力された「検索処理に関する情報」については，「10.11.3　アクセスパスの統計情報の出力例と出力項目」の「(2)　アクセスパスの統計情報に出力される項目」の「(b)　検索処理に関する情報」を参照してください。

結合方式指定については，マニュアルHADB　SQLリファレンスの構成要素の結合方式指定を参照してください。

14.8　ハッシュフィルタ領域サイズの見直しによるSQL文の実行時間の短縮に関するチューニング

ここでは，次に示すオペランドに指定したハッシュフィルタ領域サイズの見直しによる，SQL文の実行時間を短縮する方法について説明します。

サーバ定義のadb_sql_exe_hashflt_area_sizeオペランド

クライアント定義のadb_sql_exe_hashflt_area_sizeオペランド

なお，adbexportコマンドにSQL文を指定して実行した場合でも，同様にSQL文の実行時間を短縮できます。その場合は，adb_sql_exe_hashflt_area_sizeオペランドをエクスポートオプションadb_export_hashflt_area_sizeに読み替えてください。

ハッシュフィルタを適用する次の処理が実行される場合に，ハッシュフィルタ領域サイズを大きくすると，SQL文の実行時間を短縮できることがあります。

表の結合方式のハッシュジョイン

副問合せの処理方式のハッシュ実行

以降で説明する■ハッシュフィルタが適用されているかどうかを確認すると■ハッシュフィルタが有効に働いているかどうかを確認するの両方を確認してください。

■ハッシュフィルタが適用されているかどうかを確認する

手順

ハッシュフィルタが適用されていない処理があるかどうかを確認する

SQLトレース情報の出力結果で，次に示す条件を満たす処理があるかどうかを確認してください。

「クライアント定義情報」のadb_sql_exe_hashflt_area_sizeの値が1以上である

「SQL文の統計情報」のHashflt_disabled（ハッシュフィルタが無効化されたかどうか）の値がYである

上記のすべての条件を満たす処理は，ハッシュフィルタが適用されていません。手順2.に進んでください。上記のすべての条件を満たす処理がない場合は，■ハッシュフィルタが有効に働いているかどうかを確認するの内容を確認してください。

無効化されたハッシュフィルタの合計数を確認する

手順1.の条件に該当する処理がある場合，SQLトレース情報の出力結果で次の値を確認してください。

「アクセスパスの統計情報」に出力された「ハッシュテーブル領域に関する情報」のHashtbl_filter_disabled_num（無効化されたハッシュフィルタの合計数）

adb_sql_exe_hashflt_area_sizeオペランドの指定値を見直す

手順2.で確認したHashtbl_filter_disabled_numの値が0の場合は，ハッシュフィルタ領域が小さ過ぎるためにハッシュフィルタが適用されていない可能性があります。そのため，SQL文の実行時間が長くなっているおそれがあります。

この場合，サーバ定義およびクライアント定義のadb_sql_exe_hashflt_area_sizeオペランドの指定値を大きくしてください。そうすると，ハッシュフィルタが適用されてSQL文の実行時間を短縮できることがあります。adb_sql_exe_hashflt_area_sizeオペランドの指定値の目安については，マニュアルHADB　AP開発ガイドの次の個所を参照してください。

ハッシュジョインとはのハッシュフィルタが適用される条件

外への参照列を含まない副問合せの処理方式とはのハッシュ実行

外への参照列を含む副問合せの処理方式とはのハッシュ実行

重要

クライアント定義のadb_sql_exe_hashflt_area_sizeオペランドと，サーバ定義のadb_sql_exe_hashflt_area_sizeオペランドの両方の指定値を確認してください。クライアント定義の指定値だけを大きくした結果，クライアント定義の指定値がサーバ定義の指定値を超えた場合，サーバ定義の指定値が適用されます（変更後のクライアント定義の指定値が適用されません）。該当する場合は，サーバ定義とクライアント定義の両方のadb_sql_exe_hashflt_area_sizeオペランドの指定値を大きくしてください。

adb_sql_exe_hashflt_area_sizeオペランドの指定値を変更した場合，必ずHADBサーバのメモリ所要量を再見積もりしてください。HADBサーバのメモリ所要量の再見積もりについては，「6.3.4　通常運用時のメモリ所要量の求め方」の「(2)　リアルスレッド固有メモリの所要量の求め方（通常運用時）」の「(c)　変数RTHD_EXESQLSZの求め方」の変数HASHFLT_PROC_SIZEを参照してください。

また，手順2.で確認したHashtbl_filter_disabled_numの値が1以上の場合でも，サーバ定義またはクライアント定義のadb_sql_exe_hashflt_area_sizeオペランドの指定値を大きくすると，SQL文の実行時間を短縮できることがあります。

サーバ定義およびクライアント定義を変更する

サーバ定義およびクライアント定義のadb_sql_exe_hashflt_area_sizeオペランドの指定値を大きくしてください。

サーバ定義を変更する場合

adbstopコマンドでHADBサーバをいったん終了してください。そのあとに，サーバ定義を変更し，adbstartコマンドでHADBサーバを開始してください。

クライアント定義を変更する場合

マニュアルHADB　AP開発ガイドのクライアント定義変更時の注意事項で説明している手順に従ってクライアント定義を変更してください。

SQL文を再実行する

SQL文を再実行して，SQL文の実行時間が短縮されるかどうかを確認してください。ハッシュフィルタの適用によって，SQL文の実行時間が短縮されることがあります。

■ハッシュフィルタが有効に働いているかどうかを確認する

手順

ハッシュフィルタが有効に働いているかどうかを確認する

SQLトレース情報の「アクセスパスの統計情報」に出力された「ハッシュテーブル領域に関する情報」のうち，次の2つの値を確認してください。

Hashtbl_sum_filter_check_cnt（ハッシュフィルタでハッシュ値をチェックした回数の合計値）

Hashtbl_sum_filtering_cnt（ハッシュ値がハッシュフィルタで除外された回数の合計値）

Hashtbl_sum_filtering_cntの値が，Hashtbl_sum_filter_check_cntに比べて非常に小さい場合，ハッシュフィルタの適用効果がほとんどありません。そのため，ハッシュフィルタの適用が原因で，SQL文の実行時間が長くなっているおそれがあります。

adb_sql_exe_hashflt_area_sizeオペランドの指定値を見直す

手順1.の条件に該当する場合は，クライアント定義のadb_sql_exe_hashflt_area_sizeオペランドの指定値に0を指定して，該当するSQL文の処理でハッシュフィルタを適用しないことを検討してください。

クライアント定義を変更する場合は，マニュアルHADB　AP開発ガイドのクライアント定義変更時の注意事項で説明している手順に従ってクライアント定義を変更してください。

メモ

クライアント定義情報については，「10.11.2　SQLトレース情報に出力される情報」の「(3)　クライアント定義情報」を参照してください。

SQL文の統計情報については，「10.11.2　SQLトレース情報に出力される情報」の「(10)　SQL文の統計情報」を参照してください。

アクセスパスの統計情報に出力された「ハッシュテーブル領域に関する情報」については，「10.11.3　アクセスパスの統計情報の出力例と出力項目」の「(2)　アクセスパスの統計情報に出力される項目」の「(e)　ハッシュテーブル領域に関する情報」を参照してください。

サーバ定義のadb_sql_exe_hashflt_area_sizeオペランドについては，「7.2.2　性能に関するオペランド（set形式）」のadb_sql_exe_hashflt_area_sizeオペランドを参照してください。

クライアント定義のadb_sql_exe_hashflt_area_sizeオペランドについては，マニュアルHADB　AP開発ガイドの性能に関するオペランドを参照してください。

14.9　表定義プールサイズの見直しによるSQL文の実行時間の短縮に関するチューニング

ここでは，次に示すオペランドに指定した表定義プールサイズの見直しによる，SQL文の実行時間を短縮する方法について説明します。

サーバ定義のadb_sql_tbldef_cache_sizeオペランド

表定義プールサイズを大きくすると，SQL文の実行時間を短縮できることがあります。表定義プールサイズの大きさが適切かどうかを確認して変更する手順を次に示します。

手順

adbstatコマンドを実行して，HADBサーバの統計情報を取得する

HADBサーバの統計情報に，表定義プールに関する情報が出力されます。次の情報を確認してください。

Tbldef_req_cnt（表定義情報の取得要求回数）

表定義情報の取得要求回数が出力されます。

Tbldef_access_cnt（ディクショナリ表からの表定義情報の取得回数）

表定義プール内で該当の表定義情報が取得できないため，ディクショナリ表から表定義情報を取得した回数が出力されます。

Tbldef_cache_access_cnt（表定義プールからの表定義情報の取得回数）

表定義プール内で該当の表定義情報を取得した回数が出力されます。

Tbldef_cache_register_cnt（表定義プールへの表定義情報の登録回数）

表定義プールに表定義情報を登録した回数が出力されます。

Tbldef_cache_sweep_cnt（表定義プールからの表定義情報の掃き出し回数）

表定義プールから表定義情報を掃き出した回数が出力されます。

表定義情報のヒット率を確認する

次に示す計算式で，表定義情報のヒット率を求めてください。計算の結果，ヒット率が80％以下の場合は，サーバ定義のadb_sql_tbldef_cache_sizeオペランドの指定値を大きくしてください。

表定義情報のヒット率（％） = （A ÷ B） × 100

A：Tbldef_cache_access_cnt（表定義プールからの表定義情報の取得回数）

B：Tbldef_req_cnt（表定義情報の取得要求回数）

Tbldef_cache_sweep_cnt（表定義プールからの表定義情報の掃き出し回数）を確認する

表定義プールからの表定義情報の掃き出し回数が多い場合は，サーバ定義のadb_sql_tbldef_cache_sizeオペランドの指定値を大きくしてください。

HADBサーバを終了する

adbstopコマンドを実行して，HADBサーバを終了してください。

サーバ定義を変更する

サーバ定義のadb_sql_tbldef_cache_sizeオペランドの指定値を大きくしてください。

HADBサーバを開始する

adbstartコマンドを実行して，HADBサーバを開始してください。

メモ

表定義プール，およびサーバ定義のadb_sql_tbldef_cache_sizeオペランドについては，「7.2.2　性能に関するオペランド（set形式）」のadb_sql_tbldef_cache_sizeオペランドを参照してください。

15　障害運用

この章では，HADBで障害が発生した場合に，HADB管理者が実施することについて説明します。

15.1　障害発生時の対処の流れ

HADBサーバで障害が発生した場合，原因を確認して障害を取り除く必要があります。発生した障害によって，HADBサーバが異常終了したかどうかで対処が異なります。

まず，HADBサーバが異常終了したかどうかを確認します。次に示すコマンドを実行してください。

実行するコマンド

adbls -d srv

HADBサーバの状態が表示されます。実行結果のSTATUSの項目を確認してください。

STATUSがABORTの場合

HADBサーバが異常終了しています。「15.1.1　HADBサーバが異常終了した場合の対処」を参照してください。

STATUSが上記以外の場合

HADBサーバは異常終了していません。「15.1.2　HADBサーバが異常終了していない場合の対処」を参照してください。

15.1.1　HADBサーバが異常終了した場合の対処

HADBサーバが異常終了した場合の対処を次に示します。

図15‒1　HADBサーバが異常終了した場合の対処の流れ

手順

メッセージを確認する

HADBサーバが異常終了した場合，サーバメッセージログファイルをテキストエディタで開き，出力されているエラーメッセージを確認してください。

サーバメッセージログファイルは，サーバディレクトリ下のspool/adbmessageXX.logになります。ファイル名のXXは通番であり，01〜04のどれかになります。最終更新日時が最も新しいファイルを開いてください。

出力されているエラーメッセージのIDを基に，マニュアルHADB　メッセージを参照して，障害の原因および対策欄を確認してください。

出力されたメッセージテキストに「Save troubleshooting information by the "adbinfoget" command」が含まれる場合，または対策欄に「弊社問い合わせ窓口に連絡してください。」と記載されている場合は，手順2.に進んでください。

それ以外の場合は，手順3.に進んでください。

弊社問い合わせ窓口に連絡が必要な場合

「15.2　トラブルシュート情報の取得（adbinfogetコマンド）」を参照して，トラブルシュート情報を取得してください。取得したトラブルシュート情報は，弊社問い合わせ窓口に連絡する際，合わせて送付してください。

弊社問い合わせ窓口に連絡が不要な場合

出力されたメッセージの対策に従って障害を取り除いてください。

障害を取り除いてから，HADBサーバを再開始してください。障害発生時点で処理中だったトランザクションをロールバックしたあとに，HADBサーバが起動します。

15.1.2　HADBサーバが異常終了していない場合の対処

HADBサーバが異常終了していない場合の対処を次に示します。

手順

メッセージを確認する

HADBサーバが異常終了していない場合，サーバメッセージログファイルをテキストエディタで開き，出力されているエラーメッセージを確認してください。

サーバメッセージログファイルは，サーバディレクトリ下のspool/adbmessageXX.logになります。ファイル名のXXは通番であり，01〜04のどれかになります。最終更新日時が最も新しいファイルを開いてください。

出力されているエラーメッセージのIDを基に，マニュアルHADB　メッセージを参照して，障害の原因および対策欄を確認してください。

対策欄に従って対処する

対策欄の対処方法に従って障害を取り除いてください。障害を取り除いてから，HADBサーバを再開始してください。障害発生時点で処理中だったトランザクションをロールバックしたあとに，HADBサーバが起動します。

重要

APまたはコマンドが終了しない，HADBサーバが無応答状態になったなど，障害が発生してもメッセージが出力されない場合があります。その場合は，「15.2　トラブルシュート情報の取得（adbinfogetコマンド）」を参照して，トラブルシュート情報を取得後，弊社問い合わせ窓口に連絡してください。

15.2　トラブルシュート情報の取得（adbinfogetコマンド）

弊社問い合わせ窓口に対して送付するトラブルシュート情報を取得する場合，adbinfogetコマンドを実行してください。

adbinfogetコマンドを実行すると，次に示すトラブルシュート情報ファイルを取得できます。

取得できるトラブルシュート情報ファイル

detail版トラブルシュート情報ファイル

トラブルシュートに必要なすべての情報が格納されたファイルです。

ファイル名は，adbinfoYYYYMMDDhhmmss_detail.tar.gzになります。

light版トラブルシュート情報ファイル

detail版トラブルシュート情報ファイルからコアファイル，共有メモリ，ダンプファイルなどを除いた情報が格納されたファイルです。

ファイル名は，adbinfoYYYYMMDDhhmmss_light.tar.gzになります。

mail版トラブルシュート情報ファイル

light版トラブルシュート情報ファイルから，さらに幾つかのファイルを除いて，トラブルシュートに必要な最低限の情報だけが格納されたファイルです。

ファイル名は，adbinfoYYYYMMDDhhmmss_mail.tar.gzになります。

root版トラブルシュート情報ファイル

root権限があると取得できる情報が格納されたファイルです。

ファイル名は，adbinfoYYYYMMDDhhmmss_root.tar.gzになります。

注

ファイル名の"YYYYMMDDhhmmss"は，adbinfogetコマンドを実行した日時になります。

adbinfogetコマンドの実行手順を次に示します。adbinfogetコマンドのオプションについては，マニュアルHADB　コマンドリファレンスのadbinfoget（トラブルシュート情報の取得）を参照してください。

手順

トラブルシュート情報を出力する

APまたはコマンドが終了しない，HADBサーバが無応答状態になったなど，障害が発生してもメッセージが出力されない場合は，トラブルシュート情報が出力されません。そのため，まずは，adbinfogetコマンドを実行して，トラブルシュート情報を出力します。次に示すコマンドを実行してください。

なお，メッセージが出力されている場合（HADBサーバが異常終了した場合）は，トラブルシュート情報の出力は不要です。手順2.に進んでください。

実行するコマンド

adbinfoget -g

取得するトラブルシュート情報ファイルの容量を確認する

adbinfogetコマンドを実行して，取得するトラブルシュート情報ファイルの容量を確認します。次に示すコマンドを実行してください。-rオプションを指定しているため，要求に応じてスーパユーザのパスワードを入力してください。

実行するコマンド

adbinfoget -m -r

コマンドを実行した結果とディスクの空き容量を比較して，すべてのトラブルシュート情報ファイルを取得できるかどうかを確認してください。もし，detail版トラブルシュート情報ファイルの容量が大き過ぎて取得できない場合は，detail版以外のトラブルシュート情報ファイルを取得します。

トラブルシュート情報ファイルを格納するディレクトリを作成する

取得するトラブルシュート情報ファイルを格納するディレクトリを作成してください。

トラブルシュート情報ファイルを取得する

adbinfogetコマンドを実行して，トラブルシュート情報ファイルを取得します。ディスクの空き容量によって，次のどちらかのコマンドを実行してください。-rオプションを指定しているため，要求に応じてスーパユーザのパスワードを入力してください。

■すべてのトラブルシュート情報ファイルを取得する場合

adbinfoget -o トラブルシュート情報の出力先ディレクトリ -r

■detail版以外のトラブルシュート情報ファイルを取得する場合

adbinfoget -l -o トラブルシュート情報の出力先ディレクトリ -r

注

-oオプションには，手順3.で作成したディレクトリを指定してください。

取得したトラブルシュート情報ファイルを送付する

トラブルシュート情報ファイルを取得したら，detail版トラブルシュート情報ファイルおよびroot版トラブルシュート情報ファイルを，弊社問い合わせ窓口に送付してください。

ディスクの空き容量が少なくてdetail版トラブルシュート情報ファイルを取得できない場合，または取得したdetail版トラブルシュート情報ファイルの容量が大き過ぎて送付できない場合は，light版トラブルシュート情報ファイルおよびroot版トラブルシュート情報ファイルを，弊社問い合わせ窓口に送付してください。

light版トラブルシュート情報ファイルの容量も大き過ぎて送付できない場合は，mail版トラブルシュート情報ファイルおよびroot版トラブルシュート情報ファイルを，弊社問い合わせ窓口に送付してください。

重要

取得したトラブルシュート情報ファイルが不要になった場合は，ディスクの空き容量を確保するために，トラブルシュート情報ファイルを削除することを検討してください。

adbinfogetコマンドを実行したら，「15.3　トラブルシュート情報の削除（adbinfosweepコマンド）」を参照して，adbinfosweepコマンドを実行することを検討してください。

15.3　トラブルシュート情報の削除（adbinfosweepコマンド）

HADBサーバが出力したトラブルシュート情報は，HADBサーバが停止中のときにadbinfosweepコマンドを実行すると削除できます。

次に示すときに，HADBサーバが出力したトラブルシュート情報は，自動的に削除されません。

サーバプロセスの強制終了時に出力されたトラブルシュート情報

サーバプロセスでの内部矛盾の検知時に出力されたトラブルシュート情報

そのため，トラブルシュート情報の容量が増加し続けると，ディスクの空き容量が不足する原因となります。定期的にadbinfosweepコマンドを実行して，ディスクの空き容量を確保してください。

adbinfosweepコマンドについては，マニュアルHADB　コマンドリファレンスのadbinfosweep（トラブルシュート情報の削除）を参照してください。

adbinfosweepコマンドを実行するタイミングを次に示します。

adbinfosweepコマンドを実行するタイミング

HADBサーバが異常終了した場合に，adbinfogetコマンドでトラブルシュート情報を取得したあとで，adbinfosweepコマンドを実行してください。

adbinfosweepコマンドで，削除できるトラブルシュート情報を次に示します。

削除できるトラブルシュート情報の一覧

障害情報（コアファイル）

$DBDIR/SPOOL/core.サーバプロセスのプロセスID

サーバ定義adb_core_pathオペランドで指定したパス/core.サーバプロセスのプロセスID

サーバ定義格納ファイル

$ADBDIR/spool/.defrslt

HADBダンプファイル

$ADBDIR/spool/adbdumpYYYYMMDDhhmmss.サーバプロセスのプロセスID

YYYYMMDDhhmmssは，ファイルを生成した時刻になります。

$ADBDIR/spool/adbdumperrorYYYYMMDDhhmmssSSSSSS_TTTTTTTTTTTTTTTTTTTT.サーバプロセスのプロセスID

YYYYMMDDhhmmssSSSSSSは，ファイルを生成した時刻になります。

また，TTTTTTTTTTTTTTTTTTTTは，HADBサーバの内部矛盾エラーを検知したリアルスレッドのスレッドIDになります。

重要

HADB管理者以外のOSユーザによって出力されたトラブルシュート情報は，adbinfosweepコマンドを実行しても削除されないことがあります。この場合，スーパユーザがOSのrmコマンドなどを実行して，不要なトラブルシュート情報を削除してください。

16　トラブルシュート

この章では，HADBサーバでトラブルが発生した場合の対処方法について説明します。

16.1　APに関するトラブル

ここでは，APに関するトラブルがあった場合の対処方法について説明します。

16.1.1　APが終了しない場合やAPが異常終了した場合の対処方法

APが終了しない場合，またはAPが異常終了した場合は，「10.8　トランザクションの処理状況の確認」に従って，APの処理状況を確認してください。

必要に応じてadbcancelコマンドを実行してAPが実行しているトランザクションを終了させてください。

また，adbcancelコマンドを実行してもトランザクションが終了しない場合は，次の手順でHADBサーバを終了させてください。

手順

adbstop --forceコマンドでHADBサーバを強制終了させてください。

1.を実行してもHADBサーバが終了しない場合は，HADBサーバプロセス（adbsrvd）をOSのkillコマンドで終了させてください。

上記の手順でもHADBサーバが終了しない場合は，OSを再起動してください。

16.1.2　APが実行できない場合の対処方法（KFAA40005-Eメッセージが出力された場合）

APの実行時に，ほかのAPおよびコマンドを同時に実行していなくても，KFAA40005-Eメッセージが出力される場合は，排他資源を確保したまま，終了していないトランザクションがある可能性があります。

adbls -d cnctコマンドを実行して，トランザクションの処理状況を確認してください。出力項目「STATUS」を確認して，"STARTED"となっているAPおよびコマンドがないかどうかを確認してください。

"STARTED"となっているAPおよびコマンドがある場合は，対象のトランザクションの終了を待つか，またはadbcancelコマンドで対象のトランザクションを終了させてください。

なお，サーバ定義のadb_sys_lck_conflict_behaviorオペランドにWAITを指定すると，特定の処理で排他資源が競合したときに，「排他資源の競合によるエラー（WAITモードがNOWAIT）」から，「排他資源を確保するまで待ち状態にする（WAITモードがWAIT）」に変更できます。特定の処理については，adb_sys_lck_conflict_behaviorオペランドの説明個所で説明しています。

16.1.3　APのHADBサーバへの接続に時間が掛かる場合の対処方法

APの動作環境がLinuxの場合，DNSサーバへのホスト名などの問い合わせに時間が掛かり，それが原因でAPのHADBサーバへの接続に時間が掛かることがあります。

/etc/nsswitch.confファイルの設定が次のようになっていることを確認してください。

hosts: files myhostname dns

16.1.4　クライアントマシンで使用中の通信ポート数を確認する方法

APからキャンセル要求を頻繁に実行した場合，APを実行しているクライアントマシンの通信ポートが不足することがあります。SQL文のキャンセル処理の遅延や，APがHADBサーバに接続できないなどの現象が発生した場合は，通信ポートが不足しているおそれがあります。使用中の通信ポートのおおよその数は，ssコマンドやnetstatコマンドなどのOSのコマンドで確認できます。

メモ

ここでは，RHEL 9でのssコマンド，Windows 11でのnetstatコマンドを例に説明しています。RHEL 9またはWindows 11以外のOSを使用している場合は，コマンドの仕様が下記の例とは異なることがあります。そのため，下記の例のとおりにコマンドを実行しても，誤動作してしまいます。

RHEL 9またはWindows 11以外のOSを使用している場合は，そのOSで実行できるコマンドや引数をOSのマニュアルで確認したあとにコマンドを実行してください。

RHEL 9の場合のコマンド例

ss -na | grep "tcp" | awk '{print $5}' | sed -e "s/[0-9a-f*:.]*://g" | sort -u | wc -l

［説明］

ss

ホスト内のソケット情報の一覧を，次のフォーマットで出力します。

grep

ssコマンドの出力結果から，Netidがtcpの行を絞り込みます。

awk

grepコマンドの出力結果から，Local Address:Portの列を抽出します。

sed

awkコマンドの出力結果から，ローカルアドレスを削除し，ポート番号だけを残します。

sort

sedコマンドの出力結果から，ポート番号の重複を排除します。

wc

sortコマンドの出力行数をカウントします。

上記のコマンドを実行すると，使用中の通信ポートのおおよその数が表示されます。

Windows 11 の場合のコマンド例

netstat -nq | find "TCP" /c

［説明］

netstat

ホスト内のアクティブな接続状態の一覧を，次のフォーマットで出力します。

find

netstatコマンドの出力結果のうち，プロトコルがTCPの行数をカウントします。

上記のコマンドを実行すると，使用中の通信ポートのおおよその数が表示されます。

メモ

HADBクライアントでは，HADBサーバのadbinfogetコマンドのようにトラブルシュート情報を自動的に取得する機能をサポートしていません。そのため，上記の方法で使用中の通信ポート数を確認してください。

16.2　コマンドに関するトラブル

ここでは，コマンドに関するトラブルがあった場合の対処方法について説明します。

16.2.1　コマンドが応答待ちタイムアウトになる場合の対処方法

コマンドを実行しても応答待ちタイムアウトになる場合，OSの負荷が高くコマンドの応答時間内に処理が完了しないことが考えられます。その場合は，再度コマンドを実行してください。

コマンドを再度実行しても，応答待ちタイムアウトになる場合は，必要のないプロセスを停止してOSの負荷を下げてください。そのあとで，コマンドを実行してください。

16.2.2　コマンドが実行できない場合の対処方法（KFAA40005-Eメッセージが出力された場合）

コマンドの実行時に，ほかのコマンドおよびAPを同時に実行していなくても，KFAA40005-Eメッセージが出力される場合は，排他資源を確保したまま，終了していないトランザクションがある可能性があります。

adbls -d cnctコマンドを実行して，トランザクションの処理状況を確認してください。出力項目「STATUS」を確認して，"STARTED"となっているコマンドおよびAPがないかどうかを確認してください。

"STARTED"となっているコマンドおよびAPがある場合は，対象のトランザクションの終了を待つか，またはadbcancelコマンドで対象のトランザクションを終了させてください。

16.2.3　コマンドが終了しない場合の対処方法

コマンドが終了しない場合，コマンドの実行状況を調べてください。コマンドの実行状況を調べる方法については，「10.8　トランザクションの処理状況の確認」を参照してください。コマンドを終了させたい場合は，adbcancelコマンドでコマンドを終了させてください。adbcancelコマンドでコマンドを終了させる方法については，マニュアルHADB　コマンドリファレンスの実行中のコマンドを中断（強制終了）する場合を参照してください。

また，adbcancelコマンドを実行してもコマンドが終了しない場合は，次の手順でHADBサーバを終了させてください。

手順

adbstop --forceコマンドでHADBサーバを強制終了させてください。

1.を実行してもHADBサーバが終了しない場合は，HADBサーバプロセス（adbsrvd）をOSのkillコマンドで終了させてください。

上記の手順でもHADBサーバが終了しない場合は，OSを再起動してください。

16.2.4　adbimportコマンドまたはadbidxrebuildコマンドが再実行できない場合の対処方法

中断したadbimportコマンドまたはadbidxrebuildコマンドが再実行できない原因として，次のどちらかのファイルにアクセスできないことが考えられます。その場合，対応するメッセージがメッセージログファイルに出力されます。

コマンドステータスファイル

KFAA50244-Eメッセージが出力されます。

作業用一時ファイル

KFAA50247-Eメッセージが出力されます。

また，KFAA50244-EメッセージおよびKFAA50247-Eメッセージ以外のメッセージが出力されている場合は，ほかの原因が考えられます。原因は，出力されたメッセージから確認できます。

対処方法は，出力されたメッセージによって異なります。それぞれの対処方法を次に示します。

(1)　KFAA50244-Eメッセージが出力されたとき（コマンドステータスファイルにアクセスできないとき）

--forceオプションを指定して，adbidxrebuildコマンドを実行してください。

なお，中断したコマンドがバックグラウンドインポートを適用した（-bオプションを指定した）adbimportコマンドの場合は，adbidxrebuildコマンドに--forceオプションを指定して実行すると，adbimportコマンドで処理中だった表データの格納情報が削除されます。この場合，中断したadbimportコマンドは実行されていない状態に戻ります。そのため，adbidxrebuildコマンドを実行したあとに，-bオプションを指定して，中断したadbimportコマンドを再実行してください。

対処手順の詳細については，次に示す項目を参照してください。

マニュアルHADB　コマンドリファレンスのadbimport（データのインポート）のadbimportコマンドが異常終了したときの対処方法のadbimportコマンドの再実行時にエラーが発生した場合

マニュアルHADB　コマンドリファレンスのadbidxrebuild（インデクスの再作成）のadbidxrebuildコマンドが異常終了したときの対処方法のadbidxrebuildコマンドの再実行時にエラーが発生した場合

(2)　KFAA50247-Eメッセージが出力されたとき（作業用一時ファイルにアクセスできないとき）

--create-temp-fileオプションを指定して，adbidxrebuildコマンドを実行してください。

なお，中断したコマンドがバックグラウンドインポートを適用した（-bオプションを指定した）adbimportコマンドの場合は，adbidxrebuildコマンドに--create-temp-fileオプションを指定して実行することで，中断したadbimportコマンドの実行が完了します。

対処手順の詳細については，次に示す項目を参照してください。

マニュアルHADB　コマンドリファレンスのadbimport（データのインポート）のadbimportコマンドが異常終了したときの対処方法のadbimportコマンドの再実行時にエラーが発生した場合

マニュアルHADB　コマンドリファレンスのadbidxrebuild（インデクスの再作成）のadbidxrebuildコマンドが異常終了したときの対処方法のadbidxrebuildコマンドの再実行時にエラーが発生した場合

(3)　KFAA50244-EメッセージおよびKFAA50247-Eメッセージ以外のメッセージが出力されたとき

出力されたメッセージの対策に従って，中断したコマンドを再実行してください。

16.2.5　adbunarchivechunkコマンドが再実行できない場合の対処方法

中断したadbunarchivechunkコマンドが再実行できない原因として，次のどちらかのファイルにアクセスできないことが考えられます。

コマンドステータスファイル

作業用一時ファイル

どちらのファイルが原因であるかは，出力されたメッセージで確認できます。

(1)　コマンドステータスファイルにアクセスできないときの対処方法

--forceオプションを指定して，adbunarchivechunkコマンドを再実行してください。

(2)　作業用一時ファイルにアクセスできないときの対処方法

出力されたメッセージの対策に従って対処してください。そのあと，--forceオプションを指定して，adbunarchivechunkコマンドを再実行してください。

16.2.6　コマンド実行時の作業用一時ファイルを格納するディスクの空き容量が不足した場合の対処方法

次に示すコマンドの実行中，-wオプションに指定したディレクトリに作業用一時ファイルが作成されます。

adbimportコマンド

adbidxrebuildコマンド

adbmergechunkコマンド

adbunarchivechunkコマンド

adbreorgsystemdataコマンド

コマンドの実行中に，次に示すメッセージのどれかが出力された場合，作業用一時ファイルを格納するディスクの空き容量が不足したおそれがあります。

KFAA30959-E

KFAA40204-E

KFAA40205-E

KFAA40207-E

KFAA40208-E

KFAA40214-E

KFAA41205-E

KFAA41206-I

作業用一時ファイルを格納するディスクの空き容量が不足したかどうかは，メッセージに出力された内容から判断できます。詳細については，「(1)　作業用一時ファイルを格納するディスクの空き容量が不足しているかどうかを確認する方法」を参照してください。

作業用一時ファイルを格納するディスクの空き容量が不足した場合，次に示す原因が考えられます。該当する原因に従って，対処してください。

ディスクに不要な作業用一時ファイルが残っている。

「(2)　ディスクに不要な作業用一時ファイルが残っている場合」を参照してください。

作業用一時ファイルを格納するディスク容量が，作成される作業用一時ファイルよりも小さい。

中断したコマンドがadbimportコマンドまたはadbidxrebuildコマンドの場合

「(3)　作業用一時ファイルを格納するディスク容量が小さい場合（adbimportコマンドまたはadbidxrebuildコマンドが中断したとき）」を参照してください。

中断したコマンドがadbmergechunkコマンド，adbunarchivechunkコマンドまたはadbreorgsystemdataコマンドの場合

「(4)　作業用一時ファイルを格納するディスク容量が小さい場合（adbmergechunkコマンド，adbunarchivechunkコマンドまたはadbreorgsystemdataコマンドが中断したとき）」を参照してください。

(1)　作業用一時ファイルを格納するディスクの空き容量が不足しているかどうかを確認する方法

作業用一時ファイルを格納するディスクの空き容量が不足しているかどうかを確認するには，出力されたメッセージの内容を確認してください。出力されたメッセージの内容が，次に示す表の内容に一致している場合，作業用一時ファイルを格納するディスクの空き容量が不足しています。

表16‒1　作業用一時ファイルを格納するディスクの空き容量が不足した場合に出力されるメッセージと，メッセージに出力される内容

項番

メッセージID

メッセージに出力される内容

ファイル名

エラーコード

エラー番号

1

KFAA30959-E

ファイル名※1

−

28(ENOSPC)

2

KFAA40204-E

ファイルのパス名※2

−

−

3

KFAA40205-E

−

−

28(ENOSPC)

4

KFAA40207-E

−

-210または-230

−

5

KFAA40208-E

−

-210または-230

−

6

KFAA40214-E

−

−

28(ENOSPC)

7

KFAA41205-E

ファイルのパス名※2

−

28(ENOSPC)

8

KFAA41206-I

ファイルのパス名※2

−

28(ENOSPC)

（凡例）

−：該当するメッセージに，この内容は出力されません。

注※1

メッセージに出力されたファイル名のファイルが格納されているディレクトリを確認する必要があります。ファイルが格納されているディレクトリを確認する手順を次に示します。

メッセージに出力されたファイル名のファイルを，OSのfindコマンドで検索してください。

OSのfindコマンドの実行例を次に示します。

■OSのfindコマンドの実行例

［説明］

メッセージに出力されたファイル名（xxxxx）を指定して，findコマンドを実行します。

コマンドの実行結果で，ファイルが格納されているディレクトリが，各コマンドの-wオプションに指定したディレクトリに一致しているかどうかを確認してください。

一致している場合は，作業用一時ファイルを格納するディスクの空き容量が不足しています。

注※2

メッセージに出力されたパス名から，ファイルが格納されているディレクトリを確認する必要があります。

パス名に含まれるディレクトリが，各コマンドの-wオプションに指定したディレクトリに一致しているかどうかを確認してください。

一致している場合は，作業用一時ファイルを格納するディスクの空き容量が不足しています。

メモ

コマンドの-wオプションに指定したディレクトリとは，次のどちらかを指します。

コマンドの-wオプションに指定したディレクトリ

コマンドの-wオプションに指定したディレクトリパスファイルに指定したディレクトリ

(2)　ディスクに不要な作業用一時ファイルが残っている場合

不要な作業用一時ファイルを削除する必要があります。削除の手順を次に示します。

手順

再実行が必要なコマンドの有無を確認する

-cオプションにtableを指定して，adbdbstatusコマンドを実行してください。コマンドの実行結果で，表のサマリ情報のRerun_command列に，再実行が必要なコマンド名が出力されます。なお，再実行が必要なコマンドがない場合は，Rerun_command列に何も出力されません。

再実行が必要なコマンドがある場合は，手順2.に進んでください。再実行が必要なコマンドがない場合は，手順3.に進んでください。

adbdbstatusコマンドについては，マニュアルHADB　コマンドリファレンスのadbdbstatus（データベースの状態解析）を参照してください。

コマンドを再実行する

手順1.で確認した，再実行が必要なコマンドを再実行してください。コマンドの再実行が正常終了すると，作業用一時ファイルが削除されます。このとき，手順3.の操作は不要です。

残っている作業用一時ファイルを削除する

残っている作業用一時ファイルは，すべて不要なファイルです。OSのrmコマンドなどを実行して，不要なファイルを削除してください。

(3)　作業用一時ファイルを格納するディスク容量が小さい場合（adbimportコマンドまたはadbidxrebuildコマンドが中断したとき）

作業用一時ファイルを格納するディスク容量が小さい場合，作業用一時ファイルの格納先を，容量が大きい別のディスクに変更する必要があります。ここでは，中断したコマンドが，adbimportコマンドまたはadbidxrebuildコマンドのときの，作業用一時ファイルの格納先を変更する方法を説明します。

中断したコマンドがadbmergechunkコマンド，adbunarchivechunkコマンドまたはadbreorgsystemdataコマンドのときの，作業用一時ファイルの格納先を変更する方法については，「(4)　作業用一時ファイルを格納するディスク容量が小さい場合（adbmergechunkコマンド，adbunarchivechunkコマンドまたはadbreorgsystemdataコマンドが中断したとき）」を参照してください。

作業用一時ファイルの格納先を変更する方法の手順は，コマンドの-wオプションに指定したディレクトリを変更するかどうかによって異なります。コマンドの-wオプションに指定したディレクトリとは，次のうちどちらかを指します。

コマンドの-wオプションに指定したディレクトリ

コマンドの-wオプションに指定したディレクトリパスファイルに指定したディレクトリ

コマンドの-wオプションに指定したディレクトリを変更するとき，および変更しないときの手順をそれぞれ次に示します。

(a)　コマンドの-wオプションに指定したディレクトリを変更するとき

手順

コマンドの-wオプションに指定したディレクトリを変更する

コマンドの-wオプションに指定したディレクトリを，容量が大きい別のディスクのディレクトリに変更してください。

ディレクトリパスファイルに指定したディレクトリを変更する場合について，変更前および変更後のディレクトリパスファイルの指定例を次に示します。

■ディレクトリパスファイルの指定例（変更前）

/mnt/disk1/xxxxx
/mnt/disk2/yyyyy
/mnt/disk3/zzzzz

［説明］

変更前のディレクトリパスファイルでは，容量不足のディスク（'/mnt/disk1'〜'/mnt/disk3'）のディレクトリを，作業用一時ファイルの格納先として指定しています。

■ディレクトリパスファイルの指定例（変更後）

/mnt/largedisk1/xxxxx
/mnt/largedisk2/yyyyy
/mnt/largedisk3/zzzzz

［説明］

変更前に'/mnt/disk1'〜'/mnt/disk3'を指定していた個所に，容量が大きい別のディスク（'/mnt/largedisk1'〜'/mnt/largedisk3'）をそれぞれ指定して，作業用一時ファイルの格納先を変更します。

adbidxrebuildコマンドを実行する

-wオプションおよび--create-temp-fileオプションの両方を指定して，adbidxrebuildコマンドを実行してください。adbidxrebuildコマンドの指定形式については，マニュアルHADB　コマンドリファレンスのadbidxrebuild（インデクスの再作成）を参照してください。

(b)　コマンドの-wオプションに指定したディレクトリを変更しないとき

手順

作業用一時ファイルを別のディレクトリにコピーする

OSのcpコマンドなどで，コマンドの-wオプションに指定したディレクトリの直下に格納されているすべての作業用一時ファイルを，容量が大きい別のディスクのディレクトリにコピーしてください。

ディレクトリパスファイルに指定したディレクトリの直下に格納されている作業用一時ファイルをコピーする場合について，ディレクトリパスファイルの指定例およびOSのcpコマンドの実行例を次に示します。

■ディレクトリパスファイルの指定例

/mnt/disk1/xxxxx
/mnt/disk2/yyyyy
/mnt/disk3/zzzzz

［説明］

容量不足のディスク（'/mnt/disk1'〜'/mnt/disk3'）のディレクトリを，作業用一時ファイルの格納先として指定しています。

■OSのcpコマンドの実行例

cp -R /mnt/disk1/xxxxx  /mnt/largedisk1/xxxxx
cp -R /mnt/disk2/yyyyy  /mnt/largedisk2/yyyyy
cp -R /mnt/disk3/zzzzz  /mnt/largedisk3/zzzzz

［説明］

容量不足のディスク（'/mnt/disk1'〜'/mnt/disk3'）のディレクトリに格納されている作業用一時ファイルを，容量が大きい別のディスク（'/mnt/largedisk1'〜'/mnt/largedisk3'）のディレクトリにコピーします。

コマンドの-wオプションに指定したディレクトリを削除する

コマンドの-wオプションに指定したディレクトリをOSのrmコマンドなどで削除してください。ディレクトリを削除する際の，OSのrmコマンドの実行例を次に示します。

■OSのrmコマンドの実行例

rm  -r  /mnt/disk1/xxxxx
rm  -r  /mnt/disk2/yyyyy
rm  -r  /mnt/disk3/zzzzz

［説明］

容量不足のディスク（'/mnt/disk1'〜'/mnt/disk3'）のディレクトリを削除します。

容量が大きい別のディスクのディレクトリをリンク先とするシンボリックリンクを作成する

OSのlnコマンドを実行して，容量が大きい別のディスクのディレクトリをリンク先に設定したシンボリックリンクを作成してください。このとき，シンボリックリンクのパス名として，コマンドの-wオプションに指定したディレクトリを指定します。シンボリックリンクを作成する際の，OSのlnコマンドの実行例を次に示します。

■OSのlnコマンドの実行例

ln  -s /mnt/largedisk1/xxxxx  /mnt/disk1/xxxxx
ln  -s /mnt/largedisk2/yyyyy  /mnt/disk2/yyyyy
ln  -s /mnt/largedisk3/zzzzz  /mnt/disk3/zzzzz

［説明］

容量が大きい別のディスクのディレクトリ（'/mnt/largedisk1/xxxxx'〜'/mnt/largedisk3/zzzzz'）をリンク先に設定して，コマンドの-wオプションに指定したディレクトリ（'/mnt/disk1/xxxxx'〜'/mnt/disk3/zzzzz'）と同名のシンボリックリンク（'/mnt/disk1/xxxxx'〜'/mnt/disk3/zzzzz'）を作成します。

中断したコマンドを再実行する

中断したadbimportコマンドまたはadbidxrebuildコマンドを再実行してください。ソート処理またはB-treeインデクスとテキストインデクスの作成処理から，コマンドの処理が再開されます。

なお，コマンドの再実行後，KFAA50247-Eメッセージが出力された場合は，手順1.でコピーした作業用一時ファイルをすべて削除してください。そのあと，--create-temp-fileオプションを指定してadbidxrebuildコマンドを実行してください。

(4)　作業用一時ファイルを格納するディスク容量が小さい場合（adbmergechunkコマンド，adbunarchivechunkコマンドまたはadbreorgsystemdataコマンドが中断したとき）

作業用一時ファイルを格納するディスク容量が小さい場合，作業用一時ファイルの格納先を，容量が大きい別のディスクに変更する必要があります。ここでは，adbmergechunkコマンド，adbunarchivechunkコマンドまたはadbreorgsystemdataコマンドが中断したときの，作業用一時ファイルの格納先を変更する方法を説明します。

中断したコマンドがadbimportコマンドまたはadbidxrebuildコマンドのときの，作業用一時ファイルの格納先を変更する方法については，「(3)　作業用一時ファイルを格納するディスク容量が小さい場合（adbimportコマンドまたはadbidxrebuildコマンドが中断したとき）」を参照してください。

作業用一時ファイルの格納先を変更する方法の手順は，コマンドの-wオプションに指定したディレクトリを変更するかどうかによって異なります。コマンドの-wオプションに指定したディレクトリとは，次のうちどちらかを指します。

コマンドの-wオプションに指定したディレクトリ

コマンドの-wオプションに指定したディレクトリパスファイルに，指定したディレクトリ

コマンドの-wオプションに指定したディレクトリを変更するとき，および変更しないときの手順をそれぞれ次に示します。

(a)　コマンドの-wオプションに指定したディレクトリを変更するとき

手順

コマンドの-wオプションに指定したディレクトリを変更する

コマンドの-wオプションに指定したディレクトリを，容量が大きい別のディスクのディレクトリに変更してください。

ディレクトリパスファイルに指定したディレクトリを変更する場合，ディレクトリパスファイルの指定例については，「(3)　作業用一時ファイルを格納するディスク容量が小さい場合（adbimportコマンドまたはadbidxrebuildコマンドが中断したとき）」を参照してください。

中断したコマンドを再実行する

中断したコマンド（adbmergechunkコマンド，adbunarchivechunkコマンドまたはadbreorgsystemdataコマンド）を再実行してください。

(b)　コマンドの-wオプションに指定したディレクトリを変更しないとき

手順

容量が大きい別のディスクのディレクトリをリンク先とするシンボリックリンクを作成する

OSのlnコマンドを実行して，容量が大きい別のディスクのディレクトリをリンク先に設定したシンボリックリンクを作成してください。このとき，シンボリックリンクのパス名として，コマンドの-wオプションに指定したディレクトリを指定します。

OSのlnコマンドの実行例については，「(3)　作業用一時ファイルを格納するディスク容量が小さい場合（adbimportコマンドまたはadbidxrebuildコマンドが中断したとき）」を参照してください。

中断したコマンドを再実行する

中断したコマンド（adbmergechunkコマンド，adbunarchivechunkコマンドまたはadbreorgsystemdataコマンド）を再実行してください。

16.3　ディスクの空き容量に関するトラブル

ここでは，DBディレクトリ下にあるDBエリアファイル，またはDBエリアファイル以外のファイルの容量が増加し，データを格納するディスクの空き容量が少なくなった場合の対処方法について説明します。

16.3.1　DBエリアファイルの容量増加が原因の場合

DBエリアファイルの容量が増加し，DBエリアファイルを格納しているディスクの空き容量が少なくなった場合，次に示すどれかの方法で対処してください。

DBエリアファイルの容量を拡張する

DBエリアファイルの格納場所を変更する

作業表用DBエリアファイルのサイズを小さくする

上記の方法で対処できない場合は，「11.13.6　データ用DBエリアの空き容量を確保する方法」を参照して，DBエリアの空き容量を確保してください。

(1)　DBエリアファイルの容量を拡張する

DBエリアファイルの容量を拡張する場合，レギュラーファイルとブロックスペシャルファイルで，対処方法が異なります。それぞれの対処方法を，次に示します。

レギュラーファイルの場合

不要なファイルを削除して，ディスクの空き容量を増やしてください。

ディスクの空き容量を増やすことで，DBエリアファイルの上限値まではHADBサーバが自動的に増分します。DBエリアファイルの上限値については，「2.4.5　DBエリアの自動増分」を参照してください。

ブロックスペシャルファイルの場合

OSでサポートしているLVMを使用している場合，LV（Logical Volume）を拡張してください。LVの拡張方法については，OSのマニュアルを参照してください。

LVを拡張すると，DBエリアファイルの上限値まではHADBサーバが自動的に増分します。DBエリアファイルの上限値については，「2.4.5　DBエリアの自動増分」を参照してください。

メモ

LVの拡張は，adbstopコマンドでHADBサーバを正常終了したあとに実行してください。

(2)　DBエリアファイルの格納場所を変更する

DBエリアファイルの格納場所を，容量の大きな別のディスクに変更してください。DBエリアファイルの格納場所を変更する方法を説明します。

格納場所を変更する前のDBエリアファイルの構成例を次の図に示します。

図16‒1　変更前のDBエリアファイルの構成例

DBディレクトリ下のDBエリアからシンボリックリンクされているブロックスペシャルファイル（/dev/mapper/vol01）は，ディスクが満杯の状態です。空き容量がないため，格納場所を変更する必要があります。

DBエリアファイルの格納場所を変更する方法については，「11.13.5　データ用DBエリアファイルの格納場所を変更する方法」の「(2)　データ用DBエリアファイル（ブロックスペシャルファイル）の格納場所を変更する」を参照してください。

(3)　作業表用DBエリアファイルのサイズを小さくする

レギュラーファイルで構成された作業表用DBエリアファイルのサイズが大きくなったことで，ディスクが満杯になった場合は，次の手順で作業表用DBエリアファイルのサイズを小さくしてください。

手順

adbstopコマンドで，HADBサーバを正常終了してください。

OSのコマンドなどで，作業表用DBエリアファイルを削除してください。

adbstartコマンドで，HADBサーバを正常開始してください。

16.3.2　DBエリアの自動増分の失敗が原因の場合

DBエリアファイルを格納するディスクの空き容量が少ないときに自動増分が行われると，自動増分に失敗することがあります。このとき，KFAA41206-Iメッセージが出力され，メッセージ中にDBエリアファイルを格納するディスクの空き容量がないことを示すエラー番号が表示されます。この場合，DBエリアファイルの格納領域を拡張することを検討してください。

なお，自動増分に失敗したDBエリアファイルは，一時的に満杯状態※となり，表データおよびインデクスデータの格納対象から除かれます。DBエリアを構成するすべてのDBエリアファイルが満杯状態になると，DBエリアが満杯になったことを示すKFAA30756-Eメッセージが出力されます。この場合，DBエリアファイルの格納領域を拡張してください。

DBエリアファイルの格納領域の拡張手順については，「16.3.1　DBエリアファイルの容量増加が原因の場合」を参照してください。

注※

一時的な満杯状態は，次に示す契機で解除されます。

HADBサーバを再起動したとき

DBエリアを構成するすべてのDBエリアファイルが満杯状態になったとき

メモ

作業表用DBエリアファイルは，満杯状態にはなりません。

16.3.3　DBエリアファイル以外のファイルの容量増加が原因の場合

DBディレクトリ下に格納されているDBエリアファイル以外のファイルの容量が増加し，ファイルを格納するディスクの空き容量が少なくなった場合の対処方法について説明します。

(1)　DBディレクトリ下の実体ファイルが原因の場合

DBディレクトリの格納場所を，容量の大きな別のディスクに変更してください。変更方法を次に示します。

変更方法

HADBサーバを終了する

adbstopコマンドを実行してHADBサーバを終了します。

DBディレクトリ下のファイルをコピーする

OSのcpコマンドを実行して，DBディレクトリ下にあるすべてのファイルを，容量の大きな別のディスクにコピーします。

サーバ定義のadb_db_pathオペランドを変更する

adb_db_pathオペランドに，コピー先のDBディレクトリパスを絶対パス名で指定します。サーバ定義ファイルは，サーバディレクトリ下（$ADBDIR/conf）に格納されているserver.defファイルです。テキストエディタで開き，編集してください。

HADBサーバを開始する

adbstartコマンドを実行してHADBサーバを開始します。

(2)　シンボリックリンクしているファイルが原因の場合

DBディレクトリ下のシンボリックリンクしているファイルの格納場所を，容量の大きな別のディスクに変更してください。そのあとで，シンボリックリンクのリンク先を変更してください。変更方法を次に示します。

変更方法

HADBサーバを終了する

adbstopコマンドを実行してHADBサーバを終了します。

リンク先のファイルをコピーする

OSのcpコマンドを実行して，リンク先にあるすべてのファイルを，容量の大きな別のディスクにコピーします。

シンボリックリンクを変更する

OSのlnコマンドを実行して，容量の大きな別のディスクにシンボリックリンクのリンク先を変更します。

HADBサーバを開始する

adbstartコマンドを実行してHADBサーバを開始します。

(3)　統計ログファイルの容量増加が原因の場合

統計ログファイルの出力先を，容量の大きな別のディスクに変更してください。変更方法を次に示します。

変更方法

HADBサーバを正常終了する

adbstopコマンドを実行してHADBサーバを正常終了します。

統計ログファイルの出力先を変更する

adb_sta_log_pathオペランドで，統計ログファイルの出力先ディレクトリを指定します。容量の大きな別のディスクに対して，統計ログファイルが出力されるようにしてください。

サーバ定義adb_sta_log_pathオペランドについては，「7.2.8　統計情報に関するオペランド（set形式）」のadb_sta_log_pathオペランドを参照してください。

サーバ定義ファイルは，サーバディレクトリ下（$ADBDIR/conf）に格納されているserver.defファイルです。テキストエディタで開き，編集してください。

HADBサーバを正常開始する

adbstartコマンドを実行してHADBサーバを正常開始します。

統計ログファイルの出力先を変更した場合，変更前の出力先に，古い統計ログファイルが残ります。古い統計ログファイルが不要な場合は，手動で削除する必要があります。統計ログファイルの削除方法については，「10.10.5　統計ログファイルの運用」の「(4)　統計ログファイルを削除する場合」を参照してください。

16.4　ディスクに関するトラブル

ここでは，ディスクに関するトラブルが発生し，HADBが使用するディレクトリを回復する必要がある場合の対処方法を説明します。

16.4.1　データベースの回復

ディスク障害などのトラブルが発生しデータベースの回復が必要な場合，「10.3.1　バックアップの取得方法」に従って取得したデータベースのバックアップから回復してください。

データベースの回復方法については，「10.3.2　バックアップからの回復方法」を参照してください。

16.4.2　サーバディレクトリの回復

ディスクに対してトラブルが発生しサーバディレクトリの回復が必要な場合，HADBサーバを再インストールして，サーバディレクトリを回復してください。

なお，サーバディレクトリを回復する場合，次に示す条件を満たしていないと，トラブル発生前の状態に戻せません。

HADBサーバのDBディレクトリでは，ディスク障害などのトラブルが発生していない。

サーバディレクトリ下（$ADBDIR/conf，および$ADBDIR/sample）に格納されているすべてのファイルのバックアップを取得している。

サーバディレクトリ下（$ADBDIR）にユーザがファイルを作成している場合，そのファイルのバックアップを取得している。

回復手順

HADBサーバを再インストールする

HADBサーバを再インストールして，サーバディレクトリを作成し直してください。HADBサーバのインストールについては，「8.2.2　HADBサーバのインストール手順」を参照してください。

定義ファイルとサンプルAPをバックアップから回復する

バックアップから，サーバディレクトリ下（$ADBDIR/conf，および$ADBDIR/sample）に格納されているすべてのファイルを格納し直してください。

ユーザが作成したファイルをバックアップから回復する

サーバディレクトリ下（$ADBDIR）にユーザがファイルを作成していた場合，バックアップから，そのファイルを格納し直してください。

HADBサーバを再開始する

adbstartコマンドを実行してください。HADBサーバが再開始されます。

16.4.3　クライアントディレクトリの回復

ディスクに対してトラブルが発生しクライアントディレクトリの回復が必要な場合，HADBクライアントを上書きインストールして，クライアントディレクトリを回復してください。

なお，クライアントディレクトリを回復する場合，次に示す条件を満たしていないと，トラブル発生前の状態に戻せません。

クライアントディレクトリ下（Windows版の場合は%ADBCLTDIR%¥conf，Linux版の場合は$ADBCLTDIR/conf）に格納されている定義ファイルのバックアップを取得している。

クライアントディレクトリ下（Windows版の場合は%ADBCLTDIR%，Linux版の場合は$ADBCLTDIR）にユーザがファイルを作成している場合，そのファイルのバックアップを取得している。

回復手順

HADBクライアントを回復する

HADBクライアントを上書きインストールして，クライアントディレクトリを回復してください。マニュアルHADB　AP開発ガイドのHADBクライアントのインストールおよびアンインストールを参照してください。

定義ファイルをバックアップから回復する

バックアップから，クライアントディレクトリ（Windows版の場合は%ADBCLTDIR%¥conf，Linux版の場合は$ADBCLTDIR/conf）下に格納されている定義ファイルを格納し直してください。

ユーザが作成したファイルをバックアップから回復する

クライアントディレクトリ下（Windows版の場合は%ADBCLTDIR%，Linux版の場合は$ADBCLTDIR）にユーザがファイルを作成していた場合，バックアップから，そのファイルを格納し直してください。

16.5　DBディレクトリ下のファイルに関するトラブル

ここでは，DBディレクトリ下に格納されるファイルで発生したトラブルの対処方法について説明します。

16.5.1　DBエリアファイルに障害が発生した場合の対処

DBエリアファイルに障害が発生した場合は，出力されたメッセージの対処方法に従ってください。

DBエリアファイルの障害を解消できない場合は，バックアップからデータベースを回復してください。

16.5.2　システムログファイルでトラブルが発生した場合の対処

システムログファイル（マスタログファイル，およびユーザログファイル）でトラブルが発生した場合，次に示すメッセージが出力されます。

KFAA30959-Eメッセージ

KFAA41205-Eメッセージ

上記のメッセージに出力されたシステムコールのリターンコードを確認しても発生したトラブルを解消できない場合，次に示す作業を行ってください。

作業手順

HADBサーバを再度開始できるか確認する

HADBサーバをadbstopコマンドで終了，およびadbstartコマンドで再度開始できるか確認してください。HADBサーバを再度開始すると，前回稼働時に利用されていたマスタログファイルの領域は初期化されます。そのため，マスタログファイルの容量不足が原因の場合，HADBサーバを再度開始することでトラブルを解消できます。

HADBサーバを再度開始できない場合は，手順2.に進んでください。

DBディレクトリが格納されているディスクの空き容量を確認する

システムログファイルは，DBディレクトリ下（$DBDIR/ADBSYS/ADBSLG）に格納されます。DBディレクトリが格納されているディスクの空き容量があるかどうかを確認してください。ディスクの空き容量がない場合，「16.3.3　DBエリアファイル以外のファイルの容量増加が原因の場合」に従って，ディスクの空き容量を確保してください。

ディスクの空き容量が十分にある場合，手順3.に進んでください。

システムログファイルが壊れているかを確認する

ディスクの空き容量は十分にあるがトラブルを解消できない場合，システムログファイルが壊れているおそれがあります。システムログファイルにアクセスしてもエラーとなる場合はシステムログファイルが壊れているため，手順4.に進んでください。

システムログファイルを回復する

システムログファイルが壊れている場合，バックアップから回復する必要があります。「10.3.1　バックアップの取得方法」に従って取得したデータベースのバックアップがある場合は，「10.3.2　バックアップからの回復方法」に従って，バックアップから回復してください。

なお，データベースのバックアップを取得していない場合，システムログファイルを回復できないため，データベースを再作成する必要があります。

16.6　メモリに関するトラブル

KFAA30930-EメッセージまたはKFAA40007-Eメッセージが出力された場合の対策について説明します。次に示す方法で，HADBサーバが使用できるメモリに余裕を持たせてください。

16.6.1　HADBサーバ開始時にメモリが不足した場合の対処方法

HADBサーバ開始時にKFAA40007-Eメッセージが出力された場合の対処方法を次に示します。対処方法は，サーバ定義adb_sys_memory_limitオペランドの指定の有無によって異なります。

(1)　サーバ定義adb_sys_memory_limitオペランドを指定している場合

HADBサーバが使用するメモリが不足しています。サーバ定義のadb_sys_memory_limitオペランドの指定値を大きくしてください。対処手順を次に示します。

手順

サーバ定義を変更する

サーバ定義のadb_sys_memory_limitオペランドに，次に示す計算式で求めた値以上の値を指定してください。

計算式（単位：メガバイト）

変数の説明

get_size：KFAA40007-Eメッセージの変数bb....bbの値（単位：バイト）

HADBサーバを開始する

adbstartコマンドを実行して，HADBサーバを開始してください。

メモ

サーバ定義のadb_sys_memory_limitオペランドについては，「7.2.2　性能に関するオペランド（set形式）」のadb_sys_memory_limitオペランドを参照してください。

(2)　サーバ定義adb_sys_memory_limitオペランドを指定していない場合

KFAA40007-Eメッセージに出力された，不足しているメモリの種類を示す変数aa....aaを確認してください。aa....aaによって対策が異なります。

(a)　aa....aaがPROCESSの場合

プロセス共通メモリが不足しています。サーバ定義のadb_sys_proc_area_maxオペランドの指定値を大きくしてください。対処手順を次に示します。

手順

サーバ定義を変更する

サーバ定義のadb_sys_proc_area_maxオペランドに，次に示す計算式で求めた値以上の値を指定してください。

計算式（単位：メガバイト）

変数の説明

max_size：adb_sys_proc_area_maxオペランドの確保できるプロセス共通メモリの最大サイズに指定していた値（単位：メガバイト）

get_size：KFAA40007-Eメッセージの変数bb....bbの値（単位：バイト）

HADBサーバを開始する

adbstartコマンドを実行して，HADBサーバを開始してください。

メモ

サーバ定義のadb_sys_proc_area_maxオペランドについては，「7.2.2　性能に関するオペランド（set形式）」のadb_sys_proc_area_maxオペランドを参照してください。

(b)　aa....aaがTHREADの場合

リアルスレッド固有メモリが不足しています。サーバ定義のadb_sys_rthd_area_maxオペランドの指定値を大きくしてください。対処手順を次に示します。

手順

サーバ定義を変更する

サーバ定義のadb_sys_rthd_area_maxオペランドに，次に示す計算式で求めた値以上の値を指定してください。

計算式（単位：メガバイト）

変数の説明

max_size：adb_sys_rthd_area_maxオペランドの確保できるリアルスレッド固有メモリの最大サイズに指定していた値（単位：メガバイト）

get_size：KFAA40007-Eメッセージの変数bb....bbの値（単位：バイト）

HADBサーバを開始する

adbstartコマンドを実行して，HADBサーバを開始してください。

メモ

サーバ定義のadb_sys_rthd_area_maxオペランドについては，「7.2.2　性能に関するオペランド（set形式）」のadb_sys_rthd_area_maxオペランドを参照してください。

(c)　aa....aaがHEAPの場合

ヒープメモリが不足しています。対処手順を次に示します。

手順

不要なプロセスがないかどうかを確認してください。不要なプロセスがある場合は，そのプロセスを終了または削除してください。そのあとに，adbstartコマンドを実行して，HADBサーバを開始してください。

手順1.を実施してもメモリが不足する場合は，次の対処をしてください。

OSを再起動する

adbstartコマンドを実行して，HADBサーバを開始する

手順2.を実施してもメモリが不足する場合は，次の対処をしてください。

カーネルパラメタの設定を変更し，プロセスで使用できるメモリの上限を大きくする

OSを再起動する

adbstartコマンドを実行して，HADBサーバを開始する

(d)　aa....aaがSHAREの場合

共有メモリが不足しています。対処手順を次に示します。

手順

不要なプロセス，および不要な共有メモリがないかどうかを確認してください。不要なプロセスがある場合は終了してください。不要な共有メモリがある場合は削除してください。そのあとに，adbstartコマンドを実行して，HADBサーバを開始してください。

手順1.を実施しても共有メモリが不足する場合は，次の対処をしてください。

OSを再起動する

adbstartコマンドを実行して，HADBサーバを開始する

手順2.を実施しても共有メモリが不足する場合は，次の対処をしてください。

カーネルパラメタの設定を変更し，共有メモリの上限を大きくする

また，HADBサーバの共有メモリにHugePagesを適用している場合，カーネルパラメタがHugePagesを使用できる設定になっていることを確認してください。詳細については，「6.2　カーネルパラメタの見積もり」を参照してください。

OSを再起動する

adbstartコマンドを実行して，HADBサーバを開始する

16.6.2　SQL文実行時またはコマンド実行時にメモリが不足した場合の対処方法

SQL文実行時またはコマンド実行時に次のメッセージが出力された場合の対処方法を示します。

出力されたメッセージ

KFAA30930-E

KFAA40007-E

対処方法は，サーバ定義adb_sys_memory_limitオペランドの指定の有無によって異なります。

(1)　サーバ定義adb_sys_memory_limitオペランドを指定している場合

HADBサーバが使用するメモリが不足しています。サーバ定義のadb_sys_memory_limitオペランドの指定値を大きくしてください。対処手順を次に示します。

手順

HADBサーバを終了する

adbstopコマンドを実行して，HADBサーバを終了してください。

サーバ定義を変更する

サーバ定義のadb_sys_memory_limitオペランドに，次に示す計算式で求めた値以上の値を指定してください。

計算式（単位：メガバイト）

変数の説明

get_size：KFAA30930-EメッセージおよびKFAA40007-Eメッセージの変数bb....bbの値（単位：バイト）

HADBサーバを開始する

adbstartコマンドを実行して，HADBサーバを開始してください。

SQL文またはコマンドを再実行する

メモ

サーバ定義のadb_sys_memory_limitオペランドについては，「7.2.2　性能に関するオペランド（set形式）」のadb_sys_memory_limitオペランドを参照してください。

(2)　サーバ定義adb_sys_memory_limitオペランドを指定していない場合

KFAA30930-EメッセージおよびKFAA40007-Eメッセージに出力された，不足しているメモリの種類を示す変数aa....aaを確認してください。aa....aaによって対策が異なります。

(a)　aa....aaがPROCESSの場合

プロセス共通メモリが不足しています。サーバ定義のadb_sys_proc_area_maxオペランドの指定値を大きくしてください。対処手順を次に示します。

手順

HADBサーバが使用したメモリ容量の最大値を確認する

adbls -d memコマンドを実行してください。出力結果から，出力項目「THREAD-NO」が0の行に表示されている「MAX」の値を確認してください。

adbls -d memコマンドについては，マニュアルHADB　コマンドリファレンスのadbls -d mem（メモリの使用状況の表示）を参照してください。

HADBサーバを終了する

adbstopコマンドを実行して，HADBサーバを終了してください。

サーバ定義を変更する

サーバ定義のadb_sys_proc_area_maxオペランドに，次に示す計算式で求めた値以上の値を指定してください。

計算式（単位：メガバイト）

変数の説明

max_size：手順1.で確認した「MAX」の値（単位：バイト）

get_size：出力されたメッセージの変数bb....bbの値（単位：バイト）

HADBサーバを開始する

adbstartコマンドを実行して，HADBサーバを開始してください。

SQL文またはコマンドを再実行する

メモ

サーバ定義のadb_sys_proc_area_maxオペランドについては，「7.2.2　性能に関するオペランド（set形式）」のadb_sys_proc_area_maxオペランドを参照してください。

(b)　aa....aaがTHREADの場合

リアルスレッド固有メモリが不足しています。サーバ定義のadb_sys_rthd_area_maxオペランドの指定値を大きくしてください。対処手順を次に示します。

手順

HADBサーバが使用したメモリ容量の最大値を確認する

adbls -d memコマンドを実行してください。出力結果から，出力項目「THREAD-NO」が1以上の行に表示されている「MAX」のうち，最も大きな値を確認してください。

adbls -d memコマンドについては，マニュアルHADB　コマンドリファレンスのadbls -d mem（メモリの使用状況の表示）を参照してください。

HADBサーバを終了する

adbstopコマンドを実行して，HADBサーバを終了してください。

サーバ定義を変更する

サーバ定義のadb_sys_rthd_area_maxオペランドに，次に示す計算式で求めた値以上の値を指定してください。

計算式（単位：メガバイト）

変数の説明

max_size：手順1.で確認した最も大きな「MAX」の値（単位：バイト）

get_size：出力されたメッセージの変数bb....bbの値（単位：バイト）

HADBサーバを開始する

adbstartコマンドを実行して，HADBサーバを開始してください。

SQL文またはコマンドを再実行する

メモ

サーバ定義のadb_sys_rthd_area_maxオペランドについては，「7.2.2　性能に関するオペランド（set形式）」のadb_sys_rthd_area_maxオペランドを参照してください。

(c)　aa....aaがHEAPの場合

ヒープメモリが不足しています。対処手順を次に示します。

手順

不要なプロセスがないかどうかを確認してください。不要なプロセスがある場合は，そのプロセスを終了または削除してください。

手順1.を実施してもメモリが不足する場合は，次の対処をしてください。

adbstopコマンドを実行して，HADBサーバを終了する

adbstartコマンドを実行して，HADBサーバを開始する

手順2.を実施してもメモリが不足する場合は，次の対処をしてください。

adbstopコマンドを実行して，HADBサーバを終了する

OSを再起動する

adbstartコマンドを実行して，HADBサーバを開始する

クライアントで発生した場合は，クライアントのOSを再起動してください。

手順3.を実施してもメモリが不足する場合は，次の対処をしてください。

adbstopコマンドを実行して，HADBサーバを終了する

カーネルパラメタの設定を変更し，プロセスで使用できるメモリの上限を大きくする

OSを再起動する

adbstartコマンドを実行して，HADBサーバを開始する

クライアントで発生した場合は，クライアントのカーネルパラメタの設定を変更し，プロセスで使用できるメモリの上限を大きくしてください。そのあとに，クライアントのOSを再起動してください。

SQL文またはコマンドを再実行する

(d)　aa....aaがSHAREの場合

共有メモリが不足しています。対処手順を次に示します。

手順

不要なプロセス，および不要な共有メモリがないかどうかを確認してください。不要なプロセスがある場合は終了してください。不要な共有メモリがある場合は削除してください。

手順1.を実施しても共有メモリが不足する場合は，次の対処をしてください。

adbstopコマンドを実行して，HADBサーバを終了する

adbstartコマンドを実行して，HADBサーバを開始する

手順2.を実施しても共有メモリが不足する場合は，次の対処をしてください。

adbstopコマンドを実行して，HADBサーバを終了する

OSを再起動する

adbstartコマンドを実行して，HADBサーバを開始する

クライアントで発生した場合は，クライアントのOSを再起動してください。

手順3.を実施しても共有メモリが不足する場合は，次の対処をしてください。

adbstopコマンドを実行して，HADBサーバを終了する

カーネルパラメタの設定を変更し，共有メモリの上限を大きくする

また，HADBサーバの共有メモリにHugePagesを適用している場合，カーネルパラメタがHugePagesを使用できる設定になっていることを確認してください。詳細については，「6.2　カーネルパラメタの見積もり」を参照してください。

OSを再起動する

adbstartコマンドを実行して，HADBサーバを開始する

クライアントで発生した場合は，クライアントの共有メモリの上限を大きくしてください。そのあとに，クライアントのOSを再起動してください。

SQL文またはコマンドを再実行する

16.7　DBエリアに関するトラブル

ここでは，データ用DBエリアに関するトラブルがあった場合の対処方法について説明します。

16.7.1　データ用DBエリアが満杯になった場合

ここでは，データ用DBエリアが満杯になった場合の対処方法について説明します。

データ用DBエリアが満杯になると，KFAA30756-Eメッセージが出力されます。データ用DBエリアが満杯になる場合を次に示します。

データ用DBエリアを構成するデータ用DBエリアファイルを格納したディスクの空き容量がなくなった場合

データ用DBエリアを構成するデータ用DBエリアファイルが自動増分の上限値に達したため，自動増分できない場合

データ用DBエリアが満杯になった場合は，adbmodareaコマンドで，対象のデータ用DBエリアを拡張（データ用DBエリアファイルを追加）する必要があります。「11.13.3　データ用DBエリアを拡張する方法（データ用DBエリアファイルの追加）」を参照して，対象のデータ用DBエリアを拡張してください。

なお，1つのデータ用DBエリアを構成するデータ用DBエリアファイル数の上限は，1,024個です。上限を超えて，データ用DBエリアファイルを追加できません。そのため，1,024個のデータ用DBエリアファイルで構成されているデータ用DBエリアの容量を拡張したい場合は，「16.7.3　データ用DBエリアを拡張できなくなった場合」を参照してください。

また，データ用DBエリアファイルを格納したディスクの空き容量がなくなった場合は，次の方法でも対処できます。

DBエリアファイルの容量を拡張する

DBエリアファイルの格納場所を変更する

詳細については，「16.3.1　DBエリアファイルの容量増加が原因の場合」を参照してください。

16.7.2　データ用DBエリアを追加できなくなった場合

ここでは，新たにデータ用DBエリアを追加できなくなった場合の対処方法について説明します。

HADBサーバが管理できるデータ用DBエリアの数は，最大1,014個です。上限を超えて，データ用DBエリアを追加できません。

そのため，1,014個のデータ用DBエリアがある場合に，新たにデータ用DBエリアを追加したいときは，既存のデータ用DBエリアを統合して，管理できるデータ用DBエリアの数の上限に余裕を持たせる必要があります。

メモ

データ用DBエリアを統合する場合は，データ量が少ない（数メガバイト）実表やインデクスが格納されているデータ用DBエリアを対象とすることを推奨します。詳細については，「5.6.1　データ用DBエリアを設計する際の考慮点」を参照してください。

(1)　表とインデクスを格納したデータ用DBエリアを削除して統合する（adbidxrebuildコマンドの実行が不要な場合）

表とインデクスを格納したデータ用DBエリアを削除して統合する方法を，次に示します。

図16‒2　既存のデータ用DBエリアの統合例1

■実表とB-treeインデクスの関係

実表Aに，B-treeインデクスAおよびB-treeインデクスBが定義されています。

実表Cに，B-treeインデクスCが定義されています。

削除対象のデータ用DBエリアに格納された表のデータを出力する

adbexportコマンドで，実表のデータを出力データファイルに出力してください。ここでは，「データ用DBエリア1014」に格納された実表Cのデータが対象になります。

削除対象のデータ用DBエリアに格納された表やインデクスを削除する

削除対象のデータ用DBエリアに定義されている実表およびインデクスを，DROP TABLE文で削除してください。DROP TABLE文を実行すると実表に定義されているインデクスもあわせて削除されます。ここでは，「データ用DBエリア1014」に格納された実表C，およびB-treeインデクスCが対象になります。

削除対象のデータ用DBエリアを削除する

削除対象のデータ用DBエリアを，adbmodareaコマンドで削除してください。ここでは，「データ用DBエリア1014」が対象になります。

統合先のデータ用DBエリアに表やインデクスを再定義する

手順2.で削除した実表およびインデクスを，統合先のデータ用DBエリアに，CREATE TABLE文やCREATE INDEX文で再定義してください。ここでは，「データ用DBエリア1013」に対して実表C，およびB-treeインデクスCを再定義してください。

出力した表の全データを再格納する

手順1.で出力した実表の全データを，手順4.で再定義した実表にadbimportコマンドで再格納してください。ここでは，再定義した実表Cに対してデータを再格納してください。

既存のデータ用DBエリアを統合することで，データ用DBエリアの数の上限に余裕ができたため，新たにデータ用DBエリアを追加できます。

(2)　表とインデクスを格納したデータ用DBエリアを削除して統合する（adbidxrebuildコマンドの実行が必要な場合）

表とインデクスを格納したデータ用DBエリアを削除して統合する方法を，次に示します。

図16‒3　既存のデータ用DBエリアの統合例2

■実表とB-treeインデクスの関係

実表Aに，B-treeインデクスA，B-treeインデクスBおよびB-treeインデクスCが定義されています。

実表Bに，インデクスは定義されていません。

削除対象のデータ用DBエリアに格納された表のデータを出力する

adbexportコマンドで，実表のデータを出力データファイルに出力してください。ここでは，「データ用DBエリア1014」に格納された実表Bのデータが対象になります。

削除対象のデータ用DBエリアに格納された表やインデクスを削除する

削除対象のデータ用DBエリアに定義されている実表をDROP TABLE文で削除してください。また，インデクスをDROP INDEX文で削除してください。ここでは，「データ用DBエリア1014」に格納された実表B，およびB-treeインデクスCが対象になります。

削除対象のデータ用DBエリアを削除する

削除対象のデータ用DBエリアを，adbmodareaコマンドで削除してください。ここでは，「データ用DBエリア1014」が対象になります。

統合先のデータ用DBエリアに表やインデクスを再定義する

手順2.で削除した実表およびインデクスを，統合先のデータ用DBエリアに，CREATE TABLE文やCREATE INDEX文で再定義してください。ここでは，「データ用DBエリア1013」に対して実表Bを再定義してください。また，実表Aに対してB-treeインデクスCを再定義してください。

出力した表の全データを再格納する

手順1.で出力した実表の全データを，手順4.で再定義した実表にadbimportコマンドで再格納してください。ここでは，再定義した実表Bに対してデータを再格納してください。

インデクスを再作成する

手順4.で再定義したインデクスは未完状態のため，インデクスの再作成が必要です。adbidxrebuildコマンドでインデクスを再作成してください。ここでは，B-treeインデクスCを再定義した実表Aに対して，adbidxrebuildコマンドを実行してください。

既存のデータ用DBエリアを統合することで，データ用DBエリアの数の上限に余裕ができたため，新たにデータ用DBエリアを追加できます。

(3)　インデクスだけを格納したデータ用DBエリアを削除して統合する

インデクスだけを格納したデータ用DBエリアを削除して統合する方法を，次に示します。

図16‒4　既存のデータ用DBエリアの統合例3

■実表とB-treeインデクスの関係

実表Aに，B-treeインデクスAが定義されています。

削除対象のデータ用DBエリアに格納されたインデクスを削除する

削除対象のデータ用DBエリアに定義されているインデクスを，DROP INDEX文で削除してください。ここでは，「データ用DBエリア1014」に格納されたB-treeインデクスAが対象になります。

削除対象のデータ用DBエリアを削除する

削除対象のデータ用DBエリアを，adbmodareaコマンドで削除してください。ここでは，「データ用DBエリア1014」が対象になります。

統合先のデータ用DBエリアにインデクスを再定義する

手順1.で削除したインデクスを，統合先のデータ用DBエリアに，CREATE INDEX文で再定義してください。ここでは，「データ用DBエリア1013」に格納されている実表Aに対して，B-treeインデクスAを再定義してください。

インデクスを再作成する

手順3.で再定義したインデクスは未完状態のため，インデクスの再作成が必要です。adbidxrebuildコマンドでインデクスを再作成してください。ここでは，B-treeインデクスAを再定義した実表Aに対して，adbidxrebuildコマンドを実行してください。

既存のデータ用DBエリアを統合することで，データ用DBエリアの数の上限に余裕ができたため，新たにデータ用DBエリアを追加できます。

16.7.3　データ用DBエリアを拡張できなくなった場合

ここでは，adbmodareaコマンドを使用して，既存のデータ用DBエリアを拡張できなくなった場合の対処方法について説明します。

1つのデータ用DBエリアを構成するデータ用DBエリアファイル数の上限は，1,024個です。上限を超えて，データ用DBエリアファイルを追加できません。

そのため，1,024個のデータ用DBエリアファイルで構成されているデータ用DBエリアの容量を拡張したい場合は，データ用DBエリアを再作成する必要があります。手順を次に示します。

表の全データを出力する

adbexportコマンドで，実表の全データを出力データファイルに出力してください。

表やインデクスを削除する

対象のデータ用DBエリアに定義されている実表やインデクス（B-treeインデクス，テキストインデクスおよびレンジインデクス）を削除します。

実表だけが定義されている場合，または実表とインデクスが定義されている場合は，DROP TABLE文で削除してください。DROP TABLE文を実行すると実表に定義されているインデクスもあわせて削除されます。インデクスだけが定義されている場合は，DROP INDEX文で削除してください。

データ用DBエリアを削除する

対象のデータ用DBエリアを，adbmodareaコマンドで削除してください。

新たにデータ用DBエリアを追加する

adbmodareaコマンドで，新たにデータ用DBエリアを追加してください。

その際，DBエリア追加・変更オプションのadbaddareaオペランドの-iオプションに指定する初期確保サイズ，および作成するデータ用DBエリアファイル数については，今後追加するデータ量を考慮して，十分な容量を指定してください。

表やインデクスを再定義する

手順2.で削除した実表やインデクスを，手順4.で新たに追加したデータ用DBエリアに，CREATE TABLE文やCREATE INDEX文で再定義してください。

出力した表の全データを再格納する

手順1.で出力した実表の全データを，手順5.で再定義した実表にadbimportコマンドで再格納してください。

16.8　実表に関するトラブル

ここでは，実表に対して発生したトラブルの対処方法について説明します。

16.8.1　実表が更新不可状態になった場合

次に示すコマンドが中断した場合，表の情報とインデクスの情報との不整合が原因で，処理対象の実表が更新できない状態になることがあります。これを，実表の更新不可状態といいます。

■対象のコマンド

adbimportコマンド

adbidxrebuildコマンド

adbunarchivechunkコマンド

更新不可状態の実表に対して，次に示す操作を行うとエラーになります。

■エラーになる操作

ALTER TABLE文の実行

CREATE INDEX文の実行

INSERT文の実行

UPDATE文の実行

DELETE文の実行

PURGE CHUNK文の実行

adbmergechunkコマンドの実行

adbchgchunkstatusコマンドの実行

adbchgchunkcommentコマンドの実行

adbimportコマンドの実行※1

adbidxrebuildコマンドの実行※1

adbarchivechunkコマンドの実行

adbunarchivechunkコマンドの実行※2

注※1

adbunarchivechunkコマンドが中断して，実表が更新不可状態になった場合にエラーになります。adbimportコマンドまたはadbidxrebuildコマンドが中断して，実表が更新不可状態になった場合はエラーになりません。

注※2

adbimportコマンドまたはadbidxrebuildコマンドが中断して，実表が更新不可状態になった場合にエラーになります。adbunarchivechunkコマンドが中断して，実表が更新不可状態になった場合はエラーになりません。

メモ

TRUNCATE TABLE文は実行できます。実表の行データはすべて削除されるため，実表の更新不可状態は解除されます。

(1)　実表の更新不可状態を解除する方法

実表の更新不可状態を解除する手順を次に示します。

手順

対象の実表が更新不可状態かどうかを確認する

実表の更新不可状態は，adbdbstatusコマンドで確認できます。「10.9.2　実表の状態や使用量を確認したい場合」を参照してください。

実表の更新不可状態の場合，手順2.に進んでください。

実表の更新不可状態を解除する

中断したコマンドを再実行してください。

adbimportコマンドが中断した場合

adbimportコマンドを再実行してください。詳細については，マニュアルHADB　コマンドリファレンスのadbimport（データのインポート）のadbimportコマンドが異常終了したときの対処方法を参照してください。

adbidxrebuildコマンドが中断した場合

adbidxrebuildコマンドを再実行してください。詳細については，マニュアルHADB　コマンドリファレンスのadbidxrebuild（インデクスの再作成）のadbidxrebuildコマンドが異常終了したときの対処方法を参照してください。

adbunarchivechunkコマンドが中断した場合

adbunarchivechunkコマンドを再実行してください。詳細については，マニュアルHADB　コマンドリファレンスのadbunarchivechunk（チャンクのアンアーカイブ）のadbunarchivechunkコマンドが異常終了したときの対処方法を参照してください。

再実行したコマンドが正常終了すると，表の情報とインデクスの情報との不整合が解消されて，更新不可状態が解除されます。

コマンドの再実行時にエラーが発生した場合は，「(2)　コマンドの再実行時にエラーが発生したときの対処方法」を参照してください。

(2)　コマンドの再実行時にエラーが発生したときの対処方法

コマンドを再実行する際，次の原因によってエラーが発生する場合があります。該当する原因に従って，対処してください。

■コマンドの再実行時に発生するエラーの原因

中断したコマンドによって作成された作業用一時ファイル，またはコマンドステータスファイルにアクセスできない場合

「対処方法1」を参照してください。

実表の更新不可状態を解除しないでバージョンアップした場合

「対処方法1」を参照してください。

インデクスを格納しているデータ用DBエリアの空き容量が不足している場合

「対処方法2」を参照してください。

■対処方法1

次のメッセージが，メッセージログファイルに出力されているかどうかを確認してください。

KFAA50244-Eメッセージ

KFAA50247-Eメッセージ

上記のメッセージが出力されているかどうかによって対処が異なります。上記以外のメッセージが出力されている場合は，出力されたメッセージに従って対処してください。対処が完了すると，実表の更新不可状態が解除されます。

KFAA50244-Eメッセージが出力されている場合

再実行できなかったコマンドによって，対処が異なります。

adbimportコマンドまたはadbidxrebuildコマンドの再実行がエラーになった場合

--forceオプションを指定して，adbidxrebuildコマンドを実行してください。

なお，中断したコマンドが，バックグラウンドインポートを適用した（-bオプションを指定した）adbimportコマンドのときは，adbidxrebuildコマンドに--forceオプションを指定して実行すると，adbimportコマンドで処理中だった表データの格納情報が削除されます。この場合は，adbidxrebuildコマンドを実行したあとに，-bオプションを指定して，中断したadbimportコマンドを再実行してください。

adbidxrebuildコマンドの--forceオプションについては，マニュアルHADB　コマンドリファレンスのadbidxrebuild（インデクスの再作成）のadbidxrebuildコマンドの指定形式を参照してください。

adbunarchivechunkコマンドの再実行がエラーになった場合

--forceオプションを指定して，adbunarchivechunkコマンドを実行してください。

adbunarchivechunkコマンドの--forceオプションについては，マニュアルHADB　コマンドリファレンスのadbunarchivechunk（チャンクのアンアーカイブ）のadbunarchivechunkコマンドの指定形式を参照してください。

KFAA50247-Eメッセージが出力されている場合

--create-temp-fileオプションを指定して，adbidxrebuildコマンドを実行してください。

adbidxrebuildコマンドの--create-temp-fileオプションについては，マニュアルHADB　コマンドリファレンスのadbidxrebuild（インデクスの再作成）のadbidxrebuildコマンドの指定形式を参照してください。

■対処方法2

次のメッセージが，メッセージログファイルに出力されます。

KFAA30756-Eメッセージ

KFAA61210-Eメッセージ

まずは，データ用DBエリアを拡張したあとで，コマンドを再実行してください。データ用DBエリアの拡張については，「11.13.3　データ用DBエリアを拡張する方法（データ用DBエリアファイルの追加）」を参照してください。

データ用DBエリアを拡張できなかった場合は，データ用DBエリアの空き容量を確保したあとで，コマンドを再実行してください。データ用DBエリアの空き容量の確保については，「11.13.6　データ用DBエリアの空き容量を確保する方法」を参照してください。

データ用DBエリアの空き容量も確保できない場合は，次の方法で実表の更新不可状態を解除してください。ただし，次の方法では，実表の更新不可状態を解除する前に，データ用DBエリアの空き容量の確保を目的として，インデクスをいったん削除します。実表の更新不可状態を解除したあとに，インデクスを再定義して再作成します。そのため，データ用DBエリアには，インデクスを再作成するための空き容量が必要になります。空き容量がないとインデクスを再作成できないため，インデクスを再作成するための空き容量を確保できるかどうかを事前に確認してください。そのあとで，実表の更新不可状態を解除してください。データ用DBエリアの空き容量を確保する方法については，「11.13.6　データ用DBエリアの空き容量を確保する方法」を参照してください。確認した結果，インデクスを再作成するための空き容量が確保できない場合は，再度データ用DBエリアの拡張を検討してください。

手順

削除するインデクスを決定する

更新不可状態を解除する実表に定義されていて，空き容量が不足しているデータ用DBエリアに格納されているインデクスの中から，いったん削除するインデクスを決定してください。

インデクスの定義情報を取得する

手順1.で決定したインデクスをいったん削除したあとに，同じ定義情報でインデクスを再作成できるように，必要な定義情報を取得しておいてください。

インデクスの定義情報の取得については，「付録B.24　ディクショナリ表の検索」の「(30)　インデクスの定義情報を調べる場合」を参照してください。

インデクスを削除する

手順1.で決定したインデクスをいったん削除してください。

インデクスの削除については，「11.4.9　インデクスの削除」を参照してください。

前回中断したコマンドを再実行する

更新不可状態を解除する実表に対して，前回中断したコマンドを再実行してください。コマンドが正常終了した場合は，実表の更新不可状態が解除されます。

中断したコマンドを確認する方法については，「10.9.2　実表の状態や使用量を確認したい場合」の「(1)　実表が更新不可状態かどうかを確認する場合」を参照してください。

コマンドがエラーになった場合は手順5.に進んでください。コマンドが正常終了した場合は，手順6.に進んでください。

手順4.で実行したコマンドがエラーになった場合の対処を行う

データ用DBエリアの空き容量不足でエラーになった場合

データ用DBエリアの空き容量を確保するために，ほかのインデクスも削除する必要があります。ほかのインデクスに対して，手順1.から再度実行してください。

データ用DBエリアの空き容量不足以外でエラーになった場合

出力されたエラーメッセージを確認し，エラー要因を取り除いてください。そのあとで，再度コマンドを実行してください。

コマンドが正常終了した場合は，実表の更新不可状態が解除されます。コマンドが正常終了した場合は，手順6.に進んでください。

インデクスを再作成するためにデータ用DBエリアの空き容量を確保する

インデクスを再作成するために，手順3.で削除したインデクスが格納されていたデータ用DBエリアの空き容量を確保してください。

空き容量の確保については，「11.13.6　データ用DBエリアの空き容量を確保する方法」を参照してください。

インデクスを再定義する

手順2.で取得しておいた定義情報を基に，削除したインデクスを再定義してください。

インデクスを再作成する

手順7.で再定義したインデクスを再作成してください。インデクスの再作成については，次のどれかを参照してください。

「11.4.2　B-treeインデクスの再作成」

「11.4.3　テキストインデクスの再作成」

「11.4.5　レンジインデクスの再作成」

(3)　更新不可状態の実表を検索した場合

更新不可状態の実表は，SELECT文で検索できます。また，更新不可状態の実表に対してCOPY文も実行できます。ただし，中断したコマンドによって検索結果が異なります。

■adbimportコマンドの場合

adbimportコマンド実行時の-dオプションの指定有無によって，検索結果が異なります。

-dオプションを指定しなかった場合

adbimportコマンド実行前の実表に対して検索した場合と同じ結果が返却されます。

-dオプションを指定した場合

インデクスを使用しないSELECT文，およびレンジインデクスを使用したSELECT文の検索結果は，0件になります。また，B-treeインデクスまたはテキストインデクスを使用したSELECT文は，エラーとなります。COPY文も同様です。

■adbidxrebuildコマンドの場合

再作成が完了していないB-treeインデクス，テキストインデクスまたはレンジインデクスを使用したSELECT文を実行すると，インデクスの未完状態によって，エラーとなります。COPY文も同様です。

■adbunarchivechunkコマンドの場合

adbunarchivechunkコマンド実行前の実表に対して検索した場合と同じ結果が返却されます。

16.8.2　実表に列を追加できない場合

定義系SQLのALTER TABLE文を使用して，実表に列を追加できない場合の対処方法について説明します。

次に示すどれかに該当する場合は，実表に列を追加できません。

操作対象の実表が更新不可状態の場合

操作対象の実表が，行を格納するセグメントが割り当てられている状態であり，かつFIX表の場合

操作対象の実表が，行を格納するセグメントが割り当てられている状態であり，かつCREATE TABLE文を実行した際にBRANCH ALLを指定した実表の場合

行を格納するセグメントが割り当てられている状態の実表に対して，ALTER TABLE文の列定義でNOT NULLを指定した場合

このうち，「実表が更新不可状態になっている場合」は，「16.8.1　実表が更新不可状態になった場合」を参照して，更新不可状態を解除したあとで，ALTER TABLE文を再実行してください。

それ以外の場合は，次に示す対処方法で，列を追加してください。

■実表に列を追加できない場合の対処方法

実表のデータをファイルに出力する

adbexportコマンドを実行して，実表のすべてのデータをファイルに出力してください。出力データファイルが作成されます。ここで作成された出力データファイルは，手順4.および手順5.で使用する入力データファイルとなります。

実表の全行データを削除する

TRUNCATE TABLE文を実行して，実表のすべての行データを削除してください。

実表に列を追加する

ALTER TABLE文を再実行して，実表に列を追加してください。

入力データファイルを編集する

手順1.で作成した入力データファイルに対して，手順3.で追加した列に格納するデータを追加してください

実表にデータを格納する

adbimportコマンドを実行して，手順4.で編集した入力データファイルのデータを，実表に格納してください。

メモ

行を格納するセグメントが割り当てられている状態については，「5.3.1　B-treeインデクスを定義する場合の注意点（B-treeインデクスの未完状態）」を参照してください。

16.9　B-treeインデクスに関するトラブル

ここでは，B-treeインデクスに対して発生したトラブルの対処方法について説明します。

16.9.1　B-treeインデクスが未完状態になったときの対処方法

行を格納するセグメントが割り当てられている状態の実表に対してB-treeインデクスを定義すると，B-treeインデクスが未完状態（B-treeインデクスのデータが作成されていない状態）になります。行を格納するセグメントが割り当てられている状態については，「5.3.1　B-treeインデクスを定義する場合の注意点（B-treeインデクスの未完状態）」を参照してください。

B-treeインデクスが未完状態になると，次に示す操作がエラーになります。

■エラーになる操作

未完状態のB-treeインデクスを使用する検索系SQLの実行

未完状態のB-treeインデクスが定義された表に対するINSERT文，UPDATE文，およびDELETE文の実行

未完状態のB-treeインデクスが定義された実表に対する-dオプションを指定しないadbimportコマンドの実行

未完状態のB-treeインデクスが定義された実表に対するadbmergechunkコマンドの実行

未完状態のB-treeインデクスが定義されたアーカイブマルチチャンク表に対するadbunarchivechunkコマンドの実行

メモ

TRUNCATE TABLE文は実行できます。TRUNCATE TABLE文で実表の全行を削除した場合，B-treeインデクスのデータも削除されるため，B-treeインデクスの未完状態も解除されます。

B-treeインデクスが未完状態になる原因には，次に示す場合があります。

行を格納するセグメントが割り当てられている状態の実表に対してB-treeインデクスを定義した場合

adbimportコマンドまたはadbidxrebuildコマンドが異常終了した場合

B-treeインデクスが未完状態になった原因によって，未完状態の解除方法が異なります。

(1)　行を格納するセグメントが割り当てられている状態の実表に対してB-treeインデクスを定義した場合

B-treeインデクスが未完状態かどうかを確認する

B-treeインデクスが未完状態かどうかは，adbdbstatusコマンドで確認できます。「10.9.3　B-treeインデクスの状態や使用量を確認したい場合」を参照してください。

B-treeインデクスが未完状態の場合は，手順2.に進んでください。

B-treeインデクスの未完状態を解除する

未完状態のB-treeインデクスが定義されている実表に対して，adbidxrebuildコマンドを実行してください。

adbidxrebuildコマンドを実行して，B-treeインデクスを再作成することで，B-treeインデクスの未完状態が解除されます。

なお，adbimportコマンドが異常終了した状態でCREATE INDEX文を実行した場合，B-treeインデクスが未完状態になることがあります。この場合，--forceオプションを指定してadbidxrebuildコマンドを実行してください。--forceオプションを指定しないでadbidxrebuildコマンドを実行すると，エラーとなります。

adbidxrebuildコマンドについては，マニュアルHADB　コマンドリファレンスのadbidxrebuild（インデクスの再作成）を参照してください。

(2)　adbimportコマンドまたはadbidxrebuildコマンドが異常終了した場合

B-treeインデクスが未完状態かどうかを確認する

B-treeインデクスが未完状態かどうかは，adbdbstatusコマンドで確認できます。「10.9.3　B-treeインデクスの状態や使用量を確認したい場合」を参照してください。

B-treeインデクスが未完状態の場合は，手順2.に進んでください。

B-treeインデクスの未完状態を解除する

未完状態のB-treeインデクスが定義されている実表に対して，adbimportコマンドが異常終了した場合はadbimportコマンドを，adbidxrebuildコマンドが異常終了した場合はadbidxrebuildコマンドを再実行してください。

adbimportコマンドまたはadbidxrebuildコマンドが正常終了したときに，B-treeインデクスの未完状態が解除されます。

16.9.2　一意性制約に違反した場合の対処方法（KFAA61205-Wメッセージが出力された場合）

ユニークインデクスを定義した表に対して，adbimportコマンドまたはadbidxrebuildコマンドを実行した場合，キー値の重複があり，一意性制約に違反したときでも，各コマンドの処理は続行されます。adbimportコマンドまたはadbidxrebuildコマンドの終了時，一意性制約に違反した旨を示すKFAA61205-Wメッセージが出力されます。

一意性制約に違反したユニークインデクスは，一意性制約がないB-treeインデクスとして扱われます。この状態を，一意性制約違反状態といいます。一意性制約違反状態になると，一意性制約を満たしているときと比べて，検索効率が悪くなるおそれがあります。

(1)　一意性制約違反状態かどうかを確認する方法

KFAA61205-Wメッセージを確認する以外で，ユニークインデクスが一意性制約違反状態かどうかを確認する場合は，adbdbstatusコマンドを実行します。詳細については，「10.9.3　B-treeインデクスの状態や使用量を確認したい場合」を参照してください。

(2)　一意性制約違反状態を解除する方法

ユニークインデクスの一意性制約違反状態を解除する場合，次に示す手順で対処してください。

重複したキー値を検索する

対象のユニークインデクスが定義された表に対してSELECT文を実行して，重複したキー値を検索してください。SELECT文の指定例を次に示します。

■SELECT文の指定例

表T1のC1列およびC2列をインデクス構成列とするユニークインデクスIX1を定義している場合に，一意性制約に違反したキー値を検索します。

SELECT "C1","C2" FROM "T1"
   WHERE "C1" IS NOT NULL AND "C2" IS NOT NULL GROUP BY "C1","C2"
     HAVING COUNT(*) >= 2

重複したキー値を持つ行を削除する

一意性制約に違反したキー値を持つ行を，DELETE文で削除してください。

DELETE文については，マニュアルHADB　SQLリファレンスの操作系SQLのDELETE（行の削除）を参照してください。

B-treeインデクスを再作成する

adbidxrebuildコマンドを実行して，B-treeインデクスを再作成してください。adbidxrebuildコマンドが完了すると，一意性制約違反状態を解除できます。

adbidxrebuildコマンドについては，マニュアルHADB　コマンドリファレンスのadbidxrebuild（インデクスの再作成）を参照してください。

メモ

一意性制約違反状態のユニークインデクスが定義された表に対して，次に示す操作で表のデータをすべて削除した場合も，一意性制約違反状態は解除されます。

adbimportコマンドに-dオプション（作成モード）を指定して実行した場合

TRUNCATE TABLE文を実行した場合

16.10　テキストインデクスに関するトラブル

ここでは，テキストインデクスに対して発生したトラブルの対処方法について説明します。

16.10.1　テキストインデクスが未完状態になったときの対処方法

行を格納するセグメントが割り当てられている状態の実表に対してテキストインデクスを定義すると，テキストインデクスが未完状態（テキストインデクスのデータが作成されていない状態）になります。行を格納するセグメントが割り当てられている状態については，「5.4.3　テキストインデクスを定義する場合の注意点（テキストインデクスの未完状態）」を参照してください。

テキストインデクスが未完状態になると，次に示す操作がエラーになります。

■エラーになる操作

未完状態のテキストインデクスを使用する検索系SQLの実行

未完状態のテキストインデクスが定義された表に対するINSERT文，UPDATE文，およびDELETE文の実行

未完状態のテキストインデクスが定義された実表に対する-dオプションを指定しないadbimportコマンドの実行

未完状態のテキストインデクスが定義された実表に対するadbmergechunkコマンドの実行

未完状態のテキストインデクスが定義されたアーカイブマルチチャンク表に対するadbunarchivechunkコマンドの実行

メモ

TRUNCATE TABLE文は実行できます。TRUNCATE TABLE文で実表の全行を削除した場合，テキストインデクスのデータも削除されるため，テキストインデクスの未完状態も解除されます。

テキストインデクスが未完状態になる原因には，次に示す場合があります。

行を格納するセグメントが割り当てられている状態の実表に対してテキストインデクスを定義した場合

adbimportコマンドまたはadbidxrebuildコマンドが異常終了した場合

テキストインデクスが未完状態になった原因によって，未完状態の解除方法が異なります。

(1)　行を格納するセグメントが割り当てられている状態の実表に対してテキストインデクスを定義した場合

テキストインデクスが未完状態かどうかを確認する

テキストインデクスが未完状態かどうかは，adbdbstatusコマンドで確認できます。「10.9.4　テキストインデクスの状態や使用量を確認したい場合」を参照してください。

テキストインデクスが未完状態の場合は，手順2.に進んでください。

テキストインデクスの未完状態を解除する

未完状態のテキストインデクスが定義されている実表に対して，adbidxrebuildコマンドを実行してください。

adbidxrebuildコマンドを実行して，テキストインデクスを再作成することで，テキストインデクスの未完状態が解除されます。

なお，adbimportコマンドが異常終了した状態でCREATE INDEX文を実行した場合，テキストインデクスが未完状態になることがあります。この場合，--forceオプションを指定してadbidxrebuildコマンドを実行してください。--forceオプションを指定しないでadbidxrebuildコマンドを実行すると，エラーとなります。

adbidxrebuildコマンドについては，マニュアルHADB　コマンドリファレンスのadbidxrebuild（インデクスの再作成）を参照してください。

(2)　adbimportコマンドまたはadbidxrebuildコマンドが異常終了した場合

テキストインデクスが未完状態かどうかを確認する

テキストインデクスが未完状態かどうかは，adbdbstatusコマンドで確認できます。「10.9.4　テキストインデクスの状態や使用量を確認したい場合」を参照してください。

テキストインデクスが未完状態の場合は，手順2.に進んでください。

テキストインデクスの未完状態を解除する

未完状態のテキストインデクスが定義されている実表に対して，異常終了したコマンド（adbimportコマンドまたはadbidxrebuildコマンド）を再実行してください。

再実行したコマンドが正常終了したときに，テキストインデクスの未完状態が解除されます。

16.11　レンジインデクスに関するトラブル

ここでは，レンジインデクスに対して発生したトラブルの対処方法について説明します。

16.11.1　レンジインデクスが未完状態になったときの対処方法

行を格納するセグメントが割り当てられている状態の実表に対してレンジインデクスを定義すると，レンジインデクスが未完状態（レンジインデクスのデータが作成されていない状態）になります。行を格納するセグメントが割り当てられている状態については，「5.5.4　レンジインデクスを定義する場合の注意点（レンジインデクスの未完状態）」を参照してください。

レンジインデクスが未完状態になると，次に示す操作がエラーになります。

■エラーになる操作

未完状態のレンジインデクスを使用するSQL文の実行

未完状態のレンジインデクスが定義された表に対するINSERT文，およびUPDATE文の実行

未完状態のレンジインデクスが定義された実表に対する-dオプションを指定しないadbimportコマンドの実行

未完状態のレンジインデクスが定義された実表に対するadbmergechunkコマンドの実行

未完状態のレンジインデクスが定義されたアーカイブマルチチャンク表に対するadbunarchivechunkコマンドの実行

メモ

TRUNCATE TABLE文は実行できます。TRUNCATE TABLE文で実表の全行を削除した場合，レンジインデクスのデータも削除されるため，レンジインデクスの未完状態も解除されます。

レンジインデクスが未完状態かどうかは，adbdbstatusコマンドで確認できます。「10.9.5　レンジインデクスの状態や使用量を確認したい場合」を参照してください。

レンジインデクスが未完状態になる原因には，次に示す場合があります。

行を格納するセグメントが割り当てられている状態の実表に対してレンジインデクスを定義した場合

adbidxrebuildコマンドが異常終了した場合

レンジインデクスの未完状態を解除する場合は，未完状態のレンジインデクスが定義されている実表に対して，adbidxrebuildコマンドを実行してください。

adbidxrebuildコマンドを実行して，レンジインデクスを再作成することで，レンジインデクスの未完状態が解除されます。

なお，adbimportコマンドが異常終了した状態でCREATE INDEX文を実行した場合，レンジインデクスが未完状態になることがあります。この場合，--forceオプションを指定してadbidxrebuildコマンドを実行してください。--forceオプションを指定しないでadbidxrebuildコマンドを実行すると，エラーとなります。

16.12　バックグラウンドインポート機能に関するトラブル

ここでは，KFAA51246-Eメッセージが出力された場合の対策について説明します。

KFAA51246-Eメッセージは，バックグラウンドインポート実行時に作成されるチャンク数が，チャンク数の最大値（CREATE TABLE文のCHUNKに指定した値）を超える場合に出力されます。

そのため，まずは「16.12.1　バックグラウンドインポートで作成されたチャンク数を減らす方法」を参照して，作成されたチャンク数を減らしてください。

また，作成されるチャンク数の最大値を大きくしたい場合は，「16.12.2　バックグラウンドインポートで作成されるチャンク数の最大値を大きくする方法」を参照してください。

作成されたチャンク数を変更できない場合は，「16.12.3　バックグラウンドインポートで作成されたチャンク数を変更できないときの対処方法」を参照してください。

16.12.1　バックグラウンドインポートで作成されたチャンク数を減らす方法

バックグラウンドインポート機能を適用したadbimportコマンド実行時に，KFAA51246-Eメッセージが出力された場合，adbmergechunkコマンドを実行してください。

adbmergechunkコマンドで，作成された複数のチャンクを1つのチャンクにマージすると，作成されたチャンク数を減らせます。作成されたチャンク数を減らせば，バックグラウンドインポートを実行できます。

■対処方法

「11.5.9　チャンクをマージする方法（チャンク数を減らす方法）」を参照して，adbmergechunkコマンドを実行してください。

16.12.2　バックグラウンドインポートで作成されるチャンク数の最大値を大きくする方法

バックグラウンドインポート機能を適用したadbimportコマンド実行時に，KFAA51246-Eメッセージが出力された場合で，作成されたチャンク数を減らすだけでなく，作成されるチャンク数の最大値を大きくしたい場合は，ALTER TABLE文を実行してください。

ALTER TABLE文を実行することで，実表の定義時に指定したCHUNKの値を変更できるため，作成されるチャンク数の最大値を大きくできます。

■対処方法

「11.5.10　チャンク数の最大値を変更する方法」を参照して，ALTER TABLE文を実行してください。

16.12.3　バックグラウンドインポートで作成されたチャンク数を変更できないときの対処方法

バックグラウンドインポート機能を適用したadbimportコマンドの実行時に，KFAA51246-Eメッセージが出力された場合で，次のどちらの方法も実行できないときの対処方法を説明します。

「16.12.1　バックグラウンドインポートで作成されたチャンク数を減らす方法」

「16.12.2　バックグラウンドインポートで作成されるチャンク数の最大値を大きくする方法」

■対処方法

最初に，「11.5.5　チャンク単位にデータをエクスポートする方法」を参照して，バックグラウンドインポートで格納したデータを出力してください。

そのあとで，次のどちらかの方法を実行してください。

不要なチャンクを削除する

「11.5.6　チャンク単位にデータを削除する方法」を参照して，PURGE CHUNK文を実行してください。不要なチャンクを削除して，作成されたチャンク数が減ることで，バックグラウンドインポートを実行できます。

作成モードでデータインポートする

adbimportコマンドに-ｄオプション（作成モード）を指定して，事前に出力したデータを再度インポートしてください。adbimportコマンドを作成モードで実行すると，表の既存データ（チャンク）がすべて削除されて，データがインポートされます。作成されたチャンク数が1つになるため，バックグラウンドインポートを実行できます。

adbimportコマンドについては，マニュアルHADB　コマンドリファレンスのadbimport（データのインポート）を参照してください。

16.13　アーカイブディレクトリに関するトラブル

ここでは，アーカイブディレクトリに対して発生したトラブルの対処方法について説明します。

16.13.1　アーカイブファイルに障害が発生したときの対処方法

アーカイブファイルに障害が発生した場合，次のメッセージが出力されます。

KFAA41205-E

KFAA50225-E

KFAA51271-E

KFAA51272-E

出力されたメッセージの対策欄に従って対処してください。メッセージの対策欄については，マニュアルHADB　メッセージを参照してください。

メッセージの対策欄に従って対処しても解決しない場合，またはメッセージの対策欄に従った対処が実行できない場合は，バックアップからデータベースを回復する必要があります。「10.3.1　バックアップの取得方法」に従って取得したデータベースのフルバックアップがある場合は，「10.3.2　バックアップからの回復方法」に従って，直近に取得したフルバックアップからデータベースを回復してください。

16.13.2　アーカイブディレクトリの空き容量が不足したときの対処方法

アーカイブディレクトリの空き容量が不足したため，adbarchivechunkコマンドが異常終了した場合，アーカイブディレクトリを容量の大きな別のディスクに変更してください。手順を次に示します。

手順

HADBサーバを正常終了する

adbstopコマンドを実行してHADBサーバを正常終了します。

アーカイブディレクトリ下のファイルをコピーする

OSのcpコマンドを実行して，アーカイブディレクトリ下にあるすべてのファイルを，容量の大きな別のディスクにコピーします。

手順2.のディスクをアーカイブディレクトリにマウントする

OSのmountコマンドを実行して，手順2.のディスクをアーカイブディレクトリにマウントします。

HADBサーバを正常開始する

adbstartコマンドを実行してHADBサーバを正常開始します。

16.14　同義語辞書ファイルに関するトラブル

ここでは，同義語辞書ファイルに対して発生したトラブルの対処方法について説明します。

16.14.1　同義語辞書ファイルに障害が発生したときの対処方法

同義語辞書ファイルに障害が発生した場合は，次のどれかの方法で対処してください。最初は，対処方法1を参照してください。

対処方法1

同義語辞書ファイルに障害が発生した場合，次のメッセージが出力されます。

・KFAA30959-E

・KFAA34008-E

この場合，出力されたメッセージの対策欄に記載されている対処方法に従ってください。メッセージの対策欄に記載されている対処方法に従っても問題が解決しない場合，またはその対処方法が実行できない場合は，「対処方法2」の方法で対処してください。

対処方法2

同義語辞書ファイルのバックアップを使用して，同義語辞書ファイルを回復してください。同義語辞書ファイルのバックアップがない場合は，「対処方法3」の方法で対処してください。

対処方法3

障害が発生した同義語辞書ファイルをadbsyndictコマンドで再作成してください。保管している辞書情報登録ファイルを入力情報にして，adbsyndictコマンドを実行します。

辞書情報登録ファイルがないなど，同義語辞書ファイルを再作成できない場合は，「対処方法4」の方法で対処してください。

対処方法4

直近に取得したデータベースのフルバックアップからDBをリストアしてください。

メモ

同義語辞書ファイルは，サーバ定義のadb_syndict_storage_pathオペランドに指定したディレクトリ下に格納されています。

16.14.2　同義語辞書ファイルの格納ディレクトリの空き容量が不足したときの対処方法

同義語辞書ファイルの格納ディレクトリの空き容量不足が原因で，adbsyndictコマンドが異常終了した場合，KFAA51514-Eメッセージが出力されます。KFAA51514-Eメッセージに出力される操作対象の情報が「synonym-dictionary-file」または「temporary-work-file」で，かつエラー番号が28（ENOSPC）の場合，同義語辞書ファイルの格納ディレクトリの空き容量が不足していると考えられます。

この場合，まずは対処方法1を実施してください。対処方法1が実施できない場合，または対処方法1を実施しても容量不足が発生する場合は，対処方法2を実施してください。

対処方法1

adbsyndictコマンドの実行時，複数の同義語辞書を一度に更新している場合は，同義語辞書を1つずつ更新してください。一度に更新する同義語辞書の数を減らすと，同義語辞書ファイルの格納ディレクトリに必要な空き容量が少なくすむため，adbsyndictコマンドを実行できることがあります。

対処方法2

容量の大きい別のディスク上に同義語辞書ファイルの格納ディレクトリを作成し直してください。手順については，「11.19.13　同義語辞書ファイルの格納ディレクトリを変更する」を参照してください。

16.14.3　同義語辞書ファイルまたは同義語辞書ファイルの格納ディレクトリを誤って削除してしまったときの対処方法

同義語辞書ファイルまたは同義語辞書ファイルの格納ディレクトリを誤って削除してしまった場合は，同義語辞書ファイルを再作成する必要があります。

重要

同義語辞書ファイルのバックアップからは回復できません。

(1)　同義語辞書ファイルを誤って削除してしまったときの対処方法

同義語辞書ファイルを誤って削除してしまった場合は，その同義語辞書ファイルを再作成する必要があります。再作成する手順を次に示します。

手順

保管している同義語一覧定義ファイルを用意する

誤って削除してしまった同義語辞書ファイルに対応する同義語一覧定義ファイルが必要になります。

保管している辞書情報登録ファイルを用意する

誤って削除してしまった同義語辞書ファイルに対応する辞書情報登録ファイルが必要になります。

adbsyndictコマンドを実行して同義語辞書を再登録する

このとき，KFAA51504-Wメッセージが出力されますが，対処の必要はありません。

メモ

手順の3.で同義語辞書の登録が完了した場合，KFAA51509-Iメッセージが出力されます（登録を完了した同義語辞書の数だけメッセージが出力されます）。メッセージ中の同義語辞書名を確認し，同義語辞書の登録が完了したことを確認してください。

同義語一覧定義ファイルを紛失してしまった場合は，「11.19.14　同義語一覧定義ファイルを再作成する（同義語一覧定義ファイルを紛失した場合）」を参照して，同義語一覧定義ファイルを再作成してください。

(2)　同義語辞書ファイルの格納ディレクトリを誤って削除してしまったときの対処方法

同義語辞書ファイルの格納ディレクトリを誤って削除してしまった場合は，すべての同義語辞書ファイルを再作成する必要があります。再作成する手順を次に示します。

手順

同義語辞書ファイルの格納ディレクトリを再作成する

誤って削除してしまった同義語辞書ファイルの格納ディレクトリを再作成してください。

同義語辞書ファイルの格納ディレクトリに対する権限を付与する

付与する権限については，「11.19.1　同義語検索を行うための準備をする」の「(5)　同義語辞書ファイルの格納ディレクトリに対する権限を付与する」を参照してください。

保管している同義語一覧定義ファイルを用意する

全同義語辞書の同義語一覧定義ファイルが必要になります。

保管している辞書情報登録ファイルを用意する

全同義語辞書の辞書情報登録ファイルが必要になります。

adbsyndictコマンドを実行してすべての同義語辞書を再登録する

このとき，KFAA51504-Wメッセージが出力されますが，対処の必要はありません。

メモ

手順の5.で同義語辞書の登録が完了した場合，KFAA51509-Iメッセージが出力されます（登録を完了した同義語辞書の数だけメッセージが出力されます）。メッセージ中の同義語辞書名を確認し，同義語辞書の登録が完了したことを確認してください。

同義語一覧定義ファイルを紛失してしまった場合は，「11.19.14　同義語一覧定義ファイルを再作成する（同義語一覧定義ファイルを紛失した場合）」を参照して，同義語一覧定義ファイルを再作成してください。

16.15　アンロードファイルに関するトラブル

ここでは，アンロードファイルに対して発生したトラブルの対処方法について説明します。

16.15.1　アンロードファイルを格納するディスクの空き容量が不足したときの対処方法

adbreorgsystemdataコマンドの実行中に，-fオプションに指定したディレクトリにアンロードファイルが作成されます。

adbreorgsystemdataコマンドの実行中に，次に示すメッセージのどれかが出力された場合は，アンロードファイルを格納するディスクの空き容量が不足したおそれがあります。

KFAA30959-E

KFAA40204-E

KFAA40205-E

KFAA40214-E

KFAA41205-E

KFAA41206-I

アンロードファイルを格納するディスクの空き容量が不足したかどうかは，メッセージに出力された内容から判断できます。詳細については，「(1)　アンロードファイルを格納するディスクの空き容量が不足しているかどうかを確認する方法」を参照してください。

また，アンロードファイルを格納するディスクの空き容量が不足した場合，次に示す原因が考えられます。該当する原因に従って，対処してください。

ディスクに不要なアンロードファイルが残っている

「(2)　ディスクに不要なアンロードファイルが残っている場合」を参照してください。

アンロードファイルを格納するディスク容量が，作成されるアンロードファイルよりも小さい

「(3)　アンロードファイルを格納するディスク容量が小さい場合」を参照してください。

(1)　アンロードファイルを格納するディスクの空き容量が不足しているかどうかを確認する方法

アンロードファイルを格納するディスクの空き容量が不足しているかどうかを確認するには，出力されたメッセージの内容を確認してください。出力されたメッセージの内容が，次に示す表の内容に一致している場合，アンロードファイルを格納するディスクの空き容量が不足しています。

表16‒2　アンロードファイルを格納するディスクの空き容量が不足した場合に出力されるメッセージと，メッセージに出力される内容

項番

メッセージID

メッセージに出力される内容

ファイル名

エラー番号

1

KFAA30959-E

ファイル名※1

28(ENOSPC)

2

KFAA40204-E

ファイルのパス名※2

−

3

KFAA40205-E

−

28(ENOSPC)

4

KFAA40214-E

−

28(ENOSPC)

5

KFAA41205-E

ファイルのパス名※2

28(ENOSPC)

6

KFAA41206-I

ファイルのパス名※2

28(ENOSPC)

（凡例）

−：該当するメッセージに，この内容は出力されません。

注※1

メッセージに出力されたファイル名のアンロードファイルが格納されているディレクトリを確認する必要があります。ファイルが格納されているディレクトリを確認する手順を次に示します。

メッセージに出力されたファイル名のファイルを，OSのfindコマンドで検索してください。

OSのfindコマンドの実行例を次に示します。

■OSのfindコマンドの実行例

［説明］

メッセージに出力されたファイル名（xxxxx）を指定して，findコマンドを実行します。

adbreorgsystemdataコマンドの実行結果で，アンロードファイルが格納されているディレクトリが，-fオプションに指定したディレクトリと一致しているかどうかを確認してください。

一致している場合は，アンロードファイルを格納するディスクの空き容量が不足しています。

注※2

メッセージに出力されたパス名から，アンロードファイルが格納されているディレクトリを確認する必要があります。

パス名に含まれるディレクトリが，adbreorgsystemdataコマンドの-fオプションに指定したディレクトリと一致しているかどうかを確認してください。

一致している場合は，アンロードファイルを格納するディスクの空き容量が不足しています。

(2)　ディスクに不要なアンロードファイルが残っている場合

ディスクに残っているアンロードファイルは，すべて不要なファイルです。OSのrmコマンドなどを実行して，不要なアンロードファイルを削除してください。

そのあとで，adbreorgsystemdataコマンドを再実行してください。

(3)　アンロードファイルを格納するディスク容量が小さい場合

アンロードファイルを格納するディスク容量が小さい場合は，アンロードファイルの格納先を，容量が大きい別のディスクに変更する必要があります。次に示す手順で対処してください。

手順

アンロードファイルの容量を再度見積もる

adbreorgsystemdataコマンドを実行したときに作成されるアンロードファイルの容量を見積もってください。アンロードファイルの容量見積もりについては，「6.20　アンロードファイルの容量見積もり」を参照してください。

そのあとで，見積もった値よりも容量が大きいディスクにアンロードファイルを格納します。adbreorgsystemdataコマンドの-fオプションに指定したディレクトリを変更する場合は，手順2.に進んでください。-fオプションに指定したディレクトリを変更しない場合は，手順3.に進んでください。

-fオプションに指定したディレクトリを変更する

adbreorgsystemdataコマンドの-fオプションに指定したディレクトリパスファイル内の「アンロードファイルの格納先を指定したディレクトリ」を，容量が大きい別のディスクのディレクトリに変更してください。

ディレクトリパスファイルに指定したディレクトリを変更する場合について，変更前および変更後のディレクトリパスファイルの指定例を次に示します。

■ディレクトリパスファイルの指定例（変更前）

/mnt/disk1/xxxxx

［説明］

変更前のディレクトリパスファイルでは，容量不足のディスク（'/mnt/disk1'）のディレクトリを，アンロードファイルの格納先として指定しています。

■ディレクトリパスファイルの指定例（変更後）

/mnt/largedisk1/xxxxx

［説明］

変更前に'/mnt/disk1'を指定していた個所に，容量が大きい別のディスク（'/mnt/largedisk1'）を指定して，アンロードファイルの格納先を変更します。

そのあとで，adbreorgsystemdataコマンドを再実行してください。

-fオプションに指定したディレクトリに対して，容量が大きい別のディスクのディレクトリをリンク先とするシンボリックリンクを作成する

adbreorgsystemdataコマンドの-fオプションに指定したディレクトリパスファイル内の「アンロードファイルの格納先を指定したディレクトリ」で，OSのlnコマンドを実行します。lnコマンドで，容量が大きい別のディスクのディレクトリをリンク先に設定したシンボリックリンクを作成してください。

このとき，シンボリックリンクのパス名として，-fオプションに指定したディレクトリパスファイル内の「アンロードファイルの格納先を指定したディレクトリ」を指定します。シンボリックリンクを作成する際の，OSのlnコマンドの実行例を次に示します。

■OSのlnコマンドの実行例

ln  -s /mnt/largedisk1/xxxxx  /mnt/disk1/xxxxx

［説明］

容量が大きい別のディスクのディレクトリ（'/mnt/largedisk1/xxxxx'）をリンク先に設定して，-fオプションに指定したディレクトリ（'/mnt/disk1/xxxxx'）と同名のシンボリックリンク（'/mnt/disk1/xxxxx'）を作成します。

そのあとで，adbreorgsystemdataコマンドを再実行してください。

16.16　メッセージログファイルに関するトラブル

ここでは，メッセージログファイルに対して発生したトラブルの対処方法について説明します。

16.16.1　メッセージログファイルの縮退状態を解除する方法

メッセージログファイルの縮退状態を解除する方法について説明します。メッセージログファイルの縮退状態については，「10.4.4　メッセージログファイルの縮退状態」を参照してください。

メモ

メッセージログファイルを格納しているディスクの空き容量が，「環境変数ADBMSGLOGSIZEの指定値（単位：メガバイト）×2」以上になったときにSQL文またはコマンドが実行されると，メッセージログファイルの縮退状態は自動的に解除されます。

■HADBサーバのメッセージログファイルの縮退状態を解除する方法

対処手順を次に示します。

手順

次のコマンドを実行して，メッセージログファイルを格納しているディスクの空き容量を確認してください。

df $ADBDIR/spool

不要なファイルを削除するなどして，ディスクの空き容量を確保してください。次に示す以上の空き容量が必要になります。

環境変数ADBMSGLOGSIZEの指定値（単位：メガバイト）×2

■HADBクライアントのメッセージログファイルの縮退状態を解除する方法

対処手順を次に示します。

手順（Windows版のHADBクライアントの場合）

コマンドプロンプトで次のコマンドを実行して，メッセージログファイルを格納しているドライブを確認してください。

echo %ADBCLTDIR%

メッセージログファイルを格納しているドライブの空き容量を確認してください。

不要なファイルを削除するなどして，ドライブの空き容量を確保してください。次に示す以上の空き容量が必要になります。

環境変数ADBMSGLOGSIZEの指定値（単位：メガバイト）×2

手順（Linux版のHADBクライアントの場合）

次のコマンドを実行して，メッセージログファイルを格納しているディスクの空き容量を確認してください。

df $ADBCLTDIR/spool

不要なファイルを削除するなどして，ディスクの空き容量を確保してください。次に示す以上の空き容量が必要になります。

環境変数ADBMSGLOGSIZEの指定値（単位：メガバイト）×2

16.17　HADBサーバの再開始に関するトラブル

ここでは，HADBサーバの再開始で発生したトラブルの対処方法について説明します。

16.17.1　HADBサーバの再開始に掛かる処理時間が長い場合の対処方法

HADBサーバの再開始に掛かる処理時間が長い場合に実施することについて説明します。

■HADBサーバの再開始中に実施すること

adbstartコマンドを実行したあとで，HADBサーバの再開始に想定以上の時間が掛かっている場合は，KFAA81215-Iメッセージが出力されているかどうかを確認してください。KFAA81215-Iメッセージから，データベースの回復処理の進捗状況を確認できます。

KFAA81215-Iメッセージから，データベースの回復処理が完了して，後続の処理を再開できる時間を見積もってください。

なお，KFAA81215-Iメッセージは，サーバ定義のadb_log_rec_msg_intervalオペランドの指定値に従って，一定の間隔で出力されます。

■HADBサーバの再開始が完了したあとに実施すること

HADBサーバの再開始が完了したあとで，KFAA81211-Iメッセージが出力されているかどうかを確認してください。KFAA81211-Iメッセージから，トランザクションの回復処理の内容を確認できます。

KFAA81211-Iメッセージの出力内容から，コミット回数を増やすなど，1トランザクションの更新量を減らすことを検討してください。

なお，KFAA81211-Iメッセージは，サーバ定義のadb_log_rec_msg_intervalオペランドの指定値よりも，回復処理に時間が掛かったトランザクションが存在する場合に出力されます。

また，KFAA81211-Iメッセージに出力されたトランザクションIDから，対象のトランザクションで実行されたSQL文を特定できます。トランザクションIDをキーにして，SQLトレース情報の「SQL文の実行情報」に出力されたtran_idの値を確認してください。トランザクションIDとtran_idが一致するSQL文が，対象のトランザクションで実行されたSQL文です。SQL文の実行情報については，「10.11.2　SQLトレース情報に出力される情報」の「(2)　SQL文の実行情報」を参照してください。

サーバ定義のadb_log_rec_msg_intervalオペランドについては，「7.2.3　システムログに関するオペランド（set形式）」のadb_log_rec_msg_intervalオペランドを参照してください。

17　HADBサーバの再構築

HADBサーバをインストールしているサーバマシンや，データを格納しているストレージ機器のリプレースなどをする場合，HADBサーバを再構築してデータベースを再作成する必要があります。この章では，オンプレミス環境でのHADBサーバの再構築方法について説明します。

なお，再構築するHADBサーバはマルチノード構成ではないとします。

17.1　HADBサーバの再構築の流れ

オンプレミス環境でのHADBサーバの再構築の流れを次の図に示します。

図17‒1　オンプレミス環境でのHADBサーバの再構築の流れ

上記の各作業を以降で説明します。

17.2　再構築前の準備作業

HADBサーバを再構築する前に次の作業をしてください。

バックアップの取得

全HADBユーザの情報の取得

adbinitコマンドの初期設定オプションファイルの作成

表およびインデクスの定義情報の取得

表のデータのエクスポート

監査証跡機能，同義語検索に関する情報の取得

上記の各作業を以降で説明します。

17.2.1　バックアップの取得

HADBサーバの再構築手順を間違えると，データベースの状態が再構築前とは異なってしまうおそれがあります。そのため，HADBサーバの再構築をする前にデータベースのバックアップを取得してください。バックアップの取得方法については，「10.3　データベースのバックアップ」を参照してください。

メモ

DBエリア暗号化機能を使用している場合は，「13.6　バックアップを取得する場合」を参照してください。

HADBサーバの再構築手順を間違えた場合，バックアップからデータベースを回復し，HADBサーバの再構築を再度実施してください。

17.2.2　全HADBユーザの情報の取得

データベースを再作成する際にHADBユーザも再作成するため，DBA権限を持っているHADBユーザでディクショナリ表を検索し，全HADBユーザの情報を取得しておいてください。

SELECT "USER_NAME","DBA_PRIVILEGE","CONNECT_PRIVILEGE","SCHEMA_PRIVILEGE",
       "AUDIT_ADMIN_PRIVILEGE","AUDIT_VIEWER_PRIVILEGE",
       "CRYPTO_ADMIN_PRIVILEGE","AUTHENTICATION_TYPE"
    FROM "MASTER"."SQL_USERS"

上記のSELECT文を実行すると，全HADBユーザの認可識別子とそのHADBユーザが持っている権限の一覧が出力されます。

上記のSELECT文の実行結果の各列に出力される情報を説明します。

USER_NAME列

HADBユーザの認可識別子が出力されます。

DBA_PRIVILEGE列

'Y'が出力されている場合は，そのHADBユーザはDBA権限を持っています。'N'が出力されている場合は，DBA権限を持っていません。

CONNECT_PRIVILEGE列

'Y'が出力されている場合は，そのHADBユーザはCONNECT権限を持っています。'N'が出力されている場合は，CONNECT権限を持っていません。

SCHEMA_PRIVILEGE列

'Y'が出力されている場合は，そのHADBユーザはスキーマ定義権限を持っています。'N'が出力されている場合は，スキーマ定義権限を持っていません。

AUDIT_ADMIN_PRIVILEGE列

'Y'が出力されている場合は，そのHADBユーザは監査管理権限を持っています。'N'が出力されている場合は，監査管理権限を持っていません。

AUDIT_VIEWER_PRIVILEGE列

'Y'が出力されている場合は，そのHADBユーザは監査参照権限を持っています。'N'が出力されている場合は，監査参照権限を持っていません。

CRYPTO_ADMIN_PRIVILEGE列

'Y'が出力されている場合は，そのHADBユーザは暗号管理権限を持っています。'N'が出力されている場合は，暗号管理権限を持っていません。

AUTHENTICATION_TYPE列

HADBユーザのユーザ認証方式が出力されます。'DB'が出力されている場合は，そのHADBユーザはデータベース認証を使用しています。'PAM'が出力されている場合は，そのHADBユーザはPAM認証を使用しています。'Keycloak'が出力されている場合は，そのHADBユーザはKeycloak認証を使用しています。

メモ

HADBユーザのパスワードは取得できません。HADBユーザのパスワードは，後ほど実施するデータベースの再作成の際に新たに設定します。

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.24　ディクショナリ表の検索」の「(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ファイルを保存する

17.2.4　表およびインデクスの定義情報の取得

データベースを再作成する際に表やインデクスを再定義するため，表およびインデクスの定義情報と，表に対するアクセス権限の情報を次の手順で取得しておいてください。

手順

各データ用DBエリアに格納されている表およびインデクスの一覧を取得する

DBA権限を持っているHADBユーザで，「付録B.24　ディクショナリ表の検索」の「(15)　DBエリアに格納されている表の表名を調べる場合」および「(16)　DBエリアに格納されているインデクスのインデクス名を調べる場合」で説明している作業を実施してください。

すべてのデータ用DBエリアに対してこの作業を実施してください。

全ビュー表のビュー表名を取得する

DBA権限を持っているHADBユーザでディクショナリ表を検索してください。

SELECT "TABLE_SCHEMA","TABLE_NAME"
    FROM "MASTER"."SQL_VIEWS"
      WHERE "TABLE_SCHEMA" != 'MASTER'

上記のSELECT文を実行すると，全ビュー表のビュー表名の一覧が取得できます。

表に対するアクセス権限の情報を取得する

DBA権限を持っているHADBユーザでディクショナリ表を検索してください。

SELECT "GRANTOR","GRANTEE","OWNER","SELECT_PRIVILEGE","INSERT_PRIVILEGE",
       "UPDATE_PRIVILEGE","DELETE_PRIVILEGE","TRUNCATE_PRIVILEGE",
       "REFERENCES_PRIVILEGE","IMPORT_TABLE_PRIVILEGE","REBUILD_INDEX_PRIVILEGE",
       "GET_COSTINFO_PRIVILEGE","EXPORT_TABLE_PRIVILEGE","MERGE_CHUNK_PRIVILEGE",
       "CHANGE_CHUNK_COMMENT_PRIVILEGE","CHANGE_CHUNK_STATUS_PRIVILEGE",
       "ARCHIVE_CHUNK_PRIVILEGE","UNARCHIVE_CHUNK_PRIVILEGE","COPY_PRIVILEGE"
    FROM "MASTER"."SQL_TABLE_PRIVILEGES"
      WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=?

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求には表のスキーマ名を，2番目の要求には表の表識別子を入力してください。入力するスキーマ名と表識別子は，1.および2.の調査結果に出力されたTABLE_SCHEMA列とTABLE_NAME列のスキーマ名と表識別子を使用してください。

上記のSELECT文の実行結果の各列に出力される情報を説明します。

GRANTOR列

アクセス権限を付与したHADBユーザの認可識別子が出力されます。

GRANTEE列

アクセス権限を付与されたHADBユーザの認可識別子が出力されます。

OWNER列

表の所有者であるHADBユーザの認可識別子が出力されます。

上記以外の列

HADBユーザが各種のアクセス権限を持っているかどうかの情報が出力されます。'G'が出力されている場合は，そのアクセス権限を付与権付きで持っています。'Y'が出力されている場合は，そのアクセス権限を持っています。'N'が出力されている場合は，そのアクセス権限を持っていません。

表およびインデクスの定義情報を取得する

DBA権限を持っているHADBユーザで，「付録B.24　ディクショナリ表の検索」の「(29)　実表の定義情報を調べる場合」および「(30)　インデクスの定義情報を調べる場合」で説明している作業を実施してください。

すべての表，およびすべてのインデクスに対してこの作業を実施してください。

メモ

HADBでは，表およびインデクスの定義情報を出力する機能を提供していません。そのため，ディクショナリ表を検索して，表およびインデクスの定義情報を取得しておき，データベースの初期設定後に表およびインデクスを再定義できるようにしておく必要があります。

表およびインデクスを定義したときの定義情報がある場合は，この作業を実施する必要はありません。

ビュー表の定義情報を取得する

DBA権限を持っているHADBユーザで，「付録B.24　ディクショナリ表の検索」の「(32)　ビュー表の定義情報を調べる場合」で説明している作業を実施してください。

すべてのビュー表に対してこの作業を実施してください。

コスト情報を収集している表の一覧を取得する

DBA権限を持っているHADBユーザで，「付録C.9　システム表の検索」の「(1)　コスト情報を収集した全実表の表名と収集日時を調べる場合」で説明している作業を実施してください。

17.2.5　表のデータのエクスポート

データベースを再作成する際に表にデータをインポートするため，すべての表のデータをエクスポートしておいてください。表がマルチチャンク表かどうかでエクスポートの手順が異なります。

重要

次の手順の操作は，表の所有者が実行してください。

エクスポートした表のデータはデータベース管理の担当者が回収してください。

情報漏えいのリスクを低減するために，表の所有者は，作業の完了後にエクスポートした表のデータを削除してください。

マルチチャンク表の場合

手順

チャンクに関する情報を取得する

「付録C.9　システム表の検索」の「(3)　表名から表内の全チャンクの情報を調べる場合」で説明している作業を実施し，チャンクに関する次の情報を取得してください。

チャンクID

チャンクコメント

チャンクの状態

チャンクの作成日時

チャンクの切り替え日時

重要

データベースの初期設定後に，再定義した表にデータをインポートします。その際，カレントチャンクはいちばん最後にインポートする必要があるため，カレントチャンクの情報を記録しておいてください。次の2つの条件をすべて満たすチャンクがカレントチャンクです。

チャンクの作成日時が設定されている

チャンクの切り替え日時がナル値になっている

メモ

ここで取得した情報は，後ほどの作業で使用します。

adbexportコマンドを実行して，全チャンクのデータをCSVファイルに出力してください。方法については，「11.5.5　チャンク単位にデータをエクスポートする方法」を参照してください。

マルチチャンク表ではない場合

adbexportコマンドを実行して，表のデータをCSVファイルに出力してください。方法については，「11.1.11　実表のデータをファイルに出力する方法（データをエクスポートする方法）」を参照してください。

17.2.6　監査証跡機能，同義語検索に関する情報の取得

監査証跡機能を使用している場合

次の手順で監査証跡機能に関する情報を取得しておいてください。

手順

adbaudittrail -dコマンドを実行して，監査証跡機能が有効かどうかを確認する

コマンドの実行結果のaudit欄にACTIVEまたはACTIVE(NO OUTPUT)が表示された場合，監査証跡機能が有効です。

監査証跡機能が有効の場合，監査管理権限を持っているHADBユーザでディクショナリ表を検索し，監査対象を定義していたかどうかを確認する

SELECT COUNT(*) FROM "MASTER"."SQL_AUDITS"

上記のSELECT文の実行結果が0の場合，監査対象を定義していません。1以上の場合，監査対象を定義しています。

同義語検索を行っている場合

次の手順で同義語検索に関する情報を取得しておいてください。

手順

DBA権限を持っているHADBユーザでシステム表を検索する

SELECT "SYNONYM_DICTIONARY_NAME","CORRECTION_RULE","SYNONYM_DICTIONARY_COMMENT"
    FROM "MASTER"."STATUS_SYNONYM_DICTIONARIES"

上記のSELECT文の実行結果が1行以上の場合，次の手順に進んでください。0行の場合は，2.以降の作業は不要です。

同義語一覧定義ファイルを作成する

1.で取得した同義語辞書名（SYNONYM_DICTIONARY_NAME）を使用して，同義語一覧定義ファイルを作成してください。作成方法については，「11.19.14　同義語一覧定義ファイルを再作成する（同義語一覧定義ファイルを紛失した場合）」を参照してください。

辞書情報登録ファイルがない場合，辞書情報登録ファイルを作成する

1.で取得した同義語辞書名（SYNONYM_DICTIONARY_NAME），表記ゆれ補正オプション（CORRECTION_RULE），およびコメント（SYNONYM_DICTIONARY_COMMENT）と，2.で作成した同義語一覧定義ファイルを使用して，辞書情報登録ファイルを作成してください。作成方法については，「11.19.1　同義語検索を行うための準備をする」の「(8)　辞書情報登録ファイルを作成する」を参照してください。

メモ

ここで取得した情報は，後ほどの作業で必要になります。

17.3　移行先のサーバマシンでのHADBサーバの再構築

移行先のサーバマシン（新しいサーバマシン）で次の作業をしてください。

ファイルシステムおよびディスクの用意

HADBサーバのインストール

カーネルパラメタの設定

環境変数の設定

サーバ定義の作成

データベースの初期設定

上記の各作業を以降で説明します。

17.3.1　ファイルシステムおよびディスクの用意

HADBサーバが使用するファイルシステムおよびディスクを用意してください。基本的には，再構築前と同じ構成のファイルシステムおよびディスクを用意します。使用するストレージ機器の違いなどによって再構築前と同じ構成のディスクが用意できない場合や，HADBサーバのバージョンアップによってディスクの再設計が必要な場合は，「6.1　ディスクの設計」を参照してディスクの再設計をしてください。

17.3.2　HADBサーバのインストール

HADBサーバをインストールする前に，移行先のサーバマシンでカーネルパラメタおよび環境変数の設定を実施してください。カーネルパラメタの設定については「17.3.3　カーネルパラメタの設定」を，環境変数の設定については「17.3.4　環境変数の設定」を参照してください。

次に，移行先のサーバマシンにHADBサーバをインストールしてください。HADBサーバのインストール方法については，「8.2　インストール」を参照してください。

なお，新しいバージョンのHADBサーバをインストールする場合は，「8.6.1　バージョンアップ前に実施すること」の内容を確認してからインストールを実施してください。

17.3.3　カーネルパラメタの設定

移行先のサーバマシンでカーネルパラメタを設定してください。基本的には，再構築前と同じカーネルパラメタに同じ値を指定してください。

なお，「17.3.2　HADBサーバのインストール」で新しいバージョンのHADBサーバをインストールした場合は，「6.2　カーネルパラメタの見積もり」を参照し，カーネルパラメタの指定値を変更する必要がないかどうかを確認してください。

17.3.4　環境変数の設定

移行先のサーバマシンで環境変数を設定してください。基本的には，再構築前と同じ環境変数に同じ値を指定してください。

なお，「17.3.2　HADBサーバのインストール」で新しいバージョンのHADBサーバをインストールした場合は，「8.4　環境変数の設定」を参照し，環境変数の指定値を変更する必要がないかどうかを確認してください。

17.3.5　サーバ定義の作成

サーバ定義を作成してください。基本的には，再構築前と同じサーバ定義を使用してください。

なお，「17.3.2　HADBサーバのインストール」で新しいバージョンのHADBサーバをインストールした場合は，「7.2　サーバ定義のオペランドの内容」を参照し，サーバ定義のオペランドの指定値を変更する必要がないかどうかを確認してください。

17.3.6　データベースの初期設定

以降で説明する手順に従ってデータベースを初期設定してください。

(1)　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コマンドで正常終了させてください。

(2)　初期設定オプションファイルを作成する

adbinitコマンドの実行時に使用する初期設定オプションファイルを，「17.2.3　adbinitコマンドの初期設定オプションファイルの作成」で作成した初期設定オプションファイルを基に作成してください。初期設定オプションの作成例を次に示します。

set adb_init_dbarea_initialize = Y
set adb_init_mst_blk_path = "/dev/disk/by-id/wwn-0x60...0064"
set adb_init_dic_blk_path = "/dev/disk/by-id/wwn-0x60...0088"
set adb_init_stbl_blk_path = "/dev/disk/by-id/wwn-0x60...0096"
set adb_init_wrk_blk_path = "/dev/disk/by-id/wwn-0x60...0072"
adbinitdbarea -n ¥"DBAREA1¥" -i 0K,2 -v "/dev/disk/by-id/wwn-0x60...00a1",¥
                                        "/dev/disk/by-id/wwn-0x60...00a2"
adbinitdbarea -n ¥"NEWAREA1¥" -f ¥"AREAS/NEW/¥" -i 0K,3¥
              -v "/dev/disk/by-id/wwn-0x60...00c1",¥
                 "/dev/disk/by-id/wwn-0x60...00c2",¥
                 "/dev/disk/by-id/wwn-0x60...00c3"

初期設定オプションの各オペランドに指定するブロックスペシャルファイルのパス（上記の下線部分）を，移行先の環境のディスクに合わせて変更してください。

adbinitdbareaオペランドに指定するデータ用DBエリア名は変更しないでください。

■DBエリア暗号化機能を使用していた場合

DBエリア暗号化機能を使用していた場合は，「13.1.1　HADBサーバを新規導入する場合」の「(2)　HADB暗号鍵ファイルの保存先ディレクトリの作成」を参照して，移行先のサーバマシンにHADB暗号鍵ファイルの保存先ディレクトリを作成してください。

また，新たに作成した保存先ディレクトリに合わせて，初期設定オプションのadb_init_dmkey_pathオペランドの指定を変更してください。

メモ

移行前の環境で使用していたHADB暗号鍵を移行先の環境で使用する必要はありません。「(3)　adbinitコマンドを実行する」の操作でadbinitコマンドを実行すると，新たにHADB暗号鍵が作成されます。

(3)　adbinitコマンドを実行する

「(2)　初期設定オプションファイルを作成する」で作成した初期設定オプションファイルを指定して，adbinitコマンドを実行してください。

(4)　HADBサーバを開始する

adbstartコマンドを実行して，HADBサーバを開始してください。

17.4　データベースの再作成

移行先のシステムで次の作業をしてください。

HADBユーザの作成および権限の付与

表およびインデクスの再作成

監査証跡機能，同義語検索の環境設定

HADBユーザのユーザ認証方式とパスワードの変更

上記の各作業を以降で説明します。

17.4.1　HADBユーザの作成および権限の付与

CREATE USER文でHADBユーザを作成して，作成したHADBユーザにGRANT文で権限を付与してください。

「17.2.2　全HADBユーザの情報の取得」で取得したHADBユーザの情報を使用して，HADBユーザを作成して権限を付与します。

重要

DBA権限を持っているHADBユーザで，HADBユーザを作成します。このとき，データベース認証を使用するHADBユーザとして作成してください。PAM認証またはKeycloak認証を使用するHADBユーザは，「17.4.4　HADBユーザのユーザ認証方式とパスワードの変更」でユーザ認証方式をPAM認証またはKeycloak認証に変更します。

以降の作業で，データベース管理の担当者が，ここで作成した複数のHADBユーザを使用して行う作業があります。そのため，ここで作成するHADBユーザには，入力が容易なパスワードを設定することを推奨します。以降の作業がすべて完了したあとに，ここで作成したHADBユーザのパスワードをすぐに変更するように徹底してください。

HADBユーザの作成と権限を付与するSQL文の例を次に示します。

（例）

認可識別子がCADMINのHADBユーザを作成し，そのHADBユーザに暗号管理権限とCONNECT権限を付与します。

CREATE USER "CADMIN" IDENTIFIED BY 'Password01'
GRANT CRYPTO ADMIN,CONNECT TO "CADMIN"

17.4.2　表およびインデクスの再作成

データベースの初期設定前に定義していた表およびインデクスを再定義し，表にデータをインポートしてください。また，表に対するアクセス権限も付与してください。手順を次に示します。

手順

表およびインデクスを再定義する

定義していた表およびインデクスをCREATE TABLE文とCREATE INDEX文で再定義してください。「17.2.4　表およびインデクスの定義情報の取得」で取得した次の情報を使用して表およびインデクスを再定義します。

表およびインデクスの定義情報

表およびインデクスを格納しているデータ用DBエリアの情報

メモ

この作業は，データベース管理の担当者が実施してください。定義する表またはインデクスのスキーマ名と同じ認可識別子のHADBユーザを使用して，表またはインデクスを定義してください。

データベース管理の担当者は，定義する表またはインデクスのスキーマ名に合わせて，使用するHADBユーザを変えて作業します。そのため，同じスキーマ名の表とインデクスをまとめて定義した方が，HADBユーザを変更する手間が少なくなります。

スキーマが定義されていない場合は，CREATE SCHEMA文でスキーマを定義してください。

ビュー表を再定義する

定義していたビュー表をCREATE VIEW文で再定義してください。「17.2.4　表およびインデクスの定義情報の取得」で取得した，ビュー表の定義情報を使用してビュー表を再定義します。

メモ

ビューレベルの値が小さいビュー表から順にビュー表を定義してください。

この作業は，データベース管理の担当者が実施してください。定義するビュー表のスキーマ名と同じ認可識別子のHADBユーザを使用してビュー表を定義してください。

表に対するアクセス権限を付与する

再定義した表に対するアクセス権限をGRANT文で付与してください。

メモ

この作業は，データベース管理の担当者が実施してください。使用するHADBユーザは次の手順の中で説明しています。

「17.2.4　表およびインデクスの定義情報の取得」で取得した，表に対するアクセス権限の情報を使用して，次の手順でアクセス権限を付与します。

「GRANTOR列の値 = OWNER列の値」かつ「GRANTOR列の値≠GRANTEE列の値」の行がある場合，GRANTOR列に出力されているHADBユーザで，GRANTEE列に出力されているHADBユーザにアクセス権限を付与します。各種アクセス権限を持っているかどうかを示す列の値によって，付与するアクセス権限が異なります。'G'が出力されている場合は，付与権付きでアクセス権限を付与します。'Y'が出力されている場合は，アクセス権限を付与します。'N'が出力されている場合は，アクセス権限を付与しません。

「a.でアクセス権限を付与されたHADBユーザ = GRANTOR列の値」の行がある場合，GRANTOR列に出力されているHADBユーザで，GRANTEE列に出力されているHADBユーザにアクセス権限を付与します。各種アクセス権限を持っているかどうかを示す列の値によって，付与するアクセス権限が異なります。'G'が出力されている場合は，付与権付きでアクセス権限を付与します。'Y'が出力されている場合は，アクセス権限を付与します。'N'が出力されている場合は，アクセス権限を付与しません。

b.の作業を「b.でアクセス権限を付与されたHADBユーザ = GRANTOR列の値」の行が出てこなくなるまで繰り返します。

a.～c.の作業をすべての表に対して実行してください。

表にデータをインポートする

adbimportコマンドを実行して，表にデータをインポートしてください。

マルチチャンク表にデータをインポートする場合

「17.2.5　表のデータのエクスポート」でエクスポートしたデータを入力データファイルにして，バックグラウンドインポートを実行してください。

なお，初回のデータインポートの際は，作成モードでデータインポートを実行してください。手順については，「11.1.10　実表にデータを格納する方法（データインポート）」および「11.5.2　マルチチャンク表にデータを格納する方法（バックグラウンドインポート）」を参照してください。

重要

「17.2.5　表のデータのエクスポート」で取得した，チャンクコメントおよびチャンクの状態に合わせてオプションを指定してください。

カレントチャンクは，いちばん最後にインポートしてください。「17.2.5　表のデータのエクスポート」でカレントチャンクを調べています。

マルチチャンク表ではない表にデータをインポートする場合

「17.2.5　表のデータのエクスポート」でエクスポートしたデータを入力データファイルにして，adbimportコマンドを実行してください。

メモ

この作業は，データベース管理の担当者が実施してください。表の所有者と同じ認可識別子のHADBユーザを使用してデータをインポートしてください。

コスト情報を収集する

adbgetcstコマンドを実行して，表のコスト情報を収集してください。

「17.2.4　表およびインデクスの定義情報の取得」で取得した，コスト情報を収集している表の一覧を使用してください。一覧に表示されている表のコスト情報を収集します。

メモ

この作業は，データベース管理の担当者が実施してください。コスト情報を収集する表のスキーマ名と同じ認可識別子のHADBユーザを使用してコスト情報を収集してください。

収集したコスト情報は，データベースの初期設定前のコスト情報とは異なる可能性があります。そのため，データベースの初期設定前とはSQL文のアクセスパスが変わる可能性があります。

17.4.3　監査証跡機能，同義語検索の環境設定

データベースの初期設定前に監査証跡機能を使用していた場合

「12.2　監査証跡機能の環境設定」を参照して，監査証跡機能の環境設定をしてください。

環境設定をする際，「17.2.6　監査証跡機能，同義語検索に関する情報の取得」で取得した監査証跡に関する情報を使用してください。監査対象を定義していた場合は，監査対象の定義が必要です。監査対象を定義していない場合は，監査対象の定義は不要です。監査対象の定義方法については，「12.2.7　監査対象の定義」を参照してください。

データベースの初期設定前に同義語検索を行っていた場合

「11.19.1　同義語検索を行うための準備をする」を参照して，同義語検索の環境設定をしてください。

「17.2.6　監査証跡機能，同義語検索に関する情報の取得」で，同義語一覧定義ファイルおよび辞書情報登録ファイルを作成した場合は，それらのファイルを使用して同義語辞書ファイルを作成してください。

17.4.4　HADBユーザのユーザ認証方式とパスワードの変更

HADBユーザのユーザ認証方式の変更

この時点では，全HADBユーザのユーザ認証方式がデータベース認証になっています。

「17.2.2　全HADBユーザの情報の取得」で取得した情報を使用してください。AUTHENTICATION_TYPE列に'PAM'が表示されているHADBユーザは，PAM認証を使用しています。このHADBユーザのユーザ認証方式をPAM認証に変更してください。AUTHENTICATION_TYPE列に'Keycloak'が表示されているHADBユーザは，Keycloak認証を使用しています。このHADBユーザのユーザ認証方式をKeycloak認証に変更してください。

ユーザ認証方式の変更方法については，「11.7.4　HADBユーザのユーザ認証方式を変更する方法」を参照してください。

重要

PAM認証を使用するには，移行先のサーバマシンでOSの設定や，秘密鍵ファイルおよび公開鍵ファイルを作成する必要があります。PAM認証の環境設定方法については，「11.8.1　PAM認証の環境設定」を参照してください。

Keycloak認証を使用するには，「11.9.1　Keycloak認証の環境設定」を参照して移行先のサーバマシンで環境設定を行ってください。

HADBユーザのパスワードの変更

「17.2.2　全HADBユーザの情報の取得」で取得した情報を使用してください。AUTHENTICATION_TYPE列に'DB'が表示されているHADBユーザは，データベース認証を使用しています。このHADBユーザを使用する人に，HADBユーザの認可識別子と設定済みのパスワードを知らせてください。そして，このHADBユーザを使用する人が，HADBユーザのパスワードを変更してください。パスワードの変更方法については，「11.7.2　HADBユーザのパスワードを変更する方法」を参照してください。

第6編　マルチノード機能編

18　マルチノード機能の運用

この章では，マルチノード機能を使用したシステムの構築方法，およびマルチノード機能の運用方法について説明します。

マルチノード機能の概要を知りたい場合は，「2.20　マルチノード機能」を参照してください。

18.1　この章を読む際の留意事項

マルチノード構成には，HAモニタありのマルチノード構成と，HAモニタなしのマルチノード構成の2つがあります。それぞれの留意事項を説明します。

18.1.1　HAモニタありのマルチノード構成の場合

HAモニタありのマルチノード構成の場合のマルチノード機能の説明は，HAモニタについての知識があることを前提としています。HAモニタについては，マニュアルHAモニタ Linux(R)(x86)編を参照してください。

また，マニュアルHAモニタ Linux(R)(x86)編を参照する際，次の点に留意してください。

プライマリノードおよびセカンダリノードのHADBサーバは，モニタモードで動作します。

エイリアスIPアドレスを引き継ぐ構成になります。

プライマリノードおよびセカンダリノードのHADBサーバは，HAモニタとのインタフェースを持たないプログラムとして動作します。

サーバ障害の検出方法は，APIを発行しない方法になります。

HAモニタ Extensionは使用できません。

HAモニタのマニュアルで使用されている用語と，HADBのマニュアルで使用されている用語の対応を次の表に示します。

表18‒1　HAモニタのマニュアルで使用されている用語と，HADBのマニュアルで使用されている用語の対応

項番

HAモニタのマニュアルで使用されている用語

HADBのマニュアルで使用されている用語

1

系

ノード

2

実行系

プライマリノード

3

待機系

セカンダリノード

4

実行サーバ

プライマリノードのHADBサーバ

5

待機サーバ

セカンダリノードのHADBサーバ

6

系障害

ノード障害

7

サーバ障害

メモ

ワーカーノードは，HAモニタの管理対象外のため，上記の表中に記載がありません。

18.1.2　HAモニタなしのマルチノード構成の場合

HAモニタなしのマルチノード構成の場合，マニュアル中に記載されているHAモニタに関する説明はお読みいただく必要はありません。また，次の項目もHAモニタ特有の説明のため，お読みいただく必要はありません。

系のリセット

共有ディスクのSCSIリザーブ

HAモニタなしのマルチノード構成の場合，セカンダリノードを設定できないため，マニュアル中に記載されているセカンダリノードに関する説明をお読みいただく必要はありません。また，次の項目もセカンダリノード特有の説明のため，お読みいただく必要はありません。

ノードの切り離し

ノードの復帰

プライマリノードの切り替え

ノード障害とは，プライマリノードのHADBサーバまたはワーカーノードのHADBサーバが異常終了する障害を意味しています。

18.2　HAモニタありのマルチノード構成のシステム構成例（オンプレミス環境の場合）

HAモニタありのマルチノード構成のシステム構成例（オンプレミス環境の場合）を次の図に示します。

図18‒1　HAモニタありのマルチノード構成のシステム構成例（オンプレミス環境の場合）

注※

共有ディスクのSCSIリザーブを使用する場合は，SVPおよびリセットパスは必要ありません。

メモ

HAモニタありのマルチノード構成の場合，セカンダリノードの設定が必須になります。

HAモニタありのマルチノード構成の場合，ワーカーノードの設定は任意になります。

重要

HAモニタによる共有ディスクのデータ保護方法には，次のどちらかを選択できますが，系のリセットを使用することを推奨します。

系のリセット

共有ディスクのSCSIリザーブ

18.2.1　前提ソフトウェア

HAモニタありのマルチノード構成の場合，プライマリノードおよびセカンダリノードにはHAモニタが必要になります。

HADBでは，HAモニタのモニタモードの機能を使用し，プライマリノードおよびセカンダリノードの障害を監視しています。プライマリノードで障害が発生した場合，HAモニタの機能を使用して，セカンダリノードの1つをプライマリノードに切り替えて処理を続行します。セカンダリノードで障害が発生した場合，HAモニタの機能を使用して，セカンダリノードをマルチノード構成から切り離し，残りのノードで処理を続行します。

障害発生時のプライマリノードまたはセカンダリノードの切り離し処理については，「18.16　プライマリノードまたはセカンダリノードでノード障害が発生した場合の運用（HAモニタありのマルチノード構成の場合）」を参照してください。

なお，使用しているLinuxのバージョンによって，HAモニタの前提バージョンが次のように異なります。

RHEL 8の場合：01-71以降

RHEL 9の場合：01-78以降

RHEL 10の場合：対応するHAモニタがありません。そのため，RHEL 10ではHAモニタありのマルチノード構成は構築できません。

重要

プライマリノードとセカンダリノードにインストールするHAモニタのバージョンは同じにしてください。

ワーカーノードにはHAモニタは必要ありません。

18.2.2　サーバ構成

「図18‒1　HAモニタありのマルチノード構成のシステム構成例（オンプレミス環境の場合）」で示す構成例の場合，4つのノード（hadb01，hadb02，hadb03，およびhadb04）から構成されています。プライマリノードはhadb01，セカンダリノードはhadb02およびhadb03，ワーカーノードはhadb04になります。

マルチノード機能を使用する場合，各ノードのサーバマシンの性能（CPU，メモリサイズなど）は同一である必要はありません。ただし，サーバマシンの性能が異なる場合，接続するノードによってSQL文の処理性能に差異が発生するおそれがあります。そのため，できる限り全ノードのサーバマシンの性能を同じにすることを推奨します。

また，HAモニタありのマルチノード構成の場合，HAモニタの系切り替え機能を使用します。系を切り替える際の共有ディスクのデータ保護方法には，次のどちらかを選択してください。推奨する方法は，系のリセットです。

系のリセット

共有ディスクのSCSIリザーブ

プライマリノードおよびセカンダリノードのサーバマシンに障害管理プロセサ（「図18‒1　HAモニタありのマルチノード構成のシステム構成例（オンプレミス環境の場合）」のSVP）がある場合は，推奨する系のリセットを使用してください。

系のリセット，障害管理プロセサ，共有ディスクのSCSIリザーブについては，マニュアルHAモニタ Linux(R)(x86)編の次の個所を参照してください。

系のリセット：系のリセット

障害管理プロセサ：必要なハードウェア

共有ディスクのSCSIリザーブ：共有ディスクのSCSIリザーブ

メモ

ワーカーノードにはHAモニタをインストールしないため，ワーカーノードのHADBサーバは系切り替えの対象にはなりません。

18.2.3　ネットワーク構成

HAモニタありのマルチノード構成の場合，次に示す3つのネットワークを使用します。各ネットワークは物理的に分けてください。

クライアント−サーバ間ネットワーク

ノード間ネットワーク

リセットパス

(1)　クライアント−サーバ間ネットワーク

HADBクライアントとHADBサーバ間の通信で使用するネットワークです。

HADBクライアントは，エイリアスIPアドレスを使用してHADBサーバに接続します。そのため，マニュアルHAモニタ Linux(R)(x86)編のLANの引き継ぎを参照して，エイリアスIPアドレスを設定してください。

「図18‒1　HAモニタありのマルチノード構成のシステム構成例（オンプレミス環境の場合）」でのIPアドレス，およびポート番号の設定例を次の表に示します。

表18‒2　クライアント−サーバ間ネットワークのIPアドレスとポート番号の設定例

項番

設定対象

IPアドレス

ポート番号

1

クライアントマシン

10.196.108.111

設定不要

2

サーバマシンhadb01（プライマリノード）

10.196.108.11

23650

3

サーバマシンhadb02（セカンダリノード）

10.196.108.12

23650

4

サーバマシンhadb03（セカンダリノード）

10.196.108.13

23650

5

サーバマシンhadb04（ワーカーノード）

10.196.108.14

23650

6

エイリアスIPアドレス

10.196.108.143

23650

(2)　ノード間ネットワーク

HADBサーバ間の通信，およびHAモニタの監視パスとして使用するネットワークです。

ネットワーク構築する際，LinuxのBonding機能を使用したNIC冗長化を推奨します。また，Bonding機能を使用する際には，複数のLANカードを用意してください。

Bonding機能の詳細については，OSのマニュアルを参照してください。HAモニタの監視パスの設定については，マニュアルHAモニタ Linux(R)(x86)編の監視パスの設定を参照してください。

「図18‒1　HAモニタありのマルチノード構成のシステム構成例（オンプレミス環境の場合）」でのIPアドレス，およびポート番号の設定例を次の表に示します。

表18‒3　ノード間ネットワークのIPアドレスとポート番号の設定例

項番

設定対象

IPアドレス

ポート番号

1

サーバマシンhadb01（プライマリノード）のHADBサーバ間通信

172.16.0.11

23651

2

サーバマシンhadb01（プライマリノード）のHAモニタの監視パス

172.16.0.11

7777

3

サーバマシンhadb02（セカンダリノード）のHADBサーバ間通信

172.16.0.12

23651

4

サーバマシンhadb02（セカンダリノード）のHAモニタの監視パス

172.16.0.12

7777

5

サーバマシンhadb03（セカンダリノード）のHADBサーバ間通信

172.16.0.13

23651

6

サーバマシンhadb03（セカンダリノード）のHAモニタの監視パス

172.16.0.13

7777

7

サーバマシンhadb04（ワーカーノード※）のHADBサーバ間通信

172.16.0.14

23651

注※

ワーカーノードはHAモニタの管理対象外のため，HAモニタの監視パスの設定は不要です。

通常は，HADBサーバ間の通信で使用するネットワークと，HAモニタの監視パスとして使用するネットワークを分けます。ただし，この場合，HAモニタは，HADBサーバ間の通信で使用するネットワークの障害を検知することができません。ここで説明しているとおり，HADBサーバ間の通信で使用するネットワークと，HAモニタの監視パスとして使用するネットワークを同じにすると，ネットワーク障害をHAモニタが検知することができます。そのため，ここで説明しているとおりにノード間ネットワークを構成することを推奨します。

ただし，対象のネットワークが単一障害点となってしまうため，必ずLinuxのカーネル拡張パッケージであるbondingパッケージなどを使用してLANアダプタを冗長化し，ネットワークの耐障害性を向上させてください。

(3)　リセットパス

系のリセットを使用する場合は，リセットパスが必要になります。共有ディスクのSCSIリザーブを使用する場合は，リセットパスは必要ありません。

リセットパスとは，HAモニタが障害を検知した際，障害が発生したノードの入出力をリセットするために使用するネットワークです。このネットワークは，リセットパス専用のネットワークである必要があります。詳細については，マニュアルHAモニタ Linux(R)(x86)編のリセットパスの構成を参照してください。

「図18‒1　HAモニタありのマルチノード構成のシステム構成例（オンプレミス環境の場合）」でのIPアドレス，およびポート番号の設定例を次の表に示します。

表18‒4　リセットパスのIPアドレスとポート番号の設定例

項番

設定対象

IPアドレス

ポート番号

1

サーバマシンhadb01（プライマリノード）のリセットパス

192.168.0.11

11111

2

サーバマシンhadb01（プライマリノード）のSVP

192.168.0.21

22222

3

サーバマシンhadb02（セカンダリノード）のリセットパス

192.168.0.12

11111

4

サーバマシンhadb02（セカンダリノード）のSVP

192.168.0.22

22222

5

サーバマシンhadb03（セカンダリノード）のリセットパス

192.168.0.13

11111

6

サーバマシンhadb03（セカンダリノード）のSVP

192.168.0.23

22222

注

ワーカーノードはHAモニタの管理対象外のため，リセットパスの設定は不要です。

HAモニタによる共有ディスクのデータ保護方法には，系のリセットの使用を推奨しています。この場合，リセットパスが必要になります。また，HADBサーバが稼働するサーバマシンにSVPなどの障害管理プロセサが搭載されている必要があります。詳細については，マニュアルHAモニタ Linux(R)(x86)編の必要なハードウェアを参照してください。

18.2.4　ストレージ構成

マルチノード機能を使用する場合，次のファイルシステムおよびディスクを準備してください。

ノードローカルのファイルシステム

「図18‒1　HAモニタありのマルチノード構成のシステム構成例（オンプレミス環境の場合）」の場合，LOC001〜LOC004が該当します。

ノード切り替え対象のファイルシステム

「図18‒1　HAモニタありのマルチノード構成のシステム構成例（オンプレミス環境の場合）」の場合，FS001およびFS002が該当します。

DBエリアファイル用のディスク

「図18‒1　HAモニタありのマルチノード構成のシステム構成例（オンプレミス環境の場合）」の場合，LU001〜LU005およびWRK001〜WRK004が該当します。

なお，一部のファイルシステムおよびディスクでは，各ノードでディスクを識別するためのデバイス名が必要になります。サーバとストレージ間がシングルパス構成の場合は，WWNの使用を推奨します。サーバとストレージのパスを冗長化する場合は，冗長化の方法によってデバイス名が異なります。「図18‒1　HAモニタありのマルチノード構成のシステム構成例（オンプレミス環境の場合）」の場合の，デバイス名の例を次に示します。

シングルパス構成の場合のデバイス名の例

FS001：/dev/disk/by-id/wwn-0x600605b0041db9c016ea34c3b1b53e0a

FS002：/dev/disk/by-id/wwn-0x600605b0041db9c016ea34c3b1b6c44d

LU001：/dev/disk/by-id/wwn-0x600605b0041db9c016ea34c3b1b828e9

LU002：/dev/disk/by-id/wwn-0x600605b0041db9c016ea34c3b1b7d9fd

LU003：/dev/disk/by-id/wwn-0x600605b0041db9c016ea34c3b1b87793

LU004：/dev/disk/by-id/wwn-0x600605b0041db9c016ea34c3b1b8c6d3

LU005：/dev/disk/by-id/wwn-0x600605b0041db9c016ea34c3b1b9160f

マルチパスソフトウェア（DMMP）による冗長化構成の場合のデバイス名の例

FS001：/dev/mapper/mpath1

FS002：/dev/mapper/mpath2

LU001：/dev/mapper/mpath11

LU002：/dev/mapper/mpath12

LU003：/dev/mapper/mpath13

LU004：/dev/mapper/mpath14

LU005：/dev/mapper/mpath15

(1)　ノードローカルのファイルシステム

ノードローカルのファイルシステムには，次のディレクトリを配置します。

サーバディレクトリ

サーバディレクトリの作成には，adbinstallコマンドを使用します。

DBディレクトリ

DBディレクトリの作成については，「18.4.8　データベースの作成」を参照してください。

マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリ

マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリについては，「18.28.1　同義語検索を行うための準備をする」の「(6)　マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリを作成する」を参照してください。

監査証跡の出力先ディレクトリ

監査証跡の出力先ディレクトリについては，「2.18.5　監査証跡の出力先（監査証跡ファイル）」を参照してください。

統一フォーマット用監査証跡の出力先ディレクトリ

統一フォーマット用監査証跡の出力先ディレクトリについては，「2.18.9　監査証跡の変換（JP1/Audit Management - Managerとの連携）」を参照してください。

「図18‒1　HAモニタありのマルチノード構成のシステム構成例（オンプレミス環境の場合）」の場合，LOC001〜LOC004がノードローカルのファイルシステムになります。

重要

ワーカーノードの場合，システムディレクトリもノードローカルのファイルシステムに配置してください。

LOC001

サーバマシンhadb01（プライマリノード）のローカルのファイルシステム

LOC002

サーバマシンhadb02（セカンダリノード）のローカルのファイルシステム

LOC003

サーバマシンhadb03（セカンダリノード）のローカルのファイルシステム

LOC004

サーバマシンhadb04（ワーカーノード）のローカルのファイルシステム

(2)　ノード切り替え対象のファイルシステム

次のファイルシステムをノード切り替え対象のファイルシステムにしてください。

DBディレクトリ下のADBSYSの内容を格納するシステムディレクトリ用のファイルシステム

同義語辞書ファイルを格納するファイルシステム

このノード切り替え対象のファイルシステムは，プライマリノードおよびセカンダリノードから参照できるディスク（共有ディスク）から構成されるVG内のLV上に作成してください。共有ディスクについては，マニュアルHAモニタ Linux(R)(x86)編の共有ディスクの構成を参照してください。

「図18‒1　HAモニタありのマルチノード構成のシステム構成例（オンプレミス環境の場合）」の場合，FS001とFS002が，ノード切り替え対象のファイルシステムになります。

FS001

システムディレクトリ用のファイルシステム

ここでは，VGの名称はvg_hadb，LVの名称はhadb_sysとします。

FS002

同義語辞書ファイルを格納するファイルシステム

ここでは，VGの名称はvg_hadb02，LVの名称はhadb_syndictとします。 なお，同義語検索を行わない場合は，同義語辞書ファイルを格納するファイルシステムは必要ありません。

重要

共有ディスクのSCSIリザーブを使用する場合，ノード切り替え対象のファイルシステムを作成したディスクは，SCSIリザーブの対象としてください。また，SCSIリザーブの対象としたディスクには，ノード切り替え対象のファイルシステム以外の領域を作成しないでください。

システムディレクトリ用のファイルシステム，および同義語辞書ファイルを格納するファイルシステムを作成するディスクには，セクターサイズが512バイトまたは4,096バイトのディスクが使用できます。

(3)　DBエリアファイル用のディスク

DBエリアファイルごとにディスクを用意します。

次のDBエリアファイルには，ブロックスペシャルファイルを割り当ててください。また，ブロックスペシャルファイルに対応するディスクは，全ノードから参照可能である必要があります。

マスタディレクトリ用DBエリアファイル

ディクショナリ用DBエリアファイル

システム表用DBエリアファイル

データ用DBエリアファイル

重要

共有ディスクのSCSIリザーブを使用する場合，上記のDBエリアファイル用のディスクは，SCSIリザーブの対象としてください。

また，次のDBエリアファイルが使用するディスクは，ノードごとに準備してください。

作業表用DBエリアファイル

重要

ノードごとに準備が必要なディスク（作業表用DBエリアファイルを格納するディスク）を複数のノードで共有して使用した場合，HADBサーバはその動作を保証しません。不正な検索結果が表示されたり，HADBサーバが異常終了したりするおそれがあります。

共有ディスクのSCSIリザーブを使用する場合，作業表用DBエリアファイル用のディスクは，SCSIリザーブの対象としないでください。

「図18‒1　HAモニタありのマルチノード構成のシステム構成例（オンプレミス環境の場合）」の場合，LU001〜LU005およびWRK001〜WRK004がDBエリアファイル用のディスクになります。

LU001

ディクショナリ用DBエリアを構成するDBエリアディスク

LU002

マスタディレクトリ用DBエリアを構成するDBエリアディスク

LU003

システム表用DBエリアを構成するDBエリアディスク

LU004

データ用DBエリア（ADBUTBL01）を構成するDBエリアディスク

LU005

データ用DBエリア（ADBUIDX01）を構成するDBエリアディスク

WRK001

サーバマシンhadb01（プライマリノード）のHADBサーバの作業表用DBエリアを構成するDBエリアディスク

ノードローカルのディスクになります。対応するブロックスペシャルファイル名は，/dev/mapper/WRK001とします。

WRK002

サーバマシンhadb02（セカンダリノード）のHADBサーバの作業表用DBエリアを構成するDBエリアディスク

ノードローカルのディスクになります。対応するブロックスペシャルファイル名は，/dev/mapper/WRK002とします。

WRK003

サーバマシンhadb03（セカンダリノード）のHADBサーバの作業表用DBエリアを構成するDBエリアディスク

ノードローカルのディスクになります。対応するブロックスペシャルファイル名は，/dev/mapper/WRK003とします。

WRK004

サーバマシンhadb04（ワーカーノード）のHADBサーバの作業表用DBエリアを構成するDBエリアディスク

ノードローカルのディスクになります。対応するブロックスペシャルファイル名は，/dev/mapper/WRK004とします。

18.3　HAモニタなしのマルチノード構成のシステム構成例（オンプレミス環境の場合）

HAモニタなしのマルチノード構成のシステム構成例（オンプレミス環境の場合）を次の図に示します。

図18‒2　HAモニタなしのマルチノード構成のシステム構成例（オンプレミス環境の場合）

メモ

HAモニタなしのマルチノード構成の場合，セカンダリノードは設定できません。

HAモニタなしのマルチノード構成の場合，ワーカーノードの設定が必須になります。

18.3.1　前提ソフトウェア

HAモニタなしのマルチノード構成の場合，前提ソフトウェアはありません。

18.3.2　サーバ構成

「図18‒2　HAモニタなしのマルチノード構成のシステム構成例（オンプレミス環境の場合）」で示す構成例の場合，4つのノード（hadb01，hadb02，hadb03，およびhadb04）から構成されています。プライマリノードはhadb01，ワーカーノードはhadb02，hadb03，およびhadb04になります。

マルチノード機能を使用する場合，各ノードのサーバマシンの性能（CPU，メモリサイズなど）は同一である必要はありません。ただし，サーバマシンの性能が異なる場合，接続するノードによってSQL文の処理性能に差異が発生するおそれがあります。そのため，できる限り全ノードのサーバマシンの性能を同じにすることを推奨します。

18.3.3　ネットワーク構成

HAモニタなしのマルチノード構成の場合，次に示す2つのネットワークを使用します。2つのネットワークは物理的に分けてください。

クライアント−サーバ間ネットワーク

ノード間ネットワーク

(1)　クライアント−サーバ間ネットワーク

HADBクライアントとHADBサーバ間の通信で使用するネットワークです。

HADBクライアントは，プライマリノードのIPアドレスを使用してマルチノード構成のHADBサーバに接続します。

「図18‒2　HAモニタなしのマルチノード構成のシステム構成例（オンプレミス環境の場合）」でのIPアドレス，およびポート番号の設定例を次の表に示します。

表18‒5　クライアント−サーバ間ネットワークのIPアドレスとポート番号の設定例

項番

設定対象

IPアドレス

ポート番号

1

クライアントマシン

10.196.108.111

設定不要

2

サーバマシンhadb01（プライマリノード）

10.196.108.11

23650

3

サーバマシンhadb02（ワーカーノード）

10.196.108.12

23650

4

サーバマシンhadb03（ワーカーノード）

10.196.108.13

23650

5

サーバマシンhadb04（ワーカーノード）

10.196.108.14

23650

(2)　ノード間ネットワーク

HADBサーバ間の通信で使用するネットワークです。

ネットワーク構築する際，LinuxのBonding機能を使用したNIC冗長化を推奨します。また，Bonding機能を使用する際には，複数のLANカードを用意してください。Bonding機能の詳細については，OSのマニュアルを参照してください。

「図18‒2　HAモニタなしのマルチノード構成のシステム構成例（オンプレミス環境の場合）」でのIPアドレス，およびポート番号の設定例を次の表に示します。

表18‒6　ノード間ネットワークのIPアドレスとポート番号の設定例

項番

設定対象

IPアドレス

ポート番号

1

サーバマシンhadb01（プライマリノード）のHADBサーバ間通信

172.16.0.11

23651

2

サーバマシンhadb02（ワーカーノード）のHADBサーバ間通信

172.16.0.12

23651

3

サーバマシンhadb03（ワーカーノード）のHADBサーバ間通信

172.16.0.13

23651

4

サーバマシンhadb04（ワーカーノード）のHADBサーバ間通信

172.16.0.14

23651

18.3.4　ストレージ構成

マルチノード機能を使用する場合，次のファイルシステムおよびディスクを準備してください。

ノードローカルのファイルシステム

「図18‒2　HAモニタなしのマルチノード構成のシステム構成例（オンプレミス環境の場合）」の場合，LOC001〜LOC004が該当します。

DBエリアファイル用のディスク

「図18‒2　HAモニタなしのマルチノード構成のシステム構成例（オンプレミス環境の場合）」の場合，LU001〜LU005およびWRK001〜WRK004が該当します。

なお，一部のファイルシステムおよびディスクでは，各ノードでディスクを識別するためのデバイス名が必要になります。サーバとストレージ間がシングルパス構成の場合は，WWNの使用を推奨します。サーバとストレージのパスを冗長化する場合は，冗長化の方法によってデバイス名が異なります。「図18‒2　HAモニタなしのマルチノード構成のシステム構成例（オンプレミス環境の場合）」の場合の，デバイス名の例を次に示します。

シングルパス構成の場合のデバイス名の例

LU001：/dev/disk/by-id/wwn-0x600605b0041db9c016ea34c3b1b828e9

LU002：/dev/disk/by-id/wwn-0x600605b0041db9c016ea34c3b1b7d9fd

LU003：/dev/disk/by-id/wwn-0x600605b0041db9c016ea34c3b1b87793

LU004：/dev/disk/by-id/wwn-0x600605b0041db9c016ea34c3b1b8c6d3

LU005：/dev/disk/by-id/wwn-0x600605b0041db9c016ea34c3b1b9160f

マルチパスソフトウェア（DMMP）による冗長化構成の場合のデバイス名の例

LU001：/dev/mapper/mpath11

LU002：/dev/mapper/mpath12

LU003：/dev/mapper/mpath13

LU004：/dev/mapper/mpath14

LU005：/dev/mapper/mpath15

(1)　ノードローカルのファイルシステム

ノードローカルのファイルシステムには，次のディレクトリを配置します。

サーバディレクトリ

サーバディレクトリの作成には，adbinstallコマンドを使用します。

DBディレクトリ

DBディレクトリ下のADBSYSも含みます。

DBディレクトリの作成については，「18.4.8　データベースの作成」を参照してください。

同義語辞書ファイルの格納ディレクトリ，およびマルチノード機能で使用する同義語辞書ファイルの格納ディレクトリ

同義語辞書ファイルの格納ディレクトリについては，「18.28.1　同義語検索を行うための準備をする」の「(5)　同義語辞書ファイルの格納ディレクトリを作成する」を参照してください。

マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリについては，「18.28.1　同義語検索を行うための準備をする」の「(6)　マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリを作成する」を参照してください。

監査証跡の出力先ディレクトリ

監査証跡の出力先ディレクトリについては，「2.18.5　監査証跡の出力先（監査証跡ファイル）」を参照してください。

統一フォーマット用監査証跡の出力先ディレクトリ

統一フォーマット用監査証跡の出力先ディレクトリについては，「2.18.9　監査証跡の変換（JP1/Audit Management - Managerとの連携）」を参照してください。

「図18‒2　HAモニタなしのマルチノード構成のシステム構成例（オンプレミス環境の場合）」の場合，LOC001〜LOC004がノードローカルのファイルシステムになります。

LOC001

サーバマシンhadb01（プライマリノード）のローカルのファイルシステム

LOC002

サーバマシンhadb02（ワーカーノード）のローカルのファイルシステム

LOC003

サーバマシンhadb03（ワーカーノード）のローカルのファイルシステム

LOC004

サーバマシンhadb04（ワーカーノード）のローカルのファイルシステム

(2)　DBエリアファイル用のディスク

DBエリアファイルごとにディスクを用意します。

次のDBエリアファイルには，ブロックスペシャルファイルを割り当ててください。また，ブロックスペシャルファイルに対応するディスクは，全ノードから参照可能である必要があります。

マスタディレクトリ用DBエリアファイル

ディクショナリ用DBエリアファイル

システム表用DBエリアファイル

データ用DBエリアファイル

また，次のDBエリアファイルが使用するディスクは，ノードごとに準備してください。

作業表用DBエリアファイル

重要

ノードごとに準備が必要なディスク（作業表用DBエリアファイルを格納するディスク）を複数のノードで共有して使用した場合，HADBサーバはその動作を保証しません。不正な検索結果が表示されたり，HADBサーバが異常終了したりするおそれがあります。

「図18‒2　HAモニタなしのマルチノード構成のシステム構成例（オンプレミス環境の場合）」の場合，LU001〜LU005およびWRK001〜WRK004がDBエリアファイル用のディスクになります。

LU001

ディクショナリ用DBエリアを構成するDBエリアディスク

LU002

マスタディレクトリ用DBエリアを構成するDBエリアディスク

LU003

システム表用DBエリアを構成するDBエリアディスク

LU004

データ用DBエリア（ADBUTBL01）を構成するDBエリアディスク

LU005

データ用DBエリア（ADBUIDX01）を構成するDBエリアディスク

WRK001

サーバマシンhadb01（プライマリノード）のHADBサーバの作業表用DBエリアを構成するDBエリアディスク

ノードローカルのディスクになります。対応するブロックスペシャルファイル名は，/dev/mapper/WRK001とします。

WRK002

サーバマシンhadb02（ワーカーノード）のHADBサーバの作業表用DBエリアを構成するDBエリアディスク

ノードローカルのディスクになります。対応するブロックスペシャルファイル名は，/dev/mapper/WRK002とします。

WRK003

サーバマシンhadb03（ワーカーノード）のHADBサーバの作業表用DBエリアを構成するDBエリアディスク

ノードローカルのディスクになります。対応するブロックスペシャルファイル名は，/dev/mapper/WRK003とします。

WRK004

サーバマシンhadb04（ワーカーノード）のHADBサーバの作業表用DBエリアを構成するDBエリアディスク

ノードローカルのディスクになります。対応するブロックスペシャルファイル名は，/dev/mapper/WRK004とします。

18.4　マルチノード機能を使用したシステムの構築

マルチノード機能を使用したシステムの構築手順について説明します。

この節の説明は，HADBの新規導入を前提としています。すでにHADBを導入している場合で，マルチノード機能（HAモニタありのマルチノード構成の場合）を使用したい場合は，「18.23　マルチノード機能を使用するシステムへの移行」を参照してください。

メモ

HAモニタなしのマルチノード構成の場合，次の個所で説明している作業を実施する必要はありません。

「18.4.1　HAモニタのインストール」

「18.4.4　HAモニタの環境設定」

なお，マルチノード機能をクラウド環境で使用する場合のシステムの構築手順については，「18.34.4　AWS環境でのマルチノード構成の構築」または「18.35.3　Azure環境でのマルチノード構成の構築」を参照してください。

18.4.1　HAモニタのインストール

HAモニタありのマルチノード構成の場合，プライマリノードおよびセカンダリノードのサーバマシンにHAモニタをインストールしてください。HAモニタのインストール方法については，マニュアルHAモニタ Linux(R)(x86)編のシステムの構築を参照してください。

メモ

ワーカーノードはHAモニタの管理対象外のため，ワーカーノードのサーバマシンにHAモニタをインストールする必要はありません。

18.4.2　HADBサーバのインストールおよび環境設定

HADBサーバをインストールする前に，全ノードのサーバマシンで環境変数の設定を実施してください。

次に，全ノードのサーバマシンにHADBサーバをインストールし，環境設定を行ってください。HADBサーバのインストール，および環境設定については，「8.　システム構築」を参照してください。

HADBサーバのインストールおよび環境設定時の注意事項を次に示します。

HADBサーバのバージョンおよびリビジョンは，全ノードで同じにしてください。

全ノードで，通信情報ファイルを格納するディレクトリ，または設定ファイルを作成する必要があります。通信情報ファイルを格納するディレクトリ，または設定ファイルの作成方法については，「8.2.1　HADBサーバのインストール前に実施する作業」の「(7)　通信情報ファイルを格納するディレクトリの作成」を参照してください。

環境変数の設定については，「8.4　環境変数の設定」を参照してください。ただし，次の環境変数については，全ノードで指定値を同じにしてください。

ADBLANG

TZ

メモ

HADBサーバのサーバディレクトリ（インストール時）のパス名，およびサーバディレクトリ（運用時）のパス名は，全ノードで同じにする必要はありません。

18.4.3　HADBクライアントのインストールおよび環境設定

HADBクライアントのインストール，および環境設定については，マニュアルHADB　AP開発ガイドのHADBクライアントの環境設定（ODBCドライバおよびCLI関数を使用する場合）を参照してください。

18.4.4　HAモニタの環境設定

プライマリノードおよびセカンダリノードのサーバマシンにインストールしたHAモニタの環境設定をしてください。HAモニタの環境設定方法については，マニュアルHAモニタ Linux(R)(x86)編のシステムの構築を参照してください。

ここでは，HAモニタの環境設定をする際に留意することについて説明します。

メモ

HAモニタなしのマルチノード構成の場合，HAモニタの環境設定は必要ありません。

(1)　環境変数の設定

HADB管理者の環境変数に，次の環境変数を設定してください。

PATH

HAモニタのコマンドを実行するために，次のパスを追加してください。

/opt/hitachi/HAmon/bin

(2)　sysdefファイルの指定

HAモニタのsysdefファイルに指定するオペランドのうち，次のオペランドについては，指定値が決まっています。

address

ノードのリセット優先度を指定します。指定値が小さいほど，そのノードのリセット優先度が高くなります。各ノードで異なる値を次のように指定してください。

プライマリノードは，リセット優先度をいちばん高くしたいため，プライマリノードの指定値をいちばん小さくしてください。

セカンダリノードは，セカンダリノードごとに異なる値を指定してください。リセット優先度が高いセカンダリノードほど指定値を小さくしてください。プライマリノードの切り替えの際に優先順位が高いセカンダリノードほど，リセット優先度が高いセカンダリノードにしてください。

monbegin_restart

nouseを指定します。

multistandby

マルチノード機能は，HAモニタのマルチスタンバイ機能を使用するため，useを指定します。

usrcommand

HADB用の設定を記述したユーザコマンドの絶対パスを指定します。

ユーザコマンドはひな形を基に作成してください。作成方法については，「(4)　コマンド用環境変数定義およびコマンドの作成」の「(b)　ユーザコマンドの作成」，およびマニュアルHAモニタ Linux(R)(x86)編のユーザコマンドの作成を参照してください。

termcmd_at_abort

nouseを指定します。

fence_reset

系のリセットを使用する場合は，このオペランドを省略するか，またはデフォルト値のuseを指定してください。

共有ディスクのSCSIリザーブを使用する場合は，nouseを指定してください。

fence_scsi

系のリセットを使用する場合は，このオペランドを省略するか，またはデフォルト値のnouseを指定してください。

共有ディスクのSCSIリザーブを使用する場合は，useを指定してください。

fence_lan

このオペランドを省略するか，またはデフォルト値のnouseを指定してください。

上記のオペランドの詳細については，マニュアルHAモニタ Linux(R)(x86)編のHAモニタの環境設定（sysdef）を参照してください。

(3)　serversファイルの指定

HAモニタのserversファイルに指定するオペランドのうち，次のオペランドについては，指定値が決まっています。

name

サーバディレクトリの絶対パスを指定します。

ただし，nameオペランドに指定するパス名として，空白を含む文字列は指定できません。そのため，マルチノード機能を使用する場合，パス名に空白を含まないディレクトリをサーバディレクトリとすることを推奨します。

acttype

マルチノード機能は，HAモニタのモニタモードで動作するため，monitorを指定します。

termcommand

HADB用の設定を記述したサーバの停止コマンドの絶対パスを指定します。

サーバの停止コマンドはひな形を基に作成してください。作成方法については，「(4)　コマンド用環境変数定義およびコマンドの作成」の「(d)　サーバの停止コマンドの作成」，およびマニュアルHAモニタ Linux(R)(x86)編のサーバの停止コマンドの作成を参照してください。

initial

プライマリノードの場合はonlineを，セカンダリノードの場合はstandbyを指定します。

disk

システムディレクトリのファイルシステム，および同義語辞書ファイルを格納するファイルシステムを含むVGの絶対パスを指定します。「図18‒1　HAモニタありのマルチノード構成のシステム構成例（オンプレミス環境の場合）」の場合は，/dev/vg_hadbおよび/dev/vg_hadb02を指定します。

同義語検索を行わない場合は，同義語辞書ファイルを格納するファイルシステムを含むVGの絶対パスを指定する必要はありません。

fs_name

システムディレクトリのファイルシステム，および同義語辞書ファイルを格納するファイルシステムに対応する論理ボリュームの絶対パスを指定します。「図18‒1　HAモニタありのマルチノード構成のシステム構成例（オンプレミス環境の場合）」の場合は，/dev/vg_hadb/hadb_sysおよび/dev/vg_hadb02/hadb_syndictを指定します。

同義語検索を行わない場合は，同義語辞書ファイルを格納するファイルシステムに対応する論理ボリュームの絶対パスを指定する必要はありません。

fs_mount_dir

システムディレクトリのパス（$DBDIR/ADBSYS），および同義語辞書ファイルを格納するファイルシステムをマウントするディレクトリのパスを指定します。

同義語辞書ファイルを格納するファイルシステムをマウントするディレクトリのパスは，プライマリノードおよびセカンダリノードで同じパスを指定してください。

同義語検索を行わない場合は，同義語辞書ファイルを格納するファイルシステムをマウントするディレクトリのパスを指定する必要はありません。

fs_mount_opt

システムディレクトリのファイルシステム，および同義語辞書ファイルを格納するファイルシステムをマウントするためのマウントオプションを指定します。

同義語検索を行わない場合は，同義語辞書ファイルを格納するファイルシステムをマウントするためのマウントオプションを指定する必要はありません。

lan_updown

LANの状態設定ファイルを使用するため，useを指定します。

LANの状態設定ファイルには，エイリアスIPアドレスの設定をしてください。詳細については，マニュアルHAモニタ Linux(R)(x86)編のLANの状態設定ファイルの設定を参照してください。

patrolcommand

HADB用の設定を記述したサーバの監視コマンドの絶対パスを指定します。

サーバの監視コマンドはひな形を基に作成してください。作成方法については，「(4)　コマンド用環境変数定義およびコマンドの作成」の「(e)　サーバの監視コマンドの作成」，およびマニュアルHAモニタ Linux(R)(x86)編のサーバの監視コマンドの作成を参照してください。

servexec_retry

0を指定します。

waitserv_exec

yesを指定します。

ip_neck

useを指定します。

uoc_neck

nouseを指定します。

vg_neck

useを指定します。

同義語検索を行う場合は，同義語辞書ファイルを格納するファイルシステムについてもuseを指定してください。

fs_neck

useを指定します。

同義語検索を行う場合は，同義語辞書ファイルを格納するファイルシステムについてもuseを指定してください。

actcommand

HADB用の設定を記述したサーバの起動コマンドの絶対パスを指定します。

サーバの起動コマンドはひな形を基に作成してください。作成方法については，「(4)　コマンド用環境変数定義およびコマンドの作成」の「(c)　サーバの起動コマンドの作成」，およびマニュアルHAモニタ Linux(R)(x86)編のサーバの起動コマンドの作成を参照してください。

standbypri

プライマリノードの切り替えが発生した際，新たにプライマリノードにするノードの優先順位を指定します。指定値が小さいほど，優先順位が高くなります。優先順位が高いノードほど指定値を小さくしてください。

各セカンダリノードで異なる値を指定してください。

セカンダリノードのHAモニタ（initialオペランドにstandbyを指定した場合）で，このオペランドを指定します。

scsi_device

このオペランドには，SCSIリザーブの対象となるデバイス名を絶対パスで指定します。

なお，系のリセットを使用する場合は，このオペランドを指定する必要はありません。

共有ディスクのSCSIリザーブを使用する場合で，かつ共有ディスクが次のどれかの条件を満たすときに，このオペランドを指定してください。

シングルパス構成の場合

VMware ESXiでの仮想化環境の場合（DMMPを使用する場合を除く）

マルチパスソフトウェア（HDLM）による冗長化構成の場合

このオペランドを指定する場合は，次のファイルシステムとディスクのデバイス名※を絶対パスで指定します。

ノード切り替え対象のファイルシステム

「図18‒1　HAモニタありのマルチノード構成のシステム構成例（オンプレミス環境の場合）」のFS001，FS002が該当します。

DBエリアファイル用のディスク（作業表用DBエリアのディスクを除く）

「図18‒1　HAモニタありのマルチノード構成のシステム構成例（オンプレミス環境の場合）」のLU001～LU005が該当します。

なお，同義語検索を使用しない場合は，同義語辞書ファイルを格納するファイルシステムのデバイス名を指定する必要はありません。

注※

シングルパス構成，およびVMware ESXiでの仮想化環境（DMMPを使用する場合を除く）の場合，このオペランドには，「18.2.4　ストレージ構成」の「シングルパス構成の場合のデバイス名の例」に記載されているwwn-から始まるパスではなく，マニュアルHAモニタ Linux(R)(x86)編の共有ディスクのSCSIリザーブに必要なオペランドの指定値の求め方の例のようにscsi-から始まるパスを指定してください。

重要

次のファイルシステムとディスクのデバイス名は，このオペランドに指定しないでください。

ノードローカルのファイルシステム

「図18‒1　HAモニタありのマルチノード構成のシステム構成例（オンプレミス環境の場合）」のLOC001～LOC003が該当します。

作業表用DBエリアのディスク

「図18‒1　HAモニタありのマルチノード構成のシステム構成例（オンプレミス環境の場合）」のWRK001～WRK003が該当します。

このオペランドを指定する場合は，マニュアルHAモニタ Linux(R)(x86)編の共有ディスクのSCSIリザーブに必要なオペランドの指定値の求め方を参照してください。

dmmp_device

このオペランドには，SCSIリザーブの対象となるデバイスをDMMPの論理デバイスの絶対パスで指定します。

なお，系のリセットを使用する場合は，このオペランドを指定する必要はありません。

共有ディスクのSCSIリザーブを使用する場合で，かつ共有ディスクがマルチパスソフトウェア（DMMP）による冗長化構成のときに，このオペランドを指定してください。

このオペランドを指定する場合は，次のファイルシステムとディスクのデバイス名を絶対パスで指定します。

ノード切り替え対象のファイルシステム

「図18‒1　HAモニタありのマルチノード構成のシステム構成例（オンプレミス環境の場合）」のFS001，FS002が該当します。

DBエリアファイル用のディスクのうち，すべてのノードから参照可能であるディスク

「図18‒1　HAモニタありのマルチノード構成のシステム構成例（オンプレミス環境の場合）」のLU001～LU005が該当します。

なお，同義語検索を使用しない場合は，同義語辞書ファイルを格納するファイルシステムのデバイス名を指定する必要はありません。

重要

次のファイルシステムとディスクのデバイス名は，このオペランドに指定しないでください。

ノードローカルのファイルシステム

「図18‒1　HAモニタありのマルチノード構成のシステム構成例（オンプレミス環境の場合）」のLOC001～LOC003が該当します。

作業表用DBエリアのディスク

「図18‒1　HAモニタありのマルチノード構成のシステム構成例（オンプレミス環境の場合）」のWRK001～WRK003が該当します。

このオペランドを指定する場合は，マニュアルHAモニタ Linux(R)(x86)編の共有ディスクのSCSIリザーブに必要なオペランドの指定値の求め方を参照してください。

serversファイルに指定する上記のオペランドの詳細については，マニュアルHAモニタ Linux(R)(x86)編のサーバ対応の環境設定（servers）を参照してください。

(4)　コマンド用環境変数定義およびコマンドの作成

HAモニタとの連携のために，コマンド用環境変数定義と次のコマンドを作成してください。

ユーザコマンド

サーバの起動コマンド

サーバの停止コマンド

サーバの監視コマンド

$ADBDIR/sample/scripts下に，コマンド用環境変数定義，および上記のコマンドのひな形があります。ひな形を基にコマンドを作成してください。

(a)　コマンド用環境変数定義の作成

$ADBDIR/sample/scripts/multinode.envがひな形です。このひな形をコピーして，次の値を修正してください。

環境変数ADBMGR

HADB管理者（OSユーザ）のユーザ名を指定してください。

環境変数ADBALIAS

HAモニタのserversファイルのaliasオペランドの指定値を指定してください。

環境変数ADBDIR

サーバディレクトリの絶対パスを指定してください。

(b)　ユーザコマンドの作成

$ADBDIR/sample/scripts/multinode_user.shがひな形です。このひな形をコピーして，次の個所を修正してください。

source文

source文の引数に，コマンド用環境変数定義を指定したファイルの絶対パスを指定してください。

(c)　サーバの起動コマンドの作成

$ADBDIR/sample/scripts/multinode_act.shがひな形です。このひな形をコピーして，次の個所を修正してください。

source文

source文の引数に，コマンド用環境変数定義を指定したファイルの絶対パスを指定してください。

(d)　サーバの停止コマンドの作成

系のリセットを使用するか，または共有ディスクのSCSIリザーブを使用するかによって，サーバの停止コマンドのひな形が異なります。系のリセットを使用する場合は，$ADBDIR/sample/scripts/multinode_term.shがひな形です。共有ディスクのSCSIリザーブを使用する場合は，$ADBDIR/sample/scripts/multinode_term_scsi.shがひな形です。

どちらか該当するひな形をコピーして，次の個所を修正してください。

source文

source文の引数に，コマンド用環境変数定義を指定したファイルの絶対パスを指定してください。

(e)　サーバの監視コマンドの作成

$ADBDIR/sample/scripts/multinode_patrol.shがひな形です。このひな形をコピーして，次の個所を修正してください。

source文

source文の引数に，コマンド用環境変数定義を指定したファイルの絶対パスを指定してください。

(5)　各ファイルの指定例（系のリセットを使用する場合）

次のファイルの指定例を示します。系のリセットを使用する場合の指定例です。

sysdefファイル

serversファイル

コマンド用環境変数定義ファイル（この例では/HADB/scripts/multinode.env）

ユーザコマンドファイル（この例では/HADB/scripts/multinode_user.sh）

サーバの起動コマンドファイル（この例では/HADB/scripts/multinode_act.sh）

サーバの停止コマンドファイル（この例では/HADB/scripts/multinode_term.sh）

サーバの監視コマンドファイル（この例では/HADB/scripts/multinode_patrol.sh）

ここで説明する指定例は，「図18‒1　HAモニタありのマルチノード構成のシステム構成例（オンプレミス環境の場合）」のシステム構成を前提としています。

(a)　sysdefファイルの指定例

■プライマリノードhadb01のsysdefファイルの指定例

environment  name hadb01,
             address 1,           ...1
             patrol 30,           ...2
             lan path11,          ...3
             lanport HAmon1;      ...4
function     pathpatrol 240,
             connect_retry 5:200,
             monbegin_restart nouse,
             multistandby use,
             usrcommand /HADB/scripts/multinode_user.sh,  ...5
             termcmd_at_abort nouse;

［説明］

このノードのリセット優先度を指定します。このノードは，プライマリノードのため，リセット優先度をいちばん高くする必要があるので1を指定します。

patrolオペランドには，30以下の値を指定してください。

HAモニタの監視パスとして使用するLANのホスト名を指定します。IPアドレス172.16.0.11に対応するホスト名path11を指定します。

HAモニタの監視パスとして使用するLANのサービス名を指定します。ポート番号7777に対応するサービス名HAmon1を指定します。

マルチノード機能で使用するユーザコマンドの絶対パスを指定します。

■セカンダリノードhadb02のsysdefファイルの指定例

environment  name hadb02,
             address 2,         ...1
             patrol 30,         ...2
             lan path21,        ...3
             lanport HAmon1;    ...4
function     pathpatrol 240,
             connect_retry 5:200,
             monbegin_restart nouse,
             multistandby use,
             usrcommand /HADB/scripts/multinode_user.sh,  ...5
             termcmd_at_abort nouse;

［説明］

このノードのリセット優先度を指定します。このノードは，プライマリノードの次にリセット優先度を高くしたいため，2を指定します。

patrolオペランドには，30以下の値を指定してください。

HAモニタの監視パスとして使用するLANのホスト名を指定します。IPアドレス172.16.0.12に対応するホスト名path21を指定します。

HAモニタの監視パスとして使用するLANのサービス名を指定します。ポート番号7777に対応するサービス名HAmon1を指定します。

マルチノード機能で使用するユーザコマンドの絶対パスを指定します。

■セカンダリノードhadb03のsysdefファイルの指定例

environment  name  hadb03,
             address 3,         ...1
             patrol 30,         ...2
             lan path31,        ...3
             lanport HAmon1;    ...4
function     pathpatrol 240,
             connect_retry 5:200,
             monbegin_restart nouse,
             multistandby use,
             usrcommand /HADB/scripts/multinode_user.sh,  ...5
             term_at_abort  nouse;

［説明］

このノードのリセット優先度を指定します。このノードは，セカンダリノードhadb02の次にリセット優先度を高くしたいため，3を指定します。

patrolオペランドには，30以下の値を指定してください。

HAモニタの監視パスとして使用するLANのホスト名を指定します。IPアドレス172.16.0.13に対応するホスト名path31を指定します。

HAモニタの監視パスとして使用するLANのサービス名を指定します。ポート番号7777に対応するサービス名HAmon1を指定します。

マルチノード機能で使用するユーザコマンドの絶対パスを指定します。

(b)　serversファイルの指定例

ここで説明している例は，ファイルシステムにext4を使用していることを前提としています。ext4以外のファイルシステムを使用する場合は，OSのmountコマンドのオプションがここで説明している例とは異なります。

■プライマリノードhadb01のserversファイルの指定例

server name /HADB/server,                     ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb:                     ...2
            /dev/vg_hadb02,
       lan_updown use,
       fs_name /dev/vg_hadb/hadb_sys:         ...3
               /dev/vg_hadb02/hadb_syndict,
       fs_mount_dir /HADB/db/ADBSYS:          ...4
                    /mnt/syndict,
       fs_mount_opt "-t ext4 -o defaults,noatime,_netdev":  ...5
                    "-t ext4 -o defaults,noatime,_netdev",
       actcommand "/HADB/scripts/multinode_act.sh",         ...6
       termcommand "/HADB/scripts/multinode_term.sh",       ...7
       patrolcommand "/HADB/scripts/multinode_patrol.sh",   ...8
       servexec_retry 0,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use:use,   ...9
       fs_neck use:use,   ...10
       initial online;    ...11

［説明］

サーバディレクトリの絶対パスを指定します。

次のディレクトリを作成するファイルシステムがあるVGの絶対パスを指定します。

システムディレクトリ

同義語辞書ファイルの格納ディレクトリ（同義語検索を行う場合に作成するディレクトリです）

2.で示したディレクトリを作成するファイルシステムを構築したLVの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするマウントポイントの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするためのmountコマンドのオプションを指定します。

マルチノード機能で使用するサーバの起動コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの停止コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの監視コマンドの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムがあるVGに対しては，useを指定します。

2.で示したディレクトリを作成するファイルシステムに対しては，useを指定します。

プライマリノードとするため，onlineを指定します。

■セカンダリノードhadb02のserversファイルの指定例

server name /HADB/server,                     ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb:                     ...2
            /dev/vg_hadb02,
       lan_updown use,
       fs_name /dev/vg_hadb/hadb_sys:         ...3
               /dev/vg_hadb02/hadb_syndict,
       fs_mount_dir /HADB/db/ADBSYS:          ...4
                    /mnt/syndict,
       fs_mount_opt "-t ext4 -o defaults,noatime,_netdev":  ...5
                    "-t ext4 -o defaults,noatime,_netdev",
       actcommand "/HADB/scripts/multinode_act.sh",         ...6
       termcommand "/HADB/scripts/multinode_term.sh",       ...7
       patrolcommand "/HADB/scripts/multinode_patrol.sh",   ...8
       servexec_retry 0,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use:use,   ...9
       fs_neck use:use,   ...10
       initial standby,   ...11
       standbypri 1;      ...12

［説明］

サーバディレクトリの絶対パスを指定します。

次のディレクトリを作成するファイルシステムがあるVGの絶対パスを指定します。

システムディレクトリ

同義語辞書ファイルの格納ディレクトリ（同義語検索を行う場合に作成するディレクトリです）

2.で示したディレクトリを作成するファイルシステムを構築したLVの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするマウントポイントの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするためのmountコマンドのオプションを指定します。

マルチノード機能で使用するサーバの起動コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの停止コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの監視コマンドの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムがあるVGに対しては，useを指定します。

2.で示したディレクトリを作成するファイルシステムに対しては，useを指定します。

セカンダリノードとするため，standbyを指定します。

プライマリノードの切り替えが発生した際，新たにプライマリノードにするノードの優先順位を指定します。このノードの優先順位をいちばん高くしたいため，1を指定します。

■セカンダリノードhadb03のserversファイルの指定例

server name /HADB/server,                     ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb:                     ...2
            /dev/vg_hadb02,
       lan_updown use,
       fs_name /dev/vg_hadb/hadb_sys:         ...3
               /dev/vg_hadb02/hadb_syndict,
       fs_mount_dir /HADB/db/ADBSYS:          ...4
                    /mnt/syndict,
       fs_mount_opt "-t ext4 -o defaults,noatime,_netdev":  ...5
                    "-t ext4 -o defaults,noatime,_netdev",
       actcommand "/HADB/scripts/multinode_act.sh",         ...6
       termcommand "/HADB/scripts/multinode_term.sh",       ...7
       patrolcommand "/HADB/scripts/multinode_patrol.sh",   ...8
       servexec_retry 0,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use:use,   ...9
       fs_neck use:use,   ...10
       initial standby,   ...11
       standbypri 2;      ...12

［説明］

サーバディレクトリの絶対パスを指定します。

次のディレクトリを作成するファイルシステムがあるVGの絶対パスを指定します。

システムディレクトリ

同義語辞書ファイルの格納ディレクトリ（同義語検索を行う場合に作成するディレクトリです）

2.で示したディレクトリを作成するファイルシステムを構築したLVの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするマウントポイントの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするためのmountコマンドのオプションを指定します。

マルチノード機能で使用するサーバの起動コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの停止コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの監視コマンドの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムがあるVGに対しては，useを指定します。

2.で示したディレクトリを作成するファイルシステムに対しては，useを指定します。

セカンダリノードとするため，standbyを指定します。

プライマリノードの切り替えが発生した際，新たにプライマリノードにするノードの優先順位を指定します。このノードの優先順位は，ノードhadb02の次にしたいため，2を指定します。

(c)　コマンド用環境変数定義ファイルの指定例

この例では，コマンド用環境変数定義を/HADB/scripts/multinode.envに格納しています。指定内容は，プライマリノードおよびセカンダリノードで同じにしてください。

■コマンド用環境変数定義ファイルの指定例

#!/bin/sh

# The environment variables for HADB
export ADBMGR=adbmanager               ...1
export ADBALIAS=HADB                   ...2
export ADBDIR=/HADB/server             ...3

［説明］

HADB管理者（OSユーザ）のユーザ名adbmanagerを指定します。

HAモニタのserversファイルのaliasオペランドの指定値であるHADBを指定します。

サーバディレクトリの絶対パスを指定します。

(d)　ユーザコマンドファイルの指定例

この例では，ユーザコマンドを/HADB/scripts/multinode_user.shに格納しています。指定内容は，プライマリノードおよびセカンダリノードで同じにしてください。

■ユーザコマンドファイルの指定例

#!/bin/sh

# Sample of the usrcommand for HADB

# Setting environment variables for HADB
source /HADB/scripts/multinode.env       ...1

###############################################################################
#  Main
###############################################################################

KIND_ONLINE="online"
KIND_STANDBY="standby"
SERV_START="-s"
SERV_END="-e"
SERV_PLANEND="-p"
SERV_ABORT="-a"
SERV_ABORT_NS="-o"
SERV_FAULT="-f"
SERV_HOSTDOWN="-h"
SERV_PLANSWAP="-w"
STATUS_START="start"
STATUS_END="end"
STATUS_SBYEND="sbyend"

patrol_sby_exe()
{
  $ADBDIR/bin/patrol_sby_exe       ...2
}

patrol_sby_term()
{
  $ADBDIR/bin/patrol_sby_term      ...3
}

stop_sby()
{
  $ADBDIR/bin/stop_sby             ...4
}

# Processing of the server
if [ "$2" = "$ADBALIAS" ]
then
  if [ "$4" = "$KIND_ONLINE" ]
  then
    case "$5" in
    "$SERV_START" )
      ;;
    "$SERV_END" )
      ;;
    "$SERV_PLANEND" )
      ;;
    "$SERV_ABORT" )
      ;;
    "$SERV_ABORT_NS" )
      ;;
    "$SERV_PLANSWAP" )
      ;;
    esac
  else
    case "$5" in
    "$SERV_START" )
      [ "$6" = "$STATUS_START" ] && patrol_sby_exe &
      ;;
    "$SERV_END" )
      [ "$6" = "$STATUS_START" -o "$6" = "$STATUS_SBYEND" ] && stop_sby
      ;;
    "$SERV_PLANEND" )
      [ "$6" = "$STATUS_START" ] && patrol_sby_term
      ;;
    "$SERV_ABORT" )
      [ "$6" = "$STATUS_START" ] && patrol_sby_term
      [ "$6" = "$STATUS_SBYEND" ] && stop_sby
      ;;
    "$SERV_FAULT" )
      [ "$6" = "$STATUS_START" ] && stop_sby
      ;;
    "$SERV_HOSTDOWN" )
      [ "$6" = "$STATUS_START" ] && patrol_sby_term
      ;;
    "$SERV_PLANSWAP" )
      [ "$6" = "$STATUS_START" ] && patrol_sby_term
      ;;
    esac
  fi
fi

exit 0

［説明］

source文には，コマンド用環境変数定義ファイルの絶対パス/HADB/scripts/multinode.envを指定します。

セカンダリノードの監視を開始するためのコマンドを指定します。

セカンダリノードの監視を終了するためのコマンドを指定します。

セカンダリノードを停止するためのコマンドを指定します。

(e)　サーバの起動コマンドファイルの指定例

この例では，サーバの起動コマンドを/HADB/scripts/multinode_act.shに格納しています。指定内容は，プライマリノードおよびセカンダリノードで同じにしてください。

■サーバの起動コマンドファイルの指定例

#!/bin/sh

# Sample of the actcommand for HADB

SU=/bin/su

# Setting environment variables for HADB
source /HADB/scripts/multinode.env      ...1

# Execute adbchgnodetype command
$SU - $ADBMGR -c "$ADBDIR/bin/adbchgnodetype --primary -n $ADBALIAS"
CHGNODERES=$?
if [ "$CHGNODERES" = "0" -o "$CHGNODERES" = "4" ]
then
  exit 0
else
  exit $CHGNODERES
fi

［説明］

source文には，コマンド用環境変数定義ファイルの絶対パス/HADB/scripts/multinode.envを指定します。

(f)　サーバの停止コマンドファイルの指定例

この例では，サーバの停止コマンドを/HADB/scripts/multinode_term.shに格納しています。指定内容は，プライマリノードおよびセカンダリノードで同じにしてください。

■サーバの停止コマンドファイルの指定例

#!/bin/sh

# Sample of the termcommand for HADB

STS_ACTIVE="ACTIVE"
STS_STOP="STOP"
STS_STARTING="STARTING"
STS_STOPPING="STOPPING"
STS_ABORT="ABORT"
STS_QUIESCE="QUIESCE"
STS_OFFLINE="OFFLINE"
STS_CHGMODE="CHGMODE"
STS_STOPWAIT="STOPWAIT"
STS_COREDUMP="COREDUMP"
STS_FORCE="FORCE"
STS_MAINTNCE="MAINTNCE"

AWK=/bin/awk
ECHO=/bin/echo
GREP=/bin/grep
SU=/bin/su

# Setting environment variables for HADB
source /HADB/scripts/multinode.env      ...1

# Execute adbstop command
while :
do

  GET_STS=`$SU - $ADBMGR -c "$ADBDIR/bin/adbls -d srv 2>/dev/null" | $GREP -v SVID | $AWK '{ if ($1 ~ /[0-9]+/) { print $2 } else { print $1 } }'`

  case "$1" in
  "-e" )
    # Normal stop operations of primary node.
    # (when the monend command is executed.)
    if [ "$GET_STS" = "$STS_ACTIVE"   -o ¥
         "$GET_STS" = "$STS_STOPPING" -o "$GET_STS" = "$STS_QUIESCE"  -o ¥
         "$GET_STS" = "$STS_OFFLINE"  -o "$GET_STS" = "$STS_CHGMODE"  -o ¥
         "$GET_STS" = "$STS_STOPWAIT" -o "$GET_STS" = "$STS_MAINTNCE" ]
    then
      $SU - $ADBMGR -c "$ADBDIR/bin/adbstop --cancel"
      STOPRES=$?
      if [ "$STOPRES" = "0" -o "$STOPRES" = "4" ]
      then
        break
      fi
    elif [ "$GET_STS" = "$STS_STARTING" ]
    then
      break
    else
      break
    fi

    ;;
  "-w" )
    # Plan stop operations of primary node.
    # (when the monswap command is executed.)
    if [ "$GET_STS" = "$STS_ACTIVE"   -o "$GET_STS" = "$STS_STARTING" -o ¥
         "$GET_STS" = "$STS_STOPPING" -o "$GET_STS" = "$STS_QUIESCE"  -o ¥
         "$GET_STS" = "$STS_OFFLINE"  -o "$GET_STS" = "$STS_CHGMODE"  -o ¥
         "$GET_STS" = "$STS_STOPWAIT" -o "$GET_STS" = "$STS_MAINTNCE" ]
    then
      $SU - $ADBMGR -c "$ADBDIR/bin/adbstop --cancel --node"
      STOPRES=$?
      if [ "$STOPRES" = "0" -o "$STOPRES" = "4" ]
      then
        break
      fi
    else
      break
    fi

    ;;
  "-c" )
    break

    ;;
  esac

done

# stop HADB
if [ "$GET_STS" = "$STS_STARTING" ]
then
  ADB_ID=`$SU - $ADBMGR -c "ps x" | $GREP adbsrvd | $GREP -v $GREP | awk '{print $1}'`
  $SU - $ADBMGR -c "kill $ADB_ID"

  exit 0
fi

# Wait for end of HADB
while [ "$GET_STS" = "$STS_ACTIVE"   -o "$GET_STS" = "$STS_STARTING" -o ¥
        "$GET_STS" = "$STS_STOPPING" -o "$GET_STS" = "$STS_QUIESCE"  -o ¥
        "$GET_STS" = "$STS_OFFLINE"  -o "$GET_STS" = "$STS_CHGMODE"  -o ¥
        "$GET_STS" = "$STS_STOPWAIT" -o "$GET_STS" = "$STS_COREDUMP" -o ¥
        "$GET_STS" = "$STS_MAINTNCE" ]
do
  GET_STS=`$SU - $ADBMGR -c "$ADBDIR/bin/adbls -d srv 2>/dev/null" | $GREP -v SVID | $AWK '{ if ($1 ~ /[0-9]+/) { print $2 } else { print $1 } }'`
  sleep 1
done

exit 0

［説明］

source文には，コマンド用環境変数定義ファイルの絶対パス/HADB/scripts/multinode.envを指定します。

(g)　サーバの監視コマンドファイルの指定例

この例では，サーバの監視コマンドを/HADB/scripts/multinode_patrol.shに格納しています。指定内容は，プライマリノードおよびセカンダリノードで同じにしてください。

■サーバの監視コマンドファイルの指定例

#!/bin/sh

# Sample of the patrolcommand for HADB

AWK=/bin/awk
GREP=/bin/grep
PS=/bin/ps
PGREP=/usr/bin/pgrep
PKILL=/usr/bin/pkill
SU=/bin/su

# Setting environment variables for HADB
source /HADB/scripts/multinode.env      ...1

# Execute adbmonitor command for primary node
$SU - $ADBMGR -c "$ADBDIR/bin/adbmonitor -n" &

## Get su command process id
PID=$!

# Trap SIGTERM and terminate adbmonitor
trap "$PKILL -P $PID" 15

## Wait process terminated
CPID=""
CHKPID=`$PS aux | $AWK -v PID=$PID '{ if ($2 == PID) { print $2 } }'`
while [ "$CHKPID" != "" ]
do

  ## Get adbmonitor process id
  if [ "$CPID" = "" ]
  then
    CPID=`$PGREP -P $PID`
  fi

  ## Wait
  if [ "$CPID" != "" ]
  then
    CHKCPID=`$PS aux | $AWK -v CPID=$CPID '{ if ($2 == CPID) { print $2 } }'`
    while [ "$CHKCPID" != "" ]
    do
      sleep 1
      CHKCPID=`$PS aux | $AWK -v CPID=$CPID '{ if ($2 == CPID) { print $2 } }'`
    done
  fi

  sleep 1
  CHKPID=`$PS aux | $AWK -v PID=$PID '{ if ($2 == PID) { print $2 } }'`
done

exit 0

［説明］

source文には，コマンド用環境変数定義ファイルの絶対パス/HADB/scripts/multinode.envを指定します。

(6)　各ファイルの指定例（共有ディスクのSCSIリザーブを使用する場合）

次のファイルの指定例を示します。共有ディスクのSCSIリザーブを使用する場合の指定例です。

sysdefファイル

serversファイル

コマンド用環境変数定義ファイル（この例では/HADB/scripts/multinode.env）

ユーザコマンドファイル（この例では/HADB/scripts/multinode_user.sh）

サーバの起動コマンドファイル（この例では/HADB/scripts/multinode_act.sh）

サーバの停止コマンドファイル（この例では/HADB/scripts/multinode_term_scsi.sh）

サーバの監視コマンドファイル（この例では/HADB/scripts/multinode_patrol.sh）

ここで説明する指定例は，「図18‒1　HAモニタありのマルチノード構成のシステム構成例（オンプレミス環境の場合）」のシステム構成を前提としています。

(a)　sysdefファイルの指定例

■プライマリノードhadb01のsysdefファイルの指定例

environment  name hadb01,
             address 1,        ...1
             patrol 30,        ...2
             lan path11,       ...3
             lanport HAmon1;   ...4
function     pathpatrol 240,
             connect_retry 5:200,
             monbegin_restart nouse,
             multistandby use,
             usrcommand /HADB/scripts/multinode_user.sh,              ...5
             termcmd_at_abort nouse,
             fence_reset nouse,                                       ...6
             fence_scsi use,                                          ...7
             fence_lan nouse;

［説明］

このノードのリセット優先度を指定します。このノードは，プライマリノードのため，リセット優先度をいちばん高くする必要があるので1を指定します。

patrolオペランドには，30以下の値を指定してください。

HAモニタの監視パスとして使用するLANのホスト名を指定します。IPアドレス172.16.0.11に対応するホスト名path11を指定します。

HAモニタの監視パスとして使用するLANのサービス名を指定します。ポート番号7777に対応するサービス名HAmon1を指定します。

マルチノード機能で使用するユーザコマンドの絶対パスを指定します。

系のリセットを使用しないため，nouseを指定します。

共有ディスクのSCSIリザーブを使用するため，useを指定します。

■セカンダリノードhadb02のsysdefファイルの指定例

environment  name hadb02,
             address 2,        ...1
             patrol 30,        ...2
             lan path21,       ...3
             lanport HAmon1;   ...4
function     pathpatrol 240,
             connect_retry 5:200,
             monbegin_restart nouse,
             multistandby use,
             usrcommand /HADB/scripts/multinode_user.sh,              ...5
             termcmd_at_abort nouse,
             fence_reset nouse,                                       ...6
             fence_scsi use,                                          ...7
             fence_lan nouse;

［説明］

このノードのリセット優先度を指定します。このノードは，プライマリノードの次にリセット優先度を高くしたいため，2を指定します。

patrolオペランドには，30以下の値を指定してください。

HAモニタの監視パスとして使用するLANのホスト名を指定します。IPアドレス172.16.0.12に対応するホスト名path21を指定します。

HAモニタの監視パスとして使用するLANのサービス名を指定します。ポート番号7777に対応するサービス名HAmon1を指定します。

マルチノード機能で使用するユーザコマンドの絶対パスを指定します。

系のリセットを使用しないため，nouseを指定します。

共有ディスクのSCSIリザーブを使用するため，useを指定します。

■セカンダリノードhadb03のsysdefファイルの指定例

environment  name hadb03,
             address 3,        ...1
             patrol 30,        ...2
             lan path31,       ...3
             lanport HAmon1;   ...4
function     pathpatrol 240,
             connect_retry 5:200,
             monbegin_restart nouse,
             multistandby use,
             usrcommand /HADB/scripts/multinode_user.sh,              ...5
             termcmd_at_abort nouse,
             fence_reset nouse,                                       ...6
             fence_scsi use,                                          ...7
             fence_lan nouse;

［説明］

このノードのリセット優先度を指定します。このノードは，セカンダリノードhadb02の次にリセット優先度を高くしたいため，3を指定します。

patrolオペランドには，30以下の値を指定してください。

HAモニタの監視パスとして使用するLANのホスト名を指定します。IPアドレス172.16.0.13に対応するホスト名path31を指定します。

HAモニタの監視パスとして使用するLANのサービス名を指定します。ポート番号7777に対応するサービス名HAmon1を指定します。

マルチノード機能で使用するユーザコマンドの絶対パスを指定します。

系のリセットを使用しないため，nouseを指定します。

共有ディスクのSCSIリザーブを使用するため，useを指定します。

(b)　serversファイルの指定例（シングルパス構成の場合）

シングルパス構成の場合のserversファイルの指定例を説明します。

ここで説明している例は，ファイルシステムにext4を使用していることを前提としています。ext4以外のファイルシステムを使用する場合は，OSのmountコマンドのオプションがここで説明している例とは異なります。

■プライマリノードhadb01のserversファイルの指定例

server name /HADB/server,                         ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb:                         ...2
            /dev/vg_hadb02,
       lan_updown use,
       fs_name /dev/vg_hadb/hadb_sys:             ...3
               /dev/vg_hadb02/hadb_syndict,
       fs_mount_dir /HADB/db/ADBSYS:              ...4
                    /mnt/syndict,
       fs_mount_opt "-t ext4 -o defaults,noatime,_netdev":       ...5
                    "-t ext4 -o defaults,noatime,_netdev",
       actcommand "/HADB/scripts/multinode_act.sh",              ...6
       termcommand "/HADB/scripts/multinode_term_scsi.sh",       ...7
       patrolcommand "/HADB/scripts/multinode_patrol.sh",        ...8
       servexec_retry 0,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use:use,                                                     ...9
       fs_neck use:use,                                                     ...10
       scsi_device /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b53e0a:  ...11
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b6c44d:
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b828e9:
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b7d9fd:
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b87793:
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b8c6d3:
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b9160f,
       initial online;                                                      ...12

［説明］

サーバディレクトリの絶対パスを指定します。

次のディレクトリを作成するファイルシステムがあるVGの絶対パスを指定します。

システムディレクトリ

同義語辞書ファイルの格納ディレクトリ（同義語検索を行う場合に作成するディレクトリです）

2.で示したディレクトリを作成するファイルシステムを構築したLVの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするマウントポイントの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするためのmountコマンドのオプションを指定します。

マルチノード機能で使用するサーバの起動コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの停止コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの監視コマンドの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムがあるVGに対しては，useを指定します。

2.で示したディレクトリを作成するファイルシステムに対しては，useを指定します。

次のファイルシステムおよびファイルがあるディスクの絶対パスを指定します。

システムディレクトリを作成するファイルシステム

同義語辞書ファイルの格納ディレクトリを作成するファイルシステム

DBエリアファイル（作業表用DBエリアファイルを除く）

プライマリノードおよびセカンダリノードで，絶対パスの指定順序を同じにしてください。

プライマリノードとするため，onlineを指定します。

■セカンダリノードhadb02のserversファイルの指定例

server name /HADB/server,                         ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb:                         ...2
            /dev/vg_hadb02,
       lan_updown use,
       fs_name /dev/vg_hadb/hadb_sys:             ...3
               /dev/vg_hadb02/hadb_syndict,
       fs_mount_dir /HADB/db/ADBSYS:              ...4
                    /mnt/syndict,
       fs_mount_opt "-t ext4 -o defaults,noatime,_netdev":       ...5
                    "-t ext4 -o defaults,noatime,_netdev",
       actcommand "/HADB/scripts/multinode_act.sh",              ...6
       termcommand "/HADB/scripts/multinode_term_scsi.sh",       ...7
       patrolcommand "/HADB/scripts/multinode_patrol.sh",        ...8
       servexec_retry 0,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use:use,                                                     ...9
       fs_neck use:use,                                                     ...10
       scsi_device /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b53e0a:  ...11
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b6c44d:
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b828e9:
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b7d9fd:
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b87793:
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b8c6d3:
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b9160f,
       initial standby,                                                     ...12
       standbypri 1;                                                        ...13

［説明］

サーバディレクトリの絶対パスを指定します。

次のディレクトリを作成するファイルシステムがあるVGの絶対パスを指定します。

システムディレクトリ

同義語辞書ファイルの格納ディレクトリ（同義語検索を行う場合に作成するディレクトリです）

2.で示したディレクトリを作成するファイルシステムを構築したLVの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするマウントポイントの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするためのmountコマンドのオプションを指定します。

マルチノード機能で使用するサーバの起動コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの停止コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの監視コマンドの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムがあるVGに対しては，useを指定します。

2.で示したディレクトリを作成するファイルシステムに対しては，useを指定します。

次のファイルシステムおよびファイルがあるディスクの絶対パスを指定します。

システムディレクトリを作成するファイルシステム

同義語辞書ファイルの格納ディレクトリを作成するファイルシステム

DBエリアファイル（作業表用DBエリアファイルを除く）

プライマリノードおよびセカンダリノードで，絶対パスの指定順序を同じにしてください。

セカンダリノードとするため，standbyを指定します。

プライマリノードの切り替えが発生した際，新たにプライマリノードにするノードの優先順位を指定します。このノードの優先順位をいちばん高くしたいため，1を指定します。

■セカンダリノードhadb03のserversファイルの指定例

server name /HADB/server,                         ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb:                         ...2
            /dev/vg_hadb02,
       lan_updown use,
       fs_name /dev/vg_hadb/hadb_sys:             ...3
               /dev/vg_hadb02/hadb_syndict,
       fs_mount_dir /HADB/db/ADBSYS:              ...4
                    /mnt/syndict,
       fs_mount_opt "-t ext4 -o defaults,noatime,_netdev":       ...5
                    "-t ext4 -o defaults,noatime,_netdev",
       actcommand "/HADB/scripts/multinode_act.sh",              ...6
       termcommand "/HADB/scripts/multinode_term_scsi.sh",       ...7
       patrolcommand "/HADB/scripts/multinode_patrol.sh",        ...8
       servexec_retry 0,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use:use,                                                     ...9
       fs_neck use:use,                                                     ...10
       scsi_device /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b53e0a:  ...11
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b6c44d:
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b828e9:
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b7d9fd:
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b87793:
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b8c6d3:
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b9160f,
       initial standby,                                                     ...12
       standbypri 2;                                                        ...13

［説明］

サーバディレクトリの絶対パスを指定します。

次のディレクトリを作成するファイルシステムがあるVGの絶対パスを指定します。

システムディレクトリ

同義語辞書ファイルの格納ディレクトリ（同義語検索を行う場合に作成するディレクトリです）

2.で示したディレクトリを作成するファイルシステムを構築したLVの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするマウントポイントの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするためのmountコマンドのオプションを指定します。

マルチノード機能で使用するサーバの起動コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの停止コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの監視コマンドの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムがあるVGに対しては，useを指定します。

2.で示したディレクトリを作成するファイルシステムに対しては，useを指定します。

次のファイルシステムおよびファイルがあるディスクの絶対パスを指定します。

システムディレクトリを作成するファイルシステム

同義語辞書ファイルの格納ディレクトリを作成するファイルシステム

DBエリアファイル（作業表用DBエリアファイルを除く）

プライマリノードおよびセカンダリノードで，絶対パスの指定順序を同じにしてください。

セカンダリノードとするため，standbyを指定します。

プライマリノードの切り替えが発生した際，新たにプライマリノードにするノードの優先順位を指定します。このノードの優先順位は，ノードhadb02の次にしたいため，2を指定します。

(c)　serversファイルの指定例（マルチパスソフトウェアによる冗長化構成の場合）

マルチパスソフトウェアによる冗長化構成の場合のserversファイルの指定例を説明します。

ここで説明している例は，ファイルシステムにext4を使用していることを前提としています。ext4以外のファイルシステムを使用する場合は，OSのmountコマンドのオプションがここで説明している例とは異なります。

■プライマリノードhadb01のserversファイルの指定例

server name /HADB/server,                         ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb:                         ...2
            /dev/vg_hadb02,
       lan_updown use,
       fs_name /dev/vg_hadb/hadb_sys:             ...3
               /dev/vg_hadb02/hadb_syndict,
       fs_mount_dir /HADB/db/ADBSYS:              ...4
                    /mnt/syndict,
       fs_mount_opt "-t ext4 -o defaults,noatime,_netdev":   ...5
                    "-t ext4 -o defaults,noatime,_netdev",
       actcommand "/HADB/scripts/multinode_act.sh",          ...6
       termcommand "/HADB/scripts/multinode_term_scsi.sh",   ...7
       patrolcommand "/HADB/scripts/multinode_patrol.sh",    ...8
       servexec_retry 0,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use:use,                   ...9
       fs_neck use:use,                   ...10
       dmmp_device /dev/mapper/mpath1:    ...11
                   /dev/mapper/mpath2:
                   /dev/mapper/mpath11:
                   /dev/mapper/mpath12:
                   /dev/mapper/mpath13:
                   /dev/mapper/mpath14:
                   /dev/mapper/mpath15,
       initial online;                    ...12

［説明］

サーバディレクトリの絶対パスを指定します。

次のディレクトリを作成するファイルシステムがあるVGの絶対パスを指定します。

システムディレクトリ

同義語辞書ファイルの格納ディレクトリ（同義語検索を行う場合に作成するディレクトリです）

2.で示したディレクトリを作成するファイルシステムを構築したLVの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするマウントポイントの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするためのmountコマンドのオプションを指定します。

マルチノード機能で使用するサーバの起動コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの停止コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの監視コマンドの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムがあるVGに対しては，useを指定します。

2.で示したディレクトリを作成するファイルシステムに対しては，useを指定します。

次のファイルシステムおよびファイルがあるディスクの絶対パスを指定します。

システムディレクトリを作成するファイルシステム

同義語辞書ファイルの格納ディレクトリを作成するファイルシステム

DBエリアファイル（作業表用DBエリアファイルを除く）

プライマリノードおよびセカンダリノードで，絶対パスの指定順序を同じにしてください。

プライマリノードとするため，onlineを指定します。

■セカンダリノードhadb02のserversファイルの指定例

server name /HADB/server,                         ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb:                         ...2
            /dev/vg_hadb02,
       lan_updown use,
       fs_name /dev/vg_hadb/hadb_sys:             ...3
               /dev/vg_hadb02/hadb_syndict,
       fs_mount_dir /HADB/db/ADBSYS:              ...4
                    /mnt/syndict,
       fs_mount_opt "-t ext4 -o defaults,noatime,_netdev":   ...5
                    "-t ext4 -o defaults,noatime,_netdev",
       actcommand "/HADB/scripts/multinode_act.sh",          ...6
       termcommand "/HADB/scripts/multinode_term_scsi.sh",   ...7
       patrolcommand "/HADB/scripts/multinode_patrol.sh",    ...8
       servexec_retry 0,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use:use,                   ...9
       fs_neck use:use,                   ...10
       dmmp_device /dev/mapper/mpath1:    ...11
                   /dev/mapper/mpath2:
                   /dev/mapper/mpath11:
                   /dev/mapper/mpath12:
                   /dev/mapper/mpath13:
                   /dev/mapper/mpath14:
                   /dev/mapper/mpath15,
       initial standby,                   ...12
       standbypri 1;                      ...13

［説明］

サーバディレクトリの絶対パスを指定します。

次のディレクトリを作成するファイルシステムがあるVGの絶対パスを指定します。

システムディレクトリ

同義語辞書ファイルの格納ディレクトリ（同義語検索を行う場合に作成するディレクトリです）

2.で示したディレクトリを作成するファイルシステムを構築したLVの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするマウントポイントの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするためのmountコマンドのオプションを指定します。

マルチノード機能で使用するサーバの起動コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの停止コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの監視コマンドの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムがあるVGに対しては，useを指定します。

2.で示したディレクトリを作成するファイルシステムに対しては，useを指定します。

次のファイルシステムおよびファイルがあるディスクの絶対パスを指定します。

システムディレクトリを作成するファイルシステム

同義語辞書ファイルの格納ディレクトリを作成するファイルシステム

DBエリアファイル（作業表用DBエリアファイルを除く）

プライマリノードおよびセカンダリノードで，絶対パスの指定順序を同じにしてください。

セカンダリノードとするため，standbyを指定します。

プライマリノードの切り替えが発生した際，新たにプライマリノードにするノードの優先順位を指定します。このノードの優先順位をいちばん高くしたいため，1を指定します。

■セカンダリノードhadb03のserversファイルの指定例

server name /HADB/server,                         ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb:                         ...2
            /dev/vg_hadb02,
       lan_updown use,
       fs_name /dev/vg_hadb/hadb_sys:             ...3
               /dev/vg_hadb02/hadb_syndict,
       fs_mount_dir /HADB/db/ADBSYS:              ...4
                    /mnt/syndict,
       fs_mount_opt "-t ext4 -o defaults,noatime,_netdev":   ...5
                    "-t ext4 -o defaults,noatime,_netdev",
       actcommand "/HADB/scripts/multinode_act.sh",          ...6
       termcommand "/HADB/scripts/multinode_term_scsi.sh",   ...7
       patrolcommand "/HADB/scripts/multinode_patrol.sh",    ...8
       servexec_retry 0,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use:use,                   ...9
       fs_neck use:use,                   ...10
       dmmp_device /dev/mapper/mpath1:    ...11
                   /dev/mapper/mpath2:
                   /dev/mapper/mpath11:
                   /dev/mapper/mpath12:
                   /dev/mapper/mpath13:
                   /dev/mapper/mpath14:
                   /dev/mapper/mpath15,
       initial standby,                   ...12
       standbypri 2;                      ...13

［説明］

サーバディレクトリの絶対パスを指定します。

次のディレクトリを作成するファイルシステムがあるVGの絶対パスを指定します。

システムディレクトリ

同義語辞書ファイルの格納ディレクトリ（同義語検索を行う場合に作成するディレクトリです）

2.で示したディレクトリを作成するファイルシステムを構築したLVの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするマウントポイントの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするためのmountコマンドのオプションを指定します。

マルチノード機能で使用するサーバの起動コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの停止コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの監視コマンドの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムがあるVGに対しては，useを指定します。

2.で示したディレクトリを作成するファイルシステムに対しては，useを指定します。

次のファイルシステムおよびファイルがあるディスクの絶対パスを指定します。

システムディレクトリを作成するファイルシステム

同義語辞書ファイルの格納ディレクトリを作成するファイルシステム

DBエリアファイル（作業表用DBエリアファイルを除く）

プライマリノードおよびセカンダリノードで，絶対パスの指定順序を同じにしてください。

セカンダリノードとするため，standbyを指定します。

プライマリノードの切り替えが発生した際，新たにプライマリノードにするノードの優先順位を指定します。このノードの優先順位は，ノードhadb02の次にしたいため，2を指定します。

(d)　コマンド用環境変数定義ファイルの指定例

コマンド用環境変数定義ファイルの指定例については，「(5)　各ファイルの指定例（系のリセットを使用する場合）」の「(c)　コマンド用環境変数定義ファイルの指定例」を参照してください。

(e)　ユーザコマンドファイルの指定例

ユーザコマンドファイルの指定例については，「(5)　各ファイルの指定例（系のリセットを使用する場合）」の「(d)　ユーザコマンドファイルの指定例」を参照してください。

(f)　サーバの起動コマンドファイルの指定例

サーバの起動コマンドファイルの指定例については，「(5)　各ファイルの指定例（系のリセットを使用する場合）」の「(e)　サーバの起動コマンドファイルの指定例」を参照してください。

(g)　サーバの停止コマンドファイルの指定例

この例では，サーバの停止コマンドを/HADB/scripts/multinode_term_scsi.shに格納しています。指定内容は，プライマリノードおよびセカンダリノードで同じにしてください。

■サーバの停止コマンドファイルの指定例

#!/bin/sh

# Sample of the termcommand for HADB

STS_ACTIVE="ACTIVE"
STS_STOP="STOP"
STS_STARTING="STARTING"
STS_STOPPING="STOPPING"
STS_ABORT="ABORT"
STS_QUIESCE="QUIESCE"
STS_OFFLINE="OFFLINE"
STS_CHGMODE="CHGMODE"
STS_STOPWAIT="STOPWAIT"
STS_COREDUMP="COREDUMP"
STS_FORCE="FORCE"
STS_MAINTNCE="MAINTNCE"

AWK=/bin/awk
ECHO=/bin/echo
GREP=/bin/grep
SU=/bin/su

# Setting environment variables for HADB
source /HADB/scripts/multinode.env      ...1

# Execute adbstop command
while :
do

  GET_STS=`$SU - $ADBMGR -c "$ADBDIR/bin/adbls -d srv 2>/dev/null" | $GREP -v SVID | $AWK '{ if ($1 ~ /[0-9]+/) { print $2 } else { print $1 } }'`

  case "$1" in
  "-e" )
    # Normal stop operations of primary node.
    # (when the monend command is executed.)
    if [ "$GET_STS" = "$STS_ACTIVE"   -o ¥
         "$GET_STS" = "$STS_STOPPING" -o "$GET_STS" = "$STS_QUIESCE"  -o ¥
         "$GET_STS" = "$STS_OFFLINE"  -o "$GET_STS" = "$STS_CHGMODE"  -o ¥
         "$GET_STS" = "$STS_STOPWAIT" -o "$GET_STS" = "$STS_MAINTNCE" ]
    then
      $SU - $ADBMGR -c "$ADBDIR/bin/adbstop --cancel"
      STOPRES=$?
      if [ "$STOPRES" = "0" -o "$STOPRES" = "4" ]
      then
        break
      fi
    elif [ "$GET_STS" = "$STS_STARTING" ]
    then
      break
    else
      break
    fi

    ;;
  "-w" )
    # Plan stop operations of primary node.
    # (When the monswap command is executed or a monitoring path failure occurs.)
    if [ "$GET_STS" = "$STS_ACTIVE"   -o "$GET_STS" = "$STS_STARTING" -o ¥
         "$GET_STS" = "$STS_STOPPING" -o "$GET_STS" = "$STS_QUIESCE"  -o ¥
         "$GET_STS" = "$STS_OFFLINE"  -o "$GET_STS" = "$STS_CHGMODE"  -o ¥
         "$GET_STS" = "$STS_STOPWAIT" -o "$GET_STS" = "$STS_MAINTNCE" ]
    then
      $SU - $ADBMGR -c "$ECHO y|$ADBDIR/bin/adbstop --force"
      STOPRES=$?
      if [ "$STOPRES" = "0" -o "$STOPRES" = "4" ]
      then
        break
      fi
    else
      break
    fi

    ;;
  "-c" )
    break

    ;;
  esac

done

# stop HADB
if [ "$GET_STS" = "$STS_STARTING" ]
then
  ADB_ID=`$SU - $ADBMGR -c "ps x" | $GREP adbsrvd | $GREP -v $GREP | awk '{print $1}'`
  $SU - $ADBMGR -c "kill $ADB_ID"

  exit 0
fi

# Wait for end of HADB
while [ "$GET_STS" = "$STS_ACTIVE"   -o "$GET_STS" = "$STS_STARTING" -o ¥
        "$GET_STS" = "$STS_STOPPING" -o "$GET_STS" = "$STS_QUIESCE"  -o ¥
        "$GET_STS" = "$STS_OFFLINE"  -o "$GET_STS" = "$STS_CHGMODE"  -o ¥
        "$GET_STS" = "$STS_STOPWAIT" -o "$GET_STS" = "$STS_COREDUMP" -o ¥
        "$GET_STS" = "$STS_MAINTNCE" ]
do
  GET_STS=`$SU - $ADBMGR -c "$ADBDIR/bin/adbls -d srv 2>/dev/null" | $GREP -v SVID | $AWK '{ if ($1 ~ /[0-9]+/) { print $2 } else { print $1 } }'`
  sleep 1
done

exit 0

［説明］

source文には，コマンド用環境変数定義ファイルの絶対パス/HADB/scripts/multinode.envを指定します。

(h)　サーバの監視コマンドファイルの指定例

サーバの監視コマンドファイルの指定例については，「(5)　各ファイルの指定例（系のリセットを使用する場合）」の「(g)　サーバの監視コマンドファイルの指定例」を参照してください。

(7)　HAモニタの起動設定

OSの起動時に，自動的にHAモニタが起動するように設定してください。設定方法については，マニュアルHAモニタ Linux(R)(x86)編のシステムの起動からサーバの起動までを自動化するを参照してください。

18.4.5　各ノードでのサーバ定義の作成

マルチノード機能を使用する場合は，全ノードでサーバ定義を作成する必要があります。サーバ定義の作成方法については，「8.5　サーバ定義の作成および変更方法」を参照してください。サーバ定義のオペランドについては，「7.　サーバ定義の設計」を参照してください。

(1)　全ノードに指定する必要があるオペランド

マルチノード機能を使用する場合，次のオペランドを全ノードに指定してください。

adb_sys_multi_node_info

メモ

HAモニタありのマルチノード構成の場合，このオペランドには，プライマリノードおよび全セカンダリノードのホスト名とポート番号を指定しますが，指定値の順序も同じにしてください。

(2)　全ノードで指定値を同じにする必要があるオペランド

次のオペランドは，全ノードで指定値を同じにしてください。オペランドを省略した場合は，全ノードでオペランドを省略してください。

adb_dbarea_wrk_page_size

adb_sys_multi_node_info（指定値の順序も同じにしてください）

adb_sys_max_parallel_exec_num

adb_sys_max_users

adb_sys_max_users_wrn_pnt

adb_sys_lck_conflict_behavior

adb_sys_trn_iso_lv

adb_sql_order_mode

adb_sql_prep_delrsvd_words（指定値の順序も同じにしてください）

adb_sql_prep_dec_div_rs_prior

adb_sql_prep_null_collation

adbcltgrp（-g，-m，-u，および-wオプション）

メモ

HAモニタありのマルチノード構成の場合，プライマリノードおよび全セカンダリノードで指定値が異なるノードが1つでもあると，マルチノード構成のHADBサーバを開始できません。

指定値が異なるワーカーノードがある場合，そのワーカーノードをマルチノード構成に追加することはできません。

(3)　プライマリノードとセカンダリノードで指定値を同じにする必要があるオペランド

HAモニタありのマルチノード構成の場合，次のオペランドは，プライマリノードとセカンダリノードで指定値を同じにしてください。オペランドを省略する場合は，プライマリノードおよびセカンダリノードでオペランドを省略してください。指定値が異なると，マルチノード構成のHADBサーバを開始できません。

adb_rpc_port

adb_sql_default_dbarea_shared

adb_syndict_storage_path

adb_cmd_dvbix_rthd_use

adb_cmd_ixrec_file_use

adb_auth_keyc_endpoint※

adb_auth_clt_keyc_endpoint※

adb_auth_keyc_realm※

adb_auth_keyc_clt_id※

注※

Keycloak認証を使用する場合に指定するオペランドです。

(4)　ワーカーノードを使用する場合

ワーカーノードを使用する場合は，全ノードに次のオペランドを指定してください。また，指定値を全ノードで同じにしてください。

adb_sys_multi_max_worker_nodes

また，ワーカーノードには，次のオペランドを指定してください。

adb_sys_multi_worker_node_info

メモ

HAモニタなしのマルチノード構成の場合，ワーカーノードの設定が必須のため，上記の2つのオペランドを指定する必要があります。

(5)　SQLパラレル実行機能を使用する場合

SQLパラレル実行機能を使用する場合は，次のオペランドの指定値を全ノードで同じにしてください。オペランドを省略する場合は，全ノードでオペランドを省略してください。オペランドの指定値がSQLメインノードと一致しないノードは，SQLサブノードの候補になりません。そのため，オペランドの指定値を一致させておかないと，検索系SQLの処理で使用されるノード数が少なくなります。SQLパラレル実行機能を適用する検索系SQLの実行時にSQLサブノードが1つも確保できない場合，その検索系SQLはエラーになります。

adb_sys_rthd_num

adb_sys_uthd_num

adb_sys_shm_huge_page_size

adb_sys_cld_cache_total_size※

adb_sys_cld_access_area_size※

adb_sql_opt_drvtbl_grping_prior

adb_sql_exe_max_rthd_num

adb_sql_exe_hashgrp_area_size

adb_sql_exe_hashtbl_area_size

adb_sql_exe_hashflt_area_size

adb_sql_exe_hashgl_area_size

adb_sql_tbldef_cache_size

adb_sql_rngidx_preread

adb_dbbuff_wrktbl_glb_blk_num

adb_dbbuff_wrktbl_clt_blk_num

adbbuff

adbcachegrp※

adbcltgrp（-rおよび-eオプション）

注※

クラウドストレージ機能を使用している場合に指定するオペランドです。これらのオペランドの指定値を全ノードで同じにしてください。

(6)　監査証跡機能を使用する場合

監査証跡機能を使用する場合は，全ノードに次のオペランドを指定してください。オペランドの指定値は，ノードごとに異なっていてもかまいません。

adb_audit_log_path

メモ

HAモニタありのマルチノード構成の場合，プライマリノードおよび全セカンダリノードで上記のオペランドの指定有無が異なるノードが1つでもあると，マルチノード構成のHADBサーバを開始できません。

上記のオペランドの指定有無が異なるワーカーノードがある場合，そのワーカーノードをマルチノード構成に追加することはできません。

(7)　PAM認証を使用する場合

PAM認証を使用する場合は，次のオペランドを指定してください。

adb_auth_passwd_privkey_path

HAモニタありのマルチノード構成の場合は，プライマリノードおよびセカンダリノードにこのオペランドを指定してください。オペランドの指定値は，ノードごとに異なっていてもかまいませんが，同じ秘密鍵ファイルを指定してください。

HAモニタなしのマルチノード構成の場合は，プライマリノードにだけこのオペランドを指定してください。

メモ

ワーカーノードには，このオペランドを指定する必要はありません。

HAモニタありのマルチノード構成の場合，プライマリノードおよび全セカンダリノードで上記のオペランドの指定有無が異なるノードが1つでもあるか，または異なる秘密鍵ファイルを指定したノードが1つでもある場合，マルチノード構成のHADBサーバを開始できません。

adb_cmd_passwd_pubkey_path

全ノードにこのオペランドを指定してください。オペランドの指定値は，ノードごとに異なっていてもかまいませんが，同じ公開鍵ファイルを指定してください。

メモ

HAモニタありのマルチノード構成の場合，プライマリノードおよび全セカンダリノードで上記のオペランドの指定有無が異なるノードが1つでもあるか，または異なる公開鍵ファイルを指定したノードが1つでもある場合，マルチノード構成のHADBサーバを開始できません。

上記のオペランドの指定有無が異なるワーカーノードがあるか，または異なる公開鍵ファイルを指定したワーカーノードがある場合，そのワーカーノードをマルチノード構成に追加することはできません。

(8)　DBエリア暗号化機能を使用する場合

DBエリア暗号化機能を使用する場合は，全ノードに次のオペランドを指定してください。オペランドの指定値は，ノードごとに異なっていてもかまいませんが，同じHADB暗号鍵ファイルを指定してください。

adb_crypto_dmkey_path

メモ

HAモニタありのマルチノード構成の場合，プライマリノードおよび全セカンダリノードで上記のオペランドの指定有無が異なるノードが1つでもあるか，または異なるHADB暗号鍵ファイルを指定したノードが1つでもある場合，マルチノード構成のHADBサーバを開始できません。

上記のオペランドの指定有無が異なるワーカーノードがあるか，または異なるHADB暗号鍵ファイルを指定したワーカーノードがある場合，そのワーカーノードをマルチノード構成に追加することはできません。

(9)　クラウドストレージ機能を使用する場合

クラウドストレージ機能を使用する場合は，全ノードに次のオペランドを指定してください。オペランドの指定値も全ノードで同じにしてください。

オブジェクトストレージにAmazon S3を使用する場合

adb_sys_cld_aws_regionまたはadb_sys_cld_endpointのどちらかのオペランド

adb_sys_cld_aws_bucket

オブジェクトストレージにAmazon S3互換オブジェクトストレージを使用する場合

adb_sys_cld_endpoint

adb_sys_cld_aws_bucket

オブジェクトストレージにAzure Blob Storageを使用する場合

adb_sys_cld_az_storage_account

adb_sys_cld_az_container

メモ

HAモニタありのマルチノード構成の場合，プライマリノードおよび全セカンダリノードで上記のオペランドの指定がない，または指定値が異なるノードが1つでもあると，マルチノード構成のHADBサーバを開始できません。

上記のオペランドの指定がない，または指定値が異なるワーカーノードがある場合，そのワーカーノードをマルチノード構成に追加することはできません。

(10)　サーバ定義の指定例（HAモニタありのマルチノード構成の場合）

■プライマリノードおよびセカンダリノードの場合

プライマリノードおよびセカンダリノードのサーバ定義の指定例を次に示します。指定値を同じにする必要があるオペランド以外は，ノードごとに指定値を変更できます。

set adb_db_path = /HADB/db
set adb_rpc_port = 23650
set adb_sys_max_users = 10
set adb_sys_rthd_num = 40
set adb_sys_uthd_num = 128
set adb_sql_exe_max_rthd_num = 4
set adb_sys_memory_limit = 64000
set adb_sys_multi_node_info = 172.16.0.11:23651,¥    ...1
                              172.16.0.12:23651,¥    ...2
                              172.16.0.13:23651      ...3
set adb_sys_multi_max_worker_nodes = 8               ...4

adbbuff -g TBLBUF01 ¥
        -n ADBUTBL01 ¥
        -p 1000000 ¥
        -v 1024
adbbuff -g IDXBUF01 ¥
        -n ADBUIDX01 ¥
        -p 2500000

［説明］

プライマリノードhadb01のHADBサーバ間通信用のIPアドレス172.16.0.11，およびポート番号23651を指定します。

セカンダリノードhadb02のHADBサーバ間通信用のIPアドレス172.16.0.12，およびポート番号23651を指定します。

セカンダリノードhadb03のHADBサーバ間通信用のIPアドレス172.16.0.13，およびポート番号23651を指定します。

ワーカーノードの最大数を指定します。最大8つのワーカーノードを追加できるようになります。

■ワーカーノードの場合

ワーカーノードのサーバ定義の指定例を次に示します。指定値を同じにする必要があるオペランド以外は，ワーカーノードごとに指定値を変更できます。

set adb_db_path = /HADB/db
set adb_rpc_port = 23650
set adb_sys_max_users = 10
set adb_sys_rthd_num = 40
set adb_sys_uthd_num = 128
set adb_sql_exe_max_rthd_num = 4
set adb_sys_memory_limit = 64000
set adb_sys_multi_node_info = 172.16.0.11:23651,¥            ...1
                              172.16.0.12:23651,¥            ...2
                              172.16.0.13:23651              ...3
set adb_sys_multi_max_worker_nodes = 8                       ...4
set adb_sys_multi_worker_node_info = 172.16.0.14:23651       ...5

adbbuff -g TBLBUF01 ¥
        -n ADBUTBL01 ¥
        -p 1000000 ¥
        -v 1024

adbbuff -g IDXBUF01 ¥
        -n ADBUIDX01 ¥
        -p 2500000

［説明］

プライマリノードhadb01のHADBサーバ間通信用のIPアドレス172.16.0.11，およびポート番号23651を指定します。

セカンダリノードhadb02のHADBサーバ間通信用のIPアドレス172.16.0.12，およびポート番号23651を指定します。

セカンダリノードhadb03のHADBサーバ間通信用のIPアドレス172.16.0.13，およびポート番号23651を指定します。

ワーカーノードの最大数を指定します。最大8つのワーカーノードを追加できるようになります。

ワーカーノードhadb04のHADBサーバ間通信用のIPアドレス172.16.0.14，およびポート番号23651を指定します。

重要

上記の5.のadb_sys_multi_worker_node_infoオペランドは，ワーカーノードごとに指定値が変わります。自ワーカーノード（このサーバ定義を指定するワーカーノード）のホスト名とポート番号を指定します。

(11)　サーバ定義の指定例（HAモニタなしのマルチノード構成の場合）

■プライマリノードの場合

プライマリノードのサーバ定義の指定例を次に示します。

set adb_db_path = /HADB/db
set adb_rpc_port = 23650
set adb_sys_max_users = 10
set adb_sys_rthd_num = 40
set adb_sys_uthd_num = 128
set adb_sql_exe_max_rthd_num = 4
set adb_sys_memory_limit = 64000
set adb_sys_multi_node_info = 172.16.0.11:23651     ...1
set adb_sys_multi_max_worker_nodes = 8              ...2

adbbuff -g TBLBUF01 ¥
        -n ADBUTBL01 ¥
        -p 1000000 ¥
        -v 1024
adbbuff -g IDXBUF01 ¥
        -n ADBUIDX01 ¥
        -p 2500000

［説明］

プライマリノードhadb01のHADBサーバ間通信用のIPアドレス172.16.0.11，およびポート番号23651を指定します。

ワーカーノードの最大数を指定します。最大8つのワーカーノードを追加できるようになります。

■ワーカーノードの場合

ワーカーノードのサーバ定義の指定例を次に示します。指定値を同じにする必要があるオペランド以外は，ワーカーノードごとに指定値を変更できます。

set adb_db_path = /HADB/db
set adb_rpc_port = 23650
set adb_sys_max_users = 10
set adb_sys_rthd_num = 40
set adb_sys_uthd_num = 128
set adb_sql_exe_max_rthd_num = 4
set adb_sys_memory_limit = 64000
set adb_sys_multi_node_info = 172.16.0.11:23651             ...1
set adb_sys_multi_max_worker_nodes = 8                      ...2
set adb_sys_multi_worker_node_info = 172.16.0.12:23651      ...3

adbbuff -g TBLBUF01 ¥
        -n ADBUTBL01 ¥
        -p 1000000 ¥
        -v 1024

adbbuff -g IDXBUF01 ¥
        -n ADBUIDX01 ¥
        -p 2500000

［説明］

プライマリノードhadb01のHADBサーバ間通信用のIPアドレス172.16.0.11，およびポート番号23651を指定します。

ワーカーノードの最大数を指定します。最大8つのワーカーノードを追加できるようになります。

ワーカーノードhadb02のHADBサーバ間通信用のIPアドレス172.16.0.12，およびポート番号23651を指定します。

重要

上記の3.のadb_sys_multi_worker_node_infoオペランドは，ワーカーノードごとに指定値が変わります。自ワーカーノード（このサーバ定義を指定するワーカーノード）のホスト名とポート番号を指定します。

18.4.6　クライアント定義の作成

検索系SQLだけを実行するAPと，更新系SQLも実行するAPとで，使用するクライアント定義を別々にし，トランザクションアクセスモードおよびトランザクション隔離性水準の指定を変えてください。JDBCドライバを使用している場合は，システムプロパティなどでトランザクションアクセスモードおよびトランザクション隔離性水準の指定を変えてください。

クライアント定義の作成については，マニュアルHADB　AP開発ガイドのHADBクライアントの環境設定（ODBCドライバおよびCLI関数を使用する場合）のクライアント定義の作成を参照してください。クライアント定義のオペランドについては，マニュアルHADB　AP開発ガイドのクライアント定義の設計のクライアント定義のオペランドの内容を参照してください。

■クライアント定義の指定例（検索系SQLだけを実行するAPの場合）

set adb_clt_rpc_srv_host = 10.196.108.143     ...1
set adb_clt_rpc_srv_port = 23650              ...2
set adb_clt_ap_name = "AP01"                  ...3
set adb_clt_trn_access_mode = READ_ONLY       ...4
set adb_clt_trn_iso_lv = READ_COMMITTED       ...5
set adb_clt_sql_parallel_exec = Y             ...6

［説明］

接続先のホスト名として，クライアント−サーバ間の通信で使用するエイリアスIPアドレス10.196.108.143を指定します。

上記の指定例は，HAモニタありのマルチノード構成の場合の例です。HAモニタなしのマルチノード構成の場合は，接続先のホスト名として，クライアント−サーバ間の通信で使用するプライマリノードのIPアドレス10.196.108.11を指定します。

接続先のポート番号として，サーバ定義adb_rpc_portオペランドの指定値である23650を指定します。

AP識別子を指定します。

検索系SQLだけを実行するAPのため，READ_ONLYを指定し，トランザクションアクセスモードを読み取り専用モードにします。

トランザクション隔離性水準にREAD_COMMITTEDを指定します。

4.および5.の指定によって，プライマリノードのHADBサーバが負荷の少ないノードを選択し，そのノードで検索系SQLが実行されます。

条件を満たす検索系SQLにSQLパラレル実行機能を適用する場合に指定します。

検索系SQLにSQLパラレル実行機能が適用された場合，プライマリノードのHADBサーバがSQLメインノードを選択し，SQLメインノードとSQLサブノードで検索系SQLを並列実行します。

■クライアント定義の指定例（更新系SQLも実行するAPの場合）

set adb_clt_rpc_srv_host = 10.196.108.143     ...1
set adb_clt_rpc_srv_port = 23650              ...2
set adb_clt_ap_name = "AP02"                  ...3
set adb_clt_trn_access_mode = READ_WRITE      ...4

［説明］

接続先のホスト名として，クライアント−サーバ間の通信で使用するエイリアスIPアドレス10.196.108.143を指定します。

上記の指定例は，HAモニタありのマルチノード構成の場合の例です。HAモニタなしのマルチノード構成の場合は，接続先のホスト名として，クライアント−サーバ間の通信で使用するプライマリノードのIPアドレス10.196.108.11を指定します。

接続先のポート番号として，サーバ定義adb_rpc_portオペランドの指定値である23650を指定します。

AP識別子を指定します。

更新系SQLも実行するAPのため，READ_WRITEを指定し，トランザクションアクセスモードを読み書き可能モードにします。これによって，このAPが実行するSQL文はプライマリノードでだけ実行されます。

18.4.7　クライアント定義の集中管理機能を使用する場合の環境設定

クライアント定義の集中管理機能を使用する場合，クライアント管理定義ファイルおよびこの機能で使用するクライアント定義ファイルを，プライマリノードおよびセカンダリノードで作成してください（プライマリノードおよびセカンダリノードで同じファイルを作成してください）。プライマリノードとセカンダリノードでファイルの内容に不一致があると，マルチノード構成のHADBサーバを開始できません。

メモ

プライマリノードの切り替えが発生した場合に，切り替えが発生する前と同じ状態でクライアント定義の集中管理機能を継続して使用するために，プライマリノードおよびセカンダリノードで同じファイルを作成する必要があります。

ワーカーノードには，クライアント管理定義ファイル，およびこの機能で使用するクライアント定義ファイルを作成する必要はありません。

HAモニタなしのマルチノード構成の場合は，クライアント管理定義ファイルおよびこの機能で使用するクライアント定義ファイルをプライマリノードにだけ作成してください。

また，プライマリノードのクライアント管理定義ファイルまたはこの機能で使用するクライアント定義ファイルの内容を変更した場合は，全セカンダリノードのファイルの内容も変更してください。プライマリノードとセカンダリノードでファイルの内容に不一致があると，--updateオプションを指定したadbclientdefmangコマンドがエラーになります。

クライアント定義の集中管理機能については，「2.13　クライアント定義の集中管理機能」を参照してください。

18.4.8　データベースの作成

マルチノード機能を使用する場合のデータベースの作成手順を説明します。

(1)　データベース作成の手順

データベースの作成手順の流れを次に示します。

ノード切り替え対象のファイルシステムを初期化する

HAモニタなしのマルチノード構成の場合は，1.の作業は必要ありません。

プライマリノードでデータベースを作成する

セカンダリノードおよびワーカーノードでDBディレクトリを作成する

HAモニタなしのマルチノード構成の場合は，セカンダリノードを設定できないため，ワーカーノードだけにDBディレクトリを作成してください。

(2)　ノード切り替え対象のファイルシステムの初期化

OSのコマンドを実行して，システムディレクトリ用のファイルシステムと，同義語辞書ファイルを格納するファイルシステムを初期化します。

システムディレクトリ用のファイルシステムの初期化

システムディレクトリ用のLVとして作成した/dev/vg_hadb/hadb_sysを，ext4のファイルシステムで初期化する場合の実行例を次に示します。

コマンドの実行例

mkfs -t ext4 /dev/vg_hadb/hadb_sys

同義語辞書ファイルを格納するファイルシステムの初期化

同義語辞書ファイルを格納するLVとして作成した/dev/vg_hadb02/hadb_syndictを，ext4のファイルシステムで初期化する場合の実行例を次に示します。

コマンドの実行例

mkfs -t ext4 /dev/vg_hadb02/hadb_syndict

同義語検索を行っていない場合は，同義語辞書ファイルを格納するファイルシステムの初期化は必要ありません。

メモ

HAモニタなしのマルチノード構成の場合，ノード切り替え対象のファイルシステムの初期化は必要ありません。

(3)　プライマリノードでのデータベースの作成

プライマリノードでデータベースを作成します。

HAモニタありのマルチノード構成の場合

最初にOSのmountコマンドをプライマリノードで実行し，$DBDIR/ADBSYSにシステムディレクトリ用のファイルシステムをマウントします。次に，adbinitコマンドをプライマリノードで実行し，データベースを作成します。

HAモニタなしのマルチノード構成の場合

adbinitコマンドをプライマリノードで実行し，データベースを作成します。

adbinitコマンドの初期設定オプションの指定例を次に示します。

■初期設定オプションの指定例（プライマリノード）

シングルパス構成の場合の例

set adb_init_dbarea_initialize = Y
set adb_init_wrk_blk_path = /dev/mapper/WRK001
set adb_init_mst_blk_path = /dev/disk/by-id/wwn-0x600605b0041db9c016ea34c3b1b7d9fd
set adb_init_dic_blk_path = /dev/disk/by-id/wwn-0x600605b0041db9c016ea34c3b1b828e9
set adb_init_stbl_blk_path = /dev/disk/by-id/wwn-0x600605b0041db9c016ea34c3b1b87793
adbinitdbarea -n ADBUTBL01 -i 2G ¥
              -v /dev/disk/by-id/wwn-0x600605b0041db9c016ea34c3b1b8c6d3
adbinitdbarea -n ADBUIDX01 -i 2G ¥
              -v /dev/disk/by-id/wwn-0x600605b0041db9c016ea34c3b1b9160f

マルチパスソフトウェア（DMMP）による冗長化構成の場合の例

set adb_init_dbarea_initialize = Y
set adb_init_wrk_blk_path = /dev/mapper/WRK001
set adb_init_mst_blk_path = /dev/mapper/mpath12
set adb_init_dic_blk_path = /dev/mapper/mpath11
set adb_init_stbl_blk_path = /dev/mapper/mpath13
adbinitdbarea -n ADBUTBL01 -i 2G ¥
              -v /dev/mapper/mpath14
adbinitdbarea -n ADBUIDX01 -i 2G ¥
              -v /dev/mapper/mpath15

HAモニタありのマルチノード構成の場合は，adbinitコマンドの実行が完了したら，システムディレクトリ用のファイルシステムを$DBDIR/ADBSYSからアンマウントします。

(4)　セカンダリノードおよびワーカーノードでのDBディレクトリの作成

adbinitコマンドをセカンダリノードおよびワーカーノードで実行します。プライマリノードで指定した初期設定オプションとは，次の点が異なります。

adb_init_dbarea_initializeにNを指定して，DBディレクトリの枠組みだけを作成します。

adb_init_wrk_blk_pathに，ノードごとに割り当てる作業表用DBエリアファイルのブロックスペシャルファイル名を指定します。

メモ

HAモニタなしのマルチノード構成の場合は，以降で説明している指定例のタイトルのセカンダリノードをワーカーノードに読み替えてください。

■初期設定オプションの指定例（セカンダリノードhadb02）

シングルパス構成の場合の例

# DBディレクトリの枠組みだけを作成する
set adb_init_dbarea_initialize = N
# WRK002 : hadb02の作業表用DBエリアを構成するDBエリアディスク
set adb_init_wrk_blk_path = /dev/mapper/WRK002
set adb_init_mst_blk_path = /dev/disk/by-id/wwn-0x600605b0041db9c016ea34c3b1b7d9fd
set adb_init_dic_blk_path = /dev/disk/by-id/wwn-0x600605b0041db9c016ea34c3b1b828e9
set adb_init_stbl_blk_path = /dev/disk/by-id/wwn-0x600605b0041db9c016ea34c3b1b87793
adbinitdbarea -n ADBUTBL01 -i 2G ¥
              -v /dev/disk/by-id/wwn-0x600605b0041db9c016ea34c3b1b8c6d3
adbinitdbarea -n ADBUIDX01 -i 2G ¥
              -v /dev/disk/by-id/wwn-0x600605b0041db9c016ea34c3b1b9160f

マルチパスソフトウェア（DMMP）による冗長化構成の場合の例

# DBディレクトリの枠組みだけを作成する
set adb_init_dbarea_initialize = N
# WRK002 : hadb02の作業表用DBエリアを構成するDBエリアディスク
set adb_init_wrk_blk_path = /dev/mapper/WRK002
set adb_init_mst_blk_path = /dev/mapper/mpath12
set adb_init_dic_blk_path = /dev/mapper/mpath11
set adb_init_stbl_blk_path = /dev/mapper/mpath13
adbinitdbarea -n ADBUTBL01 -i 2G ¥
              -v /dev/mapper/mpath14
adbinitdbarea -n ADBUIDX01 -i 2G ¥
              -v /dev/mapper/mpath15

■初期設定オプションの指定例（セカンダリノードhadb03）

シングルパス構成の場合の例

# DBディレクトリの枠組みだけを作成する
set adb_init_dbarea_initialize = N
# WRK003 : hadb03の作業表用DBエリアを構成するDBエリアディスク
set adb_init_wrk_blk_path = /dev/mapper/WRK003
set adb_init_mst_blk_path = /dev/disk/by-id/wwn-0x600605b0041db9c016ea34c3b1b7d9fd
set adb_init_dic_blk_path = /dev/disk/by-id/wwn-0x600605b0041db9c016ea34c3b1b828e9
set adb_init_stbl_blk_path = /dev/disk/by-id/wwn-0x600605b0041db9c016ea34c3b1b87793
adbinitdbarea -n ADBUTBL01 -i 2G ¥
              -v /dev/disk/by-id/wwn-0x600605b0041db9c016ea34c3b1b8c6d3
adbinitdbarea -n ADBUIDX01 -i 2G ¥
              -v /dev/disk/by-id/wwn-0x600605b0041db9c016ea34c3b1b9160f

マルチパスソフトウェア（DMMP）による冗長化構成の場合の例

# DBディレクトリの枠組みだけを作成する
set adb_init_dbarea_initialize = N
# WRK003 : hadb03の作業表用DBエリアを構成するDBエリアディスク
set adb_init_wrk_blk_path = /dev/mapper/WRK003
set adb_init_mst_blk_path = /dev/mapper/mpath12
set adb_init_dic_blk_path = /dev/mapper/mpath11
set adb_init_stbl_blk_path = /dev/mapper/mpath13
adbinitdbarea -n ADBUTBL01 -i 2G ¥
              -v /dev/mapper/mpath14
adbinitdbarea -n ADBUIDX01 -i 2G ¥
              -v /dev/mapper/mpath15

■初期設定オプションの指定例（ワーカーノードhadb04）

シングルパス構成の場合の例

# DBディレクトリの枠組みだけを作成する
set adb_init_dbarea_initialize = N
# WRK004 : hadb04の作業表用DBエリアを構成するDBエリアディスク
set adb_init_wrk_blk_path = /dev/mapper/WRK004
set adb_init_mst_blk_path = /dev/disk/by-id/wwn-0x600605b0041db9c016ea34c3b1b7d9fd
set adb_init_dic_blk_path = /dev/disk/by-id/wwn-0x600605b0041db9c016ea34c3b1b828e9
set adb_init_stbl_blk_path = /dev/disk/by-id/wwn-0x600605b0041db9c016ea34c3b1b87793
adbinitdbarea -n ADBUTBL01 -i 2G ¥
              -v  /dev/disk/by-id/wwn-0x600605b0041db9c016ea34c3b1b8c6d3
adbinitdbarea -n ADBUIDX01 -i 2G ¥
              -v  /dev/disk/by-id/wwn-0x600605b0041db9c016ea34c3b1b9160f

マルチパスソフトウェア（DMMP）による冗長化構成の場合の例

# DBディレクトリの枠組みだけを作成する
set adb_init_dbarea_initialize = N
# WRK004 : hadb04の作業表用DBエリアを構成するDBエリアディスク
set adb_init_wrk_blk_path = /dev/mapper/WRK004
set adb_init_mst_blk_path = /dev/mapper/mpath12
set adb_init_dic_blk_path = /dev/mapper/mpath11
set adb_init_stbl_blk_path = /dev/mapper/mpath13
adbinitdbarea -n ADBUTBL01 -i 2G ¥
              -v  /dev/mapper/mpath14
adbinitdbarea -n ADBUIDX01 -i 2G ¥
              -v  /dev/mapper/mpath15

18.5　マルチノード構成のHADBサーバの開始と終了

ここでは，マルチノード構成のHADBサーバの開始および終了方法について説明します。

運用する際には，あわせて「10.2　HADBサーバの開始・終了と稼働モード」も参照してください。

18.5.1　マルチノード構成のHADBサーバの開始方法

(1)　マルチノード構成のHADBサーバの開始手順

HAモニタありのマルチノード構成の場合とHAモニタなしのマルチノード構成の場合とで，マルチノード構成のHADBサーバの開始方法が異なります。

(a)　HAモニタありのマルチノード構成の場合

マルチノード構成のHADBサーバの開始手順を次に示します。

重要

HAモニタの監視が停止していることを確認してから，マルチノード構成のHADBサーバを開始してください。誤って，adbstartコマンドを実行する前にHAモニタのmonbeginコマンドを実行していた場合は，monendコマンドを実行して，HAモニタの監視および起動中のHADBサーバを停止してください。そのあとで，次に示す正しい開始手順に従って，マルチノード構成のHADBサーバを開始してください。

手順

プライマリノードおよび全セカンダリノードで，HAモニタが起動していることを確認する

確認方法については，マニュアルHAモニタ Linux(R)(x86)編のシステムの運用を参照してください。

プライマリノードおよび全セカンダリノードで，adbstartコマンドを実行する

adbstartコマンドを実行すると，HAモニタのmonbeginコマンドの実行を要求するKFAA91109-Iメッセージが出力されます。

プライマリノードおよび全セカンダリノードで，HAモニタのmonbeginコマンドを実行する

KFAA91109-Iメッセージの出力を確認したあとに，別のターミナル（コマンド入力画面）から，monbeginコマンドを実行してください。

重要

adbstartコマンドが終了する前に，monbeginコマンドを実行してください。

プライマリノードおよび全セカンダリノードのadbstartコマンドが正常終了すると，マルチノード構成のHADBサーバの開始処理が完了します。adbstartコマンドのリターンコードが0または4となっていることを，プライマリノードおよび全セカンダリノードで確認してください。確認後，次の手順に進んでください。

全ワーカーノードでadbstartコマンドを実行する

ワーカーノードのHADBサーバの開始処理が完了すると，マルチノード構成にワーカーノードが追加されます。

メモ

ワーカーノードはHAモニタの管理対象外のため，HAモニタのmonbeginコマンドを実行する必要はありません。

(b)　HAモニタなしのマルチノード構成の場合

マルチノード構成のHADBサーバの開始手順を次に示します。

手順

プライマリノードで，adbstartコマンドを実行する

プライマリノードのadbstartコマンドが正常終了すると，マルチノード構成のHADBサーバの開始処理が完了します。

重要

adbstartコマンドのリターンコードが0または4となっていることを，プライマリノードで確認してください。確認後，次の手順に進んでください。

全ワーカーノードでadbstartコマンドを実行する

ワーカーノードのHADBサーバの開始処理が完了すると，マルチノード構成にワーカーノードが追加されます。

(2)　マルチノード構成のHADBサーバの開始モード

マルチノード構成のHADBサーバには，次の開始モードがあります。

表18‒7　マルチノード構成のHADBサーバの開始モード

項番

開始モード

実行するコマンド

説明

前回の終了形態

1

正常開始

adbstart

通常の開始モードです。

正常開始では，データベースの回復処理は行いません。

プライマリノードのHADBサーバが正常終了した場合

2

再開始

前回の終了モードが右記の場合，自動的に再開始となります。

再開始では，プライマリノードのHADBサーバがシステムログを使用してデータベースの回復処理を行います。

HAモニタありのマルチノード構成の場合

セカンダリノードがない状態のときに，プライマリノードのHADBサーバが異常終了または強制終了した場合

HAモニタなしのマルチノード構成の場合

プライマリノードのHADBサーバが異常終了または強制終了した場合

(3)　マルチノード構成のHADBサーバの開始処理完了の確認

HAモニタありのマルチノード構成の場合

adbstartコマンドのリターンコードが0または4となっていることを，プライマリノードおよび全セカンダリノードで確認してください。

HAモニタなしのマルチノード構成の場合

adbstartコマンドのリターンコードが0または4となっていることを，プライマリノードで確認してください。

(4)　マルチノード構成のHADBサーバ開始時の留意事項

HAモニタありのマルチノード構成の場合，プライマリノードおよび全セカンダリノードのHADBサーバの開始処理が完了するまで，マルチノード構成のHADBサーバの開始処理は完了しません。マルチノード構成のHADBサーバの開始処理が完了しない場合は，プライマリノードまたはセカンダリノードでエラーや障害などが発生していないかを確認してください。

HAモニタなしのマルチノード構成の場合，プライマリノードのHADBサーバの開始処理が完了すると，マルチノード構成のHADBサーバの開始処理が完了となります。

マルチノード構成のHADBサーバの開始処理が完了したあとに，ワーカーノードのHADBサーバを開始してマルチノード構成にワーカーノードを追加します。エラーなどによってワーカーノードのHADBサーバが開始できない場合でも，開始処理が完了しているプライマリノード，セカンダリノード，そのほかのワーカーノードでマルチノード構成のHADBサーバを稼働して業務を開始することができます。

18.5.2　マルチノード構成のHADBサーバの終了方法

(1)　マルチノード構成のHADBサーバの終了手順

(a)　マルチノード構成のHADBサーバを正常終了させる場合

マルチノード構成のHADBサーバの正常終了手順を次に示します。

手順

プライマリノードでadbstopコマンドを実行する

プライマリノードでadbstopコマンドを実行すると，全ノードのHADBサーバが正常終了します。

プライマリノードでHAモニタのmonendコマンドを実行する※

全ノードのHADBサーバが正常終了したことを確認してから，プライマリノードでHAモニタのmonendコマンドを実行してください。

注※

HAモニタなしのマルチノード構成の場合，2.の操作は不要です。

メモ

上記の手順で，ワーカーノードを含めた全ノードのHADBサーバが終了します。

(b)　マルチノード構成のHADBサーバを強制終了させる場合

マルチノード構成のHADBサーバの強制終了手順を次に示します。

手順（HAモニタありのマルチノード構成の場合）

全セカンダリノードおよび全ワーカーノードで，adbstop --forceコマンドを実行する

全セカンダリノードおよび全ワーカーノードで，adbstop --forceコマンドが終了したことを確認してください。

プライマリノードでadbstop --forceコマンドを実行する

adbstop --forceコマンドが終了したことを確認してください。

プライマリノードでHAモニタのmonendコマンドを実行する

手順（HAモニタなしのマルチノード構成の場合）

全ワーカーノードで，adbstop --forceコマンドを実行する

全ワーカーノードで，adbstop --forceコマンドが終了したことを確認してください。

プライマリノードでadbstop --forceコマンドを実行する

adbstop --forceコマンドが終了したことを確認してください。

(2)　特定のノードのHADBサーバの終了手順

(a)　プライマリノードのHADBサーバだけを正常終了させる場合

■HAモニタありのマルチノード構成の場合

系のリセットを使用している場合，共有ディスクのSCSIリザーブを使用している場合，またはクラウド環境のマルチノード構成の場合で，プライマリノードのHADBサーバだけを正常終了させる手順が異なります。

系のリセットを使用している場合，またはクラウド環境のマルチノード構成の場合

プライマリノードでHAモニタのmonswapコマンドを実行すると，プライマリノードのHADBサーバだけが正常終了します。このとき，プライマリノードの切り替えが発生し，優先度の最も高いセカンダリノードがプライマリノードになります。

なお，monswapコマンドを実行すると，プライマリノードで実行中のトランザクションはすべてキャンセルされ，そのトランザクションを実行していたコネクションはすべて終了します。また，トランザクション実行前のコネクションもすべて終了します。コネクションの終了処理が完了したあとに，プライマリノードのHADBサーバの終了処理が開始されます。

重要

adbstop --nodeコマンドで，プライマリノードのHADBサーバを誤って終了してしまった場合も，そのノードでmonswapコマンドを実行してください。

共有ディスクのSCSIリザーブを使用している場合

手順

プライマリノードでadbstop --cancel --nodeコマンドを実行する

プライマリノードでHAモニタのmonswapコマンドを実行する

上記の手順で，プライマリノードのHADBサーバだけが正常終了します。このとき，プライマリノードの切り替えが発生し，優先度の最も高いセカンダリノードがプライマリノードになります。

■HAモニタなしのマルチノード構成の場合

手順

プライマリノードでadbstop --nodeコマンドを実行する

プライマリノードのHADBサーバだけが正常終了します。ワーカーノードのHADBサーバは終了しないため，2.の操作を実行してください。

全ワーカーノードでadbstop --nodeコマンドを実行する

ワーカーノードのHADBサーバが正常終了します。

メモ

プライマリノードのHADBサーバを正常終了した場合，マルチノード構成のHADBサーバは運用を継続することができません。そのため，稼働中の全ワーカーノードのHADBサーバも正常終了させる必要があります。

(b)　プライマリノードのHADBサーバだけを強制終了させる場合

■HAモニタありのマルチノード構成の場合

プライマリノードでadbstop --forceコマンドを実行すると，プライマリノードのHADBサーバだけが強制終了します。このとき，プライマリノードの切り替えが発生し，優先度の最も高いセカンダリノードがプライマリノードになります。

メモ

強制終了したプライマリノードで実行されていた更新処理に対する回復処理（ロールバック）が，新しくプライマリノードになるセカンダリノードで実行されます。

セカンダリノードがない状態のときにプライマリノードのHADBサーバを強制終了した場合，稼働中の全ワーカーノードのHADBサーバも同時に異常終了します。

■HAモニタなしのマルチノード構成の場合

プライマリノードでadbstop --forceコマンドを実行して，プライマリノードのHADBサーバを強制終了した場合，稼働中の全ワーカーノードのHADBサーバも同時に異常終了します。

メモ

プライマリノードのHADBサーバを強制終了した場合，マルチノード構成のHADBサーバは運用を継続することができません。

(c)　セカンダリノードのHADBサーバだけを正常終了させる場合

セカンダリノードでadbstop --nodeコマンドを実行すると，コマンドを実行したセカンダリノードのHADBサーバが正常終了します。

クラウド環境のマルチノード構成の場合は，次の手順でセカンダリノードのHADBサーバを正常終了させてください。

手順

セカンダリノードでadbstop --nodeコマンドを実行する

セカンダリノードのHADBサーバが正常終了します。

セカンダリノードでHAモニタのmonsbystpコマンドを実行する

(d)　セカンダリノードのHADBサーバだけを強制終了させる場合

セカンダリノードでadbstop --forceコマンドを実行すると，コマンドを実行したセカンダリノードのHADBサーバが強制終了します。

(e)　ワーカーノードのHADBサーバだけを正常終了させる場合

ワーカーノードでadbstop --nodeコマンドを実行すると，コマンドを実行したワーカーノードのHADBサーバが正常終了します。

(f)　ワーカーノードのHADBサーバだけを強制終了させる場合

ワーカーノードでadbstop --forceコマンドを実行すると，コマンドを実行したワーカーノードのHADBサーバが強制終了します。

(3)　マルチノード構成のHADBサーバの終了形態

マルチノード構成のHADBサーバの終了形態を次の表に示します。

表18‒8　マルチノード構成のHADBサーバの終了形態

項番

終了形態

実行するコマンド

説明

1

マルチノード構成のHADBサーバの正常終了

adbstop

通常の終了形態です。プライマリノードでadbstopコマンドを実行すると，マルチノード構成のHADBサーバが正常終了します。

なお，正常終了には4種類あり，指定するオプションによって終了処理が異なります。詳細については，「10.2.2　HADBサーバの終了方法」の「(2)　オプションの指定と正常終了の種類」を参照してください。

2

特定のノードのHADBサーバの正常終了

HAモニタありのマルチノード構成のプライマリノードの場合：monswap※

HAモニタなしのマルチノード構成のプライマリノードの場合：adbstop --node

セカンダリノードまたはワーカーノードの場合：adbstop --node

コマンドを実行したノードのHADBサーバだけを正常終了します。

HAモニタありのマルチノード構成で，プライマリノードのHADBサーバを正常終了した場合

そのプライマリノードはマルチノード構成から切り離され，セカンダリノードの1つがプライマリノードに切り替わります。

HAモニタなしのマルチノード構成で，プライマリノードのHADBサーバを正常終了した場合

プライマリノードのHADBサーバだけが正常終了します。ワーカーノードのHADBサーバは終了しないため，ワーカーノードのHADBサーバを正常終了させる必要があります。

プライマリノードのHADBサーバを終了すると，業務は継続できません。

セカンダリノードのHADBサーバを正常終了した場合

そのセカンダリノードは，マルチノード構成から切り離されます。

ワーカーノードのHADBサーバを正常終了した場合

そのワーカーノードは，マルチノード構成から削除されます。

3

特定のノードのHADBサーバの強制終了

adbstop --force

処理中のトランザクションの完了を待たないで，adbstopコマンドを実行したノードのHADBサーバを直ちに終了します。

HAモニタありのマルチノード構成で，プライマリノードのHADBサーバを強制終了した場合

そのプライマリノードはマルチノード構成から切り離され，セカンダリノードの1つがプライマリノードに切り替わります。このとき，プライマリノードで実行されていた更新処理に対する回復処理（ロールバック）が，新しくプライマリノードになるセカンダリノードで実行されます。

なお，セカンダリノードがない状態のときに，プライマリノードのHADBサーバを強制終了した場合，マルチノード構成のHADBサーバの再開始時に，更新処理に対する回復処理（ロールバック）が実行されます。

HAモニタなしのマルチノード構成で，プライマリノードのHADBサーバを強制終了した場合

プライマリノードのHADBサーバが強制終了します。また，稼働中のワーカーノードのHADBサーバは異常終了します。

プライマリノードのHADBサーバを終了すると，業務は継続できません。

セカンダリノードのHADBサーバを強制終了した場合

そのセカンダリノードは，マルチノード構成から切り離されます。このとき，プライマリノードでトランザクションのロールバックが実行されます。

ワーカーノードのHADBサーバを強制終了した場合

そのワーカーノードは，マルチノード構成から削除されます。このとき，プライマリノードでトランザクションのロールバックが実行されます。

4

特定のノードのHADBサーバの異常終了

−

HAモニタありのマルチノード構成で，プライマリノードのHADBサーバが異常終了した場合

異常終了したプライマリノードはマルチノード構成から切り離され，セカンダリノードの1つがプライマリノードに切り替わります。このとき，プライマリノードで実行されていた更新処理に対する回復処理（ロールバック）が，新しくプライマリノードになるセカンダリノードで実行されます。

なお，セカンダリノードがない状態のときに，プライマリノードのHADBサーバが異常終了した場合は，マルチノード構成のHADBサーバの再開始時に，更新処理に対する回復処理（ロールバック）が実行されます。

HAモニタなしのマルチノード構成で，プライマリノードのHADBサーバが異常終了した場合

プライマリノードのHADBサーバが異常終了すると，マルチノード構成のHADBサーバが異常終了します。マルチノード構成のHADBサーバの再開始時に，更新処理に対する回復処理（ロールバック）が実行されます。

セカンダリノードのHADBサーバが異常終了した場合

異常終了したセカンダリノードはマルチノード構成から切り離されます。このとき，プライマリノードでトランザクションのロールバックが実行されます。

ワーカーノードのHADBサーバが異常終了した場合

異常終了したワーカーノードはマルチノード構成から削除されます。このとき，プライマリノードでトランザクションのロールバックが実行されます。

（凡例）

−：該当しません。

注※

系のリセットを使用している場合に実行するコマンドです。

共有ディスクのSCSIリザーブを使用している場合は，adbstop --cancel --nodeコマンドを実行したあとに，monswapコマンドを実行します。

18.5.3　マルチノード機能使用時のHADBサーバの稼働モード

マルチノード構成のHADBサーバを開始したときの稼働モード

プライマリノードのHADBサーバの場合は，adbstartコマンドにオプションを指定することで，HADBサーバ開始後の稼働モードを指定できます。セカンダリノードおよびワーカーノードのHADBサーバの場合は，稼働モードが常に静止モードとなるため，adbstartコマンドにオプションを指定しても稼働モードを変更できません。

稼働モードの変更

プライマリノードの場合，adbchgsrvmodeコマンドを使用してHADBサーバの稼働モードを変更できます。

セカンダリノードおよびワーカーノードの場合，HADBサーバの稼働モードは，常に静止モードとなります。そのため，adbchgsrvmodeコマンドは実行できません。

稼働モードの確認

稼働モードを確認する場合は，稼働モードを確認したいノードでadbls -d srvコマンドを実行します。詳細については，「10.2.3　HADBサーバの稼働モード」を参照してください。

プライマリノードの切り替えが発生したときの稼働モード

プライマリノードの切り替えが発生した場合，稼働モードも新しいプライマリノードに引き継がれます。

18.6　APの運用（マルチノード機能の使用時）

ここでは，マルチノード機能を使用したときの，APの運用に関する注意点について説明します。APの作成方法などについては，マニュアルHADB　AP開発ガイドを参照してください。

18.6.1　HADBサーバへの接続

HAモニタありのマルチノード構成の場合，APはエイリアスIPアドレスを使用して，プライマリノードのHADBサーバに接続するようにしてください。エイリアスIPアドレスの設定方法については，マニュアルHAモニタ Linux(R)(x86)編を参照してください。

HAモニタありのマルチノード構成のHADBサーバとAPの構成例を次の図に示します。

図18‒3　HAモニタありのマルチノード構成のHADBサーバとAPの構成例

［説明］

クライアント定義のadb_clt_rpc_srv_hostオペランドにエイリアスIPアドレス（上記の例の10.196.108.143）を指定します。

HAモニタなしのマルチノード構成の場合，APはプライマリノードのIPアドレスを使用して，マルチノード構成のHADBサーバに接続するようにしてください。HAモニタなしのマルチノード構成のHADBサーバとAPの構成例を次の図に示します。

図18‒4　HAモニタなしのマルチノード構成のHADBサーバとAPの構成例

［説明］

クライアント定義のadb_clt_rpc_srv_hostオペランドに，HADBクライアントとHADBサーバ間の通信で使用するプライマリノードのIPアドレス（上記の例の10.196.108.11）を指定します。

18.6.2　マルチノード機能使用時の最大同時接続数

マルチノード機能使用時の最大同時接続数は，サーバ定義adb_sys_max_usersオペランドの指定値になります（adb_sys_max_usersオペランドの指定値は，全ノードのHADBサーバで同じ値にする必要があります）。

最大同時接続数を超えた場合，マルチノード構成のHADBサーバにAPが接続することはできません（エラーとなります）。

サーバ定義adb_sys_max_usersオペランドについては，「7.2.1　システム構成に関するオペランド（set形式）」のadb_sys_max_usersオペランドを参照してください。

18.6.3　トランザクションを実行するノード

トランザクションを実行するノードは，トランザクションアクセスモードおよびトランザクション隔離性水準の指定によって決まります。トランザクションアクセスモードおよびトランザクション隔離性水準と，トランザクションを実行するノードの関係を次の表に示します。

表18‒9　トランザクションアクセスモードおよびトランザクション隔離性水準と，トランザクションを実行するノードの関係

項番

トランザクションアクセスモードの指定

トランザクション隔離性水準の指定

トランザクションを実行するノード

1

読み書き可能モード

READ COMMITTED

プライマリノード

2

REPEATABLE READ

3

読み取り専用モード

READ COMMITTED

全ノードのうちどれかのノード

4

REPEATABLE READ

プライマリノード

トランザクションを実行するノードを次の図に示します。

図18‒5　トランザクションを実行するノード

注

上記は，HAモニタありのマルチノード構成のシステム構成例です。HAモニタなしのマルチノード構成の場合は，セカンダリノードをワーカーノードに読み替えてください。

検索系SQLだけを実行するAPの場合，次の設定をすることで，セカンダリノードおよびワーカーノードのリソースを有効に活用できます。

トランザクションアクセスモードを読み取り専用モードにする

トランザクション隔離性水準をREAD COMMITTEDにする

トランザクションアクセスモードおよびトランザクション隔離性水準の指定方法を次の表に示します。

表18‒10　トランザクションアクセスモードおよびトランザクション隔離性水準の指定方法

項番

APの種別

トランザクションアクセスモードの指定方法

トランザクション隔離性水準の指定方法

1

JDBCドライバを使用したAP

システムプロパティのadb_clt_trn_access_mode

ユーザプロパティのadb_clt_trn_access_mode

接続用のURLのadb_clt_trn_access_mode

ConnectionインタフェースのsetReadOnlyメソッド

システムプロパティのadb_clt_trn_iso_lv

ユーザプロパティのadb_clt_trn_iso_lv

接続用のURLのadb_clt_trn_iso_lv

ConnectionインタフェースのsetTransactionIsolationメソッド

2

ODBCドライバを使用したAP

クライアント定義のadb_clt_trn_access_modeオペランド

SQLSetConnectAttr()またはSQLSetConnectAttrW()

クライアント定義のadb_clt_trn_iso_lvオペランド

SQLSetConnectAttr()またはSQLSetConnectAttrW()

3

CLI関数を使用したAP

クライアント定義のadb_clt_trn_access_modeオペランド

a_rdb_SQLSetConnectAttr()

クライアント定義のadb_clt_trn_iso_lvオペランド

a_rdb_SQLSetConnectAttr()

指定方法の詳細については，マニュアルHADB　AP開発ガイドを参照してください。

また，トランザクションを実行するノードは，次に示す要素などを考慮して，プライマリノードのHADBサーバが自動的に決定します。

トランザクションアクセスモード

トランザクション隔離性水準

各ノードの負荷

そのため，トランザクションごとに，実行するノードが変わることがあります。ただし，ホールダブルカーソルでカーソルをオープン中の場合は，実行するノードは変わりません。

重要

読み書き可能モードのトランザクション，または一部のコマンドが実行中のときは，読み取り専用モードのトランザクションもプライマリノードで実行されます（セカンダリノードおよびワーカーノードを使用しません）。そのため，セカンダリノードおよびワーカーノードのリソースを有効に活用するために，読み書き可能モードのトランザクションはできる限り細かい頻度で決着させるようにしてください。

なお，ここでいう一部のコマンドについては，「2.20.2　トランザクションおよびコマンドが実行されるノード」の「(4)　トランザクションとコマンドの同時実行についての制限」を参照してください。

■SQLパラレル実行機能を使用する場合

SQLパラレル実行機能を使用する場合も，トランザクションアクセスモードを読み取り専用モードにし，トランザクション隔離性水準をREAD COMMITTEDにする必要があります。この指定をしないと，検索系SQLにSQLパラレル実行機能が適用されません。

プライマリノードのHADBサーバが，各ノードの負荷などを考慮してSQLサブノードを決定します。したがって，SQLパラレル実行機能が適用された検索系SQLを実行するたびにSQLサブノードが変わることがあります。ただし，SQLパラレル実行機能が適用された検索系SQLを実行しているホールダブルカーソルがオープン中の場合は，トランザクションを決着しても，SQLメインノードおよびSQLサブノードは変わりません。

18.6.4　ノード障害が発生した場合

プライマリノードでノード障害が発生した場合，障害が発生したノードで実行中のトランザクションはロールバックします。

HAモニタありのマルチノード構成のプライマリノードでノード障害が発生した場合は，プライマリノードで実行されていたデータベースの更新処理に対する回復処理が，新たにプライマリノードになるセカンダリノードで実行されます。この回復処理中に，回復処理対象のページにセカンダリノードまたはワーカーノート゛で実行中のAPがアクセスした場合，そのAPの処理がエラーになることがあります。このとき，KFAA31733-Eメッセージが出力されます。この場合，メッセージに記載されている対処方法に従ってください。

なお，次に示す場合にプライマリノードでノード障害が発生すると，マルチノード構成のHADBサーバが異常終了します。このとき，マルチノード構成のHADBサーバの再開始時にプライマリノードがトランザクションの回復処理を実行します。

HAモニタありのマルチノード構成で，プライマリノードの切り替え先のセカンダリノードがない場合

HAモニタなしのマルチノード構成の場合

メモ

障害が発生したノードでトランザクションを実行していたAPは，マルチノード構成のHADBサーバから切断されます。トランザクションを再実行する際は，改めてマルチノード構成のHADBサーバに接続してください。

プライマリノードでノード障害が発生した場合，障害が発生した時点でどのノードでもトランザクションが実行されていないAPも，マルチノード構成のHADBサーバから切断されます。

■SQLパラレル実行機能を使用している場合

SQLパラレル実行機能を適用した検索系SQLを実行していたノードで障害が発生したときのHADBサーバの処理を説明します。

SQLメインノードで障害が発生した場合

トランザクションはロールバックし，トランザクションを実行していたAPはマルチノード構成のHADBサーバから切断されます。トランザクションを再実行する際は，改めてマルチノード構成のHADBサーバに接続してください。

SQLサブノードで障害が発生した場合

検索系SQLの実行がエラーとなり，トランザクションはロールバックします。ただし，トランザクションを実行していたAPはマルチノード構成のHADBサーバからは切断されません。必要に応じてトランザクションを再実行してください。

18.7　排他の運用（マルチノード機能の使用時）

マルチノード構成のHADBサーバでは，「2.10.3　排他資源」にある排他資源を，全ノードのHADBサーバで共有しています。そのため，あるノードのHADBサーバで実行中のトランザクションが，特定の排他資源を占有モードで確保した場合，排他資源が解放されるまで，全ノードのHADBサーバで，ほかのトランザクションはその排他資源を確保できません。

上記以外の排他制御については，「2.10　排他制御」を参照してください。

18.8　コマンドによるプライマリノードの切り替え

HAモニタありのマルチノード構成の場合，コマンドを実行して，プライマリノードを切り替えることができます。系のリセットを使用している場合と，共有ディスクのSCSIリザーブを使用している場合とで手順が異なります。

系のリセットを使用している場合

HAモニタのmonswapコマンドをプライマリノードで実行すると，プライマリノードを切り替えることができます。

共有ディスクのSCSIリザーブを使用している場合

次の手順で，プライマリノードを切り替えることができます。

adbstop --cancel --nodeコマンドをプライマリノードで実行する

HAモニタのmonswapコマンドをプライマリノードで実行する

新しくプライマリノードになるセカンダリノードは，HAモニタのserversファイルのinitialおよびstandbypriオペランドの指定によって決まります。initialおよびstandbypriオペランドについては，「18.4.4　HAモニタの環境設定」の「(3)　serversファイルの指定」，およびマニュアルHAモニタ Linux(R)(x86)編のサーバ対応の環境設定（servers）を参照してください。

なお，コマンドを実行したノードは，マルチノード構成から切り離されます。

メモ

monswapコマンドについては，マニュアルHAモニタ Linux(R)(x86)編のコマンドを参照してください。

コマンドによるプライマリノードの切り替えは，HAモニタの計画系切り替え機能を使用しています。

HAモニタなしのマルチノード構成の場合，コマンドによるプライマリノードの切り替えはできません。

18.9　データベースのバックアップ（マルチノード機能の使用時）

ここでは，マルチノード機能を使用している場合のバックアップの取得方法，およびバックアップからのデータベースの回復方法について説明します。

マルチノード機能を使用していない場合のバックアップの取得方法，およびバックアップからのデータベースの回復方法については，「10.3　データベースのバックアップ」を参照してください。

クラウド環境のマルチノード構成でバックアップを取得する場合は，「18.34.5　データベースのバックアップ（AWS環境の場合）」または「18.35.4　データベースのバックアップ（Azure環境の場合）」を参照してください。

18.9.1　バックアップの取得方法

データベースのバックアップを取得する手順を次に示します。

図18‒6　バックアップを取得する手順（マルチノード機能を使用している場合）

各手順の詳細を以降で説明します。

(1)　バックアップ取得時の留意事項を確認する

「10.3.1　バックアップの取得方法」を参照して，バックアップ取得時の留意事項を確認してください。

(2)　マルチノード構成のHADBサーバを正常終了する，またはプライマリノードのHADBサーバを静止モードに変更する

次のどちらかの操作を実行してください。

adbstopコマンドおよびHAモニタのmonendコマンドを実行して，マルチノード構成のHADBサーバを正常終了する

プライマリノードでadbchgsrvmodeコマンドを実行して，プライマリノードのHADBサーバを静止モードに変更する※

上記のどちらかの操作を実行しないと，データベースを回復する際にデータベースの整合性が取れなくなるおそれがあります。

各ノードのHADBサーバの状態を確認する場合は，状態を確認したいノードでadbls -d srvコマンドを実行してください。

注※

HAモニタなしのマルチノード構成の場合は，こちらの操作を実行してください。

(3)　プライマリノードでバックアップを取得する

プライマリノードで，バックアップを取得するファイルの一覧を次の表に示します。

ファイルがシンボリックリンクの場合は，リンク先のファイル，またはブロックスペシャルファイルのコピーが必要です。

なお，「(2)　マルチノード構成のHADBサーバを正常終了する，またはプライマリノードのHADBサーバを静止モードに変更する」でマルチノード構成のHADBサーバを正常終了した場合は，コピーを実行する前に，システムディレクトリが$DBDIR/ADBSYSにマウントされていることを確認してください。マウントされていない場合は，OSのmountコマンドを実行して，システムディレクトリを$DBDIR/ADBSYSにマウントしてください。

また，バックアップファイルはスパースファイルにしないでください。

表18‒11　バックアップを取得するファイルおよびディレクトリの一覧

項番

バックアップを取得するファイル

ファイルの格納先

ファイルの種類

1

コマンドステータスファイル

$DBDIR/ADBSYS/ADBUTL

レギュラーファイル

2

システムログファイル

$DBDIR/ADBSYS/ADBSLG

レギュラーファイル

3

ステータスファイル

$DBDIR/ADBSYS/ADBSTS

レギュラーファイル

4

マスタディレクトリ用DBエリアファイル

$DBDIR/ADBMST

ブロックスペシャルファイル

5

ディクショナリ用DBエリアファイル

$DBDIR/ADBDIC

ブロックスペシャルファイル

6

システム表用DBエリアファイル

$DBDIR/ADBSTBL

ブロックスペシャルファイル

7

データ用DBエリアを構成するすべてのファイル

$DBDIR/DBAREA※1

ブロックスペシャルファイル

8

アーカイブファイル

アーカイブディレクトリ※2

レギュラーファイル

9

同義語辞書ファイル

同義語辞書ファイルの格納ディレクトリ※3

レギュラーファイル

注※1

adbinitコマンドまたはadbmodareaコマンドで，ユーザが指定した名称になります。

注※2

CREATE TABLE文のチャンクアーカイブ指定のARCHIVEDIRで指定したディレクトリのことです。

注※3

サーバ定義のadb_syndict_storage_pathオペランドで指定したディレクトリのことです。

メモ

次に示すファイルについては，バックアップの取得は不要です。

作業表用DBエリアファイル（$DBDIR/ADBWRK）

作業用ディレクトリ下（$DBDIR/ADBWORK）のファイル

障害情報（コアファイル）の出力先ディレクトリ下（$DBDIR/SPOOL）のファイル

サーバ定義のadb_core_pathオペランドを指定した場合は，adb_core_pathオペランドに指定したディレクトリになります。

なお，これらのファイルも，上記の表に示すファイルと一緒にバックアップを取得して，バックアップから回復しても問題はありません。

メモ

監査証跡の出力先ディレクトリ（サーバ定義のadb_audit_log_pathオペランドに指定したディレクトリ）下の監査証跡ファイルのバックアップを取得する必要はありません。監査証跡の出力先ディレクトリ下の監査証跡ファイルは，バックアップを取得するのではなく，監査証跡の保存先ディレクトリに移動してください。監査証跡ファイルの移動については，「12.3.1　監査証跡ファイルの移動（監査証跡の保存先ディレクトリへの移動）」を参照してください。

(4)　マルチノード構成のHADBサーバを開始する，またはプライマリノードのHADBサーバを通常モードに変更する

次のどちらかの操作を実行してください。

バックアップの取得前に，adbstopコマンドでマルチノード構成のHADBサーバを正常終了した場合

adbstartコマンドおよびHAモニタのmonbeginコマンドを実行して，マルチノード構成のHADBサーバを開始してください。

バックアップの取得前に，adbchgsrvmodeコマンドでプライマリノードのHADBサーバを静止モードにした場合

プライマリノードでadbchgsrvmodeコマンドを実行して，プライマリノードのHADBサーバを通常モードに変更してください。

18.9.2　バックアップからの回復方法

バックアップからの回復手順を次に示します。

図18‒7　バックアップからの回復手順（マルチノード機能を使用している場合）

なお，バックアップからの回復を行う際は，「10.3.2　バックアップからの回復方法」の内容も参照してください。

各手順の詳細を以降で説明します。

(1)　マルチノード構成のHADBサーバを正常終了する

マルチノード構成のHADBサーバを正常終了してください。マルチノード構成のHADBサーバの正常終了手順については，「18.5.2　マルチノード構成のHADBサーバの終了方法」の「(1)　マルチノード構成のHADBサーバの終了手順」の「(a)　マルチノード構成のHADBサーバを正常終了させる場合」を参照してください。

マルチノード構成のHADBサーバを正常終了しないで，データベースの回復を実行した場合，データベースの内容が不整合となるおそれがあります。

(2)　バックアップからファイルを回復する

「18.9.1　バックアップの取得方法」の「(3)　プライマリノードでバックアップを取得する」で取得したバックアップからファイルを回復してください。

なお，HAモニタありのマルチノード構成の場合，バックアップからファイルを回復する前に，システムディレクトリが$DBDIR/ADBSYSにマウントされていることを確認してください。マウントされていない場合は，OSのmountコマンドを実行して，システムディレクトリを$DBDIR/ADBSYSにマウントしてください。

(3)　マルチノード構成のHADBサーバを開始する

マルチノード構成のHADBサーバを開始してください。マルチノード構成のHADBサーバの開始手順については，「18.5.1　マルチノード構成のHADBサーバの開始方法」の「(1)　マルチノード構成のHADBサーバの開始手順」を参照してください。

(4)　稼働モードを通常モードに変更する

静止モードでバックアップを取得した場合，データベースを回復したあとにHADBサーバを開始すると，HADBサーバが静止モードのままとなっています。この場合，プライマリノードでadbchgsrvmodeコマンドを実行して，プライマリノードのHADBサーバの稼働モードを通常モードに変更してください。

(5)　同義語辞書ファイルの同期を取る

adbsyndictコマンドを実行して，同義語辞書ファイルの同期を取ってください。同義語辞書ファイルの同期を取る方法については，「18.28.5　同義語辞書ファイルの同期を取る」を参照してください。

18.9.3　バックアップの運用例（OSコマンドを使用）

ここでは，OSのコマンドを使用したバックアップの運用例（フルバックアップを取得する運用例）について説明します。

(1)　システムの構成例

4つのノード（hadb01，hadb02，hadb03，hadb04）で構成されるHAモニタありのマルチノード構成で，プライマリノードはhadb01とします。DBディレクトリ，アーカイブディレクトリ，同義語辞書ファイルの格納ディレクトリ，および監査証跡の出力先ディレクトリは，次の構成となっているとします。

■hadb01のディレクトリ構成

DBディレクトリの構成

/HADB/db
 [図データ]ADBDIC：ブロックスペシャルファイル（サイズは512MB）
 [図データ]ADBMST：ブロックスペシャルファイル（サイズは10MB）
 [図データ]ADBSTBL：ブロックスペシャルファイル（サイズは512MB）
 [図データ]ADBWORK：ローカルファイルシステム上のディレクトリ
 [図データ]ADBWRK：ブロックスペシャルファイル（サイズは2GB）
 [図データ]ADBUTBL01：ブロックスペシャルファイル（サイズは4GB）
 [図データ]ADBUIDX01：ブロックスペシャルファイル（サイズは2GB）
 [図データ]SPOOL：ローカルファイルシステム上のディレクトリ
 [図データ]ADBSYS：システムディレクトリ

アーカイブディレクトリの構成

/HADB/archive

アーカイブディレクトリは，アーカイブマルチチャンク表を定義した場合に作成するディレクトリです。

同義語辞書ファイルの格納ディレクトリの構成

/mnt/syndict

同義語辞書ファイルの格納ディレクトリは，同義語検索を行っている場合に作成するディレクトリです。

監査証跡の出力先ディレクトリの構成

/HADB/audit

監査証跡の出力先ディレクトリは，監査証跡機能を使用している場合に作成するディレクトリです。

■hadb02のディレクトリ構成

DBディレクトリの構成

/HADB/db
 [図データ]ADBDIC：ブロックスペシャルファイル
 [図データ]ADBMST：ブロックスペシャルファイル
 [図データ]ADBSTBL：ブロックスペシャルファイル
 [図データ]ADBWORK：ローカルファイルシステム上のディレクトリ
 [図データ]ADBWRK：ブロックスペシャルファイル
 [図データ]ADBUTBL01：ブロックスペシャルファイル
 [図データ]ADBUIDX01：ブロックスペシャルファイル
 [図データ]SPOOL：ローカルファイルシステム上のディレクトリ
 [図データ]ADBSYS：システムディレクトリのファイルシステムのマウントポイント

アーカイブディレクトリの構成

/HADB/archive

アーカイブディレクトリは，アーカイブマルチチャンク表を定義した場合に作成するディレクトリです。

同義語辞書ファイルの格納ディレクトリのファイルシステムのマウントポイント

/mnt/syndict

同義語辞書ファイルの格納ディレクトリは，同義語検索を行っている場合に作成するディレクトリです。

監査証跡の出力先ディレクトリの構成

/HADB/audit

監査証跡の出力先ディレクトリは，監査証跡機能を使用している場合に作成するディレクトリです。

■hadb03のディレクトリ構成

DBディレクトリの構成

/HADB/db
 [図データ]ADBDIC：ブロックスペシャルファイル
 [図データ]ADBMST：ブロックスペシャルファイル
 [図データ]ADBSTBL：ブロックスペシャルファイル
 [図データ]ADBWORK：ローカルファイルシステム上のディレクトリ
 [図データ]ADBWRK：ブロックスペシャルファイル
 [図データ]ADBUTBL01：ブロックスペシャルファイル
 [図データ]ADBUIDX01：ブロックスペシャルファイル
 [図データ]SPOOL：ローカルファイルシステム上のディレクトリ
 [図データ]ADBSYS：システムディレクトリのファイルシステムのマウントポイント

アーカイブディレクトリの構成

/HADB/archive

アーカイブディレクトリは，アーカイブマルチチャンク表を定義した場合に作成するディレクトリです。

同義語辞書ファイルの格納ディレクトリのファイルシステムのマウントポイント

/mnt/syndict

同義語辞書ファイルの格納ディレクトリは，同義語検索を行っている場合に作成するディレクトリです。

監査証跡の出力先ディレクトリの構成

/HADB/audit

監査証跡の出力先ディレクトリは，監査証跡機能を使用している場合に作成するディレクトリです。

■hadb04のディレクトリ構成

DBディレクトリの構成

/HADB/db
 [図データ]ADBDIC：ブロックスペシャルファイル
 [図データ]ADBMST：ブロックスペシャルファイル
 [図データ]ADBSTBL：ブロックスペシャルファイル
 [図データ]ADBWORK：ローカルファイルシステム上のディレクトリ
 [図データ]ADBWRK：ブロックスペシャルファイル
 [図データ]ADBUTBL01：ブロックスペシャルファイル
 [図データ]ADBUIDX01：ブロックスペシャルファイル
 [図データ]SPOOL：ローカルファイルシステム上のディレクトリ
 [図データ]ADBSYS：ローカルファイルシステム上のシステムディレクトリ

アーカイブディレクトリの構成

/HADB/archive

アーカイブディレクトリは，アーカイブマルチチャンク表を定義した場合に作成するディレクトリです。

監査証跡の出力先ディレクトリの構成

/HADB/audit

監査証跡の出力先ディレクトリは，監査証跡機能を使用している場合に作成するディレクトリです。

(2)　バックアップの取得

OSのコマンドを使用して，バックアップを取得する手順を説明します。

手順

マルチノード構成のHADBサーバを終了する※1

adbstop
KFAA90000-I adbstop processing started.
KFAA91154-I The HADB system was terminated normally.
KFAA90001-I adbstop processing ended. (return code = 0)

monend

プライマリノード（hadb01）でadbstopコマンドを実行し，全ノードのHADBサーバが正常終了したあとに，HAモニタのmonendコマンドを実行してください。

OSのコマンドでバックアップを取得する

OSのcpコマンドおよびddコマンドをプライマリノード（hadb01）で実行し，次のディレクトリのバックアップを取得します。

DBディレクトリのバックアップの取得

cp -r /HADB/db/ADBSYS /HADB_bkup/db/ADBSYS
dd if=/HADB/db/ADBMST of=/HADB_bkup/db/ADBMST bs=524288
dd if=/HADB/db/ADBDIC of=/HADB_bkup/db/ADBDIC bs=524288
dd if=/HADB/db/ADBSTBL of=/HADB_bkup/db/ADBSTBL bs=524288
dd if=/HADB/db/ADBUTBL01 of=/HADB_bkup/db/ADBUTBL01 bs=524288
dd if=/HADB/db/ADBUIDX01 of=/HADB_bkup/db/ADBUIDX01 bs=524288

バックアップの取得先ディレクトリは/HADB_bkup/dbです。

システムディレクトリが$DBDIR/ADBSYSにマウントされていない場合は，OSのmountコマンドを実行してマウントしてください。

なお，ブロックスペシャルファイルのデータをバックアップする場合，ボリューム全体をコピーするため，実際の使用量よりもバックアップ容量が増えます。

アーカイブディレクトリのバックアップの取得

cp -r /HADB/archive /HADB_bkup/archive

アーカイブマルチチャンク表を定義している場合は，アーカイブディレクトリのバックアップを取得する必要があります。

アーカイブディレクトリをNFSサーバ上に作成している場合は，アーカイブディレクトリのバックアップをセカンダリノードおよびワーカーノードで取得する必要はありません。

同義語辞書ファイルの格納ディレクトリのバックアップの取得

cp -r /mnt/syndict /HADB_bkup/syndict

同義語検索を行っている場合は，同義語辞書ファイルの格納ディレクトリのバックアップを取得する必要があります。

メモ

監査証跡の出力先ディレクトリ下の監査証跡ファイルは，監査証跡の保存先ディレクトリに移動する運用のため，監査証跡の出力先ディレクトリのバックアップを取得する必要はありません。

マルチノード構成のHADBサーバを開始する※2

adbstart

プライマリノードおよび全セカンダリノード（hadb01〜hadb03）で，adbstartコマンドおよびHAモニタのmonbeginコマンドを実行してください。adbstartコマンドの実行後，別ターミナル（コマンド入力画面）から，HAモニタのmonbeginコマンドを実行してください。

重要

adbstartコマンドが終了する前に，monbeginコマンドを実行してください。

monbegin

マルチノード構成にワーカーノードを追加する

adbstart

ワーカーノード（hadb04）で，adbstartコマンドを実行してください。

注※1

手順1.は，次の方法で代替することもできます。

プライマリノードのhadb01でadbchgsrvmodeコマンドを実行し，プライマリノードのHADBサーバの稼働モードを静止モードに変更します。

adbchgsrvmode --quiescence

注※2

手順1.で注※1の方法を実施した場合は，プライマリノード（hadb01）でadbchgsrvmodeコマンドを実行し，プライマリノードのHADBサーバの稼働モードを通常モードに変更してください。

adbchgsrvmode --normal

(3)　バックアップからの回復

バックアップからの回復手順を説明します。

手順

マルチノード構成のHADBサーバを終了する

adbstop
KFAA90000-I adbstop processing started.
KFAA91154-I The HADB system was terminated normally.
KFAA90001-I adbstop processing ended. (return code = 0)

monend

プライマリノード（hadb01）でadbstopコマンドを実行し，マルチノード構成のHADBサーバが正常終了したあとに，HAモニタのmonendコマンドを実行してください。

OSのコマンドでデータベースを回復する

OSのcpコマンドおよびddコマンドをプライマリノード（hadb01）で実行し，バックアップから次のディレクトリを回復します。

DBディレクトリの回復

cp -r /HADB_bkup/db/ADBSYS /HADB/db/ADBSYS
dd if=/HADB_bkup/db/ADBMST of=/HADB/db/ADBMST bs=524288
dd if=/HADB_bkup/db/ADBDIC of=/HADB/db/ADBDIC bs=524288
dd if=/HADB_bkup/db/ADBSTBL of=/HADB/db/ADBSTBL bs=524288
dd if=/HADB_bkup/db/ADBUTBL01 of=/HADB/db/ADBUTBL01 bs=524288
dd if=/HADB_bkup/db/ADBUIDX01 of=/HADB/db/ADBUIDX01 bs=524288

バックアップファイルの格納ディレクトリは，/HADB_bkup/dbです。

システムディレクトリが$DBDIR/ADBSYSにマウントされていない場合は，OSのmountコマンドを実行してマウントしてください。

アーカイブディレクトリの回復

rm -r /HADB/archive/*
cp -r /HADB_bkup/archive/* /HADB/archive

アーカイブマルチチャンク表を定義している場合は，アーカイブディレクトリを回復する必要があります。

アーカイブディレクトリをNFSサーバ上に作成している場合は，セカンダリノードおよびワーカーノードでアーカイブディレクトリを回復する必要はありません。

同義語辞書ファイルの格納ディレクトリの回復

rm -r /mnt/syndict/*
cp -r /HADB_bkup/syndict/* /mnt/syndict

同義語検索を行っている場合は，同義語辞書ファイルの格納ディレクトリを回復する必要があります。

マルチノード構成のHADBサーバを開始する

adbstart

プライマリノードおよび全セカンダリノード（hadb01〜hadb03）で，adbstartコマンドおよびHAモニタのmonbeginコマンドを実行してください。adbstartコマンドの実行後，別ターミナル（コマンド入力画面）から，HAモニタのmonbeginコマンドを実行してください。

重要

adbstartコマンドが終了する前に，monbeginコマンドを実行してください。

monbegin

マルチノード構成のHADBサーバの開始後，プライマリノードのHADBサーバの稼働モードが静止モードの場合，プライマリノード（hadb01）でadbchgsrvmodeコマンドを実行し，プライマリノードのHADBサーバの稼働モードを通常モードに変更してください。

adbchgsrvmode --normal

マルチノード構成にワーカーノードを追加する

adbstart

ワーカーノード（hadb04）で，adbstartコマンドを実行してください。

同義語辞書ファイルの同期を取る

adbsyndict -s

プライマリノード（hadb01）でadbsyndictコマンドを実行し，同義語辞書ファイルの同期を取ってください。同義語検索を行っている場合に限り，この操作を実行してください。

18.9.4　バックアップの運用例（ShadowImageを使用）

ここでは，ShadowImageを使用したバックアップの運用例について説明します。

(1)　システムの構成例

4つのノード（hadb01，hadb02，hadb03，hadb04）で構成されるHAモニタありのマルチノード構成で，プライマリノードはhadb01とします。DBディレクトリ，アーカイブディレクトリ，同義語辞書ファイルの格納ディレクトリ，および監査証跡の出力先ディレクトリは，次の構成となっているとします。

■hadb01のディレクトリ構成

DBディレクトリの構成

/HADB/db
 [図データ]ADBDIC：ブロックスペシャルファイル（LU002を使用）
 [図データ]ADBMST：ブロックスペシャルファイル（LU001を使用）
 [図データ]ADBSTBL：ブロックスペシャルファイル（LU003を使用）
 [図データ]ADBWORK：ローカルファイルシステム上のディレクトリ（/dev/sdb1内）
 [図データ]ADBWRK：ブロックスペシャルファイル（/dev/mapper/WRK001を使用）
 [図データ]ADBUTBL01：ブロックスペシャルファイル（LU004を使用）
 [図データ]ADBUIDX01：ブロックスペシャルファイル（LU005を使用）
 [図データ]SPOOL：ローカルファイルシステム上のディレクトリ（/dev/sdb1内）
 [図データ]ADBSYS：システムディレクトリ（FS001上のファイルシステム）

アーカイブディレクトリの構成

/HADB/archive

アーカイブディレクトリは，アーカイブマルチチャンク表を定義した場合に作成するディレクトリです。

同義語辞書ファイルの格納ディレクトリの構成（FS002上のファイルシステム）

/mnt/syndict

同義語辞書ファイルの格納ディレクトリは，同義語検索を行っている場合に作成するディレクトリです。

監査証跡の出力先ディレクトリの構成

/HADB/audit

監査証跡の出力先ディレクトリは，監査証跡機能を使用している場合に作成するディレクトリです。

■hadb02のディレクトリ構成

DBディレクトリの構成

/HADB/db
 [図データ]ADBDIC：ブロックスペシャルファイル（LU002を使用）
 [図データ]ADBMST：ブロックスペシャルファイル（LU001を使用）
 [図データ]ADBSTBL：ブロックスペシャルファイル（LU003を使用）
 [図データ]ADBWORK：ローカルファイルシステム上のディレクトリ（/dev/sdb1内）
 [図データ]ADBWRK：ブロックスペシャルファイル（/dev/mapper/WRK002を使用）
 [図データ]ADBUTBL01：ブロックスペシャルファイル（LU004を使用）
 [図データ]ADBUIDX01：ブロックスペシャルファイル（LU005を使用）
 [図データ]SPOOL：ローカルファイルシステム上のディレクトリ（/dev/sdb1内）
 [図データ]ADBSYS：システムディレクトリのマウントポイント

アーカイブディレクトリの構成

/HADB/archive

アーカイブディレクトリは，アーカイブマルチチャンク表を定義した場合に作成するディレクトリです。

同義語辞書ファイルの格納ディレクトリのファイルシステムのマウントポイント

/mnt/syndict

同義語辞書ファイルの格納ディレクトリは，同義語検索を行っている場合に作成するディレクトリです。

監査証跡の出力先ディレクトリの構成

/HADB/audit

監査証跡の出力先ディレクトリは，監査証跡機能を使用している場合に作成するディレクトリです。

■hadb03のディレクトリ構成

DBディレクトリの構成

/HADB/db
 [図データ]ADBDIC：ブロックスペシャルファイル（LU002を使用）
 [図データ]ADBMST：ブロックスペシャルファイル（LU001を使用）
 [図データ]ADBSTBL：ブロックスペシャルファイル（LU003を使用）
 [図データ]ADBWORK：ローカルファイルシステム上のディレクトリ（/dev/sdb1内）
 [図データ]ADBWRK：ブロックスペシャルファイル（/dev/mapper/WRK003を使用）
 [図データ]ADBUTBL01：ブロックスペシャルファイル（LU004を使用）
 [図データ]ADBUIDX01：ブロックスペシャルファイル（LU005を使用）
 [図データ]SPOOL：ローカルファイルシステム上のディレクトリ（/dev/sdb1内）
 [図データ]ADBSYS：システムディレクトリのマウントポイント

アーカイブディレクトリの構成

/HADB/archive

アーカイブディレクトリは，アーカイブマルチチャンク表を定義した場合に作成するディレクトリです。

同義語辞書ファイルの格納ディレクトリのファイルシステムのマウントポイント

/mnt/syndict

同義語辞書ファイルの格納ディレクトリは，同義語検索を行っている場合に作成するディレクトリです。

監査証跡の出力先ディレクトリの構成

/HADB/audit

監査証跡の出力先ディレクトリは，監査証跡機能を使用している場合に作成するディレクトリです。

■hadb04のディレクトリ構成

DBディレクトリの構成

/HADB/db
 [図データ]ADBDIC：ブロックスペシャルファイル（LU002を使用）
 [図データ]ADBMST：ブロックスペシャルファイル（LU001を使用）
 [図データ]ADBSTBL：ブロックスペシャルファイル（LU003を使用）
 [図データ]ADBWORK：ローカルファイルシステム上のディレクトリ（/dev/sdb1内）
 [図データ]ADBWRK：ブロックスペシャルファイル（/dev/mapper/WRK004を使用）
 [図データ]ADBUTBL01：ブロックスペシャルファイル（LU004を使用）
 [図データ]ADBUIDX01：ブロックスペシャルファイル（LU005を使用）
 [図データ]SPOOL：ローカルファイルシステム上のディレクトリ（/dev/sdb1内）
 [図データ]ADBSYS：ローカルファイルシステム上のシステムディレクトリ

アーカイブディレクトリの構成

/HADB/archive

アーカイブディレクトリは，アーカイブマルチチャンク表を定義した場合に作成するディレクトリです。

監査証跡の出力先ディレクトリの構成

/HADB/audit

監査証跡の出力先ディレクトリは，監査証跡機能を使用している場合に作成するディレクトリです。

■Logical Unitの構成

マルチノード構成のときのストレージの構成例を次の図に示します。

［説明］

FS001には，システムディレクトリのファイルシステムを作成しています。

FS002には，同義語辞書ファイルを格納しているファイルシステムを作成しています。

LU001〜LU005は，DBエリアファイルに使用しています。

正ボリュームFS00X，LU00Xに対応する副ボリュームはFS10X，LU10Xです。

(2)　バックアップの取得

FS001，FS002，およびLU001〜LU005のすべてのLogical Unitを，「10.3.4　バックアップの運用例（ShadowImageを使用）」の「(3)　バックアップの取得」の手順に従ってバックアップを取得してください。

(3)　バックアップからの回復

FS001，FS002，およびLU001〜LU005のすべてのLogical Unitを，「10.3.4　バックアップの運用例（ShadowImageを使用）」の「(4)　バックアップからの回復」の手順に従って回復してください。

同義語検索を行っている場合は，データベースを回復したあとに，プライマリノードのhadb01でadbsyndictコマンドを実行し，同義語辞書ファイルの同期を取ってください。同義語辞書ファイルの同期を取る方法については，「18.28.5　同義語辞書ファイルの同期を取る」を参照してください。

18.10　状態監視（マルチノード機能の使用時）

ここでは，マルチノード機能使用時特有のシステムの監視方法を説明します。

18.10.1　全ノードの情報を確認する場合

稼働中のプライマリノードまたはセカンダリノードでadbls -d nodeコマンドを実行すると，全ノードの種別や，ステータス情報などを確認できます。adbls -d nodeコマンドを実行した際に出力される情報については，マニュアルHADB　コマンドリファレンスのadbls -d node（各ノードのHADBサーバの状態表示）を参照してください。

メモ

プライマリノードまたはセカンダリノードでadbls -d nodeコマンドを実行した場合

全ノードの情報が表示されます。

ワーカーノードでadbls -d nodeコマンドを実行した場合

コマンドを実行したワーカーノード，プライマリノード，および全セカンダリノードの情報だけが表示されます。ほかのワーカーノードの情報は表示されません。

18.10.2　HADBサーバの状態を確認する場合

マルチノード機能を使用している場合，自ノードで出力されたメッセージは，自ノードのメッセージログファイルおよびsyslogに出力されます。各ノードに出力されたメッセージを時刻などで突き合わせて参照することで，全ノードの状況を確認することができます。そのため，NTPなどを使用して各ノード間の時刻を合わせるようにしてください。

メッセージの確認方法については，「10.4　メッセージの確認」を参照してください。

18.10.3　APまたはコマンドの実行時間が長い場合

APまたはコマンドの処理時間が予想より長い場合は，次の手順でAPやコマンドを実行しているノードを特定してください。

手順

adbls -d cnctコマンドを実行する

コマンドの実行結果を参照して，APやコマンドを実行しているノードのノード番号を確認してください。

adbls -d nodeコマンドを実行する

コマンドの実行結果を参照して，ノード番号に対応するノードを特定してください。

原因を調査する

ノードを特定したあとに，「10.8　トランザクションの処理状況の確認」を参照して，原因を調査してください。

adbls -d cnctコマンドを実行した際に出力される情報については，マニュアルHADB　コマンドリファレンスのadbls -d cnct（コネクションの状態表示）を参照してください。

adbls -d nodeコマンドを実行した際に出力される情報については，マニュアルHADB　コマンドリファレンスのadbls -d node（各ノードのHADBサーバの状態表示）を参照してください。

18.10.4　HADBサーバの開始処理または終了処理に掛かる時間が長い場合

HADBサーバの開始処理または終了処理に掛かる時間が予想より長い場合は，次のどちらかの方法で調査してください。

出力メッセージから調査する

HADBサーバの開始または終了時に出力されるメッセージを，各ノードのメッセージログファイルを参照して調査してください。

adbls -d srvコマンドで調査する

adbls -d srvを実行した際に出力される情報については，マニュアルHADB　コマンドリファレンスのadbls -d srv（HADBサーバの状態表示）を参照してください。

18.10.5　各ノードのHADBサーバの状態を確認する場合

adbls -d srvコマンドで，各ノードのHADBサーバの状態を確認できます。

adbls -d srvコマンドを実行した際に出力される情報については，マニュアルHADB　コマンドリファレンスのadbls -d srv（HADBサーバの状態表示）を参照してください。

18.10.6　メモリの使用状況を確認する場合

HADBサーバが使用しているメモリの使用状況を確認したい場合は，adbstatコマンドを実行してください。確認方法については，「10.6.1　全メモリの使用状況を確認したい場合」を参照してください。

adbstatコマンドを実行すると，全メモリの最大使用量（Total_memory_max_size）が，ノードごとに出力されます。ノードごとにTotal_memory_max_sizeの値は異なるため，全ノードのTotal_memory_max_sizeの値を確認してください。

18.10.7　SQLメインノードとSQLサブノードを確認する場合

SQLパラレル実行機能を適用した検索系SQLを実行した際に，SQLメインノードおよびSQLサブノードがどのノードに割り当てられたのかを確認したい場合は，次に示す手順でノードを特定してください。手順は，4つのノード（hadb01，hadb02，hadb03，hadb04）から構成されるHAモニタありのマルチノード構成を例にして説明します。

手順

adbls -d cnctコマンドを実行する

HADBサーバに接続しているコネクションの状態が表示されます。

CID  CNUMBER  CONNECT_TIME         PROGRAM  C-PID      IP-ADDRESS          STATUS
1    1        2022-01-01 00:00:00  HADB     12345      (10.196.108.111 )   STARTED

TRN_ISO_LV      ACCESS_MODE  CONNECTION_INFORMATION            NODE_NO  CLIENT_TYPE
READ_COMMITTED  READ_ONLY    000010000000001-0000000000000000  4        AP(JDBC)

CLIENT_GROUP SQL_ELAPSED_TIME

NODE_NOにSQLメインノードのノード番号が表示されます。この例では，SQLメインノードのノード番号は4になります。

adbls -d nodeコマンドを実行する

NODE_NO NODE_TYPE SVID       IP-ADDRESS        STATUS   START_TIME
1       PRIMARY   11111      (172.16.0.11    ) ACTIVE   2022-01-01 00:00:00
2       SECONDARY 22222      (172.16.0.12    ) ACTIVE   2022-01-01 00:00:00
3       SECONDARY 33333      (172.16.0.13    ) ACTIVE   2022-01-01 00:00:00
4       WORKER    44444      (172.16.0.14    ) ACTIVE   2022-01-01 00:00:00

ノード番号が4のノードは，ワーカーノードになります。このワーカーノードがSQLメインノードです。

SQLメインノードのノードでadbls -d prlコマンドを実行する

CNUMBER    SQL_ID              NODE_NO SQL_NODE_TYPE
1          2                   4       MAIN
1          2                   2       SUB
1          2                   3       SUB

NODE_NOに，SQLメインノードおよびSQLサブノードのノード番号が表示されます。この例では，SQLサブノードのノード番号は，2と3になります。

adbls -d nodeコマンドを実行する

NODE_NO NODE_TYPE SVID       IP-ADDRESS        STATUS   START_TIME
1       PRIMARY   11111      (172.16.0.11    ) ACTIVE   2022-01-01 00:00:00
2       SECONDARY 22222      (172.16.0.12    ) ACTIVE   2022-01-01 00:00:00
3       SECONDARY 33333      (172.16.0.13    ) ACTIVE   2022-01-01 00:00:00
4       WORKER    44444      (172.16.0.14    ) ACTIVE   2022-01-01 00:00:00

ノード番号が2，3のノードは，両方ともセカンダリノードになります。このセカンダリノードがSQLサブノードです。

メモ

adbls -d cnctコマンド，adbls -d nodeコマンド，およびadbls -d prlコマンドについては，マニュアルHADB　コマンドリファレンスのadbls -d cnct（コネクションの状態表示），adbls -d node（各ノードのHADBサーバの状態表示），およびadbls -d prl（SQLパラレル実行機能の情報表示）を参照してください。

18.11　DBエリアの運用（マルチノード機能の使用時）

ここでは，マルチノード機能を使用する場合の，DBエリアの運用について説明します。

18.11.1　グローバルバッファの割り当て

マルチノード機能を使用する場合，グローバルバッファは，各ノードで独立しています。そのため，各ノードのHADBサーバに対して，サーバ定義adbbuffオペランドで，それぞれグローバルバッファを割り当ててください。

サーバ定義adbbuffオペランドについては，「7.2.18　グローバルバッファに関するオペランドおよびオプション（コマンド形式）」を参照してください。

18.11.2　データベースの状態や使用量の確認

マルチノード機能を使用している場合に，データベースの状態や使用量を確認するときは，プライマリノードでadbdbstatusコマンドを実行してください。

セカンダリノードまたはワーカーノードでadbdbstatusコマンドを実行した場合は，エラーとなります（KFAA31898-Eメッセージが出力されます）。

adbdbstatusコマンドの実行結果から，データベースの状態や使用量を確認する方法については，「10.9　データベースの状態や使用量の確認」を参照してください。

18.11.3　データ用DBエリアの追加・削除・拡張（マルチノード機能の使用時）

ここでは，マルチノード機能を使用している場合に，adbmodareaコマンドを使用して，データ用DBエリアの追加，削除および拡張する方法について説明します。

(1)　データ用DBエリアを追加する方法

データ用DBエリアを追加する方法については，「11.13.1　データ用DBエリアを追加する方法」を参照してください。

なお，データ用DBエリアを追加するadbmodareaコマンドは，プライマリノードで実行してください。

重要

マルチノード構成から切り離されているノードがある場合，データ用DBエリアを追加できません。切り離されているノードをマルチノード構成に復帰させたあとに，データ用DBエリアを追加してください。

サーバマシンの故障などによって，マルチノード構成からノードを除外してから，セカンダリノードとしてマルチノード構成に再度追加するまでの間に，データ用DBエリアを追加した場合は，DBディレクトリを再作成する必要があります。この場合の手順については，「18.20.1　セカンダリノードの新規追加」を参照してください。

同様に，データ用DBエリアを追加したときにマルチノード構成になかったワーカーノードをマルチノード構成に追加する場合も，DBディレクトリを再作成する必要があります。DBディレクトリを再作成する際，データ用DBエリアの構成変更の差分情報を反映した初期設定オプションを作成する必要があります。作成方法については，「18.20.2　セカンダリノードの新規追加時にadbinitコマンドを実行する際の留意事項」を参照してください。その際，セカンダリノードをワーカーノードに読み替えてください。

メモ

データ用DBエリアの追加中にHADBサーバが異常終了した場合，そのノードのDBディレクトリには，追加しようとしたデータ用DBエリアファイルへのシンボリックリンクが残ったままになることがあります。シンボリックリンクが残ったままでも，動作上の問題はありません。

なお，クラウドストレージ機能を使用している場合は，この留意事項は発生しません。

■共有ディスクのSCSIリザーブを使用している場合

共有ディスクのSCSIリザーブを使用している場合は，データ用DBエリアを追加する前に，HAモニタのserversファイル中のオペランドの指定を変更する必要があります。データ用DBエリアを追加する手順を次に示します。

手順

マルチノード構成のHADBサーバを正常終了する

終了方法については，「18.5.2　マルチノード構成のHADBサーバの終了方法」を参照してください。

HAモニタのserversファイルの指定を変更する

scsi_deviceオペランドまたはdmmp_deviceオペランドに，追加するディスクのデバイス名を追加してください。プライマリノードおよびセカンダリノードのserversファイルの指定を変更してください。

マルチノード構成のHADBサーバを正常開始する

開始方法については，「18.5.1　マルチノード構成のHADBサーバの開始方法」を参照してください。

adbmodareaコマンドを実行して，データ用DBエリアを追加する

データ用DBエリアを追加する方法については，「11.13.1　データ用DBエリアを追加する方法」を参照してください。

(2)　データ用DBエリアを削除する方法

データ用DBエリアを削除する方法については，「11.13.2　データ用DBエリアを削除する方法」を参照してください。

なお，データ用DBエリアを削除するadbmodareaコマンドは，プライマリノードで実行してください。

メモ

データ用DBエリアの削除時に停止中のノードがある場合，そのノードのDBディレクトリには，削除したデータ用DBエリアのデータ用DBエリアファイルへのシンボリックリンクが残ったままになります。シンボリックリンクが残ったままでも，動作上の問題はありません。

なお，クラウドストレージ機能を使用している場合は，この留意事項は発生しません。

■共有ディスクのSCSIリザーブを使用している場合

共有ディスクのSCSIリザーブを使用している場合は，データ用DBエリアを削除したあとに，HAモニタのserversファイル中のオペランドの指定を変更する必要があります。データ用DBエリアを削除する手順を次に示します。

手順

adbmodareaコマンドを実行して，データ用DBエリアを削除する

データ用DBエリアを削除する方法については，「11.13.2　データ用DBエリアを削除する方法」を参照してください。

マルチノード構成のHADBサーバを正常終了する

終了方法については，「18.5.2　マルチノード構成のHADBサーバの終了方法」を参照してください。

HAモニタのserversファイルの指定を変更する

scsi_deviceオペランドまたはdmmp_deviceオペランドから，削除したディスクのデバイス名を削除してください。プライマリノードおよびセカンダリノードのserversファイルの指定を変更してください。

マルチノード構成のHADBサーバを正常開始する

開始方法については，「18.5.1　マルチノード構成のHADBサーバの開始方法」を参照してください。

(3)　データ用DBエリアを拡張する方法（データ用DBエリアファイルの追加）

データ用DBエリアを拡張する方法については，「11.13.3　データ用DBエリアを拡張する方法（データ用DBエリアファイルの追加）」を参照してください。

なお，データ用DBエリアを拡張するadbmodareaコマンドは，プライマリノードで実行してください。

重要

マルチノード構成から切り離されているノードがある場合，データ用DBエリアを拡張できません。切り離されているノードをマルチノード構成に復帰させたあとに，データ用DBエリアを拡張してください。

サーバマシンの故障などによって，マルチノード構成からノードを除外してから，セカンダリノードとしてマルチノード構成に再度追加するまでの間に，データ用DBエリアを拡張した場合は，DBディレクトリを再作成する必要があります。この場合の手順については，「18.20.1　セカンダリノードの新規追加」を参照してください。

同様に，データ用DBエリアを拡張したときにマルチノード構成になかったワーカーノードをマルチノード構成に追加する場合も，DBディレクトリを再作成する必要があります。DBディレクトリを再作成する際，データ用DBエリアの構成変更の差分情報を反映した初期設定オプションを作成する必要があります。作成方法については，「18.20.2　セカンダリノードの新規追加時にadbinitコマンドを実行する際の留意事項」を参照してください。その際，セカンダリノードをワーカーノードに読み替えてください。

メモ

データ用DBエリアの拡張中にHADBサーバが異常終了した場合，そのノードのDBディレクトリには，追加しようとしたデータ用DBエリアファイルへのシンボリックリンクが残ったままになることがあります。シンボリックリンクが残ったままでも，動作上の問題はありません。

なお，クラウドストレージ機能を使用している場合は，この留意事項は発生しません。

■共有ディスクのSCSIリザーブを使用している場合

共有ディスクのSCSIリザーブを使用している場合は，データ用DBエリアを拡張する前に，HAモニタのserversファイル中のオペランドの指定を変更する必要があります。データ用DBエリアを拡張する手順を次に示します。

手順

マルチノード構成のHADBサーバを正常終了する

終了方法については，「18.5.2　マルチノード構成のHADBサーバの終了方法」を参照してください。

HAモニタのserversファイルの指定を変更する

scsi_deviceオペランドまたはdmmp_deviceオペランドに，追加するディスクのデバイス名を追加してください。プライマリノードおよびセカンダリノードのserversファイルの指定を変更してください。

マルチノード構成のHADBサーバを正常開始する

開始方法については，「18.5.1　マルチノード構成のHADBサーバの開始方法」を参照してください。

adbmodareaコマンドを実行して，データ用DBエリアを拡張する

データ用DBエリアを拡張する方法については，「11.13.3　データ用DBエリアを拡張する方法（データ用DBエリアファイルの追加）」を参照してください。

18.11.4　DBエリアの格納位置の変更

マルチノード機能を使用している場合で，データ用DBエリアおよび作業表用DBエリアを構成するDBエリアファイルの格納位置を変更する方法を次に示します。

(1)　データ用DBエリアの格納位置の変更

マルチノード機能を使用している場合で，データ用DBエリアを構成するデータ用DBエリアファイル（ブロックスペシャルファイル）の格納位置を変更する手順を次に示します。

メモ

クラウドストレージ機能を使用している場合は，データ用DBエリアの格納位置を変更できません。

手順

マルチノード構成のHADBサーバを正常終了する

終了方法については，「18.5.2　マルチノード構成のHADBサーバの終了方法」を参照してください。

格納位置を変更したいデータ用DBエリアファイルをコピーする

格納位置を変更したいデータ用DBエリアファイル（シンボリックリンク先）を，別の領域にコピーしてください。このとき，コピー先は，全ノードのHADBサーバから参照できる必要があります。

全ノードでシンボリックリンク先をコピー先の領域に変更する

マルチノード構成のHADBサーバを開始する

開始方法については，「18.5.1　マルチノード構成のHADBサーバの開始方法」を参照してください。

上記の手順2.および手順3.の詳細な方法については，「11.13.5　データ用DBエリアファイルの格納場所を変更する方法」を参照してください。

重要

変更前のブロックスペシャルファイルから，変更後のブロックスペシャルファイルへのddコマンドによるコピーは，1つのノードで実施してください。また，シンボリックリンクの変更は，すべてのノードで実施してください。

■共有ディスクのSCSIリザーブを使用している場合

SCSIリザーブの対象となるDBエリアの格納位置を変更する場合は，HAモニタのserversファイル中のオペランドの指定を変更する必要があります。そのため，上記の手順4.でマルチノード構成のHADBサーバを開始する前に，次のことを実施してください。

serversファイル中のscsi_deviceオペランドまたはdmmp_deviceオペランドの指定を修正します。変更元のディスクのデバイス名を削除し，変更先のディスクのデバイス名を追加してください。

プライマリノードおよびセカンダリノードのserversファイルの指定を変更してください。

(2)　作業表用DBエリアの格納位置の変更

マルチノード機能を使用している場合で，作業表用DBエリアを構成する作業表用DBエリアファイルの格納位置を変更する手順を次に示します。

手順

マルチノード構成のHADBサーバを正常終了する

サーバ定義adb_blk_path_wrkオペランドに作業表用DBエリアファイルの変更後の領域を指定する

マルチノード構成のHADBサーバを開始する

18.11.5　作業表用DBエリアの運用（マルチノード機能の使用時）

マルチノード機能を使用する場合，作業表用DBエリアは，各ノードでそれぞれ異なる作業表用DBエリアファイルで構成されます。そのため，複数のノードのHADBサーバから，同じ作業表用DBエリアファイルにアクセスすることはありません。

作業表用DBエリアの容量については，「5.9　作業表用DBエリアの容量見積もり」を参照し，各ノードでそれぞれ見積もってください。

18.11.6　ディスクを増設した場合の運用

増設したディスクにDBエリアファイルを作成する場合，増設したディスクを各ノードのOSに事前に認識させておく必要があります。OSに増設したディスクを認識させるには，マルチノード構成のHADBサーバを終了して全ノードのOSを再起動するか，次に示す手順で1ノードずつOSを再起動してください。

メモ

HAモニタなしのマルチノード構成の場合は，マルチノード構成のHADBサーバを終了して全ノードのOSを再起動してください。

（例）

次に示すHAモニタありのマルチノード構成の場合にディスクを増設し，増設したディスクを各ノードのOSに認識させます。

ノード1（プライマリノード）

ノード2（セカンダリノード）

ノード3（セカンダリノード）

ノード4（ワーカーノード）

手順

ノード2～ノード4のHADBサーバをadbstop --nodeコマンドで正常終了する

ノード2～ノード4のOSを再起動する

ノード2とノード3をマルチノード構成に復帰させる

マルチノード構成に復帰させる方法については，「18.16.3　マルチノード構成へのノードの復帰」を参照してください。

ノード4をマルチノード構成に追加する

マルチノード構成へのワーカーノードの追加方法については，「18.18.3　マルチノード構成から削除されたワーカーノードを再度追加する手順」を参照してください。

コマンドによるプライマリノードの切り替えを実施し，ノード2またはノード3のどちらかをプライマリノードに切り替える

コマンドによるプライマリノードの切り替え方法については，「18.8　コマンドによるプライマリノードの切り替え」を参照してください。

このとき，ノード1のHADBサーバは自動的に停止します。

ノード1のOSを再起動する

ノード1をマルチノード構成に復帰させる

マルチノード構成に復帰させる方法については，「18.16.3　マルチノード構成へのノードの復帰」を参照してください。

このとき，ノード1は，セカンダリノードとしてマルチノード構成に復帰します。ノード1をプライマリノードにしたい場合は，「18.16.3　マルチノード構成へのノードの復帰」の「(3)　復帰させたノードをプライマリノードに切り替える手順」を参照してください。

18.12　スキーマ，表およびインデクスの運用（マルチノード機能の使用時）

ここでは，マルチノード機能を使用する場合の，スキーマ，表およびインデクスの運用について説明します。

18.12.1　スキーマの運用（マルチノード機能の使用時）

ここでは，マルチノード機能を使用している場合の，スキーマの運用について説明します。

基本的には，マルチノード機能を使用しない場合と同じです。スキーマの定義と削除は，CREATE SCHEMA文とDROP SCHEMA文で実行できます。マニュアルHADB　SQLリファレンスの定義系SQLを参照してください。

18.12.2　実表の運用（マルチノード機能の使用時）

ここでは，マルチノード機能を使用している場合の，実表の運用について説明します。

マルチノード機能を使用している場合，実表の運用のうち，次の運用項目ではマルチノード機能特有の運用が必要となります。

実表にデータを格納する方法

実表の更新不可状態を解除する方法

上記以外については，マルチノード機能を使用しない場合と同じです。「11.1　実表の運用」を参照してください。

(1)　実表にデータを格納する方法（マルチノード機能の使用時）

マルチノード機能を使用している場合，adbimportコマンドを実行できるノードはプライマリノードだけです。セカンダリノードおよびワーカーノードでは，adbimportコマンドを実行できません。

adbimportコマンドについては，マニュアルHADB　コマンドリファレンスのadbimport（データのインポート）を参照してください。

adbimportコマンドとトランザクションの同時実行可否については，「2.20.2　トランザクションおよびコマンドが実行されるノード」の「(4)　トランザクションとコマンドの同時実行についての制限」を参照してください。

■SQLパラレル実行機能の検索対象表にデータを格納する場合（クラウドストレージ機能を使用していないとき）

クラウドストレージ機能を使用していない場合，SQLパラレル実行機能の検索対象表は，複数のDBエリアファイルで構成されるデータ用DBエリアに格納されています。SQLパラレル実行機能を適用して検索系SQLを実行する場合，DBエリアファイルごとに検索系SQLの処理を並列実行します。そのため，各DBエリアファイルに格納されているデータ量に偏りがあると，各ノードの負荷にばらつきが出てしまい，並列に処理にするメリットが小さくなります。したがって，SQLパラレル実行機能の検索対象表にデータを格納する際は，各DBエリアファイルに均等にデータが格納されるようにしてください（次の条件をすべて満たすようにしてadbimportコマンドを実行してください）。

「adbimportコマンドが使用するスレッド数－1」を，インポート対象表が格納されているデータ用DBエリアのDBエリアファイル数の倍数にする。

入力データファイル数を「adbimportコマンドが使用するスレッド数－1」の倍数にする。

各入力データファイルのデータ件数をなるべく同じにする。

(2)　実表の更新不可状態を解除する方法（マルチノード機能の使用時）

adbimportコマンドまたはadbidxrebuildコマンドが異常終了した場合

adbimportコマンドまたはadbidxrebuildコマンドが異常終了し，処理対象の実表が更新不可状態になった場合，異常終了したコマンドを再実行して，実表の更新不可状態を解除してください。

なお，プライマリノードのHADBサーバが異常終了してプライマリノードが切り替わった場合は，新たなプライマリノードでadbidxrebuildコマンドを実行し，実表の更新不可状態を解除してください。このとき，--create-temp-fileオプションを指定してadbidxrebuildコマンドを実行してください。

--create-temp-fileオプションについては，マニュアルHADB　コマンドリファレンスのadbidxrebuild（インデクスの再作成）のadbidxrebuildコマンドの指定形式を参照してください。

adbunarchivechunkコマンドが異常終了した場合

adbunarchivechunkコマンドが異常終了し，処理対象の実表が更新不可状態になった場合，adbunarchivechunkコマンドを再実行して，実表の更新不可状態を解除してください。

メモ

実表の更新不可状態については，「16.8.1　実表が更新不可状態になった場合」を参照してください。

18.12.3　ビュー表の運用（マルチノード機能の使用時）

ここでは，マルチノード機能を使用している場合の，ビュー表の運用について説明します。

基本的には，マルチノード機能を使用しない場合と同じです。「11.2　ビュー表の運用」を参照してください。

18.12.4　インデクスの運用（マルチノード機能の使用時）

ここでは，マルチノード機能を使用している場合の，B-treeインデクス，テキストインデクスおよびレンジインデクスの運用について説明します。

マルチノード機能を使用している場合，B-treeインデクス，テキストインデクスおよびレンジインデクスの運用のうち，次の運用項目ではマルチノード機能特有の運用が必要となります。

インデクスを作成する方法

B-treeインデクスの未完状態を解除する方法

テキストインデクスの未完状態を解除する方法

レンジインデクスの未完状態を解除する方法

上記以外については，マルチノード機能を使用しない場合と同じです。「11.4　インデクスの運用」を参照してください。

(1)　インデクスを作成する方法（マルチノード機能の使用時）

マルチノード機能を使用している場合，次に示すコマンドを実行できるノードは，プライマリノードだけです。セカンダリノードおよびワーカーノードでは，次に示すコマンドを実行できません。

対象のコマンド

adbimportコマンド

adbidxrebuildコマンド

adbmergechunkコマンド

adbunarchivechunkコマンド

対象のコマンドについては，マニュアルHADB　コマンドリファレンスを参照してください。

(2)　B-treeインデクスの未完状態を解除する方法（マルチノード機能の使用時）

adbimportコマンドまたはadbidxrebuildコマンドが異常終了し，B-treeインデクスが未完状態になった場合，異常終了したコマンドを再実行して，B-treeインデクスの未完状態を解除してください。

なお，プライマリノードのHADBサーバが異常終了してプライマリノードが切り替わった場合は，新たなプライマリノードでadbidxrebuildコマンドを実行して，B-treeインデクスの未完状態を解除してください。このとき，--create-temp-fileオプションを指定してadbidxrebuildコマンドを実行してください。

--create-temp-fileオプションについては，マニュアルHADB　コマンドリファレンスのadbidxrebuild（インデクスの再作成）のadbidxrebuildコマンドの指定形式を参照してください。

B-treeインデクスの未完状態については，「16.9.1　B-treeインデクスが未完状態になったときの対処方法」を参照してください。

(3)　テキストインデクスの未完状態を解除する方法（マルチノード機能の使用時）

adbimportコマンドまたはadbidxrebuildコマンドが異常終了し，テキストインデクスが未完状態になった場合，異常終了したコマンドを再実行して，テキストインデクスの未完状態を解除してください。

なお，プライマリノードのHADBサーバが異常終了してプライマリノードが切り替わった場合は，新たなプライマリノードでadbidxrebuildコマンドを実行して，テキストインデクスの未完状態を解除してください。このとき，--create-temp-fileオプションを指定してadbidxrebuildコマンドを実行してください。

--create-temp-fileオプションについては，マニュアルHADB　コマンドリファレンスのadbidxrebuild（インデクスの再作成）のadbidxrebuildコマンドの指定形式を参照してください。

テキストインデクスの未完状態については，「16.10.1　テキストインデクスが未完状態になったときの対処方法」を参照してください。

(4)　レンジインデクスの未完状態を解除する方法（マルチノード機能の使用時）

adbidxrebuildコマンドが異常終了し，レンジインデクスが未完状態になった場合，adbidxrebuildコマンドを再実行して，レンジインデクスの未完状態を解除してください。

なお，プライマリノードのHADBサーバが異常終了してプライマリノードが切り替わった場合は，新たなプライマリノードでadbidxrebuildコマンドを再実行して，レンジインデクスの未完状態を解除してください。このとき，--create-temp-fileオプションを指定してadbidxrebuildコマンドを再実行してください。

--create-temp-fileオプションについては，マニュアルHADB　コマンドリファレンスのadbidxrebuild（インデクスの再作成）のadbidxrebuildコマンドの指定形式を参照してください。

レンジインデクスの未完状態については，「16.11.1　レンジインデクスが未完状態になったときの対処方法」を参照してください。

18.12.5　マルチチャンク表の運用（マルチノード機能の使用時）

ここでは，マルチノード機能を使用している場合の，マルチチャンク表の運用について説明します。

マルチノード機能を使用している場合，マルチチャンク表の運用のうち，次の運用項目ではマルチノード機能特有の運用が必要となります。

チャンクをマージする方法

チャンクのコメントを変更する方法

チャンクの状態を変更する方法

また，マルチノード機能を使用している場合の，実表の運用については，「18.12.2　実表の運用（マルチノード機能の使用時）」を参照してください。

上記以外については，マルチノード機能を使用しない場合と同じです。「11.5　マルチチャンク表の運用」を参照してください。

(1)　チャンクをマージする方法（マルチノード機能の使用時）

複数のチャンクを1つのチャンクにマージする場合，adbmergechunkコマンドを実行します。詳細については，「11.5.9　チャンクをマージする方法（チャンク数を減らす方法）」を参照してください。

なお，マルチノード機能を使用している場合，adbmergechunkコマンドが実行できるノードは，プライマリノードだけです。セカンダリノードおよびワーカーノードでは，adbmergechunkコマンドを実行できません。

(2)　チャンクのコメントを変更する方法（マルチノード機能の使用時）

チャンクのコメントを設定，変更および削除する場合，adbchgchunkcommentコマンドを実行します。詳細については，「11.5.11　チャンクのコメントを変更する方法」を参照してください。

なお，マルチノード機能を使用している場合，adbchgchunkcommentコマンドが実行できるノードは，プライマリノードだけです。セカンダリノードおよびワーカーノードでは，adbchgchunkcommentコマンドを実行できません。

(3)　チャンクの状態を変更する方法（マルチノード機能の使用時）

チャンクの状態を変更する場合，adbchgchunkstatusコマンドを実行します。詳細については，「11.5.12　チャンクの状態を変更する方法」を参照してください。

なお，マルチノード機能を使用している場合，adbchgchunkstatusコマンドが実行できるノードは，プライマリノードだけです。セカンダリノードおよびワーカーノードでは，adbchgchunkstatusコマンドを実行できません。

18.12.6　アーカイブマルチチャンク表の運用（マルチノード機能の使用時）

ここでは，マルチノード機能を使用している場合の，アーカイブマルチチャンク表の運用について説明します。

マルチノード機能を使用している場合，アーカイブマルチチャンク表の運用のうち，次の運用項目ではマルチノード機能特有の運用が必要となります。

アーカイブディレクトリを設定する方法

チャンクをアーカイブする方法

チャンクをアンアーカイブする方法

上記以外については，マルチノード機能を使用しない場合と同じです。「11.5　マルチチャンク表の運用」を参照してください。

(1)　アーカイブディレクトリを設定する方法

すべてのノードから，同一の絶対パスでアーカイブディレクトリを参照できるようにしてください。

例えば，分散ファイルシステムの一つであるNFSを使用する場合は，次の手順でアーカイブディレクトリを準備します。

手順

NFSサーバを用意し，NFSサーバ上でアーカイブディレクトリを作成してください。

手順の1.で作成したアーカイブディレクトリをエクスポートしてください。

この操作は，NFSサーバで実行します。

手順の2.でエクスポートしたディレクトリを，全ノードで同じパスとなるようにマウントしてください。

この操作は，全ノードで実行します。

NFSを使用したシステム構成例を次の図に示します。

図18‒8　NFSを使用したシステム構成例

注

上記は，HAモニタありのマルチノード構成のシステム構成例です。HAモニタなしのマルチノード構成の場合は，セカンダリノードをワーカーノードに読み替えてください。

(2)　チャンクをアーカイブする方法

マルチノード機能を使用している場合，チャンクをアーカイブするadbarchivechunkコマンドを実行できるノードはプライマリノードだけです。セカンダリノードおよびワーカーノードでは，adbarchivechunkコマンドを実行できません。

adbarchivechunkコマンドについては，マニュアルHADB　コマンドリファレンスのadbarchivechunk（チャンクのアーカイブ）を参照してください。

(3)　チャンクをアンアーカイブする方法

マルチノード機能を使用している場合，チャンクをアンアーカイブするadbunarchivechunkコマンドを実行できるノードはプライマリノードだけです。セカンダリノードおよびワーカーノードでは，adbunarchivechunkコマンドを実行できません。

adbunarchivechunkコマンドについては，マニュアルHADB　コマンドリファレンスのadbunarchivechunk（チャンクのアンアーカイブ）を参照してください。

18.12.7　ディクショナリ表およびシステム表の再編成（マルチノード機能の使用時）

ディクショナリ表およびシステム表を再編成するadbreorgsystemdataコマンドは，プライマリノードで実行してください。セカンダリノードおよびワーカーノードでは，adbreorgsystemdataコマンドを実行できません。

ディクショナリ表およびシステム表を再編成する手順については，「11.20　ディクショナリ表およびシステム表の再編成」を参照してください。

18.13　システムログの運用（マルチノード機能の使用時）

マルチノード機能を使用している場合，システムログファイルは全ノードで1つだけ存在し，プライマリノードのHADBサーバが管理しています。プライマリノードのHADBサーバは，各ノードのHADBサーバの操作履歴情報，およびデータベースの更新履歴情報をシステムログとして，システムログファイルに出力します。

HAモニタありのマルチノード構成の場合

システムログファイルは，プライマリノードのDBディレクトリ下のADBSYS/ADBSLGディレクトリにマウントしているファイルシステム内に作成されます。※

HAモニタなしのマルチノード構成の場合

システムログファイルは，プライマリノードのノードローカルのファイルシステム内に作成されたDBディレクトリ下（$DBDIR/ADBSYS/ADBSLG）に作成されます。※

注※

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にした場合，システムログはオブジェクトストレージ内のS3オブジェクトに格納されます。

システムログについては，「2.11.1　再開始による回復処理の流れ」の「(2)　システムログ」を参照してください。

■プライマリノードの切り替えが発生した場合

切り替え前のプライマリノードのHADBサーバが管理していたシステムログを，新しくプライマリノードになるHADBサーバが引き継ぎます。新しくプライマリノードになるHADBサーバが，引き継いだシステムログを使用して，プライマリノードで実行されていた更新処理に対する回復処理（ロールバック）を行います。

プライマリノードの切り替えが発生した場合，システムログが格納されているファイルシステムは，切り替え前のプライマリノードからアンマウントされます。そのあと，新たなプライマリノードのDBディレクトリ下のADBSYSディレクトリにマウントされます。これらのアンマウントおよびマウント処理は，HAモニタが自動的に実行します。※

注※

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にした場合，システムログはオブジェクトストレージ内のS3オブジェクトに格納されます。そのため，プライマリノードの切り替えが発生しても，ファイルシステムのアンマウントおよびマウント処理は発生しません。

18.14　統計情報の運用（マルチノード機能の使用時）

マルチノード機能を使用している場合，統計情報はノードごとに管理されます。そのため，統計情報を出力したいノードでadbstatコマンドを実行してください。

また，トランザクションを実行するノードをシステムが自動的に決定することがあります。そのため，コネクションの稼働情報，またはSQL文の統計情報を出力する場合は，adbstatコマンドを実行したノードで実行されたトランザクションの情報だけが出力されます。

トランザクションを実行するノードについては，「18.6.3　トランザクションを実行するノード」を参照してください。

統計情報の確認方法については，「10.10　統計解析の運用（HADBサーバの稼働情報の確認）」を参照してください。

■アクセスパスの統計情報を取得している場合

アクセスパスの統計情報はSQLトレース情報中に出力されます。マルチノード機能を使用している場合，SQLトレース情報はノードごとに管理されます。そのため，各ノードのSQLトレース情報には，自ノードで実行したトランザクションのSQL文の情報だけが出力されます。したがって，すべてのトランザクションのアクセスパスの統計情報を取得する場合は，全ノードでSQLトレース情報を取得するようにしてください。SQLトレース情報の取得方法については，「10.11.5　SQLトレース情報を出力するための準備」を参照してください。

18.15　チューニング（マルチノード機能の使用時）

マルチノード機能を使用している場合，HADBサーバのチューニングを実施するときは，すべてのノードのHADBサーバに対して，それぞれチューニングを行ってください。

チューニングの内容については，「14.　チューニング」を参照してください。

18.16　プライマリノードまたはセカンダリノードでノード障害が発生した場合の運用（HAモニタありのマルチノード構成の場合）

プライマリノードまたはセカンダリノードでノード障害が発生した場合，障害が発生したノードはマルチノード構成から自動的に切り離され，残ったノードで業務が継続されます。ここでは，プライマリノードまたはセカンダリノードでノード障害が発生した場合の運用について説明します。

18.16.1　プライマリノードでノード障害が発生した場合

(1)　プライマリノードでノード障害が発生した場合のシステムの処理

プライマリノードでノード障害が発生した場合，セカンダリノードの1つがプライマリノードに切り替わり，障害が発生したプライマリノードはマルチノード構成から切り離されます。プライマリノードでノード障害が発生した場合のシステムの処理を次の図に示します。

図18‒9　プライマリノードでノード障害が発生した場合のシステムの処理

［説明］

プライマリノード（hadb01）でノード障害が発生した場合，セカンダリノードの1つをプライマリノードに切り替えて，障害が発生したノードはマルチノード構成から切り離されます。その後，プライマリノード（hadb02），セカンダリノード（hadb03），およびワーカーノード（hadb04，hadb05）で処理が継続されます。

なお，ワーカーノード（hadb04，hadb05）は，プライマリノードの切り替え先にはなりません。

HADBでは，HAモニタのマルチスタンバイ機能を使用して，プライマリノードを切り替えています。マルチスタンバイ機能とは，1つの実行系（プライマリノード）に対して，複数の待機系（セカンダリノード）を準備する機能のことです。セカンダリノードの優先順位（どのセカンダリノードがプライマリノードになるか）は，HAモニタのserversファイルのinitialおよびstandbypriオペランドで指定します。詳細については，マニュアルHAモニタ Linux(R)(x86)編のマルチスタンバイ機能を使用する場合のサーバと系の管理を参照してください。

(2)　ノード障害が発生したときのHADB管理者の対処

ノード障害の原因を特定するために，「15.1　障害発生時の対処の流れ」を参照して対処してください。そこで説明している手順を，ノード障害が発生したノードで実施してください。

また，障害が発生したノードで，次のトラブルシュート情報を取得してください。

HADBサーバのトラブルシュート情報をadbinfogetコマンドで取得してください。

HAモニタのトラブルシュート情報をHAモニタのmontsコマンドで取得してください。

障害の原因を対処したあとに，マルチノード構成から切り離されたノードをマルチノード構成に復帰させることができます。マルチノード構成への復帰手順については，「18.16.3　マルチノード構成へのノードの復帰」を参照してください。

なお，マルチノード構成に復帰させたノードは必ずセカンダリノードになります。

(3)　注意事項

マルチノード構成にセカンダリノードがない状態のときにプライマリノードでノード障害が発生した場合，切り替え先のノードがないため，マルチノード構成のHADBサーバは異常終了します。このとき，ノード障害が発生したプライマリノードでHAモニタのmonshowコマンドを実行し，自系のサーバの状態を確認してください。

自系のサーバの状態がONL（実行処理中）の場合は，HAモニタのmonendコマンドを実行し，HAモニタを終了してください。

メモ

ワーカーノードは，プライマリノードの切り替え先になりません。そのため，プライマリノードとワーカーノードだけの状態（セカンダリノードがない状態）のときに，プライマリノードでノード障害が発生した場合，ワーカーノードを含めたマルチノード構成のHADBサーバが異常終了します。

18.16.2　セカンダリノードでノード障害が発生した場合

(1)　セカンダリノードでノード障害が発生した場合のシステムの処理

セカンダリノードでノード障害が発生した場合，そのセカンダリノードはマルチノード構成から切り離されます。セカンダリノードでノード障害が発生した場合のシステムの処理を次の図に示します。

図18‒10　セカンダリノードでノード障害が発生した場合のシステムの処理

［説明］

セカンダリノード（hadb03）でノード障害が発生した場合，そのセカンダリノードをマルチノード構成から切り離します。その後，残った4つのノードで処理が継続されます。

(2)　ノード障害が発生したときのHADB管理者の対処

ノード障害の原因を特定するために，「15.1　障害発生時の対処の流れ」を参照して対処してください。そこで説明している手順を，ノード障害が発生したノードで実施してください。

また，障害が発生したノードで，次のトラブルシュート情報を取得してください。

HADBサーバのトラブルシュート情報をadbinfogetコマンドで取得してください。

HAモニタのトラブルシュート情報をHAモニタのmontsコマンドで取得してください。

障害の原因を対処したあとに，マルチノード構成から切り離されたノードをマルチノード構成に復帰させることができます。マルチノード構成への復帰手順については，「18.16.3　マルチノード構成へのノードの復帰」を参照してください。

なお，マルチノード構成に復帰させたノードは必ずセカンダリノードになります。

18.16.3　マルチノード構成へのノードの復帰

マルチノード構成から切り離されたノードを，マルチノード構成に復帰させる手順を説明します。

(1)　マルチノード構成にノードを復帰させる際の留意事項

サーバ定義の次のオペランドの指定値を変更することはできません。

adb_sys_rthd_num

また，全ノードで指定値を同じにする必要があるオペランド，およびプライマリノードとセカンダリノードで指定値を同じにする必要があるオペランドについても，指定値を変更することはできません。全ノードで指定値を同じにする必要があるオペランド，およびプライマリノードとセカンダリノードで指定値を同じにする必要があるオペランドについては，「18.4.5　各ノードでのサーバ定義の作成」の「(2)　全ノードで指定値を同じにする必要があるオペランド」および「(3)　プライマリノードとセカンダリノードで指定値を同じにする必要があるオペランド」を参照してください。

上記のオペランド以外についても，必要のない場合は指定値を変更しないでください。

次に示す条件を1つでも満たす場合は，マルチノード構成にノードを復帰させることはできません。次に示す処理の完了後にノードの復帰操作を実行してください。

マルチノード構成のHADBサーバの中に，終了処理中のHADBサーバが存在する場合

プライマリノードの切り替え処理中の場合

マルチノード構成に復帰処理中のノードが存在する場合

マルチノード構成に追加処理中のワーカーノードが存在する場合

HADBサーバに接続中のAPまたはコマンドが存在する場合

(2)　マルチノード構成にノードを復帰させる手順

マルチノード構成にノードを復帰させる手順を次に示します。

手順

HAモニタのmonshowコマンドを復帰対象のノードで実行する

HAモニタの監視が停止していることを確認してください。

重要

以降の手順は，HAモニタの監視が停止していることを確認してから実施してください。誤って，手順3.のadbstartコマンドを実行する前に，手順4.のHAモニタのmonbeginコマンドを実行してしまった場合は，HAモニタのmonendコマンドを実行してください（HAモニタの監視，および起動中のHADBサーバを停止してください）。そのあとに，マルチノード構成にノードを復帰させる手順を最初から実施してください。

adbchgsrvmode --maintenanceコマンドをプライマリノードで実行する

プライマリノードのHADBサーバの稼働モードをメンテナンスモードに変更してください。または，実行中のトランザクションが存在しない状態にしてください。

adbstartコマンドを復帰対象のノードで実行する

adbstartコマンドの実行後，HAモニタのmonbeginコマンドの実行を要求するKFAA91109-Iメッセージが出力されます。

HAモニタのmonbeginコマンドを復帰対象のノードで実行する

KFAA91109-Iメッセージの出力を確認したあとに，別のターミナル（コマンド入力画面）から，monbeginコマンドを実行してください。

重要

adbstartコマンドが終了する前に，monbeginコマンドを実行してください。

adbstartコマンドが正常終了すると，マルチノード構成へのノードの復帰処理が完了します。

adbchgsrvmode --normalコマンドをプライマリノードで実行する

手順2.で，プライマリノードのHADBサーバの稼働モードをメンテナンスモードに変更した場合は，稼働モードを通常モードに戻してください。

adbls -d nodeコマンドを任意のノードで実行する

コマンドの実行結果のNODE_TYPE欄を参照して，プライマリノードが1つ存在することを確認してください。もし，すべてのノードがセカンダリノードになっている場合は，プライマリノードにしたいノードでHAモニタのmonactコマンドを実行してください。monactコマンドを実行したノードがプライマリノードになります。

メモ

手順2.で，KFAA91109-Iメッセージの出力前にmonbeginコマンドを実行し，かつその瞬間にプライマリノードが停止した場合，すべてのノードがセカンダリノードになる可能性があります。

なお，マルチノード構成に復帰させたノードは必ずセカンダリノードになります。復帰させたノードをプライマリノードにしたい場合は，「(3)　復帰させたノードをプライマリノードに切り替える手順」を参照してください。

重要

同義語検索を行っている場合は，ノードを復帰したあとに同義語辞書ファイルの同期を取る必要があります。同義語辞書ファイルの同期を取る方法については，「18.28.5　同義語辞書ファイルの同期を取る」を参照してください。

メモ

監査証跡機能が有効な場合は，ノードの復帰が完了したあとに，そのノードでの監査証跡の出力が自動的に再開されます。監査証跡機能が無効な場合は，復帰対象ノードのHADBサーバが前回稼働時に監査証跡機能が有効であっても，監査証跡機能が無効な状態でマルチノード構成に復帰します。

(3)　復帰させたノードをプライマリノードに切り替える手順

復帰させたノードをプライマリノードに切り替える手順を説明します。系のリセットを使用している場合と，共有ディスクのSCSIリザーブを使用している場合とで手順が異なります。

手順（系のリセットを使用している場合）

マルチノード構成から切り離されていたノード（元のプライマリノード）を，マルチノード構成に復帰させる

マルチノード構成に復帰させたノードはセカンダリノードになります。

HAモニタのmonswapコマンドを現在のプライマリノードで実行する

現在のプライマリノードのHADBサーバは終了し，手順1.で復帰させたノードがプライマリノードに切り替わります。

adbls -d nodeコマンドを任意のノードで実行する

コマンドの実行結果のNODE_TYPE欄を参照して，プライマリノードが切り替わったことを確認してください。プライマリノードの切り替えが完了しないと，次の操作ができません。

手順2.で終了したノードをマルチノード構成に復帰させる

復帰手順については，「(2)　マルチノード構成にノードを復帰させる手順」を参照してください。

手順（共有ディスクのSCSIリザーブを使用している場合）

マルチノード構成から切り離されていたノード（元のプライマリノード）を，マルチノード構成に復帰させる

マルチノード構成に復帰させたノードはセカンダリノードになります。

adbstop --cancel --nodeコマンドをプライマリノードで実行する

プライマリノードが正常終了します。

HAモニタのmonswapコマンドを実行する

手順2.で終了したノードで上記のコマンドを実行すると，手順1.で復帰させたノードがプライマリノードに切り替わります。

adbls -d nodeコマンドを任意のノードで実行する

コマンドの実行結果のNODE_TYPE欄を参照して，プライマリノードが切り替わったことを確認してください。プライマリノードの切り替えが完了しないと，次の操作ができません。

手順2.で終了したノードをマルチノード構成に復帰させる

復帰手順については，「(2)　マルチノード構成にノードを復帰させる手順」を参照してください。

18.17　プライマリノードでノード障害が発生した場合の運用（HAモニタなしのマルチノード構成の場合）

プライマリノードでノード障害が発生してHADBサーバが異常終了した場合，マルチノード構成のHADBサーバが異常終了します。残ったワーカーノードで業務を継続することはできません。

「15.1　障害発生時の対処の流れ」を参照し，HADBサーバの異常終了の原因を特定して対処してください。また，プライマリノードでadbinfogetコマンドを実行してトラブルシュート情報を取得してください。

障害の原因を対処したあとに，マルチノード構成のHADBサーバを開始してください。

18.18　ワーカーノードでノード障害が発生した場合の運用（ワーカーノードの追加）

ワーカーノードでノード障害が発生してHADBサーバが異常終了した場合，そのワーカーノードはマルチノード構成から削除されます。ここでは，ワーカーノードでノード障害が発生した場合の運用について説明します。

18.18.1　ワーカーノードでノード障害が発生した場合

(1)　ワーカーノードでノード障害が発生した場合のシステムの処理

ワーカーノードでノード障害が発生してHADBサーバが異常終了した場合，そのワーカーノードはマルチノード構成から削除されます。ワーカーノードでノード障害が発生した場合のシステムの処理を次の図に示します。

図18‒11　ワーカーノードでノード障害が発生した場合のシステムの処理

注

上記は，HAモニタありのマルチノード構成のシステム構成例です。HAモニタなしのマルチノード構成の場合は，セカンダリノードをワーカーノードに読み替えてください。

［説明］

ワーカーノード（hadb05）でノード障害が発生した場合，ワーカーノード（hadb05）をマルチノード構成から削除します。その後，残った4つのノードで処理が継続されます。

(2)　ノード障害が発生したときのHADB管理者の対処

ノード障害の原因を特定するために，「15.1　障害発生時の対処の流れ」を参照して対処してください。そこで説明している手順を，ノード障害が発生したワーカーノードで実施してください。

また，障害が発生したワーカーノードで，次のトラブルシュート情報を取得してください。

HADBサーバのトラブルシュート情報をadbinfogetコマンドで取得してください。

障害の原因を対処したあとに，マルチノード構成から削除されたワーカーノードをマルチノード構成に再び追加することができます。マルチノード構成へのワーカーノードの追加手順については，「18.18.3　マルチノード構成から削除されたワーカーノードを再度追加する手順」を参照してください。

18.18.2　マルチノード構成から削除されたワーカーノードを再度追加する際の留意事項

全ノードで指定値を同じにする必要があるオペランドについては，指定値を変更することはできません。全ノードで指定値を同じにする必要があるオペランドについては，「18.4.5　各ノードでのサーバ定義の作成」の「(2)　全ノードで指定値を同じにする必要があるオペランド」を参照してください。

全ノードで指定値を同じにする必要があるオペランド以外についても，必要のない場合は指定値を変更しないでください。

次の条件を1つでも満たす場合は，マルチノード構成にワーカーノードを追加することはできません。次の条件に示す処理の完了後に，ワーカーノードの追加操作を実行してください。

プライマリノードおよびセカンダリノードのHADBサーバの中に，終了処理中のHADBサーバが存在する場合

プライマリノードの切り替え処理中の場合

マルチノード構成に復帰処理中のノードがある場合

adbmodareaコマンドの実行中の場合

adbupddmkコマンドの実行中の場合

サーバ定義のadb_sys_multi_max_worker_nodesオペランドに指定したワーカーノードの最大数を超える数のワーカーノードを追加することはできません。

次のトランザクションまたはコマンドをプライマリノードで実行している間は，ワーカーノードの追加処理は待ち状態になります。トランザクションまたはコマンドの処理が完了したあとに，ワーカーノードの追加処理が開始されます。

読み書き可能トランザクション

adbimportコマンド

adbidxrebuildコマンド

adbgetcstコマンド

adbmergechunkコマンド

adbchgchunkcommentコマンド

adbchgchunkstatusコマンド

adbarchivechunkコマンド

adbunarchivechunkコマンド

adbreorgsystemdataコマンド

adbsyndictコマンド

adbaudittrailコマンド（--swapオプションまたは-dオプションを指定した場合を除く）

adbcolumnizeコマンド

ワーカーノードの追加処理中は，次のトランザクションおよびコマンドの処理が待ち状態になります。ワーカーノードの追加処理が完了したあとに，トランザクションおよびコマンドの処理が開始されます。

読み書き可能トランザクション

adbimportコマンド

adbidxrebuildコマンド

adbgetcstコマンド

adbmergechunkコマンド

adbchgchunkcommentコマンド

adbchgchunkstatusコマンド

adbarchivechunkコマンド

adbunarchivechunkコマンド

adbreorgsystemdataコマンド

adbsyndictコマンド

adbaudittrailコマンド（--swapオプションまたは-dオプションを指定した場合を除く）

18.18.3　マルチノード構成から削除されたワーカーノードを再度追加する手順

マルチノード構成から削除されたワーカーノードを，マルチノード構成に再度追加する際の手順を次に示します。

クラウド環境のマルチノード構成の場合，インスタンスまたは仮想マシンを起動したあとに次の手順を実施してください。

手順

ワーカーノードのHADBサーバを開始する

次のコマンドを追加対象のワーカーノードで実行してください。

adbstart

ワーカーノードのHADBサーバの開始処理が完了すると，マルチノード構成にワーカーノードが追加されます。

重要

同義語検索を行っている場合は，ワーカーノードを追加したあとに同義語辞書ファイルの同期を取る必要があります。同義語辞書ファイルの同期を取る方法については，「18.28.5　同義語辞書ファイルの同期を取る」を参照してください。

18.19　トラブルシュート（マルチノード機能の使用時）

ここでは，マルチノード機能の使用時にトラブルが発生した場合の対処方法について説明します。

18.19.1　マルチノード構成のHADBサーバの開始または終了に関するトラブル

マルチノード構成のHADBサーバの開始または終了に関するトラブルが発生したときの対処方法について説明します。

(1)　マルチノード構成のHADBサーバを正常開始できない場合

出力されたメッセージの対処方法に従って原因を特定してください。そのあとに，マルチノード構成のHADBサーバを正常開始してください。

■原因がすぐに特定できないときの対処方法（HAモニタありのマルチノード構成の場合）

原因がすぐに特定できない場合は，障害が発生したプライマリノードまたはセカンダリノードをマルチノード構成から除外してから，マルチノード構成のHADBサーバを正常開始してください。障害が発生したプライマリノードまたはセカンダリノードをマルチノード構成から除外するには，全ノードのHADBサーバのサーバ定義adb_sys_multi_node_infoオペランドから，障害が発生したプライマリノードまたはセカンダリノードの指定を削除します。

なお，障害が発生していないノード（プライマリノードおよびセカンダリノード）が1台だけの場合は，そのノードのHADBサーバのサーバ定義adb_sys_multi_node_infoオペランドをコメントにしてください。そして，マルチノード機能を使用しないシステムとしてHADBサーバを開始してください。このとき，システムディレクトリが$DBDIR/ADBSYSにマウントされていることを確認してください。マウントされていない場合は，OSのmountコマンドを実行して，システムディレクトリを$DBDIR/ADBSYSにマウントしてください。

メモ

オペランドの指定行の先頭にシャープ（#）を記述すると，その行全体の指定がコメントになります。

また，障害が発生したノードがプライマリノードの場合は，次のどちらかの方法でプライマリノードを変更してください。

HAモニタの設定を変更してプライマリノードを変更する

マルチノード構成のHADBサーバの開始時に，monactコマンドを実行してセカンダリノードの1つをプライマリノードに変更する

代替マシンがある場合は，代替マシンの環境を，障害が発生したノードのマシンとまったく同じ環境に設定したあとに，マルチノード構成のHADBサーバを正常開始してください。

■原因がすぐに特定できないときの対処法法（HAモニタなしのマルチノード構成の場合）

原因がすぐに特定できない場合は，代替マシンを用意し，代替マシンの環境を障害が発生したプライマリノードのマシンとまったく同じ環境に設定してください。そのあとに，マルチノード構成のHADBサーバを正常開始してください。

■KFAA41205-Eメッセージが出力された場合

次に示す内容のKFAA41205-Eメッセージが出力された場合，DBエリアファイルのオープンに失敗しています。

ファイル名にDBエリアファイルへのシンボリックリンク名が表示されている

エラーとなったシステムコール名にopenが表示されている

エラー番号にENOENTが表示されている

セカンダリノードの新規追加前や，ワーカーノードの停止中にデータ用DBエリアを追加または拡張したため，このメッセージが出力されたノードのDBディレクトリが古い状態（データ用DBエリアを追加または拡張する前の状態）である可能性があります。

マルチノード構成のHADBサーバの開始時にこのメッセージが出力された場合は，このメッセージが出力されたセカンダリノードでadbinitコマンドを実行してDBディレクトリを再作成※してください。そのあとに，マルチノード構成のHADBサーバを正常開始してください。

マルチノード構成へのワーカーノードの追加時にこのメッセージが出力された場合は，このメッセージが出力されたワーカーノードでadbinitコマンドを実行してDBディレクトリを再作成※してください。そのあとに，adbstartコマンドでワーカーノードのHADBサーバを開始し，ワーカーノードをマルチノード構成に追加してください。

注※

DBディレクトリを再作成する際，ほかのノードで使用した初期設定オプションをそのまま使用できないことがあります。データ用DBエリアの追加または拡張をしている場合，その変更内容を初期設定オプションの指定に反映する必要があります。反映方法については，「18.20.2　セカンダリノードの新規追加時にadbinitコマンドを実行する際の留意事項」を参照してください。ワーカーノードのDBディレクトリを再作成する場合は，セカンダリノードをワーカーノードに読み替えてください。

(2)　マルチノード構成のHADBサーバを再開始できない場合

出力されたメッセージの対処方法に従って原因を特定してください。そのあとに，マルチノード構成のHADBサーバを再開始してください。

■原因がすぐに特定できないときの対処方法（HAモニタありのマルチノード構成の場合）

原因がすぐに特定できない場合は，障害が発生したプライマリノードまたはセカンダリノードをマルチノード構成から除外してから，マルチノード構成のHADBサーバを再開始してください。障害が発生したプライマリノードまたはセカンダリノードをマルチノード構成から除外するには，全ノードのHADBサーバのサーバ定義adb_sys_multi_node_infoオペランドから，障害が発生したプライマリノードまたはセカンダリノードの指定を削除します。

また，障害が発生したノードがプライマリノードの場合は，次のどちらかの方法でプライマリノードを変更してください。

HAモニタの設定を変更してプライマリノードを変更する

マルチノード構成のHADBサーバの開始時に，monactコマンドを実行してセカンダリノードの1つをプライマリノードに変更する

■原因がすぐに特定できないときの対処法法（HAモニタなしのマルチノード構成の場合）

原因がすぐに特定できない場合は，代替マシンを用意し，代替マシンの環境を障害が発生したプライマリノードのマシンとまったく同じ環境に設定してください。そのあとに，マルチノード構成のHADBサーバを正常開始してください。

■KFAA41205-Eメッセージが出力された場合

KFAA41205-Eメッセージが出力された場合の対処方法については，「(1)　マルチノード構成のHADBサーバを正常開始できない場合」の「■KFAA41205-Eメッセージが出力された場合」を参照してください。

(3)　マルチノード構成のHADBサーバを終了できない場合

APまたはコマンドがHADBサーバに接続中の場合は，マルチノード構成のHADBサーバを終了できません。APまたはコマンドの処理が終わるのを待ってください。早急に終了する必要がある場合は，マルチノード構成のHADBサーバを強制終了してください。マルチノード構成のHADBサーバを強制終了する方法については，「18.5.2　マルチノード構成のHADBサーバの終了方法」の「(1)　マルチノード構成のHADBサーバの終了手順」の「(b)　マルチノード構成のHADBサーバを強制終了させる場合」を参照してください。

HADBサーバに接続中のAPまたはコマンドがないのに，HAモニタありのマルチノード構成のHADBサーバを終了できない場合は，次の手順で終了してください。

手順（HAモニタありのマルチノード構成の場合）

プライマリノードでadbstop --forceコマンドを実行する

プライマリノードのHADBサーバが強制終了すると，プライマリノードの切り替えが発生します。

マルチノード構成のHADBサーバを正常終了する

マルチノード構成のHADBサーバを正常終了する方法については，「18.5.2　マルチノード構成のHADBサーバの終了方法」の「(1)　マルチノード構成のHADBサーバの終了手順」の「(a)　マルチノード構成のHADBサーバを正常終了させる場合」を参照してください。

上記の方法でも，HAモニタありのマルチノード構成のHADBサーバが終了できない場合は，すべてのノードでadbstop --forceコマンドを実行し，マルチノード構成のHADBサーバを強制終了してください。

18.19.2　APに関するトラブル（マルチノード機能の使用時）

APに関するトラブルが発生した場合，最初に「16.1　APに関するトラブル」を参照して対処してください。対処できない場合に，ここの説明をお読みください。

(1)　APが実行できない場合の対処方法

APが実行できない場合の考えられる原因と対処方法を次の表に示します。

表18‒12　APが実行できない場合の考えられる原因と対処方法

項番

考えられる原因

対処方法

1

HAモニタありのマルチノード構成の場合

接続先のホスト名が，HADBクライアントとHADBサーバ間の通信で使用するエイリアスIPアドレスに対応するホスト名でない可能性があります。

HADBクライアントとHADBサーバ間の通信で使用しているエイリアスIPアドレスに対応するホスト名を指定しているか，確認してください。

クライアント定義など，APの接続先のホスト名を指定している個所を確認して修正してください。

2

HAモニタなしのマルチノード構成の場合

接続先のホスト名が，HADBクライアントとHADBサーバ間の通信で使用するプライマリノードのIPアドレスに対応するホスト名ではない可能性があります。

HADBクライアントとHADBサーバ間の通信で使用しているプライマリノードのIPアドレスに対応するホスト名を指定しているか，確認してください。

クライアント定義など，APの接続先のホスト名を指定している個所を確認して修正してください。

3

APの同時実行数が，マルチノード構成のHADBサーバの最大同時接続数を超えている可能性があります。

手順

マルチノード構成のHADBサーバを終了してください。

サーバ定義のadb_sys_max_usersオペランドの指定値を大きくしてください。

マルチノード構成のHADBサーバを開始してください。

18.19.3　コマンドに関するトラブル（マルチノード機能の使用時）

コマンドに関するトラブルが発生した場合，最初に「16.2　コマンドに関するトラブル」を参照して対処してください。対処できない場合に，ここの説明をお読みください。

(1)　コマンドが実行できない場合の対処方法（KFAA31733-Eメッセージが出力された場合）

プライマリノードの切り替えが発生した場合，プライマリノードで実行されていた更新処理に対する回復処理（ロールバック）が，新しくプライマリノードになるセカンダリノードで実行されます。その回復処理中のページにコマンドがアクセスすると，コマンドがエラーになります。このとき，KFAA31733-Eメッセージが出力されます。この場合，メッセージに記載されている対処方法に従ってください。

(2)　コマンドが実行できない場合の対処方法（KFAA50036-Eメッセージが出力された場合）

セカンダリノードまたはワーカーノードで実行できないコマンドを，セカンダリノードまたはワーカーノードで実行しようとしました。プライマリノードでコマンドを実行してください。

18.19.4　DBエリアに関するトラブル（マルチノード機能の使用時）

データ用DBエリアに関するトラブルが発生したときの対処方法について説明します。

(1)　データ用DBエリアが満杯になった場合

データ用DBエリアを拡張してください。拡張方法については，「18.11.3　データ用DBエリアの追加・削除・拡張（マルチノード機能の使用時）」の「(3)　データ用DBエリアを拡張する方法（データ用DBエリアファイルの追加）」を参照してください。

18.19.5　DBディレクトリのファイルに関するトラブル（マルチノード機能の使用時）

DBディレクトリ下のファイルにトラブルが発生したときの対処方法について説明します。

(1)　システムログファイルに障害が発生したときの対処方法

出力されたメッセージの対処に従ってください。

また，システムディレクトリのファイルシステムが$DBDIR/ADBSYSにマウントされているかどうかを確認してください。

「16.5.2　システムログファイルでトラブルが発生した場合の対処」もあわせて参照してください。

(2)　システムログファイルの容量不足によって，HADBサーバが異常終了したときの対処方法

出力されたメッセージの対処に従ってください。

また，「16.5.2　システムログファイルでトラブルが発生した場合の対処」もあわせて参照してください。

18.19.6　サーバディレクトリ（インストール時）のファイルに関するトラブル（マルチノード機能の使用時）

出力されたメッセージの対策欄の説明に従ってください。

■クラウド環境のマルチノード構成の場合

ディスク障害などでインストールデータを格納するディレクトリを回復する必要が発生した場合は，HADBサーバを再インストールして環境設定を行ってください。HADBサーバのインストールおよび環境設定については，「18.34.4　AWS環境でのマルチノード構成の構築」または「18.35.3　Azure環境でのマルチノード構成の構築」を参照してください。

18.19.7　サーバディレクトリ（運用時）のファイルに関するトラブル（マルチノード機能の使用時）

サーバディレクトリ下のファイルにトラブルが発生したときの対処方法について説明します。

(1)　サーバディレクトリに障害が発生したときの対処方法

サーバディレクトリに障害が発生したときの対処方法については，「16.4.2　サーバディレクトリの回復」を参照してください。

(2)　サーバ定義ファイルに障害が発生したときの対処方法

サーバ定義ファイルに障害が発生したときの対処方法については，出力されたメッセージの対策欄の説明に従ってください。

(3)　メッセージログファイルに障害が発生したときの対処方法

メッセージログファイルに障害が発生したときの対処方法については，出力されたメッセージの対策欄の説明に従ってください。

18.19.8　クライアントディレクトリのファイルに関するトラブル（マルチノード機能の使用時）

クライアントディレクトリの回復方法については，「16.4.3　クライアントディレクトリの回復」を参照してください。

18.19.9　OSに関するトラブル（マルチノード機能の使用時）

セカンダリノードのOSが異常終了した場合，そのセカンダリノードはマルチノード構成から切り離されます。

HAモニタありのマルチノード構成でプライマリノードのOSが異常終了した場合，プライマリノードの切り替えが発生します。OSが異常終了したプライマリノードは，マルチノード構成から切り離されます。

HAモニタなしのマルチノード構成でプライマリノードのOSが異常終了した場合，プライマリノードのHADBサーバが異常終了するため，マルチノード構成のHADBサーバが異常終了します。

ワーカーノードのOSが異常終了した場合，そのワーカーノードはマルチノード構成から削除されます。

OSのリブート後，障害を対処してください。

18.19.10　ハードウェアに関するトラブル（マルチノード機能の使用時）

ハードウェアに関するトラブルが発生したときの対処方法を説明します。

(1)　ディスク障害が発生したときの対処方法

ディスク障害が発生したときの対処方法については，「16.4　ディスクに関するトラブル」を参照してください。

(2)　ディスクが満杯になったときの対処方法

(a)　DBエリアファイルが原因の場合

DBエリアファイルの容量増加によってディスクが満杯になった場合は，次の個所を参照して対処してください。

「16.3.1　DBエリアファイルの容量増加が原因の場合」

「16.3.2　DBエリアの自動増分の失敗が原因の場合」

(b)　DBエリアファイル以外が原因の場合

システムログファイルまたはステータスファイルが原因の場合

「16.3.3　DBエリアファイル以外のファイルの容量増加が原因の場合」の「(1)　DBディレクトリ下の実体ファイルが原因の場合」を参照して対処してください。

システムログファイルまたはステータスファイル以外のファイルが原因の場合

「16.3.3　DBエリアファイル以外のファイルの容量増加が原因の場合」の「(2)　シンボリックリンクしているファイルが原因の場合」を参照して対処してください。

(3)　通信障害，CPU障害，または電源障害が発生したときの対処方法

通信障害，CPU障害，または電源障害が発生したときの対処方法について説明します。

(a)　HADBクライアントとプライマリノードのHADBサーバ間で通信障害が発生した場合

この場合，該当するトランザクションが，通信障害が発生した旨のエラーリターンします。対処手順を次に示します。

手順（HAモニタありのマルチノード構成の場合）

通信障害が発生したプライマリノードをマルチノード構成から切り離す

コマンドを実行してプライマリノードを切り替えてください。通信障害が発生したプライマリノードは，マルチノード構成から切り離されます。コマンドによるプライマリノードの切り替え方法については，「18.8　コマンドによるプライマリノードの切り替え」を参照してください。

通信障害の原因を調査して対策する

手順1.で切り離したノードをマルチノード構成に復帰させる

マルチノード構成に復帰させる方法については，「18.16.3　マルチノード構成へのノードの復帰」を参照してください。

手順（HAモニタなしのマルチノード構成の場合）

マルチノード構成のHADBサーバを終了する

プライマリノードでadbstopコマンドを実行すると，全ノードのHADBサーバが正常終了します。

通信障害の原因を調査して対策する

マルチノード構成のHADBサーバを開始する

プライマリノードでadbstartコマンドを実行します。

マルチノード構成にワーカーノードを追加する

ワーカーノードでadbstartコマンドを実行します。

(b)　HADBクライアントとセカンダリノードまたはワーカーノードのHADBサーバ間で通信障害が発生した場合

この場合，該当するトランザクションが，通信障害が発生した旨のエラーリターンします。

通信障害の原因を調査してください。すぐに対処できない場合は，障害が発生したセカンダリノードまたはワーカーノードのHADBサーバを終了してください。

(c)　ノード間で通信障害が発生した場合

ノード間で通信障害が発生した場合の対処方法を説明します。

■HAモニタありのマルチノード構成の場合

プライマリノードまたはセカンダリノードで通信障害が発生した場合

系のリセットを使用している場合，共有ディスクのSCSIリザーブを使用している場合，またはクラウド環境のマルチノード構成の場合で対処方法が異なります。

系のリセットを使用している場合

ノード間で通信障害が発生した場合，HAモニタはノード障害が発生したと判断します。このとき，マルチノード構成から切り離されるノードをHAモニタが決定します。切り離されるノードにプライマリノードが含まれている場合，プライマリノードの切り替えが発生します。

なお，マルチノード構成から切り離されたノードのサーバマシンは，HAモニタによって停止されます（サーバマシンの電源断となります）。サーバマシンが停止しなかった場合は，HAモニタのmonswapコマンドを実行したあとに，サーバマシンを手動で停止してください。

そのあと，サーバマシンを再起動し，通信障害の原因を調査して対策してください。

対策後，必要に応じて，そのノードをマルチノード構成に復帰させてください。マルチノード構成に復帰させる方法については，「18.16.3　マルチノード構成へのノードの復帰」を参照してください。

共有ディスクのSCSIリザーブを使用している場合

ノード間で通信障害が発生した場合，HAモニタはノード障害が発生したと判断します。このとき，マルチノード構成から切り離されるノードをHAモニタが決定します。切り離されるノードにプライマリノードが含まれている場合，プライマリノードの切り替えが発生します。なお，マルチノード構成から切り離されたノードのサーバマシンは，停止しません。

この場合，通信障害の原因を調査して対策してください。対策後，必要に応じて，そのノードをマルチノード構成に復帰させてください。マルチノード構成に復帰させる方法については，「18.16.3　マルチノード構成へのノードの復帰」を参照してください。

なお，HAモニタの監視パスに障害が発生した場合，HAモニタのmonlinkコマンドを実行して，監視パスを復旧する必要があります。対処方法の詳細については，マニュアルHAモニタ Linux(R)(x86)編の障害発生による系切り替え時の運用を参照してください。

クラウド環境のマルチノード構成の場合

ノード間で通信障害が発生した場合，HAモニタは系障害が発生したと判断します。このとき，マルチノード構成から切り離されるノードをHAモニタが決定します。切り離されるノードにプライマリノードが含まれている場合，プライマリノードの切り替えが発生します。

なお，通信障害が発生したノードのインスタンスは，HAモニタによって強制停止されます。インスタンスが停止しない場合は，HAモニタのmonswapコマンドを実行したあとに，インスタンスを手動で停止してください。

そのあと，インスタンスを再起動し，通信障害の原因を調査して対策してください。

対策後，必要に応じて，そのノードをマルチノード構成に復帰させてください。マルチノード構成に復帰させる方法については，「18.16.3　マルチノード構成へのノードの復帰」を参照してください。

メモ

Azure環境の場合は，インスタンスを仮想マシンと読み替えてください。

ワーカーノードで通信障害が発生した場合

ワーカーノードとほかのノードの間で通信障害が発生した場合，マルチノード構成からそのワーカーノードが削除されます。

通信障害の原因を調査して対策したあとに，ワーカーノードでadbstartコマンドを実行し，ワーカーノードをマルチノード構成に追加してください。

■HAモニタなしのマルチノード構成の場合

プライマリノードとワーカーノードの間で通信障害が発生した場合，マルチノード構成からそのワーカーノードが削除されます。

通信障害の原因を調査して対策したあとに，ワーカーノードでadbstartコマンドを実行し，ワーカーノードをマルチノード構成に追加してください。

(d)　CPU障害が発生した場合

■プライマリノードまたはセカンダリノードでCPU障害が発生した場合

HAモニタありのマルチノード構成の場合

プライマリノードでCPU障害が発生した場合，プライマリノードの切り替えが発生します。CPU障害が発生したプライマリノードは，マルチノード構成から切り離されます。

セカンダリノードでCPU障害が発生した場合，そのセカンダリノードはマルチノード構成から切り離されます。

OSのリブート後，原因を調査して対策してください。対策後，切り離されたノードをマルチノード構成に復帰させてください。マルチノード構成に復帰させる方法については，「18.16.3　マルチノード構成へのノードの復帰」を参照してください。

HAモニタなしのマルチノード構成の場合

プライマリノードでCPU障害が発生してプライマリノードのHADBサーバが異常終了した場合，マルチノード構成のHADBサーバが異常終了します。

OSのリブート後，原因を調査して対策してください。対策後，マルチノード構成のHADBサーバを開始してください。

■ワーカーノードでCPU障害が発生した場合

ワーカーノードでCPU障害が発生した場合，そのワーカーノードはマルチノード構成から削除されます。

OSのリブート後，原因を調査して対策してください。対策後，ワーカーノードでadbstartコマンドを実行し，ワーカーノードをマルチノード構成に追加してください。

(e)　電源障害が発生した場合

■プライマリノードまたはセカンダリノードで電源障害が発生した場合

HAモニタありのマルチノード構成の場合

プライマリノードで電源障害が発生した場合，プライマリノードの切り替えが発生します。電源障害が発生したプライマリノードは，マルチノード構成から切り離されます。

セカンダリノードで電源障害が発生した場合，そのセカンダリノードはマルチノード構成から切り離されます。

OSのリブート後，原因を調査して対策してください。対策後，切り離されたノードをマルチノード構成に復帰させてください。マルチノード構成に復帰させる方法については，「18.16.3　マルチノード構成へのノードの復帰」を参照してください。

HAモニタなしのマルチノード構成の場合

プライマリノードで電源障害が発生してプライマリノードのHADBサーバが異常終了した場合，マルチノード構成のHADBサーバが異常終了します。

OSのリブート後，原因を調査して対策してください。対策後，マルチノード構成のHADBサーバを開始してください。

■ワーカーノードで電源障害が発生した場合

ワーカーノードで電源障害が発生した場合，そのワーカーノードはマルチノード構成から削除されます。

OSのリブート後，原因を調査して対策してください。対策後，ワーカーノードでadbstartコマンドを実行し，ワーカーノードをマルチノード構成に追加してください。

18.19.11　HAモニタに関するトラブル（マルチノード機能の使用時）

HAモニタに関するトラブルが発生した場合は，マニュアルHAモニタ Linux(R)(x86)編を参照して対処してください。

18.19.12　作業表を作成するSQL文に関するトラブル（マルチノード機能の使用時）

HADBサーバが異常終了したときに実行していたSQL文が，作業表を作成するSQL文の場合は，作業表用DBエリアファイルが使用するディスクを，複数のノードで共有して使用していないことを確認してください。作業表用DBエリアファイルが使用するディスクを，複数のノードで共有して使用していた場合，HADBサーバはその動作を保証しません。この場合，不正な検索結果が表示されたり，HADBサーバが異常終了したりするおそれがあります。

作業表用DBエリアファイルとして使用するディスクを，複数のノードで共有して使用していた場合は，次に示す手順で対処してください。

手順

マルチノード構成のHADBサーバを終了させてください。

各ノードに対して，作業表用DBエリアファイルが使用するディスクを準備してください。

各ノードのサーバ定義adb_blk_path_wrkオペランドに対して，手順2.で準備したディスクのパスを指定してください。

マルチノード構成のHADBサーバを再度開始してください。

メモ

実行したSQL文が作業表を作成するSQL文かどうかは，マニュアルHADB　AP開発ガイドの作業表が作成されるSQLを実行する際の考慮点を参照してください。

18.19.13　同義語辞書ファイルに関するトラブル（マルチノード機能の使用時）

ここでは，同義語辞書ファイルに対して発生したトラブルの対処方法について説明します。

(1)　マルチノード機能で使用する同義語辞書ファイルに障害が発生したときの対処方法

マルチノード機能で使用する同義語辞書ファイルに障害が発生した場合は，次の方法で対処してください。

メモ

マルチノード機能で使用する同義語辞書ファイルは，サーバ定義のadb_syndict_node_storage_pathオペランドに指定したディレクトリ下に格納されています。

対処方法1

同義語辞書ファイルに障害が発生した場合，障害が発生したセカンダリノードまたはワーカーノードのメッセージログファイルに次のメッセージが出力されます。

KFAA30959-E

KFAA34008-E

KFAA51537-W

上記のメッセージの対策欄に記載されている対処方法に従ってください。上記のメッセージの対策欄に記載されている対処方法に従っても問題が解決しない場合，またはその対処方法が実行できない場合は，対処方法2を実施してください。

対処方法2

障害が発生した同義語辞書ファイルを削除してください。そのあとに，adbsyndictコマンドを実行して，同義語辞書ファイルの同期を取ってください。同義語辞書ファイルの同期を取る方法については，「18.28.5　同義語辞書ファイルの同期を取る」を参照してください。

(2)　マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリの空き容量が不足したときの対処方法

マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリの空き容量不足が原因で，adbsyndictコマンドが異常終了した場合，次のメッセージが出力されます。

プライマリノードにKFAA51519-Eメッセージが出力されます。

容量不足が発生したノードにKFAA51514-Eメッセージが出力されます。

KFAA51514-Eメッセージに出力される操作対象の情報がsynonym-dictionary-fileで，かつエラー番号が28（ENOSPC）の場合，同義語辞書ファイルの格納ディレクトリの空き容量が不足していると考えられます。この場合，まずは対処方法1を実施してください。対処方法1が実施できない場合，または対処方法1を実施しても容量不足が発生する場合は，対処方法2を実施してください。

メモ

マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリは，サーバ定義のadb_syndict_node_storage_pathオペランドに指定したディレクトリのことです。

対処方法1

adbsyndictコマンドの実行時，複数の同義語辞書を一度に更新している場合は，同義語辞書を1つずつ更新してください。一度に更新する同義語辞書の数を減らすと，同義語辞書ファイルの格納ディレクトリに必要な空き容量が少なく済むため，adbsyndictコマンドを実行できることがあります。

対処方法2

容量の大きい別のディスク上に，マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリを作成し直してください。手順を次に示します。

手順

容量の大きいディスクに，マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリを新たに作成してください。ディレクトリの作成方法については，「18.28.1　同義語検索を行うための準備をする」の「(6)　マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリを作成する」を参照してください。

容量不足が発生したノードのHADBサーバを正常終了してください。特定のノードのHADBサーバを正常終了させる方法については，「18.5.2　マルチノード構成のHADBサーバの終了方法」の「(2)　特定のノードのHADBサーバの終了手順」を参照してください。

HAモニタなしのマルチノード構成のプライマリノードで容量不足が発生した場合は，マルチノード構成のHADBサーバを正常終了してください。

HADBサーバを正常終了したノードのサーバ定義のadb_syndict_node_storage_pathオペランドの指定を変更してください。手順の1.で作成したディレクトリを指定します。

手順の2.で正常終了したHADBサーバを正常開始してください。

手順の2.で，プライマリノードまたはセカンダリノードのHADBサーバを正常終了した場合

マルチノード構成にノードを復帰させてください。復帰手順については，「18.16.3　マルチノード構成へのノードの復帰」を参照してください。

手順の2.で，ワーカーノードのHADBサーバを正常終了した場合

ワーカーノードでadbstartコマンドを実行して，マルチノード構成にワーカーノードを追加してください。

手順の2.で，HAモニタなしのマルチノード構成のHADBサーバを正常終了した場合

マルチノード構成のHADBサーバを正常開始してださい。

adbsyndictコマンドを実行して，同義語辞書ファイルの同期を取ってください。同義語辞書ファイルの同期を取る方法については，「18.28.5　同義語辞書ファイルの同期を取る」を参照してください。

変更前のマルチノード機能で使用する同義語辞書ファイルの格納ディレクトリを削除してください。

18.20　セカンダリノードの新規追加，または不要なセカンダリノードの削除

ここでは，サーバマシンの追加によるセカンダリノードの新規追加方法について説明します。また，不要となったセカンダリノードを削除する方法についても説明します。

18.20.1　セカンダリノードの新規追加

サーバマシンの追加によるセカンダリノードの新規追加手順を次に示します。

メモ

HAモニタなしのマルチノード構成の場合は，セカンダリノードを追加することはできません。

手順

サーバマシンを追加して，HADBサーバのインストールおよび環境設定を行う

HADBサーバのインストールおよび環境設定については，「18.4.2　HADBサーバのインストールおよび環境設定」を参照してください。

重要

AWS環境のマルチノード構成の場合は，インスタンスを追加して起動したあとにHADBサーバのインストールおよび環境設定をしてください。

Azure環境のマルチノード構成の場合は，仮想マシンを起動したあとにHADBサーバのインストールおよび環境設定をしてください。

adbinitコマンドを実行する前に，「18.20.2　セカンダリノードの新規追加時にadbinitコマンドを実行する際の留意事項」で説明している内容を確認してください。

マルチノード構成のHADBサーバを正常終了する

マルチノード構成のHADBサーバの正常終了手順については，「18.5.2　マルチノード構成のHADBサーバの終了方法」の「(1)　マルチノード構成のHADBサーバの終了手順」の「(a)　マルチノード構成のHADBサーバを正常終了させる場合」を参照してください。

HAモニタの定義を修正する

プライマリノードおよびセカンダリノードのHAモニタの定義に，追加するセカンダリノードの情報を指定します。

サーバ定義を修正する

全ノードのHADBサーバのサーバ定義adb_sys_multi_node_infoオペランドに，追加するセカンダリノードの情報を追加します。

マルチノード構成のHADBサーバを開始する

マルチノード構成のHADBサーバの開始手順については，「18.5.1　マルチノード構成のHADBサーバの開始方法」を参照してください。

重要

同義語検索を行っている場合，セカンダリノードを追加したあとに同義語辞書ファイルの同期を取る必要があります。同義語辞書ファイルの同期を取る方法については，「18.28.5　同義語辞書ファイルの同期を取る」を参照してください。

18.20.2　セカンダリノードの新規追加時にadbinitコマンドを実行する際の留意事項

セカンダリノードを新規に追加する場合，追加するセカンダリノードでadbinitコマンドを実行しますが，ほかのノードで使用した初期設定オプションをそのまま利用できないことがあります。DBエリアの構成を変更している場合，その変更内容を初期設定オプションの指定に反映して，adbinitコマンドを実行する必要があります。そのため，新規に追加するセカンダリノードで使用する初期設定オプションに，DBエリアの構成変更の差分情報を反映する必要があります。それができない場合は，ここで説明する手順に従って初期設定オプションを作成してください。

ここで説明する手順のおおまかな流れは，最初にコマンドを実行して，現在のDBエリアの情報をファイルに抽出します。そのファイルを編集して，初期設定オプションファイルを作成します。

重要

説明中の$DBDIRは，DBディレクトリを意味しています。実際にコマンドを実行する際は，DBディレクトリのパスを指定してください。

以降の手順は，プライマリノードで実行してください。

メモ

クラウドストレージ機能を使用している場合は，セカンダリノードまたはワーカーノードを新規に追加する際，以前セカンダリノードまたはワーカーノードでDBディレクトリを作成したときに使用した初期設定オプションをそのまま利用できます。これは，ノード間で共有するDBエリアがすべてクラウドストレージに集約されているためです。

そのため，初期設定オプションには，DBエリアの構成変更の差分を反映する必要はありません（以降で説明している作業をする必要はありません）。

(1)　初期設定オプションファイルの基を作成する

echo "set adb_init_mst_blk_path = ¥"$(ls -l $DBDIR/ADBMST ¥
| awk '{print $NF}')¥"" >adbinit.opt

上記のコマンドを実行し，初期設定オプションファイル（adbinit.optファイル）の基を作成してください。この例では，カレントディレクトリにadbinit.optファイルを作成しています。

上記のコマンドを実行すると，次に示すadbinit.optファイルが作成されます。

■この時点でのadbinit.optファイルの内容

set adb_init_mst_blk_path = "/dev/disk/by-id/wwn-0x60....93bc"

(2)　adbinit.optファイルにadbinitdbareaオペランドなどの情報を追加する

adbdbstatus -d used | grep -E "^Used" | awk -F',' '{print $3, $9}' | awk '!a[$0]++' ¥
| sed -e '1i set adb_init_dbarea_initialize = N' ¥
      -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

上記のadbdbstatusコマンドを実行すると，adbinitdbareaオペランドなどの情報が，(1)で作成したadbinit.optファイルに追加されます。上記のコマンドを実行すると，ある程度整った形でadbinit.optファイルが作成されるため，(3)以降でadbinit.optファイルを編集する手間が軽減できます。

■この時点でのadbinit.optファイルの内容

set adb_init_mst_blk_path = "/dev/disk/by-id/wwn-0x60....93bc"
set adb_init_dbarea_initialize = N                                             ...1
set adb_init_dic_blk_path = "/dev/disk/by-id/wwn-0x60....e259"                 ...2
set adb_init_stbl_blk_path = "/dev/disk/by-id/wwn-0x60....311b"                ...3
adbinitdbarea -n ¥"DBAREA1¥" -i 0K,x -v "/dev/disk/by-id/wwn-0x60....0000",¥   ...4
adbinitdbarea -n ¥"DBAREA1¥" -i 0K,x -v "/dev/disk/by-id/wwn-0x60....0001",¥   ...5
adbinitdbarea -n ¥"NEWAREA1¥" -i 0K,x -v "/dev/disk/by-id/wwn-0x60....0400",¥  ...6
adbinitdbarea -n ¥"NEWAREA1¥" -i 0K,x -v "/dev/disk/by-id/wwn-0x60....0401",¥  ...7
adbinitdbarea -n ¥"NEWAREA1¥" -i 0K,x -v "/dev/disk/by-id/wwn-0x60....0402",¥  ...8

上記の1〜8のオペランドが追加されます。

(3)　adbinit.optファイルの内容を修正する

adbinit.optファイルをテキストエディタで開いて，初期設定オプションの指定を修正してください。初期設定オプションの指定については，マニュアルHADB　コマンドリファレンスのadbinit（データベースの初期設定）のadbinitコマンドの指定形式の初期設定オプションの形式を参照してください。

この例の場合，adbinitdbareaオペランドのオプションの指定を修正する必要があります。

［説明］

adbinitdbareaオペランドの指定を次のように修正します。

adbinitdbareaオペランドの-nオプションのDBエリア名が重複している行がある場合

上記の図の1.〜3.を実施します。

adbinitdbareaオペランドの-nオプションのDBエリア名が重複している行がない場合

上記の図の1.および3.を実施します。

上記の図の番号と次の説明の番号が対応しています。

-iオプションのファイル数の指定値を，xから重複行の数に変更してください。この例の場合，2と3に変更します。

囲まれた個所の指定を削除してください。

各重複行の最終行の末尾の「,¥」を削除してください。

■adbinit.optファイルの修正後の内容

set adb_init_mst_blk_path = "/dev/disk/by-id/wwn-0x60....93bc"
set adb_init_dbarea_initialize = N
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"

上記の網掛け部分が修正されています。

(4)　DBディレクトリ直下のファイルを確認する

DBディレクトリのサブディレクトリに，DBエリアファイルのシンボリックリンクを格納している場合は，そのDBエリアの情報を指定しているadbinitdbareaオペランドに，-fオプションの指定を追加する必要があります。この場合は，以降の手順を実施してください。

ls $DBDIR

■実行結果の表示例

ADBDIC  ADBMST  ADBSTBL  ADBSYS  ADBWORK  ADBWRK  AREAS  DBAREA1  DBAREA1.00001  SPOOL

OSのlsコマンドで，DBディレクトリ直下のファイル一覧を表示してください。DBエリア名と同じ名称のファイルがあるかどうかを確認してください。

上記の例の場合，DBAREA1はありますが，NEWAREA1はありません。このため，NEWAREA1を指定しているadbinitdbareaオペランドに-fオプションを追加する必要があります。

(5)　NEWAREA1の格納ディレクトリを調査する

find $DBDIR -name NEWAREA1 2>/dev/null

上記のコマンドを実行して，DBエリアファイルNEWAREA1の，DBディレクトリ内の格納ディレクトリを調査します。

■実行結果の表示例

$DBDIR/AREAS/NEW/NEWAREA1      ...1
$DBDIR/AREAS/OLD/NEWAREA1      ...2

以降の説明で，1を1のファイル，2を2のファイルと表記します。

上記の例のように，パスは異なるが，同じファイル名が複数表示された場合は，OSのlsコマンドでリンク先を調査する必要があります。

(6)　1のファイルのリンク先を確認する

ls -l $DBDIR/AREAS/NEW/NEWAREA1* | sed -e 's/.* -> //g'

OSのls -lコマンドを実行して，1のファイルのリンク先を確認してください。

■実行結果の表示例

/dev/disk/by-id/wwn-0x60....0400
/dev/disk/by-id/wwn-0x60....0401
/dev/disk/by-id/wwn-0x60....0402

上記3つのリンク先が，adbinit.optファイルの内容と一致しています。

■adbinit.optファイルの内容

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"

(7)　2のファイルのリンク先を確認する

ls -l $DBDIR/AREAS/OLD/NEWAREA1* | sed -e 's/.* -> //g'

OSのls -lコマンドを実行して，2のファイルのリンク先を確認してください。

■実行結果の表示例

/dev/disk/by-id/wwn-0x60....a000

上記のリンク先は，adbinit.optファイルの内容と一致していません。

(8)　初期設定オプションの指定内容を修正する

(6)および(7)の確認結果から，1のファイルが該当することがわかりました。

1のファイルのパス名のうち，下記の下線部分を-fオプションに指定して追加してください。

$DBDIR/AREAS/NEW/NEWAREA1

上記の例の場合，次のように-fオプションを追加します。

-f ¥"AREAS/NEW/¥"

■adbinit.optファイルの修正後の内容

set adb_init_mst_blk_path = "/dev/disk/by-id/wwn-0x60....93bc"
set adb_init_dbarea_initialize = N
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"

上記の下線部分を追加します。

(9)　作業表用DBエリアに関するオペランドを追加する

次のオペランドを必要に応じて追加してください。

adb_init_wrk_page_size

adb_init_wrk_blk_path

adb_init_wrk_blk_pathオペランドには，ノードごとに割り当てる作業表用DBエリアファイルのブロックスペシャルファイル名を指定します。詳細については，「18.4.8　データベースの作成」の「(4)　セカンダリノードおよびワーカーノードでのDBディレクトリの作成」を参照してください。

以上で初期設定オプションの修正が完了しました。セカンダリノードを新規に追加する際，ここで作成した初期設定オプションを使用してadbinitコマンドを実行してください。

18.20.3　セカンダリノードの削除

不要となったセカンダリノードの削除手順を次に示します。

手順

マルチノード構成のHADBサーバを正常終了する

マルチノード構成のHADBサーバの正常終了手順については，「18.5.2　マルチノード構成のHADBサーバの終了方法」の「(1)　マルチノード構成のHADBサーバの終了手順」の「(a)　マルチノード構成のHADBサーバを正常終了させる場合」を参照してください。

サーバ定義を修正する

全ノードのHADBサーバのサーバ定義adb_sys_multi_node_infoオペランドから，削除するセカンダリノードの情報を削除します。

セカンダリノードの情報を削除する

プライマリノードおよびセカンダリノードのHAモニタの定義から，削除するセカンダリノードの情報を削除します。

マルチノード構成のHADBサーバを開始する

マルチノード構成のHADBサーバの開始手順については，「18.5.1　マルチノード構成のHADBサーバの開始方法」を参照してください。

重要

AWS環境のマルチノード構成の場合は，削除したセカンダリノードのインスタンスを削除してください。

Azure環境のマルチノード構成の場合は，削除したセカンダリノードの仮想マシンを終了してください。

18.21　ワーカーノードの新規追加，または不要となったワーカーノードの削除

ここでは，サーバマシンの追加によるワーカーノードの新規追加方法について説明します。また，不要となったワーカーノードを削除する方法についても説明します。

18.21.1　ワーカーノードの新規追加

サーバマシンの追加によるワーカーノードの新規追加手順を次に示します。

なお，次の手順を実施する前に，サーバ定義のadb_sys_multi_max_worker_nodesオペランドの指定値を確認してください。このオペランドの指定値を超える数のワーカーノードをマルチノード構成に追加することはできません。また，このオペランドの指定がない場合は，このオペランドを追加してください。このオペランドの指定値を変更する場合，またはこのオペランドを追加する場合は，マルチノード構成のHADBサーバをいったん終了してください。

手順

サーバマシンを追加して，HADBサーバのインストールおよび環境設定を行う

HADBサーバのインストールおよび環境設定については，「18.4.2　HADBサーバのインストールおよび環境設定」を参照してください。

重要

AWS環境のマルチノード構成の場合は，インスタンスを追加して起動したあとにHADBサーバのインストールおよび環境設定をしてください。

Azure環境のマルチノード構成の場合は，仮想マシンを起動したあとにHADBサーバのインストールおよび環境設定をしてください。

追加するワーカーノードのサーバ定義を作成する

ワーカーノードのサーバ定義には，adb_sys_multi_worker_node_infoオペランドを必ず指定してください。

ワーカーノードのサーバ定義の指定例については，「18.4.5　各ノードでのサーバ定義の作成」の「(10)　サーバ定義の指定例（HAモニタありのマルチノード構成の場合）」または「(11)　サーバ定義の指定例（HAモニタなしのマルチノード構成の場合）」を参照してください。

adbinitコマンドを実行して，追加するワーカーノードのDBディレクトリを作成する

重要

adbinitコマンドを実行する前に，「18.20.2　セカンダリノードの新規追加時にadbinitコマンドを実行する際の留意事項」で説明している内容を確認してください。その際，セカンダリノードをワーカーノードに読み替えてください。

adbstartコマンドを実行して，ワーカーノードのHADBサーバを開始する

adbstartコマンドが正常終了すると，マルチノード構成にワーカーノードが追加されます。

重要

同義語検索を行っている場合，ワーカーノードを追加したあとに同義語辞書ファイルの同期を取る必要があります。同義語辞書ファイルの同期を取る方法については，「18.28.5　同義語辞書ファイルの同期を取る」を参照してください。

18.21.2　不要となったワーカーノードの削除

不要となったワーカーノードの削除手順を次に示します。

手順

削除するワーカーノードでadbstop --nodeコマンドを実行する

ワーカーノードのHADBサーバが正常終了し，マルチノード構成からワーカーノードが削除されます。

重要

AWS環境のマルチノード構成の場合は，削除したワーカーノードのインスタンスを削除してください。

Azure環境のマルチノード構成の場合は，削除したワーカーノードの仮想マシンを終了してください。

18.22　サーバマシンのOSのホスト名・IPアドレスの変更（マルチノード機能使用時）

ここでは，マルチノード機能を使用している場合に，HADBサーバがインストールされているサーバマシンのOSのホスト名またはIPアドレスを変更する場合の手順について説明します。

■マルチノード構成のHADBサーバで実施する作業

サーバマシンのOSのホスト名またはIPアドレスを変更する場合に，マルチノード構成のHADBサーバで実施する作業を次に示します。

マルチノード構成のHADBサーバを正常終了する

全ノードのHADBサーバを正常終了してください。終了方法については，「18.5.2　マルチノード構成のHADBサーバの終了方法」の「(1)　マルチノード構成のHADBサーバの終了手順」の「(a)　マルチノード構成のHADBサーバを正常終了させる場合」を参照してください。

HAモニタありのマルチノード構成の場合は，プライマリノードおよびセカンダリノードのHAモニタについても，monstopコマンドで正常停止してください。

プライマリノードおよびセカンダリノードのHAモニタの設定を変更する

「18.4.4　HAモニタの環境設定」を参照して，プライマリノードおよびセカンダリノードのHAモニタの設定を変更してください。

HAモニタの監視パスとして使用するLANのホスト名を変更する場合

HAモニタの環境設定ファイル（sysdefファイル）の設定を変更してください。

エイリアスIPアドレスを変更する場合

LAN接続時の状態設定ファイル（サーバ識別名.upファイル），およびLAN切り離し時の状態設定ファイル（サーバ識別名.downファイル）の設定を変更してください。

メモ

HAモニタなしのマルチノード構成の場合は，2.の操作を実施する必要はありません。

全ノードのサーバ定義を変更する

「18.4.5　各ノードでのサーバ定義の作成」を参照して，変更が必要なオペランドについて，全ノードのサーバ定義を変更してください。

マルチノード構成のHADBサーバを開始する

HAモニタありのマルチノード構成の場合

プライマリノードおよびセカンダリノードのHAモニタを，monstartコマンドで起動してください。そのあと，マルチノード構成のHADBサーバを開始してください。開始方法については，「18.5.1　マルチノード構成のHADBサーバの開始方法」を参照してください。

HAモニタなしのマルチノード構成の場合

マルチノード構成のHADBサーバを開始してください。開始方法については，「18.5.1　マルチノード構成のHADBサーバの開始方法」を参照してください。

■HADBクライアントで実施する作業

サーバマシンのOSのホスト名またはIPアドレスを変更する場合に，HADBクライアントで実施する作業を次に示します。HADBクライアントとHADBサーバ間の通信で使用するエイリアスIPアドレス※を変更する場合に実施してください。

注※

HAモニタなしのマルチノード構成の場合は，エイリアスIPアドレスではなく，HADBクライアントとHADBサーバ間の通信で使用するプライマリノードのIPアドレスになります。

APを停止する

マルチノード構成のHADBサーバに接続するAPをすべて停止してください。

クライアント定義に指定しているエイリアスIPアドレスを変更する

HADBクライアントとHADBサーバ間の通信で使用するエイリアスIPアドレスを変更する場合は，「18.4.6　クライアント定義の作成」を参照して，クライアント定義adb_clt_rpc_srv_hostオペランドの値を変更してください。

クライアント定義adb_clt_rpc_srv_hostオペランドについては，マニュアルHADB　AP開発ガイドのクライアント定義の設計のクライアント定義のオペランドの内容を参照してください。

JDBCドライバを使用している場合

クライアント定義adb_clt_rpc_srv_hostオペランドに対応するプロパティで指定しているHADBサーバのホスト名またはIPアドレスを変更してください。JDBCドライバで使用するプロパティは，システムプロパティ，ユーザプロパティ，または接続用のURLのプロパティがあります。詳細については，マニュアルHADB　AP開発ガイドのJDBCドライバの環境設定を参照してください。

ODBCドライバまたはCLI関数を使用している場合

クライアント定義adb_clt_rpc_srv_hostオペランドに指定しているHADBサーバのホスト名またはIPアドレスを変更してください。詳細については，マニュアルHADB　AP開発ガイドのHADBクライアントの環境設定（ODBCドライバおよびCLI関数を使用する場合）を参照してください。

APを開始する

マルチノード構成のHADBサーバに接続するAPを開始してください。

重要

マルチノード機能を使用していない場合は，「8.11　サーバマシンのOSのホスト名・IPアドレスの変更」を参照してください。

18.23　マルチノード機能を使用するシステムへの移行

ここでは，マルチノード機能を使用するシステムへの移行手順（HAモニタありのマルチノード構成への移行手順）を説明します。

＜移行の前提条件＞

移行前および移行後のシステムもオンプレミス環境であるとします。

移行後のシステムは，HAモニタありのマルチノード構成とします。

重要

移行を行う際は，以降の手順の説明にあるように，サーバディレクトリのバックアップ，およびDBディレクトリのバックアップを必ず取得してください。手順を誤ってHADBサーバが開始できなくなった場合，サーバディレクトリおよびDBディレクトリをバックアップから回復する必要があります。

18.23.1　HADBサーバを正常終了する

マルチノード機能を使用するシステムに移行する前に，HADBサーバを正常終了してください。

HADBサーバがすでに終了している場合は，次に示す2点を確認して，HADBサーバが正常終了していることを確認してください。

adbls -d srvコマンドの出力項目「STATUS」の表示がSTOPになっているかどうか

メッセージログファイルまたはsyslogに出力されているKFAA91154-Iメッセージの終了モードが，normally（正常終了）になっているかどうか

HADBサーバが正常終了していない場合は，adbstartコマンドを実行してHADBサーバを開始したあとで，adbstopコマンドを実行して正常終了させてください。

18.23.2　サーバディレクトリのバックアップを取得する

HADBサーバが異常終了している状態で，誤ってマルチノード機能を使用するシステムに移行してしまうと，HADBサーバを開始できなくなります。そのため，事前にサーバディレクトリ下のファイルのバックアップを取得してください。

取得したバックアップは，移行後のシステムでの動作確認後に削除してください。

18.23.3　DBディレクトリのバックアップを取得する

マルチノード機能を使用するシステムに移行する前には，必ずフルバックアップを取得してください。取得したフルバックアップは，移行後のシステムでの動作確認後に削除してください。

フルバックアップの取得方法については，「10.3.1　バックアップの取得方法」を参照してください。

18.23.4　HADBサーバをバージョンアップする

移行前のHADBサーバが，マルチノード機能がサポートされる前のバージョン（02-02以前）の場合は，マルチノード機能を使用するために，HADBサーバをバージョンアップしてください。

HADBサーバのバージョンアップは，マルチノード機能を使用するシステムに移行する前に必ず実施してください。誤って，バージョンアップを実施しないでHADBサーバのライブラリを入れ替えて，マルチノード機能を使用するシステムに移行してしまうと，HADBサーバを開始できません。

HADBサーバのバージョンアップについては，「8.6　HADBサーバのバージョンアップ」を参照してください。

18.23.5　HAモニタおよびHADBサーバをインストールする

プライマリノードおよびセカンダリノードのサーバマシンに，HAモニタをインストールしてください。また，全ノードのサーバマシンにHADBサーバをインストールしてください。HAモニタのインストールについては，マニュアルHAモニタ Linux(R)(x86)編のシステムの構築を，HADBサーバのインストールについては，「8.2　インストール」を参照してください。

メモ

ワーカーノードはHAモニタの管理対象外のため，ワーカーノードのサーバマシンにはHAモニタをインストールする必要はありません。

なお，HADBサーバをインストールする前に，各サーバマシンでカーネルパラメタおよび環境変数の設定を実施してください。

18.23.6　各ノードの設定をする

次のことを行ってください。

全ノードで環境変数の指定を変更する

詳細については，「18.4.2　HADBサーバのインストールおよび環境設定」を参照してください。

プライマリノードおよびセカンダリノードでHAモニタの環境設定をする

詳細については，「18.4.4　HAモニタの環境設定」を参照してください。

全ノードでサーバ定義を作成する

詳細については，「18.4.5　各ノードでのサーバ定義の作成」を参照してください。

クライアント定義を作成する

詳細については，「18.4.6　クライアント定義の作成」を参照してください。

18.23.7　DBディレクトリを準備する

次に示す手順に従って，DBディレクトリを準備します。

なお，移行前のHADBサーバで，作業表用DBエリアファイル以外のDBエリアファイルでレギュラーファイルを使用していた場合は，ブロックスペシャルファイルに変更する必要があります。変更方法については，「18.11.4　DBエリアの格納位置の変更」を参照してください。

システムディレクトリ用のファイルシステムを準備する

システムディレクトリとして使用するファイルシステムを準備します。システムディレクトリとして使用するファイルシステムについては，「18.2.4　ストレージ構成」の「(2)　ノード切り替え対象のファイルシステム」を参照してください。

同義語辞書ファイルを格納するファイルシステムを準備する

同義語辞書ファイルを格納するファイルシステムについては，「18.2.4　ストレージ構成」の「(2)　ノード切り替え対象のファイルシステム」を参照してください。

同義語検索を行っている場合に限り，この作業を実施してください。

追加したノードで使用する作業表用DBエリア用のディスクを準備する

ノードごとに，作業表用DBエリアとして使用するディスクを準備してください。作業表用DBエリアと使用するディスクについては，「18.2.4　ストレージ構成」の「(3)　DBエリアファイル用のディスク」を参照してください。

追加したノードでadbinitコマンドを実行する

追加したノードで，adbinitコマンドを実行してDBディレクトリを作成します。

このとき，次に示す点に留意してください。

初期設定オプションのadb_init_dbarea_initializeオペランドにNを指定し，DBディレクトリの枠組みだけを作成してください。

初期設定オプションのadb_init_wrk_blk_pathオペランドに指定するブロックスペシャルファイルのパスは，手順2.で準備した作業表用DBエリアとして使用するディスクを指定してください。

初期設定オプションのadb_init_mst_blk_pathオペランド，adb_init_dic_blk_pathオペランド，adb_init_stbl_blk_pathオペランド，およびadbinitdbareaに指定するブロックスペシャルファイルのパスは，移行前のHADBサーバで使用していたDBエリアファイルのブロックスペシャルファイルのパスを指定してください。

18.23.8　監査証跡機能を使用するための準備を行う

移行前のシステムで監査証跡機能を使用していた場合は，ここで説明する作業を実施してください。

監査証跡の出力先ディレクトリを作成するファイルシステムを準備する

監査証跡の出力先ディレクトリを作成するファイルシステムを，ノードごとに準備してください。監査証跡の出力先ディレクトリを作成するファイルシステムについては，「18.29.1　監査証跡機能の環境設定」を参照してください。

共有のファイルシステムに監査証跡の保存先ディレクトリを作成する

監査証跡を検索する際に使用するADB_AUDITREAD関数中に指定する監査証跡ファイルが，全ノードから同じ絶対パスで参照できるように環境を構築する必要があります。そのため，全ノードで共有のファイルシステムに監査証跡の保存先ディレクトリを作成してください。詳細については，「18.29.1　監査証跡機能の環境設定」を参照してください。

18.23.9　マルチノード構成のHADBサーバを開始する

マルチノード構成のHADBサーバを開始してください。開始方法については，「18.5.1　マルチノード構成のHADBサーバの開始方法」を参照してください。

18.23.10　同義語検索の準備を行う

移行前のシステムで同義語検索を行っていた場合は，ここで説明する作業を実施してください。

同義語辞書ファイルを再作成する

サーバ定義のadb_syndict_storage_pathオペランドの指定値を変更した場合は，すべての同義語辞書ファイルを再作成してください。同義語辞書ファイルを再作成する方法については，「16.14.3　同義語辞書ファイルまたは同義語辞書ファイルの格納ディレクトリを誤って削除してしまったときの対処方法」を参照してください。

なお，adb_syndict_storage_pathオペランドの指定に変更はなくても，ファイルシステム（ディスク）のマウントによって，同義語辞書ファイルの格納ディレクトリを作成したファイルシステムを変更した場合は，新しいディレクトリ下にすべての同義語辞書ファイルをコピーしてください。

同義語辞書ファイルの同期を取る

adbsyndictコマンドを実行して，同義語辞書ファイルの同期を取ってください。同義語辞書ファイルの同期を取る方法については，「18.28.5　同義語辞書ファイルの同期を取る」を参照してください。

18.24　HADBサーバのバージョンアップ（マルチノード機能の使用時）

マルチノード機能を使用しているHADBサーバをバージョンアップする場合は，「8.6　HADBサーバのバージョンアップ」を参照してください。

18.25　修正版HADBサーバとの入れ替え（マルチノード機能の使用時）

次に示すどちらかの方法で，修正版HADBサーバに入れ替えることができます。

マルチノード構成のHADBサーバを正常終了して入れ替えを実施する方法※

ノードごとに入れ替えを実施する方法

注※

HAモニタなしのマルチノード構成の場合は，こちらの方法で修正版HADBサーバに入れ替えてください。

18.25.1　マルチノード構成のHADBサーバを正常終了して入れ替えを実施する方法

マルチノード構成のHADBサーバを正常終了してから，修正版HADBサーバに入れ替える手順を次に示します。

手順

マルチノード構成のHADBサーバを正常終了する

マルチノード構成のHADBサーバを正常終了する手順については，「18.5.2　マルチノード構成のHADBサーバの終了方法」の「(1)　マルチノード構成のHADBサーバの終了手順」の「(a)　マルチノード構成のHADBサーバを正常終了させる場合」を参照してください。

修正版HADBサーバとの入れ替えを全ノードで実施する

修正版HADBサーバとの入れ替え方法については，「8.8　修正版HADBサーバとの入れ替え」を参照してください。

マルチノード構成のHADBサーバを正常開始する

マルチノード構成のHADBサーバを正常開始する手順については，「18.5.1　マルチノード構成のHADBサーバの開始方法」の「(1)　マルチノード構成のHADBサーバの開始手順」を参照してください。

18.25.2　ノードごとに入れ替えを実施する方法

ノードごとに修正版HADBサーバに入れ替える手順を次に示します。この方法の場合，マルチノード構成のHADBサーバを停止する必要がないため，業務を停止する必要がありません。

なお，入れ替えを実施するマルチノード構成は，次のとおりとします。

入れ替え作業の流れは，最初にプライマリノードで入れ替え作業を実施し，次にセカンダリノードで入れ替え作業を実施します。最後にワーカーノードで入れ替え作業を実施します。

手順

コマンドによるプライマリノードの切り替えを実施する

コマンドによるプライマリノードの切り替え方法については，「18.8　コマンドによるプライマリノードの切り替え」を参照してください。

プライマリノードの切り替えが完了すると，ノード1のHADBサーバが正常終了し，ノード2がプライマリノードになります。

修正版HADBサーバとの入れ替えをノード1で実施する

修正版HADBサーバとの入れ替え方法については，「8.8　修正版HADBサーバとの入れ替え」を参照してください。

ノード1をマルチノード構成に復帰させる

マルチノード構成への復帰方法については，「18.16.3　マルチノード構成へのノードの復帰」を参照してください。

ノード1は，セカンダリノードとしてマルチノード構成に復帰します。

コマンドによるプライマリノードの切り替えを実施する

コマンドによるプライマリノードの切り替え方法については，「18.8　コマンドによるプライマリノードの切り替え」を参照してください。

プライマリノードの切り替えが完了すると，ノード2のHADBサーバが正常終了し，ノード1がプライマリノードになります。

修正版HADBサーバとの入れ替えをノード2で実施する

修正版HADBサーバとの入れ替え方法については，「8.8　修正版HADBサーバとの入れ替え」を参照してください。

ノード2をマルチノード構成に復帰させる

マルチノード構成への復帰方法については，「18.16.3　マルチノード構成へのノードの復帰」を参照してください。

ノード2は，セカンダリノードとしてマルチノード構成に復帰します。

ノード3のHADBサーバを正常終了する

次のコマンドをノード3のセカンダリノードで実行してください。

adbstop --node

ノード3のセカンダリノードがマルチノード構成から切り離されます。

修正版HADBサーバとの入れ替えをノード3で実施する

修正版HADBサーバとの入れ替え方法については，「8.8　修正版HADBサーバとの入れ替え」を参照してください。

ノード3をマルチノード構成に復帰させる

マルチノード構成への復帰方法については，「18.16.3　マルチノード構成へのノードの復帰」を参照してください。

ノード3は，セカンダリノードとしてマルチノード構成に復帰します。

メモ

セカンダリノードが3つ以上ある場合は，上記の手順の7.〜9.を繰り返し実施してください。

ノード4のHADBサーバを正常終了する

次のコマンドをノード4のワーカーノードで実行してください。

adbstop --node

ノード4のワーカーノードがマルチノード構成から削除されます。

修正版HADBサーバとの入れ替えをノード4で実施する

修正版HADBサーバとの入れ替え方法については，「8.8　修正版HADBサーバとの入れ替え」を参照してください。

ノード4のワーカーノードをマルチノード構成に追加する

次のコマンドをノード4のワーカーノードで実行してください。

adbstart

ノード4のHADBサーバが開始し，ノード4のワーカーノードがマルチノード構成に追加されます。

メモ

ノード5のワーカーノードについても，上記の手順の10.〜12.を実施してください。

ワーカーノードの追加および削除は同時実行可能です。そのため，上記の手順の10.〜12.をノード4とノード5で同時実行しても問題ありません。

以上の手順で，修正版HADBサーバとの入れ替えが完了します。

■修正版HADBサーバとの入れ替えに失敗した場合

修正版HADBサーバとの入れ替えに失敗した場合は，次に示す手順で入れ替え前の状態に戻してください。この手順は，修正版HADBサーバとの入れ替えに失敗したすべてのノードで実施する必要があります。

手順

入れ替えに失敗したノードのHADBサーバを強制終了する

入れ替えに失敗したノードのHADBサーバが稼働中の場合は，adbstop --forceコマンドを実行してHADBサーバを強制終了してください。

修正版HADBサーバをアンインストールする

修正版との入れ替えに失敗したノードで，修正版HADBサーバをアンインストールしてください。

サーバディレクトリを回復する

入れ替え前に取得しておいた，サーバディレクトリのバックアップを使用して，サーバディレクトリを回復してください。

環境変数およびカーネルパラメタの指定値を元に戻す

環境変数およびカーネルパラメタの指定値を変更した場合は，変更前の指定値に戻してください。

ノードをマルチノード構成に復帰させる

手順4.までが完了したノードがプライマリノードまたはセカンダリノードの場合は，そのノードをマルチノード構成に復帰させます。マルチノード構成への復帰方法については，「18.16.3　マルチノード構成へのノードの復帰」を参照してください。

手順4.までが完了したノードがワーカーノードの場合は，そのワーカーノードをマルチノード構成に追加します。マルチノード構成へのワーカーノードの追加手順については，「18.18.3　マルチノード構成から削除されたワーカーノードを再度追加する手順」を参照してください。

コマンドによるプライマリノードの切り替えを実施する

プライマリノードを元のノードに戻したい場合は，コマンドによるプライマリノードの切り替えを実施してください。コマンドによるプライマリノードの切り替え方法については，「18.8　コマンドによるプライマリノードの切り替え」を参照してください。

マルチノード構成から切り離されたノードをマルチノード構成に復帰させる

手順6.でプライマリノードの切り替えを実施した結果，マルチノード構成から切り離されたノードを，マルチノード構成に復帰させてください。マルチノード構成への復帰方法については，「18.16.3　マルチノード構成へのノードの復帰」を参照してください。

18.26　SQLトレース機能を使用する際の留意事項（マルチノード機能使用時）

SQLトレース機能を使用する際の留意事項については，「10.11.11　マルチノード機能を使用している場合の留意事項」を参照してください。

18.27　外部データの検索（マルチノード機能使用時）

ここでは，マルチノード機能使用時の外部表を使用した外部データの検索方法と，表関数導出表を使用した外部データの検索方法について説明します。

18.27.1　外部表を使用した外部データの検索

外部表を使用して外部データを検索するときの運用については，「11.3　外部表の運用」を参照してください。ここでは，マルチノード機能使用時の留意事項について説明します。

外部データをファイルストレージに格納している場合，全ノードから外部データを参照できるようにしてください。また，外部データファイルの絶対パスが全ノードで同じになるようにしてください。

例えば，分散ファイルシステムの一つであるNFSを使用する場合は，次の手順で外部データファイルを格納するディレクトリを準備します。

手順

NFSサーバを用意し，NFSサーバ上で外部データファイルを格納するディレクトリを作成してください。

手順の1.で作成した外部データファイルを格納するディレクトリをエクスポートしてください。

この操作は，NFSサーバで実行します。

手順の2.でエクスポートしたディレクトリを，全ノードで同じパスとなるようにマウントしてください。

この操作は，全ノードで実行します。

NFSを使用したシステム構成例を次の図に示します。

図18‒12　NFSを使用したシステム構成例

注

上記は，HAモニタありのマルチノード構成のシステム構成例です。HAモニタなしのマルチノード構成の場合は，セカンダリノードをワーカーノードに読み替えてください。

18.27.2　表関数導出表を使用した外部データ（CSVファイル）の検索

表関数導出表を使用して外部データ（CSVファイル）を検索するときの運用については，「11.18　CSVファイル中のデータを検索するときの運用」を参照してください。ここでは，マルチノード機能使用時の留意事項について説明します。

マルチノード機能を使用している場合，全ノードからCSVファイルを参照できるようにしてください。また，CSVファイルの絶対パスが全ノードで同じになるようにしてください。

例えば，分散ファイルシステムの一つであるNFSを使用する場合は，次の手順でCSVファイルを格納するディレクトリを準備します。

手順

NFSサーバを用意し，NFSサーバ上でCSVファイルを格納するディレクトリを作成してください。

手順の1.で作成したCSVファイルを格納するディレクトリをエクスポートしてください。

この操作は，NFSサーバで実行します。

手順の2.でエクスポートしたディレクトリを，全ノードで同じパスとなるようにマウントしてください。

この操作は，全ノードで実行します。

NFSを使用したシステム構成例を次の図に示します。

図18‒13　NFSを使用したシステム構成例

注

上記は，HAモニタありのマルチノード構成のシステム構成例です。HAモニタなしのマルチノード構成の場合は，セカンダリノードをワーカーノードに読み替えてください。

18.28　同義語検索を行う際の運用（マルチノード機能使用時）

ここでは，同義語検索を行う際の準備作業と運用方法について説明します。

18.28.1　同義語検索を行うための準備をする

ここでは，同義語検索を行うときの準備作業について説明します。ここの説明は，すでにマルチノード機能を使用していることが前提となっています。

(1)　テキストインデクスの定義を検討する

同義語検索を行う場合，テキストインデクスを使用すると性能向上が見込まれるため，テキストデータ（文書データ）を格納している列にテキストインデクスを定義することを推奨します。詳細については，「11.19.1　同義語検索を行うための準備をする」の「(1)　テキストインデクスの定義を検討する」を参照してください。

(2)　同義語辞書ファイルの格納ディレクトリに必要な容量を見積もる

マルチノード機能の使用時に同義語検索を行う場合，HAモニタありのマルチノード構成のときは，ノード切り替え対象のファイルシステムに同義語辞書ファイルの格納ディレクトリを作成します。HAモニタなしのマルチノード構成のときは，プライマリノードのノードローカルのファイルシステムに同義語辞書ファイルの格納ディレクトリを作成します。

ファイルシステムを用意する前に次のことを実施してください。

同義語辞書ファイルの格納ディレクトリの容量見積もり

同義語辞書ファイルの格納ディレクトリの容量見積もりを実施し，その結果を考慮してファイルシステムを用意してください。同義語辞書ファイルの格納ディレクトリの容量見積もりについては，「11.19.1　同義語検索を行うための準備をする」の「(3)　同義語辞書ファイルの格納ディレクトリに必要な容量を見積もる」を参照してください。

重要

同義語辞書ファイルの格納ディレクトリの空き容量が不足した場合，同義語辞書ファイルの格納ディレクトリを変更する必要があります。同義語辞書ファイルの格納ディレクトリを変更した場合，すべての同義語辞書を再登録する必要があるため，ディレクトリを作成しているディスクの容量不足などが発生しないように，見積もりを行ってください。

メモ

同義語辞書ファイルの格納ディレクトリとは，サーバ定義のadb_syndict_storage_pathオペランドに指定するディレクトリのことです。

(3)　同義語辞書ファイルの格納ディレクトリを作成するファイルシステムを準備する

同義語辞書ファイルの格納ディレクトリは，ノード切り替え対象のファイルシステムに作成する必要があります。ノード切り替え対象のファイルシステムは，プライマリノードおよびセカンダリノードから参照可能なディスクで構成されるVG内のLV上に作成してください。共有ディスクについては，マニュアルHAモニタ Linux(R)(x86)編の共有ディスクの構成を参照してください。

メモ

HAモニタなしのマルチノード構成の場合は，ここで説明している作業を実施する必要はありません。

(4)　同義語辞書ファイルの格納ディレクトリを作成するファイルシステムを初期化する

同義語辞書ファイルの格納ディレクトリを作成するファイルシステムを初期化してください。同義語辞書ファイルの格納ディレクトリを作成するLVとして作成した/dev/vg_hadb02/hadb_syndictを，ext4のファイルシステムで初期化する場合の実行例を次に示します。

mkfs -t ext4 /dev/vg_hadb02/hadb_syndict

メモ

HAモニタなしのマルチノード構成の場合は，ここで説明している作業を実施する必要はありません。

(5)　同義語辞書ファイルの格納ディレクトリを作成する

ファイルシステムの準備が完了したあとに，同義語辞書ファイルの格納ディレクトリを作成し，作成したディレクトリに対する権限を付与してください。詳細については，「11.19.1　同義語検索を行うための準備をする」の「(4)　同義語辞書ファイルの格納ディレクトリを作成する」～「(5)　同義語辞書ファイルの格納ディレクトリに対する権限を付与する」を参照してください。

重要

同義語辞書ファイルの格納ディレクトリを削除しないでください。また，同義語辞書ファイルの格納ディレクトリ下のファイルを，adbsyndictコマンド以外で削除しないでください。削除した場合，同義語検索の実行がエラーになります。

同義語辞書ファイルの格納ディレクトリ下のファイルを，adbsyndictコマンド以外で更新しないでください。更新した場合，同義語検索の実行結果が不正となるか，または同義語検索の実行がエラーになります。

メモ

同義語辞書ファイルの格納ディレクトリはフルバックアップの対象になります。詳細については，「10.3.1　バックアップの取得方法」の「(2)　バックアップを取得する手順」を参照してください。

(6)　マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリを作成する

マルチノード機能の使用時に同義語検索を行う場合は，マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリを，ノードローカルのファイルシステムに作成してください。マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリは，全ノードで作成する必要があります。

メモ

マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリとは，サーバ定義のadb_syndict_node_storage_pathオペランドに指定するディレクトリのことです。

同義語検索を行うSQL文がセカンダリノードまたはワーカーノードで実行される場合，ここで作成したディレクトリ下にある同義語辞書ファイルが使用されます。adbsyndictコマンドによる同義語辞書の登録，変更，または削除をした際，プライマリノードの同義語辞書ファイルが自動的にセカンダリノードおよびワーカーノードにコピーされ，ここで作成したディレクトリ下に格納されます。

重要

セカンダリノードまたはワーカーノードに同義語辞書ファイルが格納されていなかったり，古い同義語辞書ファイルが格納されていたりした場合でも，同義語検索は実行できます。ただし，この場合，そのセカンダリノードまたはワーカーノードに同義語検索を行うSQL文の実行処理が割り振られても，そのセカンダリノードまたはワーカーノードではSQL文の実行処理は行われません。SQL文の実行処理はプライマリノードで行われます。この状態が続くと，プライマリノードの負荷が高まるおそれがあるため，同義語辞書ファイルの同期を取って，セカンダリノードまたはワーカーノードに最新の同義語辞書ファイルを格納するようにしてください。同義語辞書ファイルの同期については，「18.28.5　同義語辞書ファイルの同期を取る」を参照してください。

次に示す手順で，マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリを作成してください。

手順

1．マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリの容量を見積もる

マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリの容量見積もりを実施し，その結果を考慮してディレクトリを作成してください。マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリの容量見積もりについては，「6.17　マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリの容量見積もり」を参照してください。

重要

マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリの空き容量が不足した場合，マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリを変更する必要があります。マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリを変更した場合，同義語辞書ファイルの同期を実行する必要があるため，ディレクトリを作成しているディスクの容量不足などが発生しないように，見積もりを行ってください。

2．マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリを作成する

マルチノード機能で使用する同義語辞書ファイルを格納するディレクトリを作成してください。ディレクトリを作成する際，次の点に注意してください。

次のディレクトリは，マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリにできません。

サーバディレクトリ

サーバディレクトリの下位のディレクトリ

下位のディレクトリにサーバディレクトリがあるディレクトリ

DBディレクトリ

DBディレクトリの下位のディレクトリ

下位のディレクトリにDBディレクトリがあるディレクトリ

ルートディレクトリ

adb_syndict_storage_pathオペランドに指定したディレクトリ

adb_syndict_storage_pathオペランドに指定したディレクトリの下位のディレクトリ

下位のディレクトリに，adb_syndict_storage_pathオペランドに指定したディレクトリがあるディレクトリ

DBディレクトリが/HADB/dbの場合，マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリにできるディレクトリの例と，できないディレクトリの例を次に示します。

マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリの例

理由

マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリにできるディレクトリの例

/HADB/syndict

なし。

マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリにできないディレクトリの例

/HADB/db

左記のディレクトリは，DBディレクトリと同一のため，マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリにできません。

/HADB/db/synonym

左記のディレクトリは，DBディレクトリの下位のディレクトリのため，マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリにできません。

/HADB

左記のディレクトリは，下位のディレクトリにDBディレクトリがあるため，マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリにできません。

HADBサーバのインストール時にインストールデータを格納したディレクトリを，マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリにしないでください。

なお，マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリを作成するディスクには，セクターサイズが512バイトまたは4,096バイトのディスクが使用できます。

3．マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリに対する権限を付与する

次に示す手順で，マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリに対して必要な権限を付与してください。

手順

マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリに，HADB管理者に対する読み取り権限，書き込み権限，および実行権限を付与する

マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリのパスに含まれるすべてのディレクトリに，HADB管理者に対する実行権限を付与する

（例）マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリが/HADB/syndictの場合

/HADB/syndictには，読み取り権限，書き込み権限，および実行権限が必要です。

/，および/HADBには，実行権限が必要です。

重要

マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリを変更した場合，adbsyndictコマンドを実行して同義語辞書ファイルの同期を取る必要があります。同期を取らなかった場合，同義語検索を行うSQL文の実行ノードがセカンダリノードまたはワーカーノードからプライマリノードに切り替わります。その結果，プライマリノードの負荷増加や，実行ノードを切り替える処理によって，検索性能が低下するおそれがあります。

マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリを削除しないでください。また，マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリ下のファイルを，adbsyndictコマンド以外で削除しないでください。削除した場合，同義語検索を行うSQL文の実行ノードがセカンダリノードまたはワーカーノードからプライマリノードに切り替わります。その結果，プライマリノードの負荷増加や，実行ノードを切り替える処理によって，検索性能が低下するおそれがあります。

マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリ下のファイルを，adbsyndictコマンド以外で更新しないでください。更新した場合，同義語検索の実行結果が不正となるか，または同義語検索の実行がエラーになります。

(7)　HAモニタのserversファイルの指定を変更する

マルチノード構成のHADBサーバを終了して，HAモニタのserversファイルの指定を変更してください。

メモ

HAモニタなしのマルチノード構成の場合は，ここで説明している作業を実施する必要はありません。

「図18‒1　HAモニタありのマルチノード構成のシステム構成例（オンプレミス環境の場合）」の場合，FS002が同義語辞書ファイルの格納ディレクトリを作成するファイルシステムです。VGの名称はvg_hadb02で，LVの名称はhadb_syndictとします。

次に示すオペランドの指定値を変更します。

disk

同義語辞書ファイルの格納ディレクトリを作成するファイルシステムを含むVGの絶対パスの指定を追加してください。「図18‒1　HAモニタありのマルチノード構成のシステム構成例（オンプレミス環境の場合）」の場合は，/dev/vg_hadb02を追加します。

fs_name

同義語辞書ファイルの格納ディレクトリを作成するファイルシステムに対応する論理ボリュームの絶対パスの指定を追加してください。「図18‒1　HAモニタありのマルチノード構成のシステム構成例（オンプレミス環境の場合）」の場合は，/dev/vg_hadb02/hadb_syndictを追加します。

fs_mount_dir

同義語辞書ファイルの格納ディレクトリを作成するファイルシステムをマウントするディレクトリのパスの指定を追加してください。同義語辞書ファイルの格納ディレクトリを作成するファイルシステムをマウントするディレクトリのパスは，プライマリノードおよびセカンダリノードで同じパスとなるように指定してください。

fs_mount_opt

同義語辞書ファイルの格納ディレクトリを作成するファイルシステムをマウントするためのマウントオプションを追加してください。

vg_neck

useの指定を追加してください。

fs_neck

useの指定を追加してください。

scsi_device

このオペランドには，同義語辞書ファイルを格納するファイルシステムのデバイス名（SCSIリザーブの対象となるデバイス名）を絶対パスで追加してください。

なお，系のリセットを使用する場合は，このオペランドを指定する必要はありません。

共有ディスクのSCSIリザーブを使用する場合で，かつ共有ディスクが次のどれかの条件を満たすときに，このオペランドを指定してください。

シングルパス構成の場合

VMware ESXiでの仮想化環境の場合（DMMPを使用する場合を除く）

マルチパスソフトウェア（HDLM）による冗長化構成の場合

dmmp_device

このオペランドには，同義語辞書ファイルを格納するファイルシステムのデバイス名（SCSIリザーブの対象となるデバイス名）を，DMMPの論理デバイスの絶対パスで指定します。

なお，系のリセットを使用する場合は，このオペランドを指定する必要はありません。

共有ディスクのSCSIリザーブを使用する場合で，かつ共有ディスクがマルチパスソフトウェア（DMMP）による冗長化構成のときに，このオペランドを指定してください。

serversファイルの指定例については，次のどちらかの個所を参照してください。

系のリセットを使用している場合

「18.4.4　HAモニタの環境設定」の「(5)　各ファイルの指定例（系のリセットを使用する場合）」の「(b)　serversファイルの指定例」を参照してください。

共有ディスクのSCSIリザーブを使用している場合

シングルパス構成の場合は，「18.4.4　HAモニタの環境設定」の「(6)　各ファイルの指定例（共有ディスクのSCSIリザーブを使用する場合）」の「(b)　serversファイルの指定例（シングルパス構成の場合）」を参照してください。

マルチパスソフトウェアによる冗長化構成の場合は，「18.4.4　HAモニタの環境設定」の「(6)　各ファイルの指定例（共有ディスクのSCSIリザーブを使用する場合）」の「(c)　serversファイルの指定例（マルチパスソフトウェアによる冗長化構成の場合）」を参照してください。

serversファイルの各オペランドの詳細については，マニュアルHAモニタ Linux(R)(x86)編のサーバ対応の環境設定（servers）を参照してください。

(8)　サーバ定義を修正する

サーバ定義に次に示すオペランドを指定してください。

adb_syndict_storage_path

サーバ定義のadb_syndict_storage_pathオペランドに，同義語辞書ファイルの格納ディレクトリ名を指定してください。このオペランドは，プライマリノードおよびセカンダリノードのサーバ定義に指定してください。

adb_syndict_storage_pathオペランドについては，「7.2.9　同義語検索に関するオペランド（set形式）」のadb_syndict_storage_pathを参照してください。

adb_syndict_storage_pathオペランドに同義語辞書ファイルの格納ディレクトリのシンボリックリンクを指定した場合，シンボリックリンクを解決したあとの絶対パス名が，「11.19.1　同義語検索を行うための準備をする」の「(4)　同義語辞書ファイルの格納ディレクトリを作成する」で説明している規則に従っているかどうかがチェックされます。

adb_syndict_node_storage_path

サーバ定義のadb_syndict_node_storage_pathオペランドに，マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリ名を指定してください。このオペランドは，全ノードのサーバ定義に指定してください。

adb_syndict_node_storage_pathオペランドについては，「7.2.9　同義語検索に関するオペランド（set形式）」のadb_syndict_node_storage_pathを参照してください。

adb_syndict_node_storage_pathオペランドにマルチノード機能で使用する同義語辞書ファイルの格納ディレクトリのシンボリックリンクを指定した場合，シンボリックリンクを解決したあとの絶対パス名が，「(6)　マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリを作成する」の「2．マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリを作成する」で説明している規則に従っているかどうかがチェックされます。

メモ

サーバ定義の変更手順については，「8.5.2　サーバ定義の変更方法」を参照してください。

(9)　マルチノード構成のHADBサーバを開始する

マルチノード構成のHADBサーバを開始してください。

マルチノード構成のHADBサーバの開始方法については，「18.5.1　マルチノード構成のHADBサーバの開始方法」を参照してください。

(10)　テキストインデクスを定義する

「(1)　テキストインデクスの定義を検討する」の結果，テキストインデクスを定義する場合は，次に示す手順でテキストインデクスを定義してください。

手順

CREATE INDEX文を実行して，テキストインデクスを定義する

adbidxrebuildコマンドを実行して，テキストインデクスのインデクスデータを作成する

(11)　同義語辞書を登録する

同義語辞書を登録するには，「11.19.1　同義語検索を行うための準備をする」の「(7)　同義語一覧定義ファイルを作成する」～「(10)　同義語辞書ファイルの格納ディレクトリのバックアップを取得する」の作業を実施してください。

重要

同義語一覧定義ファイル，辞書情報登録ファイル，辞書情報削除ファイルは，プライマリノードから参照可能なファイルシステムに作成することを推奨します。

HAモニタありのマルチノード構成の場合は，同義語辞書ファイルの格納ディレクトリと同様に，ノード切り替え対象のファイルシステム上に作成するか，またはプライマリノードおよびセカンダリノードで同一パスのディレクトリにマウントした，各ノードから参照可能なディスク上に作成することを検討してください。

プライマリノードでadbsyndictコマンドを実行して同義語辞書を登録した場合，自動的に同義語辞書ファイルの同期が行われます。そのため，-sオプションを指定したadbsyndictコマンドの実行は不要です。

18.28.2　同義語検索を行う

同義語検索の方法は，マルチノード機能を使用しない場合と同じです。同義語検索の方法については，「11.19.2　同義語検索を行う」を参照してください。

マルチノード機能の使用時に同義語検索を行う場合，SQL文の実行処理を割り振られたノードにある同義語辞書ファイルが使用されます。マルチノード機能で使用する同義語辞書ファイルは，サーバ定義のadb_syndict_node_storage_pathオペランドに指定したディレクトリ下に格納されています。このディレクトリ下に最新の同義語辞書ファイルがないセカンダリノード（またはワーカーノード）にSQL文の実行処理が割り振られた場合，そのセカンダリノード（またはワーカーノード）ではSQL文の実行処理は行われないで，プライマリノードでSQL文の実行処理が行われます。このとき，KFAA51537-Wメッセージが出力されます。

この状態が続くと，次に示す要因によって検索性能が低下するおそれがあります。

同義語検索を実行するSQL文の実行処理がプライマリノードに集中してプライマリノードの負荷が高まる

同義語検索を実行するSQL文の実行ノードをセカンダリノード（またはワーカーノード）からプライマリノードに変更する処理が行われる

そのため，同義語辞書ファイルの同期を取って，セカンダリノードおよびワーカーノードの同義語辞書ファイルを最新のファイルにしてください。同義語辞書ファイルの同期を取る方法については，「18.28.5　同義語辞書ファイルの同期を取る」を参照してください。

18.28.3　同義語辞書を登録または削除する

同義語辞書の登録または削除方法は，マルチノード機能を使用しない場合と同じです。同義語辞書の登録方法については，「11.19.8　同義語辞書を登録する」を参照してください。同義語辞書の削除方法については，「11.19.9　同義語辞書を削除する」を参照してください。

メモ

プライマリノードでadbsyndictコマンドを実行して同義語辞書を登録または削除した場合，同義語辞書ファイルの同期が自動的に行われます。そのため，-sオプションを指定したadbsyndictコマンドの実行は必要ありません。

18.28.4　同義語を追加または削除する

同義語の追加または削除方法は，マルチノード機能を使用しない場合と同じです。同義語の追加または削除方法については，「11.19.5　同義語を追加する」または「11.19.6　同義語を削除する」を参照してください。

プライマリノードでadbsyndictコマンドを実行して同義語を追加または削除した場合，同義語辞書ファイルの同期が自動的に行われます。そのため，-sオプションを指定したadbsyndictコマンドの実行は必要ありません。

メモ

同義語グループの追加および削除方法も，マルチノード機能を使用しない場合と同じです。同義語グループの追加方法については，「11.19.7　同義語グループを追加する」を参照してください。

18.28.5　同義語辞書ファイルの同期を取る

同義語辞書ファイルの同期を取る場合は，次のコマンドを実行します。

adbsyndict -s

同義語辞書ファイルの同期とは

マルチノード機能を使用している場合，同義語辞書ファイルが全ノードで必要になります。全ノードの同義語辞書ファイルを同じファイルにすることを同義語辞書ファイルの同期といいます。プライマリノードの同義語辞書ファイルをセカンダリノードおよびワーカーノードにコピーして，同義語辞書ファイルの同期を取っています。

セカンダリノードおよびワーカーノードの同義語辞書ファイルは，adb_syndict_node_storage_pathオペランドに指定したディレクトリ下に格納されています。セカンダリノードまたはワーカーノードで同義語検索のSQL文が実行される場合，そのセカンダリノードまたはワーカーノードの同義語辞書ファイルが使用されます。

同義語辞書ファイルの同期が取られていない場合

同義語辞書ファイルの同期が取られていない場合でも，同義語検索は実行できます。ただし，同義語辞書ファイルの同期が取られていないセカンダリノード（またはワーカーノード）にSQL文の実行処理が割り振られた場合，そのセカンダリノード（またはワーカーノード）ではSQL文の実行処理は行われません。この場合，SQL文の実行処理はプライマリノードで行われます。この状態が続くと，プライマリノードの負荷が高まるおそれがあるため，同義語辞書ファイルの同期を取って，セカンダリノード（またはワーカーノード）の同義語辞書ファイルを最新のファイルにしてください。

同義語辞書ファイルの同期を取る必要があるケース

次の場合，セカンダリノードまたはワーカーノードに最新の同義語辞書ファイルが格納されていないため，同義語辞書ファイルの同期を取る必要があります。

ノードを新規に追加した場合

マルチノード構成にノードを復帰した場合※

マルチノード構成にワーカーノードを追加した場合※

注※

ノードの停止中に同義語辞書の登録や更新を行った場合に，同義語辞書ファイルの同期を取る必要があります。

セカンダリノードまたはワーカーノードに最新の同義語辞書ファイルが格納されていない場合，HADBサーバの開始時，または同義語検索の実行時に警告メッセージKFAA51537-Wが出力されます。この場合，adbsyndictコマンドを実行して同義語辞書ファイルの同期を取ってください。

メモ

同義語時辞書の登録，更新，または削除をしたときは，HADBサーバが自動的に同義語時辞書ファイルの同期を取ります。

18.29　監査証跡機能の運用（マルチノード機能使用時）

ここでは，監査証跡機能を使用する場合の環境設定方法と運用方法について説明します。

なお，JP1/Auditと連携して，監査証跡を収集および一元管理する場合は，「18.29.3　JP1/Audit Management - Managerとの連携（マルチノード機能使用時）」を参照してください。

18.29.1　監査証跡機能の環境設定

ここでは，監査証跡機能とマルチノード機能の両方を使用する際の環境設定に関する留意事項について説明します。監査証跡機能の環境設定方法については，「12.2　監査証跡機能の環境設定」を参照してください。

■監査証跡の出力先ディレクトリの作成

各ノードに，監査証跡の出力先ディレクトリを作成してください。

監査証跡の出力先ディレクトリは，各ノードのノードローカルのファイルシステムに作成することを推奨します。

各ノードのサーバ定義に，adb_audit_log_pathオペランドを指定してください。このオペランドには，監査証跡の出力先ディレクトリを指定します。

メモ

監査証跡は，操作が実行されたノードに出力されます。そのため，監査証跡の出力先ディレクトリをノードごとに作成し，そのディレクトリ名をadb_audit_log_pathオペランドに指定する必要があります。

■監査証跡の保存先ディレクトリを作成するファイルシステムの準備

監査証跡を検索する際に使用するADB_AUDITREAD関数中に指定する監査証跡ファイルのパスが，全ノードから同じ絶対パスで参照できるように環境を構築してください。

重要

全ノードから同じ絶対パスで監査証跡ファイルを参照できない場合，監査証跡を検索するSQL文を実行するトランザクションが割り当てられたノードによって，検索結果が異なることがあります。

ADB_AUDITREAD関数中に，検索対象の監査証跡ファイルの絶対パスを指定する必要があります。

全ノードで共有のファイルシステムに監査証跡の保存先ディレクトリを作成してください。例として，分散ファイルシステムの一つであるNFSを使用したときの環境設定方法を説明します。

手順

NFSサーバを用意し，NFSサーバ上で監査証跡の保存先ディレクトリを作成してください。

手順の1.で作成した監査証跡の保存先ディレクトリをエクスポートしてください。

この操作は，NFSサーバで実行します。

手順の2.でエクスポートしたディレクトリを，全ノードで同じパスとなるようにマウントしてください。

この操作は，全ノードで実行します。

各ノードの監査証跡の出力先ディレクトリ下に出力された監査証跡ファイルを，NFSサーバ上の監査証跡の保存先ディレクトリに移動してください。

この操作は，全ノードで実行します。

監査証跡の保存先ディレクトリ下に格納されている監査証跡ファイルのパスを，ADB_AUDITREAD関数に指定して監査証跡を検索します。

NFSを使用したシステム構成例を次の図に示します。

図18‒14　NFSを使用したシステム構成例

注

上記は，HAモニタありのマルチノード構成のシステム構成例です。HAモニタなしのマルチノード構成の場合は，セカンダリノードをワーカーノードに読み替えてください。

18.29.2　監査証跡機能の運用方法

ここでは，監査証跡機能とマルチノード機能の両方を使用する際の運用方法に関する留意事項について説明します。監査証跡機能の運用方法については，「12.　監査証跡機能の運用」を参照してください。

■監査証跡機能を有効にする場合，または無効にする場合

監査証跡機能を有効にする場合は，プライマリノードでadbaudittrail --startコマンドを実行してください。全ノードで監査証跡機能が有効になります。

監査証跡機能を無効にする場合は，プライマリノードでadbaudittrail --stopコマンドを実行してください。全ノードで監査証跡機能が無効になります。

メモ

ノードごとに監査証跡機能を有効にしたり，無効にしたりすることはできません。

■監査証跡ファイルを切り替える場合

監査証跡ファイルを切り替えたいノードでadbaudittrail --swapコマンドを実行してください。

また，監査証跡ファイルを切り替えたいノードのノード番号を-nオプションに指定して，プライマリノードでadbaudittrail --swapコマンドを実行しても監査証跡ファイルを切り替えることができます。

なお，監査証跡ファイルを切り替えたいノードのノード番号を確認する場合，adbls -d nodeコマンドを実行してください。adbls -d nodeコマンドについては，マニュアルHADB　コマンドリファレンスのadbls -d node（各ノードのHADBサーバの状態表示）を参照してください。

■監査証跡機能に関連する情報を表示する場合

監査証跡機能に関連する情報を調べたいノードでadbaudittrail -dコマンドを実行してください。

また，監査証跡機能に関連する情報を調べたいノードのノード番号を-nオプションに指定して，プライマリノードでadbaudittrail -dコマンドを実行しても監査証跡機能に関連する情報を調べることができます。

なお，監査証跡機能に関連する情報を調べたいノードのノード番号を確認する場合，adbls -d nodeコマンドを実行してください。adbls -d nodeコマンドについては，マニュアルHADB　コマンドリファレンスのadbls -d node（各ノードのHADBサーバの状態表示）を参照してください。

18.29.3　JP1/Audit Management - Managerとの連携（マルチノード機能使用時）

JP1/Auditと連携して，監査証跡を収集および一元管理する場合は，adbconvertaudittrailfileコマンドで監査証跡を変換し，統一フォーマット用監査証跡ファイルに出力してください。監査証跡の変換については，「2.18.9　監査証跡の変換（JP1/Audit Management - Managerとの連携）」を参照してください。

adbconvertaudittrailfileコマンドは，全ノードで実行できます。また，監査証跡ファイルを出力したノードと，adbconvertaudittrailfileコマンドを実行するノードを一致させる必要はありません。そのため，次の2つの運用方法が考えられます。

プライマリノード，セカンダリノード，ワーカーノードが，それぞれ自ノードで出力した監査証跡ファイルをadbconvertaudittrailfileコマンドで変換する運用方法

プライマリノードが，すべての監査証跡ファイルをadbconvertaudittrailfileコマンドで変換する運用方法

どちらの運用でもJP1/Auditで確認できる内容は同じです。なお，統一フォーマット用監査証跡の出力先ディレクトリは，ノードローカルのファイルシステム上に作成してください。

それぞれの運用方法の留意事項について説明します。

■プライマリノード，セカンダリノード，ワーカーノードが，それぞれ自ノードで出力した監査証跡ファイルをadbconvertaudittrailfileコマンドで変換する場合

adbconvertaudittrailfileコマンドを実行する全ノードで，JP1/Auditの環境設定を行ってください。

JP1/Auditの環境設定については，「12.8.3　監査証跡機能とJP1/Auditを連携する際の環境設定」の「(2)　JP1/Auditの環境設定」を参照してください。また，adbconvertaudittrailfileコマンドについては，マニュアルHADB　コマンドリファレンスのadbconvertaudittrailfile（監査証跡ファイルの変換）を参照してください。

なお，JP1/Baseをクラスタ環境として構築する必要はありません。

重要

統一フォーマット用監査証跡の出力先ディレクトリは，それぞれのノードに作成してください。同一のディレクトリに対して，複数のノードが統一フォーマット用監査証跡ファイルを同時に出力した場合，統一フォーマット用監査証跡ファイルは正常に出力されません。

運用手順の例を次に示します。

各ノードで，監査証跡の出力先ディレクトリに出力された監査証跡ファイルを，adbconvertaudittrailfileコマンドで統一フォーマット用監査証跡ファイルに変換する

手順1.が完了したら，各ノードで監査証跡の出力先ディレクトリに出力された監査証跡ファイルを，全ノードで共有している監査証跡の保存先ディレクトリに移動する

■プライマリノードが，すべての監査証跡ファイルをadbconvertaudittrailfileコマンドで変換する場合

adbconvertaudittrailfileコマンドを実行するプライマリノードで，JP1/Auditの環境設定を行ってください。

なお，プライマリノードの切り替えが発生したときに，新たなプライマリノードでadbconvertaudittrailfileコマンドを実行したい場合は，全ノードでJP1/Auditの環境設定を行ってください。その際，JP1/Baseをクラスタ環境として構築する必要はありません。

JP1/Auditの環境設定については，「12.8.3　監査証跡機能とJP1/Auditを連携する際の環境設定」の「(2)　JP1/Auditの環境設定」を参照してください。また，adbconvertaudittrailfileコマンドについては，マニュアルHADB　コマンドリファレンスのadbconvertaudittrailfile（監査証跡ファイルの変換）を参照してください。

運用手順の例を次に示します。

各ノードで，監査証跡の出力先ディレクトリに出力された監査証跡ファイルを，全ノードで共有している監査証跡の保存先ディレクトリに移動する

プライマリノードでadbconvertaudittrailfileコマンドを実行し，監査証跡の保存先ディレクトリに移動された監査証跡ファイルを，統一フォーマット用監査証跡ファイルに変換する

18.30　DBエリア暗号化機能の運用（マルチノード機能使用時）

ここでは，DBエリア暗号化機能とマルチノード機能の両方を使用する際の環境設定および運用方法に関する留意事項について説明します。DBエリア暗号化機能の環境設定および運用方法については，「13.　DBエリア暗号化機能の運用」を参照してください。

18.30.1　DBエリア暗号化機能の環境設定をする場合

DBエリア暗号化機能の環境設定をする場合，次の留意事項があります。

HADB暗号鍵ファイルの保存先ディレクトリの作成

HADB暗号鍵ファイルの保存先ディレクトリを全ノードに作成して，パーミッションを設定してください。

HADB暗号鍵ファイルの保存先ディレクトリの作成およびパーミッションの設定については，「13.1.1　HADBサーバを新規導入する場合」の「(2)　HADB暗号鍵ファイルの保存先ディレクトリの作成」を参照してください。

adbinitコマンドによるデータベースの初期設定

データベースを初期設定する際，「18.4.8　データベースの作成」の「(3)　プライマリノードでのデータベースの作成」および「(4)　セカンダリノードおよびワーカーノードでのDBディレクトリの作成」で説明している作業を実施します。

「(3)　プライマリノードでのデータベースの作成」をする際，初期設定オプションにDBエリアを暗号化するオプションを指定をしてください。

「(4)　セカンダリノードおよびワーカーノードでのDBディレクトリの作成」をする際，初期設定オプションにはDBエリアを暗号化するオプションを指定をする必要はありません。仮に指定してもエラーにはなりません（無視されます）。

なお，HADB暗号鍵は，プライマリノードでadbinitコマンドを実行したときに作成されます。

HADB暗号鍵ファイルの配布

HADB暗号鍵ファイルは，プライマリノードに作成されます。そのため，プライマリノードで作成したHADB暗号鍵ファイルを，プライマリノード以外の全ノードに配布してください。各ノードのHADB暗号鍵ファイルの保存先ディレクトリ下にHADB暗号鍵ファイルを格納してください。

また，配布したHADB暗号鍵ファイルのパーミッションを400に設定してください。

chmod 400 /HADB/.crypto/adb_dmkey

HADB暗号鍵ファイルの配布，およびパーミッションの設定は，HADB管理者で実行してください。

サーバ定義の指定

adb_crypto_dmkey_pathオペランドを全ノードに指定し，HADB暗号鍵ファイルを絶対パスで指定してください。

メモ

セカンダリノードにHADB暗号鍵が配布されていない場合，マルチノード構成のHADBサーバを開始できません。また，ワーカーノードにHADB暗号鍵が配布されていない場合，そのワーカーノードをマルチノード構成に追加できません。

adb_crypto_dmkey_pathオペランドがプライマリノードおよび全セカンダリノードに指定されていない場合，マルチノード構成のHADBサーバを開始できません。また，adb_crypto_dmkey_pathオペランドがワーカーノードに指定されていない場合，そのワーカーノードをマルチノード構成に追加できません。

18.30.2　マルチノード構成のHADBサーバを開始する場合

マルチノード構成のHADBサーバを開始する場合，各ノードでのadbstartコマンドの入力後にHADB暗号鍵利用パスワードの入力要求メッセージ（KFAA90013-Q）が出力されます。このメッセージが出力されたら，HADB暗号鍵利用パスワードを入力してください。全ノードで同じHADB暗号鍵利用パスワードを入力してください。

マルチノード構成にノードを復帰する際や，ワーカーノードを追加する際にadbstartコマンドを入力したときにも，HADB暗号鍵利用パスワードの入力要求メッセージ（KFAA90013-Q）が出力されます。このメッセージが出力されたら，HADB暗号鍵利用パスワードを入力してください。

18.30.3　HADB暗号鍵を作成する場合

HADB暗号鍵を作成する場合，プライマリノードでadbmkdmkコマンドを実行してください。

18.30.4　HADB暗号鍵を更新する場合

HADB暗号鍵の更新手順を次に示します。

手順

データベースのバックアップを取得する

HADB暗号鍵の更新に失敗した場合に備えて，データベースのバックアップを取得します。

バックアップの取得方法については，「13.6　バックアップを取得する場合」を参照してください。

HADB暗号鍵を作成する

暗号管理権限を持っているHADBユーザでadbmkdmkコマンドを実行し，HADB暗号鍵を作成します。

adbmkdmkコマンドは，プライマリノードで実行してください。

adbmkdmk -u CADMIN -p CADMINPSW /HADB/.crypto/adb_v2_dmkey

-uオプションには暗号管理権限を持っているHADBユーザの認可識別子を指定し，-pオプションにはパスワードを指定します。

また，HADB暗号鍵の出力先ファイル（この例では/HADB/.crypto/adb_v2_dmkey）を指定します。

重要

adbmkdmkコマンドの入力後，KFAA90013-Qメッセージが出力されます。作成するHADB暗号鍵のHADB暗号鍵利用パスワードを新たに設定してください。

HADBサーバの稼働モードをメンテナンスモードに変更する

adbchgsrvmodeコマンドは，プライマリノードで実行してください。

adbchgsrvmode --maintenance

HADB暗号鍵の更新処理はデータベースへのアクセスに影響を及ぼすため，HADBサーバの稼働モードを上記のコマンドを実行してメンテナンスモードに変更します。

セカンダリノードおよびワーカーノードのHADBサーバを終了する

セカンダリノードおよびワーカーノードのHADBサーバの終了方法については，「18.5.2　マルチノード構成のHADBサーバの終了方法」の「(2)　特定のノードのHADBサーバの終了手順」を参照してください。

HADB暗号鍵を更新する

暗号管理権限を持っているHADBユーザでadbupddmkコマンドを実行し，HADB暗号鍵を更新します。

adbupddmkコマンドは，プライマリノードで実行してください。

adbupddmk -u CADMIN -p CADMINPSW           ...[a]
          /HADB/.crypto/adb_dmkey          ...[b]
          /HADB/.crypto/adb_v2_dmkey       ...[c]

暗号管理権限を持っているHADBユーザの認可識別子とパスワードを指定します。

使用中のHADB暗号鍵ファイルを絶対パスで指定します。

2.で作成したHADB暗号鍵ファイルを絶対パスで指定します。

重要

adbupddmkコマンドの入力後，KFAA90013-Qメッセージが出力されます。使用中のHADB暗号鍵利用パスワードを入力してください。

そのあと，KFAA90013-Qメッセージが再度出力されます。2.で新たに設定したHADB暗号鍵利用パスワードを入力してください。

メモ

adbupddmkコマンドとほかのコマンドを同時に実行することはできません。

更新したHADB暗号鍵ファイルをセカンダリノードおよびワーカーノードに配布する

更新したHADB暗号鍵ファイル（/HADB/.crypto/adb_v2_dmkey）をセカンダリノードおよびワーカーノードのHADB暗号鍵ファイルの保存先ディレクトリに格納してください。

また，配布したHADB暗号鍵ファイルのパーミッションを400に設定してください。

chmod 400 /HADB/.crypto/adb_v2_dmkey

HADB暗号鍵ファイルの配布，およびパーミッションの設定は，HADB管理者で実行してください。

重要

セカンダリノードおよびワーカーノードにHADB暗号鍵が正しく配布されていない場合，セカンダリノードまたはワーカーノードでのadbstartコマンドの実行がエラーになります。

全ノードのサーバ定義を変更する

サーバ定義のadb_crypto_dmkey_pathオペランドに指定しているHADB暗号鍵ファイルのパスを，更新後のHADB暗号鍵ファイルのパス（/HADB/.crypto/adb_v2_dmkey）に変更してください。

set adb_crypto_dmkey_path = /HADB/.crypto/adb_v2_dmkey

セカンダリノードおよびワーカーノードのHADBサーバを開始する

4.でセカンダリノードのHADBサーバを終了した場合は，セカンダリノードのHADBサーバを開始してセカンダリノードをマルチノード構成に復帰させてください。マルチノード構成への復帰手順については，「18.16.3　マルチノード構成へのノードの復帰」を参照してください。

4.でワーカーノードのHADBサーバを終了した場合は，ワーカーノードのHADBサーバを開始してワーカーノードをマルチノード構成に追加してください。マルチノード構成への追加手順については，「18.18.3　マルチノード構成から削除されたワーカーノードを再度追加する手順」を参照してください。

HADBサーバの稼働モードを元に戻す

adbchgsrvmodeコマンドは，プライマリノードで実行してください。

adbchgsrvmode --normal

上記は，HADBサーバの稼働モードを通常モードに変更する例です。

18.31　更新行のカラム化機能の運用（マルチノード機能使用時）

更新行のカラム化機能の運用については，「11.21　更新行のカラム化機能の運用（カラムストア表の検索性能の維持）」を参照してください。ここでは，マルチノード機能使用時の留意事項について説明します。

adbcolumnizeコマンドはプライマリノードで実行してください。

更新行のカラム化機能のメンテナンス処理は，プライマリノードで実行されます。

マルチノード構成のHADBサーバで，トランザクションまたはHADBサーバに接続するコマンドが実行されている間は，メンテナンス処理は実行されません。

■HAモニタありのマルチノード構成の場合の留意事項

プライマリノードの切り替えが発生したあとも，更新行のカラム化機能の状態（有効または無効）は引き継がれます。

更新行のカラム化機能の有効時にプライマリノードの切り替えが発生した場合，プライマリノードの切り替えが完了したあとにメンテナンス処理が実行されます。

更新行のカラム化機能に関するエラーの対処をしないで，更新行のカラム化機能を有効な状態のままにしておくと，プライマリノードの切り替えが完了したあとに実行されるメンテナンス処理がエラーとなり，エラーメッセージが出力されます。

メンテナンス処理が24時間実行されない状態が続くと，KFAA51277-Iメッセージが出力されますが，プライマリノードの切り替えが発生すると，時間経過の監視がリセットされます。そのため，プライマリノードの切り替え後，メンテナンス処理が実行されない状態がさらに24時間続いたときにKFAA51277-Iメッセージが出力されます。

更新行のカラム化機能で使用するファイルの入出力制御の開始処理はノードごとに実行されます。そのため，切り替え先のプライマリノードで，更新行のカラム化機能で使用するファイルの入出力制御の開始処理に失敗していた場合，プライマリノードの切り替えが完了したあとに実行されるメンテナンス処理がエラーになります。

18.32　SQLパラレル実行機能の運用

ここでは，SQLパラレル実行機能を使用する際の準備作業と運用方法について説明します。

18.32.1　SQLパラレル実行機能を使用するときの準備作業

SQLパラレル実行機能を使用する場合，ここで説明する準備作業をしてください。

(1)　検索対象表の定義

SQLパラレル実行機能を適用する検索系SQLの検索対象表（SELECT文のFROM句に指定する実表）を，次のように定義してコスト情報を収集してください。

検索対象表は，カラムストア表かつマルチチャンク表として定義してください。

バージョン04-03以降のHADBサーバで，検索対象表のコスト情報を収集してください。

(2)　データ用DBエリアの定義

クラウドストレージ機能を使用していない場合は，データ用DBエリアを定義する際に留意することがあります。

クラウドストレージ機能を使用していない場合

検索対象表を格納するデータ用DBエリアを定義する際，2つ以上のDBエリアファイルで構成するように定義してください。詳細については，「5.6.1　データ用DBエリアを設計する際の考慮点」の「(3)　データ用DBエリアを構成するデータ用DBエリアファイルの考慮点」を参照してください。

なお，SQLパラレル実行機能を適用した検索系SQLを分割処理するノードの最大数は，次のどちらかの小さい方の値になります。

検索系SQLの検索対象表が格納されているデータ用DBエリアのDBエリアファイル数

マルチノード構成の全ノード数

重要

検索系SQLを分割処理するノード数を増やしたい場合は，ノード数を増やすだけではなく，データ用DBエリアのDBエリアファイル数も増やす必要があります。例えば，全ノード数が8であっても，DBエリアファイル数が4の場合，検索系SQLを分割処理するノードの最大数は4になります（検索系SQLを処理する際に全ノードを活用できません）。

検索系SQLの分割処理が各ノードに均等に割り振られるようにするには，DBエリアファイル数を全ノード数の倍数となるようにしてください。

SQLパラレル実行機能を適用した検索系SQLを実行する際，全ノードを使用して分割処理をする必要がない場合は，DBエリアファイル数を全ノード数より少なくするようにしてください。

クラウドストレージ機能を使用している場合

データ用DBエリアを定義する際に留意することはありません。

なお，SQLパラレル実行機能を適用した検索系SQLを分割処理するノードの最大数は，マルチノード構成の全ノード数になります。

(3)　サーバ定義の指定

サーバ定義の次のオペランドの指定値を全ノードで同じにしてください。

adb_sys_rthd_num

adb_sys_uthd_num

adb_sys_shm_huge_page_size

adb_sys_cld_cache_total_size※

adb_sys_cld_access_area_size※

adb_sql_opt_drvtbl_grping_prior

adb_sql_exe_max_rthd_num

adb_sql_exe_hashgrp_area_size

adb_sql_exe_hashtbl_area_size

adb_sql_exe_hashflt_area_size

adb_sql_tbldef_cache_size

adb_sql_rngidx_preread

adb_dbbuff_wrktbl_glb_blk_num

adb_dbbuff_wrktbl_clt_blk_num

adbbuff

adbcachegrp※

adbcltgrp（-rオプションおよび-eオプション）

注※

クラウドストレージ機能を使用する場合に限り指定するオペランドです。

重要

上記のオペランドの指定値がSQLメインノードと異なるノードは，SQLサブノードの候補になりません。

(4)　クライアント定義またはSQL文の指定

SQLパラレル実行機能を使用する場合は，次のどちらかの指定をしてください。

クライアント定義のadb_clt_sql_parallel_execオペランドにYを指定する

SQL文にSQLパラレル実行指定を指定する

adb_clt_sql_parallel_execオペランドについては，マニュアルHADB　AP開発ガイドの性能に関するオペランドを参照してください。

SQLパラレル実行指定については，マニュアルHADB　SQLリファレンスのSELECT文の指定形式および規則を参照してください。

(5)　トランザクションの実行条件の設定

検索系SQLを実行するトランザクションは，次の条件をすべて満たすようにしてください。

トランザクションアクセスモードを読み取り専用モードにする

トランザクション隔離性水準をREAD COMMITTEDにする

上記の設定は，サーバ定義，クライアント定義，またはJDBCのプロパティで行います。

メモ

SQLパラレル実行機能が適用される検索系SQLについては条件があります。条件については，マニュアルHADB　AP開発ガイドのSQLパラレル実行機能が適用される条件を参照してください。

18.32.2　運用

(1)　SQLメインノードとSQLサブノードを確認する場合

adbls -d prlコマンドを実行すると，SQLメインノードとSQLサブノードを確認できます（検索系SQLが実行されているノードを確認できます）。詳細については，「18.10.7　SQLメインノードとSQLサブノードを確認する場合」を参照してください。

(2)　検索系SQLにSQLパラレル実行機能が適用されたかどうかを確認する場合

SQLトレース機能によって出力されるSQLトレース情報を確認すると，実行した検索系SQLにSQLパラレル実行機能が適用されたかどうかを確認できます。詳細については，「10.11.2　SQLトレース情報に出力される情報」の「(7)　SQLパラレル実行機能に関する情報」を参照してください。

検索系SQLを実行する前にSQLパラレル実行機能が適用されるかどうかを確認したい場合は，アクセスパス情報を参照してください。詳細については，マニュアルHADB　AP開発ガイドのツリー表示に出力される情報のSQLパラレル実行機能の適用情報を参照してください。

(3)　検索対象表にデータをインポートをする場合

クラウドストレージ機能を使用していないときにadbimportコマンドを実行する際は注意が必要です。詳細については，「18.12.2　実表の運用（マルチノード機能の使用時）」の「(1)　実表にデータを格納する方法（マルチノード機能の使用時）」を参照してください。

(4)　注意事項

次のどちらかの条件に該当する場合，SQLパラレル実行機能が適用された検索系SQLはエラーになります。このとき，エラーメッセージKFAA31898-Eが出力されます。

同一トランザクションで別の文ハンドルを使用して検索系SQLを実行しているときに，SQLパラレル実行機能を適用した検索系SQLを実行しようとした場合

SQLパラレル実行機能を適用した検索系SQLの最大同時実行数（サーバ定義のadb_sys_max_parallel_exec_numオペランドの値）を超えて，SQLパラレル実行機能を適用した検索系SQLを実行しようとした場合

18.33　マルチノード機能使用時の注意事項

HAモニタありのマルチノード構成の場合

プライマリノードおよび全セカンダリノードのHADBサーバで処理が実行できなくなった場合，マルチノード構成のHADBサーバが異常終了します。

HAモニタなしのマルチノード構成の場合

プライマリノードのHADBサーバが異常終了した場合，マルチノード構成のHADBサーバが異常終了します。

18.34　AWS環境でのマルチノード機能の運用

ここでは，AWS環境でのマルチノード機能の運用について説明します。

18.34.1　AWS環境でマルチノード機能を使用する場合の留意事項

「18.1　この章を読む際の留意事項」～「18.33　マルチノード機能使用時の注意事項」は，オンプレミス環境およびAWS環境共通の説明です。「18.34　AWS環境でのマルチノード機能の運用」では，AWS環境でマルチノード機能を使用する際の固有の運用を説明しています。

AWS環境でもオンプレミス環境と同様に次のどちらかのマルチノード構成を構築できます。

HAモニタありのマルチノード構成

HAモニタなしのマルチノード構成

HAモニタありのマルチノード構成の場合，HAモニタの系切り替え機能を使用します。AWS環境の場合，系を切り替える際の共有ディスクのデータの保護方法には，系のリセットだけが使用できます。系のリセットをする際に必要なAWSの構成については，マニュアルHAモニタパブリッククラウド編のシステムの構築の構築の流れの系のリセットまたはネットワーク遮断をする場合を参照してください。

HADBのマニュアルでは，EC2インスタンスをインスタンスと表記しています。

HADBのマニュアルを読む際，サーバマシンはインスタンスと読み替えてください。

AWS環境でマルチノード構成を構築する場合，クラウドストレージ機能を使用するかどうかによってシステム構成が異なります。また，システムの構築方法と運用方法の一部も異なります。クラウドストレージ機能については，「2.21.2　AWS環境でHADBサーバを使用する場合」の「(2)　Amazon S3にDBエリアのデータを格納する場合（クラウドストレージ機能を使用する場合）」の「(a)　クラウドストレージ機能とは」を参照してください。

18.34.2　システム構成例（クラウドストレージ機能を使用する場合）

AWS環境でクラウドストレージ機能を使用する場合のシステム構成例（HAモニタありのマルチノード構成）を次の図に示します。

なお，クラウドストレージ機能のシステムディレクトリ対応オプションを有効にするかどうかによってシステム構成が異なります。それぞれの構成例を説明します。

図18‒15　HAモニタありのマルチノード構成例（クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合）

図18‒16　HAモニタありのマルチノード構成例（クラウドストレージ機能のシステムディレクトリ対応オプションが無効な場合）

注※

ノードローカルのディスクを使用します。

メモ

AWS環境でもオンプレミス環境と同様に，HAモニタありのマルチノード構成にするか，またはHAモニタなしのマルチノード構成にするかによって，前提ソフトウェアやネットワーク構成に差異があります。この差異は，AWS環境であってもオンプレミス環境であっても基本的には同じです。

ここでは，HAモニタありのマルチノード構成についてだけシステム構成例を記載します。

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にすると，EFS上に作成するシステムディレクトリ用のファイルシステム（ノード切り替え対象のファイルシステム）が不要になります。

(1)　前提OSおよび前提ソフトウェア

AWS環境でHAモニタありのマルチノード構成を構築する場合，次のOSおよびソフトウェアが必要になります。

RHEL 8またはRHEL 9

クラウドストレージ機能を使用する場合，上記のOSが必要になります。

HAモニタ 01-78以降

プライマリノードおよびセカンダリノードにHAモニタをインストールしてください。ワーカーノードには，HAモニタをインストールする必要はありません。

プライマリノードとセカンダリノードにインストールするHAモニタのバージョンは同じにしてください。

なお，RHEL 10では，AWS環境でHAモニタありのマルチノード構成は構築できません。

(2)　サーバ構成

「図18‒15　HAモニタありのマルチノード構成例（クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合）」および「図18‒16　HAモニタありのマルチノード構成例（クラウドストレージ機能のシステムディレクトリ対応オプションが無効な場合）」は，4つのノード（hadb01，hadb02，hadb03，およびhadb04）から成るマルチノード構成です。プライマリノードはhadb01，セカンダリノードはhadb02およびhadb03，ワーカーノードはhadb04です。

AWS環境でマルチノード機能を使用する場合，各ノードのインスタンスの性能（CPU，メモリサイズなど）は同じである必要はありません。ただし，インスタンスの性能が異なる場合，SQL文を実行するノードによってSQL文の処理性能に差異が発生するおそれがあります。そのため，できる限り全ノードのインスタンスの性能を同じにすることを推奨します。

重要

SQLパラレル実行機能を使用する場合は，全ノードのインスタンスのインスタンスタイプを同じにしてください。

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合

DBエリア（作業表用DBエリアを除く），システムログファイル，およびステータスファイルのデータが，S3バケット内のS3オブジェクトに格納されています。S3オブジェクトは，異なるアベイラビリティゾーンで起動しているインスタンスから同時にアクセスできます。「図18‒15　HAモニタありのマルチノード構成例（クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合）」の場合，hadb01とhadb04はアベイラビリティゾーン1で，hadb02はアベイラビリティゾーン2で，hadb03はアベイラビリティゾーン3で起動しています。

クラウドストレージ機能のシステムディレクトリ対応オプションが無効な場合

DBエリア（作業表用DBエリアを除く）のデータが，S3バケット内のS3オブジェクトに格納されています。S3オブジェクトは，異なるアベイラビリティゾーンで起動しているインスタンスから同時にアクセスできます。また，ノード切り替え対象のファイルシステムを作成したEFSをHAモニタの共有ディスクとして扱えます。そのため，各インスタンスを別々のアベイラビリティゾーンで起動できます。「図18‒16　HAモニタありのマルチノード構成例（クラウドストレージ機能のシステムディレクトリ対応オプションが無効な場合）」の場合，hadb01とhadb04はアベイラビリティゾーン1で，hadb02はアベイラビリティゾーン2で，hadb03はアベイラビリティゾーン3で起動しています。

メモ

以降の説明は，全ノードのインスタンスでインスタンスタイプr5b.2xlargeを使用していることを前提としています。

(3)　ネットワーク構成

HAモニタありのマルチノード構成をAWS環境で構築する場合，次に示すネットワークを使用します。各ネットワークは物理的に分けてください。

クライアント−サーバ間ネットワーク

ノード間ネットワーク

AWSエンドポイントへのネットワーク

EFSアクセス用ネットワーク

(a)　クライアント−サーバ間ネットワーク

HADBクライアントとHADBサーバ間の通信で使用するネットワークです。

HADBクライアントは，エイリアスIPアドレスを使用してHADBサーバに接続します。そのため，マニュアルHAモニタパブリッククラウド編の【AWS】リソースの引き継ぎを参照して，エイリアスIPアドレスを設定してください。

「図18‒15　HAモニタありのマルチノード構成例（クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合）」または「図18‒16　HAモニタありのマルチノード構成例（クラウドストレージ機能のシステムディレクトリ対応オプションが無効な場合）」での，クライアント－サーバ間ネットワークのIPアドレス，およびポート番号の設定例を次の表に示します。

表18‒13　クライアント−サーバ間ネットワークのIPアドレスとポート番号の設定例

項番

設定対象

IPアドレス

ポート番号

1

クライアントマシン

10.196.108.111

設定不要

2

プライマリノード（hadb01）のインスタンス

10.196.108.11

23650

3

セカンダリノード（hadb02）のインスタンス

10.196.108.12

23650

4

セカンダリノード（hadb03）のインスタンス

10.196.108.13

23650

5

ワーカーノード（hadb04）のインスタンス

10.196.108.14

23650

6

エイリアスIPアドレス

10.196.108.143

23650

(b)　ノード間ネットワーク

HADBサーバ間の通信，およびHAモニタの監視パスとして使用するネットワークです。ネットワークを構築する際に複線にする必要がある場合は，LinuxのBonding機能を使用してください。

Bonding機能の詳細については，OSのマニュアルを参照してください。HAモニタの監視パスの設定については，マニュアルHAモニタパブリッククラウド編の監視パスの設定を参照してください。

「図18‒15　HAモニタありのマルチノード構成例（クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合）」または「図18‒16　HAモニタありのマルチノード構成例（クラウドストレージ機能のシステムディレクトリ対応オプションが無効な場合）」での，ノード間ネットワークのIPアドレス，およびポート番号の設定例を次の表に示します。

表18‒14　ノード間ネットワークのIPアドレスとポート番号の設定例

項番

設定対象

IPアドレス

ポート番号

1

プライマリノード（hadb01）のインスタンスのHADBサーバ間通信

172.16.0.11

23651

2

プライマリノード（hadb01）のインスタンスのHAモニタの監視パス

172.16.0.11

7777

3

セカンダリノード（hadb02）のインスタンスのHADBサーバ間通信

172.16.0.12

23651

4

セカンダリノード（hadb02）のインスタンスのHAモニタの監視パス

172.16.0.12

7777

5

セカンダリノード（hadb03）のインスタンスのHADBサーバ間通信

172.16.0.13

23651

6

セカンダリノード（hadb03）のインスタンスのHAモニタの監視パス

172.16.0.13

7777

7

ワーカーノード（hadb04）※のインスタンスのHADBサーバ間通信

172.16.0.14

23651

注※

ワーカーノードはHAモニタの管理対象外のため，HAモニタの監視パスの設定は不要です。

通常は，HADBサーバ間の通信で使用するネットワークと，HAモニタの監視パスとして使用するネットワークを分けます。ただし，この場合，HAモニタは，HADBサーバ間の通信で使用するネットワークの障害を検知することができません。HADBサーバ間の通信で使用するネットワークと，HAモニタの監視パスとして使用するネットワークを同じにすると，ネットワーク障害をHAモニタが検知することができます。そのため，ここで説明しているとおりにノード間ネットワークを構成することを推奨します。

(c)　AWSエンドポイントへのネットワーク

AWS環境の場合，HAモニタは系（インスタンス）のリセットを，AWSのエンドポイントに障害が発生した系のインスタンスの強制停止を指示することで実現しています。そのため，リセットパスの代わりにAWSのエンドポイントへの接続が必要となります。詳細については，マニュアルHAモニタパブリッククラウド編の【AWS】AWSの設定を参照してください。

(d)　EFSアクセス用ネットワーク

ノード切り替え対象のファイルシステムとして使用するEFSに，プライマリノードおよびセカンダリノードからアクセスする際に使用するネットワークです。

メモ

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合，EFSアクセス用ネットワークは不要です。

EFSを使用した共有ディスク構成にする際のEFSの設定については，マニュアルHAモニタパブリッククラウド編のEFSの設定を参照してください。

「図18‒16　HAモニタありのマルチノード構成例（クラウドストレージ機能のシステムディレクトリ対応オプションが無効な場合）」での，EFSアクセス用ネットワークのIPアドレス，およびポート番号の設定例を次の表に示します。

表18‒15　EFSアクセス用ネットワークのIPアドレスとポート番号の設定例

項番

設定対象

IPアドレス

ポート番号

1

プライマリノード（hadb01）のインスタンス

172.16.0.21

2049

2

セカンダリノード（hadb02）のインスタンス

172.16.0.22

2049

3

セカンダリノード（hadb03）のインスタンス

172.16.0.23

2049

(4)　ストレージ構成

AWS環境でマルチノード機能を使用する場合，次のファイルシステム，ディスク，およびS3バケットを準備します。

ノードローカルのファイルシステム

「図18‒15　HAモニタありのマルチノード構成例（クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合）」または「図18‒16　HAモニタありのマルチノード構成例（クラウドストレージ機能のシステムディレクトリ対応オプションが無効な場合）」の場合，LOC001～LOC004およびCCH001～CCH004が該当します。

ノード切り替え対象のファイルシステム

「図18‒16　HAモニタありのマルチノード構成例（クラウドストレージ機能のシステムディレクトリ対応オプションが無効な場合）」の場合，FS001が該当します。

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合，ノード切り替え対象のファイルシステムは不要です。

ノードローカルのディスク（作業表用DBエリアファイル用）

「図18‒15　HAモニタありのマルチノード構成例（クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合）」または「図18‒16　HAモニタありのマルチノード構成例（クラウドストレージ機能のシステムディレクトリ対応オプションが無効な場合）」の場合，WRK001～WRK004が該当します。

S3バケット（作業表用DBエリアを除くDBエリア用）

「図18‒15　HAモニタありのマルチノード構成例（クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合）」または「図18‒16　HAモニタありのマルチノード構成例（クラウドストレージ機能のシステムディレクトリ対応オプションが無効な場合）」の場合，BKT001が該当します。

「図18‒15　HAモニタありのマルチノード構成例（クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合）」または「図18‒16　HAモニタありのマルチノード構成例（クラウドストレージ機能のシステムディレクトリ対応オプションが無効な場合）」の場合，次の表に示すファイルシステム，ディスク，およびS3バケットを用意します。

表18‒16　ストレージ構成例

格納先

名称

対象となるノード

用途

EBS(gp2)

LOC001

プライマリノード（hadb01）

ノードローカルのファイルシステム

LOC002

セカンダリノード（hadb02）

LOC003

セカンダリノード（hadb03）

LOC004

ワーカーノード（hadb04）

EBS(gp3)

CCH001

プライマリノード（hadb01）

ノードローカルのファイルシステム（キャッシュファイル用）

CCH002

セカンダリノード（hadb02）

CCH003

セカンダリノード（hadb03）

CCH004

ワーカーノード（hadb04）

WRK001

プライマリノード（hadb01）

ノードローカルのディスク（作業表用DBエリア用）

WRK002

セカンダリノード（hadb02）

WRK003

セカンダリノード（hadb03）

WRK004

ワーカーノード（hadb04）

Amazon S3

BKT001

全ノード

S3バケット（作業表用DBエリアを除くDBエリア用）※1

EFS

FS001

プライマリノード（hadb01）

ノード切り替え対象のファイルシステム※2

セカンダリノード（hadb02）

セカンダリノード（hadb03）

－

－

分散ファイルシステム

（凡例）

－：該当しません。

注※1

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合，システムログファイルおよびステータスファイルのデータを格納するS3オブジェクトも，S3バケットに格納されます。

注※2

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合，ノード切り替え対象のファイルシステムは不要です。

(a)　EBS(gp2)の使い方

EBS(gp2)は，ノードローカルのファイルシステムとして使用します。各インスタンスのOS用の領域（ルートボリューム）として使用するEBS(gp2)上のファイルシステム（/home下など）に，次のディレクトリを配置します。

サーバディレクトリ

DBディレクトリ

監査証跡の出力先ディレクトリ（監査証跡機能を使用する場合に必要）

統一フォーマット用監査証跡の出力先ディレクトリ（監査証跡機能を使用する場合に必要）

(b)　EBS(gp3)の使い方

EBS(gp3)は，次のファイルシステムおよびディスクとして使用します。

ノードローカルのファイルシステム（キャッシュファイル用）

キャッシュファイルの格納先とするファイルシステムをEBS(gp3)上にインスタンスごとに作成してください。

ここでは，このファイルシステムのマウントポイントを/HADB/ADBCCHとします。

重要

このファイルシステムは，キャッシュファイルの格納先ディレクトリを配置する以外の用途には使用しないでください。

ノードローカルのディスク（作業表用DBエリア用）

作業表用DBエリアとして使用するEBS(gp3)を各インスタンスに用意してください。

メモ

ノードローカルのディスクWRK001～WRK004に対応するブロックスペシャルファイル名は，「18.2.4　ストレージ構成」の「(3)　DBエリアファイル用のディスク」に記載されているブロックスペシャルファイル名と同じです。

(c)　Amazon S3の使い方

次のDBエリアのデータを格納するS3オブジェクトの格納先となるS3バケットを用意します。

データ用DBエリア

マスタディレクトリ用DBエリア

ディクショナリ用DBエリア

システム表用DBエリア

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合，S3バケットには次のファイルのデータを格納するS3オブジェクトも格納されます。

システムログファイル

ステータスファイル

(d)　EFSの使い方

EFSには，次のファイルシステムを配置します。

ノード切り替え対象のファイルシステム

次のノード切り替え対象のファイルシステムを，プライマリノードおよびセカンダリノードから参照できるように，EFS上に作成してください。

システムディレクトリ用のファイルシステム

ノード切り替え対象のファイルシステムを作成する際は，マニュアルHAモニタパブリッククラウド編のEFSの設定を参照してください。

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合，ノード切り替え対象のファイルシステムは作成不要です。

分散ファイルシステム

全インスタンスでNFSとして使用できるEFSに，次のディレクトリまたはファイルシステムを配置します。

監査証跡の保存先ディレクトリ（監査証跡機能を使用する場合に必要）

ADB_CSVREAD関数を使用してアクセスするCSVファイルを格納するディレクトリ（ADB_CSVREAD関数を使用した検索をする場合に必要）

外部データファイルを格納するファイルシステム（ファイルストレージに外部データを格納している場合）

重要

全ノードで，同じパスのディレクトリにマウントしてください。

18.34.3　システム構成例（クラウドストレージ機能を使用しない場合）

AWS環境でクラウドストレージ機能を使用しない場合のシステム構成例（HAモニタありのマルチノード構成）を次の図に示します。

図18‒17　クラウドストレージ機能を使用しない場合のシステム構成例（HAモニタありのマルチノード構成）

注※1

ノードローカルのディスクを使用します。

注※2

マルチアタッチ機能を使用したEBSボリュームを使用します。

メモ

AWS環境でもオンプレミス環境と同様に，HAモニタありのマルチノード構成にするか，HAモニタなしのマルチノード構成にするかによって，前提ソフトウェアやネットワーク構成に差異があります。この差異は，AWS環境であってもオンプレミス環境であっても基本的には同じです。

ここでは，HAモニタありのマルチノード構成についてだけシステム構成例を記載します。

(1)　前提ソフトウェア

AWS環境でHAモニタありのマルチノード構成を構築する場合，次のどれかの組み合わせのOSおよびソフトウェアが必要になります。

RHEL 8およびHAモニタ 01-76以降

RHEL 9およびHAモニタ 01-78以降

プライマリノードおよびセカンダリノードにHAモニタをインストールしてください。ワーカーノードには，HAモニタをインストールする必要はありません。

プライマリノードとセカンダリノードにインストールするHAモニタのバージョンは同じにしてください。

なお，RHEL 10では，AWS環境でHAモニタありのマルチノード構成は構築できません。

(2)　サーバ構成

「図18‒17　クラウドストレージ機能を使用しない場合のシステム構成例（HAモニタありのマルチノード構成）」は，4つのノード（hadb01，hadb02，hadb03，およびhadb04）から成るマルチノード構成です。プライマリノードはhadb01，セカンダリノードはhadb02およびhadb03，ワーカーノードはhadb04です。

AWS環境でマルチノード機能を使用する場合，各ノードのインスタンスの性能（CPU，メモリサイズなど）は同じである必要はありません。ただし，インスタンスの性能が異なる場合，SQL文を実行するノードによってSQL文の処理性能に差異が発生するおそれがあります。そのため，できる限り全ノードのインスタンスの性能を同じにすることを推奨します。

重要

詳細は「(4)　ストレージ構成」で説明していますが，DBエリアファイル用のディスクや，ノード切り替え対象のファイルシステムのマウント先のディスクを，マルチアタッチ機能を使用したEBSボリュームとする共有ディスク構成をとります。そのため，各インスタンスは，同一のアベイラビリティゾーン内に起動する必要があります。

メモ

ここでの説明は，全ノードのインスタンスでインスタンスタイプr5b.xlargeを使用していることを前提としています。

(3)　ネットワーク構成

HAモニタありのマルチノード構成をAWS環境で構築する場合，次に示すネットワークを使用します。各ネットワークは物理的に分けてください。

クライアント－サーバ間ネットワーク

ノード間ネットワーク

AWSエンドポイントへのネットワーク

(a)　クライアント－サーバ間ネットワーク

HADBクライアントとHADBサーバ間の通信で使用するネットワークです。

HADBクライアントは，エイリアスIPアドレスを使用してHADBサーバに接続します。そのため，マニュアルHAモニタパブリッククラウド編の【AWS】リソースの引き継ぎを参照して，エイリアスIPアドレスを設定してください。

「図18‒17　クラウドストレージ機能を使用しない場合のシステム構成例（HAモニタありのマルチノード構成）」での，クライアント−サーバ間ネットワークのIPアドレス，およびポート番号の設定例を次の表に示します。

表18‒17　クライアント−サーバ間ネットワークのIPアドレスとポート番号の設定例

項番

設定対象

IPアドレス

ポート番号

1

クライアントマシン

10.196.108.111

設定不要

2

プライマリノード（hadb01）のインスタンス

10.196.108.11

23650

3

セカンダリノード（hadb02）のインスタンス

10.196.108.12

23650

4

セカンダリノード（hadb03）のインスタンス

10.196.108.13

23650

5

ワーカーノード（hadb04）のインスタンス

10.196.108.14

23650

6

エイリアスIPアドレス

10.196.108.143

23650

(b)　ノード間ネットワーク

HADBサーバ間の通信，およびHAモニタの監視パスとして使用するネットワークです。ネットワークを構築する際に複線にする必要がある場合は，LinuxのBonding機能を使用してください。

Bonding機能の詳細については，OSのマニュアルを参照してください。HAモニタの監視パスの設定については，マニュアルHAモニタパブリッククラウド編の監視パスの設定を参照してください。

「図18‒17　クラウドストレージ機能を使用しない場合のシステム構成例（HAモニタありのマルチノード構成）」での，ノード間ネットワークのIPアドレス，およびポート番号の設定例を次の表に示します。

表18‒18　ノード間ネットワークのIPアドレスとポート番号の設定例

項番

設定対象

IPアドレス

ポート番号

1

プライマリノード（hadb01）のインスタンスのHADBサーバ間通信

172.16.0.11

23651

2

プライマリノード（hadb01）のインスタンスのHAモニタの監視パス

172.16.0.11

7777

3

セカンダリノード（hadb02）のインスタンスのHADBサーバ間通信

172.16.0.12

23651

4

セカンダリノード（hadb02）のインスタンスのHAモニタの監視パス

172.16.0.12

7777

5

セカンダリノード（hadb03）のインスタンスのHADBサーバ間通信

172.16.0.13

23651

6

セカンダリノード（hadb03）のインスタンスのHAモニタの監視パス

172.16.0.13

7777

7

ワーカーノード（hadb04）※のインスタンスのHADBサーバ間通信

172.16.0.14

23651

注※

ワーカーノードはHAモニタの管理対象外のため，HAモニタの監視パスの設定は不要です。

通常は，HADBサーバ間の通信で使用するネットワークと，HAモニタの監視パスとして使用するネットワークを分けます。ただし，この場合，HAモニタは，HADBサーバ間の通信で使用するネットワークの障害を検知することができません。HADBサーバ間の通信で使用するネットワークと，HAモニタの監視パスとして使用するネットワークを同じにすると，ネットワーク障害をHAモニタが検知することができます。そのため，ここで説明しているとおりにノード間ネットワークを構成することを推奨します。

(c)　AWSエンドポイントへのネットワーク

AWS環境の場合，HAモニタは系（インスタンス）のリセットを，AWSのエンドポイントに障害系インスタンスの強制停止を指示することで実現しています。そのため，リセットパスの代わりにAWSのエンドポイントへの接続が必要となります。詳細については，マニュアルHAモニタパブリッククラウド編の【AWS】AWSの設定を参照してください。

(4)　ストレージ構成

AWS環境でマルチノード機能を使用する場合，オンプレミス環境と同様に次のファイルシステムおよびディスクを準備します。

ノードローカルのファイルシステム

「図18‒17　クラウドストレージ機能を使用しない場合のシステム構成例（HAモニタありのマルチノード構成）」の場合，LOC001〜LOC004が該当します。

ノード切り替え対象のファイルシステム

「図18‒17　クラウドストレージ機能を使用しない場合のシステム構成例（HAモニタありのマルチノード構成）」の場合，FS001およびFS002が該当します。

DBエリアファイル用のディスク

「図18‒17　クラウドストレージ機能を使用しない場合のシステム構成例（HAモニタありのマルチノード構成）」の場合，LU001〜LU005およびWRK001〜WRK004が該当します。

ストレージ構成の方針

ノード切り替え対象のファイルシステム（FS001，FS002），およびDBエリアファイル用のディスク（LU001～LU005）では，各インスタンスでマルチアタッチするEBSボリュームを使用してください。また，EBSのボリュームタイプは，マルチアタッチ機能が使用できるEBSプロビジョンドIOPS SSD(io2)としてください。

上記以外は，EBS汎用SSD(gp2)とEBS汎用SSD(gp3)を使用してください。

上記の方針を踏まえて，次のようなファイルシステムおよびディスクを各インスタンスのストレージに用意します。

表18‒19　ストレージ構成例

格納先

名称

対象となるノード

用途

EBS(gp2)

LOC001

プライマリノード（hadb01）

ノードローカルのファイルシステム

LOC002

セカンダリノード（hadb02）

LOC003

セカンダリノード（hadb03）

LOC004

ワーカーノード（hadb04）

EBS(io2)

LU001～LU005

全ノード※

DBエリアファイル用のディスク

FS001～FS002

プライマリノード（hadb01）※

ノード切り替え対象のファイルシステム

セカンダリノード（hadb02）※

セカンダリノード（hadb03）※

EBS(gp3)

WRK001

プライマリノード（hadb01）

ノードローカルのディスク

WRK002

セカンダリノード（hadb02）

WRK003

セカンダリノード（hadb03）

WRK004

ワーカーノード（hadb04）

EFS

－

－

分散ファイルシステム

（凡例）

－：該当しません。

注※

各インスタンスでマルチアタッチするEBSボリュームを使用します。

(a)　EBS(gp2)の使い方

EBS(gp2)は，ノードローカルのファイルシステムとして使用します。各インスタンスのOS用の領域（ルートボリューム）として使用するEBS(gp2)上のファイルシステム（/home下など）に，次のディレクトリを配置します。

サーバディレクトリ

DBディレクトリ

監査証跡の出力先ディレクトリ（監査証跡機能を使用する場合に必要）

統一フォーマット用監査証跡の出力先ディレクトリ（監査証跡機能を使用する場合に必要）

マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリ（同義語検索を使用する場合に必要）

(b)　EBS(io2)の使い方

EBS(io2)は，ノード切り替え対象のファイルシステム，およびDBエリアファイルのディスクとして使用します。

ノード切り替え対象のファイルシステム

次の2つのノード切り替え対象のファイルシステムは，プライマリノードおよびセカンダリノードから参照できるように，マルチアタッチ機能を使用してプライマリノードおよびセカンダリノードにアタッチしたEBS(io2)上に作成してください。

システムディレクトリ用のファイルシステム

同義語辞書ファイルを格納するファイルシステム（同義語検索を使用する場合に必要）

メモ

ノード切り替え対象のファイルシステム（FS001，FS002）のVG名称とLV名称は，「18.2.4　ストレージ構成」の「(2)　ノード切り替え対象のファイルシステム」に記載されているVG名称とLV名称と同じです。

ノード切り替え対象のファイルシステムを作成する際は，マニュアルHAモニタパブリッククラウド編の業務ディスクの管理および業務ディスクの設定を参照してください。

DBエリアファイル用のディスク

次のDBエリアのDBエリアファイルごとにEBS(io2)を用意します。次のDBエリアとして使用するEBS(io2)は，全ノードから参照できるようにマルチアタッチ機能を使用して各インスタンスにアタッチしてください。

マスタディレクトリ用DBエリア

ディクショナリ用DBエリア

システム表用DBエリア

データ用DBエリア

メモ

DBエリアファイル用のディスク（LU001～LU005）と対応するDBエリアは，「18.2.4　ストレージ構成」の「(3)　DBエリアファイル用のディスク」に記載されているDBエリアと同じです。

(c)　EBS(gp3)の使い方

EBS(gp3)は，ノードローカルのディスクとして使用します。作業表用DBエリアとして使用するEBS(gp3)を各インスタンスに用意してください。

メモ

ノードローカルのディスクWRK001～WRK004に対応するブロックスペシャルファイル名は，「18.2.4　ストレージ構成」の「(3)　DBエリアファイル用のディスク」に記載されているブロックスペシャルファイル名と同じです。

(d)　EFSの使い方

全インスタンスでNFSとして使用できるEFSに，次のディレクトリまたはファイルシステムを配置します。

監査証跡の保存先ディレクトリ（監査証跡機能を使用する場合に必要）

ADB_CSVREAD関数を使用してアクセスするCSVファイルを格納するディレクトリ（ADB_CSVREAD関数を使用した検索をする場合に必要）

外部データファイルを格納するファイルシステム（ファイルストレージに外部データを格納している場合）

重要

全ノードで，同じパスのディレクトリにマウントしてください。

18.34.4　AWS環境でのマルチノード構成の構築

AWS環境でのマルチノード構成の構築手順について説明します。ここでの説明は，HAモニタありのマルチノード構成の新規導入を前提としています。

(1)　HAモニタのインストール

プライマリノードおよび全セカンダリノードのインスタンスにHAモニタをインストールしてください。HAモニタのインストール方法については，マニュアルHAモニタパブリッククラウド編のシステムの構築を参照してください。

メモ

ワーカーノードはHAモニタの管理対象外のため，ワーカーノードのインスタンスにはHAモニタをインストールする必要はありません。

(2)　HADBサーバのインストールおよび環境設定

HADBサーバをインストールする前に，全ノードのインスタンスで環境変数の設定を実施してください。

次に，全ノードのインスタンスにHADBサーバをインストールし，環境設定を行ってください。詳細については，「18.4.2　HADBサーバのインストールおよび環境設定」を参照してください。

(3)　HADBクライアントのインストールおよび環境設定

HADBクライアントのインストール，および環境設定については，マニュアルHADB　AP開発ガイドのHADBクライアントの環境設定（ODBCドライバおよびCLI関数を使用する場合）を参照してください。

(4)　udevルールの設定

メモ

クラウドストレージ機能を使用する場合は，udevルールの設定は不要なため，ここで説明している作業をする必要はありません。

各インスタンスで使用するノード切り替え対象のファイルシステム，およびDBエリアファイルで使用するディスク（EBS(io2)）のデバイス名を固定するために，全ノードでudevルールを設定してください。

手順

次のすべての操作は，OSのスーパユーザで実行してください。

udevルールファイルを作成する

/etc/udev/rules.dディレクトリ下に，ディスクのデバイス名を固定するためのudevルールファイル（/etc/udev/rules.d/99-hadb.rules）を作成してください。

＜udevルールファイルの指定例＞

ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="Amazon Elastic Block Store_vol0081d861d83bc10a6", SYMLINK+="hadb_sys"       ...[a]
ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="Amazon Elastic Block Store_vol0f6af0e90cad79723", SYMLINK+="hadb_syndict"   ...[b]
ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="Amazon Elastic Block Store_vol0db4be9c284a04033", SYMLINK+="hadb_mst"       ...[c]
ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="Amazon Elastic Block Store_vol0efe890a19d4b2330", SYMLINK+="hadb_dic"       ...[d]
ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="Amazon Elastic Block Store_vol0431a7bfcf7388f72", SYMLINK+="hadb_stbl"      ...[e]
ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="Amazon Elastic Block Store_vol0d5ca81d622e73022", SYMLINK+="hadb_tbl01"     ...[f]
ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="Amazon Elastic Block Store_vol05405d4eea38470e7", SYMLINK+="hadb_idx01"     ...[g]

［説明］

プライマリノードまたはセカンダリノードの場合，システムディレクトリ用のファイルシステムで使用するディスク（EBS(io2)）を指定してください。

プライマリノードまたはセカンダリノードの場合，同義語辞書ファイルを格納するファイルシステムで使用するディスク（EBS(io2)）を指定してください。

マスタディレクトリ用DBエリアで使用するディスク（EBS(io2)）を指定してください。

ディクショナリ用DBエリアで使用するディスク（EBS(io2)）を指定してください。

システム表用DBエリアで使用するディスク（EBS(io2)）を指定してください。

データ用DBエリア（ADBUTBL01）で使用するディスク（EBS(io2)）を指定してください。

データ用DBエリア（ADBUIDX01）で使用するディスク（EBS(io2)）を指定してください。

全ノードのOSを再起動する

設定したudevルールを反映させるために，全ノードのOSを再起動してください。

(5)　HAモニタの環境設定

プライマリノードおよび全セカンダリノードのインスタンスでHAモニタの環境設定をしてください。HAモニタの環境設定方法については，マニュアルHAモニタ Linux(R)(x86)編のシステムの構築，およびマニュアルHAモニタパブリッククラウド編のシステムの構築を参照してください。

ここでは，HAモニタの環境設定をする際に留意することについて説明します。

メモ

HAモニタの環境設定は，プライマリノードおよびセカンダリノードのインスタンスで実施します。ワーカーノードのインスタンスでは，HAモニタの環境設定は必要ありません。

(a)　環境変数の設定

設定する環境変数については，「18.4.4　HAモニタの環境設定」の「(1)　環境変数の設定」を参照してください。

(b)　sysdefファイルの作成

HAモニタのsysdefファイルを作成してください。

■指定値が決まっているオペランド

HAモニタのsysdefファイルに指定するオペランドのうち，次のオペランドは指定値が決まっています。

public_cloudオペランド

useを指定してください。

public_cloudオペランドの詳細については，マニュアルHAモニタパブリッククラウド編のパブリッククラウド環境固有のHAモニタの環境設定を参照してください。

usrcommandオペランド

このオペランドの指定は省略してください。

fence_resetオペランド，fence_scsiオペランド，およびfence_lanオペランド

これらのオペランドの指定は省略してください。

次のオペランドの指定値については，「18.4.4　HAモニタの環境設定」の「(2)　sysdefファイルの指定」を参照してください。

addressオペランド

monbegin_restartオペランド

multistandbyオペランド

termcmd_at_abortオペランド

メモ

上記のオペランド（public_cloudオペランドを除く）の詳細については，マニュアルHAモニタ Linux(R)(x86)編のHAモニタの環境設定（sysdef）を参照してください。

■sysdefファイルの指定例

前提条件

ここでの指定例は，次のシステム構成を前提としています。

「図18‒15　HAモニタありのマルチノード構成例（クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合）」

「図18‒16　HAモニタありのマルチノード構成例（クラウドストレージ機能のシステムディレクトリ対応オプションが無効な場合）」

「図18‒17　クラウドストレージ機能を使用しない場合のシステム構成例（HAモニタありのマルチノード構成）」

プライマリノード（hadb01）のsysdefファイルの指定例

environment  name hadb01,
             address 1,              ...1
             patrol 30,              ...2
             lan path11,             ...3
             lanport HAmon1;         ...4
function     pathpatrol 240,
             connect_retry 5:200,
             monbegin_restart nouse,
             multistandby use,
             termcmd_at_abort nouse,
             public_cloud use;       ...5

［説明］

このノードのリセット優先度を指定します。このノードは，プライマリノードのため，リセット優先度をいちばん高くする必要があるので1を指定します。

patrolオペランドには，30以下の値を指定してください。

HAモニタの監視パスとして使用するLANのホスト名を指定します。IPアドレス172.16.0.11に対応するホスト名path11を指定します。

HAモニタの監視パスとして使用するLANのサービス名を指定します。ポート番号7777に対応するサービス名HAmon1を指定します。

AWS環境でHAモニタを使用するため，useを指定します。

セカンダリノード（hadb02）のsysdefファイルの指定例

environment  name hadb02,
             address 2,              ...1
             patrol 30,              ...2
             lan path21,             ...3
             lanport HAmon1;         ...4
function     pathpatrol 240,
             connect_retry 5:200,
             monbegin_restart nouse,
             multistandby use,
             termcmd_at_abort nouse,
             public_cloud use;       ...5

［説明］

このノードのリセット優先度を指定します。このノードは，プライマリノードの次にリセット優先度を高くしたいため，2を指定します。

patrolオペランドには，30以下の値を指定してください。

HAモニタの監視パスとして使用するLANのホスト名を指定します。IPアドレス172.16.0.12に対応するホスト名path21を指定します。

HAモニタの監視パスとして使用するLANのサービス名を指定します。ポート番号7777に対応するサービス名HAmon1を指定します。

AWS環境でHAモニタを使用するため，useを指定します。

セカンダリノード（hadb03）のsysdefファイルの指定例

environment  name hadb03,
             address 3,              ...1
             patrol 30,              ...2
             lan path31,             ...3
             lanport HAmon1;         ...4
function     pathpatrol 240,
             connect_retry 5:200,
             monbegin_restart nouse,
             multistandby use,
             termcmd_at_abort nouse,
             public_cloud use;       ...5

［説明］

このノードのリセット優先度を指定します。このノードは，セカンダリノードhadb02の次にリセット優先度を高くしたいため，3を指定します。

patrolオペランドには，30以下の値を指定してください。

HAモニタの監視パスとして使用するLANのホスト名を指定します。IPアドレス172.16.0.13に対応するホスト名path31を指定します。

HAモニタの監視パスとして使用するLANのサービス名を指定します。ポート番号7777に対応するサービス名HAmon1を指定します。

AWS環境でHAモニタを使用するため，useを指定します。

(c)　serversファイルの作成（クラウドストレージ機能を使用する場合）

HAモニタのserversファイルを作成してください。

serversファイルの次のオペランドの指定値については「18.4.4　HAモニタの環境設定」の「(3)　serversファイルの指定」を参照してください。

nameオペランド

acttypeオペランド

termcommandオペランド

initialオペランド

lan_updownオペランド

servexec_retryオペランド

waitserv_execオペランド

ip_neckオペランド

uoc_neckオペランド

fs_neckオペランド

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合，fs_neckオペランドは省略してください。

actcommandオペランド

standbypriオペランド

serversファイルの次のオペランドについては，指定値が決まっています。

patrolcommandオペランド

このオペランドの指定は省略してください。

ptrlcmd_exオペランド

HADB用の設定を記述したサーバの監視コマンドファイルの絶対パスを指定してください。サーバの監視コマンドファイルはひな形を基に作成してください。作成方法については，「(i)　サーバの監視コマンドファイルの作成」，およびマニュアルHAモニタ Linux(R)(x86)編のサーバの監視コマンドの作成を参照してください。

ptrlcmd_ex_interオペランド

3を指定してください。

ptrlcmd_ex_retryオペランド

0を指定してください。

ptrlcmd_ex_tmoutオペランド

5を指定してください。

sby_termcommandオペランド

HADB用の設定を記述した待機サーバの停止コマンドの絶対パスを指定してください。待機サーバの停止コマンドはひな形を基に作成してください。作成方法については，「(j)　待機サーバの停止コマンドファイルの作成」，およびマニュアルHAモニタ Linux(R)(x86)編の待機サーバの停止時に実行するコマンドの作成を参照してください。

sby_ptrlcmd_exオペランド

HADB用の設定を記述した待機サーバの監視コマンドの絶対パスを指定してください。待機サーバの監視コマンドはひな形を基に作成してください。作成方法については，「(k)　待機サーバの監視コマンドファイルの作成」，およびマニュアルHAモニタ Linux(R)(x86)編の待機サーバの監視時に実行するコマンドの作成を参照してください。

sby_ptrlcmd_ex_interオペランド

3を指定してください。

sby_ptrlcmd_ex_retryオペランド

0を指定してください。

sby_ptrlcmd_ex_tmoutオペランド

5を指定してください。

scsi_deviceオペランド，dmmp_deviceオペランド

これらのオペランドの指定は省略してください。

diskオペランド

このオペランドの指定は省略してください。

fs_nameオペランド

システムディレクトリのファイルシステムであるEFSのDNS名を次のように指定してください。

"DNS名:/"

EFSのDNS名は，AWSのマネジメントコンソールを使用して確認してください。

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合，このオペランドは指定しないでください。

fs_mount_dirオペランド

システムディレクトリのパス（$DBDIR/ADBSYS）を指定してください。

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合，このオペランドは指定しないでください。

fs_mount_optオペランド

システムディレクトリのファイルシステムをマウントするためのマウントオプション（mountコマンドのオプション）を次のように指定してください。

"-t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport"

amazon-efs-utilsツールを使用して，システムディレクトリのファイルシステムをマウントする場合は，次のように指定してください。

"-t efs"

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合，このオペランドは指定しないでください。

vg_neckオペランド

このオペランドの指定は省略してください。

メモ

serversファイルに指定するオペランドの詳細については，マニュアルHAモニタ Linux(R)(x86)編のサーバ対応の環境設定（servers）を参照してください。

■serversファイルの指定例（クラウドストレージ機能を使用する場合）

前提条件

ここでの指定例は，次のシステム構成を前提としています。

「図18‒15　HAモニタありのマルチノード構成例（クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合）」

「図18‒16　HAモニタありのマルチノード構成例（クラウドストレージ機能のシステムディレクトリ対応オプションが無効な場合）」

プライマリノード（hadb01）のserversファイルの指定例

server name /HADB/server,                                         ...1
       alias HADB,
       acttype monitor,
       lan_updown use,
       fs_name "fs-0456f138cb4f7f9c3.efs.ap-northeast-1.amazonaws.com:/",    ...2
       fs_mount_dir /HADB/db/ADBSYS,                                         ...3
       fs_mount_opt "-t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport",    ...4
       actcommand "/HADB/scripts/multinode_act.sh",               ...5
       termcommand "/HADB/scripts/multinode_term.sh",             ...6
       ptrlcmd_ex "/HADB/scripts/multinode_patrol_ex.sh",         ...7
       ptrlcmd_ex_inter 3,
       ptrlcmd_ex_retry 0,
       ptrlcmd_ex_tmout 5,
       sby_termcommand  "/HADB/scripts/multinode_sby_term.sh",    ...8
       sby_ptrlcmd_ex  "/HADB/scripts/multinode_patrol_ex.sh",    ...9
       sby_ptrlcmd_ex_inter 3,
       sby_ptrlcmd_ex_retry 0,
       sby_ptrlcmd_ex_tmout 5,
       servexec_retry 0,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       fs_neck use,                  ...10
       initial online;               ...11

［説明］

サーバディレクトリの絶対パスを指定します。

システムディレクトリのファイルシステムであるEFSのDNS名を指定します。※

システムディレクトリのファイルシステムをマウントするマウントポイントの絶対パスを指定します。※

システムディレクトリのファイルシステムをマウントするためのmountコマンドのオプションを指定します。※

マルチノード機能で使用するサーバの起動コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの停止コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの監視コマンドの絶対パスを指定します。

マルチノード機能で使用する待機サーバの停止コマンドの絶対パスを指定します。

マルチノード機能で使用する待機サーバの監視コマンドの絶対パスを指定します。

システムディレクトリのファイルシステムに対しては，useを指定します。※

プライマリノードとするため，onlineを指定します。

注※

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合，このオペランドは指定しないでください。

セカンダリノード（hadb02）のserversファイルの指定例

server name /HADB/server,                                         ...1
       alias HADB,
       acttype monitor,
       lan_updown use,
       fs_name "fs-0456f138cb4f7f9c3.efs.ap-northeast-1.amazonaws.com:/",    ...2
       fs_mount_dir /HADB/db/ADBSYS,                                         ...3
       fs_mount_opt "-t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport",    ...4
       actcommand "/HADB/scripts/multinode_act.sh",               ...5
       termcommand "/HADB/scripts/multinode_term.sh",             ...6
       ptrlcmd_ex "/HADB/scripts/multinode_patrol_ex.sh",         ...7
       ptrlcmd_ex_inter 3,
       ptrlcmd_ex_retry 0,
       ptrlcmd_ex_tmout 5,
       sby_termcommand  "/HADB/scripts/multinode_sby_term.sh",    ...8
       sby_ptrlcmd_ex  "/HADB/scripts/multinode_patrol_ex.sh",    ...9
       sby_ptrlcmd_ex_inter 3,
       sby_ptrlcmd_ex_retry 0,
       sby_ptrlcmd_ex_tmout 5,
       servexec_retry 0,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       fs_neck use,                   ...10
       initial standby,               ...11
       standbypri 1;                  ...12

［説明］

サーバディレクトリの絶対パスを指定します。

システムディレクトリのファイルシステムであるEFSのDNS名を指定します。※

システムディレクトリのファイルシステムをマウントするマウントポイントの絶対パスを指定します。※

システムディレクトリのファイルシステムをマウントするためのmountコマンドのオプションを指定します。※

マルチノード機能で使用するサーバの起動コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの停止コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの監視コマンドの絶対パスを指定します。

マルチノード機能で使用する待機サーバの停止コマンドの絶対パスを指定します。

マルチノード機能で使用する待機サーバの監視コマンドの絶対パスを指定します。

システムディレクトリのファイルシステムに対しては，useを指定します。※

セカンダリノードとするため，standbyを指定します。

プライマリノードの切り替えが発生した際，新たにプライマリノードにするノードの優先順位を指定します。このノードの優先順位をいちばん高くしたいため，1を指定します。

注※

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合，このオペランドは指定しないでください。

セカンダリノード（hadb03）のserversファイルの指定例

server name /HADB/server,                                         ...1
       alias HADB,
       acttype monitor,
       lan_updown use,
       fs_name "fs-0456f138cb4f7f9c3.efs.ap-northeast-1.amazonaws.com:/",    ...2
       fs_mount_dir /HADB/db/ADBSYS,                                         ...3
       fs_mount_opt "-t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport",    ...4
       actcommand "/HADB/scripts/multinode_act.sh",               ...5
       termcommand "/HADB/scripts/multinode_term.sh",             ...6
       ptrlcmd_ex "/HADB/scripts/multinode_patrol_ex.sh",         ...7
       ptrlcmd_ex_inter 3,
       ptrlcmd_ex_retry 0,
       ptrlcmd_ex_tmout 5,
       sby_termcommand  "/HADB/scripts/multinode_sby_term.sh",    ...8
       sby_ptrlcmd_ex  "/HADB/scripts/multinode_patrol_ex.sh",    ...9
       sby_ptrlcmd_ex_inter 3,
       sby_ptrlcmd_ex_retry 0,
       sby_ptrlcmd_ex_tmout 5,
       servexec_retry 0,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       fs_neck use,                   ...10
       initial standby,               ...11
       standbypri 2;                  ...12

［説明］

サーバディレクトリの絶対パスを指定します。

システムディレクトリのファイルシステムであるEFSのDNS名を指定します。※

システムディレクトリのファイルシステムをマウントするマウントポイントの絶対パスを指定します。※

システムディレクトリのファイルシステムをマウントするためのmountコマンドのオプションを指定します。※

マルチノード機能で使用するサーバの起動コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの停止コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの監視コマンドの絶対パスを指定します。

マルチノード機能で使用する待機サーバの停止コマンドの絶対パスを指定します。

マルチノード機能で使用する待機サーバの監視コマンドの絶対パスを指定します。

システムディレクトリのファイルシステムに対しては，useを指定します。※

セカンダリノードとするため，standbyを指定します。

プライマリノードの切り替えが発生した際，新たにプライマリノードにするノードの優先順位を指定します。このノードの優先順位は，セカンダリノード（hadb02）の次にしたいため，2を指定します。

注※

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合，このオペランドは指定しないでください。

(d)　serversファイルの作成（クラウドストレージ機能を使用しない場合）

HAモニタのserversファイルを作成してください。

serversファイルの次のオペランドの指定値については「18.4.4　HAモニタの環境設定」の「(3)　serversファイルの指定」を参照してください。

nameオペランド

acttypeオペランド

termcommandオペランド

initialオペランド

diskオペランド

fs_nameオペランド

fs_mount_dirオペランド

fs_mount_optオペランド

lan_updownオペランド

servexec_retryオペランド

waitserv_execオペランド

ip_neckオペランド

uoc_neckオペランド

vg_neckオペランド

fs_neckオペランド

actcommandオペランド

standbypriオペランド

serversファイルの次のオペランドについては，指定値が決まっています。

patrolcommandオペランド

このオペランドの指定は省略してください。

ptrlcmd_exオペランド

HADB用の設定を記述したサーバの監視コマンドファイルの絶対パスを指定してください。サーバの監視コマンドファイルはひな形を基に作成してください。作成方法については，「(i)　サーバの監視コマンドファイルの作成」，およびマニュアルHAモニタ Linux(R)(x86)編のサーバの監視コマンドの作成を参照してください。

ptrlcmd_ex_interオペランド

3を指定してください。

ptrlcmd_ex_retryオペランド

0を指定してください。

ptrlcmd_ex_tmoutオペランド

5を指定してください。

sby_termcommandオペランド

HADB用の設定を記述した待機サーバの停止コマンドの絶対パスを指定してください。待機サーバの停止コマンドはひな形を基に作成してください。作成方法については，「(j)　待機サーバの停止コマンドファイルの作成」，およびマニュアルHAモニタ Linux(R)(x86)編の待機サーバの停止時に実行するコマンドの作成を参照してください。

sby_ptrlcmd_exオペランド

HADB用の設定を記述した待機サーバの監視コマンドの絶対パスを指定してください。待機サーバの監視コマンドはひな形を基に作成してください。作成方法については，「(k)　待機サーバの監視コマンドファイルの作成」，およびマニュアルHAモニタ Linux(R)(x86)編の待機サーバの監視時に実行するコマンドの作成を参照してください。

sby_ptrlcmd_ex_interオペランド

3を指定してください。

sby_ptrlcmd_ex_retryオペランド

0を指定してください。

sby_ptrlcmd_ex_tmoutオペランド

5を指定してください。

scsi_deviceオペランド，dmmp_deviceオペランド

これらのオペランドの指定は省略してください。

メモ

serversファイルに指定するオペランドの詳細については，マニュアルHAモニタ Linux(R)(x86)編のサーバ対応の環境設定（servers）を参照してください。

■serversファイルの指定例（クラウドストレージ機能を使用しない場合）

ここでの指定例は，「図18‒17　クラウドストレージ機能を使用しない場合のシステム構成例（HAモニタありのマルチノード構成）」のシステム構成を前提としています。

プライマリノード（hadb01）のserversファイルの指定例

server name /HADB/server,                                             ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb:/dev/vg_hadb02,                              ...2
       lan_updown use,
       fs_name /dev/vg_hadb/hadb_sys:/dev/vg_hadb02/hadb_syndict,     ...3
       fs_mount_dir /HADB/db/ADBSYS:/mnt/syndict,                     ...4
       fs_mount_opt "-t ext4 -o defaults,noatime,_netdev":            ...5
                    "-t ext4 -o defaults,noatime,_netdev",
       actcommand "/HADB/scripts/multinode_act.sh",                   ...6
       termcommand "/HADB/scripts/multinode_term.sh",                 ...7
       ptrlcmd_ex "/HADB/scripts/multinode_patrol_ex.sh",             ...8
       ptrlcmd_ex_inter 3,
       ptrlcmd_ex_retry 0,
       ptrlcmd_ex_tmout 5,
       sby_termcommand "/HADB/scripts/multinode_sby_term.sh",         ...9
       sby_ptrlcmd_ex "/HADB/scripts/multinode_patrol_ex.sh",         ...10
       sby_ptrlcmd_ex_inter 3,
       sby_ptrlcmd_ex_retry 0,
       sby_ptrlcmd_ex_tmout 5,
       servexec_retry 0,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use:use,         ...11
       fs_neck use:use,         ...12
       initial online;          ...13

［説明］

サーバディレクトリの絶対パスを指定します。

次のディレクトリを作成するファイルシステムがあるVGの絶対パスを指定します。

システムディレクトリ

同義語辞書ファイルの格納ディレクトリ（同義語検索を行う場合に作成するディレクトリです）

2.のディレクトリを作成するファイルシステムを作成したLVの絶対パスを指定します。

2.のディレクトリを作成するファイルシステムをマウントするマウントポイントの絶対パスを指定します。

2.のディレクトリを作成するファイルシステムをマウントするためのmountコマンドのオプションを指定します。

マルチノード機能で使用するサーバの起動コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの停止コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの監視コマンドの絶対パスを指定します。

マルチノード機能で使用する待機サーバの停止コマンドの絶対パスを指定します。

マルチノード機能で使用する待機サーバの監視コマンドの絶対パスを指定します。

2.のディレクトリを作成するファイルシステムがあるVGに対しては，useを指定します。

2.のディレクトリを作成するファイルシステムに対しては，useを指定します。

プライマリノードとするため，onlineを指定します。

セカンダリノード（hadb02）のserversファイルの指定例

server name /HADB/server,                                             ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb:/dev/vg_hadb02,                              ...2
       lan_updown use,
       fs_name /dev/vg_hadb/hadb_sys:/dev/vg_hadb02/hadb_syndict,     ...3
       fs_mount_dir /HADB/db/ADBSYS:/mnt/syndict,                     ...4
       fs_mount_opt "-t ext4 -o defaults,noatime,_netdev":            ...5
                    "-t ext4 -o defaults,noatime,_netdev",
       actcommand "/HADB/scripts/multinode_act.sh",                   ...6
       termcommand "/HADB/scripts/multinode_term.sh",                 ...7
       ptrlcmd_ex "/HADB/scripts/multinode_patrol_ex.sh",             ...8
       ptrlcmd_ex_inter 3,
       ptrlcmd_ex_retry 0,
       ptrlcmd_ex_tmout 5,
       sby_termcommand "/HADB/scripts/multinode_sby_term.sh",         ...9
       sby_ptrlcmd_ex "/HADB/scripts/multinode_patrol_ex.sh",         ...10
       sby_ptrlcmd_ex_inter 3,
       sby_ptrlcmd_ex_retry 0,
       sby_ptrlcmd_ex_tmout 5,
       servexec_retry 0,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use:use,      ...11
       fs_neck use:use,      ...12
       initial standby,      ...13
       standbypri 1;         ...14

［説明］

サーバディレクトリの絶対パスを指定します。

次のディレクトリを作成するファイルシステムがあるVGの絶対パスを指定します。

システムディレクトリ

同義語辞書ファイルの格納ディレクトリ（同義語検索を行う場合に作成するディレクトリです）

2.のディレクトリを作成するファイルシステムを作成したLVの絶対パスを指定します。

2.のディレクトリを作成するファイルシステムをマウントするマウントポイントの絶対パスを指定します。

2.のディレクトリを作成するファイルシステムをマウントするためのmountコマンドのオプションを指定します。

マルチノード機能で使用するサーバの起動コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの停止コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの監視コマンドの絶対パスを指定します。

マルチノード機能で使用する待機サーバの停止コマンドの絶対パスを指定します。

マルチノード機能で使用する待機サーバの監視コマンドの絶対パスを指定します。

2.のディレクトリを作成するファイルシステムがあるVGに対しては，useを指定します。

2.のディレクトリを作成するファイルシステムに対しては，useを指定します。

セカンダリノードとするため，standbyを指定します。

プライマリノードの切り替えが発生した際，新たにプライマリノードにするノードの優先順位を指定します。このノードの優先順位をいちばん高くしたいため，1を指定します。

セカンダリノード（hadb03）のserversファイルの指定例

server name /HADB/server,                                             ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb:/dev/vg_hadb02,                              ...2
       lan_updown use,
       fs_name /dev/vg_hadb/hadb_sys:/dev/vg_hadb02/hadb_syndict,     ...3
       fs_mount_dir /HADB/db/ADBSYS:/mnt/syndict,                     ...4
       fs_mount_opt "-t ext4 -o defaults,noatime,_netdev":            ...5
                    "-t ext4 -o defaults,noatime,_netdev",
       actcommand "/HADB/scripts/multinode_act.sh",                   ...6
       termcommand "/HADB/scripts/multinode_term.sh",                 ...7
       ptrlcmd_ex "/HADB/scripts/multinode_patrol_ex.sh",             ...8
       ptrlcmd_ex_inter 3,
       ptrlcmd_ex_retry 0,
       ptrlcmd_ex_tmout 5,
       sby_termcommand "/HADB/scripts/multinode_sby_term.sh",         ...9
       sby_ptrlcmd_ex "/HADB/scripts/multinode_patrol_ex.sh",         ...10
       sby_ptrlcmd_ex_inter 3,
       sby_ptrlcmd_ex_retry 0,
       sby_ptrlcmd_ex_tmout 5,
       servexec_retry 0,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use:use,          ...11
       fs_neck use:use,          ...12
       initial standby,          ...13
       standbypri 2;             ...14

［説明］

サーバディレクトリの絶対パスを指定します。

次のディレクトリを作成するファイルシステムがあるVGの絶対パスを指定します。

システムディレクトリ

同義語辞書ファイルの格納ディレクトリ（同義語検索を行う場合に作成するディレクトリです）

2.のディレクトリを作成するファイルシステムを作成したLVの絶対パスを指定します。

2.のディレクトリを作成するファイルシステムをマウントするマウントポイントの絶対パスを指定します。

2.のディレクトリを作成するファイルシステムをマウントするためのmountコマンドのオプションを指定します。

マルチノード機能で使用するサーバの起動コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの停止コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの監視コマンドの絶対パスを指定します。

マルチノード機能で使用する待機サーバの停止コマンドの絶対パスを指定します。

マルチノード機能で使用する待機サーバの監視コマンドの絶対パスを指定します。

2.のディレクトリを作成するファイルシステムがあるVGに対しては，useを指定します。

2.のディレクトリを作成するファイルシステムに対しては，useを指定します。

セカンダリノードとするため，standbyを指定します。

プライマリノードの切り替えが発生した際，新たにプライマリノードにするノードの優先順位を指定します。このノードの優先順位は，セカンダリノード（hadb02）の次にしたいため，2を指定します。

(e)　HAモニタの接続構成設定ファイルの作成（connectionファイルの作成）

AWS環境の場合，接続構成設定ファイルを手動で作成してください。手動での作成方法については，マニュアルHAモニタ Linux(R)(x86)編のHAモニタの接続構成設定ファイルの作成を参照してください。接続構成設定ファイルには，プライマリノードおよびセカンダリノードに作成したsysdefファイルのnameオペランドに指定したホスト名と，監視パスに使用するIPアドレスの組を指定します。

■HAモニタの接続構成設定ファイル（connectionファイル）の指定例

HAモニタの接続構成設定ファイル（connectionファイル）の指定例を次に示します。指定内容は，プライマリノードおよびセカンダリノードで同じにしてください。なお，ここでの指定例は，次のシステム構成を前提としています。

「図18‒15　HAモニタありのマルチノード構成例（クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合）」

「図18‒16　HAモニタありのマルチノード構成例（クラウドストレージ機能のシステムディレクトリ対応オプションが無効な場合）」

「図18‒17　クラウドストレージ機能を使用しない場合のシステム構成例（HAモニタありのマルチノード構成）」

hadb01 LAN 172.16.0.11;       ...1
hadb02 LAN 172.16.0.12;       ...2
hadb03 LAN 172.16.0.13;       ...3

［説明］

プライマリノード（hadb01）の監視パスで使用するIPアドレス172.16.0.11を指定します。

セカンダリノード（hadb02）の監視パスで使用するIPアドレス172.16.0.12を指定します。

セカンダリノード（hadb03）の監視パスで使用するIPアドレス172.16.0.13を指定します。

HAモニタの接続構成設定ファイルの指定方法の詳細については，マニュアルHAモニタ Linux(R)(x86)編のHAモニタの接続構成設定ファイルの作成を参照してください。

(f)　コマンド用環境変数定義ファイルの作成

HAモニタとの連携のために，コマンド用環境変数定義ファイルを作成してください。

$ADBDIR/sample/scripts/multinode.envが，コマンド用環境変数定義ファイルのひな形です。このひな形をコピーして，次の値を修正してください。

環境変数ADBMGR

HADB管理者（OSユーザ）のユーザ名を指定してください。

環境変数ADBALIAS

HAモニタのserversファイルのaliasオペランドの指定値を指定してください。

環境変数ADBDIR

サーバディレクトリの絶対パスを指定してください。

■コマンド用環境変数定義ファイルの指定例

この例では，コマンド用環境変数定義ファイルを/HADB/scripts/multinode.envに格納しているとします。指定内容は，プライマリノードおよびセカンダリノードで同じにしてください。

#!/bin/sh

# The environment variables for HADB
export ADBMGR=adbmanager                  ...1
export ADBALIAS=HADB                      ...2
export ADBDIR=/HADB/server                ...3

［説明］

HADB管理者（OSユーザ）のユーザ名adbmanagerを指定します。

HAモニタのserversファイルのaliasオペランドの指定値であるHADBを指定します。

サーバディレクトリの絶対パスを指定します。

(g)　サーバの起動コマンドファイルの作成

HAモニタとの連携のために，サーバの起動コマンドファイルを作成してください。

$ADBDIR/sample/scripts/multinode_act.shが，サーバの起動コマンドファイルのひな形です。このひな形をコピーして，次の個所を修正してください。

source文

source文の引数に，コマンド用環境変数定義を指定したファイルの絶対パスを指定してください。

サーバの起動コマンドファイルの指定例については，「18.4.4　HAモニタの環境設定」の「(5)　各ファイルの指定例（系のリセットを使用する場合）」の「(e)　サーバの起動コマンドファイルの指定例」を参照してください。

(h)　サーバの停止コマンドファイルの作成

HAモニタとの連携のために，サーバの停止コマンドファイルを作成してください。

$ADBDIR/sample/scripts/multinode_term.shが，サーバの停止コマンドファイルのひな形です。このひな形をコピーして，次の個所を修正してください。

source文

source文の引数に，コマンド用環境変数定義を指定したファイルの絶対パスを指定してください。

サーバの停止コマンドファイルの指定例については，「18.4.4　HAモニタの環境設定」の「(5)　各ファイルの指定例（系のリセットを使用する場合）」の「(f)　サーバの停止コマンドファイルの指定例」を参照してください。

(i)　サーバの監視コマンドファイルの作成

HAモニタとの連携のために，サーバの監視コマンドファイルを作成してください。

$ADBDIR/sample/scripts/multinode_patrol_ex.shが，サーバの監視コマンドファイルのひな形です。このひな形をコピーして，次の個所を修正してください。

source文

source文の引数に，コマンド用環境変数定義を指定したファイルの絶対パスを指定してください。

■サーバの監視コマンドファイルの指定例

この例では，サーバの監視コマンドファイルを/HADB/scripts/multinode_patrol_ex.shに格納しているとします。指定内容は，プライマリノードおよびセカンダリノードで同じにしてください。

#!/bin/sh

# Sample of the ptrlcmd_ex for HADB

SU=/bin/su

# Setting environment variables for HADB
source /HADB/scripts/multinode.env                  ...1

# Execute adbmonitor command for primary node
$SU - $ADBMGR -c "'$ADBDIR'/bin/adbmonitor -i"
ADBMONRES=$?
if [ "$ADBMONRES" = "0" -o "$ADBMONRES" = "4" ]
then
  exit 0
else
  exit $ADBMONRES
fi

［説明］

source文には，コマンド用環境変数定義ファイルの絶対パス/HADB/scripts/multinode.envを指定します。

(j)　待機サーバの停止コマンドファイルの作成

HAモニタとの連携のために，待機サーバの停止コマンドファイルを作成してください。

$ADBDIR/sample/scripts/multinode_sby_term.shが，待機サーバの停止コマンドファイルのひな形です。このひな形をコピーして，次の個所を修正してください。

source文

source文の引数に，コマンド用環境変数定義を指定したファイルの絶対パスを指定してください。

■待機サーバの停止コマンドファイルの指定例

この例では，待機サーバの停止コマンドファイルを/HADB/scripts/multinode_sby_term.shに格納しているとします。指定内容は，プライマリノードおよびセカンダリノードで同じにしてください。

#!/bin/sh

# Sample of the sby_termcommand for HADB

STS_ACTIVE="ACTIVE"
STS_STOP="STOP"
STS_STARTING="STARTING"
STS_STOPPING="STOPPING"
STS_ABORT="ABORT"
STS_QUIESCE="QUIESCE"
STS_OFFLINE="OFFLINE"
STS_CHGMODE="CHGMODE"
STS_STOPWAIT="STOPWAIT"
STS_COREDUMP="COREDUMP"
STS_FORCE="FORCE"
STS_MAINTNCE="MAINTNCE"

AWK=/bin/awk
ECHO=/bin/echo
GREP=/bin/grep
SU=/bin/su

# Setting environment variables for HADB
source /HADB/scripts/multinode.env                  ...1

# Execute adbstop command
while :
do

  GET_STS=`$SU - $ADBMGR -c "'$ADBDIR'/bin/adbls -d srv 2>/dev/null" | $GREP -v SVID | $AWK '{ if ($1 ~ /[0-9]+/) { print $2 } else { print $1 } }'`

  case "$1" in
  "-e" )
    # Normal stop operations of secondary node.
    # (when the monsbystp command is executed.)
    if [ "$GET_STS" = "$STS_ACTIVE"   -o ¥
         "$GET_STS" = "$STS_STOPPING" -o "$GET_STS" = "$STS_QUIESCE"  -o ¥
         "$GET_STS" = "$STS_OFFLINE"  -o "$GET_STS" = "$STS_CHGMODE"  -o ¥
         "$GET_STS" = "$STS_STOPWAIT" -o "$GET_STS" = "$STS_MAINTNCE" ]
    then
      $SU - $ADBMGR -c "'$ADBDIR'/bin/adbstop --cancel --node"
      STOPRES=$?
      if [ "$STOPRES" = "0" -o "$STOPRES" = "4" ]
      then
        break
      fi
    elif [ "$GET_STS" = "$STS_STARTING" ]
    then
      break
    else
      break
    fi

    ;;
  "-c" )
    break

    ;;
  esac

done

# stop HADB
if [ "$GET_STS" = "$STS_STARTING" ]
then
  ADB_ID=`$SU - $ADBMGR -c "ps x" | $GREP adbsrvd | $GREP -v $GREP | awk '{print $1}'`
  $SU - $ADBMGR -c "kill $ADB_ID"

  exit 0
fi

# Wait for end of HADB
while [ "$GET_STS" = "$STS_ACTIVE"   -o "$GET_STS" = "$STS_STARTING" -o ¥
        "$GET_STS" = "$STS_STOPPING" -o "$GET_STS" = "$STS_QUIESCE"  -o ¥
        "$GET_STS" = "$STS_OFFLINE"  -o "$GET_STS" = "$STS_CHGMODE"  -o ¥
        "$GET_STS" = "$STS_STOPWAIT" -o "$GET_STS" = "$STS_COREDUMP" -o ¥
        "$GET_STS" = "$STS_MAINTNCE" ]
do
  GET_STS=`$SU - $ADBMGR -c "'$ADBDIR'/bin/adbls -d srv 2>/dev/null" | $GREP -v SVID | $AWK '{ if ($1 ~ /[0-9]+/) { print $2 } else { print $1 } }'`
  sleep 1
done

exit 0

［説明］

source文には，コマンド用環境変数定義ファイルの絶対パス/HADB/scripts/multinode.envを指定します。

(k)　待機サーバの監視コマンドファイルの作成

HAモニタとの連携のために，待機サーバの監視コマンドファイルを作成してください。

待機サーバの監視コマンドファイルのひな形は，サーバの監視コマンドファイルのひな形と同じく$ADBDIR/sample/scripts/multinode_patrol_ex.shです。このひな形をコピーして，次の個所を修正してください。

source文

source文の引数に，コマンド用環境変数定義を指定したファイルの絶対パスを指定してください。

■待機サーバの監視コマンドファイルの指定例

待機サーバの監視コマンドファイルは，サーバの監視コマンドファイルと同じ内容です。指定例については，「(i)　サーバの監視コマンドファイルの作成」を参照してください。

(l)　HAモニタの起動設定

OSの起動時に，自動的にHAモニタが起動するように設定してください。設定方法については，マニュアルHAモニタ Linux(R)(x86)編のシステムの起動からサーバの起動までを自動化するを参照してください。　

(6)　各ノードでのサーバ定義の作成

サーバ定義の作成については，「18.4.5　各ノードでのサーバ定義の作成」を参照してください。

クラウドストレージ機能を使用する場合は，クラウドストレージ機能に関するオペランドを各ノードのサーバ定義に指定してください。クラウドストレージ機能に関するオペランドについては，「7.2.17　クラウドストレージ機能に関するオペランド（set形式）」を参照してください。

クラウドストレージ機能に関するオペランドの指定例を次に示します。

（例）

set adb_sys_cld_aws_region = ap-northeast-1
set adb_sys_cld_aws_bucket = adbbucket
set adb_sys_cld_cache_path = /HADB/ADBCCH

(7)　クライアント定義の作成

クライアント定義の作成については，「18.4.6　クライアント定義の作成」を参照してください。

(8)　クライアント定義の集中管理機能を使用する場合の環境設定

クライアント定義の集中管理機能を使用する場合の環境設定については，「18.4.7　クライアント定義の集中管理機能を使用する場合の環境設定」を参照してください。

(9)　データベースの作成

クラウドストレージ機能を使用するかどうか，およびクラウドストレージ機能のシステムディレクトリ対応オプションを有効にするかどうかによってデータベースの作成手順が異なります。

■クラウドストレージ機能を使用する場合（クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合）

データベースの作成手順を次に示します。

手順

プライマリノードでデータベースを初期設定する

adbinitコマンドをプライマリノードで実行し，データベースを初期設定してください。adbinitコマンドの初期設定オプションの指定例（プライマリノード）を次に示します。

set adb_init_dbarea_initialize = Y                  ...a
set adb_init_wrk_blk_path = /dev/mapper/WRK001      ...b
set adb_init_cld_sysdir_storage = Y                 ...c
set adb_init_cld_aws_region = ap-northeast-1        ...d
set adb_init_cld_aws_bucket = adbbucket             ...e
set adb_init_cld_cache_path = /HADB/ADBCCH          ...f
adbinitdbarea -n ADBUTBL01 -p 32 -s 32              ...g
adbinitdbarea -n ADBUIDX01 -p 32 -s 32              ...h

［説明］

DBエリアを初期化するため，Yを指定します。

作業表用DBエリアファイルとして割り当てるブロックスペシャルファイル名を指定します。

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にするためにYを指定します。

S3オブジェクトの格納先のリージョン名（ap-northeast-1）を指定します。

S3オブジェクトの格納先S3バケット名（adbbucket）を指定します。

S3オブジェクトのキャッシュファイルの格納先ディレクトリ名（/HADB/ADBCCH）を指定します。

データ用DBエリア（ADBUTBL01）の指定をします。DBエリアのページサイズには32キロバイトを，セグメントサイズには32メガバイトを指定します。

データ用DBエリア（ADBUIDX01）の指定をします。DBエリアのページサイズには32キロバイトを，セグメントサイズには32メガバイトを指定します。

セカンダリノードおよびワーカーノードでDBディレクトリを作成する

adbinitコマンドをセカンダリノードおよびワーカーノードで実行してください。adbinitコマンドの初期設定オプションの指定例（セカンダリノードおよびワーカーノード）を次に示します。

set adb_init_dbarea_initialize = N                      ...a
set adb_init_wrk_blk_path = /dev/mapper/WRK002          ...b
set adb_init_cld_sysdir_storage = Y                     ...c
set adb_init_cld_aws_region = ap-northeast-1            ...d
set adb_init_cld_aws_bucket = adbbucket                 ...e
set adb_init_cld_cache_path = /HADB/ADBCCH              ...f
adbinitdbarea -n ADBUTBL01 -p 32 -s 32                  ...g
adbinitdbarea -n ADBUIDX01 -p 32 -s 32                  ...h

［説明］

DBディレクトリの枠組みだけを作成するため，Nを指定します。

作業表用DBエリアファイルとして割り当てるブロックスペシャルファイル名を指定します。

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にするためにYを指定します。

S3オブジェクトの格納先のリージョン名（ap-northeast-1）を指定します。

S3オブジェクトの格納先S3バケット名（adbbucket）を指定します。

S3オブジェクトのキャッシュファイルの格納先ディレクトリ名（/HADB/ADBCCH）を指定します。

データ用DBエリア（ADBUTBL01）を作成します。DBエリアのページサイズには32キロバイトを，セグメントサイズには32メガバイトを指定します。

データ用DBエリア（ADBUIDX01）を作成します。DBエリアのページサイズには32キロバイトを，セグメントサイズには32メガバイトを指定します。

メモ

プライマリノードで指定した初期設定オプションとは，次の点が異なります。

adb_init_dbarea_initializeオペランドにはNを指定して，DBディレクトリの枠組みだけを作成します。

adb_init_wrk_blk_pathオペランドには，ノードごとに割り当てる作業表用DBエリアファイルのブロックスペシャルファイル名を指定します。

■クラウドストレージ機能を使用する場合（クラウドストレージ機能のシステムディレクトリ対応オプションが無効な場合）

データベースの作成手順を次に示します。

手順

ノード切り替え対象のファイルシステムを初期化する

システムディレクトリ用のファイルシステムであるEFSを，AWSのマネジメントコンソールなどを使用して作成してください。

プライマリノードでデータベースを初期設定する

最初に，プライマリノードでOSのmountコマンドを実行し，$DBDIR/ADBSYSにシステムディレクトリ用のEFSをマウントしてください。

次に，adbinitコマンドをプライマリノードで実行し，データベースを初期設定してください。adbinitコマンドの初期設定オプションの指定例（プライマリノード）を次に示します。

set adb_init_dbarea_initialize = Y                  ...a
set adb_init_wrk_blk_path = /dev/mapper/WRK001      ...b
set adb_init_cld_aws_region = ap-northeast-1        ...c
set adb_init_cld_aws_bucket = adbbucket             ...d
set adb_init_cld_cache_path = /HADB/ADBCCH          ...e
adbinitdbarea -n ADBUTBL01 -p 32 -s 32              ...f
adbinitdbarea -n ADBUIDX01 -p 32 -s 32              ...g

［説明］

DBエリアを初期化するため，Yを指定します。

作業表用DBエリアファイルとして割り当てるブロックスペシャルファイル名を指定します。

S3オブジェクトの格納先のリージョン名（ap-northeast-1）を指定します。

S3オブジェクトの格納先S3バケット名（adbbucket）を指定します。

S3オブジェクトのキャッシュファイルの格納先ディレクトリ名（/HADB/ADBCCH）を指定します。

データ用DBエリア（ADBUTBL01）の指定をします。DBエリアのページサイズには32キロバイトを，セグメントサイズには32メガバイトを指定します。

データ用DBエリア（ADBUIDX01）の指定をします。DBエリアのページサイズには32キロバイトを，セグメントサイズには32メガバイトを指定します。

adbinitコマンドの実行後，システムディレクトリ用のEFSをアンマウントしてください。

セカンダリノードおよびワーカーノードでDBディレクトリを作成する

adbinitコマンドをセカンダリノードおよびワーカーノードで実行してください。adbinitコマンドの初期設定オプションの指定例（セカンダリノードおよびワーカーノード）を次に示します。

set adb_init_dbarea_initialize = N                      ...a
set adb_init_wrk_blk_path = /dev/mapper/WRK002          ...b
set adb_init_cld_aws_region = ap-northeast-1            ...c
set adb_init_cld_aws_bucket = adbbucket                 ...d
set adb_init_cld_cache_path = /HADB/ADBCCH              ...e
adbinitdbarea -n ADBUTBL01 -p 32 -s 32                  ...f
adbinitdbarea -n ADBUIDX01 -p 32 -s 32                  ...g

［説明］

DBディレクトリの枠組みだけを作成するため，Nを指定します。

作業表用DBエリアファイルとして割り当てるブロックスペシャルファイル名を指定します。

S3オブジェクトの格納先のリージョン名（ap-northeast-1）を指定します。

S3オブジェクトの格納先S3バケット名（adbbucket）を指定します。

S3オブジェクトのキャッシュファイルの格納先ディレクトリ名（/HADB/ADBCCH）を指定します。

データ用DBエリア（ADBUTBL01）を作成します。DBエリアのページサイズには32キロバイトを，セグメントサイズには32メガバイトを指定します。

データ用DBエリア（ADBUIDX01）を作成します。DBエリアのページサイズには32キロバイトを，セグメントサイズには32メガバイトを指定します。

メモ

プライマリノードで指定した初期設定オプションとは，次の点が異なります。

adb_init_dbarea_initializeオペランドにはNを指定して，DBディレクトリの枠組みだけを作成します。

adb_init_wrk_blk_pathオペランドには，ノードごとに割り当てる作業表用DBエリアファイルのブロックスペシャルファイル名を指定します。

■クラウドストレージ機能を使用しない場合

データベースの作成手順については，「18.4.8　データベースの作成」を参照してください。

また，次のことを実施してください。

各インスタンスでマルチアタッチする必要があるEBSボリュームついては，事前にアタッチしてACTIVEにしておいてください。

初期設定オプションに指定する次のDBエリアのブロックスペシャルファイル名には，「(4)　udevルールの設定」で指定したudevルールで固定したデバイス名（/dev/hadb_mstなど）を指定してください。

マスタディレクトリ用DBエリア

ディクショナリ用DBエリア

システム表用DBエリア

データ用DBエリア

18.34.5　データベースのバックアップ（AWS環境の場合）

ここでは，AWS環境でのバックアップの取得方法，およびバックアップを使用したデータベースの回復方法について説明します。

(1)　バックアップの取得方法

データベースのバックアップを取得する手順を説明します。

メモ

バックアップを取得する前に，「10.3.1　バックアップの取得方法」の「(1)　バックアップを取得するタイミング」を参照して，バックアップ取得時の留意事項を確認してください。

手順

HADBサーバの稼働モードを静止モードに変更する

次のコマンドをプライマリノードで実行してください。

adbchgsrvmode --quiescence

プライマリノードのHADBサーバの稼働モードが静止モードに変更されます。

バックアップを取得する

＜クラウドストレージ機能を使用している場合＞

「22.1.1　バックアップの取得方法とデータベースの回復方法（AWS環境の場合）」の「(1)　バックアップの取得方法（AWS環境の場合）」の2.の方法でバックアップを取得してください。

重要

マルチノード機能を使用している場合，次のバックアップ対象ファイルはEBSではなくEFSに格納されています。そのため，次のファイルのバックアップの取得方法は，上記の参照先に記載されている方法と異なります。

コマンドステータスファイル

システムログファイル

ステータスファイル

上記のファイルのバックアップを取得する際は，上記のファイルのコピーを取得してください。ファイルをコピーする場合は，スパースファイルにしないでください。

＜クラウドストレージ機能を使用していない場合＞

次の表に示すファイルのバックアップを取得してください。

表18‒20　バックアップ対象ファイル

バックアップ対象ファイルの種類

バックアップ対象ファイル

バックアップ対象ファイルの格納ディレクトリ

ファイル

コマンドステータスファイル

$DBDIR/ADBSYS/ADBUTL

システムログファイル

$DBDIR/ADBSYS/ADBSLG

ステータスファイル

$DBDIR/ADBSYS/ADBSTS

アーカイブファイル

アーカイブディレクトリ

チャンクアーカイブ機能を使用している場合にバックアップを取得してください。

同義語辞書ファイル

同義語辞書ファイルの格納ディレクトリ

同義語検索を行っている場合にバックアップを取得してください。

ブロックスペシャルファイル

マスタディレクトリ用DBエリアファイル

$DBDIR/ADBMST

ディクショナリ用DBエリアファイル

$DBDIR/ADBDIC

システム表用DBエリアファイル

$DBDIR/ADBSTBL

データ用DBエリアファイル

$DBDIRに格納されているデータ用DBエリアファイル

次のどちらかの方法でバックアップを取得します。

バックアップ対象ファイルが格納されているすべてのEBSのEBSスナップショットを取得する

EBSスナップショットを取得する方法については，AWSのドキュメントのAmazon EBSスナップショットを参照してください。

バックアップ対象ファイルをコピーする

ファイルをコピーする場合は，スパースファイルにしないでください。

重要

バックアップ対象ファイルの格納ディレクトリ下にあるファイルがシンボリックリンクの場合，リンク先のファイルまたはブロックスペシャルファイルのバックアップを取得してください。

HADBサーバの稼働モードを元に戻す

次のコマンドをプライマリノードで実行してください。

adbchgsrvmode --normal

1.で変更した稼働モードを元に戻します。上記は，稼働モードを通常モードに戻す場合の例です。

(2)　バックアップからの回復

バックアップからデータベースを回復します。

手順

マルチノード構成のHADBサーバを正常終了する

正常終了方法については，「18.5.2　マルチノード構成のHADBサーバの終了方法」を参照してください。

バックアップを使用してデータベースを回復する

＜クラウドストレージ機能を使用している場合＞

「22.1.1　バックアップの取得方法とデータベースの回復方法（AWS環境の場合）」の「(2)　データベースの回復方法（AWS環境の場合）」の2.の方法でデータベースを回復してください。

重要

マルチノード機能を使用している場合，次のファイルはEBSではなくEFSに格納されています。そのため，バックアップからファイルを回復する方法は，上記の参照先に記載されている方法と異なります。

コマンドステータスファイル

システムログファイル

ステータスファイル

バックアップから上記のファイルを回復する場合は，バックアップの取得時にコピーしておいたファイルを元の位置に戻してください。

＜クラウドストレージ機能を使用していない場合＞

EBSスナップショットでバックアップを取得している場合

EBSスナップショットを使用してEBSを復元してください。復元方法については，AWSのドキュメントのスナップショットからのAmazon EBSボリュームの復元およびAmazon EBSボリュームの初期化を参照してください。

バックアップ対象ファイルをコピーしている場合

コピーしたファイルを元の位置に戻してください。

udevルールファイルを変更する

EBSスナップショットを使用してEBSを復元した場合，全ノードのudevルールファイルに指定したEBSスナップショットの作成元のディスクを，復元したEBSのディスクに変更してください。

この操作は，OSのスーパユーザで実行してください。

クラウドストレージ機能を使用している場合は，この操作は不要です。

全ノードのOSを再起動する

変更したudevルールを反映させるために，全ノードのOSを再起動してください。

この操作は，OSのスーパユーザで実行してください。

クラウドストレージ機能を使用している場合は，この操作は不要です。

マルチノード構成のHADBサーバを正常開始する

正常開始方法については，「18.5.1　マルチノード構成のHADBサーバの開始方法」を参照してください。

HADBサーバの稼働モードを変更する

HADBサーバの稼働モードを静止モードにした状態でバックアップを取得した場合，データベースを回復したあとにマルチノード構成のHADBサーバを開始すると，プライマリノードのHADBサーバの稼働モードは静止モードになります。この場合，必要に応じてプライマリノードでadbchgsrvmodeコマンドを実行し，HADBサーバの稼働モードを通常モードに変更してください。

adbchgsrvmode --normal

上記は，稼働モードを通常モードに戻す場合の例です。

18.34.6　インスタンスを再起動する場合

次の手順でインスタンスを再起動してください。

手順

インスタンスを再起動するノードのHADBサーバを正常終了する

HADBサーバを正常終了方法については，「18.5.2　マルチノード構成のHADBサーバの終了方法」の「(2)　特定のノードのHADBサーバの終了手順」を参照してください。

インスタンスを再起動する

HADBサーバを正常開始する

インスタンスを再起動したノードがワーカーノードの場合

1.で正常終了したHADBサーバを正常開始して，マルチノード構成にワーカーノードを追加してください。マルチノード構成への追加手順については，「18.18.3　マルチノード構成から削除されたワーカーノードを再度追加する手順」を参照してください。

インスタンスを再起動したノードがワーカーノード以外の場合（HAモニタありのマルチノード構成の場合）

1.で正常終了したHADBサーバを正常開始して，マルチノード構成にノードを復帰させてください。マルチノード構成への復帰手順については，「18.16.3　マルチノード構成へのノードの復帰」を参照してください。

18.34.7　AWSの環境に起因するトラブル

AWSの環境に起因するトラブルが発生したときの対処方法を説明します。

■インスタンスが異常終了したときの対処方法

ワーカーノードのインスタンスが異常終了した場合

インスタンスが異常終了した原因を対処したあとにインスタンスを起動してください。

そのあとに，インスタンスが異常終了したワーカーノードをマルチノード構成に追加してください。追加手順については，「18.18.3　マルチノード構成から削除されたワーカーノードを再度追加する手順」を参照してください。

プライマリノードまたはセカンダリノードのインスタンスが異常終了した場合（HAモニタありのマルチノード構成の場合）

インスタンスが異常終了した原因を対処したあとにインスタンスを起動してください。

そのあとに，インスタンスが異常終了したノードをマルチノード構成に復帰させてください。復帰手順については，「18.16.3　マルチノード構成へのノードの復帰」を参照してください。

■EBSで障害が発生したときの対処方法

EBSで障害が発生した場合は，Amazon S3（Amazon Simple Storage Service）に保存しているバックアップを使用してデータを回復してください。回復手順については，「18.34.5　データベースのバックアップ（AWS環境の場合）」の「(2)　バックアップからの回復」を参照してください。

■EBSが満杯になったときの対処方法

DBエリアファイルが原因の場合

DBエリアファイルの容量増加によってEBSが満杯になった場合は，「16.3.1　DBエリアファイルの容量増加が原因の場合」を参照して対処してください。

DBエリアファイル以外が原因の場合

DBエリアファイル以外のファイルの容量増加によってEBSが満杯になった場合は，「16.3.3　DBエリアファイル以外のファイルの容量増加が原因の場合」を参照して対処してください。

18.35　Azure環境でのマルチノード機能の運用

ここでは，Azure環境でのマルチノード機能の運用について説明します。

18.35.1　Azure環境でマルチノード機能を使用する場合の留意事項

「18.1　この章を読む際の留意事項」～「18.33　マルチノード機能使用時の注意事項」は，オンプレミス環境およびAzure環境共通の説明です。「18.35　Azure環境でのマルチノード機能の運用」では，Azure環境でマルチノード機能を使用する際の固有の運用を説明しています。

Azure環境でもオンプレミス環境と同様に次のどちらかのマルチノード構成を構築できます。

HAモニタありのマルチノード構成

HAモニタなしのマルチノード構成

HAモニタありのマルチノード構成の場合，HAモニタの系切り替え機能を使用します。Azure環境の場合，系を切り替える際の共有ディスクのデータの保護方法には，系のリセットだけが使用できます。系のリセットをする際に必要なAzureの構成については，マニュアルHAモニタパブリッククラウド編のシステムの構築の構築の流れの系のリセットまたはネットワーク遮断をする場合を参照してください。

HADBのマニュアルを読む際，サーバマシンはAzureの仮想マシンと読み替えてください。

Azure環境でマルチノード構成を構築する場合，クラウドストレージ機能を使用します。クラウドストレージ機能については，「2.21.3　Azure環境でHADBサーバを使用する場合」の「(2)　Azure Blob StorageにDBエリアのデータを格納する場合（クラウドストレージ機能を使用する場合）」の「(a)　クラウドストレージ機能とは」を参照してください。

18.35.2　システム構成例

Azure環境でのシステム構成例（HAモニタありのマルチノード構成）を次の図に示します。

図18‒18　Azure環境でのシステム構成例（HAモニタありのマルチノード構成）

注※

ノードローカルのディスクを使用します。

メモ

Azure環境でもオンプレミス環境と同様に，HAモニタありのマルチノード構成にするか，またはHAモニタなしのマルチノード構成にするかによって，前提ソフトウェアやネットワーク構成に差異があります。この差異は，Azure環境であってもオンプレミス環境であっても基本的には同じです。

ここでは，HAモニタありのマルチノード構成についてだけシステム構成例を記載します。

(1)　前提OSおよび前提ソフトウェア

Azure環境でHAモニタありのマルチノード構成を構築する場合，次のOSおよびソフトウェアが必要になります。

RHEL 9

Azure環境でクラウドストレージ機能を使用する場合，上記のOSが必要になります。

HAモニタ 01-78以降

プライマリノードおよびセカンダリノードにHAモニタをインストールしてください。ワーカーノードには，HAモニタをインストールする必要はありません。

プライマリノードとセカンダリノードにインストールするHAモニタのバージョンは同じにしてください。

なお，RHEL 10では，Azure環境でHAモニタありのマルチノード構成は構築できません。

(2)　サーバ構成

「図18‒18　Azure環境でのシステム構成例（HAモニタありのマルチノード構成）」は，4つのノード（hadb01，hadb02，hadb03，およびhadb04）から成るマルチノード構成です。プライマリノードはhadb01，セカンダリノードはhadb02およびhadb03，ワーカーノードはhadb04です。hadb01とhadb04は可用性ゾーン1に，hadb02は可用性ゾーン2に，hadb03は可用性ゾーン3に配置しています。

Azure環境でマルチノード機能を使用する場合，各ノードの仮想マシンの性能（CPU，メモリサイズなど）は同じである必要はありません。ただし，仮想マシンの性能が異なる場合，SQL文を実行するノードによってSQL文の処理性能に差異が発生するおそれがあります。そのため，できる限り全ノードの仮想マシンの性能を同じにすることを推奨します。

重要

SQLパラレル実行機能を使用する場合は，全ノードの仮想マシンのサイズを同じにしてください。

メモ

以降の説明は，全ノードの仮想マシンにStandard_E8s_v4を使用していることを前提としています。

(3)　ネットワーク構成

HAモニタありのマルチノード構成をAzure環境で構築する場合，次に示すネットワークを使用します。各ネットワークは物理的に分けてください。

クライアント－サーバ間ネットワーク

ノード間ネットワーク

(a)　クライアント−サーバ間ネットワーク

HADBクライアントとHADBサーバ間の通信で使用するネットワークです。

HADBクライアントは，エイリアスIPアドレスを使用してHADBサーバに接続します。そのため，マニュアルHAモニタパブリッククラウド編の【Azure】リソースの引き継ぎを参照して，エイリアスIPアドレスを設定してください。

「図18‒18　Azure環境でのシステム構成例（HAモニタありのマルチノード構成）」での，クライアント－サーバ間ネットワークのIPアドレス，およびポート番号の設定例を次の表に示します。

表18‒21　クライアント－サーバ間ネットワークのIPアドレスとポート番号の設定例

項番

設定対象

IPアドレス

ポート番号

1

クライアントマシン

10.196.108.111

設定不要

2

プライマリノード（hadb01）の仮想マシン

10.196.108.11

23650

3

セカンダリノード（hadb02）の仮想マシン

10.196.108.12

23650

4

セカンダリノード（hadb03）の仮想マシン

10.196.108.13

23650

5

ワーカーノード（hadb04）の仮想マシン

10.196.108.14

23650

6

エイリアスIPアドレス

10.196.108.143

23650

(b)　ノード間ネットワーク

HADBサーバ間の通信，およびHAモニタの監視パスとして使用するネットワークです。ネットワークを構築する際に複線にする必要がある場合は，LinuxのBonding機能を使用してください。

Bonding機能の詳細については，OSのマニュアルを参照してください。HAモニタの監視パスの設定については，マニュアルHAモニタパブリッククラウド編の監視パスの設定を参照してください。

「図18‒18　Azure環境でのシステム構成例（HAモニタありのマルチノード構成）」での，ノード間ネットワークのIPアドレス，およびポート番号の設定例を次の表に示します。

表18‒22　ノード間ネットワークのIPアドレスとポート番号の設定例

項番

設定対象

IPアドレス

ポート番号

1

プライマリノード（hadb01）の仮想マシンのHADBサーバ間通信

172.16.0.11

23651

2

プライマリノード（hadb01）の仮想マシンのHAモニタの監視パス

172.16.0.11

7777

3

セカンダリノード（hadb02）の仮想マシンのHADBサーバ間通信

172.16.0.12

23651

4

セカンダリノード（hadb02）の仮想マシンのHAモニタの監視パス

172.16.0.12

7777

5

セカンダリノード（hadb03）の仮想マシンのHADBサーバ間通信

172.16.0.13

23651

6

セカンダリノード（hadb03）の仮想マシンのHAモニタの監視パス

172.16.0.13

7777

7

ワーカーノード（hadb04）※の仮想マシンのHADBサーバ間通信

172.16.0.14

23651

注※

ワーカーノードはHAモニタの管理対象外のため，HAモニタの監視パスの設定は不要です。

通常は，HADBサーバ間の通信で使用するネットワークと，HAモニタの監視パスとして使用するネットワークを分けます。ただし，この場合，HAモニタは，HADBサーバ間の通信で使用するネットワークの障害を検知することができません。HADBサーバ間の通信で使用するネットワークと，HAモニタの監視パスとして使用するネットワークを同じにすると，ネットワーク障害をHAモニタが検知することができます。そのため，ここで説明しているとおりにノード間ネットワークを構成することを推奨します。

(4)　ストレージ構成

Azure環境でマルチノード機能を使用する場合，次のファイルシステム，ディスク，およびコンテナーを準備します。

ノードローカルのファイルシステム

「図18‒18　Azure環境でのシステム構成例（HAモニタありのマルチノード構成）」の場合，LOC001～LOC004およびCCH001～CCH004が該当します。

ノード切り替え対象のファイルシステム

「図18‒18　Azure環境でのシステム構成例（HAモニタありのマルチノード構成）」の場合，FS001が該当します。

ノードローカルのディスク（作業表用DBエリアファイル用）

「図18‒18　Azure環境でのシステム構成例（HAモニタありのマルチノード構成）」の場合，WRK001～WRK004が該当します。

コンテナー（作業表用DBエリアを除くDBエリア用）

「図18‒18　Azure環境でのシステム構成例（HAモニタありのマルチノード構成）」の場合，CNT001が該当します。

「図18‒18　Azure環境でのシステム構成例（HAモニタありのマルチノード構成）」の場合，次の表に示すファイルシステム，ディスク，およびコンテナーを用意します。

表18‒23　ストレージ構成例

格納先

名称

対象となるノード

用途

マネージドディスク（Premium SSD）

LOC001

プライマリノード（hadb01）

ノードローカルのファイルシステム

LOC002

セカンダリノード（hadb02）

LOC003

セカンダリノード（hadb03）

LOC004

ワーカーノード（hadb04）

FS001

プライマリノード（hadb01）

ノード切り替え対象のファイルシステム（可用性ゾーン間で共有）

セカンダリノード（hadb02）

セカンダリノード（hadb03）

マネージドディスク（Premium SSD v2）

CCH001

プライマリノード（hadb01）

ノードローカルのファイルシステム（キャッシュファイル用）

CCH002

セカンダリノード（hadb02）

CCH003

セカンダリノード（hadb03）

CCH004

ワーカーノード（hadb04）

WRK001

プライマリノード（hadb01）

ノードローカルのディスク（作業表用DBエリア用）

WRK002

セカンダリノード（hadb02）

WRK003

セカンダリノード（hadb03）

WRK004

ワーカーノード（hadb04）

Azure Blob Storage

CNT001

全ノード

コンテナー（作業表用DBエリアを除くDBエリア用）

Azure Files（NFS）

－

－

分散ファイルシステム

（凡例）

－：該当しません。

(a)　マネージドディスク（Premium SSD）の使い方

マネージドディスク（Premium SSD）は，次のファイルシステムとして使用します。

ノードローカルのファイルシステム

各仮想マシンのOS用の領域（ルートボリューム）として使用するマネージドディスク（Premium SSD）上のファイルシステム（/home下など）に，次のディレクトリを配置します。

サーバディレクトリ

DBディレクトリ

監査証跡の出力先ディレクトリ（監査証跡機能を使用する場合に必要）

統一フォーマット用監査証跡の出力先ディレクトリ（監査証跡機能を使用する場合に必要）

ノード切り替え対象のファイルシステム

次のノード切り替え対象のファイルシステムを，プライマリノードおよびセカンダリノードから参照できるように，可用性ゾーン間で共有したマネージドディスク（Premium SSD）上に作成してください。可用性ゾーン間で共有するには，冗長性オプションにゾーン冗長ストレージ（ZRS）を選択してください。

システムディレクトリ用のファイルシステム

ノード切り替え対象のファイルシステムを作成する際は，マニュアルHAモニタパブリッククラウド編のマネージドディスクの共有を参照してください。

メモ

ここでは，ノード切り替え対象のファイルシステムFS001のVG名称はvg_hadb，LV名称はhadb_sysとします。

(b)　マネージドディスク（Premium SSD v2）の使い方

マネージドディスク（Premium SSD v2）は，次のファイルシステムおよびディスクとして使用します。

ノードローカルのファイルシステム（キャッシュファイル用）

キャッシュファイルの格納先とするファイルシステムを，マネージドディスク（Premium SSD v2）上に仮想マシンごとに作成してください。

ここでは，このファイルシステムのマウントポイントを/HADB/ADBCCHとします。

重要

このファイルシステムは，キャッシュファイルの格納先ディレクトリを配置する以外の用途には使用しないでください。

ノードローカルのディスク（作業表用DBエリア用）

作業表用DBエリアとして使用するマネージドディスク（Premium SSD v2）を各仮想マシンに用意してください。

メモ

ノードローカルのディスクWRK001～WRK004に対応するブロックスペシャルファイル名は，「18.2.4　ストレージ構成」の「(3)　DBエリアファイル用のディスク」に記載されているブロックスペシャルファイル名と同じです。

(c)　Azure Blob Storageの使い方

次のDBエリアのデータを格納するBLOBの格納先となるコンテナーを用意します。

データ用DBエリア

マスタディレクトリ用DBエリア

ディクショナリ用DBエリア

システム表用DBエリア

(d)　Azure Files（NFS）の使い方

Azure Files（NFS）には，次のディレクトリまたはファイルシステムを配置します。

監査証跡の保存先ディレクトリ（監査証跡機能を使用する場合に必要）

ADB_CSVREAD関数を使用してアクセスするCSVファイルを格納するディレクトリ（ADB_CSVREAD関数を使用した検索をする場合に必要）

外部データファイルを格納するファイルシステム（ファイルストレージに外部データを格納している場合）

重要

全ノードで，同じパスのディレクトリにマウントしてください。

18.35.3　Azure環境でのマルチノード構成の構築

Azure環境でのマルチノード構成の構築手順について説明します。ここでの説明は，HAモニタありのマルチノード構成の新規導入を前提としています。

(1)　HAモニタのインストール

プライマリノードおよび全セカンダリノードの仮想マシンにHAモニタをインストールしてください。HAモニタのインストール方法については，マニュアルHAモニタパブリッククラウド編のシステムの構築を参照してください。

メモ

ワーカーノードはHAモニタの管理対象外のため，ワーカーノードの仮想マシンにはHAモニタをインストールする必要はありません。

(2)　HADBサーバのインストールおよび環境設定

HADBサーバをインストールする前に，全ノードの仮想マシンで環境変数の設定を実施してください。

次に，全ノードの仮想マシンにHADBサーバをインストールし，環境設定を行ってください。詳細については，「18.4.2　HADBサーバのインストールおよび環境設定」を参照してください。

(3)　HADBクライアントのインストールおよび環境設定

HADBクライアントのインストール，および環境設定については，マニュアルHADB　AP開発ガイドのHADBクライアントの環境設定（ODBCドライバおよびCLI関数を使用する場合）を参照してください。

(4)　udevルールの設定

各仮想マシンで使用するノード切り替え対象のファイルシステムのデバイス名を固定するために，プライマリノードおよびセカンダリノードの仮想マシンでudevルールを設定してください。ワーカーノードの仮想マシンでは，udevルールを設定する必要はありません。

手順

次のすべての操作は，OSのスーパユーザで実行してください。

udevルールファイルを作成する

/etc/udev/rules.dディレクトリ下に，ディスクのデバイス名を固定するためのudevルールファイル（/etc/udev/rules.d/99-hadb.rules）を作成してください。

＜udevルールファイルの指定例＞

ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="XXXXXXXXXXXX", SYMLINK+="hadb_sys"

下線部分には，システムディレクトリ用のファイルシステムで使用するマネージドディスク（Premium SSD）を指定してください。

全ノードのOSを再起動する

設定したudevルールを反映させるために，全ノードのOSを再起動してください。

(5)　HAモニタの環境設定

プライマリノードおよび全セカンダリノードの仮想マシンでHAモニタの環境設定をしてください。HAモニタの環境設定方法については，マニュアルHAモニタ Linux(R)(x86)編のシステムの構築，およびマニュアルHAモニタパブリッククラウド編のシステムの構築を参照してください。

ここでは，HAモニタの環境設定をする際に留意することについて説明します。

メモ

HAモニタの環境設定は，プライマリノードおよびセカンダリノードの仮想マシンで実施します。ワーカーノードの仮想マシンでは，HAモニタの環境設定は必要ありません。

(a)　環境変数の設定

設定する環境変数については，「18.4.4　HAモニタの環境設定」の「(1)　環境変数の設定」を参照してください。

(b)　sysdefファイルの作成

HAモニタのsysdefファイルを作成してください。

■指定値が決まっているオペランド

HAモニタのsysdefファイルに指定するオペランドのうち，次のオペランドは指定値が決まっています。

public_cloudオペランド

useを指定してください。

public_cloudオペランドの詳細については，マニュアルHAモニタパブリッククラウド編のパブリッククラウド環境固有のHAモニタの環境設定を参照してください。

usrcommandオペランド

このオペランドの指定は省略してください。

fence_resetオペランド，fence_scsiオペランド，およびfence_lanオペランド

これらのオペランドの指定は省略してください。

次のオペランドの指定値については，「18.4.4　HAモニタの環境設定」の「(2)　sysdefファイルの指定」を参照してください。

addressオペランド

monbegin_restartオペランド

multistandbyオペランド

termcmd_at_abortオペランド

メモ

上記のオペランド（public_cloudオペランドを除く）の詳細については，マニュアルHAモニタ Linux(R)(x86)編のHAモニタの環境設定（sysdef）を参照してください。

■sysdefファイルの指定例

ここでの指定例は，「図18‒18　Azure環境でのシステム構成例（HAモニタありのマルチノード構成）」のシステム構成を前提としています。

プライマリノード（hadb01）のsysdefファイルの指定例

environment  name hadb01,
             address 1,              ...1
             patrol 30,              ...2
             lan path11,             ...3
             lanport HAmon1;         ...4
function     pathpatrol 240,
             connect_retry 5:200,
             monbegin_restart nouse,
             multistandby use,
             termcmd_at_abort nouse,
             public_cloud use;       ...5

［説明］

このノードのリセット優先度を指定します。このノードは，プライマリノードのため，リセット優先度をいちばん高くする必要があるので1を指定します。

patrolオペランドには，30以下の値を指定してください。

HAモニタの監視パスとして使用するLANのホスト名を指定します。IPアドレス172.16.0.11に対応するホスト名path11を指定します。

HAモニタの監視パスとして使用するLANのサービス名を指定します。ポート番号7777に対応するサービス名HAmon1を指定します。

Azure環境でHAモニタを使用するため，useを指定します。

セカンダリノード（hadb02）のsysdefファイルの指定例

environment  name hadb02,
             address 2,              ...1
             patrol 30,              ...2
             lan path21,             ...3
             lanport HAmon1;         ...4
function     pathpatrol 240,
             connect_retry 5:200,
             monbegin_restart nouse,
             multistandby use,
             termcmd_at_abort nouse,
             public_cloud use;       ...5

［説明］

このノードのリセット優先度を指定します。このノードは，プライマリノードの次にリセット優先度を高くしたいため，2を指定します。

patrolオペランドには，30以下の値を指定してください。

HAモニタの監視パスとして使用するLANのホスト名を指定します。IPアドレス172.16.0.12に対応するホスト名path21を指定します。

HAモニタの監視パスとして使用するLANのサービス名を指定します。ポート番号7777に対応するサービス名HAmon1を指定します。

Azure環境でHAモニタを使用するため，useを指定します。

セカンダリノード（hadb03）のsysdefファイルの指定例

environment  name hadb03,
             address 3,              ...1
             patrol 30,              ...2
             lan path31,             ...3
             lanport HAmon1;         ...4
function     pathpatrol 240,
             connect_retry 5:200,
             monbegin_restart nouse,
             multistandby use,
             termcmd_at_abort nouse,
             public_cloud use;       ...5

［説明］

このノードのリセット優先度を指定します。このノードは，セカンダリノードhadb02の次にリセット優先度を高くしたいため，3を指定します。

patrolオペランドには，30以下の値を指定してください。

HAモニタの監視パスとして使用するLANのホスト名を指定します。IPアドレス172.16.0.13に対応するホスト名path31を指定します。

HAモニタの監視パスとして使用するLANのサービス名を指定します。ポート番号7777に対応するサービス名HAmon1を指定します。

Azure環境でHAモニタを使用するため，useを指定します。

(c)　serversファイルの作成

HAモニタのserversファイルを作成してください。

serversファイルの次のオペランドの指定値については「18.4.4　HAモニタの環境設定」の「(3)　serversファイルの指定」を参照してください。

nameオペランド

acttypeオペランド

termcommandオペランド

initialオペランド

lan_updownオペランド

servexec_retryオペランド

waitserv_execオペランド

ip_neckオペランド

uoc_neckオペランド

fs_neckオペランド

actcommandオペランド

standbypriオペランド

serversファイルの次のオペランドについては，指定値が決まっています。

patrolcommandオペランド

このオペランドの指定は省略してください。

ptrlcmd_exオペランド

HADB用の設定を記述したサーバの監視コマンドファイルの絶対パスを指定してください。サーバの監視コマンドファイルはひな形を基に作成してください。作成方法については，「(h)　サーバの監視コマンドファイルの作成」，およびマニュアルHAモニタ Linux(R)(x86)編のサーバの監視コマンドの作成を参照してください。

ptrlcmd_ex_interオペランド

3を指定してください。

ptrlcmd_ex_retryオペランド

0を指定してください。

ptrlcmd_ex_tmoutオペランド

5を指定してください。

sby_termcommandオペランド

HADB用の設定を記述した待機サーバの停止コマンドの絶対パスを指定してください。待機サーバの停止コマンドはひな形を基に作成してください。作成方法については，「(i)　待機サーバの停止コマンドファイルの作成」，およびマニュアルHAモニタ Linux(R)(x86)編の待機サーバの停止時に実行するコマンドの作成を参照してください。

sby_ptrlcmd_exオペランド

HADB用の設定を記述した待機サーバの監視コマンドの絶対パスを指定してください。待機サーバの監視コマンドはひな形を基に作成してください。作成方法については，「(j)　待機サーバの監視コマンドファイルの作成」，およびマニュアルHAモニタ Linux(R)(x86)編の待機サーバの監視時に実行するコマンドの作成を参照してください。

sby_ptrlcmd_ex_interオペランド

3を指定してください。

sby_ptrlcmd_ex_retryオペランド

0を指定してください。

sby_ptrlcmd_ex_tmoutオペランド

5を指定してください。

scsi_deviceオペランド，dmmp_deviceオペランド

これらのオペランドの指定は省略してください。

diskオペランド

システムディレクトリのファイルシステムがあるVGの絶対パスを指定してください。

「図18‒18　Azure環境でのシステム構成例（HAモニタありのマルチノード構成）」の場合，/dev/vg_hadbを指定します。

fs_nameオペランド

システムディレクトリのファイルシステムに対応する論理ボリュームの絶対パスを指定してください。

「図18‒18　Azure環境でのシステム構成例（HAモニタありのマルチノード構成）」の場合，/dev/vg_hadb/hadb_sysを指定します。

fs_mount_dirオペランド

システムディレクトリのパス（$DBDIR/ADBSYS）を指定してください。

fs_mount_optオペランド

システムディレクトリのファイルシステムをマウントするためのマウントオプション（mountコマンドのオプション）を指定してください。

vg_neckオペランド

useを指定してください。

メモ

serversファイルに指定するオペランドの詳細については，マニュアルHAモニタ Linux(R)(x86)編のサーバ対応の環境設定（servers）を参照してください。

■serversファイルの指定例

ここでの指定例は，「図18‒18　Azure環境でのシステム構成例（HAモニタありのマルチノード構成）」のシステム構成を前提としています。

プライマリノード（hadb01）のserversファイルの指定例

server name /HADB/server,                                        ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb,                                        ...2
       lan_updown use,
       fs_name /dev/vg_hadb/hadb_sys,                            ...3
       fs_mount_dir /HADB/db/ADBSYS,                             ...4
       fs_mount_opt "-t xfs -o defaults,noatime,_netdev",        ...5
       actcommand "/HADB/scripts/multinode_act.sh",              ...6
       termcommand "/HADB/scripts/multinode_term.sh",            ...7
       ptrlcmd_ex "/HADB/scripts/multinode_patrol_ex.sh",        ...8
       ptrlcmd_ex_inter 3,
       ptrlcmd_ex_retry 0,
       ptrlcmd_ex_tmout 5,
       sby_termcommand "/HADB/scripts/multinode_sby_term.sh",    ...9
       sby_ptrlcmd_ex "/HADB/scripts/multinode_patrol_ex.sh",    ...10
       sby_ptrlcmd_ex_inter 3,
       sby_ptrlcmd_ex_retry 0,
       sby_ptrlcmd_ex_tmout 5,
       servexec_retry 0,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use,                                              ...11
       fs_neck use,                                              ...12
       initial online;                                           ...13

［説明］

サーバディレクトリの絶対パスを指定します。

システムディレクトリのファイルシステムがあるVGの絶対パスを指定します。

システムディレクトリのファイルシステムを作成したLVの絶対パスを指定します。

システムディレクトリのファイルシステムをマウントするマウントポイントの絶対パスを指定します。

システムディレクトリのファイルシステムをマウントするためのmountコマンドのオプションを指定します。

マルチノード機能で使用するサーバの起動コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの停止コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの監視コマンドの絶対パスを指定します。

マルチノード機能で使用する待機サーバの停止コマンドの絶対パスを指定します。

マルチノード機能で使用する待機サーバの監視コマンドの絶対パスを指定します。

システムディレクトリのファイルシステムがあるVGに対しては，useを指定します。

システムディレクトリのファイルシステムに対しては，useを指定します。

プライマリノードとするため，onlineを指定します。

セカンダリノード（hadb02）のserversファイルの指定例

server name /HADB/server,                                        ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb,                                        ...2
       lan_updown use,
       fs_name /dev/vg_hadb/hadb_sys,                            ...3
       fs_mount_dir /HADB/db/ADBSYS,                             ...4
       fs_mount_opt "-t xfs -o defaults,noatime,_netdev",        ...5
       actcommand "/HADB/scripts/multinode_act.sh",              ...6
       termcommand "/HADB/scripts/multinode_term.sh",            ...7
       ptrlcmd_ex "/HADB/scripts/multinode_patrol_ex.sh",        ...8
       ptrlcmd_ex_inter 3,
       ptrlcmd_ex_retry 0,
       ptrlcmd_ex_tmout 5,
       sby_termcommand "/HADB/scripts/multinode_sby_term.sh",    ...9
       sby_ptrlcmd_ex "/HADB/scripts/multinode_patrol_ex.sh",    ...10
       sby_ptrlcmd_ex_inter 3,
       sby_ptrlcmd_ex_retry 0,
       sby_ptrlcmd_ex_tmout 5,
       servexec_retry 0,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use,                                              ...11
       fs_neck use,                                              ...12
       initial standby,                                          ...13
       standbypri 1;                                             ...14

［説明］

サーバディレクトリの絶対パスを指定します。

システムディレクトリのファイルシステムがあるVGの絶対パスを指定します。

システムディレクトリのファイルシステムを作成したLVの絶対パスを指定します。

システムディレクトリのファイルシステムをマウントするマウントポイントの絶対パスを指定します。

システムディレクトリのファイルシステムをマウントするためのmountコマンドのオプションを指定します。

マルチノード機能で使用するサーバの起動コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの停止コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの監視コマンドの絶対パスを指定します。

マルチノード機能で使用する待機サーバの停止コマンドの絶対パスを指定します。

マルチノード機能で使用する待機サーバの監視コマンドの絶対パスを指定します。

システムディレクトリのファイルシステムがあるVGに対しては，useを指定します。

システムディレクトリのファイルシステムに対しては，useを指定します。

セカンダリノードとするため，standbyを指定します。

プライマリノードの切り替えが発生した際，新たにプライマリノードにするノードの優先順位を指定します。このノードの優先順位をいちばん高くしたいため，1を指定します。

セカンダリノード（hadb03）のserversファイルの指定例

server name /HADB/server,                                        ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb,                                        ...2
       lan_updown use,
       fs_name /dev/vg_hadb/hadb_sys,                            ...3
       fs_mount_dir /HADB/db/ADBSYS,                             ...4
       fs_mount_opt "-t xfs -o defaults,noatime,_netdev",        ...5
       actcommand "/HADB/scripts/multinode_act.sh",              ...6
       termcommand "/HADB/scripts/multinode_term.sh",            ...7
       ptrlcmd_ex "/HADB/scripts/multinode_patrol_ex.sh",        ...8
       ptrlcmd_ex_inter 3,
       ptrlcmd_ex_retry 0,
       ptrlcmd_ex_tmout 5,
       sby_termcommand "/HADB/scripts/multinode_sby_term.sh",    ...9
       sby_ptrlcmd_ex "/HADB/scripts/multinode_patrol_ex.sh",    ...10
       sby_ptrlcmd_ex_inter 3,
       sby_ptrlcmd_ex_retry 0,
       sby_ptrlcmd_ex_tmout 5,
       servexec_retry 0,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use,                                              ...11
       fs_neck use,                                              ...12
       initial standby,                                          ...13
       standbypri 2;                                             ...14

［説明］

サーバディレクトリの絶対パスを指定します。

システムディレクトリのファイルシステムがあるVGの絶対パスを指定します。

システムディレクトリのファイルシステムを作成したLVの絶対パスを指定します。

システムディレクトリのファイルシステムをマウントするマウントポイントの絶対パスを指定します。

システムディレクトリのファイルシステムをマウントするためのmountコマンドのオプションを指定します。

マルチノード機能で使用するサーバの起動コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの停止コマンドの絶対パスを指定します。

マルチノード機能で使用するサーバの監視コマンドの絶対パスを指定します。

マルチノード機能で使用する待機サーバの停止コマンドの絶対パスを指定します。

マルチノード機能で使用する待機サーバの監視コマンドの絶対パスを指定します。

システムディレクトリのファイルシステムがあるVGに対しては，useを指定します。

システムディレクトリのファイルシステムに対しては，useを指定します。

セカンダリノードとするため，standbyを指定します。

プライマリノードの切り替えが発生した際，新たにプライマリノードにするノードの優先順位を指定します。このノードの優先順位は，セカンダリノード（hadb02）の次にしたいため，2を指定します。

(d)　HAモニタの接続構成設定ファイルの作成（connectionファイルの作成）

Azure環境の場合，接続構成設定ファイルを手動で作成してください。手動での作成方法については，マニュアルHAモニタ Linux(R)(x86)編のHAモニタの接続構成設定ファイルの作成を参照してください。接続構成設定ファイルには，プライマリノードおよびセカンダリノードに作成したsysdefファイルのnameオペランドに指定したホスト名と，監視パスに使用するIPアドレスの組を指定します。

■HAモニタの接続構成設定ファイル（connectionファイル）の指定例

HAモニタの接続構成設定ファイル（connectionファイル）の指定例を次に示します。指定内容は，プライマリノードおよびセカンダリノードで同じにしてください。

なお，ここでの指定例は，「図18‒18　Azure環境でのシステム構成例（HAモニタありのマルチノード構成）」のシステム構成を前提としています。

hadb01 LAN 172.16.0.11;       ...1
hadb02 LAN 172.16.0.12;       ...2
hadb03 LAN 172.16.0.13;       ...3

［説明］

プライマリノード（hadb01）の監視パスで使用するIPアドレス172.16.0.11を指定します。

セカンダリノード（hadb02）の監視パスで使用するIPアドレス172.16.0.12を指定します。

セカンダリノード（hadb03）の監視パスで使用するIPアドレス172.16.0.13を指定します。

HAモニタの接続構成設定ファイルの指定方法の詳細については，マニュアルHAモニタ Linux(R)(x86)編のHAモニタの接続構成設定ファイルの作成を参照してください。

(e)　コマンド用環境変数定義ファイルの作成

HAモニタとの連携のために，コマンド用環境変数定義ファイルを作成してください。

$ADBDIR/sample/scripts/multinode.envが，コマンド用環境変数定義ファイルのひな形です。このひな形をコピーして，次の値を修正してください。

環境変数ADBMGR

HADB管理者（OSユーザ）のユーザ名を指定してください。

環境変数ADBALIAS

HAモニタのserversファイルのaliasオペランドの指定値を指定してください。

環境変数ADBDIR

サーバディレクトリの絶対パスを指定してください。

■コマンド用環境変数定義ファイルの指定例

この例では，コマンド用環境変数定義ファイルを/HADB/scripts/multinode.envに格納しているとします。指定内容は，プライマリノードおよびセカンダリノードで同じにしてください。

#!/bin/sh

# The environment variables for HADB
export ADBMGR=adbmanager                  ...1
export ADBALIAS=HADB                      ...2
export ADBDIR=/HADB/server                ...3

［説明］

HADB管理者（OSユーザ）のユーザ名adbmanagerを指定します。

HAモニタのserversファイルのaliasオペランドの指定値であるHADBを指定します。

サーバディレクトリの絶対パスを指定します。

(f)　サーバの起動コマンドファイルの作成

HAモニタとの連携のために，サーバの起動コマンドファイルを作成してください。

$ADBDIR/sample/scripts/multinode_act.shが，サーバの起動コマンドファイルのひな形です。このひな形をコピーして，次の個所を修正してください。

source文

source文の引数に，コマンド用環境変数定義を指定したファイルの絶対パスを指定してください。

サーバの起動コマンドファイルの指定例については，「18.4.4　HAモニタの環境設定」の「(5)　各ファイルの指定例（系のリセットを使用する場合）」の「(e)　サーバの起動コマンドファイルの指定例」を参照してください。

(g)　サーバの停止コマンドファイルの作成

HAモニタとの連携のために，サーバの停止コマンドファイルを作成してください。

$ADBDIR/sample/scripts/multinode_term.shが，サーバの停止コマンドファイルのひな形です。このひな形をコピーして，次の個所を修正してください。

source文

source文の引数に，コマンド用環境変数定義を指定したファイルの絶対パスを指定してください。

サーバの停止コマンドファイルの指定例については，「18.4.4　HAモニタの環境設定」の「(5)　各ファイルの指定例（系のリセットを使用する場合）」の「(f)　サーバの停止コマンドファイルの指定例」を参照してください。

(h)　サーバの監視コマンドファイルの作成

HAモニタとの連携のために，サーバの監視コマンドファイルを作成してください。

$ADBDIR/sample/scripts/multinode_patrol_ex.shが，サーバの監視コマンドファイルのひな形です。このひな形をコピーして，次の個所を修正してください。

source文

source文の引数に，コマンド用環境変数定義を指定したファイルの絶対パスを指定してください。

■サーバの監視コマンドファイルの指定例

この例では，サーバの監視コマンドファイルを/HADB/scripts/multinode_patrol_ex.shに格納しているとします。指定内容は，プライマリノードおよびセカンダリノードで同じにしてください。

#!/bin/sh

# Sample of the ptrlcmd_ex for HADB

SU=/bin/su

# Setting environment variables for HADB
source /HADB/scripts/multinode.env                  ...1

# Execute adbmonitor command for primary node
$SU - $ADBMGR -c "'$ADBDIR'/bin/adbmonitor -i"
ADBMONRES=$?
if [ "$ADBMONRES" = "0" -o "$ADBMONRES" = "4" ]
then
  exit 0
else
  exit $ADBMONRES
fi

［説明］

source文には，コマンド用環境変数定義ファイルの絶対パス/HADB/scripts/multinode.envを指定します。

(i)　待機サーバの停止コマンドファイルの作成

HAモニタとの連携のために，待機サーバの停止コマンドファイルを作成してください。

$ADBDIR/sample/scripts/multinode_sby_term.shが，待機サーバの停止コマンドファイルのひな形です。このひな形をコピーして，次の個所を修正してください。

source文

source文の引数に，コマンド用環境変数定義を指定したファイルの絶対パスを指定してください。

■待機サーバの停止コマンドファイルの指定例

この例では，待機サーバの停止コマンドファイルを/HADB/scripts/multinode_sby_term.shに格納しているとします。指定内容は，プライマリノードおよびセカンダリノードで同じにしてください。

#!/bin/sh

# Sample of the sby_termcommand for HADB

STS_ACTIVE="ACTIVE"
STS_STOP="STOP"
STS_STARTING="STARTING"
STS_STOPPING="STOPPING"
STS_ABORT="ABORT"
STS_QUIESCE="QUIESCE"
STS_OFFLINE="OFFLINE"
STS_CHGMODE="CHGMODE"
STS_STOPWAIT="STOPWAIT"
STS_COREDUMP="COREDUMP"
STS_FORCE="FORCE"
STS_MAINTNCE="MAINTNCE"

AWK=/bin/awk
ECHO=/bin/echo
GREP=/bin/grep
SU=/bin/su

# Setting environment variables for HADB
source /HADB/scripts/multinode.env                  ...1

# Execute adbstop command
while :
do

  GET_STS=`$SU - $ADBMGR -c "'$ADBDIR'/bin/adbls -d srv 2>/dev/null" | $GREP -v SVID | $AWK '{ if ($1 ~ /[0-9]+/) { print $2 } else { print $1 } }'`

  case "$1" in
  "-e" )
    # Normal stop operations of secondary node.
    # (when the monsbystp command is executed.)
    if [ "$GET_STS" = "$STS_ACTIVE"   -o ¥
         "$GET_STS" = "$STS_STOPPING" -o "$GET_STS" = "$STS_QUIESCE"  -o ¥
         "$GET_STS" = "$STS_OFFLINE"  -o "$GET_STS" = "$STS_CHGMODE"  -o ¥
         "$GET_STS" = "$STS_STOPWAIT" -o "$GET_STS" = "$STS_MAINTNCE" ]
    then
      $SU - $ADBMGR -c "'$ADBDIR'/bin/adbstop --cancel --node"
      STOPRES=$?
      if [ "$STOPRES" = "0" -o "$STOPRES" = "4" ]
      then
        break
      fi
    elif [ "$GET_STS" = "$STS_STARTING" ]
    then
      break
    else
      break
    fi

    ;;
  "-c" )
    break

    ;;
  esac

done

# stop HADB
if [ "$GET_STS" = "$STS_STARTING" ]
then
  ADB_ID=`$SU - $ADBMGR -c "ps x" | $GREP adbsrvd | $GREP -v $GREP | awk '{print $1}'`
  $SU - $ADBMGR -c "kill $ADB_ID"

  exit 0
fi

# Wait for end of HADB
while [ "$GET_STS" = "$STS_ACTIVE"   -o "$GET_STS" = "$STS_STARTING" -o ¥
        "$GET_STS" = "$STS_STOPPING" -o "$GET_STS" = "$STS_QUIESCE"  -o ¥
        "$GET_STS" = "$STS_OFFLINE"  -o "$GET_STS" = "$STS_CHGMODE"  -o ¥
        "$GET_STS" = "$STS_STOPWAIT" -o "$GET_STS" = "$STS_COREDUMP" -o ¥
        "$GET_STS" = "$STS_MAINTNCE" ]
do
  GET_STS=`$SU - $ADBMGR -c "'$ADBDIR'/bin/adbls -d srv 2>/dev/null" | $GREP -v SVID | $AWK '{ if ($1 ~ /[0-9]+/) { print $2 } else { print $1 } }'`
  sleep 1
done

exit 0

［説明］

source文には，コマンド用環境変数定義ファイルの絶対パス/HADB/scripts/multinode.envを指定します。

(j)　待機サーバの監視コマンドファイルの作成

HAモニタとの連携のために，待機サーバの監視コマンドファイルを作成してください。

待機サーバの監視コマンドファイルのひな形は，サーバの監視コマンドファイルのひな形と同じく$ADBDIR/sample/scripts/multinode_patrol_ex.shです。このひな形をコピーして，次の個所を修正してください。

source文

source文の引数に，コマンド用環境変数定義を指定したファイルの絶対パスを指定してください。

■待機サーバの監視コマンドファイルの指定例

待機サーバの監視コマンドファイルは，サーバの監視コマンドファイルと同じ内容です。指定例については，「(h)　サーバの監視コマンドファイルの作成」を参照してください。

(k)　HAモニタの起動設定

OSの起動時に，自動的にHAモニタが起動するように設定してください。設定方法については，マニュアルHAモニタ Linux(R)(x86)編のシステムの起動からサーバの起動までを自動化するを参照してください。　

(6)　各ノードでのサーバ定義の作成

サーバ定義の作成については，「18.4.5　各ノードでのサーバ定義の作成」を参照してください。

Azure環境でHADBサーバを使用する場合，クラウドストレージ機能に関するオペランドを各ノードのサーバ定義に指定する必要があります。クラウドストレージ機能に関するオペランドについては，「7.2.17　クラウドストレージ機能に関するオペランド（set形式）」を参照してください。

クラウドストレージ機能に関するオペランドの指定例を次に示します。

（例）

set adb_sys_cld_az_storage_account = adbstorageaccount
set adb_sys_cld_az_container = adbcontainer
set adb_sys_cld_cache_path = /HADB/ADBCCH

(7)　クライアント定義の作成

クライアント定義の作成については，「18.4.6　クライアント定義の作成」を参照してください。

(8)　クライアント定義の集中管理機能を使用する場合の環境設定

クライアント定義の集中管理機能を使用する場合の環境設定については，「18.4.7　クライアント定義の集中管理機能を使用する場合の環境設定」を参照してください。

(9)　データベースの作成

データベースの作成手順を次に示します。

重要

以降の作業を実施する前に，各仮想マシンで共有するマネージドディスクにアタッチしておく必要があります。

手順

ノード切り替え対象のファイルシステムを初期化する

システムディレクトリ用のファイルシステムを初期化します。

mkfs -t xfs /dev/vg_hadb/hadb_sys

システムディレクトリ用のLV（/dev/vg_hadb/hadb_sys）を，XFSのファイルシステムで初期化する場合の例です。

プライマリノードでデータベースを初期設定する

最初に，プライマリノードでOSのmountコマンドを実行し，$DBDIR/ADBSYSにシステムディレクトリ用のファイルシステムをマウントしてください。

次に，adbinitコマンドをプライマリノードで実行し，データベースを初期設定してください。adbinitコマンドの初期設定オプションの指定例（プライマリノード）を次に示します。

set adb_init_dbarea_initialize = Y                       ...a
set adb_init_wrk_blk_path = /dev/mapper/WRK001           ...b
set adb_sys_cld_az_storage_account = adbstorageaccount   ...c
set adb_sys_cld_az_container = adbcontainer              ...d
set adb_init_cld_cache_path = /HADB/ADBCCH               ...e
adbinitdbarea -n ADBUTBL01 -p 32 -s 32                   ...f
adbinitdbarea -n ADBUIDX01 -p 32 -s 32                   ...g

［説明］

DBエリアを初期化するため，Yを指定します。

作業表用DBエリアファイルとして割り当てるブロックスペシャルファイル名を指定します。

Azure Blob Storageのストレージアカウント名（adbstorageaccount）を指定します。

Azure Blob Storageのコンテナー名（adbcontainer）を指定します。

BLOBのキャッシュファイルの格納先ディレクトリ名（/HADB/ADBCCH）を指定します。

データ用DBエリア（ADBUTBL01）の指定をします。DBエリアのページサイズには32キロバイトを，セグメントサイズには32メガバイトを指定します。

データ用DBエリア（ADBUIDX01）の指定をします。DBエリアのページサイズには32キロバイトを，セグメントサイズには32メガバイトを指定します。

adbinitコマンドの実行後，システムディレクトリ用のファイルシステムをアンマウントしてください。

セカンダリノードおよびワーカーノードでDBディレクトリを作成する

adbinitコマンドをセカンダリノードおよびワーカーノードで実行してください。adbinitコマンドの初期設定オプションの指定例（セカンダリノードおよびワーカーノード）を次に示します。

set adb_init_dbarea_initialize = N                       ...a
set adb_init_wrk_blk_path = /dev/mapper/WRK002           ...b
set adb_sys_cld_az_storage_account = adbstorageaccount   ...c
set adb_sys_cld_az_container = adbcontainer              ...d
set adb_init_cld_cache_path = /HADB/ADBCCH               ...e
adbinitdbarea -n ADBUTBL01 -p 32 -s 32                   ...f
adbinitdbarea -n ADBUIDX01 -p 32 -s 32                   ...g

［説明］

DBディレクトリの枠組みだけを作成するため，Nを指定します。

作業表用DBエリアファイルとして割り当てるブロックスペシャルファイル名を指定します。

Azure Blob Storageのストレージアカウント名（adbstorageaccount）を指定します。

Azure Blob Storageのコンテナー名（adbcontainer）を指定します。

BLOBのキャッシュファイルの格納先ディレクトリ名（/HADB/ADBCCH）を指定します。

データ用DBエリア（ADBUTBL01）を作成します。DBエリアのページサイズには32キロバイトを，セグメントサイズには32メガバイトを指定します。

データ用DBエリア（ADBUIDX01）を作成します。DBエリアのページサイズには32キロバイトを，セグメントサイズには32メガバイトを指定します。

メモ

プライマリノードで指定した初期設定オプションとは，次の点が異なります。

adb_init_dbarea_initializeオペランドにはNを指定して，DBディレクトリの枠組みだけを作成します。

adb_init_wrk_blk_pathオペランドには，ノードごとに割り当てる作業表用DBエリアファイルのブロックスペシャルファイル名を指定します。

18.35.4　データベースのバックアップ（Azure環境の場合）

ここでは，Azure環境でのバックアップの取得方法，およびバックアップを使用したデータベースの回復方法について説明します。

(1)　バックアップの取得方法

データベースのバックアップを取得する手順を説明します。

メモ

バックアップを取得する前に，「10.3.1　バックアップの取得方法」の「(1)　バックアップを取得するタイミング」を参照して，バックアップ取得時の留意事項を確認してください。

手順

HADBサーバの稼働モードを静止モードに変更する

次のコマンドをプライマリノードで実行してください。

adbchgsrvmode --quiescence

プライマリノードのHADBサーバの稼働モードが静止モードに変更されます。

バックアップを取得する

「22.1.2　バックアップの取得方法とデータベースの回復方法（Azure環境の場合）」の「(1)　バックアップの取得方法（Azure環境の場合）」の2.の方法でバックアップを取得してください。

HADBサーバの稼働モードを元に戻す

次のコマンドをプライマリノードで実行してください。

adbchgsrvmode --normal

1.で変更した稼働モードを元に戻します。上記は，稼働モードを通常モードに戻す場合の例です。

(2)　バックアップからの回復

バックアップからデータベースを回復します。

手順

マルチノード構成のHADBサーバを正常終了する

正常終了方法については，「18.5.2　マルチノード構成のHADBサーバの終了方法」を参照してください。

バックアップを使用してデータベースを回復する

「22.1.2　バックアップの取得方法とデータベースの回復方法（Azure環境の場合）」の「(2)　データベースの回復方法（Azure環境の場合）」の2.の方法でデータベースを回復してください。

udevルールファイルを変更する

スナップショットを使用してマネージドディスクを復元した場合，プライマリノードおよびセカンダリノードのudevルールファイルに指定したスナップショットの作成元のマネージドディスクを，復元したマネージドディスクに変更してください。

この操作は，OSのスーパユーザで実行してください。

全ノードのOSを再起動する

変更したudevルールを反映させるために，全ノードのOSを再起動してください。

この操作は，OSのスーパユーザで実行してください。

マルチノード構成のHADBサーバを正常開始する

正常開始方法については，「18.5.1　マルチノード構成のHADBサーバの開始方法」を参照してください。

HADBサーバの稼働モードを変更する

HADBサーバの稼働モードを静止モードにした状態でバックアップを取得した場合，データベースを回復したあとにマルチノード構成のHADBサーバを開始すると，プライマリノードのHADBサーバの稼働モードは静止モードになります。この場合，必要に応じてプライマリノードでadbchgsrvmodeコマンドを実行し，HADBサーバの稼働モードを通常モードに変更してください。

adbchgsrvmode --normal

上記は，稼働モードを通常モードに戻す場合の例です。

18.35.5　仮想マシンを再起動する場合

次の手順で仮想マシンを再起動してください。

手順

仮想マシンを再起動するノードのHADBサーバを正常終了する

HADBサーバを正常終了方法については，「18.5.2　マルチノード構成のHADBサーバの終了方法」の「(2)　特定のノードのHADBサーバの終了手順」を参照してください。

仮想マシンを再起動する

HADBサーバを正常開始する

仮想マシンを再起動したノードがワーカーノードの場合

1.で正常終了したHADBサーバを正常開始して，マルチノード構成にワーカーノードを追加してください。マルチノード構成への追加手順については，「18.18.3　マルチノード構成から削除されたワーカーノードを再度追加する手順」を参照してください。

仮想マシンを再起動したノードがワーカーノード以外の場合（HAモニタありのマルチノード構成の場合）

1.で正常終了したHADBサーバを正常開始して，マルチノード構成にノードを復帰させてください。マルチノード構成への復帰手順については，「18.16.3　マルチノード構成へのノードの復帰」を参照してください。

18.35.6　Azureの環境に起因するトラブル

Azureの環境に起因するトラブルが発生したときの対処方法を説明します。

■仮想マシンが異常終了したときの対処方法

ワーカーノードの仮想マシンが異常終了した場合

仮想マシンが異常終了した原因を対処したあとに仮想マシンを起動してください。

そのあとに，仮想マシンが異常終了したワーカーノードをマルチノード構成に追加してください。追加手順については，「18.18.3　マルチノード構成から削除されたワーカーノードを再度追加する手順」を参照してください。

プライマリノードまたはセカンダリノードの仮想マシンが異常終了した場合（HAモニタありのマルチノード構成の場合）

仮想マシンが異常終了した原因を対処したあとに仮想マシンを起動してください。

そのあとに，仮想マシンが異常終了したノードをマルチノード構成に復帰させてください。復帰手順については，「18.16.3　マルチノード構成へのノードの復帰」を参照してください。

■マネージドディスクで障害が発生したときの対処方法

マネージドディスクで障害が発生した場合は，バックアップを使用してデータを回復してください。回復手順については，「18.35.4　データベースのバックアップ（Azure環境の場合）」の「(2)　バックアップからの回復」を参照してください。

■マネージドディスクが満杯になったときの対処方法

DBエリアファイルが原因の場合

DBエリアファイルの容量増加によってマネージドディスクが満杯になった場合は，「16.3.1　DBエリアファイルの容量増加が原因の場合」を参照して対処してください。

DBエリアファイル以外が原因の場合

DBエリアファイル以外のファイルの容量増加によってマネージドディスクが満杯になった場合は，「16.3.3　DBエリアファイル以外のファイルの容量増加が原因の場合」を参照して対処してください。

第7編　コールドスタンバイ構成編

19　コールドスタンバイ構成の運用

この章では，コールドスタンバイ構成でのシステムの構築方法，およびコールドスタンバイ構成の運用方法について説明します。

19.1　この章を読む際の留意事項

コールドスタンバイ構成の説明は，HAモニタについての知識があることを前提としています。HAモニタについては，マニュアルHAモニタ Linux(R)(x86)編を参照してください。

また，マニュアルHAモニタ Linux(R)(x86)編を参照する際，次の点に留意してください。

HADBサーバは，モニタモードで動作します。

エイリアスIPアドレスを引き継ぐ構成になります。

HADBサーバは，HAモニタとのインタフェースを持たないプログラムとして動作します。

サーバ障害の検出方法は，APIを発行しない方法になります。

HAモニタ Extensionは使用できません。

19.2　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）

コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）を次の図に示します。

図19‒1　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）

注※

共有ディスクのSCSIリザーブを使用する場合は，SVPおよびリセットパスは必要ありません。

重要

HAモニタによる共有ディスクのデータ保護方法には，次のどちらかを選択できますが，系のリセットを使用することを推奨します。

系のリセット

共有ディスクのSCSIリザーブ

19.2.1　前提ソフトウェア

コールドスタンバイ構成の場合，HAモニタが必要になります。

HADBでは，HAモニタのモニタモードの機能を使用し，実行系の障害を監視しています。実行系で障害が発生した場合，HAモニタの系切り替え機能を使用して，待機系に系切り替えをします。

障害発生時の系切り替え処理については，「19.12　障害が発生した場合の運用」を参照してください。

なお，使用しているLinuxのバージョンによって，HAモニタの前提バージョンが次のように異なります。

RHEL 8の場合：01-71以降

RHEL 9の場合：01-78以降

RHEL 10の場合：対応するHAモニタがありません。そのため，RHEL 10ではコールドスタンバイ構成は構築できません。

19.2.2　サーバ構成

「図19‒1　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）」で示す構成例の場合，2つの系（hadb01およびhadb02）から構成されています。実行系はhadb01，待機系はhadb02になります。

コールドスタンバイ構成の場合，実行系と待機系のサーバマシンの性能（CPU，メモリサイズなど）は同一である必要はありません。ただし，サーバマシンの性能が異なる場合，系が切り替わったあとにSQL文の処理性能に差異が発生するおそれがあります。そのため，できる限り実行系と待機系のマシン性能を同じにすることを推奨します。

また，コールドスタンバイ構成では，HAモニタの系切り替え機能を使用します。系を切り替える際の共有ディスクのデータの保護方法には，次のどちらかを選択してください。推奨する方法は，系のリセットです。

系のリセット

共有ディスクのSCSIリザーブ

各系のサーバマシンに障害管理プロセサ（「図19‒1　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）」のSVP）がある場合は，推奨する系のリセットを使用してください。

障害管理プロセサは，使用するマシンの機種によって，SVP，BMC，または管理サーバのように名称が異なります。系のリセット，障害管理プロセサ，共有ディスクのSCSIリザーブについては，マニュアルHAモニタ Linux(R)(x86)編の次の個所を参照してください。

系のリセット：系のリセット

障害管理プロセサ：必要なハードウェア

共有ディスクのSCSIリザーブ：共有ディスクのSCSIリザーブ

19.2.3　ネットワーク構成

コールドスタンバイ構成の場合，次に示す3つのネットワークを使用します。各ネットワークは物理的に分けてください。

クライアント−サーバ間ネットワーク

監視パス

リセットパス

(1)　クライアント−サーバ間ネットワーク

HADBクライアントとHADBサーバ間の通信で使用するネットワークです。

HADBクライアントは，エイリアスIPアドレスを使用してHADBサーバに接続します。そのため，マニュアルHAモニタ Linux(R)(x86)編のLANの引き継ぎを参照して，エイリアスIPアドレスを設定してください。

「図19‒1　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）」でのIPアドレス，およびポート番号の設定例を次の表に示します。

表19‒1　クライアント−サーバ間ネットワークのIPアドレスとポート番号の設定例

項番

設定対象

IPアドレス

ポート番号

1

クライアントマシン

10.196.108.111

設定不要

2

サーバマシンhadb01（実行系）

10.196.108.11

23650

3

サーバマシンhadb02（待機系）

10.196.108.12

23650

4

エイリアスIPアドレス

10.196.108.143

23650

(2)　監視パス

HAモニタの監視パスとして使用するネットワークです。

ネットワーク構築する際，LinuxのBonding機能を使用したNIC冗長化を推奨します。また，Bonding機能を使用する際には，複数のLANカードを用意してください。

Bonding機能の詳細については，OSのマニュアルを参照してください。HAモニタの監視パスの設定については，マニュアルHAモニタ Linux(R)(x86)編の監視パスの設定を参照してください。

「図19‒1　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）」でのIPアドレス，およびポート番号の設定例を次の表に示します。

表19‒2　監視パスのIPアドレスとポート番号の設定例

項番

設定対象

IPアドレス

ポート番号

1

サーバマシンhadb01（実行系）のHAモニタの監視パス

172.16.0.11

7777

2

サーバマシンhadb02（待機系）のHAモニタの監視パス

172.16.0.12

7777

(3)　リセットパス

系のリセットを使用する場合は，リセットパスが必要になります。共有ディスクのSCSIリザーブを使用する場合は，リセットパスは必要ありません。

リセットパスとは，HAモニタが障害を検知した際，障害が発生した系の入出力をリセットするために使用するネットワークです。このネットワークは，リセットパス専用のネットワークである必要があります。詳細については，マニュアルHAモニタ Linux(R)(x86)編のリセットパスの構成を参照してください。

「図19‒1　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）」でのIPアドレス，およびポート番号の設定例を次の表に示します。

表19‒3　リセットパスのIPアドレスとポート番号の設定例

項番

設定対象

IPアドレス

ポート番号

1

サーバマシンhadb01（実行系）のリセットパス

192.168.0.11

11111

2

サーバマシンhadb01（実行系）のSVP

192.168.0.21

22222

3

サーバマシンhadb02（待機系）のリセットパス

192.168.0.12

11111

4

サーバマシンhadb02（待機系）のSVP

192.168.0.22

22222

HAモニタによる共有ディスクのデータ保護方法には，系のリセットの使用を推奨しています。この場合，リセットパスが必要になります。また，HADBサーバが稼働するサーバマシンにSVPなどの障害管理プロセサが搭載されている必要があります。詳細については，マニュアルHAモニタ Linux(R)(x86)編の必要なハードウェアを参照してください。

19.2.4　ストレージ構成

コールドスタンバイ構成の場合，次のファイルシステムおよびディスクを準備してください。

系ローカルのファイルシステム

「図19‒1　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）」の場合，LOC001およびLOC002が該当します。

系切り替え対象のファイルシステム

「図19‒1　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）」の場合，FS001〜FS004が該当します。

共有のファイルシステム

「図19‒1　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）」の場合，FS005が該当します。

DBエリアファイル用のディスク

「図19‒1　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）」の場合，LU001〜LU005およびWRK001が該当します。

なお，一部のファイルシステムおよびディスクでは，実行系と待機系でディスクを識別するためのデバイス名が必要になります。サーバとストレージ間がシングルパス構成の場合は，WWNの使用を推奨します。サーバとストレージのパスを冗長化する場合は，冗長化の方法によってデバイス名が異なります。「図19‒1　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）」の場合の，デバイス名の例を次に示します。

シングルパス構成の場合のデバイス名の例

FS001：/dev/disk/by-id/wwn-0x60060e8010205850051104c500000005

FS002：/dev/disk/by-id/wwn-0x60060e8010205850051104c500000006

FS003：/dev/disk/by-id/wwn-0x60060e8010205850051104c500000007

FS004：/dev/disk/by-id/wwn-0x60060e8010205850051104c500000008

LU001：/dev/disk/by-id/wwn-0x60060e8010205850051104c50000000f

LU002：/dev/disk/by-id/wwn-0x60060e8010205850051104c50000000e

LU003：/dev/disk/by-id/wwn-0x60060e8010205850051104c500000010

LU004：/dev/disk/by-id/wwn-0x60060e8010205850051104c500000011

LU005：/dev/disk/by-id/wwn-0x60060e8010205850051104c500000013

WRK001：/dev/disk/by-id/wwn-0x60060e8010205850051104c50000000d

マルチパスソフトウェア（DMMP）による冗長化構成の場合のデバイス名の例

FS001：/dev/mapper/mpath1

FS002：/dev/mapper/mpath2

FS003：/dev/mapper/mpath3

FS004：/dev/mapper/mpath4

LU001：/dev/mapper/mpath11

LU002：/dev/mapper/mpath12

LU003：/dev/mapper/mpath13

LU004：/dev/mapper/mpath14

LU005：/dev/mapper/mpath15

WRK001：/dev/mapper/mpath16

(1)　系ローカルのファイルシステム

系ローカルのファイルシステムには，次のディレクトリを配置します。

サーバディレクトリ

サーバディレクトリの作成には，adbinstallコマンドを使用します。

重要

実行系と待機系の両方にサーバディレクトリを作成してください。サーバディレクトリを共有ディスク（系切り替え対象のファイルシステム）上に作成したり，共有のファイルシステム上に作成したりしないでください。

統一フォーマット用監査証跡の出力先ディレクトリ

統一フォーマット用監査証跡の出力先ディレクトリについては，「2.18.9　監査証跡の変換（JP1/Audit Management - Managerとの連携）」を参照してください。

「図19‒1　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）」の場合，LOC001およびLOC002が系ローカルのファイルシステムになります。

LOC001

サーバマシンhadb01（実行系）のローカルのファイルシステム

LOC002

サーバマシンhadb02（待機系）のローカルのファイルシステム

(2)　系切り替え対象のファイルシステム

次に示すファイルシステムを系切り替え対象にします。

DBディレクトリを格納するファイルシステム

作業用一時ファイルを格納するファイルシステム※

同義語辞書ファイルを格納するファイルシステム

監査証跡の出力先ディレクトリを作成するファイルシステム

注※

作業用一時ファイルを格納するファイルシステムは，必ずしも系切り替え対象とする必要はありません。系切り替え対象としない場合は，各系の系ローカルのファイルシステム上に作業用一時ファイルの格納先を用意してください。作業用一時ファイルを格納するファイルシステムを系切り替え対象とする場合のメリットとデメリットを次に示します。メリットとデメリットを考慮して，作業用一時ファイルを格納するファイルシステムを系切り替え対象とするかどうかを判断してください。

＜メリット＞

adbimportコマンドまたはadbidxrebuildコマンドの実行中にHADBサーバが異常終了して系切り替えが発生した場合，切り替え先の系のHADBサーバでのコマンドの再実行に掛かる時間が短くなります。

作業用一時ファイルを格納する領域を各系に用意する必要がないため，ディスク容量が少なく済みます。

＜デメリット＞

系切り替え対象のファイルシステムのサイズに比例して系切り替えに掛かる時間が増加します。

系切り替え対象のファイルシステムは，実行系と待機系から参照できるディスク（共有ディスク）から構成されるVG内のLV上に作成してください。共有ディスクについては，マニュアルHAモニタ Linux(R)(x86)編の共有ディスクの構成を参照してください。

メモ

DBディレクトリの作成については，「19.3.7　データベースの作成」を参照してください。

「図19‒1　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）」の場合，FS001〜FS004が系切り替え対象のファイルシステムになります。

FS001

DBディレクトリを格納するファイルシステム

ここでは，VGの名称はvg_hadb01，LVの名称はhadb_dbとします。

FS002

作業用一時ファイルを格納するファイルシステム

ここでは，VGの名称はvg_hadb02，LVの名称はhadb_workareaとします。

FS003

同義語辞書ファイルを格納するファイルシステム

ここでは，VGの名称はvg_hadb03，LVの名称はhadb_syndictとします。

なお，同義語辞書ファイルを格納するファイルシステムは，同義語検索をする場合に必要です。

FS004

監査証跡の出力先ディレクトリを作成するファイルシステム

ここでは，VGの名称はvg_hadb04，LVの名称はhadb_auditとします。

なお，監査証跡の出力先ディレクトリを作成するファイルシステムは，監査証跡機能を使用する場合に必要です。

重要

共有ディスクのSCSIリザーブを使用する場合，系切り替え対象のファイルシステムを作成したディスクは，SCSIリザーブの対象としてください。また，SCSIリザーブの対象としたディスクには，系切り替え対象のファイルシステム以外の領域を作成しないでください。

(3)　共有のファイルシステム

共有のファイルシステムには，次のファイルシステムを配置します。

データインポートで使用する入力データファイルを格納するファイルシステム

ADB_CSVREAD関数で使用するCSVファイルを格納するファイルシステム

監査証跡の保存先ディレクトリを作成するファイルシステム

共有のファイルシステムは，実行系と待機系から参照できるディスク（共有ディスク）上に構築し，実行系と待機系で同一パスのディレクトリにマウントしてください。共有ディスクについては，マニュアルHAモニタ Linux(R)(x86)編の共有ディスクの構成を参照してください。

「図19‒1　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）」の場合，FS005が共有のファイルシステムになります。

FS005

データインポートの入力データファイルを格納するファイルシステム，CSVファイルを格納するファイルシステム，および監査証跡の保存先ディレクトリを作成するファイルシステム

共有のファイルシステムは，分散ファイルシステムの一つであるNFSなどを用いて構築できます。

(4)　DBエリアファイル用のディスク

DBエリアファイルごとにディスクを用意します。

次のDBエリアファイルには，ブロックスペシャルファイルを割り当ててください。

マスタディレクトリ用DBエリアファイル

ディクショナリ用DBエリアファイル

システム表用DBエリアファイル

データ用DBエリアファイル

また，次のDBエリアファイルに対応するディスクは，実行系と待機系から参照できる必要があります。

マスタディレクトリ用DBエリアファイル

ディクショナリ用DBエリアファイル

システム表用DBエリアファイル

データ用DBエリアファイル

作業表用DBエリアファイル

重要

共有ディスクのSCSIリザーブを使用する場合，上記のDBエリアファイル用のディスクは，SCSIリザーブの対象としてください。

「図19‒1　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）」の場合，LU001〜LU005およびWRK001がDBエリアファイル用のディスクになります。

LU001

ディクショナリ用DBエリアを構成するDBエリアディスク

LU002

マスタディレクトリ用DBエリアを構成するDBエリアディスク

LU003

システム表用DBエリアを構成するDBエリアディスク

LU004

データ用DBエリア（ADBUTBL01）を構成するDBエリアディスク

LU005

データ用DBエリア（ADBUIDX01）を構成するDBエリアディスク

WRK001

作業表用DBエリア（ADBWRK）を構成するDBエリアディスク

19.3　コールドスタンバイ構成でのシステムの構築

コールドスタンバイ構成でのシステムの構築手順について説明します。

メモ

AWS環境のコールドスタンバイ構成のシステム構築手順については，「19.22.4　コールドスタンバイ構成の構築（AWS環境の場合）」を参照してください。

Azure環境のコールドスタンバイ構成のシステム構築手順については，「19.23.3　コールドスタンバイ構成の構築（Azure環境の場合）」を参照してください。

19.3.1　HAモニタのインストール

実行系および待機系にHAモニタをインストールしてください。HAモニタのインストール方法については，マニュアルHAモニタ Linux(R)(x86)編のシステムの構築を参照してください。

19.3.2　HADBサーバのインストールおよび環境設定

HADBサーバをインストールする前に，実行系および待機系で環境変数の設定を実施してください。

次に，実行系および待機系にHADBサーバをインストールし，環境設定を行ってください。HADBサーバのインストール，および環境設定については，「8.　システム構築」を参照してください。

HADBサーバのインストールおよび環境設定時の注意事項を次に示します。

HADBサーバのバージョンおよびリビジョンは，実行系と待機系で同じにしてください。

環境変数の設定については，「8.4　環境変数の設定」を参照してください。ただし，次の環境変数については，実行系と待機系で指定値を同じにしてください。

ADBLANG

TZ

コールドスタンバイ構成では，実行系のHADBサーバが異常終了した場合，HADBサーバの再開始を行います。HADBサーバの再開始の前にトラブルシュート情報が取得されるため，実行系と待機系に，トラブルシュート情報ファイルを格納するディレクトリを作成してください。

系ローカルのファイルシステムに，/HADB/adbinfoというディレクトリを作成する例を次に示します。

mkdir -p /HADB/adbinfo                   ...1
chmod 755 /HADB/adbinfo                  ...2

HADB管理者が，OSのmkdirコマンドを使用してディレクトリを作成します。

HADB管理者が書き込めるように，OSのchmodコマンドを使用して権限を付与します。

トラブルシュート情報ファイルを格納するディレクトリに作成されたファイルは，自動では削除されません。不要になった情報は定期的に手動で削除してください。

メモ

HADBサーバのサーバディレクトリ（インストール時）およびサーバディレクトリ（運用時）は，実行系と待機系のHADBサーバで同じにする必要はありません。

19.3.3　HADBクライアントのインストールおよび環境設定

HADBクライアントのインストール，および環境設定については，マニュアルHADB　AP開発ガイドのHADBクライアントの環境設定（ODBCドライバおよびCLI関数を使用する場合）を参照してください。

19.3.4　HAモニタの環境設定

実行系および待機系でHAモニタの環境設定をしてください。HAモニタの環境設定方法については，マニュアルHAモニタ Linux(R)(x86)編のシステムの構築を参照してください。

ここでは，HAモニタの環境設定をする際に留意することについて説明します。

(1)　環境変数の設定

HADB管理者の環境変数に，次の環境変数を設定してください。

PATH

HAモニタのコマンドを実行するために，次のパスを追加してください。

/opt/hitachi/HAmon/bin

(2)　sysdefファイルの指定

HAモニタのsysdefファイルに指定するオペランドのうち，次のオペランドについては，指定値が決まっています。

address

系のリセット優先度を指定します。指定値が小さいほど，その系のリセット優先度が高くなります。各系で異なる値を指定してください。実行系の指定値が，待機系の指定値より小さくなるようにしてください。

monbegin_restart

nouseを指定します。

termcmd_at_abort

nouseを指定します。

fence_reset

系のリセットを使用する場合は，このオペランドを省略するか，またはデフォルト値のuseを指定してください。

共有ディスクのSCSIリザーブを使用する場合は，nouseを指定してください。

fence_scsi

系のリセットを使用する場合は，このオペランドを省略するか，またはデフォルト値のnouseを指定してください。

共有ディスクのSCSIリザーブを使用する場合は，useを指定してください。

fence_lan

このオペランドを省略するか，またはデフォルト値のnouseを指定してください。

上記のオペランドの詳細については，マニュアルHAモニタ Linux(R)(x86)編のHAモニタの環境設定（sysdef）を参照してください。

(3)　serversファイルの指定

HAモニタのserversファイルに指定するオペランドのうち，次のオペランドについては，指定値が決まっています。

name

サーバディレクトリの絶対パスを指定します。

ただし，nameオペランドに指定するパス名として，空白を含む文字列は指定できません。そのため，コールドスタンバイ構成の場合，パス名に空白を含まないディレクトリをサーバディレクトリとすることを推奨します。

acttype

コールドスタンバイ構成は，HAモニタのモニタモードで動作するため，monitorを指定します。

termcommand

HADB用の設定を記述したサーバの停止コマンドの絶対パスを指定します。

サーバの停止コマンドはひな形を基に作成してください。作成方法については，「(4)　コマンド用環境変数定義およびコマンドの作成」の「(c)　サーバの停止コマンドの作成」，およびマニュアルHAモニタ Linux(R)(x86)編のサーバの停止コマンドの作成を参照してください。

initial

実行系の場合はonlineを，待機系の場合はstandbyを指定します。

disk

次に示すファイルシステムを含むVGの絶対パスを指定します。

DBディレクトリを格納するファイルシステム

作業用一時ファイルを格納するファイルシステム※

同義語辞書ファイルを格納するファイルシステム（同義語検索を行わない場合は，不要なファイルシステムです）

監査証跡の出力先ディレクトリを作成するファイルシステム（監査証跡機能を使用しない場合は，不要なファイルシステムです）

注※

作業用一時ファイルを格納するファイルシステムを系切り替え対象としない場合は，作業用一時ファイルを格納するファイルシステムを含むVGの絶対パスを指定する必要はありません。

「図19‒1　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）」の場合は，/dev/vg_hadb01，/dev/vg_hadb02，/dev/vg_hadb03，および/dev/vg_hadb04を指定します。

fs_name

次に示すファイルシステムに対応する論理ボリュームの絶対パスを指定します。

DBディレクトリを格納するファイルシステム

作業用一時ファイルを格納するファイルシステム※

同義語辞書ファイルを格納するファイルシステム（同義語検索を行わない場合は，不要なファイルシステムです）

監査証跡の出力先ディレクトリを作成するファイルシステム（監査証跡機能を使用しない場合は，不要なファイルシステムです）

注※

作業用一時ファイルを格納するファイルシステムを系切り替え対象としない場合は，作業用一時ファイルを格納するファイルシステムに対応する論理ボリュームの絶対パスを指定する必要はありません。

「図19‒1　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）」の場合は，/dev/vg_hadb01/hadb_db，/dev/vg_hadb02/hadb_workarea，/dev/vg_hadb03/hadb_syndict，および/dev/vg_hadb04/hadb_auditを指定します。

fs_mount_dir

次に示すファイルシステムをマウントするディレクトリのパスを指定します。実行系と待機系で同じパスを指定します。

DBディレクトリを格納するファイルシステム

作業用一時ファイルを格納するファイルシステム※

同義語辞書ファイルを格納するファイルシステム（同義語検索を行わない場合は，不要なファイルシステムです）

監査証跡の出力先ディレクトリを作成するファイルシステム（監査証跡機能を使用しない場合は，不要なファイルシステムです）

注※

作業用一時ファイルを格納するファイルシステムを系切り替え対象としない場合は，作業用一時ファイルを格納するファイルシステムをマウントするディレクトリのパスを指定する必要はありません。

fs_mount_opt

次に示すファイルシステムをマウントするためのマウントオプションを指定します。

DBディレクトリを格納するファイルシステム

作業用一時ファイルを格納するファイルシステム※

同義語辞書ファイルを格納するファイルシステム（同義語検索を行わない場合は，不要なファイルシステムです）

監査証跡の出力先ディレクトリを作成するファイルシステム（監査証跡機能を使用しない場合は，不要なファイルシステムです）

注※

作業用一時ファイルを格納するファイルシステムを系切り替え対象としない場合は，作業用一時ファイルを格納するファイルシステムをマウントするためのマウントオプションを指定する必要はありません。

lan_updown

LANの状態設定ファイルを使用するため，useを指定します。

LANの状態設定ファイルには，エイリアスIPアドレスの設定をしてください。詳細については，マニュアルHAモニタ Linux(R)(x86)編のLANの状態設定ファイルの設定を参照してください。

patrolcommand

HADB用の設定を記述したサーバの監視コマンドの絶対パスを指定します。

サーバの監視コマンドはひな形を基に作成してください。作成方法については，「(4)　コマンド用環境変数定義およびコマンドの作成」の「(d)　サーバの監視コマンドの作成」，およびマニュアルHAモニタ Linux(R)(x86)編のサーバの監視コマンドの作成を参照してください。

servexec_retry

2を指定します。

waitserv_exec

yesを指定します。

ip_neck

useを指定します。

uoc_neck

nouseを指定します。

vg_neck

DBディレクトリを格納するファイルシステム，および監査証跡の出力先ディレクトリを作成するファイルシステムを含むVGには，useを指定します。

そのほかのVGには，nouseを指定します。

fs_neck

DBディレクトリを格納するファイルシステム，および監査証跡の出力先ディレクトリを作成するファイルシステムには，useを指定します。

そのほかのファイルシステムには，nouseを指定します。

actcommand

HADB用の設定を記述したサーバの起動コマンドの絶対パスを指定します。

サーバの起動コマンドはひな形を基に作成してください。作成方法については，「(4)　コマンド用環境変数定義およびコマンドの作成」の「(b)　サーバの起動コマンドの作成」，およびマニュアルHAモニタ Linux(R)(x86)編のサーバの起動コマンドの作成を参照してください。

scsi_device

このオペランドには，SCSIリザーブの対象となるデバイス名を絶対パスで指定します。

なお，系のリセットを使用する場合は，このオペランドを指定する必要はありません。

共有ディスクのSCSIリザーブを使用する場合で，かつ共有ディスクが次のどれかの条件を満たすときに，このオペランドを指定してください。

シングルパス構成の場合

VMware ESXiでの仮想化環境の場合（DMMPを使用する場合を除く）

マルチパスソフトウェア（HDLM）による冗長化構成の場合

このオペランドを指定する場合は，次のファイルシステムとディスクのデバイス名※を絶対パスで指定します。

系切り替え対象のファイルシステム

「図19‒1　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）」のFS001～FS004が該当します。

DBエリアファイル用のディスク

「図19‒1　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）」のLU001～LU005，WRK001が該当します。

メモ

作業用一時ファイルを格納するファイルシステムを系切り替え対象としない場合は，作業用一時ファイルを格納するファイルシステムのデバイス名を指定する必要はありません。

同義語検索を使用しない場合は，同義語辞書ファイルを格納するファイルシステムのデバイス名を指定する必要はありません。

監査証跡機能を使用しない場合は，監査証跡の出力先ディレクトリを作成するファイルシステムのデバイス名を指定する必要はありません。

注※

シングルパス構成，およびVMware ESXiでの仮想化環境（DMMPを使用する場合を除く）の場合，このオペランドには，「19.2.4　ストレージ構成」の「シングルパス構成の場合のデバイス名の例」に記載されているwwn-から始まるパスではなく，マニュアルHAモニタ Linux(R)(x86)編の共有ディスクのSCSIリザーブに必要なオペランドの指定値の求め方の例のようにscsi-から始まるパスを指定してください。

重要

次のファイルシステムのデバイス名は，このオペランドに指定しないでください。

系ローカルのファイルシステム

「図19‒1　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）」のLOC001，LOC002が該当します。

共有のファイルシステム

「図19‒1　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）」のFS005が該当します。

このオペランドを指定する場合は，マニュアルHAモニタ Linux(R)(x86)編の共有ディスクのSCSIリザーブに必要なオペランドの指定値の求め方を参照してください。

dmmp_device

このオペランドには，SCSIリザーブの対象となるデバイスをDMMPの論理デバイスの絶対パスで指定します。

なお，系のリセットを使用する場合は，このオペランドを指定する必要はありません。

共有ディスクのSCSIリザーブを使用する場合で，かつ共有ディスクがマルチパスソフトウェア（DMMP）による冗長化構成のときに，このオペランドを指定してください。

このオペランドを指定する場合は，次のファイルシステムとディスクのデバイス名を絶対パスで指定します。

系切り替え対象のファイルシステム

「図19‒1　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）」のFS001～FS004が該当します。

DBエリアファイル用のディスク

「図19‒1　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）」のLU001～LU005，WRK001が該当します。

メモ

作業用一時ファイルを格納するファイルシステムを系切り替え対象としない場合は，作業用一時ファイルを格納するファイルシステムのデバイス名を指定する必要はありません。

同義語検索を使用しない場合は，同義語辞書ファイルを格納するファイルシステムのデバイス名を指定する必要はありません。

監査証跡機能を使用しない場合は，監査証跡の出力先ディレクトリを作成するファイルシステムのデバイス名を指定する必要はありません。

重要

次のファイルシステムのデバイス名は，このオペランドに指定しないでください。

系ローカルのファイルシステム

「図19‒1　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）」のLOC001，LOC002が該当します。

共有のファイルシステム

「図19‒1　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）」のFS005が該当します。

このオペランドを指定する場合は，マニュアルHAモニタ Linux(R)(x86)編の共有ディスクのSCSIリザーブに必要なオペランドの指定値の求め方を参照してください。

serversファイルに指定する上記のオペランドの詳細については，マニュアルHAモニタ Linux(R)(x86)編のサーバ対応の環境設定（servers）を参照してください。

(4)　コマンド用環境変数定義およびコマンドの作成

HAモニタとの連携のために，コマンド用環境変数定義と次のコマンドを作成してください。

サーバの起動コマンド

サーバの停止コマンド

サーバの監視コマンド

$ADBDIR/sample/scripts下に，コマンド用環境変数定義，および上記のコマンドのひな形があります。ひな形を基にコマンドを作成してください。

(a)　コマンド用環境変数定義の作成

$ADBDIR/sample/scripts/coldstandby.envがひな形です。このひな形をコピーして，次の値を修正してください。

環境変数ADBMGR

HADB管理者（OSユーザ）のユーザ名を指定してください。

環境変数ADBDIR

サーバディレクトリの絶対パスを指定してください。

環境変数ADBINFODIR

トラブルシュート情報ファイルを格納するディレクトリの絶対パスを指定してください。

(b)　サーバの起動コマンドの作成

$ADBDIR/sample/scripts/coldstandby_act.shがひな形です。このひな形をコピーして，次の個所を修正してください。

source文

source文の引数に，コマンド用環境変数定義を指定したファイルの絶対パスを指定してください。

(c)　サーバの停止コマンドの作成

$ADBDIR/sample/scripts/coldstandby_term.shがひな形です。このひな形をコピーして，次の個所を修正してください。

source文

source文の引数に，コマンド用環境変数定義を指定したファイルの絶対パスを指定してください。

(d)　サーバの監視コマンドの作成

$ADBDIR/sample/scripts/coldstandby_patrol.shがひな形です。このひな形をコピーして，次の個所を修正してください。

source文

source文の引数に，コマンド用環境変数定義を指定したファイルの絶対パスを指定してください。

(5)　各ファイルの指定例（系のリセットを使用する場合）

次のファイルの指定例を示します。系のリセットを使用する場合の指定例です。

sysdefファイル

serversファイル

コマンド用環境変数定義ファイル（この例では/HADB/scripts/coldstandby.env）

サーバの起動コマンドファイル（この例では/HADB/scripts/coldstandby_act.sh）

サーバの停止コマンドファイル（この例では/HADB/scripts/coldstandby_term.sh）

サーバの監視コマンドファイル（この例では/HADB/scripts/coldstandby_patrol.sh）

ここで説明する指定例は，「図19‒1　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）」のシステム構成を前提としています。

(a)　sysdefファイルの指定例

■サーバマシンhadb01（実行系）のsysdefファイルの指定例

environment  name hadb01,
             address 1,                 ...1
             patrol 60,
             lan path11,                ...2
             lanport HAmon1;            ...3
function     pathpatrol 240,
             connect_retry 5:200,
             monbegin_restart nouse,
             termcmd_at_abort nouse;

［説明］

この系のリセット優先度を指定します。この系は，実行系のため，リセット優先度をいちばん高くする必要があるので1を指定します。

HAモニタの監視パスとして使用するLANのホスト名を指定します。IPアドレス172.16.0.11に対応するホスト名path11を指定します。

HAモニタの監視パスとして使用するLANのサービス名を指定します。ポート番号7777に対応するサービス名HAmon1を指定します。

■サーバマシンhadb02（待機系）のsysdefファイルの指定例

environment  name hadb02,
             address 2,                 ...1
             patrol 60,
             lan path21,                ...2
             lanport HAmon1;            ...3
function     pathpatrol 240,
             connect_retry 5:200,
             monbegin_restart nouse,
             termcmd_at_abort nouse;

［説明］

この系のリセット優先度を指定します。この系は，待機系のため，2を指定します。

HAモニタの監視パスとして使用するLANのホスト名を指定します。IPアドレス172.16.0.12に対応するホスト名path21を指定します。

HAモニタの監視パスとして使用するLANのサービス名を指定します。ポート番号7777に対応するサービス名HAmon1を指定します。

(b)　serversファイルの指定例

ここで説明している例は，ファイルシステムにext4を使用していることを前提としています。ext4以外のファイルシステムを使用する場合は，OSのmountコマンドのオプションがここで説明している例とは異なります。

また，作業用一時ファイルを格納するファイルシステムを系切り替え対象とし，同義語検索および監査証跡機能を使用することを前提としています。

■サーバマシンhadb01（実行系）のserversファイルの指定例

server name  /HADB/server,                     ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb01:                    ...2
            /dev/vg_hadb02:
            /dev/vg_hadb03:
            /dev/vg_hadb04,
       lan_updown use,
       fs_name /dev/vg_hadb01/hadb_db:         ...3
               /dev/vg_hadb02/hadb_workarea:
               /dev/vg_hadb03/hadb_syndict:
               /dev/vg_hadb04/hadb_audit,
       fs_mount_dir /HADB/db:                  ...4
                    /mnt/workarea:
                    /mnt/syndict:
                    /mnt/audit,
       fs_mount_opt "-t ext4 -o defaults,noatime,_netdev":    ...5
                    "-t ext4 -o defaults,noatime,_netdev":
                    "-t ext4 -o defaults,noatime,_netdev":
                    "-t ext4 -o defaults,noatime,_netdev",
       actcommand "/HADB/scripts/coldstandby_act.sh",         ...6
       termcommand "/HADB/scripts/coldstandby_term.sh",       ...7
       patrolcommand "/HADB/scripts/coldstandby_patrol.sh",   ...8
       servexec_retry 2,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use:nouse:nouse:use,   ...9
       fs_neck use:nouse:nouse:use,   ...10
       initial online;                ...11

［説明］

サーバディレクトリの絶対パスを指定します。

次のディレクトリを作成するファイルシステムがあるVGの絶対パスを指定します。

DBディレクトリ

作業用一時ファイルを格納するディレクトリ

同義語辞書ファイルの格納ディレクトリ

監査証跡の出力先ディレクトリ

2.で示したディレクトリを作成するファイルシステムを構築したLVの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするマウントポイントの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするためのmountコマンドのオプションを指定します。

コールドスタンバイ構成で使用するサーバの起動コマンドの絶対パスを指定します。

コールドスタンバイ構成で使用するサーバの停止コマンドの絶対パスを指定します。

コールドスタンバイ構成で使用するサーバの監視コマンドの絶対パスを指定します。

次のように指定します。

DBディレクトリを作成するファイルシステムがあるVGに対しては，useを指定します。

作業用一時ファイルを格納するディレクトリを作成するファイルシステムがあるVGに対しては，nouseを指定します。

同義語辞書ファイルの格納ディレクトリを作成するファイルシステムがあるVGに対しては，nouseを指定します。

監査証跡の出力先ディレクトリを作成するファイルシステムがあるVGに対しては，useを指定します。

次のように指定します。

DBディレクトリを作成するファイルシステムに対しては，useを指定します。

作業用一時ファイルを作成するファイルシステムに対しては，nouseを指定します。

同義語辞書ファイルの格納ディレクトリを作成するファイルシステムに対しては，nouseを指定します。

監査証跡の出力先ディレクトリを作成するファイルシステムに対しては，useを指定します。

実行系とするため，onlineを指定します。

■サーバマシンhadb02（待機系）のserversファイルの指定例

server name  /HADB/server,                     ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb01:                    ...2
            /dev/vg_hadb02:
            /dev/vg_hadb03:
            /dev/vg_hadb04,
       lan_updown use,
       fs_name /dev/vg_hadb01/hadb_db:         ...3
               /dev/vg_hadb02/hadb_workarea:
               /dev/vg_hadb03/hadb_syndict:
               /dev/vg_hadb04/hadb_audit,
       fs_mount_dir /HADB/db:                  ...4
                    /mnt/workarea:
                    /mnt/syndict:
                    /mnt/audit,
       fs_mount_opt "-t ext4 -o defaults,noatime,_netdev":    ...5
                    "-t ext4 -o defaults,noatime,_netdev":
                    "-t ext4 -o defaults,noatime,_netdev":
                    "-t ext4 -o defaults,noatime,_netdev",
       actcommand "/HADB/scripts/coldstandby_act.sh",         ...6
       termcommand "/HADB/scripts/coldstandby_term.sh",       ...7
       patrolcommand "/HADB/scripts/coldstandby_patrol.sh",   ...8
       servexec_retry 2,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use:nouse:nouse:use,   ...9
       fs_neck use:nouse:nouse:use,   ...10
       initial standby;               ...11

［説明］

サーバディレクトリの絶対パスを指定します。

次のディレクトリを作成するファイルシステムがあるVGの絶対パスを指定します。

DBディレクトリ

作業用一時ファイルを格納するディレクトリ

同義語辞書ファイルの格納ディレクトリ

監査証跡の出力先ディレクトリ

2.で示したディレクトリを作成するファイルシステムを構築したLVの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするマウントポイントの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするためのmountコマンドのオプションを指定します。

コールドスタンバイ構成で使用するサーバの起動コマンドの絶対パスを指定します。

コールドスタンバイ構成で使用するサーバの停止コマンドの絶対パスを指定します。

コールドスタンバイ構成で使用するサーバの監視コマンドの絶対パスを指定します。

次のように指定します。

DBディレクトリを作成するファイルシステムがあるVGに対しては，useを指定します。

作業用一時ファイルを格納するディレクトリを作成するファイルシステムがあるVGに対しては，nouseを指定します。

同義語辞書ファイルの格納ディレクトリを作成するファイルシステムがあるVGに対しては，nouseを指定します。

監査証跡の出力先ディレクトリを作成するファイルシステムがあるVGに対しては，useを指定します。

次のように指定します。

DBディレクトリを作成するファイルシステムに対しては，useを指定します。

作業用一時ファイルを作成するファイルシステムに対しては，nouseを指定します。

同義語辞書ファイルの格納ディレクトリを作成するファイルシステムに対しては，nouseを指定します。

監査証跡の出力先ディレクトリを作成するファイルシステムに対しては，useを指定します。

待機系とするため，standbyを指定します。

(c)　コマンド用環境変数定義ファイルの指定例

この例では，コマンド用環境変数定義を/HADB/scripts/coldstandby.envに格納しています。指定内容は，実行系と待機系で同じにしてください。

■コマンド用環境変数定義ファイルの指定例

#!/bin/sh

# The environment variables for HADB
export ADBMGR=adbmanager                     ...1
export ADBDIR=/HADB/server                   ...2
export ADBINFODIR=/HADB/adbinfo              ...3

［説明］

HADB管理者（OSユーザ）のユーザ名adbmanagerを指定します。

サーバディレクトリの絶対パスを指定します。

トラブルシュート情報ファイルを格納するディレクトリの絶対パスを指定します。

(d)　サーバの起動コマンドファイルの指定例

この例では，サーバの起動コマンドを/HADB/scripts/coldstandby_act.shに格納しています。指定内容は，実行系と待機系で同じにしてください。

■サーバの起動コマンドファイルの指定例

#!/bin/sh

# Sample of the actcommand for HADB

SU=/bin/su
ECHO=/bin/echo

# Setting environment variables for HADB
source /HADB/scripts/coldstandby.env       ...1

# Execute adbstart command
$SU - $ADBMGR -c "$ECHO y|$ADBDIR/bin/adbstart"

# always 0 return
exit 0

［説明］

source文には，コマンド用環境変数定義ファイルの絶対パス/HADB/scripts/coldstandby.envを指定します。

(e)　サーバの停止コマンドファイルの指定例

この例では，サーバの停止コマンドを/HADB/scripts/coldstandby_term.shに格納しています。指定内容は，実行系と待機系で同じにしてください。

■サーバの停止コマンドファイルの指定例

#!/bin/sh

# Sample of the termcommand for HADB

STS_ACTIVE="ACTIVE"
STS_STOP="STOP"
STS_STARTING="STARTING"
STS_STOPPING="STOPPING"
STS_ABORT="ABORT"
STS_QUIESCE="QUIESCE"
STS_OFFLINE="OFFLINE"
STS_CHGMODE="CHGMODE"
STS_STOPWAIT="STOPWAIT"
STS_COREDUMP="COREDUMP"
STS_FORCE="FORCE"
STS_MAINTNCE="MAINTNCE"

AWK=/bin/awk
ECHO=/bin/echo
PS=/bin/ps
KILL=/bin/kill
GREP=/bin/grep
SU=/bin/su
READLINK=/bin/readlink

# Setting environment variables for HADB
source /HADB/scripts/coldstandby.env       ...1

# Resolve the path for adbsrvd
ADBSRVD=`$READLINK -e $ADBDIR/bin/adbsrvd`
if [ $? -ne 0 ]
then
  exit 0
fi

# Execute adbstop command
GET_STS=`$SU - $ADBMGR -c "$ADBDIR/bin/adbls -d srv 2>/dev/null" | $GREP -v SVID | $AWK '{ if ($1 ~ /[0-9]+/) { print $2 } else { print $1 } }'`

case "$1" in
"-e" )
  # Normal stop operations of active system.
  # (when the monend command is executed.)
  if [ "$GET_STS" = "$STS_ACTIVE"   -o "$GET_STS" = "$STS_STARTING" -o ¥
       "$GET_STS" = "$STS_STOPPING" -o "$GET_STS" = "$STS_QUIESCE"  -o ¥
       "$GET_STS" = "$STS_OFFLINE"  -o "$GET_STS" = "$STS_CHGMODE"  -o ¥
       "$GET_STS" = "$STS_STOPWAIT" -o "$GET_STS" = "$STS_MAINTNCE" ]
  then
    $SU - $ADBMGR -c "$ECHO y|$ADBDIR/bin/adbstop --force"
    STOPRES=$?
    if [ $STOPRES -ne 0 -a $STOPRES -ne 4 ]
    then
      ADB_ID=`$SU - $ADBMGR -c "$PS x" | $GREP $ADBSRVD | $GREP -v $GREP | $AWK '{print $1}'`
      if [ "$ADB_ID" != "" ]
      then
        $SU - $ADBMGR -c "$KILL $ADB_ID"
      fi
    fi
  fi

  ;;
"-w" )
  # Plan stop operations of active system.
  # (when the monswap command is executed.)
  if [ "$GET_STS" = "$STS_ACTIVE"   -o "$GET_STS" = "$STS_STARTING" -o ¥
       "$GET_STS" = "$STS_STOPPING" -o "$GET_STS" = "$STS_QUIESCE"  -o ¥
       "$GET_STS" = "$STS_OFFLINE"  -o "$GET_STS" = "$STS_CHGMODE"  -o ¥
       "$GET_STS" = "$STS_STOPWAIT" -o "$GET_STS" = "$STS_MAINTNCE" ]
  then
    $SU - $ADBMGR -c "$ECHO y|$ADBDIR/bin/adbstop --force"
    STOPRES=$?
    if [ $STOPRES -ne 0 -a $STOPRES -ne 4 ]
    then
      ADB_ID=`$SU - $ADBMGR -c "$PS x" | $GREP $ADBSRVD | $GREP -v $GREP | $AWK '{print $1}'`
      if [ "$ADB_ID" != "" ]
      then
        $SU - $ADBMGR -c "$KILL $ADB_ID"
      fi
    fi
  fi

  ;;
"-c" )
  # Retry operations of active system.
  # (Before the act_command is resterted.)
  $SU - $ADBMGR -c "adbinfoget -l -o $ADBINFODIR"

  ;;
esac

# stop HADB
if [ "$GET_STS" = "$STS_STARTING" ]
then
  ADB_ID=`$SU - $ADBMGR -c "$PS x" | $GREP $ADBSRVD | $GREP -v $GREP | $AWK '{print $1}'`
  $SU - $ADBMGR -c "$KILL $ADB_ID"

  exit 0
fi

# Wait for end of HADB
while [ "$GET_STS" = "$STS_ACTIVE"   -o "$GET_STS" = "$STS_STARTING" -o ¥
        "$GET_STS" = "$STS_STOPPING" -o "$GET_STS" = "$STS_QUIESCE"  -o ¥
        "$GET_STS" = "$STS_OFFLINE"  -o "$GET_STS" = "$STS_CHGMODE"  -o ¥
        "$GET_STS" = "$STS_STOPWAIT" -o "$GET_STS" = "$STS_COREDUMP" -o ¥
        "$GET_STS" = "$STS_MAINTNCE" ]
do
  GET_STS=`$SU - $ADBMGR -c "$ADBDIR/bin/adbls -d srv 2>/dev/null" | $GREP -v SVID | $AWK '{ if ($1 ~ /[0-9]+/) { print $2 } else { print $1 } }'`
  sleep 1
done

exit 0

［説明］

source文には，コマンド用環境変数定義ファイルの絶対パス/HADB/scripts/coldstandby.envを指定します。

(f)　サーバの監視コマンドファイルの指定例

この例では，サーバの監視コマンドを/HADB/scripts/coldstandby_patrol.shに格納しています。指定内容は，実行系と待機系で同じにしてください。

■サーバの監視コマンドファイルの指定例

#!/bin/sh

# Sample of the patrolcommand for HADB

AWK=/bin/awk
GREP=/bin/grep
PS=/bin/ps
PGREP=/usr/bin/pgrep
PKILL=/usr/bin/pkill
SU=/bin/su
READLINK=/bin/readlink

# Setting environment variables for HADB
source /HADB/scripts/coldstandby.env       ...1

# Resolve the path for adbsrvd
ADBSRVD=`$READLINK -e $ADBDIR/bin/adbsrvd`
if [ $? -ne 0 ]
then
  exit 0
fi

# Get adbsrvd process id
CHKPID=`$SU - $ADBMGR -c "$PS x" | $GREP $ADBSRVD | $GREP -v $GREP | $AWK '{print $1}'`
if [ "$CHKPID" = "" ]
then
  exit 0
fi

# Execute adbmonitor command for active system
$SU - $ADBMGR -c "$ADBDIR/bin/adbmonitor -n" &
PID=$!

# Trap SIGTERM and terminate adbmonitor
trap "$PKILL -P $PID" 15

## Wait process terminated
CPID=""
CHKPID=`$PS aux | $AWK -v PID=$PID '{ if ($2 == PID) { print $2 } }'`
while [ "$CHKPID" != "" ]
do

  ## Get adbmonitor process id
  if [ "$CPID" = "" ]
  then
    CPID=`$PGREP -P $PID`
  fi

  ## Wait
  if [ "$CPID" != "" ]
  then
    CHKCPID=`$PS aux | $AWK -v CPID=$CPID '{ if ($2 == CPID) { print $2 } }'`
    while [ "$CHKCPID" != "" ]
    do
      sleep 1
      CHKCPID=`$PS aux | $AWK -v CPID=$CPID '{ if ($2 == CPID) { print $2 } }'`
    done
  fi

  sleep 1
  CHKPID=`$PS aux | $AWK -v PID=$PID '{ if ($2 == PID) { print $2 } }'`
done

exit 0

［説明］

source文には，コマンド用環境変数定義ファイルの絶対パス/HADB/scripts/coldstandby.envを指定します。

(6)　各ファイルの指定例（共有ディスクのSCSIリザーブを使用する場合）

次のファイルの指定例を示します。共有ディスクのSCSIリザーブを使用する場合の指定例です。

sysdefファイル

serversファイル

コマンド用環境変数定義ファイル（この例では/HADB/scripts/coldstandby.env）

サーバの起動コマンドファイル（この例では/HADB/scripts/coldstandby_act.sh）

サーバの停止コマンドファイル（この例では/HADB/scripts/coldstandby_term.sh）

サーバの監視コマンドファイル（この例では/HADB/scripts/coldstandby_patrol.sh）

ここで説明する指定例は，「図19‒1　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）」のシステム構成を前提としています。

(a)　sysdefファイルの指定例

■サーバマシンhadb01（実行系）のsysdefファイルの指定例

environment  name hadb01,
             address 1,                 ...1
             patrol 60,
             lan path11,                ...2
             lanport HAmon1;            ...3
function     pathpatrol 240,
             connect_retry 5:200,
             monbegin_restart nouse,
             termcmd_at_abort nouse,
             fence_reset nouse,         ...4
             fence_scsi use,            ...5
             fence_lan nouse;

［説明］

この系のリセット優先度を指定します。この系は，実行系のため，リセット優先度をいちばん高くする必要があるので1を指定します。

HAモニタの監視パスとして使用するLANのホスト名を指定します。IPアドレス172.16.0.11に対応するホスト名path11を指定します。

HAモニタの監視パスとして使用するLANのサービス名を指定します。ポート番号7777に対応するサービス名HAmon1を指定します。

系のリセットを使用しないため，nouseを指定します。

共有ディスクのSCSIリザーブを使用するため，useを指定します。

■サーバマシンhadb02（待機系）のsysdefファイルの指定例

environment  name hadb02,
             address 2,                 ...1
             patrol 60,
             lan path21,                ...2
             lanport HAmon1;            ...3
function     pathpatrol 240,
             connect_retry 5:200,
             monbegin_restart nouse,
             termcmd_at_abort nouse,
             fence_reset nouse,         ...4
             fence_scsi use,            ...5
             fence_lan nouse;

［説明］

この系のリセット優先度を指定します。この系は，待機系のため，2を指定します。

HAモニタの監視パスとして使用するLANのホスト名を指定します。IPアドレス172.16.0.12に対応するホスト名path21を指定します。

HAモニタの監視パスとして使用するLANのサービス名を指定します。ポート番号7777に対応するサービス名HAmon1を指定します。

系のリセットを使用しないため，nouseを指定します。

共有ディスクのSCSIリザーブを使用するため，useを指定します。

(b)　serversファイルの指定例

次に示す場合のserversファイルの指定例を説明します。

シングルパス構成の場合

マルチパスソフトウェア（DMMP）による冗長化構成の場合

なお，ここで説明している例は，ファイルシステムにext4を使用していることを前提としています。ext4以外のファイルシステムを使用する場合は，OSのmountコマンドのオプションがここで説明している例とは異なります。

また，作業用一時ファイルを格納するファイルシステムを系切り替え対象とし，同義語検索および監査証跡機能を使用することを前提としています。

■シングルパス構成の場合のserversファイルの指定例

・サーバマシンhadb01（実行系）のserversファイルの指定例

server name  /HADB/server,                     ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb01:                    ...2
            /dev/vg_hadb02:
            /dev/vg_hadb03:
            /dev/vg_hadb04,
       lan_updown use,
       fs_name /dev/vg_hadb01/hadb_db:         ...3
               /dev/vg_hadb02/hadb_workarea:
               /dev/vg_hadb03/hadb_syndict:
               /dev/vg_hadb04/hadb_audit,
       fs_mount_dir /HADB/db:                  ...4
                    /mnt/workarea:
                    /mnt/syndict:
                    /mnt/audit,
       fs_mount_opt "-t ext4 -o defaults,noatime,_netdev":    ...5
                    "-t ext4 -o defaults,noatime,_netdev":
                    "-t ext4 -o defaults,noatime,_netdev":
                    "-t ext4 -o defaults,noatime,_netdev",
       actcommand "/HADB/scripts/coldstandby_act.sh",         ...6
       termcommand "/HADB/scripts/coldstandby_term.sh",       ...7
       patrolcommand "/HADB/scripts/coldstandby_patrol.sh",   ...8
       servexec_retry 2,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use:nouse:nouse:use,                                          ...9
       fs_neck use:nouse:nouse:use,                                          ...10
       scsi_device /dev/disk/by-id/scsi-360060e8010205850051104c500000005:   ...11
                   /dev/disk/by-id/scsi-360060e8010205850051104c500000006:
                   /dev/disk/by-id/scsi-360060e8010205850051104c500000007:
                   /dev/disk/by-id/scsi-360060e8010205850051104c500000008:
                   /dev/disk/by-id/scsi-360060e8010205850051104c50000000f:
                   /dev/disk/by-id/scsi-360060e8010205850051104c50000000e:
                   /dev/disk/by-id/scsi-360060e8010205850051104c500000010:
                   /dev/disk/by-id/scsi-360060e8010205850051104c500000011:
                   /dev/disk/by-id/scsi-360060e8010205850051104c500000013:
                   /dev/disk/by-id/scsi-360060e8010205850051104c50000000d,
       initial online;                                                       ...12

［説明］

サーバディレクトリの絶対パスを指定します。

次のディレクトリを作成するファイルシステムがあるVGの絶対パスを指定します。

DBディレクトリ

作業用一時ファイルを格納するディレクトリ

同義語辞書ファイルの格納ディレクトリ

監査証跡の出力先ディレクトリ

2.で示したディレクトリを作成するファイルシステムを構築したLVの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするマウントポイントの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするためのmountコマンドのオプションを指定します。

コールドスタンバイ構成で使用するサーバの起動コマンドの絶対パスを指定します。

コールドスタンバイ構成で使用するサーバの停止コマンドの絶対パスを指定します。

コールドスタンバイ構成で使用するサーバの監視コマンドの絶対パスを指定します。

次のように指定します。

DBディレクトリを作成するファイルシステムがあるVGに対しては，useを指定します。

作業用一時ファイルを格納するディレクトリを作成するファイルシステムがあるVGに対しては，nouseを指定します。

同義語辞書ファイルの格納ディレクトリを作成するファイルシステムがあるVGに対しては，nouseを指定します。

監査証跡の出力先ディレクトリを作成するファイルシステムがあるVGに対しては，useを指定します。

次のように指定します。

DBディレクトリを作成するファイルシステムに対しては，useを指定します。

作業用一時ファイルを作成するファイルシステムに対しては，nouseを指定します。

同義語辞書ファイルの格納ディレクトリを作成するファイルシステムに対しては，nouseを指定します。

監査証跡の出力先ディレクトリを作成するファイルシステムに対しては，useを指定します。

系切り替え対象のファイルシステムがあるディスクと，DBエリアがあるディスクの絶対パスを指定します。実行系と待機系で，絶対パスの指定順序を同じにしてください。

実行系とするため，onlineを指定します。

・サーバマシンhadb02（待機系）のserversファイルの指定例

server name  /HADB/server,                     ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb01:                    ...2
            /dev/vg_hadb02:
            /dev/vg_hadb03:
            /dev/vg_hadb04,
       lan_updown use,
       fs_name /dev/vg_hadb01/hadb_db:         ...3
               /dev/vg_hadb02/hadb_workarea:
               /dev/vg_hadb03/hadb_syndict:
               /dev/vg_hadb04/hadb_audit,
       fs_mount_dir /HADB/db:                  ...4
                    /mnt/workarea:
                    /mnt/syndict:
                    /mnt/audit,
       fs_mount_opt "-t ext4 -o defaults,noatime,_netdev":    ...5
                    "-t ext4 -o defaults,noatime,_netdev":
                    "-t ext4 -o defaults,noatime,_netdev":
                    "-t ext4 -o defaults,noatime,_netdev",
       actcommand "/HADB/scripts/coldstandby_act.sh",         ...6
       termcommand "/HADB/scripts/coldstandby_term.sh",       ...7
       patrolcommand "/HADB/scripts/coldstandby_patrol.sh",   ...8
       servexec_retry 2,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use:nouse:nouse:use,                                          ...9
       fs_neck use:nouse:nouse:use,                                          ...10
       scsi_device /dev/disk/by-id/scsi-360060e8010205850051104c500000005:   ...11
                   /dev/disk/by-id/scsi-360060e8010205850051104c500000006:
                   /dev/disk/by-id/scsi-360060e8010205850051104c500000007:
                   /dev/disk/by-id/scsi-360060e8010205850051104c500000008:
                   /dev/disk/by-id/scsi-360060e8010205850051104c50000000f:
                   /dev/disk/by-id/scsi-360060e8010205850051104c50000000e:
                   /dev/disk/by-id/scsi-360060e8010205850051104c500000010:
                   /dev/disk/by-id/scsi-360060e8010205850051104c500000011:
                   /dev/disk/by-id/scsi-360060e8010205850051104c500000013:
                   /dev/disk/by-id/scsi-360060e8010205850051104c50000000d,
       initial standby;                                                      ...12

［説明］

サーバディレクトリの絶対パスを指定します。

次のディレクトリを作成するファイルシステムがあるVGの絶対パスを指定します。

DBディレクトリ

作業用一時ファイルを格納するディレクトリ

同義語辞書ファイルの格納ディレクトリ

監査証跡の出力先ディレクトリ

2.で示したディレクトリを作成するファイルシステムを構築したLVの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするマウントポイントの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするためのmountコマンドのオプションを指定します。

コールドスタンバイ構成で使用するサーバの起動コマンドの絶対パスを指定します。

コールドスタンバイ構成で使用するサーバの停止コマンドの絶対パスを指定します。

コールドスタンバイ構成で使用するサーバの監視コマンドの絶対パスを指定します。

次のように指定します。

DBディレクトリを作成するファイルシステムがあるVGに対しては，useを指定します。

作業用一時ファイルを格納するディレクトリを作成するファイルシステムがあるVGに対しては，nouseを指定します。

同義語辞書ファイルの格納ディレクトリを作成するファイルシステムがあるVGに対しては，nouseを指定します。

監査証跡の出力先ディレクトリを作成するファイルシステムがあるVGに対しては，useを指定します。

次のように指定します。

DBディレクトリを作成するファイルシステムに対しては，useを指定します。

作業用一時ファイルを作成するファイルシステムに対しては，nouseを指定します。

同義語辞書ファイルの格納ディレクトリを作成するファイルシステムに対しては，nouseを指定します。

監査証跡の出力先ディレクトリを作成するファイルシステムに対しては，useを指定します。

系切り替え対象のファイルシステムがあるディスクの絶対パスと，DBエリアがあるディスクの絶対パスを指定します。実行系と待機系で，絶対パスの指定順序を同じにしてください。

待機系とするため，standbyを指定します。

■マルチパスソフトウェア（DMMP）による冗長化構成の場合のserversファイルの指定例

・サーバマシンhadb01（実行系）のserversファイルの指定例

server name  /HADB/server,                     ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb01:                    ...2
            /dev/vg_hadb02:
            /dev/vg_hadb03:
            /dev/vg_hadb04,
       lan_updown use,
       fs_name /dev/vg_hadb01/hadb_db:         ...3
               /dev/vg_hadb02/hadb_workarea:
               /dev/vg_hadb03/hadb_syndict:
               /dev/vg_hadb04/hadb_audit,
       fs_mount_dir /HADB/db:                  ...4
                    /mnt/workarea:
                    /mnt/syndict:
                    /mnt/audit,
       fs_mount_opt "-t ext4 -o defaults,noatime,_netdev":    ...5
                    "-t ext4 -o defaults,noatime,_netdev":
                    "-t ext4 -o defaults,noatime,_netdev":
                    "-t ext4 -o defaults,noatime,_netdev",
       actcommand "/HADB/scripts/coldstandby_act.sh",         ...6
       termcommand "/HADB/scripts/coldstandby_term.sh",       ...7
       patrolcommand "/HADB/scripts/coldstandby_patrol.sh",   ...8
       servexec_retry 2,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use:nouse:nouse:use,       ...9
       fs_neck use:nouse:nouse:use,       ...10
       dmmp_device /dev/mapper/mpath1:    ...11
                   /dev/mapper/mpath2:
                   /dev/mapper/mpath3:
                   /dev/mapper/mpath4:
                   /dev/mapper/mpath11:
                   /dev/mapper/mpath12:
                   /dev/mapper/mpath13:
                   /dev/mapper/mpath14:
                   /dev/mapper/mpath15:
                   /dev/mapper/mpath16,
       initial online;                    ...12

［説明］

サーバディレクトリの絶対パスを指定します。

次のディレクトリを作成するファイルシステムがあるVGの絶対パスを指定します。

DBディレクトリ

作業用一時ファイルを格納するディレクトリ

同義語辞書ファイルの格納ディレクトリ

監査証跡の出力先ディレクトリ

2.で示したディレクトリを作成するファイルシステムを構築したLVの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするマウントポイントの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするためのmountコマンドのオプションを指定します。

コールドスタンバイ構成で使用するサーバの起動コマンドの絶対パスを指定します。

コールドスタンバイ構成で使用するサーバの停止コマンドの絶対パスを指定します。

コールドスタンバイ構成で使用するサーバの監視コマンドの絶対パスを指定します。

次のように指定します。

DBディレクトリを作成するファイルシステムがあるVGに対しては，useを指定します。

作業用一時ファイルを格納するディレクトリを作成するファイルシステムがあるVGに対しては，nouseを指定します。

同義語辞書ファイルの格納ディレクトリを作成するファイルシステムがあるVGに対しては，nouseを指定します。

監査証跡の出力先ディレクトリを作成するファイルシステムがあるVGに対しては，useを指定します。

次のように指定します。

DBディレクトリを作成するファイルシステムに対しては，useを指定します。

作業用一時ファイルを作成するファイルシステムに対しては，nouseを指定します。

同義語辞書ファイルの格納ディレクトリを作成するファイルシステムに対しては，nouseを指定します。

監査証跡の出力先ディレクトリを作成するファイルシステムに対しては，useを指定します。

系切り替え対象のファイルシステムがあるディスクの絶対パスと，DBエリアがあるディスクの絶対パスを指定します。実行系と待機系で，絶対パスの指定順序を同じにしてください。

実行系とするため，onlineを指定します。

・サーバマシンhadb02（待機系）のserversファイルの指定例

server name  /HADB/server,                     ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb01:                    ...2
            /dev/vg_hadb02:
            /dev/vg_hadb03:
            /dev/vg_hadb04,
       lan_updown use,
       fs_name /dev/vg_hadb01/hadb_db:         ...3
               /dev/vg_hadb02/hadb_workarea:
               /dev/vg_hadb03/hadb_syndict:
               /dev/vg_hadb04/hadb_audit,
       fs_mount_dir /HADB/db:                  ...4
                    /mnt/workarea:
                    /mnt/syndict:
                    /mnt/audit,
       fs_mount_opt "-t ext4 -o defaults,noatime,_netdev":    ...5
                    "-t ext4 -o defaults,noatime,_netdev":
                    "-t ext4 -o defaults,noatime,_netdev":
                    "-t ext4 -o defaults,noatime,_netdev",
       actcommand "/HADB/scripts/coldstandby_act.sh",         ...6
       termcommand "/HADB/scripts/coldstandby_term.sh",       ...7
       patrolcommand "/HADB/scripts/coldstandby_patrol.sh",   ...8
       servexec_retry 2,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use:nouse:nouse:use,       ...9
       fs_neck use:nouse:nouse:use,       ...10
       dmmp_device /dev/mapper/mpath1:    ...11
                   /dev/mapper/mpath2:
                   /dev/mapper/mpath3:
                   /dev/mapper/mpath4:
                   /dev/mapper/mpath11:
                   /dev/mapper/mpath12:
                   /dev/mapper/mpath13:
                   /dev/mapper/mpath14:
                   /dev/mapper/mpath15:
                   /dev/mapper/mpath16,
       initial standby;                   ...12

［説明］

サーバディレクトリの絶対パスを指定します。

次のディレクトリを作成するファイルシステムがあるVGの絶対パスを指定します。

DBディレクトリ

作業用一時ファイルを格納するディレクトリ

同義語辞書ファイルの格納ディレクトリ

監査証跡の出力先ディレクトリ

2.で示したディレクトリを作成するファイルシステムを構築したLVの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするマウントポイントの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするためのmountコマンドのオプションを指定します。

コールドスタンバイ構成で使用するサーバの起動コマンドの絶対パスを指定します。

コールドスタンバイ構成で使用するサーバの停止コマンドの絶対パスを指定します。

コールドスタンバイ構成で使用するサーバの監視コマンドの絶対パスを指定します。

次のように指定します。

DBディレクトリを作成するファイルシステムがあるVGに対しては，useを指定します。

作業用一時ファイルを格納するディレクトリを作成するファイルシステムがあるVGに対しては，nouseを指定します。

同義語辞書ファイルの格納ディレクトリを作成するファイルシステムがあるVGに対しては，nouseを指定します。

監査証跡の出力先ディレクトリを作成するファイルシステムがあるVGに対しては，useを指定します。

次のように指定します。

DBディレクトリを作成するファイルシステムに対しては，useを指定します。

作業用一時ファイルを作成するファイルシステムに対しては，nouseを指定します。

同義語辞書ファイルの格納ディレクトリを作成するファイルシステムに対しては，nouseを指定します。

監査証跡の出力先ディレクトリを作成するファイルシステムに対しては，useを指定します。

系切り替え対象のファイルシステムがあるディスクの絶対パスと，DBエリアがあるディスクの絶対パスを指定します。実行系と待機系で，絶対パスの指定順序を同じにしてください。

待機系とするため，standbyを指定します。

(c)　コマンド用環境変数定義ファイルの指定例

コマンド用環境変数定義ファイルの指定例については，「(5)　各ファイルの指定例（系のリセットを使用する場合）」の「(c)　コマンド用環境変数定義ファイルの指定例」を参照してください。

(d)　サーバの起動コマンドファイルの指定例

サーバの起動コマンドファイルの指定例については，「(5)　各ファイルの指定例（系のリセットを使用する場合）」の「(d)　サーバの起動コマンドファイルの指定例」を参照してください。

(e)　サーバの停止コマンドファイルの指定例

サーバの停止コマンドファイルの指定例については，「(5)　各ファイルの指定例（系のリセットを使用する場合）」の「(e)　サーバの停止コマンドファイルの指定例」を参照してください。

(f)　サーバの監視コマンドファイルの指定例

サーバの監視コマンドファイルの指定例については，「(5)　各ファイルの指定例（系のリセットを使用する場合）」の「(f)　サーバの監視コマンドファイルの指定例」を参照してください。

(7)　HAモニタの起動設定

OSの起動時に，自動的にHAモニタが起動するように設定してください。設定方法については，マニュアルHAモニタ Linux(R)(x86)編のシステムの起動からサーバの起動までを自動化するを参照してください。

19.3.5　各HADBサーバでのサーバ定義の作成

コールドスタンバイ構成の場合は，実行系と待機系の両方のHADBサーバでサーバ定義を作成する必要があります。

重要

サーバ定義の指定は，実行系と待機系の両方のHADBサーバで必ず同じにしてください。

adb_sys_multi_node_infoオペランドは指定できません。

サーバ定義を作成する際，adb_blk_path_wrkオペランドを必ず指定してください。adb_blk_path_wrkオペランドには，adbinitコマンドの初期設定オプションのadb_init_wrk_blk_pathに指定したパスを指定します。詳細については，「19.3.7　データベースの作成」を参照してください。

19.3.6　クライアント定義の作成

クライアント定義の指定例を次に示します。

クライアント定義の作成については，マニュアルHADB　AP開発ガイドのHADBクライアントの環境設定（ODBCドライバおよびCLI関数を使用する場合）のクライアント定義の作成を参照してください。クライアント定義のオペランドについては，マニュアルHADB　AP開発ガイドのクライアント定義の設計のクライアント定義のオペランドの内容を参照してください。

■クライアント定義の指定例

set adb_clt_rpc_srv_host = 10.196.108.143     ...1
set adb_clt_rpc_srv_port = 23650
set adb_clt_ap_name = "AP01"

［説明］

接続先のホスト名として，クライアント−サーバ間の通信で使用するエイリアスIPアドレス10.196.108.143を指定します。

19.3.7　データベースの作成

コールドスタンバイ構成の場合のデータベースの作成手順を説明します。

(1)　データベース作成の手順

データベースの作成手順の流れを次に示します。

〔実行系での作業〕DBディレクトリ用のファイルシステムを構築する

〔実行系での作業〕DBディレクトリ用のファイルシステムをマウントする

〔実行系での作業〕データベースを作成する

〔実行系での作業〕DBディレクトリ用のファイルシステムをアンマウントする

〔待機系での作業〕DBディレクトリ用のファイルシステムをマウントする

〔待機系での作業〕DBディレクトリ用のファイルシステムをアンマウントする

〔実行系での作業〕作業用一時ファイルを格納するファイルシステムを構築する

〔実行系・待機系での作業〕作業用一時ファイルを格納するファイルシステムをマウントおよびアンマウントする

〔実行系での作業〕同義語辞書ファイルを格納するファイルシステムを構築する※1

〔実行系・待機系での作業〕同義語辞書ファイルを格納するファイルシステムをマウントおよびアンマウントする※1

〔実行系での作業〕監査証跡の出力先ディレクトリを作成するファイルシステムを構築する※2

〔実行系・待機系での作業〕監査証跡の出力先ディレクトリを作成するファイルシステムをマウントおよびアンマウントする※2

〔実行系での作業〕共有するファイルシステムを構築する

〔実行系・待機系での作業〕ファイルシステムを共有化する

注※1

同義語検索をする場合に必要な作業です。

注※2

監査証跡機能を使用する場合に必要な作業です。

(2)　〔実行系での作業〕DBディレクトリ用のファイルシステムの構築

この手順は，スーパユーザで実施してください。

OSのコマンドを実行系で実行し，DBディレクトリ用のファイルシステムを構築します。

DBディレクトリ用のLVとして作成した/dev/vg_hadb01/hadb_dbを，ext4のファイルシステムで構築する場合の実行例を次に示します。

■コマンドの実行例

mkfs -t ext4 /dev/vg_hadb01/hadb_db

(3)　〔実行系での作業〕DBディレクトリ用のファイルシステムのマウント

この手順は，スーパユーザで実施してください。

次に示す手順に従って，実行系でDBディレクトリ用のファイルシステムをマウントします。

手順

DBディレクトリ用のマウントポイントを作成する

OSのコマンドを実行し，DBディレクトリ用のマウントポイントを作成します。

■コマンドの実行例

mkdir -p /HADB/db

DBディレクトリ用のファイルシステムがあるVGを活性化する

OSのコマンドを実行し，DBディレクトリ用のファイルシステムがあるVGを活性化します。

■コマンドの実行例

vgchange -a y /dev/vg_hadb01

DBディレクトリ用ファイルシステムをマウントする

OSのコマンドを実行し，DBディレクトリ用ファイルシステムをマウントします。

■コマンドの実行例

mount /dev/vg_hadb01/hadb_db /HADB/db -t ext4 -o defaults,noatime,_netdev

DBディレクトリのオーナーを変更する

OSのコマンドを実行し，DBディレクトリのオーナーを変更します。DBディレクトリを使用するHADB管理者（OSユーザ）とHADB管理グループを指定してください。

HADB管理者（OSユーザ）のユーザ名がadbmanager，HADB管理グループがadbgroupの場合の実行例を次に示します。

■コマンドの実行例

chown adbmanager.adbgroup /HADB/db

(4)　〔実行系での作業〕データベースの作成

この手順は，HADB管理者で実施してください。

次に示す手順に従って，実行系でデータベースを作成します。

手順

DBディレクトリ用のマウントポイントに，DBディレクトリ用のファイルシステムがマウントされていることを確認する

adbinitコマンドを実行し，データベースを作成する

adbinitコマンドの初期設定オプションの指定例を次に示します。

■初期設定オプションの指定例（シングルパス構成の場合）

set adb_init_dbarea_initialize = Y
set adb_init_wrk_blk_path = /dev/disk/by-id/wwn-0x60060e8010205850051104c50000000d
set adb_init_mst_blk_path = /dev/disk/by-id/wwn-0x60060e8010205850051104c50000000e
set adb_init_dic_blk_path = /dev/disk/by-id/wwn-0x60060e8010205850051104c50000000f
set adb_init_stbl_blk_path = /dev/disk/by-id/wwn-0x60060e8010205850051104c500000010
adbinitdbarea -n ADBUTBL01 -i 2G ¥
              -v /dev/disk/by-id/wwn-0x60060e8010205850051104c500000011
adbinitdbarea -n ADBUIDX01 -i 2G ¥
              -v /dev/disk/by-id/wwn-0x60060e8010205850051104c500000013

■初期設定オプションの指定例（マルチパスソフトウェア（DMMP）による冗長化構成の場合）

set adb_init_dbarea_initialize = Y
set adb_init_wrk_blk_path = /dev/mapper/mpath16
set adb_init_mst_blk_path = /dev/mapper/mpath12
set adb_init_dic_blk_path = /dev/mapper/mpath11
set adb_init_stbl_blk_path = /dev/mapper/mpath13
adbinitdbarea -n ADBUTBL01 -i 2G ¥
              -v /dev/mapper/mpath14
adbinitdbarea -n ADBUIDX01 -i 2G ¥
              -v /dev/mapper/mpath15

(5)　〔実行系での作業〕DBディレクトリ用のファイルシステムのアンマウント

この手順は，スーパユーザで実施してください。

次に示す手順に従って，実行系でDBディレクトリ用のファイルシステムをアンマウントします。

手順

DBディレクトリ用ファイルシステムをアンマウントする

OSのコマンドを実行し，DBディレクトリ用ファイルシステムをアンマウントします。

■コマンドの実行例

umount /dev/vg_hadb01/hadb_db

DBディレクトリ用のファイルシステムがあるVGを非活性化する

OSのコマンドを実行系で実行し，DBディレクトリ用のファイルシステムがあるVGを非活性化します。

■コマンドの実行例

vgchange -a n /dev/vg_hadb01

(6)　〔待機系での作業〕DBディレクトリ用のファイルシステムのマウント

この手順は，スーパユーザで実施してください。

実行系と同様に，待機系でDBディレクトリ用のファイルシステムをマウントします。実行系と同じパスになるようにマウントポイントを作成してください。

ファイルシステムをマウントする方法については，「(3)　〔実行系での作業〕DBディレクトリ用のファイルシステムのマウント」を参照してください。

重要

待機系では，DBディレクトリ用のファイルシステムのマウントポイントを作成するだけで，adbinitコマンドは実行しません。

(7)　〔待機系での作業〕DBディレクトリ用のファイルシステムのアンマウント

この手順は，スーパユーザで実施してください。

実行系と同様に，待機系でDBディレクトリ用のファイルシステムをアンマウントします。

ファイルシステムをアンマウントする方法については，「(5)　〔実行系での作業〕DBディレクトリ用のファイルシステムのアンマウント」を参照してください。

(8)　〔実行系での作業〕作業用一時ファイルを格納するファイルシステムの構築

この手順は，スーパユーザで実施してください。

OSのコマンドを実行系で実行し，作業用一時ファイルを格納するファイルシステムを構築します。

作業用一時ファイルを格納するLVとして作成した/dev/vg_hadb02/hadb_workareaを，ext4のファイルシステムで構築する場合の実行例を次に示します。

■コマンドの実行例

mkfs -t ext4 /dev/vg_hadb02/hadb_workarea

メモ

作業用一時ファイルを格納するファイルシステムを系切り替え対象としない場合は，実行系と待機系のそれぞれのローカルのファイルシステム上に作業用一時ファイルの格納先を用意してください。

(9)　〔実行系・待機系での作業〕作業用一時ファイルを格納するファイルシステムのマウントおよびアンマウント

この手順は，スーパユーザで実施してください。

実行系で作業用一時ファイルを格納するファイルシステムをマウントしたあと，アンマウントします。

待機系でも同様に，作業用一時ファイルを格納するファイルシステムをマウントしたあと，アンマウントします。

実行系と待機系で同じパスになるように，マウントポイントを作成してください。

ファイルシステムをマウントする方法については，「(3)　〔実行系での作業〕DBディレクトリ用のファイルシステムのマウント」を参照してください。ファイルシステムをアンマウントする方法については，「(5)　〔実行系での作業〕DBディレクトリ用のファイルシステムのアンマウント」を参照してください。

メモ

作業用一時ファイルを格納するファイルシステムを系切り替え対象としない場合は，作業用一時ファイルを格納するファイルシステムのマウントおよびアンマウントを実施する必要はありません。

(10)　〔実行系での作業〕同義語辞書ファイルを格納するファイルシステムの構築

同義語検索をする場合は，この手順を実施する必要があります。

この手順は，スーパユーザで実施してください。

OSのコマンドを実行系で実行し，同義語辞書ファイルを格納するファイルシステムを構築します。

同義語辞書ファイルを格納するLVとして作成した/dev/vg_hadb03/hadb_syndictを，ext4のファイルシステムで構築する場合の実行例を次に示します。

■コマンドの実行例

mkfs -t ext4 /dev/vg_hadb03/hadb_syndict

(11)　〔実行系・待機系での作業〕同義語辞書ファイルを格納するファイルシステムのマウントおよびアンマウント

同義語検索をする場合は，この手順を実施する必要があります。

この手順は，スーパユーザで実施してください。

実行系で同義語辞書ファイルを格納するファイルシステムをマウントしたあと，アンマウントします。

待機系でも同様に，同義語辞書ファイルを格納するファイルシステムをマウントしたあと，アンマウントします。

実行系と待機系で同じパスになるように，マウントポイントを作成してください。

ファイルシステムをマウントする方法については，「(3)　〔実行系での作業〕DBディレクトリ用のファイルシステムのマウント」を参照してください。ファイルシステムをアンマウントする方法については，「(5)　〔実行系での作業〕DBディレクトリ用のファイルシステムのアンマウント」を参照してください。

(12)　〔実行系での作業〕監査証跡の出力先ディレクトリを作成するファイルシステムの構築

監査証跡機能を使用する場合は，この手順を実施する必要があります。

この手順は，スーパユーザで実施してください。

OSのコマンドを実行系で実行し，監査証跡の出力先ディレクトリを作成するファイルシステムを構築します。

監査証跡ファイルを出力するLVとして作成した/dev/vg_hadb04/hadb_auditを，ext4のファイルシステムで構築する場合の実行例を次に示します。

■コマンドの実行例

mkfs -t ext4 /dev/vg_hadb04/hadb_audit

(13)　〔実行系・待機系での作業〕監査証跡の出力先ディレクトリを作成するファイルシステムのマウントおよびアンマウント

監査証跡機能を使用する場合は，この手順を実施する必要があります。

この手順は，スーパユーザで実施してください。

実行系で，監査証跡の出力先ディレクトリを作成するファイルシステムをマウントしたあとに，アンマウントします。

待機系でも同様に，監査証跡の出力先ディレクトリを作成するファイルシステムをマウントしたあとに，アンマウントします。

実行系と待機系で同じパスになるように，マウントポイントを作成してください。

ファイルシステムをマウントする方法については，「(3)　〔実行系での作業〕DBディレクトリ用のファイルシステムのマウント」を参照してください。ファイルシステムをアンマウントする方法については，「(5)　〔実行系での作業〕DBディレクトリ用のファイルシステムのアンマウント」を参照してください。

(14)　〔実行系での作業〕共有するファイルシステムの構築

この手順は，スーパユーザで実施してください。

実行系と待機系で，次に示すファイルシステムを共有します。

データインポートで使用する入力データファイルを格納するファイルシステム

ADB_CSVREAD関数で使用するCSVファイルを格納するファイルシステム

アーカイブディレクトリ用のファイルシステム

監査証跡の保存先ディレクトリを作成するファイルシステム

これらのファイルシステムを構築します。

(15)　〔実行系・待機系での作業〕ファイルシステムの共有化

「(14)　〔実行系での作業〕共有するファイルシステムの構築」で構築したファイルシステムを，実行系と待機系で共有します。

NFSを用いて共有する手順の例を示します。この手順は，スーパユーザで実施してください。

手順

NFSサーバを用意し，実行系と待機系で共有したいディレクトリをエクスポートする

実行系と待機系で同じパスになるように，手順1.でエクスポートしたディレクトリをマウントする

19.4　コールドスタンバイ構成の開始と終了

ここでは，コールドスタンバイ構成の開始および終了方法について説明します。

運用する際には，あわせて「10.2　HADBサーバの開始・終了と稼働モード」も参照してください。

19.4.1　コールドスタンバイ構成の開始方法

(1)　コールドスタンバイ構成の開始手順

コールドスタンバイ構成の開始手順を次に示します。

手順

実行系と待機系でHAモニタが起動していることを確認する

確認方法については，マニュアルHAモニタ Linux(R)(x86)編のシステムの運用を参照してください。

実行系と待機系でHAモニタのmonbeginコマンドを実行する

メモ

HAモニタのmonbeginコマンドを実行すると，その処理の延長で，実行系でadbstartコマンドが自動的に実行されます。

(2)　コールドスタンバイ構成の開始モード

コールドスタンバイ構成には，次の開始モードがあります。

表19‒4　コールドスタンバイ構成の開始モード

項番

開始モード

実行するコマンド

説明

前回の終了モード

1

正常開始

monbegin

通常の開始モードです。

正常開始では，データベースの回復処理は行いません。

コールドスタンバイ構成が正常終了した場合

2

再開始

前回の終了モードが右記の場合，自動的に再開始となります。

再開始では，実行系のHADBサーバがシステムログを使用してデータベースの回復処理を行います。

コールドスタンバイ構成が異常終了，または強制終了した場合

(3)　コールドスタンバイ構成の開始処理完了の確認

次に示す内容を確認してください。

実行系でHAモニタのmonshowコマンドを実行します。実行系の状態が実行処理中（ONL）に，待機系の状態が待機処理中（SBY）になっていることを確認してください。

monshowコマンドについては，マニュアルHAモニタ Linux(R)(x86)編のコマンドを参照してください。

実行系のHADBサーバのメッセージログファイルを参照します。adbstartコマンドのリターンコードが，0または4となっていることを確認してください。

19.4.2　コールドスタンバイ構成の終了方法

(1)　コールドスタンバイ構成の終了手順

(a)　コールドスタンバイ構成を正常終了させる場合

コールドスタンバイ構成を正常終了させる手順を次に示します。

手順

実行系でadbstopコマンドを実行する

実行系でHAモニタのmonendコマンドを実行する

(b)　コールドスタンバイ構成を強制終了させる場合

実行系でHAモニタのmonendコマンドを実行してください。

(2)　コールドスタンバイ構成の終了モード

コールドスタンバイ構成には，次の終了モードがあります。

表19‒5　コールドスタンバイ構成の終了モード

項番

終了形態

実行するコマンドおよびオプション

説明

コールドスタンバイ構成の終了モード

1

コールドスタンバイ構成の終了

コールドスタンバイ構成の正常終了

adbstopおよびmonend

通常の終了モードです。

実行系でadbstopコマンドが正常終了したあと，HAモニタのmonendコマンドを実行すると，HADBサーバが正常終了し，コールドスタンバイ構成が正常終了します。

正常終了

2

コールドスタンバイ構成の強制終了

monend

実行系でHAモニタのmonendコマンドだけを実行すると，HADBサーバが強制終了し，コールドスタンバイ構成が強制終了します。

強制終了

3

コールドスタンバイ構成の異常終了

−

運用が続行できない障害が発生した場合，処理中のトランザクションの完了を待たないで，HADBサーバをすぐに終了します。

待機系が存在しない場合は，コールドスタンバイ構成が異常終了します。

異常終了

4

系切り替えの発生

実行系のHADBサーバの正常終了

adbstopおよびmonswap

待機系が存在する場合，実行系でadbstopコマンドが正常終了したあとに，HAモニタのmonswapコマンドを実行すると，実行系のHADBサーバが正常終了し，系が切り替わります。

−

5

実行系のHADBサーバの強制終了

monswap

待機系が存在する場合，実行系でHAモニタのmonswapコマンドだけを実行すると，実行系のHADBサーバが強制終了し，系が切り替わります。系の切り替え時に，トランザクションの回復処理が実行されます。

−

6

実行系のHADBサーバの異常終了

−

運用が続行できない障害が発生した場合，処理中のトランザクションの完了を待たないで，HADBサーバをすぐに終了します。

待機系が存在する場合，実行系が異常終了すると，系が切り替わります。系の切り替え時に，トランザクションの回復処理が実行されます。

−

（凡例）

−：該当しません。

19.5　APの運用（コールドスタンバイ構成の場合）

ここでは，コールドスタンバイ構成での，APの運用に関する注意点について説明します。APの作成方法などについては，マニュアルHADB　AP開発ガイドを参照してください。

19.5.1　HADBサーバへの接続

コールドスタンバイ構成の場合，APはエイリアスIPアドレスを使用して，実行系のHADBサーバに接続するようにしてください。エイリアスIPアドレスの設定方法については，マニュアルHAモニタ Linux(R)(x86)編を参照してください。

19.5.2　実行系で障害が発生した場合

実行系で障害が発生した場合，実行中だったトランザクションはロールバックします。

また，HADBサーバに接続中のすべてのAPがHADBサーバから切断されます。トランザクションを再実行する際は，改めてHADBサーバに接続してください。

19.6　データベースのバックアップ（コールドスタンバイ構成の場合）

ここでは，コールドスタンバイ構成の場合のバックアップの取得方法，およびバックアップからのデータベースの回復方法について説明します。

メモ

AWS環境でのコールドスタンバイ構成のバックアップの取得方法，およびバックアップからのデータベースの回復方法については，「19.22.8　データベースのバックアップおよび回復方法（AWS環境の場合）」を参照してください。

Azure環境でのコールドスタンバイ構成のバックアップの取得方法，およびバックアップからのデータベースの回復方法については，「19.23.5　データベースのバックアップおよび回復方法（Azure環境の場合）」を参照してください。

コールドスタンバイ構成ではない場合のバックアップの取得方法，およびバックアップからのデータベースの回復方法については，「10.3　データベースのバックアップ」を参照してください。

19.6.1　バックアップの取得方法

データベースのバックアップを取得する手順を次に示します。

図19‒2　バックアップを取得する手順（コールドスタンバイ構成を使用している場合）

各手順の詳細を以降で説明します。

(1)　バックアップ取得時の留意事項を確認する

「10.3.1　バックアップの取得方法」を参照して，バックアップ取得時の留意事項を確認してください。

(2)　コールドスタンバイ構成を正常終了する，または実行系のHADBサーバを静止モードに変更する

次のどちらかの操作を実行してください。

adbstopコマンドおよびHAモニタのmonendコマンドを実行して，コールドスタンバイ構成を正常終了する

実行系でadbchgsrvmodeコマンドを実行して，実行系のHADBサーバを静止モードに変更する

上記のどちらかの操作を実行しないと，データベースを回復する際にデータベースの整合性が取れなくなるおそれがあります。

HADBサーバの状態を確認する場合は，実行系のHADBサーバでadbls -d srvコマンドを実行してください。

(3)　実行系でバックアップを取得する

実行系でバックアップを取得します。バックアップを取得するファイルの一覧については，「10.3.1　バックアップの取得方法」の「(2)　バックアップを取得する手順」を参照してください。

ファイルがシンボリックリンクの場合は，リンク先のファイル，またはブロックスペシャルファイルのコピーが必要です。また，バックアップファイルはスパースファイルにしないでください。

なお，コールドスタンバイ構成を正常終了している場合は，コピーを実行する前に，DBディレクトリが$DBDIRにマウントされていることを確認してください。マウントされていない場合は，OSのmountコマンドを実行して，DBディレクトリを$DBDIRにマウントしてください。

(4)　コールドスタンバイ構成を開始する，または実行系のHADBサーバを通常モードに変更する

次のどちらかの操作を実行してください。

バックアップの取得前に，adbstopコマンドおよびHAモニタのmonendコマンドでコールドスタンバイ構成を正常終了した場合

HAモニタのmonbeginコマンドを実行して，コールドスタンバイ構成を開始してください。

バックアップの取得前に，adbchgsrvmodeコマンドで実行系のHADBサーバを静止モードにした場合

実行系でadbchgsrvmodeコマンドを実行して，実行系のHADBサーバを通常モードに変更してください。

19.6.2　バックアップからの回復方法

バックアップからの回復手順を次に示します。

図19‒3　バックアップからの回復手順（コールドスタンバイ構成の場合）

なお，バックアップからの回復を行う際は，「10.3.2　バックアップからの回復方法」の内容も参照してください。

各手順の詳細を以降で説明します。

(1)　コールドスタンバイ構成を正常終了する

adbstopコマンドおよびHAモニタのmonendコマンドを実行して，コールドスタンバイ構成を正常終了してください。

コールドスタンバイ構成を正常終了しないで，データベースの回復を実行した場合，データベースの内容が不整合となるおそれがあります。

(2)　バックアップからファイルを回復する

「19.6.1　バックアップの取得方法」の「(3)　実行系でバックアップを取得する」で取得したバックアップからファイルを回復してください。

なお，バックアップからファイルを回復する前に，DBディレクトリが$DBDIRにマウントされていることを確認してください。マウントされていない場合は，OSのmountコマンドを実行して，DBディレクトリを$DBDIRにマウントしてください。

(3)　コールドスタンバイ構成を開始する

HAモニタのmonbeginコマンドを実行して，コールドスタンバイ構成を開始してください。

(4)　稼働モードを通常モードに変更する

静止モードでバックアップを取得した場合，データベースを回復したあとにHADBサーバを開始すると，HADBサーバが静止モードのままとなっています。この場合，実行系でadbchgsrvmodeコマンドを実行して，実行系のHADBサーバの稼働モードを通常モードに変更してください。

19.6.3　バックアップの運用例（OSコマンドを使用）

ここでは，OSのコマンドを使用したバックアップの運用例（フルバックアップを取得する運用例）について説明します。

(1)　システムの構成例

「図19‒1　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）」で示すコールドスタンバイ構成で，実行系はhadb01とします。DBディレクトリ，アーカイブディレクトリ，同義語辞書ファイルの格納ディレクトリ，および監査証跡の出力先ディレクトリは，次の構成となっているとします。

■hadb01のディレクトリ構成

DBディレクトリの構成

/HADB/db
 [図データ]ADBDIC：ブロックスペシャルファイル（サイズは10MB）
 [図データ]ADBMST：ブロックスペシャルファイル（サイズは512MB）
 [図データ]ADBSTBL：ブロックスペシャルファイル（サイズは512MB）
 [図データ]ADBWORK：ファイルシステム上のディレクトリ
 [図データ]ADBWRK：ブロックスペシャルファイル（サイズは2GB）
 [図データ]ADBUTBL01：ブロックスペシャルファイル（サイズは4GB）
 [図データ]ADBUIDX01：ブロックスペシャルファイル（サイズは2GB）
 [図データ]SPOOL：ファイルシステム上のディレクトリ
 [図データ]ADBSYS：ファイルシステム上のディレクトリ

アーカイブディレクトリの構成

/HADB/archive

アーカイブディレクトリは，アーカイブマルチチャンク表を定義した場合に作成するディレクトリです。

同義語辞書ファイルの格納ディレクトリの構成

/mnt/syndict

同義語辞書ファイルの格納ディレクトリは，同義語検索をする場合に作成するディレクトリです。

監査証跡の出力先ディレクトリの構成

/mnt/audit

監査証跡の出力先ディレクトリは，監査証跡機能を使用する場合に作成するディレクトリです。

■hadb02のディレクトリ構成

DBディレクトリの構成

/HADB/db

アーカイブディレクトリの構成

/HADB/archive

アーカイブディレクトリは，アーカイブマルチチャンク表を定義した場合に作成するディレクトリです。

同義語辞書ファイルの格納ディレクトリのマウントポイント

/mnt/syndict

同義語辞書ファイルの格納ディレクトリは，同義語検索をする場合に作成するディレクトリです。

監査証跡の出力先ディレクトリのマウントポイント

/mnt/audit

監査証跡の出力先ディレクトリは，監査証跡機能を使用する場合に作成するディレクトリです。

(2)　バックアップの取得

OSのコマンドを使用して，バックアップを取得する手順を説明します。

手順

コールドスタンバイ構成を正常終了する※1

詳細については，「19.4.2　コールドスタンバイ構成の終了方法」を参照してください。

OSのコマンドでバックアップを取得する

OSのcpコマンドおよびddコマンドをhadb01（実行系）で実行し，DBディレクトリとアーカイブディレクトリのバックアップを取得します。

DBディレクトリのバックアップの取得

cp -r /HADB/db /HADB_bkup/db/dbdir
dd if=/HADB/db/ADBMST of=/HADB_bkup/db/ADBMST bs=524288
dd if=/HADB/db/ADBDIC of=/HADB_bkup/db/ADBDIC bs=524288
dd if=/HADB/db/ADBSTBL of=/HADB_bkup/db/ADBSTBL bs=524288
dd if=/HADB/db/ADBUTBL01 of=/HADB_bkup/db/ADBUTBL01 bs=524288
dd if=/HADB/db/ADBUIDX01 of=/HADB_bkup/db/ADBUIDX01 bs=524288

バックアップの取得先ディレクトリは/HADB_bkup/dbです。

DBディレクトリのバックアップにあるDBエリアファイル（シンボリックリンク）と，このあとで取得するDBエリアファイルのバックアップが同じパスにならないようにしてください。

DBディレクトリが$DBDIRにマウントされていない場合は，OSのmountコマンドを実行してマウントしてください。

ブロックスペシャルファイルのデータをバックアップする場合，ボリューム全体をコピーするため，実際の使用量よりもバックアップ容量が増えます。

アーカイブディレクトリのバックアップの取得

cp -r /HADB/archive /HADB_bkup/archive

アーカイブマルチチャンク表を定義している場合は，アーカイブディレクトリのバックアップを取得する必要があります。

アーカイブディレクトリをNFSサーバ上に作成している場合は，アーカイブディレクトリのバックアップをhadb02（待機系）で取得する必要はありません。

同義語辞書ファイルの格納ディレクトリのバックアップの取得

cp -r /mnt/syndict /HADB_bkup/syndict

同義語検索をしている場合は，同義語辞書ファイルの格納ディレクトリのバックアップを取得する必要があります。

メモ

監査証跡の出力先ディレクトリ下の監査証跡ファイルは，監査証跡の保存先ディレクトリに移動する運用のため，監査証跡の出力先ディレクトリのバックアップを取得する必要はありません。

コールドスタンバイ構成を開始する※2

詳細については，「19.4.1　コールドスタンバイ構成の開始方法」を参照してください。

注※1

手順1.は，次の方法で代替することもできます。

hadb01（実行系）でadbchgsrvmodeコマンドを実行し，実行系のHADBサーバの稼働モードを静止モードに変更します。

adbchgsrvmode --quiescence

注※2

手順1.で注※1の方法を実施した場合は，hadb01（実行系）でadbchgsrvmodeコマンドを実行し，実行系のHADBサーバの稼働モードを通常モードに変更してください。

adbchgsrvmode --normal

(3)　バックアップからの回復

バックアップからの回復手順を説明します。

手順

コールドスタンバイ構成を正常終了する

詳細については，「19.4.2　コールドスタンバイ構成の終了方法」を参照してください。

OSのコマンドでデータベースを回復する

OSのcpコマンドおよびddコマンドをhadb01（実行系）で実行し，バックアップからデータベースを回復します。

DBディレクトリの回復

cp -r /HADB_bkup/db/dbdir/* /HADB/db
dd if=/HADB_bkup/db/ADBMST of=/HADB/db/ADBMST bs=524288
dd if=/HADB_bkup/db/ADBDIC of=/HADB/db/ADBDIC bs=524288
dd if=/HADB_bkup/db/ADBSTBL of=/HADB/db/ADBSTBL bs=524288
dd if=/HADB_bkup/db/ADBUTBL01 of=/HADB/db/ADBUTBL01 bs=524288
dd if=/HADB_bkup/db/ADBUIDX01 of=/HADB/db/ADBUIDX01 bs=524288

バックアップファイルの格納ディレクトリは，/HADB_bkup/dbです。

DBディレクトリが$DBDIRにマウントされていない場合は，OSのmountコマンドを実行してマウントしてください。

アーカイブディレクトリの回復

rm -r /HADB/archive/*
cp -r /HADB_bkup/archive/* /HADB/archive

アーカイブマルチチャンク表を定義している場合は，アーカイブディレクトリを回復する必要があります。

アーカイブディレクトリをNFSサーバ上に作成している場合は，hadb02（待機系）でアーカイブディレクトリを回復する必要はありません。

同義語辞書ファイルの格納ディレクトリの回復

rm -r /mnt/syndict/*
cp -r /HADB_bkup/syndict/* /mnt/syndict

同義語検索をしている場合は，同義語辞書ファイルの格納ディレクトリを回復する必要があります。

コールドスタンバイ構成を開始する

詳細については，「19.4.1　コールドスタンバイ構成の開始方法」を参照してください。

コールドスタンバイ構成の開始後，実行系のHADBサーバの稼働モードが静止モードになっている場合は，hadb01（実行系）でadbchgsrvmodeコマンドを実行し，実行系のHADBサーバの稼働モードを通常モードに変更してください。

adbchgsrvmode --normal

19.6.4　バックアップの運用例（ShadowImageを使用）

ここでは，ShadowImageを使用したバックアップの運用例について説明します。

(1)　システムの構成例

「図19‒1　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）」で示すコールドスタンバイ構成で，実行系はhadb01とします。DBディレクトリ，アーカイブディレクトリ，および同義語辞書ファイルの格納ディレクトリは，次の構成となっているとします。

■hadb01のディレクトリ構成

DBディレクトリの構成

/HADB/db（FS001上に構築）
 [図データ]ADBDIC：ブロックスペシャルファイル（LU002を使用）
 [図データ]ADBMST：ブロックスペシャルファイル（LU001を使用）
 [図データ]ADBSTBL：ブロックスペシャルファイル（LU003を使用）
 [図データ]ADBWORK：ファイルシステム上のディレクトリ
 [図データ]ADBWRK：ブロックスペシャルファイル（WRK003を使用）
 [図データ]ADBUTBL01：ブロックスペシャルファイル（LU004を使用）
 [図データ]ADBUIDX01：ブロックスペシャルファイル（LU005を使用）
 [図データ]SPOOL：ファイルシステム上のディレクトリ
 [図データ]ADBSYS：ファイルシステム上のディレクトリ

アーカイブディレクトリの構成

/HADB/archive

アーカイブディレクトリは，アーカイブマルチチャンク表を定義した場合に作成するディレクトリです。

同義語辞書ファイルの格納ディレクトリの構成

/mnt/syndict

同義語辞書ファイルの格納ディレクトリは，同義語検索をする場合に作成するディレクトリです。

監査証跡の出力先ディレクトリの構成

/mnt/audit

監査証跡の出力先ディレクトリは，監査証跡機能を使用する場合に作成するディレクトリです。

■hadb02のディレクトリ構成

DBディレクトリの構成

/HADB/db

アーカイブディレクトリの構成

/HADB/archive

アーカイブディレクトリは，アーカイブマルチチャンク表を定義した場合に作成するディレクトリです。

同義語辞書ファイルの格納ディレクトリのマウントポイント

/mnt/syndict

同義語辞書ファイルの格納ディレクトリは，同義語検索をする場合に作成するディレクトリです。

監査証跡の出力先ディレクトリのマウントポイント

/mnt/audit

監査証跡の出力先ディレクトリは，監査証跡機能を使用する場合に作成するディレクトリです。

■Logical Unitの構成

コールドスタンバイ構成のときのストレージの構成例を次の図に示します。

［説明］

FS001はDBディレクトリ用のファイルシステムです。

FS002は作業用一時ファイルを格納しているファイルシステムです。

FS003は同義語辞書ファイルを格納しているファイルシステムです。

FS004は監査証跡ファイルの出力先のファイルシステムです。

FS005は次のファイルシステムです。

データインポートで使用する入力データファイルを格納するファイルシステム

ADB_CSVREAD関数で使用するCSVファイルを格納するファイルシステム

監査証跡の保存先ディレクトリを作成するファイルシステム

LU001〜LU005は，DBエリアファイルに使用しています。

WRK001は作業用表DBエリアファイルに使用しています。

正ボリュームFS00X，LU00Xに対応する副ボリュームはFS10X，LU10Xです。

(2)　バックアップの取得

ShadowImageを使用して，バックアップを取得する手順を説明します。

手順

コールドスタンバイ構成を正常終了する

詳細については，「19.4.2　コールドスタンバイ構成の終了方法」を参照してください。

バックアップ対象のファイルシステムをアンマウントする

バックアップを取得する

FS001，FS003，およびLU001〜LU005のすべてのLogical Unitに対して，「10.3.4　バックアップの運用例（ShadowImageを使用）」の「(3)　バックアップの取得」の手順に従ってバックアップを取得してください。

コールドスタンバイ構成を開始する

詳細については，「19.4.1　コールドスタンバイ構成の開始方法」を参照してください。

(3)　バックアップからの回復

バックアップからの回復手順を説明します。

手順

コールドスタンバイ構成を終了する

adbstop
monend

hadb01（実行系）でadbstopコマンド，およびHAモニタのmonendコマンドを実行して，コールドスタンバイ構成を終了します。

なお，このあとの手順でファイルシステムをアンマウントするため，静止モードではバックアップを取得できません。

バックアップ対象のファイルシステムをアンマウントする

データベースを回復する

FS001，FS003，およびLU001〜LU005のすべてのLogical Unitを，「10.3.4　バックアップの運用例（ShadowImageを使用）」の「(4)　バックアップからの回復」の手順に従って回復してください。

コールドスタンバイ構成を開始する

詳細については，「19.4.1　コールドスタンバイ構成の開始方法」を参照してください。

19.7　状態監視（コールドスタンバイ構成の場合）

ここでは，コールドスタンバイ構成特有のシステムの監視方法を説明します。

19.7.1　メモリの使用状況を確認する場合

HADBサーバが使用しているメモリの使用状況を確認したい場合は，adbstatコマンドを実行してください。確認方法については，「10.6.1　全メモリの使用状況を確認したい場合」を参照してください。

adbstatコマンドを実行すると，実行系のHADBサーバの全メモリの最大使用量（Total_memory_max_size）を確認できます。

19.8　DBエリアの運用（コールドスタンバイ構成の場合）

ここでは，コールドスタンバイ構成の場合の，DBエリアの運用について説明します。

メモ

AWS環境のコールドスタンバイ構成でのDBエリアの追加，削除，および拡張方法については，次の個所を参照してください。

・「19.22.5　データ用DBエリアの追加」

・「19.22.6　データ用DBエリアの削除」

・「19.22.7　DBエリアの拡張」

Azure環境のコールドスタンバイ構成でのDBエリアの追加，削除，および拡張方法については，「19.23.4　データ用DBエリアの追加，削除，拡張」を参照してください。

19.8.1　データ用DBエリアの追加・削除・拡張（コールドスタンバイ構成の場合）

実行系と待機系で同じLogical Unitを指定する必要があるため，WWNを使用してください。

■共有ディスクのSCSIリザーブを使用している場合

共有ディスクのSCSIリザーブを使用している場合は，HAモニタのserversファイル中のオペランドの指定を変更する必要があります。手順を次に示します。

手順（データ用DBエリアを追加または拡張する場合）

コールドスタンバイ構成を正常終了する

終了方法については，「19.4.2　コールドスタンバイ構成の終了方法」を参照してください。

HAモニタのserversファイルの指定を変更する

scsi_deviceオペランドまたはdmmp_deviceオペランドに，追加するディスクのデバイス名を追加してください。実行系と待機系の両方のserversファイルの指定を変更してください。

コールドスタンバイ構成を正常開始する

開始方法については，「19.4.1　コールドスタンバイ構成の開始方法」を参照してください。

adbmodareaコマンドを実行して，データ用DBエリアを追加または拡張する

データ用DBエリアを追加する方法については，「11.13.1　データ用DBエリアを追加する方法」を参照してください。

データ用DBエリアを拡張する方法については，「11.13.3　データ用DBエリアを拡張する方法（データ用DBエリアファイルの追加）」を参照してください。

手順（データ用DBエリアを削除する場合）

adbmodareaコマンドを実行して，データ用DBエリアを削除する

データ用DBエリアを削除する方法については，「11.13.2　データ用DBエリアを削除する方法」を参照してください。

コールドスタンバイ構成を正常終了する

終了方法については，「19.4.2　コールドスタンバイ構成の終了方法」を参照してください。

HAモニタのserversファイルの指定を変更する

scsi_deviceオペランドまたはdmmp_deviceオペランドから，削除したディスクのデバイス名を削除してください。実行系と待機系の両方のserversファイルの指定を変更してください。

コールドスタンバイ構成を正常開始する

開始方法については，「19.4.1　コールドスタンバイ構成の開始方法」を参照してください。

19.8.2　作業表用DBエリアの運用（コールドスタンバイ構成の場合）

実行系と待機系で同じLogical Unitを指定しても問題ありません。

19.9　表およびインデクスの運用（コールドスタンバイ構成の場合）

ここでは，コールドスタンバイ構成の場合の，表およびインデクスの運用について説明します。

19.9.1　実表の運用（コールドスタンバイ構成の場合）

ここでは，コールドスタンバイ構成の場合の，実表の運用について説明します。

コールドスタンバイ構成の場合，実表の運用のうち，次の運用項目ではコールドスタンバイ構成特有の運用が必要となります。

実表の更新不可状態を解除する方法

アーカイブマルチチャンク表を使用する際の運用

上記以外については，コールドスタンバイ構成ではない場合と同じです。「11.1　実表の運用」を参照してください。

(1)　実表の更新不可状態を解除する方法（コールドスタンバイ構成の場合）

adbimportコマンド，adbidxrebuildコマンド，またはadbunarchivechunkコマンドの実行中に系切り替えが発生した場合，処理対象の実表は更新不可状態となります。この場合，新しく実行系となった系でコマンドを再実行してください。

なお，次に示すファイルシステムが，両方の系から同一のパスで参照できる場合は，コマンドを再実行する際に，中断した処理の続きから実行できます。

DBディレクトリを格納したファイルシステム

データインポートで使用する入力データファイルを格納するファイルシステム（adbimportコマンドの場合）

作業用一時ファイルを格納するファイルシステム

実表の更新不可状態については，「16.8.1　実表が更新不可状態になった場合」を参照してください。

重要

作業用一時ファイルを格納するファイルシステムを系切り替え対象としない場合は，実行系と待機系から同じファイルシステムを参照できません。そのため，コマンドの中断時または中断後に系切り替えが発生した場合，切り替え先の系でコマンドを再実行しても，中断したコマンドの続きを実行できません。その場合は，「16.2.4　adbimportコマンドまたはadbidxrebuildコマンドが再実行できない場合の対処方法」または「16.2.5　adbunarchivechunkコマンドが再実行できない場合の対処方法」を参照して対処してください。

(2)　アーカイブマルチチャンク表を使用する際の運用（コールドスタンバイ構成の場合）

実行系と待機系の両方から同一の絶対パスでアーカイブディレクトリを参照できるようにしてください。

例えば，分散ファイルシステムの一つであるNFSを使用する場合は，次の手順でアーカイブディレクトリを準備します。

手順

NFSサーバを用意し，NFSサーバ上でアーカイブディレクトリを作成してください。

手順の1.で作成したアーカイブディレクトリをエクスポートしてください。

この操作は，NFSサーバで実行します。

手順の2.でエクスポートしたディレクトリを，実行系と待機系で同じパスとなるようにマウントしてください。

この操作は，実行系と待機系の両方で実行します。

NFSを使用したシステム構成例を次の図に示します。

図19‒4　NFSを使用したシステム構成例

19.9.2　インデクスの運用（コールドスタンバイ構成の場合）

ここでは，コールドスタンバイ構成の場合の，B-treeインデクス，テキストインデクスおよびレンジインデクスの運用について説明します。

コールドスタンバイ構成の場合，B-treeインデクス，テキストインデクスおよびレンジインデクスの運用のうち，次の運用項目ではコールドスタンバイ構成特有の運用が必要となります。

B-treeインデクスの未完状態を解除する方法

テキストインデクスの未完状態を解除する方法

レンジインデクスの未完状態を解除する方法

上記以外については，コールドスタンバイ構成ではない場合と同じです。「11.4　インデクスの運用」を参照してください。

(1)　B-treeインデクスの未完状態を解除する方法（コールドスタンバイ構成の場合）

adbimportコマンドまたはadbidxrebuildコマンドの実行中に系切り替えが発生した場合，B-treeインデクスは未完状態となります。この場合，新しく実行系となった系でコマンドを再実行してください。

なお，次に示すファイルシステムが，両方の系から同一のパスで参照できる場合は，コマンドを再実行する際に，中断した処理の続きから実行できます。

DBディレクトリを格納したファイルシステム

データインポートで使用する入力データファイルを格納するファイルシステム（adbimportコマンドの場合）

作業用一時ファイルを格納するファイルシステム

B-treeインデクスの未完状態については，「16.9.1　B-treeインデクスが未完状態になったときの対処方法」を参照してください。

重要

作業用一時ファイルを格納するファイルシステムを系切り替え対象としない場合は，実行系と待機系から同じファイルシステムを参照できません。そのため，コマンドの中断時または中断後に系切り替えが発生した場合，切り替え先の系でコマンドを再実行しても，中断したコマンドの続きを実行できません。その場合は，「16.2.4　adbimportコマンドまたはadbidxrebuildコマンドが再実行できない場合の対処方法」を参照して対処してください。

(2)　テキストインデクスの未完状態を解除する方法（コールドスタンバイ構成の場合）

adbimportコマンドまたはadbidxrebuildコマンドの実行中に系切り替えが発生した場合，テキストインデクスは未完状態となります。この場合，新しく実行系となった系でコマンドを再実行してください。

なお，次に示すファイルシステムが，両方の系から同一のパスで参照できる場合は，コマンドを再実行する際に，中断した処理の続きから実行できます。

DBディレクトリを格納したファイルシステム

データインポートで使用する入力データファイルを格納するファイルシステム（adbimportコマンドの場合）

作業用一時ファイルを格納するファイルシステム

テキストインデクスの未完状態については，「16.10.1　テキストインデクスが未完状態になったときの対処方法」を参照してください。

重要

作業用一時ファイルを格納するファイルシステムを系切り替え対象としない場合は，実行系と待機系から同じファイルシステムを参照できません。そのため，コマンドの中断時または中断後に系切り替えが発生した場合，切り替え先の系でコマンドを再実行しても，中断したコマンドの続きを実行できません。その場合は，「16.2.4　adbimportコマンドまたはadbidxrebuildコマンドが再実行できない場合の対処方法」を参照して対処してください。

(3)　レンジインデクスの未完状態を解除する方法（コールドスタンバイ構成の場合）

adbidxrebuildコマンドの実行中に系切り替えが発生した場合，レンジインデクスは未完状態となります。この場合，新しく実行系となった系でコマンドを再実行してください。

なお，次に示すファイルシステムが，両方の系から同一のパスで参照できる場合は，コマンドを再実行する際に，中断した処理の続きから実行できます。

DBディレクトリを格納したファイルシステム

作業用一時ファイルを格納するファイルシステム

レンジインデクスの未完状態については，「16.11.1　レンジインデクスが未完状態になったときの対処方法」を参照してください。

重要

作業用一時ファイルを格納するファイルシステムを系切り替え対象としない場合は，実行系と待機系から同じファイルシステムを参照できません。そのため，コマンドの中断時または中断後に系切り替えが発生した場合，切り替え先の系でコマンドを再実行しても，中断したコマンドの続きを実行できません。その場合は，「16.2.4　adbimportコマンドまたはadbidxrebuildコマンドが再実行できない場合の対処方法」を参照して対処してください。

19.10　DBディレクトリの運用（コールドスタンバイ構成の場合）

DBディレクトリは，コールドスタンバイ構成を開始するときに，HAモニタがマウントポイントにマウントします。

adbinitコマンドを実行するときは，DBディレクトリを手動でマウントしてください。

19.11　統計情報の運用（コールドスタンバイ構成の場合）

コールドスタンバイ構成の場合，待機系のHADBサーバの統計情報は参照できません。

統計情報の確認方法については，「10.10　統計解析の運用（HADBサーバの稼働情報の確認）」を参照してください。

19.12　障害が発生した場合の運用

ここでは，障害が発生した場合の運用について説明します。

19.12.1　実行系で障害が発生した場合

実行系で障害が発生してHADBサーバが異常終了した場合，HAモニタのserversファイルのservexec_retryオペランドに指定した回数分，HADBサーバを再開始しようとします。再開始に失敗した場合，系が切り替わります。

障害の原因を特定するために，「15.1　障害発生時の対処の流れ」を参照して対処してください。そこで説明している手順は，障害が発生した系で実施してください。

また，障害が発生した系で，次のトラブルシュート情報を取得してください。

HADBサーバのトラブルシュート情報をadbinfogetコマンドで取得してください。

HAモニタのトラブルシュート情報をHAモニタのmontsコマンドで取得してください。

なお，HADBサーバを再開始した場合，「19.3.2　HADBサーバのインストールおよび環境設定」で作成したトラブルシュート情報ファイルを格納するディレクトリに，トラブルシュート情報ファイルが格納されます。格納されたトラブルシュート情報ファイルは自動では削除されないため，使用しないトラブルシュート情報ファイルを定期的に削除してください。

19.12.2　待機系で障害が発生した場合

待機系で障害が発生した場合，実行系は運用を継続します。

障害の原因を特定するために，「15.1　障害発生時の対処の流れ」を参照して対処してください。そこで説明している手順は，障害が発生した系で実施してください。

また，障害が発生した系で，次のトラブルシュート情報を取得してください。

HADBサーバのトラブルシュート情報をadbinfogetコマンドで取得してください。

HAモニタのトラブルシュート情報をHAモニタのmontsコマンドで取得してください。

19.12.3　実行系と待機系の間で通信障害が発生した場合

実行系と待機系の間で通信障害が発生した場合，通信障害の発生元のサーバマシンは，HAモニタによって電源断の停止状態になります。

停止したサーバマシンを再起動したあと，通信障害の原因を取り除いてください。そのあと，該当する系をコールドスタンバイ構成に復帰させてください。復帰の方法については，「19.12.4　コールドスタンバイ構成への系復帰」を参照してください。

19.12.4　コールドスタンバイ構成への系復帰

障害が発生して系切り替えが発生した場合，障害が発生した系は停止状態になります。障害の原因を取り除いたあとに，HAモニタのmonbeginコマンドを実行すると，待機系としてコールドスタンバイ構成に復帰できます。

19.13　コールドスタンバイ構成での計画系切り替え

計画系切り替えをする場合は，実行系でadbstopコマンドを実行したあとにHAモニタのmonswapコマンドを実行してください。この場合，実行系のHADBサーバが正常終了したあとに，系が切り替わります。

なお，実行系でHAモニタのmonswapコマンドだけを実行した場合は，実行系のHADBサーバを強制終了したあとに系が切り替わります。

19.14　トラブルシュート（コールドスタンバイ構成の場合）

ここでは，コールドスタンバイ構成でトラブルが発生した場合の対処方法について説明します。

19.14.1　コールドスタンバイ構成の開始または終了に関するトラブル

コールドスタンバイ構成の開始または終了に関するトラブルが発生したときの対処方法について説明します。

(1)　コールドスタンバイ構成を正常開始できない場合

コールドスタンバイ構成が正常開始できない場合の考えられる原因と対処方法を次の表に示します。

表19‒6　コールドスタンバイ構成を正常開始できない場合の考えられる原因と対処方法

項番

考えられる原因

対処方法

1

実行系または待機系で障害が発生しています。

HAモニタのmonbeginコマンドではなく，adbstartコマンドでHADBサーバを開始してください。ただし，この場合，コールドスタンバイ構成にはなりません。

または，代替マシンがある場合は，代替マシンの環境を，障害が発生したサーバマシンとまったく同じ環境に設定したあとに，「19.4.1　コールドスタンバイ構成の開始方法」の手順に従って，コールドスタンバイ構成を開始してください。

2

DBディレクトリがマウントされていません。

HAモニタのserversファイルに指定した，次に示すオペランドの指定を見直してください。

diskオペランド

fs_nameオペランド

fs_mount_dirオペランド

fs_mount_optオペランド

3

DBディレクトリが正しく初期化されていません。

adbinitコマンドを実行するときに，DBディレクトリをマウントしていたかどうかを確認してください。

上記以外の場合は，出力されたメッセージの対処方法に従って原因を取り除いてください。そのあとに，「19.4.1　コールドスタンバイ構成の開始方法」の手順に従って，コールドスタンバイ構成を開始してください。

(2)　コールドスタンバイ構成を再開始できない場合

実行系または待機系で障害が発生している場合は，障害が発生した系をコールドスタンバイ構成から除いてください。そのあとで，「19.4.1　コールドスタンバイ構成の開始方法」の手順に従って，コールドスタンバイ構成を再開始してください。

それ以外の場合は，出力されたメッセージの対処方法に従って原因を取り除いてください。そのあとに，「19.4.1　コールドスタンバイ構成の開始方法」の手順に従って，コールドスタンバイ構成を再開始してください。

(3)　コールドスタンバイ構成を終了できない場合

出力されたメッセージの対処方法に従って原因を取り除いてください。そのあとに，「19.4.2　コールドスタンバイ構成の終了方法」の手順に従って，コールドスタンバイ構成を終了してください。

(4)　系切り替え後にHADBサーバが開始できない場合

系切り替え後にHADBサーバが開始できない場合の考えられる原因と対処方法を次の表に示します。

表19‒7　系切り替え後にHADBサーバが開始できない場合の考えられる原因と対処方法

項番

考えられる原因

対処方法

1

DBディレクトリがマウントされていません。

HAモニタのserversファイルに指定した，次に示すオペランドの指定を見直してください。

・diskオペランド

・fs_nameオペランド

・fs_mount_dirオペランド

・fs_mount_optオペランド

2

HADBサーバのサーバ定義が，実行系と待機系で異なっています。

実行系と待機系の両方のHADBサーバで，サーバ定義を同じにしてください。

実行系のHADBサーバが強制終了または異常終了した場合，系切り替え時のHADBサーバの開始モードは，再開始になります。このとき，開始するHADBサーバのスレッド数やメモリが，系切り替え前の実行系のHADBサーバよりも少なく設定されていると，再開始に失敗します。

3

DBエリアの拡張時に，待機系では参照できないブロックスペシャルファイルを指定しています。

次に示す手順に従って対処してください。

OSのddコマンドなどを使用して，実行系と待機系から参照できるブロックスペシャルファイルに，DBエリアファイルの内容をコピーしてください。

DBディレクトリ内のDBエリアファイル（ブロックスペシャルファイル）へのシンボリックリンクを，手順1.で使用したブロックスペシャルファイルへのリンクに変更してください。

4

DBエリアの拡張時に，待機系とパスが異なるブロックスペシャルファイルを指定しています。

実行系と待機系で同じパスになるように，WWNを使用することを推奨します。

DBディレクトリ内のDBエリアファイルはブロックスペシャルファイルへのシンボリックリンクになります。WWNを使用したパスになるように，手動でリンクを変更してください。

上記以外の場合は，出力されたメッセージの対処方法に従って原因を取り除いてください。そのあとに，「19.4.1　コールドスタンバイ構成の開始方法」の手順に従って，コールドスタンバイ構成を再開始してください。

19.14.2　APに関するトラブル（コールドスタンバイ構成の場合）

APに関するトラブルが発生した場合，最初に「16.1　APに関するトラブル」を参照して対処してください。対処できない場合に，ここの説明をお読みください。

(1)　APが実行できない場合の対処方法

APが実行できない場合の考えられる原因と対処方法を次の表に示します。

表19‒8　APが実行できない場合の考えられる原因と対処方法

項番

考えられる原因

対処方法

1

接続先のホスト名が誤っている可能性があります。

HADBクライアントとHADBサーバ間の通信で使用しているエイリアスIPアドレスに対応するホスト名を指定しているか，確認してください。

クライアント定義など，APの接続先のホスト名を指定している個所を確認して修正してください。

19.14.3　コマンドに関するトラブル（コールドスタンバイ構成の場合）

コマンドに関するトラブルが発生した場合，最初に「16.2　コマンドに関するトラブル」を参照して対処してください。対処できない場合に，ここの説明をお読みください。

(1)　コマンドが実行できない場合の対処方法

次に示すコマンドが実行できない場合の，考えられる原因と対処方法を次の表に示します。

adbimport

adbidxrebuild

adbmergechunk

adbunarchivechunk

adbreorgsystemdata

adbsyndict

表19‒9　コマンドが実行できない場合の考えられる原因と対処方法

項番

考えられる原因

対処方法

1

データインポートで使用する入力データファイルを格納するファイルシステムがマウントされていません。

共有するファイルシステムの設定を見直してください。

実行系と待機系で同じパスになるように，ファイルシステムを共有してください。

2

次のファイルシステムがマウントされていません。

作業用一時ファイルを格納するファイルシステム

同義語辞書ファイルを格納するファイルシステム

HAモニタのserversファイルに指定した，次に示すオペランドの指定を見直してください。

diskオペランド

fs_nameオペランド

fs_mount_dirオペランド

fs_mount_optオペランド

指定に誤りがあった場合は，手動で正しくマウントしたあと，コマンドを再実行してください。

3

実行系と待機系でファイルシステムのマウントポイントのパスが異なっています。

HAモニタのserversファイルに指定した，次に示すオペランドの指定を見直してください。

diskオペランド

fs_nameオペランド

fs_mount_dirオペランド

fs_mount_optオペランド

指定に誤りがあった場合は，手動で正しくマウントしたあと，コマンドを再実行してください。

なお，コマンド実行中に系切り替えが発生した場合，次に示すファイルシステムを実行系と待機系で同じパスで参照できれば，中断した処理の続きからコマンドを再実行できます。

DBディレクトリを格納するファイルシステム

データインポートで使用する入力データファイルを格納するファイルシステム

作業用一時ファイルを格納するファイルシステム

同義語辞書ファイルを格納するファイルシステム

19.14.4　DBディレクトリのファイルに関するトラブル（コールドスタンバイ構成の場合）

(1)　システムログファイルに障害が発生した場合の対処方法

出力されたメッセージの対処に従ってください。

また，DBディレクトリのファイルシステムが$DBDIRにマウントされているかどうかを確かめてください。

「16.5.2　システムログファイルでトラブルが発生した場合の対処」もあわせて参照してください。

19.15　サーバマシンのOSのホスト名・IPアドレスの変更（コールドスタンバイ構成の場合）

ここでは，コールドスタンバイ構成の場合に，HADBサーバがインストールされているサーバマシンのOSのホスト名またはIPアドレスを変更する場合の手順について説明します。

なお，実行系および待機系のIPアドレスだけを変更する場合は，HADBサーバとHAモニタに対して実施する作業はありません。

■コールドスタンバイ構成のHADBサーバで実施する作業

サーバマシンのOSのホスト名またはIPアドレスを変更する場合に，コールドスタンバイ構成のHADBサーバで実施する作業を次に示します。

コールドスタンバイ構成を正常終了する

コールドスタンバイ構成を正常終了してください。終了方法については，「19.4.2　コールドスタンバイ構成の終了方法」の「(1)　コールドスタンバイ構成の終了手順」の「(a)　コールドスタンバイ構成を正常終了させる場合」を参照してください。

また，すべての系のHAモニタについても，monstopコマンドで正常停止してください。

すべての系のHAモニタについて設定を変更する

「19.3.4　HAモニタの環境設定」を参照して，すべての系のHAモニタについて設定を変更してください。

HAモニタの監視パスとして使用するLANのホスト名を変更する場合

HAモニタの環境設定ファイル（sysdefファイル）の設定を変更してください。

エイリアスIPアドレスを変更する場合

LAN接続時の状態設定ファイル（サーバ識別名.upファイル），およびLAN切り離し時の状態設定ファイル（サーバ識別名.downファイル）の設定を変更してください。

コールドスタンバイ構成を開始する

すべての系のHAモニタをmonstartコマンドで起動してください。そのあと，コールドスタンバイ構成を開始してください。開始方法については，「19.4.1　コールドスタンバイ構成の開始方法」の「(1)　コールドスタンバイ構成の開始手順」を参照してください。

■HADBクライアントで実施する作業

サーバマシンのOSのホスト名またはIPアドレスを変更する場合に，HADBクライアントで実施する作業を次に示します。HADBクライアントとHADBサーバ間の通信で使用するエイリアスIPアドレスを変更する場合に実施してください。

APを停止する

コールドスタンバイ構成のHADBサーバに接続するAPをすべて停止してください。

クライアント定義に指定しているエイリアスIPアドレスを変更する

HADBクライアントとHADBサーバ間の通信で使用するエイリアスIPアドレスを変更する場合は，「19.3.6　クライアント定義の作成」を参照して，クライアント定義adb_clt_rpc_srv_hostオペランドの値を変更してください。

クライアント定義adb_clt_rpc_srv_hostオペランドについては，マニュアルHADB　AP開発ガイドのクライアント定義の設計のクライアント定義のオペランドの内容を参照してください。

JDBCドライバを使用している場合

クライアント定義adb_clt_rpc_srv_hostオペランドに対応するプロパティで指定しているHADBサーバのホスト名またはIPアドレスを変更してください。JDBCドライバで使用するプロパティは，システムプロパティ，ユーザプロパティ，または接続用のURLのプロパティがあります。詳細については，マニュアルHADB　AP開発ガイドのJDBCドライバの環境設定を参照してください。

ODBCドライバまたはCLI関数を使用している場合

クライアント定義adb_clt_rpc_srv_hostオペランドに指定しているHADBサーバのホスト名またはIPアドレスを変更してください。詳細については，マニュアルHADB　AP開発ガイドのHADBクライアントの環境設定（ODBCドライバおよびCLI関数を使用する場合）を参照してください。

APを開始する

コールドスタンバイ構成のHADBサーバに接続するAPを開始してください。

重要

コールドスタンバイ構成ではない場合は，「8.11　サーバマシンのOSのホスト名・IPアドレスの変更」を参照してください。

19.16　HADBサーバのバージョンアップ（コールドスタンバイ構成の場合）

コールドスタンバイ構成のHADBサーバをバージョンアップする場合の手順を次に示します。

手順

コールドスタンバイ構成を正常終了する

コールドスタンバイ構成を正常終了する手順については，「19.4.2　コールドスタンバイ構成の終了方法」を参照してください。

実行系および待機系のHADBサーバをバージョンアップする

バージョンアップの手順については，「8.6　HADBサーバのバージョンアップ」を参照してください。

コールドスタンバイ構成を開始する

コールドスタンバイ構成を開始する手順については，「19.4.1　コールドスタンバイ構成の開始方法」を参照してください。

コールドスタンバイ構成を正常終了したあとに，HADBサーバをバージョンアップしてください。なお，系切り替えが発生したあとにコールドスタンバイ構成を正常終了した場合は，いったんコールドスタンバイ構成を正常開始してから正常終了してください。この操作をしないと，バージョンアップ後のHADBサーバの開始に失敗することがあります（KFAA40002-Eメッセージが出力されます）。

コールドスタンバイ構成のHADBサーバをバージョンアップする場合は，実行系と待機系の両方のHADBサーバが正常終了している状態でバージョンアップしてください。

19.17　修正版HADBサーバとの入れ替え（コールドスタンバイ構成の場合）

次に示すどちらかの方法で，修正版HADBサーバに入れ替えることができます。

コールドスタンバイ構成を正常終了して入れ替えを実施する方法

系ごとに入れ替えを実施する方法

19.17.1　コールドスタンバイ構成を正常終了して入れ替えを実施する方法

コールドスタンバイ構成を正常終了してから，修正版HADBサーバに入れ替える手順を次に示します。

手順

コールドスタンバイ構成を正常終了する

コールドスタンバイ構成を正常終了する手順については，「19.4.2　コールドスタンバイ構成の終了方法」を参照してください。

修正版HADBサーバとの入れ替えを実行系および待機系で実施する

修正版HADBサーバとの入れ替え方法については，「8.8　修正版HADBサーバとの入れ替え」を参照してください。

コールドスタンバイ構成を正常開始する

コールドスタンバイ構成を正常開始する手順については，「19.4.1　コールドスタンバイ構成の開始方法」を参照してください。

重要

コールドスタンバイ構成を正常終了したあとに，修正版HADBサーバとの入れ替えを実施してください。コールドスタンバイ構成で修正版HADBサーバとの入れ替えを実施する場合は，実行系と待機系の両方のHADBサーバが正常終了している必要があります。

系切り替えが発生したあとにコールドスタンバイ構成を正常終了した場合は，いったんコールドスタンバイ構成を正常開始してから正常終了してください。この操作をしないと，修正版HADBサーバとの入れ替えを実施したあとのHADBサーバの開始に失敗することがあります（KFAA40002-Eメッセージが出力されます）。

19.17.2　系ごとに入れ替えを実施する方法

片方の系を停止して，系ごとに修正版HADBサーバに入れ替える手順を次に示します。この方法の場合，実行系のHADBサーバの稼働中に，もう片方のHADBサーバを修正版に入れ替えることができるため，業務を停止する必要がありません。

なお，入れ替えを実施するコールドスタンバイ構成は，次のとおりとします。

手順

系2（待機系）を停止する

系2で，HAモニタのmonsbystpコマンドを実行し，系2を停止してください。

修正版HADBサーバとの入れ替えを系2で実施する

修正版HADBサーバとの入れ替え方法については，「8.8　修正版HADBサーバとの入れ替え」を参照してください。

系2をコールドスタンバイ構成に復帰させる

コールドスタンバイ構成への復帰方法については，「19.12.4　コールドスタンバイ構成への系復帰」を参照してください。

系2は，待機系としてコールドスタンバイ構成に復帰します。

計画系切り替えを実施する

系1でadbstopコマンドを実行したあとにHAモニタのmonswapコマンドを実行し，計画系切り替えを実施してください。計画系切り替えが完了すると，系2が実行系になり，系1のHADBサーバが正常終了します。

計画系切り替えについては，「19.13　コールドスタンバイ構成での計画系切り替え」を参照してください。

修正版HADBサーバとの入れ替えを系1で実施する

修正版HADBサーバとの入れ替え方法については，「8.8　修正版HADBサーバとの入れ替え」を参照してください。

系1をコールドスタンバイ構成に復帰させる

コールドスタンバイ構成への復帰方法については，「19.12.4　コールドスタンバイ構成への系復帰」を参照してください。

系1は，待機系としてコールドスタンバイ構成に復帰します。

計画系切り替えを実施する

系2でadbstopコマンドを実行したあとにHAモニタのmonswapコマンドを実行し，計画系切り替えを実施してください。計画系切り替えが完了すると，系1が実行系になり，系2のHADBサーバが正常終了します。

計画系切り替えについては，「19.13　コールドスタンバイ構成での計画系切り替え」を参照してください。

系2をコールドスタンバイ構成に復帰させる

コールドスタンバイ構成への復帰方法については，「19.12.4　コールドスタンバイ構成への系復帰」を参照してください。

系2は，待機系としてコールドスタンバイ構成に復帰します。

以上の手順で，修正版HADBサーバとの入れ替えが完了します。なお，実行系と待機系の関係は，入れ替えを実施する前と同じになっています。

19.18　コールドスタンバイ構成で同義語検索を行う場合の運用

コールドスタンバイ構成の構築後に同義語検索を行うことになった場合，同義語辞書ファイルを格納するファイルシステムを準備し，serversファイルの指定を変更する必要があります。各作業の内容について説明します。

19.18.1　同義語辞書ファイルを格納するファイルシステムの準備

同義語辞書ファイルを格納するファイルシステムは系切り替えの対象とします。系切り替え対象のファイルシステムは，実行系と待機系から参照できるディスク（共有ディスク）から構成されるVG内のLV上に作成してください。共有ディスクについては，マニュアルHAモニタ Linux(R)(x86)編の共有ディスクの構成を参照してください。

19.18.2　serversファイルの指定の変更

HAモニタのserversファイルに指定するオペランドの指定値を変更します。

「図19‒1　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）」のFS003を，同義語辞書ファイルを格納するファイルシステムとします。VGの名称はvg_hadb03とします。LVの名称はhadb_syndictとします。

diskオペランド

同義語辞書ファイルを格納するファイルシステムを含むVGの絶対パスの指定を追加してください。

diskオペランドには，/dev/vg_hadb03を追加します。

fs_nameオペランド

同義語辞書ファイルを格納するファイルシステムに対応する論理ボリュームの絶対パスの指定を追加してください。fs_nameオペランドには，/dev/vg_hadb03/hadb_syndictを追加します。

fs_mount_dirオペランド

同義語辞書ファイルを格納するファイルシステムをマウントするディレクトリのパスの指定を追加してください。実行系と待機系で同じパスになるように指定してください。

fs_mount_optオペランド

同義語辞書ファイルを格納するファイルシステムをマウントするためのマウントオプションを追加してください。

vg_neck

nouseを指定してください。

fs_neck

nouseを指定してください。

serversファイルの指定例については，次の個所を参照してください。

系のリセットを使用している場合

「19.3.4　HAモニタの環境設定」の「(5)　各ファイルの指定例（系のリセットを使用する場合）」の「(b)　serversファイルの指定例」を参照してください。

共有ディスクのSCSIリザーブを使用している場合

「19.3.4　HAモニタの環境設定」の「(6)　各ファイルの指定例（共有ディスクのSCSIリザーブを使用する場合）」の「(b)　serversファイルの指定例」を参照してください。

19.18.3　同義語辞書ファイルを格納するファイルシステムの構築

同義語辞書ファイルを格納するファイルシステムを実行系で構築します。

同義語辞書ファイルを格納するLVとして作成した/dev/vg_hadb03/hadb_syndictを，ext4のファイルシステムで初期化する場合の実行例を次に示します。

mkfs -t ext4 /dev/vg_hadb03/hadb_syndict

上記のコマンドは，スーパユーザで実行してください。

19.18.4　同義語辞書ファイルを格納するファイルシステムのマウント

実行系で，同義語辞書ファイルを格納するファイルシステムをマウントしてください。そのあと，アンマウントしてください。

待機系でも同様に，同義語辞書ファイルを格納するファイルシステムをマウントし，そのあとにアンマウントしてください。

ファイルシステムをマウントする方法については，「19.3.7　データベースの作成」の「(3)　〔実行系での作業〕DBディレクトリ用のファイルシステムのマウント」を参照してください。ファイルシステムをアンマウントする方法については，「19.3.7　データベースの作成」の「(5)　〔実行系での作業〕DBディレクトリ用のファイルシステムのアンマウント」を参照してください。

重要

実行系と待機系で同じパスとなるようにマウントポイントを作成してください。

このあとの作業については，「11.19.1　同義語検索を行うための準備をする」で説明している手順に従ってください。

重要

サーバ定義のadb_syndict_storage_pathオペランドには，マウントした同義語辞書ファイルを格納するファイルシステムのディレクトリを指定してください。

同義語一覧定義ファイル，辞書情報登録ファイル，および辞書情報削除ファイルの格納先は，共有のファイルシステムにしてください。共有のファイルシステムに作成しないと，両方の系からadbsyndictコマンドが実行できません。

19.19　コールドスタンバイ構成で監査証跡機能を使用する場合の運用

コールドスタンバイ構成の構築後に監査証跡機能を使用することになった場合，次のことをする必要があります。

監査証跡の出力先ディレクトリを作成するファイルシステムの準備

監査証跡の保存先ディレクトリの準備

serversファイルの指定の変更

上記の各作業について説明します。

なお，JP1/Auditと連携して，監査証跡を収集および一元管理する場合は，「19.19.4　JP1/Audit Management - Managerとの連携（コールドスタンバイ構成の場合）」を参照してください。

19.19.1　監査証跡の出力先ディレクトリを作成するファイルシステムの準備

監査証跡の出力先ディレクトリを作成するファイルシステムは系切り替えの対象とします。系切り替え対象のファイルシステムは，実行系と待機系から参照できるディスク（共有ディスク）から構成されるVG内のLV上に作成してください。共有ディスクについては，マニュアルHAモニタ Linux(R)(x86)編の共有ディスクの構成を参照してください。

■監査証跡の出力先ディレクトリを作成するファイルシステムの構築

監査証跡の出力先ディレクトリを作成するファイルシステムを実行系で構築します。監査証跡ファイルを格納するLVとして作成した/dev/vg_hadb04/hadb_auditを，ext4のファイルシステムで初期化する場合の実行例を次に示します。

mkfs -t ext4 /dev/vg_hadb04/hadb_audit

上記のコマンドは，スーパユーザで実行してください。

■監査証跡の出力先ディレクトリを作成するファイルシステムのマウント

実行系で，監査証跡の出力先ディレクトリを作成するファイルシステムをマウントしてください。そのあとでアンマウントしてください。待機系でも同様に，監査証跡の出力先ディレクトリを作成するファイルシステムをマウントし，そのあとでアンマウントしてください。

ファイルシステムをマウントする方法については，「19.3.7　データベースの作成」の「(3)　〔実行系での作業〕DBディレクトリ用のファイルシステムのマウント」を参照してください。ファイルシステムをアンマウントする方法については，「19.3.7　データベースの作成」の「(5)　〔実行系での作業〕DBディレクトリ用のファイルシステムのアンマウント」を参照してください。

重要

実行系と待機系で同じパスとなるようにマウントポイントを作成してください。

サーバ定義のadb_audit_log_pathオペランドには，マウントしたファイルシステムに作成したディレクトリを指定してください。

19.19.2　監査証跡の保存先ディレクトリを作成するファイルシステムの準備

監査証跡を検索する際に使用するADB_AUDITREAD関数中に指定する監査証跡ファイルのパスが，実行系と待機系の両方から同じ絶対パスで参照できるように環境を構築してください。そのため，共有のファイルシステムに監査証跡の保存先ディレクトリを作成してください。

例として，分散ファイルシステムの一つであるNFSを使用したときの環境設定方法を説明します。

手順

NFSサーバを用意し，NFSサーバ上で監査証跡の保存先ディレクトリを作成してください。

手順の1.で作成した監査証跡の保存先ディレクトリをエクスポートしてください。

この操作は，NFSサーバで実行します。

手順の2.でエクスポートしたディレクトリを，実行系と待機系で同じパスとなるようにマウントしてください。

この操作は，実行系と待機系の両方で実行します。

NFSを使用したシステム構成例を次の図に示します。

図19‒5　NFSを使用したシステム構成例

19.19.3　serversファイルの指定の変更

HAモニタのserversファイルに指定するオペランドの指定値を変更します。

「図19‒1　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）」のFS004を，監査証跡の出力先ディレクトリを作成するファイルシステムとします。VGの名称はvg_hadb04とします。LVの名称はhadb_auditとします。

disk

監査証跡の出力先ディレクトリを作成するファイルシステムを含むVGの絶対パスの指定を追加してください。「図19‒1　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）」の場合，diskオペランドには，/dev/vg_hadb04を追加します。

fs_name

監査証跡の出力先ディレクトリを作成するファイルシステムに対応する論理ボリュームの絶対パスの指定を追加してください。「図19‒1　コールドスタンバイ構成でのシステム構成例（オンプレミス環境の場合）」の場合，fs_nameオペランドには，/dev/vg_hadb04/hadb_auditを追加します。

fs_mount_dir

監査証跡の出力先ディレクトリを作成するファイルシステムをマウントするディレクトリのパスの指定を追加してください。実行系と待機系で同じパスになるように指定してください。

fs_mount_opt

監査証跡の出力先ディレクトリを作成するファイルシステムをマウントするためのマウントオプションを追加してください。

vg_neck

useの指定を追加してください。

fs_neck

useの指定を追加してください。

scsi_device

このオペランドには，SCSIリザーブの対象となるデバイス名を絶対パスで指定します。

なお，系のリセットを使用する場合は，このオペランドを指定する必要はありません。

共有ディスクのSCSIリザーブを使用する場合で，かつ共有ディスクが次のどれかの条件を満たすときに，監査証跡ファイルを格納するファイルシステムのデバイス名を，このオペランドに絶対パスで追加してください。

シングルパス構成の場合

VMware ESXiでの仮想化環境の場合（DMMPを使用する場合を除く）

マルチパスソフトウェア（HDLM）による冗長化構成の場合

dmmp_device

このオペランドには，SCSIリザーブの対象となるデバイスをDMMPの論理デバイスの絶対パスで指定します。

なお，系のリセットを使用する場合は，このオペランドを指定する必要はありません。

共有ディスクのSCSIリザーブを使用する場合で，かつ共有ディスクがマルチパスソフトウェア（DMMP）による冗長化構成のときに，監査証跡ファイルを格納するファイルシステムのデバイス名を，このオペランドに絶対パスで追加してください。

serversファイルの指定例については，「19.3.4　HAモニタの環境設定」の「(5)　各ファイルの指定例（系のリセットを使用する場合）」の「(b)　serversファイルの指定例」を参照してください。

メモ

コールドスタンバイ構成を終了してから，serversファイルのオペランドの指定値を変更してください。コールドスタンバイ構成の終了方法については，「19.4.2　コールドスタンバイ構成の終了方法」を参照してください。

19.19.4　JP1/Audit Management - Managerとの連携（コールドスタンバイ構成の場合）

JP1/Auditと連携して，監査証跡を収集および一元管理する場合は，adbconvertaudittrailfileコマンドで監査証跡を変換し，統一フォーマット用監査証跡ファイルに出力してください。監査証跡の変換については，「2.18.9　監査証跡の変換（JP1/Audit Management - Managerとの連携）」を参照してください。

■統一フォーマット用監査証跡の出力先ディレクトリを作成するファイルシステムの構築

統一フォーマット用監査証跡の出力先ディレクトリを作成するファイルシステムは，系ローカルのファイルシステムとして構築してください。

■JP1/Auditの環境設定

adbconvertaudittrailfileコマンドを実行するすべての系に対して，JP1/Auditの環境設定を行ってください。

JP1/Auditの環境設定については，「12.8.3　監査証跡機能とJP1/Auditを連携する際の環境設定」の「(2)　JP1/Auditの環境設定」を参照してください。また，adbconvertaudittrailfileコマンドについては，マニュアルHADB　コマンドリファレンスのadbconvertaudittrailfile（監査証跡ファイルの変換）を参照してください。

なお，JP1/Baseをクラスタ環境として構築する必要はありません。

19.20　コールドスタンバイ構成でDBエリア暗号化機能を使用する場合の運用

ここでは，コールドスタンバイ構成でDBエリア暗号化機能を使用する際の環境設定および運用方法に関する留意事項について説明します。DBエリア暗号化機能の環境設定および運用方法については，「13.　DBエリア暗号化機能の運用」を参照してください。

19.20.1　DBエリア暗号化機能の環境設定をする場合

DBエリア暗号化機能の環境設定をする際の留意事項を説明します。

(1)　HADB暗号鍵ファイルの保存先ディレクトリの作成

HADB暗号鍵ファイルの保存先ディレクトリは，実行系と待機系の両方に作成してください。HADB暗号鍵ファイルの保存先ディレクトリの作成方法については，「13.1.1　HADBサーバを新規導入する場合」の「(2)　HADB暗号鍵ファイルの保存先ディレクトリの作成」を参照してください。

(2)　待機系へのHADB暗号鍵ファイルの配布

実行系でadbinitコマンドを実行した際に作成されるHADB暗号鍵ファイルを待機系に配布し，パーミッションを設定してください。

＜ここの操作説明の前提条件＞

HADB暗号鍵ファイルの保存先ディレクトリとして，/HADB/.cryptoが作成されている。

HADB暗号鍵ファイルとして，adb_dmkeyが作成されている。

手順

実行系で作成したHADB暗号鍵ファイルを待機系に配布する

待機系に作成したHADB暗号鍵ファイルの保存先ディレクトリ下にHADB暗号鍵ファイルを保存してください。

この操作は，HADB管理者で実行してください。

待機系に配布したHADB暗号鍵ファイルのパーミッションを設定する

1.で保存したHADB暗号鍵ファイルのパーミッションを400に設定してください。

次のコマンドをHADB管理者で実行してください。

chmod 400 /HADB/.crypto/adb_dmkey

待機系のサーバ定義を変更する

待機系のサーバ定義にadb_crypto_dmkey_pathオペランドを指定してください。

メモ

配布作業はユーザが責任を持って実施してください。待機系にHADB暗号鍵ファイルを配布しなかったり，上記のオペランドを指定しなかったりした場合は，系切り替えがエラーになります。

(3)　HADB暗号鍵利用パスワードファイルの作成

コールドスタンバイ構成でDBエリア暗号化機能を使用する場合，実行系と待機系でHADB暗号鍵利用パスワードを記入したHADB暗号鍵利用パスワードファイルを作成し，作成したHADB暗号鍵利用パスワードファイルを公開鍵で暗号化してください。手順を次に示します。

＜ここの操作説明の前提条件＞

HADB暗号鍵ファイルの保存先ディレクトリとして，/HADB/.cryptoが作成されている。

手順

次のすべての操作は，HADB管理者で実行してください。

HADB暗号鍵利用パスワードファイルを作成する

テキストエディタを開いてHADB暗号鍵利用パスワードを入力し，HADB暗号鍵ファイルの保存先ディレクトリ下にファイルを保存してください。このファイルが，HADB暗号鍵利用パスワードファイルになります。

ここでは，HADB暗号鍵利用パスワードファイルとして，/HADB/.crypto/passwdfileを作成したとします。

メモ

HADB暗号鍵利用パスワードファイルには，HADB暗号鍵利用パスワード以外の文字列を入力しないでください。

HADB暗号鍵利用パスワードファイルには，任意のファイル名を指定できます。passwdfile以外でもかまいません。

秘密鍵ファイルを作成する

OpenSSLのコマンドを実行して，HADB暗号鍵ファイルの保存先ディレクトリ下に秘密鍵ファイルprivate.keyを作成してください。

openssl genrsa -out /HADB/.crypto/private.key 4096

上記のコマンドを実行すると，RSA暗号方式の鍵長4,096ビットの秘密鍵ファイル/HADB/.crypto/private.keyが作成されます。

メモ

秘密鍵ファイルには，任意のファイル名を指定できます。private.key以外でもかまいません。

鍵長は4,096ビットにしてください。

秘密鍵ファイルには，パスフレーズを設定しないでください。

OpenSSLのコマンドの詳細については，OpenSSLのドキュメントを参照してください。

秘密鍵ファイルに対する読み取り権限をHADB管理者にだけ設定する

chmod 400 /HADB/.crypto/private.key

公開鍵ファイルを作成する

OpenSSLのコマンドを実行して，公開鍵ファイルpublic.keyを作成してください。

openssl rsa -pubout -in /HADB/.crypto/private.key -out /HADB/public.key

上記のコマンドを実行すると，秘密鍵ファイル（/HADB/.crypto/private.key）に対応した公開鍵ファイル（/HADB/public.key）が作成されます。

メモ

2.で作成した秘密鍵ファイルを指定してください。

公開鍵ファイルには，任意のファイル名を指定できます。/HADB/public.key以外でもかまいません。

HADB暗号鍵利用パスワードファイルを暗号化する

OpenSSLのコマンドを実行して，HADB暗号鍵利用パスワードファイルを暗号化してください。

openssl rsautl -encrypt -pubin -inkey /HADB/public.key -in /HADB/.crypto/passwdfile -out /HADB/.crypto/encrypted_passwdfile

上記のコマンドを実行すると，公開鍵ファイル（/HADB/public.key）でHADB暗号鍵利用パスワードファイル（/HADB/.crypto/passwdfile）が暗号化されます。また，暗号化されたHADB暗号鍵利用パスワードファイルとして，/HADB/.crypto/encrypted_passwdfileが作成されます。

メモ

4.で作成した公開鍵ファイルを指定してください。

暗号化されたHADB暗号鍵利用パスワードファイルには，任意のファイル名を指定できます。encrypted_passwdfile以外でもかまいません。

暗号化されたHADB暗号鍵利用パスワードファイルに対する読み取り権限をHADB管理者にだけ設定する

chmod 400 /HADB/.crypto/encrypted_passwdfile

HADB暗号鍵利用パスワードファイルを削除する

HADB暗号鍵利用パスワードの漏えいを防ぐために，HADB暗号鍵利用パスワードファイル（/HADB/.crypto/passwdfile）をすぐに削除してください。

メモ

HAモニタのserversファイルのactcommandオペランドに指定する，サーバの起動コマンドから参照できるように，HADBサーバの開始時に指定するHADB暗号鍵利用パスワードを記入したHADB暗号鍵利用パスワードファイルを事前に作成しておく必要があります。

HADB暗号鍵利用パスワードが漏えいしないように，HADB暗号鍵利用パスワードファイルに適切なパーミッションを設定し，HADB暗号鍵利用パスワードファイルを暗号化する必要があります。

(4)　コマンド用環境変数定義の修正

コマンド用環境変数定義に次の環境変数を追加してください。コマンド用環境変数定義については，「19.3.4　HAモニタの環境設定」の「(4)　コマンド用環境変数定義およびコマンドの作成」の「(a)　コマンド用環境変数定義の作成」を参照してください。

環境変数ADBCRYPTOFILE

「(3)　HADB暗号鍵利用パスワードファイルの作成」で暗号化したHADB暗号鍵利用パスワードファイルの絶対パスを指定してください。

環境変数ADBPRIVKEY

「(3)　HADB暗号鍵利用パスワードファイルの作成」で作成した秘密鍵ファイルの絶対パスを指定してください。

＜コマンド用環境変数定義の修正例＞

#!/bin/sh

# The environment variables for HADB
export ADBMGR=adbmanager
export ADBDIR=/HADB/server
export ADBINFODIR=/HADB/adbinfo
export ADBCRYPTOFILE=/HADB/.crypto/encrypted_passwdfile     ...1
export ADBPRIVKEY=/HADB/.crypto/private.key                 ...2

［説明］

上記の下線部分を追加してください。

暗号化したHADB暗号鍵利用パスワードファイルの絶対パスを指定してください。

暗号化したHADB暗号鍵利用パスワードファイルを復号する際に使用する秘密鍵ファイルの絶対パスを指定してください。

メモ

上記の環境変数を追加しなかった場合，HADBサーバの開始や，系切り替えがエラーになります。

(5)　サーバの起動コマンドの修正

サーバの起動コマンドを修正してください。サーバの起動コマンドについては，「19.3.4　HAモニタの環境設定」の「(4)　コマンド用環境変数定義およびコマンドの作成」の「(b)　サーバの起動コマンドの作成」を参照してください。

＜サーバの起動コマンドの修正例＞

#!/bin/sh

# Sample of the actcommand for HADB

STS_ABORT="ABORT"

SU=/bin/su
ECHO=/bin/echo
GREP=/bin/grep
AWK=/bin/awk

# Setting environment variables for HADB
source /HADB/scripts/coldstandby.env             ...1

if [ "$ADBCRYPTOFILE" != "" -a "$ADBPRIVKEY" != "" ]
then
  # Decrypt HADB encryption key usage password file
  DECRYPTED_PASSWD=`openssl rsautl -decrypt -inkey "$ADBPRIVKEY" -in "$ADBCRYPTOFILE"` ...2

  GET_STS=`$SU - $ADBMGR -c "'$ADBDIR'/bin/adbls -d srv 2>/dev/null" | $GREP -v SVID | $AWK '{ if ($1 ~ /[0-9]+/) { print $2 } else { print $1 } }'`

  # Execute adbstart command
  if [ "$GET_STS" != "$STS_ABORT" ]
  then
    $SU - $ADBMGR -c "$ECHO $DECRYPTED_PASSWD | '$ADBDIR'/bin/adbstart"
  else
    $SU - $ADBMGR -c "$ECHO -e 'y¥n'$DECRYPTED_PASSWD | '$ADBDIR'/bin/adbstart"
  fi

  # Clear decrypted HADB encryption key password
  DECRYPTED_PASSWD=$RANDOM
else
  # Execute adbstart command
  $SU - $ADBMGR -c "$ECHO y | '$ADBDIR'/bin/adbstart"
fi

# always 0 return
exit 0

［説明］

上記の下線部分を追加してください。

source文には，コマンド用環境変数定義ファイルの絶対パス/HADB/scripts/coldstandby.envを指定します。

暗号化されたHADB暗号鍵利用パスワードファイルを秘密鍵で復号し，HADB暗号鍵利用パスワードを取得するための指定です。

19.20.2　HADB暗号鍵を更新する場合

HADB暗号鍵の更新手順を次に示します。

手順

実行系でHADB暗号鍵を更新する

更新手順については，「13.8　HADB暗号鍵を更新する場合」を参照してください。

HADB暗号鍵ファイルを待機系に配布する

実行系で新規に作成したHADB暗号鍵ファイルを，待機系のHADB暗号鍵ファイルの保存先ディレクトリ下に保存してください。

この操作は，HADB管理者で実行してください。

待機系に配布したHADB暗号鍵ファイルのパーミッションを設定する

2.で保存したHADB暗号鍵ファイルのパーミッションを400に設定してください。

次のコマンドをHADB管理者で実行してください。

chmod 400 /HADB/.crypto/adb_dmkey

メモ

配布作業はユーザが責任を持って実施してください。待機系に適切にHADB暗号鍵ファイルが配布されていない場合，系切り替えがエラーになります。

実行系と待機系のHADB暗号鍵利用パスワードファイルを変更する

新しいHADB暗号鍵利用パスワードを入力したHADB暗号鍵利用パスワードファイルを作成し，HADB暗号鍵利用パスワードファイルを暗号化してください。手順については，「19.20.1　DBエリア暗号化機能の環境設定をする場合」の「(3)　HADB暗号鍵利用パスワードファイルの作成」を参照してください。

待機系のサーバ定義を変更する

待機系のサーバ定義のadb_crypto_dmkey_pathオペランドに指定しているHADB暗号鍵ファイルのパスを変更してください。

19.21　コールドスタンバイ構成で更新行のカラム化機能を使用する場合の運用

更新行のカラム化機能については，「11.21　更新行のカラム化機能の運用（カラムストア表の検索性能の維持）」を参照してください。ここでは，コールドスタンバイ構成で更新行のカラム化機能を使用する場合の留意事項について説明します。

系が切り替わったあとも，更新行のカラム化機能の状態（有効または無効）は引き継がれます。

更新行のカラム化機能の有効時に系切り替えが発生した場合，系切り替えが完了したあとにメンテナンス処理が実行されます。

更新行のカラム化機能に関するエラーの対処をしないで，更新行のカラム化機能を有効な状態のままにしておくと，系切り替えが完了したあとに実行されるメンテナンス処理がエラーとなり，エラーメッセージが出力されます。

メンテナンス処理が24時間実行されない状態が続くと，KFAA51277-Iメッセージが出力されますが，系切り替えが発生すると，時間経過の監視がリセットされます。そのため，系切り替えの完了後，メンテナンス処理が実行されない状態がさらに24時間続いたときにKFAA51277-Iメッセージが出力されます。

系の切り替え時，新たに実行系になる系で更新行のカラム化機能で使用するファイルの入出力制御の開始処理が行われます。この処理に失敗した場合，系切り替えが完了したあとに実行されるメンテナンス処理がエラーになります。

19.22　AWS環境でのコールドスタンバイ構成の運用

ここでは，AWS環境でのコールドスタンバイ構成の運用について説明します。

19.22.1　AWS環境でコールドスタンバイ構成を使用する場合の留意事項

「19.1　この章を読む際の留意事項」～「19.21　コールドスタンバイ構成で更新行のカラム化機能を使用する場合の運用」は，オンプレミス環境およびAWS環境共通の説明です。「19.22　AWS環境でのコールドスタンバイ構成の運用」では，AWS環境でコールドスタンバイ構成を使用する際の固有の運用を説明しています。

AWS環境の場合，系の切り替え方法は次の2つのうちのどちらかを選択できます。

系のリセットによる系切り替え

ネットワーク遮断による系切り替え

上記2つの方法については，マニュアルHAモニタパブリッククラウド編の【AWS】系障害時の系切り替えを参照してください。

上記の各方法を適用した際に必要なAWSの構成については，マニュアルHAモニタパブリッククラウド編のシステムの構築の構築の流れの系のリセットまたはネットワーク遮断をする場合を参照してください。

HADBのマニュアルでは，EC2インスタンスをインスタンスと表記しています。

HADBのマニュアルを読む際，サーバマシンはインスタンスと読み替えてください。

AWS環境でコールドスタンバイ構成を構築する場合，クラウドストレージ機能を使用するかどうかによってシステム構成が異なります。また，システムの構築方法と運用方法の一部も異なります。クラウドストレージ機能については，「2.21.2　AWS環境でHADBサーバを使用する場合」の「(2)　Amazon S3にDBエリアのデータを格納する場合（クラウドストレージ機能を使用する場合）」の「(a)　クラウドストレージ機能とは」を参照してください。

19.22.2　システム構成例（クラウドストレージ機能を使用する場合）

AWS環境でのコールドスタンバイ構成例（クラウドストレージ機能を使用する場合）を次の図に示します。

図19‒6　AWS環境でのコールドスタンバイ構成例（クラウドストレージ機能を使用する場合）

注※

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合，システムログファイルおよびステータスファイルのデータもS3バケット（BKT001）に格納されます。

メモ

クラウドストレージ機能を使用しない場合は，複数のサーバ間のハードディスク（ブロックデバイス）を複製するソフトウェアのDRBDが必要になりますが，クラウドストレージ機能を使用する場合は，次の理由によってDRBDが不要になります。

DBエリア（作業表用DBエリアを除く）のデータがS3バケット内のS3オブジェクトに格納されていて，異なるアベイラビリティゾーンで起動しているインスタンスから同時にアクセスできるため

系切り替え対象のファイルシステムを作成したEFSをHAモニタの共有ディスクとして扱えるため

(1)　前提OSおよび前提ソフトウェア

AWS環境でのコールドスタンバイ構成の場合，実行系と待機系には次のOSおよびソフトウェアが必要になります。

RHEL 8またはRHEL 9

　クラウドストレージ機能を使用する場合，上記のOSが必要になります。

HAモニタ 01-78以降

HADBでは，HAモニタのモニタモードの機能を使用し，実行系の障害を監視しています。実行系で障害が発生した場合，HAモニタの系切り替え機能を使用して，待機系に系切り替えをします。

実行系と待機系にインストールするHAモニタのバージョンは同じにしてください。

なお，RHEL 10では，AWS環境でコールドスタンバイ構成は構築できません。

(2)　サーバ構成

「図19‒6　AWS環境でのコールドスタンバイ構成例（クラウドストレージ機能を使用する場合）」で示す構成例の場合，別々のアベイラビリティゾーンにインスタンスを1つずつ合計2つ用意し，各インスタンスにHADBサーバをインストールしています。各HADBサーバは，2つの系（hadb01およびhadb02）で構成され，実行系はhadb01，待機系はhadb02になります。

実行系と待機系のインスタンスの性能（CPU，メモリサイズなど）は同じである必要はありません。ただし，インスタンスの性能が異なる場合，系が切り替わったあとにSQL文の処理性能に差異が発生するおそれがあります。そのため，できる限り実行系と待機系のインスタンスの性能を同じにすることを推奨します。

メモ

以降の説明は，全インスタンスでインスタンスタイプr5b.2xlargeを使用していることを前提としています。

(3)　ネットワーク構成

AWS環境でのコールドスタンバイ構成の場合，次に示すネットワークを使用します。

クライアント−サーバ間ネットワーク

監視パス

AWSエンドポイントへのネットワーク

EFSアクセス用ネットワーク

■クライアント−サーバ間ネットワーク

HADBクライアントとHADBサーバ間の通信で使用するネットワークです。

HADBクライアントは，エイリアスIPアドレスを使用してHADBサーバに接続します。そのため，マニュアルHAモニタパブリッククラウド編の【AWS】リソースの引き継ぎを参照して，エイリアスIPアドレスを設定してください。

「図19‒6　AWS環境でのコールドスタンバイ構成例（クラウドストレージ機能を使用する場合）」でのIPアドレス，およびポート番号の設定例を次の表に示します。

表19‒10　クライアント−サーバ間ネットワークのIPアドレスとポート番号の設定例

項番

設定対象

IPアドレス

ポート番号

1

クライアントマシン

10.196.108.111

設定不要

2

サーバマシンhadb01（実行系）

10.196.108.11

23650

3

サーバマシンhadb02（待機系）

10.196.108.12

23650

4

エイリアスIPアドレス

10.196.108.143

23650

■監視パス

HAモニタの監視パスとして使用するネットワークです。

ネットワーク構築をする際，複線にする必要がある場合は，LinuxのBonding機能を使用してください。

Bonding機能の詳細については，OSのマニュアルを参照してください。HAモニタの監視パスの設定については，マニュアルHAモニタパブリッククラウド編の監視パスの設定を参照してください。

「図19‒6　AWS環境でのコールドスタンバイ構成例（クラウドストレージ機能を使用する場合）」でのIPアドレス，およびポート番号の設定例を次の表に示します。

表19‒11　監視パスのIPアドレスとポート番号の設定例

項番

設定対象

IPアドレス

ポート番号

1

サーバマシンhadb01（実行系）のHAモニタの監視パス

172.16.0.11

7777

2

サーバマシンhadb02（待機系）のHAモニタの監視パス

172.16.0.12

7777

■AWSエンドポイントへのネットワーク

AWS環境の場合，HAモニタは系（インスタンス）のリセットを，AWSのエンドポイントに障害が発生した系のインスタンスの強制停止を指示することで実現しています。そのため，AWSのエンドポイントへの接続が必要となります。詳細については，マニュアルHAモニタパブリッククラウド編の【AWS】AWSの設定を参照してください。

■EFSアクセス用ネットワーク

系切り替え対象のファイルシステムとして使用するEFSにアクセスする際に使用するネットワークです。

EFSを使用した共有ディスク構成にする際のEFSの設定については，マニュアルHAモニタパブリッククラウド編のEFSの設定を参照してください。

「図19‒6　AWS環境でのコールドスタンバイ構成例（クラウドストレージ機能を使用する場合）」でのIPアドレス，およびポート番号の設定例を次の表に示します。

表19‒12　EFSアクセス用ネットワークのIPアドレスとポート番号の設定例

項番

設定対象

IPアドレス

ポート番号

1

サーバマシンhadb01（実行系）

172.16.0.21

2049

2

サーバマシンhadb02（待機系）

172.16.0.22

2049

(4)　ストレージ構成

AWS環境でのコールドスタンバイ構成の場合，次のファイルシステム，ディスク，およびS3バケットを準備してください。

系ローカルのファイルシステム

「図19‒6　AWS環境でのコールドスタンバイ構成例（クラウドストレージ機能を使用する場合）」の場合，LOC011～LOC021，およびCCH011～CCH021が該当します。

系切り替え対象のファイルシステム

「図19‒6　AWS環境でのコールドスタンバイ構成例（クラウドストレージ機能を使用する場合）」の場合，FS001～FS003が該当します。

系ローカルのディスク（作業表用DBエリア用）

「図19‒6　AWS環境でのコールドスタンバイ構成例（クラウドストレージ機能を使用する場合）」の場合，WRK011およびWRK021が該当します。

S3バケット（作業表用DBエリアを除くDBエリア用）

「図19‒6　AWS環境でのコールドスタンバイ構成例（クラウドストレージ機能を使用する場合）」の場合，BKT001が該当します。

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合，システムログファイルおよびステータスファイルのデータもS3バケット（BKT001）に格納されます。

「図19‒6　AWS環境でのコールドスタンバイ構成例（クラウドストレージ機能を使用する場合）」の場合，次の表に示すファイルシステム，ディスク，およびS3バケットを準備してください。

表19‒13　ストレージ構成の例

項番

格納先

名称

対象インスタンス

用途

1

EBS(gp2)

LOC011

サーバマシンhadb01（実行系）

系ローカルのファイルシステム

2

LOC021

サーバマシンhadb02（待機系）

3

EBS(gp3)

CCH011

サーバマシンhadb01（実行系）

系ローカルのファイルシステム（キャッシュファイル用）

4

CCH021

サーバマシンhadb02（待機系）

5

WRK011

サーバマシンhadb01（実行系）

系ローカルのディスク（作業表用DBエリア用）

6

WRK021

サーバマシンhadb02（待機系）

7

Amazon S3

BKT001

サーバマシンhadb01（実行系）

サーバマシンhadb02（待機系）

S3バケット（作業表用DBエリアを除くDBエリア用）※

8

EFS

FS001～FS003

サーバマシンhadb01（実行系）

サーバマシンhadb02（待機系）

系切り替え対象のファイルシステム

9

－

－

共有ファイルシステム

注※

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合，システムログファイルおよびステータスファイルのデータもS3バケット（BKT001）に格納されます。

（凡例）

－：該当しません。

■EBS(gp2)の使い方

EBS(gp2)は，系ローカルのファイルシステムとして使用します。各インスタンスのOS用の領域（ルートボリューム）として使用するEBS(gp2)上のファイルシステム（/home下など）に，次のディレクトリを作成します。

サーバディレクトリ

統一フォーマット用監査証跡の出力先ディレクトリ（監査証跡機能を使用する場合に必要）

■EBS(gp3)の使い方

EBS(gp3)は，次のファイルシステムおよびディスクとして使用します。

系ローカルのファイルシステム（キャッシュファイル用）

キャッシュファイルの格納先とするファイルシステムをEBS(gp3)上にインスタンスごとに作成してください。

ここでは，このファイルシステムのマウントポイントを/HADB/ADBCCHとします。

重要

このファイルシステムは，キャッシュファイルの格納先ディレクトリを配置する以外の用途には使用しないでください。

系ローカルのディスク（作業表用DBエリア用）

作業表用DBエリア（ADBWRK）を構成するディスクであるWRK011およびWRK021を，実行系および待機系のそれぞれに用意します。

■Amazon S3の使い方

次のDBエリアのデータを格納するS3オブジェクトの格納先となるS3バケットを用意します。

データ用DBエリア

マスタディレクトリ用DBエリア

ディクショナリ用DBエリア

システム表用DBエリア

なお，クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合，次のファイルのデータを格納するS3オブジェクトもS3バケットに格納されます。

システムログファイル

ステータスファイル

■EFSの使い方

EFSには次のファイルシステムを配置します。

系切り替え対象のファイルシステム

次の3つの系切り替え対象のファイルシステムを，実行系および待機系から参照できるようにEFS上に作成してください。

DBディレクトリ用のファイルシステム

作業用一時ファイルを格納するファイルシステム※

監査証跡ファイルを出力するファイルシステム（監査証跡機能を使用する場合に必要）

注※

作業用一時ファイルを格納するファイルシステムを系切り替え対象としない場合は，実行系と待機系のそれぞれの系ローカルのファイルシステム上に作業用一時ファイルの格納先を用意してください。

系切り替え対象のファイルシステムを作成する際は，マニュアルHAモニタパブリッククラウド編のEFSの設定を参照してください。

共有ファイルシステム

全インスタンスでNFSとして使用できるEFSに，次のファイルシステムを配置します。

データインポートで使用する入力データファイルを格納するファイルシステム

ADB_CSVREAD関数で使用するCSVファイルを格納するファイルシステム（ADB_CSVREAD関数を使用した検索をする場合に必要）

監査証跡の保存先ディレクトリを作成するファイルシステム（監査証跡機能を使用する場合に必要）

外部データファイルを格納するファイルシステム（ファイルストレージに外部データを格納している場合）

実行系と待機系で，同じパスのディレクトリにマウントしてください。

19.22.3　システム構成例（クラウドストレージ機能を使用しない場合）

AWS環境でのコールドスタンバイ構成例（クラウドストレージ機能を使用しない場合）を次の図に示します。

図19‒7　AWS環境でのコールドスタンバイ構成例（クラウドストレージ機能を使用しない場合）

(1)　前提ソフトウェア

AWS環境でのコールドスタンバイ構成の場合，実行系と待機系には次のソフトウェアが必要になります。

HAモニタ

HADBでは，HAモニタのモニタモードの機能を使用し，実行系の障害を監視しています。実行系で障害が発生した場合，HAモニタの系切り替え機能を使用して，待機系に系切り替えをします。

HAモニタの前提バージョンは，HADBサーバのOSがRHEL 8の場合は01-75以降です。HADBサーバのOSがRHEL 9の場合は01-78以降です。

実行系と待機系にインストールするHAモニタのバージョンは同じにしてください。

DRBD バージョン9以降

ネットワークを通じて，複数のサーバ間のハードディスク（ブロックデバイス）を複製するソフトウェア（OSS）です。

AWS環境でのコールドスタンバイ構成の場合，別々のアベイラビリティゾーンに実行系と待機系のインスタンスを用意します。このため，データベースを各系で保持し，レプリケートして内容を同期させる構成（HAモニタでのレプリケーション構成）にする必要があります。そのため，インスタンス間でのデータベースのレプリケーションにDRBDを使用します。

なお，RHEL 10では，AWS環境でコールドスタンバイ構成は構築できません。

(2)　サーバ構成

「図19‒7　AWS環境でのコールドスタンバイ構成例（クラウドストレージ機能を使用しない場合）」で示す構成例の場合，別々のアベイラビリティゾーンにインスタンスを1つずつ合計2つ用意し，各インスタンスにHADBサーバを1つずつ配置します。各HADBサーバは，2つの系（hadb01およびhadb02）で構成され，実行系はhadb01，待機系はhadb02になります。

各インスタンスの性能（CPU，メモリサイズなど）は同じである必要はありません。ただし，インスタンスの性能が異なる場合，系が切り替わったあとにSQL文の処理性能に差異が発生するおそれがあります。そのため，できる限り実行系と待機系のインスタンスの性能を同じにすることを推奨します。

メモ

ここでの説明は，全インスタンスでインスタンスタイプr5b.xlargeを使用していることを前提としています。

(3)　ネットワーク構成

AWS環境でのコールドスタンバイ構成の場合，次に示す4つのネットワークを使用します。

クライアント−サーバ間ネットワーク

監視パス

AWSエンドポイントへのネットワーク

ディスクレプリケーションパス（DRBD用ネットワーク）

■クライアント−サーバ間ネットワーク

HADBクライアントとHADBサーバ間の通信で使用するネットワークです。

HADBクライアントは，エイリアスIPアドレスを使用してHADBサーバに接続します。そのため，マニュアルHAモニタパブリッククラウド編の【AWS】リソースの引き継ぎを参照して，エイリアスIPアドレスを設定してください。

「図19‒7　AWS環境でのコールドスタンバイ構成例（クラウドストレージ機能を使用しない場合）」でのIPアドレス，およびポート番号の設定例を次の表に示します。

表19‒14　クライアント−サーバ間ネットワークのIPアドレスとポート番号の設定例

項番

設定対象

IPアドレス

ポート番号

1

クライアントマシン

10.196.108.111

設定不要

2

サーバマシンhadb01（実行系）

10.196.108.11

23650

3

サーバマシンhadb02（待機系）

10.196.108.12

23650

4

エイリアスIPアドレス

10.196.108.143

23650

■監視パス

HAモニタの監視パスとして使用するネットワークです。

ネットワーク構築をする際，複線にする必要がある場合は，LinuxのBonding機能を使用してください。

Bonding機能の詳細については，OSのマニュアルを参照してください。HAモニタの監視パスの設定については，マニュアルHAモニタパブリッククラウド編の監視パスの設定を参照してください。

「図19‒7　AWS環境でのコールドスタンバイ構成例（クラウドストレージ機能を使用しない場合）」でのIPアドレス，およびポート番号の設定例を次の表に示します。

表19‒15　監視パスのIPアドレスとポート番号の設定例

項番

設定対象

IPアドレス

ポート番号

1

サーバマシンhadb01（実行系）のHAモニタの監視パス

172.16.0.11

7777

2

サーバマシンhadb02（待機系）のHAモニタの監視パス

172.16.0.12

7777

■AWSエンドポイントへのネットワーク

AWS環境の場合，HAモニタは系（インスタンス）のリセットを，AWSのエンドポイントに障害が発生した系のインスタンスの強制停止を指示することで実現しています。そのため，AWSのエンドポイントへの接続が必要となります。詳細については，マニュアルHAモニタパブリッククラウド編の【AWS】AWSの設定を参照してください。

■ディスクレプリケーションパス（DRBD用ネットワーク）

DRBDのデータベースの複製で使用するネットワークです。

ディスクレプリケーションパスの設定については，マニュアルHAモニタパブリッククラウド編の【AWS】【Azure】レプリケーションソフト（DRBD）の設定を参照してください。

「図19‒7　AWS環境でのコールドスタンバイ構成例（クラウドストレージ機能を使用しない場合）」でのIPアドレス，およびポート番号の設定例を次の表に示します。

表19‒16　ディスクレプリケーションパスのIPアドレスとポート番号の設定例

項番

設定対象

IPアドレス

ポート番号

1

サーバマシンhadb01（実行系）のディスクレプリケーションパス

172.16.0.21

7789

2

サーバマシンhadb02（待機系）のディスクレプリケーションパス

172.16.0.22

7789

(4)　ストレージ構成

AWS環境でのコールドスタンバイ構成の場合，次のファイルシステムおよびディスクを準備してください。

系ローカルのファイルシステム

「図19‒7　AWS環境でのコールドスタンバイ構成例（クラウドストレージ機能を使用しない場合）」の場合，LOC011～LOC021が該当します。

系切り替え対象のファイルシステム

「図19‒7　AWS環境でのコールドスタンバイ構成例（クラウドストレージ機能を使用しない場合）」の場合，FS011〜FS014，およびFS021〜FS024が該当します。

DBエリアファイル用のディスク

「図19‒7　AWS環境でのコールドスタンバイ構成例（クラウドストレージ機能を使用しない場合）」の場合，LU011〜LU015，LU021〜LU025，WRK011およびWRK021が該当します。

「図19‒7　AWS環境でのコールドスタンバイ構成例（クラウドストレージ機能を使用しない場合）」の場合，次の表に示すファイルシステムおよびディスクを，各インスタンスのそれぞれのストレージに準備してください。

表19‒17　ストレージ構成の例

項番

格納先

名称

対象インスタンス

用途

1

EBS(gp2)

LOC011

サーバマシンhadb01（実行系）

系ローカルのファイルシステム

2

LOC021

サーバマシンhadb02（待機系）

3

EBS(gp3)

FS011～FS014

サーバマシンhadb01（実行系）

系切り替え対象のファイルシステム

4

FS021～FS024

サーバマシンhadb02（待機系）

5

LU011～LU015

サーバマシンhadb01（実行系）

DBエリアファイル用のディスク

6

LU021～LU025

サーバマシンhadb02（待機系）

7

WRK011

サーバマシンhadb01（実行系）

作業表用DBエリアファイル用のディスク

8

WRK021

サーバマシンhadb02（待機系）

9

EFS

－

－

共有ファイルシステム

（凡例）

－：該当しません。

■EBS(gp2)の使い方

EBS(gp2)は，系ローカルのファイルシステムとして使用します。各インスタンスのOS用の領域（ルートボリューム）として使用するEBS(gp2)上のファイルシステム（/home下など）に，次のディレクトリを作成します。

サーバディレクトリ

統一フォーマット用監査証跡の出力先ディレクトリ（監査証跡機能を使用する場合に必要）

■EBS(gp3)の使い方

EBS(gp3)は，系切り替え対象のファイルシステム，およびDBエリアファイル用のディスクとして使用します。

系切り替え対象のファイルシステム

次の4つの系切り替え対象のファイルシステムを実行系および待機系の両方に作成してください。

DBディレクトリ用のファイルシステム

作業用一時ファイルを格納するファイルシステム※

同義語辞書の同義語辞書ファイルを格納するファイルシステム（同義語検索を使用する場合に必要）

監査証跡ファイルを出力するファイルシステム（監査証跡機能を使用する場合に必要）

注※

作業用一時ファイルを格納するファイルシステムを系切り替え対象としない場合は，実行系と待機系のそれぞれの系ローカルのファイルシステム上に作業用一時ファイルの格納先を用意してください。

系切り替え対象の各ファイルシステムのVG名称，およびLV名称は次のようになります。

FS011およびFS021（DBディレクトリ用のファイルシステム）

VGの名称：vg_hadb01

LVの名称：hadb_db

FS012およびFS022（作業用一時ファイルを格納するファイルシステム）

VGの名称：vg_hadb02

LVの名称：hadb_workarea

FS013およびFS023（同義語辞書の同義語辞書ファイルを格納するファイルシステム）

VGの名称：vg_hadb03

LVの名称：hadb_syndict

FS014およびFS024（監査証跡ファイルを出力するファイルシステム）

VGの名称：vg_hadb04

LVの名称：hadb_audit

上記のファイルシステムを作成するLVは，次の手順で作成してください。

FS011～FS014，およびFS021～FS024は，同じ内容となるように常時同期させる必要があるため，ファイルシステムごとに準備したEBS(gp3)を下位デバイスとしてDRBD論理デバイスを定義してください。

1.のDRBD論理デバイスをPVとして，VGを作成してください。

2.のVG内にLVを作成してください。

DBエリアファイル用のディスク

実行系および待機系の両方に，次のDBエリアごとにEBS(gp3)を準備します。

マスタディレクトリ用DBエリア（LU011，LU021）

ディクショナリ用DBエリア（LU012，LU022）

システム表用DBエリア（LU013，LU023）

データ用DBエリア（LU014，LU015，LU024，LU025）

LU011～LU015，およびLU021～LU025は，同じ内容となるように常時同期させる必要があるため，LU011～LU015，およびLU021～LU025を下位デバイスとしたDRBD論理デバイスを定義してください。

また，作業表用DBエリアADBWRKを構成するディスクであるWRK011とWRK021用に，実行系および待機系の両方にEBS(gp3)を用意します。ただし，WRK011とWRK021は，DRBDで同期させる必要はありません。

■EFSの使い方

全インスタンスでNFSとして使用できるEFSに，次のファイルシステムを配置します。

データインポートで使用する入力データファイルを格納するファイルシステム

ADB_CSVREAD関数で使用するCSVファイルを格納するファイルシステム（ADB_CSVREAD関数を使用した検索をする場合に必要）

監査証跡の保存先ディレクトリを作成するファイルシステム（監査証跡機能を使用する場合に必要）

外部データファイルを格納するファイルシステム（ファイルストレージに外部データを格納している場合）

実行系と待機系で，同じパスのディレクトリにマウントしてください。

19.22.4　コールドスタンバイ構成の構築（AWS環境の場合）

AWS環境でのコールドスタンバイ構成の構築手順について説明します。

＜ここの操作説明の前提条件＞

クラウドストレージ機能を使用する場合

「図19‒6　AWS環境でのコールドスタンバイ構成例（クラウドストレージ機能を使用する場合）」で示すとおり，hadb01が実行系で，hadb02が待機系であるとします。

クラウドストレージ機能を使用しない場合

「図19‒7　AWS環境でのコールドスタンバイ構成例（クラウドストレージ機能を使用しない場合）」で示すとおり，hadb01が実行系で，hadb02が待機系であるとします。

メモ

クラウドストレージ機能を使用する場合は，DRBDのインストールや，環境設定を実施する必要はありません。

データベースの作成手順は，クラウドストレージ機能を使用するかどうかによって異なります。次の個所のどちらか該当する方をお読みください。

・「(9)　データベースの作成（クラウドストレージ機能を使用する場合）」

・「(10)　データベースの作成（クラウドストレージ機能を使用しない場合）」

(1)　HAモニタおよびDRBDのインストール

HAモニタのインストール

実行系および待機系のインスタンスにHAモニタをインストールしてください。HAモニタのインストール方法については，マニュアルHAモニタパブリッククラウド編のシステムの構築を参照してください。

DRBDのインストール

実行系および待機系のインスタンスにDRBDをインストールしてください。DRBDのインストール方法については，DRBDのドキュメントを参照してください。

メモ

クラウドストレージ機能を使用する場合は，DRBDのインストールは不要です。

(2)　HADBサーバとHADBクライアントのインストールおよび環境設定

HADBサーバのインストールおよび環境設定

HADBサーバをインストールする前に，実行系および待機系で環境変数の設定を実施してください。

次に，実行系および待機系のインスタンスにHADBサーバをインストールし，環境設定を行ってください。HADBサーバのインストール，および環境設定については，「19.3.2　HADBサーバのインストールおよび環境設定」を参照してください。

■サーバ定義の指定について

実行系と待機系の両方のHADBサーバでサーバ定義を作成してください。

サーバ定義を指定する際は，「19.3.5　各HADBサーバでのサーバ定義の作成」を参照してください。

実行系のHADBサーバ（hadb01）のadb_blk_path_wrkオペランドには，WRK011に対応するディスクの絶対パスを指定してください。待機系のHADBサーバ（hadb02）のadb_blk_path_wrkオペランドには，WRK021に対応するディスクの絶対パスを指定してください。

（例）

set adb_blk_path_wrk = /dev/hadb_wrk

クラウドストレージ機能を使用する場合は，クラウドストレージ機能に関するオペランドを各系のサーバ定義に指定してください。クラウドストレージ機能に関するオペランドについては，「7.2.17　クラウドストレージ機能に関するオペランド（set形式）」を参照してください。

クラウドストレージ機能に関するオペランドの指定例を次に示します。

（例）

set adb_sys_cld_aws_region = ap-northeast-1
set adb_sys_cld_aws_bucket = adbbucket
set adb_sys_cld_cache_path = /HADB/ADBCCH

HADBクライアントのインストールおよび環境設定

HADBクライアントのインストール，および環境設定については，マニュアルHADB　AP開発ガイドのHADBクライアントの環境設定（ODBCドライバおよびCLI関数を使用する場合）を参照してください。

(3)　udevルールの設定

各インスタンスで使用するディスク（EBS(gp3)）のデバイス名を固定するために，実行系と待機系でudevルールを設定してください。

手順

次のすべての操作は，OSのスーパユーザで実行してください。

udevルールファイルを作成する

/etc/udev/rules.dディレクトリ下に，ディスクのデバイス名を固定するためのudevルールファイル（/etc/udev/rules.d/99-hadb.rules）を作成してください。

＜udevルールファイルの指定例＞

ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="Amazon Elastic Block Store_vol085828a5533a9cbf9", SYMLINK+="hadb_db"          ...[a]
ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="Amazon Elastic Block Store_vol0230003acd65aafcc", SYMLINK+="hadb_workarea"    ...[b]
ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="Amazon Elastic Block Store_vol08ee49cc31321bdd2", SYMLINK+="hadb_syndict"     ...[c]
ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="Amazon Elastic Block Store_vol05baed37592db7abd", SYMLINK+="hadb_audit"       ...[d]
ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="Amazon Elastic Block Store_vol0db4be9c284a04033", SYMLINK+="hadb_mst"         ...[e]
ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="Amazon Elastic Block Store_vol0efe890a19d4b2330", SYMLINK+="hadb_dic"         ...[f]
ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="Amazon Elastic Block Store_vol0431a7bfcf7388f72", SYMLINK+="hadb_stbl"        ...[g]
ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="Amazon Elastic Block Store_vol0d5ca81d622e73022", SYMLINK+="hadb_tbl01"       ...[h]
ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="Amazon Elastic Block Store_vol05405d4eea38470e7", SYMLINK+="hadb_idx01"       ...[i]
ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="Amazon Elastic Block Store_vol0863f921719651f9d", SYMLINK+="hadb_wrk"         ...[j]

［説明］

DBディレクトリ用のファイルシステムで使用するディスク（EBS(gp3)）を指定します。

作業用一時ファイルを格納するファイルシステムで使用するディスク（EBS(gp3)）を指定します。

同義語辞書ファイルを格納するファイルシステムで使用するディスク（EBS(gp3)）を指定します。

監査証跡ファイルを出力するファイルシステムで使用するディスク（EBS(gp3)）を指定します。

マスタディレクトリ用DBエリアで使用するディスク（EBS(gp3)）を指定します。

ディクショナリ用DBエリアで使用するディスク（EBS(gp3)）を指定します。

システム表用DBエリアで使用するディスク（EBS(gp3)）を指定します。

データ用DBエリア（ADBUTBL01）で使用するディスク（EBS(gp3)）を指定します。

データ用DBエリア（ADBUIDX01）で使用するディスク（EBS(gp3)）を指定します。

作業表用DBエリアで使用するディスク（EBS(gp3)）を指定します。

重要

クラウドストレージ機能を使用する場合，udevルールファイルには上記のj.だけを指定してください。

実行系と待機系のOSを再起動する

設定したudevルールを反映させるために，実行系と待機系のOSを再起動してください。

(4)　DRBDの環境設定

実行系と待機系で，DRBDの環境設定をしてください。DRBDの環境設定は，OSのスーパユーザで実施してください。

メモ

クラウドストレージ機能を使用する場合は，DRBDの環境設定は不要です。

次の表に示すブロックスペシャルファイルおよびディレクトリを，実行系と待機系で常に同期する必要があります。これらのブロックスペシャルファイル（ディレクトリの場合はそのディレクトリにマウントされているブロックスペシャルファイル）が同期対象となるようにDRBDの環境設定をしてください。

表19‒18　同期対象のファイルおよびディレクトリ

ファイル名またはディレクトリ名

種別

マスタディレクトリ用DBエリア

ブロックスペシャルファイル

ディクショナリ用DBエリア

システム表用DBエリア

データ用DBエリア

DBディレクトリ

ディレクトリ

作業用一時ファイルの格納先ディレクトリ

同義語辞書ファイルの格納ディレクトリ※1

監査証跡の出力先ディレクトリ※2

注※1

同義語検索をする場合に必要です。

注※2

監査証跡機能を使用する場合に必要です。

DRBDの設定は，DRBD設定ファイル（/etc/drbd.conf）で制御しています。基本的に2つのファイル（global_common.confファイル，リソース管理ファイル）を準備して，その2つのファイルのパスをDRBD設定ファイル（/etc/drbd.conf）に記述することが推奨されています。これらのファイルの内容は，実行系と待機系で，正確に同じである必要があります。

DRBD設定ファイル（/etc/drbd.conf）

このファイルは，DRBDの設定ファイル本体です。通常，このファイルにはglobal_common.confファイルと，拡張子が.resのファイルが読み込まれます。このファイルは，基本的に何も変更する必要はありません。

global_common.confファイル（/etc/drbd.d/global_common.conf）

このファイルには，幾つかのグローバルパラメータや，すべてのリソースで共通して使用する設定を記述します。global_common.confファイルの設定の詳細については，マニュアルHAモニタパブリッククラウド編の【AWS】【Azure】レプリケーションソフト（DRBD）の設定を参照してください。

「図19‒7　AWS環境でのコールドスタンバイ構成例（クラウドストレージ機能を使用しない場合）」の場合の，global_common.confファイルの指定例を次に示します。

global {
  usage-count no;
}
common {
  handlers {
    fence-peer "/opt/hitachi/HAmon/bin/parts/monfence-peer.sh";  ...1
  }
  options {
    auto-promote yes;                                            ...2
  }
  net {
    protocol C;                                                  ...3
    fencing resource-and-stonith;                                ...4
  }
  startup {
    wfc-timeout 30;
  }
}

［説明］

fence-peerハンドラの設定をします。

HAモニタが提供しているDRBD用のシェルスクリプトの/opt/hitachi/HAmon/bin/parts/monfence-peer.shを指定します。

自動プロモーションに，yesを指定します。

レプリケーションのモードを指定します。完全に同期したレプリケーションを使用するため，プロトコルCを指定します。

フェンシングを設定をします。resource-and-stonithを指定します。

リソース管理ファイル（/etc/drbd.d/r0.res）

リソース管理ファイルでは，複数のデバイス（LV）をまとめて1つのリソースとして定義することができます。リソース管理ファイルの設定の詳細については，DRBDのドキュメントを参照してください。

「図19‒7　AWS環境でのコールドスタンバイ構成例（クラウドストレージ機能を使用しない場合）」の場合の，リソース管理ファイルの指定例を次に示します。

resource r0 {
  volume 0 {
    device    /dev/drbd1;            ...1
    disk      /dev/hadb_db;          ...2
    meta-disk internal;              ...3
  }
  volume 1 {
    device    /dev/drbd2;
    disk      /dev/hadb_workarea;    ...4
    meta-disk internal;
  }
  volume 2 {
    device    /dev/drbd3;
    disk      /dev/hadb_syndict;     ...5
    meta-disk internal;
  }
  volume 3 {
    device    /dev/drbd4;
    disk      /dev/hadb_audit;       ...6
    meta-disk internal;
  }
  volume 4 {
    device    /dev/drbd5;
    disk      /dev/hadb_mst;         ...7
    meta-disk internal;
  }
  volume 5 {
    device    /dev/drbd6;
    disk      /dev/hadb_dic;         ...8
    meta-disk internal;
  }
  volume 6 {
    device    /dev/drbd7;
    disk      /dev/hadb_stbl;        ...9
    meta-disk internal;
  }
  volume 7 {
    device    /dev/drbd8;
    disk      /dev/hadb_tbl01;       ...10
    meta-disk internal;
  }
  volume 8 {
    device    /dev/drbd9;
    disk      /dev/hadb_idx01;       ...11
    meta-disk internal;
  }
  on hadb01 {                        ...12
    address   172.16.0.21:7789;      ...13
    node-id   0;                     ...14
  }
  on hadb02 {                        ...15
    address   172.16.0.22:7789;      ...16
    node-id   1;                     ...17
  }
}

［説明］

複製されたDRBD論理デバイスのデバイス名とマイナー番号を定義します。※

マイナー番号1から使用するため，/dev/drbd1を指定します。

DRBDが実際のデータを格納するために使用する下位デバイスを定義します。

DBディレクトリ用のファイルシステムで使用するディスク（EBS(gp3)）を指定します。

複製されたDRBD論理デバイスのメタデータを格納する場所を定義します。※

下位デバイスにデータとメタデータの両方を格納するために，internalを指定します。

下位デバイスとして，作業用一時ファイルを格納するファイルシステムで使用するディスク（EBS(gp3)）を指定します。

下位デバイスとして，同義語辞書の同義語辞書ファイルを格納するファイルシステムで使用するディスク（EBS(gp3)）を指定します。

下位デバイスとして，監査証跡ファイルを出力するファイルシステムで使用するディスク（EBS(gp3)）を指定します。

下位デバイスとして，マスタディレクトリ用DBエリアで使用するディスク（EBS(gp3)）を指定します。

下位デバイスとして，ディクショナリ用DBエリアで使用するディスク（EBS(gp3)）を指定します。

下位デバイスとして，システム表用DBエリアで使用するディスク（EBS(gp3)）を指定します。

下位デバイスとして，データ用DBエリア（ADBUTBL01）で使用するディスク（EBS(gp3)）を指定します。

下位デバイスとして，データ用DBエリア（ADBUIDX01）で使用するディスク（EBS(gp3)）を指定します。

特定のホスト上のリソースのプロパティを定義します。

DRBDノード（Linux）のホスト名（uname -nの結果）であるhadb01を指定します。

接続エンドポイントのIPアドレスおよびポート番号を定義します。

hadb01のディスクレプリケーションパスのIPアドレスである172.16.0.21とポート番号7789を指定します。

DRBDノードのノード識別子を定義します。

hadb01のDRBDのノード識別子として0を指定します。

特定のホスト上のリソースのプロパティを定義します。

DRBDノード（Linux）のホスト名（uname -nの結果）であるhadb02を指定します。

接続エンドポイントのIPアドレスおよびポート番号を定義します。

hadb02のディスクレプリケーションパスのIPアドレスである172.16.0.22とポート番号7789を指定します。

DRBDノードのノード識別子を定義します。

hadb02のDRBDのノード識別子として1を指定します。

注※

以降のvolume 1からvolume 8も同様です。各DRBD論理デバイスとストレージの関係は次のとおりです。

/dev/drbd1～/dev/drbd4

FS011～FS014（実行系），FS021～FS024（待機系）に対応するDRBD論理デバイス

/dev/drbd5～/dev/drbd9

LU011～LU015（実行系），LU021～LU025（待機系）に対応するDRBD論理デバイス

(5)　HAモニタの環境設定

実行系と待機系で，HAモニタの環境設定をしてください。

環境変数の設定

「19.3.4　HAモニタの環境設定」の「(1)　環境変数の設定」を参照してください。

sysdefファイルの指定

「19.3.4　HAモニタの環境設定」の「(2)　sysdefファイルの指定」を参照してください。

ただし，AWS環境では，次に示すオペランドの指定値が異なります。

public_cloud

useを指定します。

cpudown

standbyを指定します。

fence_reset，fence_scsi，およびfence_lan

これらのオペランドは省略してください。

fence_network

ネットワーク遮断による系切り替えをする場合は，useを指定します。

系のリセットによる系切り替えをする場合は，このオペランドを省略してください。

メモ

上記のオペランドの詳細については，マニュアルHAモニタ Linux(R)(x86)編のHAモニタの環境設定（sysdef），およびマニュアルHAモニタパブリッククラウド編のパブリッククラウド環境固有のHAモニタの環境設定を参照してください。

serversファイルの指定

■クラウドストレージ機能を使用する場合

serversファイルに指定するオペランドについては，「19.3.4　HAモニタの環境設定」の「(3)　serversファイルの指定」を参照してください。ただし，次のオペランドについては指定値が決まっています。

patrolcommand

このオペランドは省略してください。

ptrlcmd_ex

HADB用の設定を記載したサーバの監視コマンドの絶対パスを指定します。

サーバの監視コマンドはひな形を基に作成してください。作成方法については，「(6)　HAモニタの各ファイルの指定例」の「(e)　コマンド用環境変数定義ファイルおよび各コマンドファイルの指定例」，およびマニュアルHAモニタ Linux(R)(x86)編のサーバの監視コマンドの作成を参照してください。

ptrlcmd_ex_inter

3を指定します。

ptrlcmd_ex_retry

0を指定します。

ptrlcmd_ex_tmout

5を指定します。

scsi_device，dmmp_device

これらのオペランドは省略してください。

disk

このオペランドは省略してください。

fs_name

次に示すファイルシステムを作成したEFSのDNS名を指定します。

DBディレクトリ用のファイルシステム

作業用一時ファイルを格納するファイルシステム

監査証跡ファイルを出力するファイルシステム（監査証跡機能を使用する場合に必要）

上記の各ファイルシステムのDNS名は，次の形式で指定してください。

"DNS名:/"

EFSのDNS名は，AWSのマネジメントコンソールを使用して確認してください。

fs_mount_dir

次に示すファイルシステムをマウントするディレクトリのパスを指定します。実行系と待機系で同じパスを指定してください。

DBディレクトリ用のファイルシステム

作業用一時ファイルを格納するファイルシステム

監査証跡ファイルを出力するファイルシステム（監査証跡機能を使用する場合に必要）

fs_mount_opt

次に示すファイルシステムをマウントするためのマウントオプション（mountコマンドのオプション）を指定します。

DBディレクトリ用のファイルシステム

作業用一時ファイルを格納するファイルシステム

監査証跡ファイルを出力するファイルシステム（監査証跡機能を使用する場合に必要）

上記の各ファイルシステムのマウントオプションを次のように指定してください。

"-t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport"

amazon-efs-utilsツールを使用して，上記の各ファイルシステムをマウントする場合は，次のように指定してください。

"-t efs"

vg_neck

このオペランドは省略してください。

■クラウドストレージ機能を使用しない場合

serversファイルに指定するオペランドについては，「19.3.4　HAモニタの環境設定」の「(3)　serversファイルの指定」を参照してください。ただし，次のオペランドについては指定値が決まっています。

patrolcommand

このオペランドは省略してください。

ptrlcmd_ex

HADB用の設定を記載したサーバの監視コマンドの絶対パスを指定します。

サーバの監視コマンドはひな形を基に作成してください。作成方法については，「(6)　HAモニタの各ファイルの指定例」の「(e)　コマンド用環境変数定義ファイルおよび各コマンドファイルの指定例」，およびマニュアルHAモニタ Linux(R)(x86)編のサーバの監視コマンドの作成を参照してください。

ptrlcmd_ex_inter

3を指定します。

ptrlcmd_ex_retry

0を指定します。

ptrlcmd_ex_tmout

5を指定します。

scsi_device，dmmp_device

これらのオペランドは省略してください。

rep_device

「(4)　DRBDの環境設定」で「リソース管理ファイル（/etc/drbd.d/r0.res）」に定義したDRBDのリソース名を指定します。

メモ

上記のオペランドの詳細については，マニュアルHAモニタ Linux(R)(x86)編のサーバ対応の環境設定（servers），およびマニュアルHAモニタパブリッククラウド編のパブリッククラウド環境固有のサーバの環境設定を参照してください。

HAモニタの接続構成設定ファイル（connectionファイル）の作成

接続構成設定ファイルを手動で作成してください。手動での作成方法については，マニュアルHAモニタ Linux(R)(x86)編のHAモニタの接続構成設定ファイルの作成を参照してください。

接続構成設定ファイルには，実行系および待機系に作成したsysdefファイルのnameオペランドに指定したホスト名と，監視パスに使用するIPアドレスの組を指定します。

HAモニタのネットワーク遮断設定ファイル（fence_network.envファイル）の作成

ネットワーク遮断による系切り替えをする場合は，ネットワーク遮断設定ファイルを作成してください。ネットワーク遮断の対象とする次のENIのIDを系ごとに列挙してください。ENIのIDは系ごとに異なるため，ネットワーク遮断設定ファイルの内容は各系で異なります。

クラウドストレージ機能を使用する場合

次のENIが対象になります。

クライアント－サーバ間ネットワークに使用しているENI

EFSアクセス用ネットワークに使用しているENI

クラウドストレージ機能を使用しない場合

次のENIが対象になります。

クライアント－サーバ間ネットワークに使用しているENI

ディスクレプリケーションパス（DRBD用ネットワーク）に使用しているENI

ネットワーク遮断設定ファイルの作成方法については，マニュアルHAモニタパブリッククラウド編の【AWS】ネットワーク遮断設定ファイルの設定を参照してください。

コマンド用環境変数定義およびコマンドの作成

HAモニタとの連携のために，次のコマンド用環境変数定義およびコマンドを作成してください。

コマンド用環境変数定義

サーバの起動コマンド

サーバの停止コマンド

サーバの監視コマンド

作成方法は，「19.3.4　HAモニタの環境設定」の「(4)　コマンド用環境変数定義およびコマンドの作成」を参照してください。

ただし，AWS環境では，サーバの監視コマンドファイルのひな形は$ADBDIR/sample/scripts/coldstandby_patrol_ex.shです。このひな形をコピーして該当個所を修正してください。サーバの監視コマンドファイルの指定例については，「(6)　HAモニタの各ファイルの指定例」の「(e)　コマンド用環境変数定義ファイルおよび各コマンドファイルの指定例」を参照してください。

(6)　HAモニタの各ファイルの指定例

次のファイルの指定例を示します。

sysdefファイル

serversファイル

HAモニタの接続構成設定ファイル

コマンド用環境変数定義ファイル（この例では/HADB/scripts/coldstandby.env）

サーバの起動コマンドファイル（この例では/HADB/scripts/coldstandby_act.sh）

サーバの停止コマンドファイル（この例では/HADB/scripts/coldstandby_term.sh）

サーバの監視コマンドファイル（この例では/HADB/scripts/coldstandby_patrol_ex.sh）

ここで説明する指定例は，クラウドストレージ機能を使用する場合は「図19‒6　AWS環境でのコールドスタンバイ構成例（クラウドストレージ機能を使用する場合）」のシステム構成を前提としています。

クラウドストレージ機能を使用しない場合は「図19‒7　AWS環境でのコールドスタンバイ構成例（クラウドストレージ機能を使用しない場合）」のシステム構成を前提としています。

また，ネットワーク遮断による系切り替えをすることを前提としています。

(a)　sysdefファイルの指定例

■実行系（hadb01）のsysdefファイルの指定例

environment  name hadb01,
             address 1,                 ...1
             patrol 60,
             lan path11,                ...2
             lanport HAmon1;            ...3
function     cpudown standby,
             pathpatrol 240,
             connect_retry 5:200,
             monbegin_restart nouse,
             termcmd_at_abort nouse,
             public_cloud use,          ...4
             fence_network use;         ...5

［説明］

この系のリセット優先度を指定します。この系は，実行系のため，リセット優先度をいちばん高くする必要があるので1を指定します。

HAモニタの監視パスとして使用するLANのホスト名を指定します。IPアドレス172.16.0.11に対応するホスト名path11を指定します。

HAモニタの監視パスとして使用するLANのサービス名を指定します。ポート番号7777に対応するサービス名HAmon1を指定します。

AWS環境でHAモニタを使用するため，useを指定します。

ネットワーク遮断による系切り替えをするため，useを指定します。

■待機系（hadb02）のsysdefファイルの指定例

environment  name hadb02,
             address 2,                 ...1
             patrol 60,
             lan path21,                ...2
             lanport HAmon1;            ...3
function     cpudown standby,
             pathpatrol 240,
             connect_retry 5:200,
             monbegin_restart nouse,
             termcmd_at_abort nouse,
             public_cloud use,          ...4
             fence_network use;         ...5

［説明］

この系のリセット優先度を指定します。この系は，待機系のため，2を指定します。

HAモニタの監視パスとして使用するLANのホスト名を指定します。IPアドレス172.16.0.12に対応するホスト名path21を指定します。

HAモニタの監視パスとして使用するLANのサービス名を指定します。ポート番号7777に対応するサービス名HAmon1を指定します。

AWS環境でHAモニタを使用するため，useを指定します。

ネットワーク遮断による系切り替えをするため，useを指定します。

(b)　serversファイルの指定例（クラウドストレージ機能を使用する場合）

ここで説明している例は，作業用一時ファイルを格納するファイルシステムを系切り替え対象とし，監査証跡機能を使用することを前提としています。

■実行系（hadb01）のserversファイルの指定例

server name /HADB/server,                                     ...1
       alias HADB,
       acttype monitor,
       lan_updown use,
       fs_name "fs-0456f138cb4f7f9c3.efs.ap-northeast-1.amazonaws.com:/":"fs-0456f138cb4f7f9c4.efs.ap-northeast-1.amazonaws.com:/":"fs-0456f138cb4f7f9c5.efs.ap-northeast-1.amazonaws.com:/",    ...2
       fs_mount_dir /HADB/db:/mnt/workarea:/mnt/audit,        ...3
       fs_mount_opt "-t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport":"-t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport":"-t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport",    ...4
       actcommand "/HADB/scripts/coldstandby_act.sh",         ...5
       termcommand "/HADB/scripts/coldstandby_term.sh",       ...6
       ptrlcmd_ex "/HADB/scripts/coldstandby_patrol_ex.sh",   ...7
       ptrlcmd_ex_inter 3,
       ptrlcmd_ex_retry 0,
       ptrlcmd_ex_tmout 5,
       servexec_retry 2,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       fs_neck use:nouse:use,                                  ...8
       initial online;                                         ...9

［説明］

サーバディレクトリの絶対パスを指定します。

DBディレクトリ用のファイルシステム，作業用一時ファイルを格納するファイルシステム，および監査証跡ファイルを出力するファイルシステムを作成したEFSのDNS名を指定します。

DBディレクトリ用のファイルシステム，作業用一時ファイルを格納するファイルシステム，および監査証跡ファイルを出力するファイルシステムをマウントするマウントポイントの絶対パスを指定します。

DBディレクトリ用のファイルシステム，作業用一時ファイルを格納するファイルシステム，および監査証跡ファイルを出力するファイルシステムをマウントするためのmountコマンドのオプションを指定します。

コールドスタンバイ構成で使用するサーバの起動コマンドの絶対パスを指定します。

コールドスタンバイ構成で使用するサーバの停止コマンドの絶対パスを指定します。

コールドスタンバイ構成で使用するサーバの監視コマンドの絶対パスを指定します。

DBディレクトリ用のファイルシステム，および監査証跡ファイルを出力するファイルシステムに対しては，useを指定します。作業用一時ファイルを格納するファイルシステムに対しては，nouseを指定します。

実行系とするため，onlineを指定します。

■待機系（hadb02）のserversファイルの指定例

server name /HADB/server,                                     ...1
       alias HADB,
       acttype monitor,
       lan_updown use,
       fs_name "fs-0456f138cb4f7f9c3.efs.ap-northeast-1.amazonaws.com:/":"fs-0456f138cb4f7f9c4.efs.ap-northeast-1.amazonaws.com:/":"fs-0456f138cb4f7f9c5.efs.ap-northeast-1.amazonaws.com:/",    ...2
       fs_mount_dir /HADB/db:/mnt/workarea:/mnt/audit,        ...3
       fs_mount_opt "-t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport":"-t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport":"-t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport",    ...4
       actcommand "/HADB/scripts/coldstandby_act.sh",         ...5
       termcommand "/HADB/scripts/coldstandby_term.sh",       ...6
       ptrlcmd_ex "/HADB/scripts/coldstandby_patrol_ex.sh",   ...7
       ptrlcmd_ex_inter 3,
       ptrlcmd_ex_retry 0,
       ptrlcmd_ex_tmout 5,
       servexec_retry 2,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       fs_neck use:nouse:use,                                  ...8
       initial standby;                                        ...9

［説明］

サーバディレクトリの絶対パスを指定します。

DBディレクトリ用のファイルシステム，作業用一時ファイルを格納するファイルシステム，および監査証跡ファイルを出力するファイルシステムを作成したEFSのDNS名を指定します。

DBディレクトリ用のファイルシステム，作業用一時ファイルを格納するファイルシステム，および監査証跡ファイルを出力するファイルシステムをマウントするマウントポイントの絶対パスを指定します。

DBディレクトリ用のファイルシステム，作業用一時ファイルを格納するファイルシステム，および監査証跡ファイルを出力するファイルシステムをマウントするためのmountコマンドのオプションを指定します。

コールドスタンバイ構成で使用するサーバの起動コマンドの絶対パスを指定します。

コールドスタンバイ構成で使用するサーバの停止コマンドの絶対パスを指定します。

コールドスタンバイ構成で使用するサーバの監視コマンドの絶対パスを指定します。

DBディレクトリ用のファイルシステム，および監査証跡ファイルを出力するファイルシステムに対しては，useを指定します。作業用一時ファイルを格納するファイルシステムに対しては，nouseを指定します。

待機系とするため，standbyを指定します。

(c)　serversファイルの指定例（クラウドストレージ機能を使用しない場合）

ここで説明している例は，ファイルシステムにXFSを使用していることを前提としています。XFS以外のファイルシステムを使用する場合は，OSのmountコマンドのオプションがここで説明している例とは異なります。

また，作業用一時ファイルを格納するファイルシステムを系切り替え対象とし，同義語検索および監査証跡機能を使用することを前提としています。

■実行系（hadb01）のserversファイルの指定例

server name /HADB/server,                      ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb01:                    ...2
            /dev/vg_hadb02:
            /dev/vg_hadb03:
            /dev/vg_hadb04,
       lan_updown use,
       fs_name /dev/vg_hadb01/hadb_db:         ...3
               /dev/vg_hadb02/hadb_workarea:
               /dev/vg_hadb03/hadb_syndict:
               /dev/vg_hadb04/hadb_audit,
       fs_mount_dir /HADB/db:                  ...4
                    /mnt/workarea:
                    /mnt/syndict:
                    /mnt/audit,
       fs_mount_opt "-t xfs -o defaults,noatime,_netdev":               ...5
                    "-t xfs -o defaults,noatime,_netdev":
                    "-t xfs -o defaults,noatime,_netdev":
                    "-t xfs -o defaults,noatime,_netdev",
       actcommand "/HADB/scripts/coldstandby_act.sh",                   ...6
       termcommand "/HADB/scripts/coldstandby_term.sh",                 ...7
       ptrlcmd_ex "/HADB/scripts/coldstandby_patrol_ex.sh",             ...8
       ptrlcmd_ex_inter 3,
       ptrlcmd_ex_retry 0,
       ptrlcmd_ex_tmout 5,
       servexec_retry 2,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use:nouse:nouse:use,   ...9
       fs_neck use:nouse:nouse:use,   ...10
       initial online,                ...11
       rep_device r0;                 ...12

［説明］

サーバディレクトリの絶対パスを指定します。

次のディレクトリを作成するファイルシステムがあるVGの絶対パスを指定します。

DBディレクトリ

作業用一時ファイルを格納するディレクトリ

同義語辞書ファイルの格納ディレクトリ

監査証跡の出力先ディレクトリ

2.で示したディレクトリを作成するファイルシステムを構築したLVの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするマウントポイントの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするためのmountコマンドのオプションを指定します。

コールドスタンバイ構成で使用するサーバの起動コマンドの絶対パスを指定します。

コールドスタンバイ構成で使用するサーバの停止コマンドの絶対パスを指定します。

コールドスタンバイ構成で使用するサーバの監視コマンドの絶対パスを指定します。

次のように指定します。

DBディレクトリを作成するファイルシステムがあるVGに対しては，useを指定します。

作業用一時ファイルを格納するディレクトリを作成するファイルシステムがあるVGに対しては，nouseを指定します。

同義語辞書ファイルの格納ディレクトリを作成するファイルシステムがあるVGに対しては，nouseを指定します。

監査証跡の出力先ディレクトリを作成するファイルシステムがあるVGに対しては，useを指定します。

次のように指定します。

DBディレクトリを作成するファイルシステムに対しては，useを指定します。

作業用一時ファイルを作成するファイルシステムに対しては，nouseを指定します。

同義語辞書ファイルの格納ディレクトリを作成するファイルシステムに対しては，nouseを指定します。

監査証跡の出力先ディレクトリを作成するファイルシステムに対しては，useを指定します。

実行系とするため，onlineを指定します。

DRBDのリソース管理ファイル（/etc/drbd.d/r0.res）のリソース名（r0）を指定します。

■待機系（hadb02）のserversファイルの指定例

server name /HADB/server,                      ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb01:                    ...2
            /dev/vg_hadb02:
            /dev/vg_hadb03:
            /dev/vg_hadb04,
       lan_updown use,
       fs_name /dev/vg_hadb01/hadb_db:         ...3
               /dev/vg_hadb02/hadb_workarea:
               /dev/vg_hadb03/hadb_syndict:
               /dev/vg_hadb04/hadb_audit,
       fs_mount_dir /HADB/db:                  ...4
                    /mnt/workarea:
                    /mnt/syndict:
                    /mnt/audit,
       fs_mount_opt "-t xfs -o defaults,noatime,_netdev":               ...5
                    "-t xfs -o defaults,noatime,_netdev":
                    "-t xfs -o defaults,noatime,_netdev":
                    "-t xfs -o defaults,noatime,_netdev",
       actcommand "/HADB/scripts/coldstandby_act.sh",                   ...6
       termcommand "/HADB/scripts/coldstandby_term.sh",                 ...7
       ptrlcmd_ex "/HADB/scripts/coldstandby_patrol_ex.sh",             ...8
       ptrlcmd_ex_inter 3,
       ptrlcmd_ex_retry 0,
       ptrlcmd_ex_tmout 5,
       servexec_retry 2,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use:nouse:nouse:use,   ...9
       fs_neck use:nouse:nouse:use,   ...10
       initial standby,               ...11
       rep_device r0;                 ...12

［説明］

サーバディレクトリの絶対パスを指定します。

次のディレクトリを作成するファイルシステムがあるVGの絶対パスを指定します。

DBディレクトリ

作業用一時ファイルを格納するディレクトリ

同義語辞書ファイルの格納ディレクトリ

監査証跡の出力先ディレクトリ

2.で示したディレクトリを作成するファイルシステムを構築したLVの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするマウントポイントの絶対パスを指定します。

2.で示したディレクトリを作成するファイルシステムをマウントするためのmountコマンドのオプションを指定します。

コールドスタンバイ構成で使用するサーバの起動コマンドの絶対パスを指定します。

コールドスタンバイ構成で使用するサーバの停止コマンドの絶対パスを指定します。

コールドスタンバイ構成で使用するサーバの監視コマンドの絶対パスを指定します。

次のように指定します。

DBディレクトリを作成するファイルシステムがあるVGに対しては，useを指定します。

作業用一時ファイルを格納するディレクトリを作成するファイルシステムがあるVGに対しては，nouseを指定します。

同義語辞書ファイルの格納ディレクトリを作成するファイルシステムがあるVGに対しては，nouseを指定します。

監査証跡の出力先ディレクトリを作成するファイルシステムがあるVGに対しては，useを指定します。

次のように指定します。

DBディレクトリを作成するファイルシステムに対しては，useを指定します。

作業用一時ファイルを作成するファイルシステムに対しては，nouseを指定します。

同義語辞書ファイルの格納ディレクトリを作成するファイルシステムに対しては，nouseを指定します。

監査証跡の出力先ディレクトリを作成するファイルシステムに対しては，useを指定します。

待機系とするため，standbyを指定します。

DRBDのリソース管理ファイル（/etc/drbd.d/r0.res）のリソース名（r0）を指定します。

(d)　HAモニタの接続構成設定ファイルの指定例

HAモニタの接続構成設定ファイル（connectionファイル）の指定例を次に示します。指定内容はすべての系で同じにしてください。

hadb01 LAN 172.16.0.11;     ...1
hadb02 LAN 172.16.0.12;     ...2

［説明］

実行系（hadb01）の監視パスで使用するIPアドレス172.16.0.11を指定します。

待機系（hadb02）の監視パスで使用するIPアドレス172.16.0.12を指定します。

HAモニタの接続構成設定ファイルの指定方法の詳細については，マニュアルHAモニタ Linux(R)(x86)編のHAモニタの接続構成設定ファイルの作成を参照してください。

(e)　コマンド用環境変数定義ファイルおよび各コマンドファイルの指定例

コマンド用環境変数定義ファイルの指定例

指定例については，「19.3.4　HAモニタの環境設定」の「(5)　各ファイルの指定例（系のリセットを使用する場合）」の「(c)　コマンド用環境変数定義ファイルの指定例」を参照してください。

サーバの起動コマンドファイルの指定例

指定例については，「19.3.4　HAモニタの環境設定」の「(5)　各ファイルの指定例（系のリセットを使用する場合）」の「(d)　サーバの起動コマンドファイルの指定例」を参照してください。

サーバの停止コマンドファイルの指定例

指定例については，「19.3.4　HAモニタの環境設定」の「(5)　各ファイルの指定例（系のリセットを使用する場合）」の「(e)　サーバの停止コマンドファイルの指定例」を参照してください。

サーバの監視コマンドファイルの指定例

この例では，サーバの監視コマンドを/HADB/scripts/coldstandby_patrol_ex.shに格納しています。指定内容は，実行系と待機系で同じにしてください。

メモ

サーバの監視コマンドファイルの指定は，クラウドストレージ機能を使用するかどうかに関係なく同じになります。

＜サーバの監視コマンドファイルの指定例＞

#!/bin/sh

# Sample of the ptrlcmd_ex for HADB

SU=/bin/su

# Setting environment variables for HADB
source /HADB/scripts/coldstandby.env                ...1

# Execute adbmonitor command for active system
$SU - $ADBMGR -c "'$ADBDIR'/bin/adbmonitor -n -i"
ADBMONRES=$?
if [ "$ADBMONRES" = "0" -o "$ADBMONRES" = "4" ]
then
  exit 0
else
  exit $ADBMONRES
fi

［説明］

下線部分を修正します。

source文にコマンド用環境変数定義の絶対パス/HADB/scripts/coldstandby.envを指定します。

(7)　HAモニタの起動設定

HAモニタの起動設定については，「19.3.4　HAモニタの環境設定」の「(7)　HAモニタの起動設定」を参照してください。

(8)　DRBD用のシェルスクリプト群の展開

HAモニタでDRBDを使用する場合，HAモニタが提供しているDRBD用のシェルスクリプト群を展開する必要があります。詳細については，マニュアルHAモニタパブリッククラウド編の【AWS】【Azure】レプリケーションソフト（DRBD）用のシェルスクリプト群の展開を参照してください。

メモ

クラウドストレージ機能を使用する場合は，DRBD用のシェルスクリプト群の展開は不要です。

(9)　データベースの作成（クラウドストレージ機能を使用する場合）

データベースの作成作業の流れを次に示します。

各ファイルシステムを作成する

実行系のデータベースを初期設定する

待機系のデータベースを初期設定する

作業用一時ファイルを格納するファイルシステムをマウントおよびアンマウントする

監査証跡ファイルを出力するファイルシステムをマウントおよびアンマウントする

共有するファイルシステムを構築する

各作業を以降で説明します。

(a)　各ファイルシステムの作成

AWSのマネジメントコンソールなどを使用して，各ファイルシステム用のEFSを作成してください。

(b)　実行系のデータベースの初期設定

実行系のデータベースの初期設定の手順を説明します。

手順

DBディレクトリ用のファイルシステムをマウントする

実行系で，次のコマンドをOSのスーパユーザで実行してください。

DBディレクトリ用のマウントポイントを作成する

mkdir -p /HADB/db

DBディレクトリ用のファイルシステムをマウントする

mount  -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport fs-0456f138cb4f7f9c3.efs.ap-northeast-1.amazonaws.com:/ /HADB/db

DBディレクトリのオーナーを変更する

使用するHADB管理者とHADB管理グループを指定します。HADB管理者をadbmanager，HADB管理グループをadbgroupとしたコマンド例を次に示します。

chown adbmanager.adbgroup /HADB/db

データベースを初期設定する

実行系でadbinitコマンドを実行して，実行系のデータベースを初期設定してください。adbinitコマンドの初期設定オプションの指定例を次に示します。

この操作は，HADB管理者のOSユーザで実行してください。

set adb_init_dbarea_initialize = Y
set adb_init_cld_sysdir_storage = Y                    ...a
set adb_init_cld_aws_region = ap-northeast-1           ...b
set adb_init_cld_aws_bucket = adbbucket                ...c
set adb_init_cld_cache_path = /HADB/ADBCCH             ...d
adbinitdbarea -n ADBUTBL01 -p 32 -s 32                 ...e
adbinitdbarea -n ADBUIDX01 -p 32 -s 32                 ...e

［説明］

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合は，Yを指定します。

S3オブジェクトの格納先のリージョン名（ap-northeast-1）を指定します。

S3オブジェクトの格納先のS3バケット名（adbbucket）を指定します。

キャッシュファイルの格納先ディレクトリ名（/HADB/ADBCCH）を指定します。

データ用DBエリアの定義を指定します。DBエリアのページサイズには32キロバイト，セグメントサイズには32メガバイトを指定します。

メモ

adb_init_wrk_blk_pathオペランドの指定は不要です。

重要

DBディレクトリ用のマウントポイントにDBディレクトリ用のファイルシステムがマウントされていることを確認してください。

DBディレクトリ用のファイルシステムをアンマウントする

実行系で，次のコマンドをOSのスーパユーザで実行してください。

umount /HADB/db

(c)　待機系のデータベースの初期設定

待機系のデータベースの初期設定の手順を説明します。

手順

以下のすべての操作は，OSのスーパユーザで実行してください。

DBディレクトリ用のファイルシステムをマウントする

待機系でDBディレクトリ用のファイルシステムをマウントしてください。実行系と同じパスになるようにマウントポイントを作成してください。

メモ

待機系では，DBディレクトリ用のファイルシステムのマウントポイントを作成するだけで，adbinitコマンドは実行しません。

DBディレクトリ用のファイルシステムをアンマウントする

待機系でDBディレクトリ用のファイルシステムをアンマウントしてください。

メモ

ファイルシステムをマウントまたはアンマウントする方法については，「(b)　実行系のデータベースの初期設定」を参照してください。

(d)　作業用一時ファイルを格納するファイルシステムのマウントおよびアンマウント

作業用一時ファイルを格納するファイルシステムを系切り替え対象とする場合は，ここで説明する作業を実施してください。

手順

以下のすべての操作は，OSのスーパユーザで実行してください。

実行系で，作業用一時ファイルを格納するファイルシステムをマウントおよびアンマウントする

実行系で，作業用一時ファイルを格納するファイルシステムをマウントしたあとにアンマウントしてください。実行系と待機系で同じパスになるようにマウントポイントを作成してください。

待機系で，作業用一時ファイルを格納するファイルシステムをマウントおよびアンマウントする

待機系で，作業用一時ファイルを格納するファイルシステムをマウントしたあとにアンマウントしてください。実行系と待機系で同じパスになるようにマウントポイントを作成してください。

メモ

ファイルシステムをマウントまたはアンマウントする方法については，「(b)　実行系のデータベースの初期設定」を参照してください。

(e)　監査証跡ファイルを出力するファイルシステムのマウントおよびアンマウント

監査証跡機能を使用する場合は，ここで説明する作業を実施してください。

手順

以下のすべての操作は，OSのスーパユーザで実行してください。

実行系で，監査証跡ファイルを出力するファイルシステムをマウントおよびアンマウントする

実行系で，監査証跡ファイルを出力するファイルシステムをマウントしたあとにアンマウントしてください。実行系と待機系で同じパスになるようにマウントポイントを作成してください。

待機系で，監査証跡ファイルを出力するファイルシステムをマウントおよびアンマウントする

待機系で，監査証跡ファイルを出力するファイルシステムをマウントしたあとにアンマウントしてください。実行系と待機系で同じパスになるようにマウントポイントを作成してください。

メモ

ファイルシステムをマウントまたはアンマウントする方法については，「(b)　実行系のデータベースの初期設定」を参照してください。

(f)　共有するファイルシステムの構築

共有するファイルシステムを構築する手順を説明します。

手順

以下のすべての操作は，OSのスーパユーザで実行してください。

共有するファイルシステムを実行系で構築する

実行系と待機系で，次に示すファイルシステムを共有します。

データインポートで使用する入力ファイルを格納するファイルシステム

ADB_CSVREAD関数で使用するCSVファイルを格納するファイルシステム（ADB_CSVREAD関数を使用した検索をする場合に必要）

監査証跡ファイルを出力するファイルシステム（監査証跡機能を使用する場合に必要）

外部データファイルを格納するファイルシステム（ファイルストレージに外部データを格納している場合）

これらのファイルシステムをEFSで構築してください。

ファイルシステムを共有化する

実行系と待機系で共有するファイルシステムを共有してください。

1.で作成したファイルシステムを，実行系と待機系で同じパスとなるようにマウントしてください。実行系と待機系の両方でこの作業を実施してください。

(10)　データベースの作成（クラウドストレージ機能を使用しない場合）

データベースの作成作業の流れを次に示します。

データベースを初期同期する

各ファイルシステム用のVGおよびLVを作成する

実行系のデータベースを初期設定する

待機系のデータベースを初期設定する

作業用一時ファイルを格納するファイルシステムを構築する

同義語辞書ファイルを格納するファイルシステムを構築する（同義語検索をする場合に必要な作業）

監査証跡ファイルを出力するファイルシステムを構築する（監査証跡機能を使用する場合に必要な作業）

共有するファイルシステムを構築する

各作業を以降で説明します。

(a)　データベースの初期同期

データベースの初期同期の手順を説明します。

手順

以下のすべての操作は，OSのスーパユーザで実行してください。

DRBDのメタデータを作成する

実行系および待機系で次のコマンドを実行してください。

drbdadm create-md r0

DRBD論理デバイスの下位デバイスにDRBD用のメタデータが作成されます。

DRBDのリソースを有効化する

実行系および待機系で次のコマンドを実行してください。

drbdadm up r0

DRBDのロールをプライマリに変更する

実行系で次のコマンドを実行してください。

drbdadm primary --force r0

DRBDロールをプライマリにして，リソースの初期フル同期が実行されます。

DRBDの状態を確認する

実行系で次のコマンドを実行してください。

drbdadm status r0

同期が完了していることを確認してください。コマンドの実行結果がすべてUpToDateの場合，リソースの同期が完了しています。

(b)　各ファイルシステム用のVGおよびLVの作成

各ファイルシステム用のVGは，リソース管理ファイル（/etc/drbd.d/r0.res）で定義したDRBD論理デバイスをPVとして作成します。

手順

以下のすべての操作は，OSのスーパユーザで実行してください。

各ファイルシステム用のDRBD論理デバイス（/dev/drbd1～/dev/drbd4）に対して，pvcreateコマンドを実行する

実行系で次のコマンドを実行してください。

pvcreate /dev/drbd1
pvcreate /dev/drbd2
pvcreate /dev/drbd3
pvcreate /dev/drbd4

/etc/lvm/lvm.confファイルを編集する

実行系の/etc/lvm/lvm.confファイルに，次の下線部分を追加してください。

devices {
  …
  filter = [ "a|drbd.*|", "r|.*|" ]
}

vgscanコマンドを実行する

実行系で次のコマンドを実行してください。

vgscan

/etc/lvm/lvm.confファイルを編集する

実行系の/etc/lvm/lvm.confファイルの内容を次のように変更してください。

write_cache_state = 0

/etc/lvm/cache/.cacheを削除する

実行系で次のコマンドを実行してください。

rm -f /etc/lvm/cache/.cache

実行系のDRBDロールをセカンダリに変更する

実行系で次のコマンドを実行してください。

drbdadm secondary r0

待機系のDRBDロールをプライマリに変更する

待機系で次のコマンドを実行してください。

drbdadm primary r0

実行系と同様に，待機系でも手順1.～手順5.を実施する

各VGを作成する

待機系で次のコマンドを実行してください。

vgcreate vg_hadb01 /dev/drbd1
vgcreate vg_hadb02 /dev/drbd2
vgcreate vg_hadb03 /dev/drbd3
vgcreate vg_hadb04 /dev/drbd4

各LVをVG上に作成する

待機系で次のコマンドを実行してください。

lvcreate -n hadb_db -l 100%FREE vg_hadb01
lvcreate -n hadb_workarea -l 100%FREE vg_hadb02
lvcreate -n hadb_syndict -l 100%FREE vg_hadb03
lvcreate -n hadb_audit -l 100%FREE vg_hadb04
vgscan

各VGを非活性化する

待機系で次のコマンドを実行してください。

vgchange -a n /dev/vg_hadb01
vgchange -a n /dev/vg_hadb02
vgchange -a n /dev/vg_hadb03
vgchange -a n /dev/vg_hadb04

待機系のDRBDロールをセカンダリに変更する

待機系で次のコマンドを実行してください。

drbdadm secondary r0

各VG（vg_hadb01～vg_hadb04）を認識させる

実行系で次のコマンドを実行してください。

pvscan --cache
vgscan

(c)　実行系のデータベースの初期設定

実行系のデータベースの初期設定の手順を説明します。

手順

DBディレクトリ用のファイルシステムを初期化する

実行系で，次のコマンドをOSのスーパユーザで実行してください。

実行系をプライマリノードにする

drbdadm primary r0

DBディレクトリ用のファイルシステムで使用するVGを活性化する

vgchange -a y /dev/vg_hadb01

DBディレクトリ用のファイルシステムを初期化する

mkfs -t xfs /dev/vg_hadb01/hadb_db

DBディレクトリ用のLV（/dev/vg_hadb01/hadb_db）を，XFSのファイルシステムで初期化する場合の例です。

DBディレクトリ用のファイルシステムで使用するVGを非活性化する

vgchange -a n /dev/vg_hadb01

実行系をセカンダリノードにする

drbdadm secondary r0

DBディレクトリ用のファイルシステムをマウントする

実行系で，次のコマンドをOSのスーパユーザで実行してください。

DBディレクトリ用のマウントポイントを作成する

mkdir -p /HADB/db

実行系をプライマリノードにする

drbdadm primary r0

DBディレクトリ用のファイルシステムで使用するVGを活性化する

vgchange -a y /dev/vg_hadb01

DBディレクトリ用のファイルシステムをマウントする

mount /dev/vg_hadb01/hadb_db /HADB/db -t xfs -o defaults,noatime,_netdev

DBディレクトリのオーナーを変更する

使用するHADB管理者とHADB管理グループを指定してオーナーを変更してください。HADB管理者をadbmanager，HADB管理グループをadbgroupとしたコマンド例を次に示します。

chown adbmanager.adbgroup /HADB/db

データベースを初期化する

実行系でadbinitコマンドを実行して，実行系のデータベースを初期化してください。adbinitコマンドの初期設定オプションの指定例を次に示します。

この操作は，HADB管理者のOSユーザで実行してください。

set adb_init_dbarea_initialize = Y
set adb_init_mst_blk_path = /dev/drbd5           ...a
set adb_init_dic_blk_path = /dev/drbd6           ...b
set adb_init_stbl_blk_path = /dev/drbd7          ...c
adbinitdbarea -n ADBUTBL01 -i 2G -v /dev/drbd8   ...d
adbinitdbarea -n ADBUIDX01 -i 2G -v /dev/drbd9   ...e

［説明］

マスタディレクトリ用DBエリアに対応するDRBD論理デバイスのパス（/dev/drbd5）を指定します。

ディクショナリ用DBエリアに対応するDRBD論理デバイスのパス（/dev/drbd6）を指定します。

システム表用DBエリアに対応するDRBD論理デバイスのパス（/dev/drbd7）を指定します。

データ用DBエリアADBUTBL01に対応するDRBD論理デバイスのパス（/dev/drbd8）を指定します。

データ用DBエリアADBUIDX01に対応するDRBD論理デバイスのパス（/dev/drbd9）を指定します。

メモ

adb_init_wrk_blk_pathオペランドの指定は不要です。

重要

DBディレクトリ用のマウントポイントにDBディレクトリ用のファイルシステムがマウントされていることを確認してください。

DBディレクトリ用のファイルシステムをアンマウントする

実行系で，次のコマンドをOSのスーパユーザで実行してください。

DBディレクトリ用のファイルシステムをアンマウントする

umount /dev/vg_hadb01/hadb_db

DBディレクトリ用のファイルシステムで使用するVGを非活性化する

vgchange -a n /dev/vg_hadb01

実行系をセカンダリノードにする

drbdadm secondary r0

(d)　待機系のデータベースの初期設定

待機系のデータベースの初期設定の手順を説明します。

手順

以下のすべての操作は，OSのスーパユーザで実行してください。

DBディレクトリ用のファイルシステムをマウントする

待機系でDBディレクトリ用のファイルシステムをマウントしてください。実行系と同じパスになるようにマウントポイントを作成してください。

メモ

待機系では，DBディレクトリ用のファイルシステムのマウントポイントを作成するだけで，adbinitコマンドは実行しません。

DBディレクトリ用のファイルシステムをアンマウントする

待機系でDBディレクトリ用のファイルシステムをアンマウントしてください。

メモ

ファイルシステムをマウントする方法については，「(c)　実行系のデータベースの初期設定」の「手順2.　DBディレクトリ用のファイルシステムをマウントする」を参照してください。

ファイルシステムをアンマウントする方法については，「(c)　実行系のデータベースの初期設定」の「手順4.　DBディレクトリ用のファイルシステムをアンマウントする」を参照してください。

(e)　作業用一時ファイルを格納するファイルシステムの構築

作業用一時ファイルを格納するファイルシステムを系切り替え対象とする場合は，ここで説明する作業を実施してください。

手順

以下のすべての操作は，OSのスーパユーザで実行してください。

作業用一時ファイルを格納するファイルシステムを初期化する

実行系で次のコマンドを実行してください。

実行系をプライマリノードにする

drbdadm primary r0

作業用一時ファイルを格納するファイルシステムで使用するVGを活性化する

vgchange -a y /dev/vg_hadb02

作業用一時ファイルを格納するファイルシステムを初期化する

mkfs -t xfs /dev/vg_hadb02/hadb_workarea

作業用一時ファイルを格納するLV（/dev/vg_hadb02/hadb_workarea）を，XFSのファイルシステムで初期化する場合の例です。

作業用一時ファイルを格納するファイルシステムで使用するVGを非活性化する

vgchange -a n /dev/vg_hadb02

実行系をセカンダリノードにする

drbdadm secondary r0

作業用一時ファイルを格納するファイルシステムをマウントおよびアンマウントする

実行系で，作業用一時ファイルを格納するファイルシステムをマウントしたあとにアンマウントしてください。実行系と待機系が同じパスになるようにマウントポイントを作成してください。

作業用一時ファイルを格納するファイルシステムをマウントおよびアンマウントする

待機系で，作業用一時ファイルを格納するファイルシステムをマウントしたあとにアンマウントしてください。実行系と待機系が同じパスになるようにマウントポイントを作成してください。

メモ

ファイルシステムをマウントする方法については，「(c)　実行系のデータベースの初期設定」の「手順2.　DBディレクトリ用のファイルシステムをマウントする」を参照してください。

ファイルシステムをアンマウントする方法については，「(c)　実行系のデータベースの初期設定」の「手順4.　DBディレクトリ用のファイルシステムをアンマウントする」を参照してください。

(f)　同義語辞書ファイルを格納するファイルシステムの構築

同義語検索をする場合は，ここで説明する作業を実施してください。

手順

以下のすべての操作は，OSのスーパユーザで実行してください。

同義語辞書ファイルを格納するファイルシステムを初期化する

実行系で次のコマンドを実行してください。

実行系をプライマリノードにする

drbdadm primary r0

同義語辞書ファイルを格納するファイルシステムで使用するVGを活性化する

vgchange -a y /dev/vg_hadb03

同義語辞書ファイルを格納するファイルシステムを初期化する

mkfs -t xfs /dev/vg_hadb03/hadb_syndict

同義語辞書ファイルを格納するLV（/dev/vg_hadb03/hadb_syndict）を，XFSのファイルシステムで初期化する場合の例です。

同義語辞書ファイルを格納するファイルシステムで使用するVGを非活性化する

vgchange -a n /dev/vg_hadb03

実行系をセカンダリノードにする

drbdadm secondary r0

同義語辞書ファイルを格納するファイルシステムをマウントおよびアンマウントする

実行系で，同義語辞書ファイルを格納するファイルシステムをマウントしたあとにアンマウントしてください。実行系と待機系が同じパスになるようにマウントポイントを作成してください。

同義語辞書ファイルを格納するファイルシステムをマウントおよびアンマウントする

待機系で，同義語辞書ファイルを格納するファイルシステムをマウントしたあとにアンマウントしてください。実行系と待機系が同じパスになるようにマウントポイントを作成してください。

メモ

ファイルシステムをマウントする方法については，「(c)　実行系のデータベースの初期設定」の「手順2.　DBディレクトリ用のファイルシステムをマウントする」を参照してください。

ファイルシステムをアンマウントする方法については，「(c)　実行系のデータベースの初期設定」の「手順4.　DBディレクトリ用のファイルシステムをアンマウントする」を参照してください。

(g)　監査証跡ファイルを出力するファイルシステムの構築

監査証跡機能を使用する場合は，ここで説明する作業を実施してください。

手順

以下のすべての操作は，OSのスーパユーザで実行してください。

監査証跡ファイルを出力するファイルシステムを初期化する

実行系で次のコマンドを実行してください。

実行系をプライマリノードにする

drbdadm primary r0

監査証跡ファイルを出力するファイルシステムで使用するVGを活性化する

vgchange -a y /dev/vg_hadb04

監査証跡ファイルを出力するファイルシステムを初期化する

mkfs -t xfs /dev/vg_hadb04/hadb_audit

監査証跡ファイルを出力するLV（/dev/vg_hadb04/hadb_audit）を，XFSのファイルシステムで初期化する場合の例です。

監査証跡ファイルを出力するファイルシステムで使用するVGを非活性化する

vgchange -a n /dev/vg_hadb04

実行系をセカンダリノードにする

drbdadm secondary r0

監査証跡ファイルを出力するファイルシステムをマウントおよびアンマウントする

実行系で，監査証跡ファイルを出力するファイルシステムをマウントしたあとにアンマウントしてください。実行系と待機系が同じパスになるようにマウントポイントを作成してください。

監査証跡ファイルを出力するファイルシステムをマウントおよびアンマウントする

待機系で，監査証跡ファイルを出力するファイルシステムをマウントしたあとにアンマウントしてください。実行系と待機系が同じパスになるようにマウントポイントを作成してください。

メモ

ファイルシステムをマウントする方法については，「(c)　実行系のデータベースの初期設定」の「手順2.　DBディレクトリ用のファイルシステムをマウントする」を参照してください。

ファイルシステムをアンマウントする方法については，「(c)　実行系のデータベースの初期設定」の「手順4.　DBディレクトリ用のファイルシステムをアンマウントする」を参照してください。

(h)　共有するファイルシステムの構築

共有するファイルシステムを構築する手順を説明します。

手順

以下のすべての操作は，OSのスーパユーザで実行してください。

共有するファイルシステムを実行系で構築する

実行系と待機系で，次に示すファイルシステムを共有します。

データインポートで使用する入力ファイルを格納するファイルシステム

ADB_CSVREAD関数で使用するCSVファイルを格納するファイルシステム（ADB_CSVREAD関数を使用した検索をする場合に必要）

監査証跡ファイルを出力するファイルシステム（監査証跡機能を使用する場合に必要）

外部データファイルを格納するファイルシステム（ファイルストレージに外部データを格納している場合）

これらのファイルシステムをEFSで構築してください。

ファイルシステムを共有化する

実行系と待機系で共有するファイルシステムを共有してください。

1.で作成したファイルシステムを，実行系と待機系で同じパスとなるようにマウントしてください。実行系と待機系の両方でこの作業を実施してください。

19.22.5　データ用DBエリアの追加

ここでは，AWS環境でのデータ用DBエリアの追加手順を説明します。クラウドストレージ機能を使用しているかどうかによって手順が異なります。

(1)　クラウドストレージ機能を使用している場合

実行系のHADBサーバでadbmodareaコマンドを実行してデータ用DBエリアを追加してください。DBエリア追加・変更オプションの指定例を次に示します。

ADBUTBL02を追加する場合

adbaddarea -n ADBUTBL02 -p 32 -s32

ADBUIDX02を追加する場合

adbaddarea -n ADBUIDX02 -p 32 -s32

(2)　クラウドストレージ機能を使用していない場合

＜ここの操作説明の前提条件＞

「図19‒7　AWS環境でのコールドスタンバイ構成例（クラウドストレージ機能を使用しない場合）」で示すとおり，hadb01が実行系で，hadb02が待機系であるとします。

手順

同期対象のリソースを追加する

新しくディスクを追加して，データ用DBエリアを拡張するときと同様に同期対象のリソースを追加してください。手順については，「19.22.7　DBエリアの拡張」の「(2)　クラウドストレージ機能を使用していない場合」の「(a)　新しいディスクを追加してDBエリアを拡張する場合」の「■同期対象リソースの追加」を参照してください。

データ用DBエリアを追加する

実行系のHADBサーバでadbmodareaコマンドを実行してデータ用DBエリアを追加してください。

DBエリア追加・変更オプションの指定例を次に示します。

ADBUTBL02を追加する場合

adbaddarea -n ADBUTBL02 -i 2G -v /dev/drbd9

ADBUIDX02を追加する場合

adbaddarea -n ADBUIDX02 -i 2G -v /dev/drbd10

19.22.6　データ用DBエリアの削除

ここでは，AWS環境でのデータ用DBエリアの削除手順を説明します。クラウドストレージ機能を使用しているかどうかによって手順が異なります。

(1)　クラウドストレージ機能を使用している場合

実行系のHADBサーバでadbmodareaコマンドを実行してデータ用DBエリアを削除してください。DBエリア追加・変更オプションの指定例を次に示します。

ADBUTBL02を削除する場合

adbrmarea -n ADBUTBL02

ADBUIDX02を削除する場合

adbrmarea -n ADBUIDX02

(2)　クラウドストレージ機能を使用していない場合

＜ここの操作説明の前提条件＞

「図19‒7　AWS環境でのコールドスタンバイ構成例（クラウドストレージ機能を使用しない場合）」で示すとおり，hadb01が実行系で，hadb02が待機系であるとします。

手順

データ用DBエリアを削除する

実行系のHADBサーバでadbmodareaコマンドを実行してデータ用DBエリアを削除してください。

DBエリア追加・変更オプションの指定例を次に示します。

ADBUTBL02を削除する場合

adbrmarea -n ADBUTBL02

ADBUIDX02を削除する場合

adbrmarea -n ADBUIDX02

DRBDのリソース管理ファイルを変更する

DRBDのリソース管理ファイルから，削除するデータ用DBエリアのボリューム情報の記述を削除してください。実行系と待機系の両方で作業を実施してください。

この操作は，OSのスーパユーザで実行してください。

DRBDのリソースを再設定する

実行系で，次のコマンドをOSのスーパユーザで実行してください。DRBDのリソース管理ファイルを変更したため，DRBDのリソースを再設定します。

drbdadm adjust r0

そのあとに，待機系で，次のコマンドをOSのスーパユーザで実行してください。

drbdadm adjust r0

19.22.7　DBエリアの拡張

ここでは，AWS環境でのDBエリアの拡張手順を説明します。クラウドストレージ機能を使用しているかどうかによって手順が異なります。

(1)　クラウドストレージ機能を使用している場合

実行系のHADBサーバでadbmodareaコマンドを実行してデータ用DBエリアを拡張してください。DBエリア追加・変更オプションの指定例を次に示します。

ADBUTBL02を拡張する場合

adbexpandarea -n ADBUTBL02

ADBUIDX02を拡張する場合

adbexpandarea -n ADBUIDX02

(2)　クラウドストレージ機能を使用していない場合

DBエリアを拡張するには，次の2つの方法があります。

新しいディスクを追加してDBエリアを拡張する

既存のディスクのサイズを増やしてDBエリアを拡張する

各DBエリアに使用できるDBエリアの拡張方法を次の表に示します。

表19‒19　各DBエリアに使用できるDBエリアの拡張方法

DBエリアの種類

DBエリアの拡張方法

新しいディスクを追加する

既存のディスクサイズを増やす

ディクショナリ用DBエリア

×

〇

システム表用DBエリア

×

〇

作業表用DBエリア

×

〇※2

データ用DBエリア※1

〇

〇

（凡例）

〇：使用できます。

×：使用できません。

注※1

データ用DBエリアを拡張する場合は，新しいディスクを追加して拡張する方法を推奨します。

注※2

作業表用DBエリアに格納されるデータは，HADBサーバが起動している間だけ使用されるため，既存のディスクを使用しないで，サイズを増やした別のディスクを使用することもできます。

(a)　新しいディスクを追加してDBエリアを拡張する場合

新しいディスクを追加してDBエリアを拡張する手順を説明します。「同期対象リソースの追加」作業をしたあとに，「DBエリアの拡張」作業を実施してください。

＜ここの操作説明の前提条件＞

「図19‒7　AWS環境でのコールドスタンバイ構成例（クラウドストレージ機能を使用しない場合）」で示すとおり，hadb01が実行系で，hadb02が待機系であるとします。

■同期対象リソースの追加

手順

コールドスタンバイ構成を正常終了する

コールドスタンバイ構成の正常終了方法については，「19.4.2　コールドスタンバイ構成の終了方法」の「(1)　コールドスタンバイ構成の終了手順」を参照してください。

udevルールファイルを変更する

新しく追加するディスクのデバイス名を固定するために，実行系と待機系の両方のudevルールファイルを変更してください。udevルールファイルの変更例を次に示します。追加したディスクのデバイス名が，/dev/hadb_tbl02および/dev/hadb_idx02とします。次の変更例の下線部分が追加した部分です。

この操作は，OSのスーパユーザで実行してください。

＜udevルールファイルの変更例＞

ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="Amazon Elastic Block Store_vol085828a5533a9cbf9", SYMLINK+="hadb_db"
ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="Amazon Elastic Block Store_vol0230003acd65aafcc", SYMLINK+="hadb_workarea"
ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="Amazon Elastic Block Store_vol08ee49cc31321bdd2", SYMLINK+="hadb_syndict"
ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="Amazon Elastic Block Store_vol05baed37592db7abd", SYMLINK+="hadb_audit"
ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="Amazon Elastic Block Store_vol0db4be9c284a04033", SYMLINK+="hadb_mst"
ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="Amazon Elastic Block Store_vol0efe890a19d4b2330", SYMLINK+="hadb_dic"
ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="Amazon Elastic Block Store_vol0431a7bfcf7388f72", SYMLINK+="hadb_stbl"
ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="Amazon Elastic Block Store_vol0d5ca81d622e73022", SYMLINK+="hadb_tbl01"
ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="Amazon Elastic Block Store_vol05405d4eea38470e7", SYMLINK+="hadb_idx01"
ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="Amazon Elastic Block Store_vol0863f921719651f9d", SYMLINK+="hadb_wrk"
ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="Amazon Elastic Block Store_vol0ab2d38c85e4f08b2", SYMLINK+="hadb_tbl02"
ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="Amazon Elastic Block Store_vol062167f87fc4c6b01", SYMLINK+="hadb_idx02"

実行系と待機系のOSを再起動する

変更したudevルールを反映させるために，実行系と待機系のOSを再起動してください。

この操作は，OSのスーパユーザで実行してください。

コールドスタンバイ構成を正常開始する

コールドスタンバイ構成の正常開始方法については，「19.4.1　コールドスタンバイ構成の開始方法」の「(1)　コールドスタンバイ構成の開始手順」を参照してください。

DRBDのリソース管理ファイルを変更する

実行系と待機系の両方のDRBDのリソース管理ファイルに，新しく追加するディスクの情報を追加してください。リソース管理ファイルの変更例を次に示します。次の変更例の下線部分が追加した部分です。

この操作は，OSのスーパユーザで実行してください。

＜リソース管理ファイルの変更例＞

resource r0 {
  volume 0 {
    device    /dev/drbd1;
    disk      /dev/hadb_db;
    meta-disk internal;
  }
  volume 1 {
    device    /dev/drbd2;
    disk      /dev/hadb_workarea;
    meta-disk internal;
  }
  volume 2 {
    device    /dev/drbd3;
    disk      /dev/hadb_syndict;
    meta-disk internal;
  }
  volume 3 {
    device    /dev/drbd4;
    disk      /dev/hadb_audit;
    meta-disk internal;
  }
  volume 4 {
    device    /dev/drbd5;

    disk      /dev/hadb_mst;
    meta-disk internal;
  }
  volume 5 {
    device    /dev/drbd6;
    disk      /dev/hadb_dic;
    meta-disk internal;
  }
  volume 6 {
    device    /dev/drbd7;
    disk      /dev/hadb_stbl;
    meta-disk internal;
  }
  volume 7 {
    device    /dev/drbd8;
    disk      /dev/hadb_tbl01;
    meta-disk internal;
  }
  volume 8 {
    device    /dev/drbd9;
    disk      /dev/hadb_idx01;
    meta-disk internal;
  }
  volume 9 {
    device    /dev/drbd10;
    disk      /dev/hadb_tbl02;
    meta-disk internal;
  }
  volume 10 {
    device    /dev/drbd11;
    disk      /dev/hadb_idx02;
    meta-disk internal;
  }
  on hadb01 {
    address   172.16.0.21:7789;
    node-id   0;
  }
  on hadb02 {
    address   172.16.0.22:7789;
    node-id   1;
  }
}

DRBDのメタデータを作成する

実行系と待機系で，次のコマンドをOSのスーパユーザで実行してください。

drbdadm create-md r0/9
drbdadm create-md r0/10

DRBDのリソースを再設定する

実行系と待機系で，次のコマンドをOSのスーパユーザで実行してください。5.でリソース管理ファイルを編集したため，実行系と待機系の両方でDRBDのリソースを再設定します。

drbdadm adjust r0

DRBDのメタデータのカレントUUIDを作成する

実行系で，次のコマンドをOSのスーパユーザで実行してください。新しく追加したディスク上のDRBDメタデータのカレントUUIDを新しく作成し，同時に同期ビットマップをクリアします。

drbdadm new-current-uuid --clear-bitmap r0/9
drbdadm new-current-uuid --clear-bitmap r0/10

実行系（hadb01）のDRBDロールをセカンダリに変更する

実行系（hadb01）のDRBDロールをセカンダリに変更するために，系を切り替えます。

実行系（hadb01）で，HAモニタのmonswapコマンドを実行したあとにmonbeginコマンドを実行してください。

hadb02が実行系になり，hadb01が待機系になります

待機系（hadb01）を実行系に戻す

実行系（hadb02）で，HAモニタのmonswapコマンドを実行したあとにmonbeginコマンドを実行してください。

hadb01が実行系に戻ります。

■DBエリアの拡張

手順

DBエリアを拡張する

実行系のHADBサーバでadbmodareaコマンドを実行してDBエリアを拡張してください。

DBエリア追加・変更オプションの指定例を次に示します。

ADBUTBL01を拡張する場合

adbexpandarea -n ADBUTBL01 -v /dev/drbd9

ADBUIDX01を拡張する場合

adbexpandarea -n ADBUIDX01 -v /dev/drbd10

(b)　既存のディスクサイズを増やしてDBエリアを拡張する場合

既存のディスクサイズを増やしてDBエリアを拡張する手順を説明します。

＜ここの操作説明の前提条件＞

「図19‒7　AWS環境でのコールドスタンバイ構成例（クラウドストレージ機能を使用しない場合）」で示すとおり，hadb01が実行系で，hadb02が待機系であるとします。

手順

実行系のディスクサイズを拡張する

実行系で，拡張したいDBエリアのDBエリアファイルを格納しているディスク（EBS(gp3)）のサイズを増やしてください。

待機系のディスクサイズを拡張する

待機系で，拡張したいDBエリアのDBエリアファイルを格納しているディスク（EBS(gp3)）のサイズを増やしてください。

DRBDのリソースサイズを変更する※

実行系で，次のコマンドをOSのスーパユーザで実行してください。

drbdadm resize r0

DRBDの状態を確認する※

実行系で，次のコマンドをOSのスーパユーザで実行してください。リソースの同期が完了していることを確認します。

drbdadm status r0

コマンドの実行結果がすべてUpToDateの場合，リソースの同期は完了しています。

注※

作業表用DBエリアを拡張する場合は，DRBDに関する手順の実施は不要です。

19.22.8　データベースのバックアップおよび回復方法（AWS環境の場合）

ここでは，AWS環境でのバックアップの取得方法，およびバックアップを使用したデータベースの回復方法について説明します。

＜ここの操作説明の前提条件＞

クラウドストレージ機能を使用する場合

「図19‒6　AWS環境でのコールドスタンバイ構成例（クラウドストレージ機能を使用する場合）」で示すとおり，hadb01が実行系で，hadb02が待機系であるとします。

クラウドストレージ機能を使用しない場合

「図19‒7　AWS環境でのコールドスタンバイ構成例（クラウドストレージ機能を使用しない場合）」で示すとおり，hadb01が実行系で，hadb02が待機系であるとします。

(1)　バックアップの取得方法

メモ

バックアップを取得する前に，「10.3.1　バックアップの取得方法」の「(1)　バックアップを取得するタイミング」を参照して，バックアップ取得時の留意事項を確認してください。

手順

HADBサーバの稼働モードを静止モードへ変更する

次のコマンドを実行系のHADBサーバで実行してください。

adbchgsrvmode --quiescence

実行系のHADBサーバの稼働モードが静止モードに変更されます。

バックアップを取得する

＜クラウドストレージ機能を使用している場合＞

「22.1.1　バックアップの取得方法とデータベースの回復方法（AWS環境の場合）」の「(1)　バックアップの取得方法（AWS環境の場合）」の2.の方法でバックアップを取得してください。

重要

コールドスタンバイ構成の場合，次のバックアップ対象ファイルはEBSではなくEFSに格納されています。そのため，次のファイルのバックアップの取得方法は，上記の参照先に記載されている方法と異なります。

コマンドステータスファイル

システムログファイル

ステータスファイル

上記のファイルのバックアップを取得する際は，上記のファイルのコピーを取得してください。ファイルをコピーする場合は，スパースファイルにしないでください。

＜クラウドストレージ機能を使用していない場合＞

バックアップを取得するファイルの一覧については，「10.3.1　バックアップの取得方法」の「(2)　バックアップを取得する手順」を参照してください。

次のどちらかの方法でバックアップを取得します。

バックアップ対象ファイルが格納されているすべてのEBSのEBSスナップショットを取得する

EBSスナップショットを取得する方法については，AWSのドキュメントのAmazon EBSスナップショットを参照してください。

バックアップ対象のファイルをコピーする

ファイルをコピーする場合は，スパースファイルにしないでください。

重要

バックアップ対象ファイルの格納ディレクトリ下にあるファイルがシンボリックリンクの場合は，リンク先のファイル，またはブロックスペシャルファイルのバックアップを取得してください。

HADBサーバの稼働モードを元に戻す

次のコマンドを実行系のHADBサーバで実行してください。

adbchgsrvmode --normal

1.で変更した稼働モードを元に戻します。上記は，稼働モードを通常モードに戻す場合の例です。

(2)　バックアップからのデータベースの回復方法

メモ

バックアップからデータベースを回復する場合は，「10.3.2　バックアップからの回復方法」の内容も参照してください。

手順

コールドスタンバイ構成を正常終了する

正常終了方法については，「19.4.2　コールドスタンバイ構成の終了方法」の「(1)　コールドスタンバイ構成の終了手順」を参照してください。

コールドスタンバイ構成を正常終了しないでデータベースを回復した場合，データベースの内容が不整合となるおそれがあります。

バックアップからファイルを回復する

＜クラウドストレージ機能を使用している場合＞

「22.1.1　バックアップの取得方法とデータベースの回復方法（AWS環境の場合）」の「(2)　データベースの回復方法（AWS環境の場合）」の2.の方法でデータベースを回復してください。

重要

コールドスタンバイ構成の場合，次のファイルはEBSではなくEFSに格納されています。そのため，バックアップからファイルを回復する方法は，上記の参照先に記載されている方法と異なります。

コマンドステータスファイル

システムログファイル

ステータスファイル

バックアップから上記のファイルを回復する場合は，バックアップの取得時にコピーしておいたファイルを元の位置に戻してください。

＜クラウドストレージ機能を使用していない場合＞

EBSスナップショットでバックアップを取得している場合

EBSスナップショットを使用してEBSを復元してください。復元方法については，AWSのドキュメントのスナップショットからのAmazon EBSボリュームの復元およびAmazon EBSボリュームの初期化を参照してください。

バックアップ対象ファイルをコピーしている場合

コピーしたファイルを元の位置に戻してください。

udevルールファイルを変更する

EBSスナップショットからEBSを復元した場合，実行系のudevルールファイルに指定したEBSスナップショットの作成元のディスクを，復元したEBSのディスクになるように変更してください。

この操作は，OSのスーパユーザで実行してください。

実行系のOSを再起動する

変更したudevルールを反映させるために，実行系のOSを再起動してください。

この操作は，OSのスーパユーザで実行してください。

待機系のDRBDのローカルデータを無効化する

待機系で，次のコマンドをOSのスーパユーザで実行してください。

drbdadm invalidate r0

クラウドストレージ機能を使用している場合は，この操作は不要です。

コールドスタンバイ構成を正常開始する

正常開始方法については，「19.4.1　コールドスタンバイ構成の開始方法」の「(1)　コールドスタンバイ構成の開始手順」を参照してください。

稼働モードを通常モードに変更する

静止モードでバックアップを取得した場合，データベースを回復したあとにHADBサーバを開始すると，HADBサーバが静止モードのままとなっています。この場合，実行系のHADBサーバでadbchgsrvmodeコマンドを実行し，HADBサーバの稼働モードを通常モードに戻してください。

19.22.9　インスタンスを再起動する場合

実行系のインスタンスを再起動する必要がある場合は，計画系切り替えを実行して実行系のHADBサーバを正常終了してください。そのあとに，インスタンスを再起動してください。計画系切り替えについては，「19.13　コールドスタンバイ構成での計画系切り替え」を参照してください。

インスタンスの再起動の完了後，HAモニタを開始してHAモニタのmonbeginコマンドを実行してください。必要ならば，計画系切り替えを再度実行し，インスタンスを再起動した系を実行系に戻してください。

19.22.10　AWSの環境に起因するトラブル

AWSの環境に起因するトラブルが発生したときの対処方法を説明します。

■インスタンスが異常終了したときの対処方法

インスタンスの異常終了は系障害に該当します。新しいインスタンスを起動したあとに，HADBサーバを系復帰させてください。復帰手順については，「19.12.4　コールドスタンバイ構成への系復帰」を参照してください。

■EBSで障害が発生したときの対処方法

EBSで障害が発生した場合は，Amazon S3（Amazon Simple Storage Service）に保存しているバックアップを使用してデータを回復してください。回復手順については，「19.22.8　データベースのバックアップおよび回復方法（AWS環境の場合）」を参照してください。

■EBSが満杯になったときの対処方法

DBエリアファイルが原因の場合

DBエリアファイルの容量増加によってEBSが満杯になった場合は，「16.3.1　DBエリアファイルの容量増加が原因の場合」を参照して対処してください。

DBエリアファイル以外が原因の場合

DBエリアファイル以外のファイルの容量増加によってEBSが満杯になった場合は，「16.3.3　DBエリアファイル以外のファイルの容量増加が原因の場合」を参照して対処してください。

19.23　Azure環境でのコールドスタンバイ構成の運用

ここでは，Azure環境でのコールドスタンバイ構成の運用について説明します。

19.23.1　Azure環境でコールドスタンバイ構成を使用する場合の留意事項

「19.1　この章を読む際の留意事項」～「19.21　コールドスタンバイ構成で更新行のカラム化機能を使用する場合の運用」は，オンプレミス環境およびAzure環境共通の説明です。「19.23　Azure環境でのコールドスタンバイ構成の運用」では，Azure環境でコールドスタンバイ構成を使用する際の固有の運用を説明しています。

Azure環境の場合，系のリセットによる系切り替えが実行されます。

系のリセットによる系切り替えについては，マニュアルHAモニタパブリッククラウド編の【Azure】系障害時の系切り替えを参照してください。

系のリセットによる系切り替えを適用した際に必要なAzureの構成については，マニュアルHAモニタパブリッククラウド編のシステムの構築の構築の流れの系のリセットまたはネットワーク遮断をする場合を参照してください。

HADBのマニュアルを読む際，サーバマシンはAzureの仮想マシンと読み替えてください。

Azure環境でコールドスタンバイ構成を構築する場合，クラウドストレージ機能を使用します。クラウドストレージ機能については，「2.21.3　Azure環境でHADBサーバを使用する場合」の「(2)　Azure Blob StorageにDBエリアのデータを格納する場合（クラウドストレージ機能を使用する場合）」の「(a)　クラウドストレージ機能とは」を参照してください。

19.23.2　システム構成例

Azure環境でのコールドスタンバイ構成例を次の図に示します。

図19‒8　Azure環境でのコールドスタンバイ構成例

(1)　前提OSおよび前提ソフトウェア

Azure環境でのコールドスタンバイ構成の場合，実行系と待機系には次のOSおよびソフトウェアが必要になります。

RHEL 9

　Azure環境でクラウドストレージ機能を使用するため，上記のOSが必要になります。

HAモニタ 01-78以降

HADBでは，HAモニタのモニタモードの機能を使用し，実行系の障害を監視しています。実行系で障害が発生した場合，HAモニタの系切り替え機能を使用して，待機系に系切り替えをします。

実行系と待機系にインストールするHAモニタのバージョンは同じにしてください。

なお，RHEL 10では，Azure環境でのコールドスタンバイ構成は構築できません。

(2)　サーバ構成

「図19‒8　Azure環境でのコールドスタンバイ構成例」で示す構成例の場合，別々の可用性ゾーンに仮想マシンを1つずつ合計2つ用意し，各仮想マシンにHADBサーバをインストールしています。各HADBサーバは，2つの系（hadb01およびhadb02）で構成され，実行系はhadb01，待機系はhadb02になります。

実行系と待機系の仮想マシンの性能（CPU，メモリサイズなど）は同じである必要はありません。ただし，仮想マシンの性能が異なる場合，系が切り替わったあとにSQL文の処理性能に差異が発生するおそれがあります。そのため，できる限り実行系と待機系の仮想マシンの性能を同じにすることを推奨します。

メモ

以降の説明は，Standard_E8s_v4の仮想マシンを使用していることを前提としています。

(3)　ネットワーク構成

Azure環境でのコールドスタンバイ構成の場合，次に示すネットワークを使用します。

クライアント－サーバ間ネットワーク

監視パス

■クライアント－サーバ間ネットワーク

HADBクライアントとHADBサーバ間の通信で使用するネットワークです。

HADBクライアントは，エイリアスIPアドレスを使用してHADBサーバに接続します。そのため，マニュアルHAモニタパブリッククラウド編の【Azure】リソースの引き継ぎを参照して，エイリアスIPアドレスを設定してください。

「図19‒8　Azure環境でのコールドスタンバイ構成例」でのIPアドレス，およびポート番号の設定例を次の表に示します。

表19‒20　クライアント−サーバ間ネットワークのIPアドレスとポート番号の設定例

項番

設定対象

IPアドレス

ポート番号

1

クライアントマシン

10.196.108.111

設定不要

2

仮想マシンhadb01（実行系）

10.196.108.11

23650

3

仮想マシンhadb02（待機系）

10.196.108.12

23650

4

エイリアスIPアドレス

10.196.108.143

23650

■監視パス

HAモニタの監視パスとして使用するネットワークです。

ネットワーク構築をする際，複線にする必要がある場合は，LinuxのBonding機能を使用してください。

Bonding機能の詳細については，OSのマニュアルを参照してください。HAモニタの監視パスの設定については，マニュアルHAモニタパブリッククラウド編の監視パスの設定を参照してください。

「図19‒8　Azure環境でのコールドスタンバイ構成例」でのIPアドレス，およびポート番号の設定例を次の表に示します。

表19‒21　監視パスのIPアドレスとポート番号の設定例

項番

設定対象

IPアドレス

ポート番号

1

仮想マシンhadb01（実行系）のHAモニタの監視パス

172.16.0.11

7777

2

仮想マシンhadb02（待機系）のHAモニタの監視パス

172.16.0.12

7777

(4)　ストレージ構成

Azure環境でのコールドスタンバイ構成の場合，次のファイルシステム，ディスク，およびコンテナーを準備してください。

系ローカルのファイルシステム

「図19‒8　Azure環境でのコールドスタンバイ構成例」の場合，LOC011～LOC021，およびCCH011～CCH021が該当します。

系切り替え対象のファイルシステム

「図19‒8　Azure環境でのコールドスタンバイ構成例」の場合，FS001～FS003が該当します。

系ローカルのディスク（作業表用DBエリア用）

「図19‒8　Azure環境でのコールドスタンバイ構成例」の場合，WRK011およびWRK021が該当します。

コンテナー（作業表用DBエリアを除くDBエリア用）

「図19‒8　Azure環境でのコールドスタンバイ構成例」の場合，CNT001が該当します。

「図19‒8　Azure環境でのコールドスタンバイ構成例」の場合，次の表に示すファイルシステム，ディスク，およびコンテナーを準備してください。

表19‒22　ストレージ構成の例

項番

格納先

名称

対象の仮想マシン

用途

1

マネージドディスク（Premium SSD）

LOC011

仮想マシンhadb01（実行系）

系ローカルのファイルシステム

2

LOC021

仮想マシンhadb02（待機系）

3

FS001～FS003

仮想マシンhadb01（実行系）

仮想マシンhadb02（待機系）

系切り替え対象のファイルシステム

4

マネージドディスク（Premium SSD v2）

CCH011

仮想マシンhadb01（実行系）

系ローカルのファイルシステム（キャッシュファイル用）

5

CCH021

仮想マシンhadb02（待機系）

6

WRK011

仮想マシンhadb01（実行系）

系ローカルのディスク（作業表用DBエリア用）

7

WRK021

仮想マシンhadb02（待機系）

8

Azure Blob Storage

CNT001

仮想マシンhadb01（実行系）

仮想マシンhadb02（待機系）

コンテナー（作業表用DBエリアを除くDBエリア用）

9

Azure Files（NFS）

－

－

共有ファイルシステム

（凡例）

－：該当しません。

■マネージドディスク（Premium SSD）の使い方

マネージドディスク（Premium SSD）は，次のファイルシステムとして使用します。

系ローカルのファイルシステム

各仮想マシンのOS用の領域（ルートボリューム）として使用するマネージドディスク（Premium SSD）上のファイルシステム（/home下など）に，次のディレクトリを作成します。

サーバディレクトリ

統一フォーマット用監査証跡の出力先ディレクトリ（監査証跡機能を使用する場合に必要）

系切り替え対象のファイルシステム

次の3つの系切り替え対象のファイルシステムを実行系および待機系から参照できるように，可用性ゾーン間で共有したマネージドディスク（Premium SSD）上に作成してください。可用性ゾーン間で共有するには，冗長性オプションにゾーン冗長ストレージ（ZRS）を選択してください。

DBディレクトリ用のファイルシステム

FS001：ここでは，VGの名称をvg_hadb01，LVの名称をhadb_dbとします。

作業用一時ファイルを格納するファイルシステム

FS002：ここでは，VGの名称をvg_hadb02，LVの名称をhadb_workareaとします。

作業用一時ファイルを格納するファイルシステムを系切り替え対象としない場合は，実行系と待機系のそれぞれの系ローカルのファイルシステム上に作業用一時ファイルの格納先を用意してください。

監査証跡ファイルを出力するファイルシステム（監査証跡機能を使用する場合に必要）

FS003：ここでは，VGの名称をvg_hadb03，LVの名称をhadb_auditとします。

系切り替え対象のファイルシステムを作成する際は，マニュアルHAモニタパブリッククラウド編のマネージドディスクの共有を参照してください。

■マネージドディスク（Premium SSD v2）の使い方

マネージドディスク（Premium SSD v2）は，次のファイルシステムおよびディスクとして使用します。

系ローカルのファイルシステム（キャッシュファイル用）

キャッシュファイルの格納先とするファイルシステムを，マネージドディスク（Premium SSD v2）上に仮想マシンごとに作成してください。

ここでは，このファイルシステムのマウントポイントを/HADB/ADBCCHとします。

重要

このファイルシステムは，キャッシュファイルの格納先ディレクトリを配置する以外の用途には使用しないでください。

系ローカルのディスク（作業表用DBエリア用）

実行系および待機系のそれぞれにマネージドディスク（Premium SSD v2）を用意して，作業表用DBエリア（ADBWRK）を構成するディスク（WRK011およびWRK021）とします。

■Azure Blob Storageの使い方

次のDBエリアのデータを格納するBLOBの格納先となるコンテナーを用意します。

データ用DBエリア

マスタディレクトリ用DBエリア

ディクショナリ用DBエリア

システム表用DBエリア

■Azure Files（NFS）の使い方

Azure Files（NFS）には，次のファイルシステムを配置します。

データインポートで使用する入力データファイルを格納するファイルシステム

ADB_CSVREAD関数で使用するCSVファイルを格納するファイルシステム（ADB_CSVREAD関数を使用した検索をする場合に必要）

監査証跡の保存先ディレクトリを作成するファイルシステム（監査証跡機能を使用する場合に必要）

外部データファイルを格納するファイルシステム（ファイルストレージに外部データを格納している場合）

実行系と待機系で，同じパスのディレクトリにマウントしてください。

19.23.3　コールドスタンバイ構成の構築（Azure環境の場合）

Azure環境でのコールドスタンバイ構成の構築手順について説明します。

＜ここの操作説明の前提条件＞

「図19‒8　Azure環境でのコールドスタンバイ構成例」で示すとおり，hadb01が実行系で，hadb02が待機系であるとします。

(1)　HAモニタのインストール

実行系および待機系の仮想マシンにHAモニタをインストールしてください。HAモニタのインストール方法については，マニュアルHAモニタパブリッククラウド編のシステムの構築を参照してください。

(2)　HADBサーバとHADBクライアントのインストールおよび環境設定

HADBサーバのインストールおよび環境設定

HADBサーバをインストールする前に，実行系および待機系で環境変数の設定を実施してください。

次に，実行系および待機系の仮想マシンにHADBサーバをインストールし，環境設定を行ってください。HADBサーバのインストール，および環境設定については，「19.3.2　HADBサーバのインストールおよび環境設定」を参照してください。

■サーバ定義の指定について

実行系と待機系の両方のHADBサーバでサーバ定義を作成してください。

サーバ定義を指定する際は，「19.3.5　各HADBサーバでのサーバ定義の作成」を参照してください。

実行系のHADBサーバ（hadb01）のadb_blk_path_wrkオペランドには，WRK011に対応するディスクの絶対パスを指定してください。待機系のHADBサーバ（hadb02）のadb_blk_path_wrkオペランドには，WRK021に対応するディスクの絶対パスを指定してください。

（例）

set adb_blk_path_wrk = /dev/hadb_wrk

クラウドストレージ機能に関するオペランドを各系のサーバ定義に指定してください。クラウドストレージ機能に関するオペランドについては，「7.2.17　クラウドストレージ機能に関するオペランド（set形式）」を参照してください。

クラウドストレージ機能に関するオペランドの指定例を次に示します。

（例）

set adb_sys_cld_az_storage_account = adbstorageaccount
set adb_sys_cld_az_container = adbcontainer
set adb_sys_cld_cache_path = /HADB/ADBCCH

HADBクライアントのインストールおよび環境設定

HADBクライアントのインストール，および環境設定については，マニュアルHADB　AP開発ガイドのHADBクライアントの環境設定（ODBCドライバおよびCLI関数を使用する場合）を参照してください。

(3)　udevルールの設定

各仮想マシンで使用するマネージドディスクのデバイス名を固定するために，実行系と待機系でudevルールを設定してください。

手順

次のすべての操作は，OSのスーパユーザで実行してください。

udevルールファイルを作成する

/etc/udev/rules.dディレクトリ下に，ディスクのデバイス名を固定するためのudevルールファイル（/etc/udev/rules.d/99-hadb.rules）を作成してください。

＜udevルールファイルの指定例＞

ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="XXXXXXXXXXXX", SYMLINK+="hadb_db"        ...[a]
ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="YYYYYYYYYYYY", SYMLINK+="hadb_workarea"  ...[b]
ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="ZZZZZZZZZZZZZZ", SYMLINK+="hadb_audit"   ...[c]
ACTION=="add|change", SUBSYSTEMS=="block", ENV{ID_SERIAL}=="WWWWWWWWW", SYMLINK+="hadb_wrk"          ...[d]

［説明］

下線部分には，DBディレクトリ用のファイルシステムで使用するマネージドディスク（Premium SSD）を指定します。

下線部分には，作業用一時ファイルを格納するファイルシステムで使用するマネージドディスク（Premium SSD）を指定します。

下線部分には，監査証跡ファイルを出力するファイルシステムで使用するマネージドディスク（Premium SSD）を指定します。

下線部分には，作業表用DBエリアで使用するマネージドディスク（Premium SSD v2）を指定します。

実行系と待機系のOSを再起動する

設定したudevルールを反映させるために，実行系と待機系のOSを再起動してください。

(4)　HAモニタの環境設定

実行系と待機系で，HAモニタの環境設定をしてください。

環境変数の設定

「19.3.4　HAモニタの環境設定」の「(1)　環境変数の設定」を参照してください。

sysdefファイルの指定

「19.3.4　HAモニタの環境設定」の「(2)　sysdefファイルの指定」を参照してください。

ただし，Azure環境では，次に示すオペランドの指定値が異なります。

public_cloud

useを指定します。

cpudown

このオペランドは省略してください。

fence_reset，fence_scsi，fence_lan，fence_network

これらのオペランドは省略してください。

メモ

上記のオペランドの詳細については，マニュアルHAモニタ Linux(R)(x86)編のHAモニタの環境設定（sysdef），およびマニュアルHAモニタパブリッククラウド編のパブリッククラウド環境固有のHAモニタの環境設定を参照してください。

serversファイルの指定

serversファイルに指定するオペランドについては，「19.3.4　HAモニタの環境設定」の「(3)　serversファイルの指定」を参照してください。ただし，次のオペランドについては指定値が決まっています。

patrolcommand

このオペランドは省略してください。

ptrlcmd_ex

HADB用の設定を記載したサーバの監視コマンドの絶対パスを指定します。

サーバの監視コマンドはひな形を基に作成してください。作成方法については，「(5)　HAモニタの各ファイルの指定例」の「(d)　コマンド用環境変数定義ファイルおよび各コマンドファイルの指定例」，およびマニュアルHAモニタ Linux(R)(x86)編のサーバの監視コマンドの作成を参照してください。

ptrlcmd_ex_inter

3を指定します。

ptrlcmd_ex_retry

0を指定します。

ptrlcmd_ex_tmout

5を指定します。

scsi_device，dmmp_device

これらのオペランドは省略してください。

disk

次に示すファイルシステムを作成したVGの絶対パスを指定します。

DBディレクトリ用のファイルシステム

作業用一時ファイルを格納するファイルシステム

監査証跡ファイルを出力するファイルシステム（監査証跡機能を使用する場合に必要）

fs_name

次に示すファイルシステムに対応する論理ボリュームの絶対パスを指定します。

DBディレクトリ用のファイルシステム

作業用一時ファイルを格納するファイルシステム

監査証跡ファイルを出力するファイルシステム（監査証跡機能を使用する場合に必要）

fs_mount_dir

次に示すファイルシステムをマウントするディレクトリのパスを指定します。実行系と待機系で同じパスを指定してください。

DBディレクトリ用のファイルシステム

作業用一時ファイルを格納するファイルシステム

監査証跡ファイルを出力するファイルシステム（監査証跡機能を使用する場合に必要）

fs_mount_opt

次に示すファイルシステムをマウントするためのマウントオプション（mountコマンドのオプション）を指定します。

DBディレクトリ用のファイルシステム

作業用一時ファイルを格納するファイルシステム

監査証跡ファイルを出力するファイルシステム（監査証跡機能を使用する場合に必要）

メモ

上記のオペランドの詳細については，マニュアルHAモニタ Linux(R)(x86)編のサーバ対応の環境設定（servers），およびマニュアルHAモニタパブリッククラウド編のパブリッククラウド環境固有のサーバの環境設定を参照してください。

HAモニタの接続構成設定ファイル（connectionファイル）の作成

接続構成設定ファイルを手動で作成してください。手動での作成方法については，マニュアルHAモニタ Linux(R)(x86)編のHAモニタの接続構成設定ファイルの作成を参照してください。

接続構成設定ファイルには，実行系および待機系に作成したsysdefファイルのnameオペランドに指定したホスト名と，監視パスに使用するIPアドレスの組を指定します。

コマンド用環境変数定義およびコマンドの作成

HAモニタとの連携のために，次のコマンド用環境変数定義およびコマンドを作成してください。

コマンド用環境変数定義

サーバの起動コマンド

サーバの停止コマンド

サーバの監視コマンド

作成方法は，「19.3.4　HAモニタの環境設定」の「(4)　コマンド用環境変数定義およびコマンドの作成」を参照してください。

ただし，Azure環境では，サーバの監視コマンドファイルのひな形は$ADBDIR/sample/scripts/coldstandby_patrol_ex.shです。このひな形をコピーして該当個所を修正してください。サーバの監視コマンドファイルの指定例については，「(5)　HAモニタの各ファイルの指定例」の「(d)　コマンド用環境変数定義ファイルおよび各コマンドファイルの指定例」を参照してください。

(5)　HAモニタの各ファイルの指定例

次のファイルの指定例を示します。

sysdefファイル

serversファイル

HAモニタの接続構成設定ファイル

コマンド用環境変数定義ファイル（この例では/HADB/scripts/coldstandby.env）

サーバの起動コマンドファイル（この例では/HADB/scripts/coldstandby_act.sh）

サーバの停止コマンドファイル（この例では/HADB/scripts/coldstandby_term.sh）

サーバの監視コマンドファイル（この例では/HADB/scripts/coldstandby_patrol_ex.sh）

ここで説明する指定例は，「図19‒8　Azure環境でのコールドスタンバイ構成例」のシステム構成を前提としています。

(a)　sysdefファイルの指定例

■実行系（hadb01）のsysdefファイルの指定例

environment  name hadb01,
             address 1,                 ...1
             patrol 60,
             lan path11,                ...2
             lanport HAmon1;            ...3
function     pathpatrol 240,
             connect_retry 5:200,
             monbegin_restart nouse,
             termcmd_at_abort nouse,
             public_cloud use;          ...4

［説明］

この系のリセット優先度を指定します。この系は，実行系のため，リセット優先度をいちばん高くする必要があるので1を指定します。

HAモニタの監視パスとして使用するLANのホスト名を指定します。IPアドレス172.16.0.11に対応するホスト名path11を指定します。

HAモニタの監視パスとして使用するLANのサービス名を指定します。ポート番号7777に対応するサービス名HAmon1を指定します。

Azure環境でHAモニタを使用するため，useを指定します。

■待機系（hadb02）のsysdefファイルの指定例

environment  name hadb02,
             address 2,                 ...1
             patrol 60,
             lan path21,                ...2
             lanport HAmon1;            ...3
function     pathpatrol 240,
             connect_retry 5:200,
             monbegin_restart nouse,
             termcmd_at_abort nouse,
             public_cloud use;          ...4

［説明］

この系のリセット優先度を指定します。この系は，待機系のため，2を指定します。

HAモニタの監視パスとして使用するLANのホスト名を指定します。IPアドレス172.16.0.12に対応するホスト名path21を指定します。

HAモニタの監視パスとして使用するLANのサービス名を指定します。ポート番号7777に対応するサービス名HAmon1を指定します。

Azure環境でHAモニタを使用するため，useを指定します。

(b)　serversファイルの指定例

■実行系（hadb01）のserversファイルの指定例

server name /HADB/server,                                      ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb01:/dev/vg_hadb02:/dev/vg_hadb03,      ...2
       lan_updown use,
       fs_name /dev/vg_hadb01/hadb_db:/dev/vg_hadb02/hadb_workarea:/dev/vg_hadb03/hadb_audit,   ...3
       fs_mount_dir /HADB/db:/mnt/workarea:/mnt/audit,         ...4
       fs_mount_opt "-t xfs -o defaults,noatime,_netdev":"-t xfs -o defaults,noatime,_netdev":"-t xfs -o defaults,noatime,_netdev",   ...5
       actcommand "/HADB/scripts/coldstandby_act.sh",          ...6
       termcommand "/HADB/scripts/coldstandby_term.sh",        ...7
       ptrlcmd_ex "/HADB/scripts/coldstandby_patrol_ex.sh",    ...8
       ptrlcmd_ex_inter 3,
       ptrlcmd_ex_retry 0,
       ptrlcmd_ex_tmout 5,
       servexec_retry 2,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use:nouse:use,                                  ...9
       fs_neck use:nouse:use,                                  ...10
       initial online;                                         ...11

［説明］

サーバディレクトリの絶対パスを指定します。

DBディレクトリ用のファイルシステム，作業用一時ファイルを格納するファイルシステム，および監査証跡ファイルを出力するファイルシステムを作成したVGの絶対パスを指定します。

DBディレクトリ用のファイルシステム，作業用一時ファイルを格納するファイルシステム，および監査証跡ファイルを出力するファイルシステムを作成したLVの絶対パスを指定します。

DBディレクトリ用のファイルシステム，作業用一時ファイルを格納するファイルシステム，および監査証跡ファイルを出力するファイルシステムをマウントするマウントポイントの絶対パスを指定します。

DBディレクトリ用のファイルシステム，作業用一時ファイルを格納するファイルシステム，および監査証跡ファイルを出力するファイルシステムをマウントするためのmountコマンドのオプションを指定します。

コールドスタンバイ構成で使用するサーバの起動コマンドの絶対パスを指定します。

コールドスタンバイ構成で使用するサーバの停止コマンドの絶対パスを指定します。

コールドスタンバイ構成で使用するサーバの監視コマンドの絶対パスを指定します。

DBディレクトリ用のファイルシステムおよび監査証跡ファイルを出力するファイルシステムを作成したVGに対しては，useを指定します。作業用一時ファイルを格納するファイルシステムを作成したVGに対しては，nouseを指定します。

DBディレクトリ用のファイルシステム，および監査証跡ファイルを出力するファイルシステムに対しては，useを指定します。作業用一時ファイルを格納するファイルシステムに対しては，nouseを指定します。

実行系とするため，onlineを指定します。

■待機系（hadb02）のserversファイルの指定例

server name /HADB/server,                                      ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb01:/dev/vg_hadb02:/dev/vg_hadb03,      ...2
       lan_updown use,
       fs_name /dev/vg_hadb01/hadb_db:/dev/vg_hadb02/hadb_workarea:/dev/vg_hadb03/hadb_audit,   ...3
       fs_mount_dir /HADB/db:/mnt/workarea:/mnt/audit,         ...4
       fs_mount_opt "-t xfs -o defaults,noatime,_netdev":"-t xfs -o defaults,noatime,_netdev":"-t xfs -o defaults,noatime,_netdev",   ...5
       actcommand "/HADB/scripts/coldstandby_act.sh",          ...6
       termcommand "/HADB/scripts/coldstandby_term.sh",        ...7
       ptrlcmd_ex "/HADB/scripts/coldstandby_patrol_ex.sh",    ...8
       ptrlcmd_ex_inter 3,
       ptrlcmd_ex_retry 0,
       ptrlcmd_ex_tmout 5,
       servexec_retry 2,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use:nouse:use,                                  ...9
       fs_neck use:nouse:use,                                  ...10
       initial standby;                                        ...11

［説明］

サーバディレクトリの絶対パスを指定します。

DBディレクトリ用のファイルシステム，作業用一時ファイルを格納するファイルシステム，および監査証跡ファイルを出力するファイルシステムを作成したVGの絶対パスを指定します。

DBディレクトリ用のファイルシステム，作業用一時ファイルを格納するファイルシステム，および監査証跡ファイルを出力するファイルシステムを作成したLVの絶対パスを指定します。

DBディレクトリ用のファイルシステム，作業用一時ファイルを格納するファイルシステム，および監査証跡ファイルを出力するファイルシステムをマウントするマウントポイントの絶対パスを指定します。

DBディレクトリ用のファイルシステム，作業用一時ファイルを格納するファイルシステム，および監査証跡ファイルを出力するファイルシステムをマウントするためのmountコマンドのオプションを指定します。

コールドスタンバイ構成で使用するサーバの起動コマンドの絶対パスを指定します。

コールドスタンバイ構成で使用するサーバの停止コマンドの絶対パスを指定します。

コールドスタンバイ構成で使用するサーバの監視コマンドの絶対パスを指定します。

DBディレクトリ用のファイルシステムおよび監査証跡ファイルを出力するファイルシステムを作成したVGに対しては，useを指定します。作業用一時ファイルを格納するファイルシステムを作成したVGに対しては，nouseを指定します。

DBディレクトリ用のファイルシステム，および監査証跡ファイルを出力するファイルシステムに対しては，useを指定します。作業用一時ファイルを格納するファイルシステムに対しては，nouseを指定します。

待機系とするため，standbyを指定します。

(c)　HAモニタの接続構成設定ファイルの指定例

HAモニタの接続構成設定ファイル（connectionファイル）の指定例を次に示します。指定内容はすべての系で同じにしてください。

hadb01 LAN 172.16.0.11;     ...1
hadb02 LAN 172.16.0.12;     ...2

［説明］

実行系（hadb01）の監視パスで使用するIPアドレス172.16.0.11を指定します。

待機系（hadb02）の監視パスで使用するIPアドレス172.16.0.12を指定します。

HAモニタの接続構成設定ファイルの指定方法の詳細については，マニュアルHAモニタ Linux(R)(x86)編のHAモニタの接続構成設定ファイルの作成を参照してください。

(d)　コマンド用環境変数定義ファイルおよび各コマンドファイルの指定例

コマンド用環境変数定義ファイルの指定例

指定例については，「19.3.4　HAモニタの環境設定」の「(5)　各ファイルの指定例（系のリセットを使用する場合）」の「(c)　コマンド用環境変数定義ファイルの指定例」を参照してください。

サーバの起動コマンドファイルの指定例

指定例については，「19.3.4　HAモニタの環境設定」の「(5)　各ファイルの指定例（系のリセットを使用する場合）」の「(d)　サーバの起動コマンドファイルの指定例」を参照してください。

サーバの停止コマンドファイルの指定例

指定例については，「19.3.4　HAモニタの環境設定」の「(5)　各ファイルの指定例（系のリセットを使用する場合）」の「(e)　サーバの停止コマンドファイルの指定例」を参照してください。

サーバの監視コマンドファイルの指定例

この例では，サーバの監視コマンドを/HADB/scripts/coldstandby_patrol_ex.shに格納しています。指定内容は，実行系と待機系で同じにしてください。

＜サーバの監視コマンドファイルの指定例＞

#!/bin/sh

# Sample of the ptrlcmd_ex for HADB

SU=/bin/su

# Setting environment variables for HADB
source /HADB/scripts/coldstandby.env                ...1

# Execute adbmonitor command for active system
$SU - $ADBMGR -c "'$ADBDIR'/bin/adbmonitor -n -i"
ADBMONRES=$?
if [ "$ADBMONRES" = "0" -o "$ADBMONRES" = "4" ]
then
  exit 0
else
  exit $ADBMONRES
fi

［説明］

下線部分を修正します。

source文にコマンド用環境変数定義の絶対パス/HADB/scripts/coldstandby.envを指定します。

(6)　HAモニタの起動設定

HAモニタの起動設定については，「19.3.4　HAモニタの環境設定」の「(7)　HAモニタの起動設定」を参照してください。

(7)　データベースの作成

データベースの作成作業の流れを次に示します。

各ファイルシステムを作成する

実行系のデータベースを初期設定する

待機系のデータベースを初期設定する

作業用一時ファイルを格納するファイルシステムをマウントおよびアンマウントする

監査証跡ファイルを出力するファイルシステムをマウントおよびアンマウントする

共有するファイルシステムを構築する

各作業を以降で説明します。

重要

以降の作業を実施する前に，各仮想マシンで共有するマネージドディスクにアタッチしておく必要があります。

(a)　各ファイルシステムの作成

「19.23.2　システム構成例」の「(4)　ストレージ構成」に示す各ファイルシステムを初期化します。

mkfs -t xfs /dev/vg_hadb01/hadb_db

上記は，DBディレクトリ用のLVとして作成した/dev/vg_hadb01/hadb_dbをXFSのファイルシステムで初期化する場合のコマンドの例です。

(b)　実行系のデータベースの初期設定

実行系のデータベースの初期設定の手順を説明します。

手順

DBディレクトリ用のファイルシステムをマウントする

実行系で，次のコマンドをOSのスーパユーザで実行してください。

DBディレクトリ用のマウントポイントを作成する

mkdir -p /HADB/db

DBディレクトリ用のファイルシステムをマウントする

mount /dev/vg_hadb01/hadb_db /HADB/db -t xfs -o defaults,noatime,_netdev

DBディレクトリのオーナーを変更する

使用するHADB管理者とHADB管理グループを指定します。HADB管理者をadbmanager，HADB管理グループをadbgroupとしたコマンド例を次に示します。

chown adbmanager.adbgroup /HADB/db

データベースを初期設定する

実行系でadbinitコマンドを実行して，実行系のデータベースを初期設定してください。adbinitコマンドの初期設定オプションの指定例を次に示します。

この操作は，HADB管理者のOSユーザで実行してください。

set adb_init_dbarea_initialize = Y
set adb_sys_cld_az_storage_account = adbstorageaccount   ...a
set adb_sys_cld_az_container = adbcontainer              ...b
set adb_init_cld_cache_path = /HADB/ADBCCH               ...c
adbinitdbarea -n ADBUTBL01 -p 32 -s 32                   ...d
adbinitdbarea -n ADBUIDX01 -p 32 -s 32                   ...d

［説明］

Azure Blob Storageのストレージアカウント名（adbstorageaccount）を指定します。

Azure Blob Storageのコンテナー名（adbcontainer）を指定します。

キャッシュファイルの格納先ディレクトリ名（/HADB/ADBCCH）を指定します。

データ用DBエリアの定義を指定します。DBエリアのページサイズには32キロバイト，セグメントサイズには32メガバイトを指定します。

メモ

adb_init_wrk_blk_pathオペランドの指定は不要です。

重要

DBディレクトリ用のマウントポイントにDBディレクトリ用のファイルシステムがマウントされていることを確認してください。

DBディレクトリ用のファイルシステムをアンマウントする

実行系で，次のコマンドをOSのスーパユーザで実行してください。

umount /HADB/db

(c)　待機系のデータベースの初期設定

待機系のデータベースの初期設定の手順を説明します。

手順

以下のすべての操作は，OSのスーパユーザで実行してください。

DBディレクトリ用のファイルシステムをマウントする

待機系でDBディレクトリ用のファイルシステムをマウントしてください。実行系と同じパスになるようにマウントポイントを作成してください。

メモ

待機系では，DBディレクトリ用のファイルシステムのマウントポイントを作成するだけで，adbinitコマンドは実行しません。

DBディレクトリ用のファイルシステムをアンマウントする

待機系でDBディレクトリ用のファイルシステムをアンマウントしてください。

メモ

ファイルシステムをマウントまたはアンマウントする方法については，「(b)　実行系のデータベースの初期設定」を参照してください。

(d)　作業用一時ファイルを格納するファイルシステムのマウントおよびアンマウント

作業用一時ファイルを格納するファイルシステムを系切り替え対象とする場合は，ここで説明する作業を実施してください。

手順

以下のすべての操作は，OSのスーパユーザで実行してください。

実行系で，作業用一時ファイルを格納するファイルシステムをマウントおよびアンマウントする

実行系で，作業用一時ファイルを格納するファイルシステムをマウントしたあとにアンマウントしてください。実行系と待機系で同じパスになるようにマウントポイントを作成してください。

待機系で，作業用一時ファイルを格納するファイルシステムをマウントおよびアンマウントする

待機系で，作業用一時ファイルを格納するファイルシステムをマウントしたあとにアンマウントしてください。実行系と待機系で同じパスになるようにマウントポイントを作成してください。

メモ

ファイルシステムをマウントまたはアンマウントする方法については，「(b)　実行系のデータベースの初期設定」を参照してください。

(e)　監査証跡ファイルを出力するファイルシステムのマウントおよびアンマウント

監査証跡機能を使用する場合は，ここで説明する作業を実施してください。

手順

以下のすべての操作は，OSのスーパユーザで実行してください。

実行系で，監査証跡ファイルを出力するファイルシステムをマウントおよびアンマウントする

実行系で，監査証跡ファイルを出力するファイルシステムをマウントしたあとにアンマウントしてください。実行系と待機系で同じパスになるようにマウントポイントを作成してください。

待機系で，監査証跡ファイルを出力するファイルシステムをマウントおよびアンマウントする

待機系で，監査証跡ファイルを出力するファイルシステムをマウントしたあとにアンマウントしてください。実行系と待機系で同じパスになるようにマウントポイントを作成してください。

メモ

ファイルシステムをマウントまたはアンマウントする方法については，「(b)　実行系のデータベースの初期設定」を参照してください。

(f)　共有するファイルシステムの構築

共有するファイルシステムを構築する手順を説明します。

手順

以下のすべての操作は，OSのスーパユーザで実行してください。

共有するファイルシステムを実行系で構築する

実行系と待機系で，次に示すファイルシステムを共有します。

データインポートで使用する入力ファイルを格納するファイルシステム

ADB_CSVREAD関数で使用するCSVファイルを格納するファイルシステム（ADB_CSVREAD関数を使用した検索をする場合に必要）

監査証跡ファイルを出力するファイルシステム（監査証跡機能を使用する場合に必要）

外部データファイルを格納するファイルシステム（ファイルストレージに外部データを格納している場合）

これらのファイルシステムをAzure Files（NFS）で構築してください。

ファイルシステムを共有化する

実行系と待機系で共有するファイルシステムを共有してください。

1.で作成したファイルシステムを，実行系と待機系で同じパスとなるようにマウントしてください。実行系と待機系の両方でこの作業を実施してください。

19.23.4　データ用DBエリアの追加，削除，拡張

ここでは，Azure環境でのデータ用DBエリアの追加，削除，拡張手順を説明します。

(1)　データ用DBエリアの追加

実行系のHADBサーバでadbmodareaコマンドを実行してデータ用DBエリアを追加してください。DBエリア追加・変更オプションの指定例を次に示します。

ADBUTBL02を追加する場合

adbaddarea -n ADBUTBL02 -p 32 -s32

ADBUIDX02を追加する場合

adbaddarea -n ADBUIDX02 -p 32 -s32

(2)　データ用DBエリアの削除

実行系のHADBサーバでadbmodareaコマンドを実行してデータ用DBエリアを削除してください。DBエリア追加・変更オプションの指定例を次に示します。

ADBUTBL02を削除する場合

adbrmarea -n ADBUTBL02

ADBUIDX02を削除する場合

adbrmarea -n ADBUIDX02

(3)　データ用DBエリアの拡張

実行系のHADBサーバでadbmodareaコマンドを実行してデータ用DBエリアを拡張してください。DBエリア追加・変更オプションの指定例を次に示します。

ADBUTBL02を拡張する場合

adbexpandarea -n ADBUTBL02

ADBUIDX02を拡張する場合

adbexpandarea -n ADBUIDX02

19.23.5　データベースのバックアップおよび回復方法（Azure環境の場合）

ここでは，Azure環境でのバックアップの取得方法，およびバックアップを使用したデータベースの回復方法について説明します。

＜ここの操作説明の前提条件＞

「図19‒8　Azure環境でのコールドスタンバイ構成例」で示すとおり，hadb01が実行系で，hadb02が待機系であるとします。

(1)　バックアップの取得方法

メモ

バックアップを取得する前に，「10.3.1　バックアップの取得方法」の「(1)　バックアップを取得するタイミング」を参照して，バックアップ取得時の留意事項を確認してください。

手順

HADBサーバの稼働モードを静止モードへ変更する

次のコマンドを実行系のHADBサーバで実行してください。

adbchgsrvmode --quiescence

実行系のHADBサーバの稼働モードが静止モードに変更されます。

バックアップを取得する

「22.1.2　バックアップの取得方法とデータベースの回復方法（Azure環境の場合）」の「(1)　バックアップの取得方法（Azure環境の場合）」の2.の方法でバックアップを取得してください。

HADBサーバの稼働モードを元に戻す

次のコマンドを実行系のHADBサーバで実行してください。

adbchgsrvmode --normal

1.で変更した稼働モードを元に戻します。上記は，稼働モードを通常モードに戻す場合の例です。

(2)　バックアップからのデータベースの回復方法

メモ

バックアップからデータベースを回復する場合は，「10.3.2　バックアップからの回復方法」の内容も参照してください。

手順

コールドスタンバイ構成を正常終了する

正常終了方法については，「19.4.2　コールドスタンバイ構成の終了方法」の「(1)　コールドスタンバイ構成の終了手順」を参照してください。

コールドスタンバイ構成を正常終了しないでデータベースを回復した場合，データベースの内容が不整合となるおそれがあります。

バックアップからファイルを回復する

「22.1.2　バックアップの取得方法とデータベースの回復方法（Azure環境の場合）」の「(2)　データベースの回復方法（Azure環境の場合）」の2.の方法でデータベースを回復してください。

udevルールファイルを変更する

スナップショットからマネージドディスクを復元した場合，実行系のudevルールファイルに指定したスナップショットの作成元のディスクを，復元したマネージドディスクになるように変更してください。

この操作は，OSのスーパユーザで実行してください。

実行系のOSを再起動する

変更したudevルールを反映させるために，実行系のOSを再起動してください。

この操作は，OSのスーパユーザで実行してください。

コールドスタンバイ構成を正常開始する

正常開始方法については，「19.4.1　コールドスタンバイ構成の開始方法」の「(1)　コールドスタンバイ構成の開始手順」を参照してください。

稼働モードを通常モードに変更する

静止モードでバックアップを取得した場合，データベースを回復したあとにHADBサーバを開始すると，HADBサーバが静止モードのままとなっています。この場合，実行系のHADBサーバでadbchgsrvmodeコマンドを実行し，HADBサーバの稼働モードを通常モードに戻してください。

19.23.6　仮想マシンを再起動する場合

実行系の仮想マシンを再起動する必要がある場合は，計画系切り替えを実行して実行系のHADBサーバを正常終了してください。そのあとに，仮想マシンを再起動してください。計画系切り替えについては，「19.13　コールドスタンバイ構成での計画系切り替え」を参照してください。

仮想マシンの再起動の完了後，HAモニタを開始してHAモニタのmonbeginコマンドを実行してください。必要ならば，計画系切り替えを再度実行し，仮想マシンを再起動した系を実行系に戻してください。

19.23.7　Azureの環境に起因するトラブル

Azureの環境に起因するトラブルが発生したときの対処方法を説明します。

■仮想マシンが異常終了したときの対処方法

仮想マシンの異常終了は系障害に該当します。新しい仮想マシンを起動したあとに，HADBサーバを系復帰させてください。復帰手順については，「19.12.4　コールドスタンバイ構成への系復帰」を参照してください。

■マネージドディスクで障害が発生したときの対処方法

マネージドディスクで障害が発生した場合は，バックアップを使用してデータを回復してください。回復手順については，「19.23.5　データベースのバックアップおよび回復方法（Azure環境の場合）」の「(2)　バックアップからのデータベースの回復方法」を参照してください。

■マネージドディスクが満杯になったときの対処方法

DBエリアファイルが原因の場合

DBエリアファイルの容量増加によってマネージドディスクが満杯になった場合は，「16.3.1　DBエリアファイルの容量増加が原因の場合」を参照して対処してください。

DBエリアファイル以外が原因の場合

DBエリアファイル以外のファイルの容量増加によってマネージドディスクが満杯になった場合は，「16.3.3　DBエリアファイル以外のファイルの容量増加が原因の場合」を参照して対処してください。

第8編　DockerおよびKubernetes編

20　DockerおよびKubernetesを使用したHADBの運用

この章では，DockerおよびKubernetesを使用したHADBの運用方法について説明します。

20.1　この章を読む際の留意事項

DockerおよびKubernetesを使用したHADBの運用方法の説明は，DockerおよびKubernetesについての知識があることを前提としています。DockerおよびKubernetesについては，それぞれの公式ドキュメントを参照してください。

20.2　DockerおよびKubernetesを使用したシステム構成例

DockerおよびKubernetesを使用したシステム構成例を次の図に示します。

図20‒1　DockerおよびKubernetesを使用したシステム構成例

注※

データベース初期化コンテナは，必要に応じて起動してください。

20.2.1　前提OSおよび前提ソフトウェア

DockerおよびKubernetes上でHADBを使用する場合の前提OSと，前提ソフトウェアを次に示します。

前提OS

ホストOS：RHEL 8.1以降

コンテナ内OS：RHEL 8.1以降

前提ソフトウェア

Docker：18.06.1以降

Kubernetes：1.13.1以降

20.2.2　ノード構成

「図20‒1　DockerおよびKubernetesを使用したシステム構成例」で示す構成例の場合，Kubernetesマスタノードに対して，1つのKubernetesワーカーノードで構成されています。

HADB用のコンテナが起動するホストOSのホスト名はhost01となります。

20.2.3　コンテナ構成

「図20‒1　DockerおよびKubernetesを使用したシステム構成例」で示す構成例の場合，1つのKubernetesワーカーノードに2つのPod（Deployment）が配置され，Pod内にはそれぞれ次のHADB用のコンテナが配置されています。

HADBサーバ起動コンテナ

HADBサーバを起動するためのコンテナです。

HADBクライアント利用コンテナ

HADBクライアントを使用するためのコンテナです。

また，初めてHADBを使用する場合は，上記に加えて，データベース初期化コンテナを起動する必要があります。データベース初期化コンテナは，HADB用のデータベースを初期化する（DBエリアファイルを作成する）ためのコンテナです。

20.2.4　ネットワーク構成

Pod間の通信は，Kubernetesのオーバーレイネットワークを使用します。そのため，KubernetesのServiceオブジェクトをClusterIP指定で作成します。ポート番号はホストOSおよびコンテナ内OSともにデフォルトの23650を使用します。

20.2.5　ストレージ構成

DockerおよびKubernetes上でHADBを使用する場合，ホストOS上のデバイスに次のファイルが格納されます。

DBエリアファイル

$ADBDIR/spool下のファイル（メッセージログファイルなど）

そのため，ホストOS上に上記のファイルを格納する領域を用意しておいてください。「図20‒1　DockerおよびKubernetesを使用したシステム構成例」で示す構成例の場合，ホストOS上に次のディレクトリ領域を作成し，コンテナ内のディレクトリにマウントします。

表20‒1　ホストOS上に用意する領域情報

項番

格納されるファイル

ホストOS上のパス

コンテナ内のマウント先

1

DBエリアファイル

/exports/hadb-server/dbarea

/HADB/db

2

$ADBDIR/spool下のファイル

/exports/hadb-server/spool

/HADB/server/spool

ホストOS上のディレクトリ領域にパーミッションを設定して，コンテナ内のHADB管理者に対して書き込み権限および読み取り権限を設定してください。

重要

「図20‒1　DockerおよびKubernetesを使用したシステム構成例」で示す構成例の場合，構成を簡素化するために，永続ストレージとしてホストOS上の領域を使用しています。ただし，このような特定のKubernetesノードに依存する運用は，Kubernetesによる分散環境の利点を十分に生かすことができません。そのため，実際に運用する際はPV（Persistent Volume）およびPVC（Persistent Volume Claim）を作成するなどして，特定のノードに依存しない永続ストレージ環境を構築することを推奨します。

20.2.6　カーネルパラメタ

コンテナ環境からのカーネルパラメタの指定は，限定された一部のものしか指定できません。そのため，HADBを動作させるのに必要なカーネルパラメタの指定は，コンテナを起動するホストOS側で行ってください。その際，「20.3.1　Docker環境のインストール」の「(1)　dockerdに対するカーネルパラメタの設定」もあわせて参照してください。

カーネルパラメタについては，「6.2　カーネルパラメタの見積もり」を参照してください。

20.3　前提ソフトウェアのセットアップ

ここでは，DockerおよびKubernetesを使用してHADBを運用する際の前提ソフトウェアのセットアップ手順を説明します。

20.3.1　Docker環境のインストール

Kubernetesクラスタを構成するすべてのノードに対して，Dockerをインストールしてください。Dockerのインストール方法については，Dockerの公式ドキュメントを参照してください。

(1)　dockerdに対するカーネルパラメタの設定

dockerdはデフォルトで許可されているメモリロックの量（memlock）が少ないため，次の表に示す設定ファイルの内容を変更し，ロックできるメモリの量を増やしてください。

表20‒2　変更が必要な設定ファイル（daemon.jsonファイル）

項番

変更が必要な設定ファイル

所有者

アクセス権限

1

/etc/docker/daemon.json

スーパユーザ

644（デフォルト）

上記のdaemon.jsonファイルに，JSON形式で次の内容を追記してください。

  "default-ulimits": {
    "memlock": {
      "Name": "memlock",
      "Hard": -1,
      "Soft": -1
    }
  }

メモ

daemon.jsonファイルは，JSON形式で記述する必要があります。JSON形式に沿う形で追記してください。daemon.jsonファイルの内容の詳細については，Dockerの公式ドキュメントを参照してください。

変更後の設定を有効にするために，次のコマンドを実行してください。

systemctl restart docker

20.3.2　Kubernetes環境のインストールとノードの構築

Kubernetesクラスタを構成するすべてのノードに対して，Kubernetesをインストールしてください。Kubernetesのインストール方法については，Kubernetesの公式ドキュメントを参照してください。

Kubernetesのインストール後，kubeadmコマンドを実行してKubernetesマスタノードとKubernetesワーカーノードを構築してください。「図20‒1　DockerおよびKubernetesを使用したシステム構成例」で示す構成例の場合，1つのKubernetesマスタノードと1つのKubernetesワーカーノードが存在していることを前提としています。

20.4　DockerでのHADBの環境構築

ここでは，まずDockerでHADBの環境を構築する手順を説明します。DockerでのHADBの環境構築が完了したら，「20.5　Kubernetesを使用したHADBの環境構築」を参照してください。

20.4.1　DockerfileによるDockerイメージの生成

HADB用の各コンテナのDockerイメージを生成する手順を説明します。なお，以降で説明する手順はHADB用の各コンテナを起動するKubernetesワーカーノード（ホストOS）上で実施してください。

(1)　データベース初期化コンテナのDockerイメージを生成する

データベース初期化コンテナのDockerイメージを生成してください。なお，初期化済みのDBエリアファイルが存在する場合は，このDockerイメージを生成する必要はありません。

手順

コンテナのDockerイメージを生成するDockerfileを準備する

Dockerイメージを生成するためのDockerfileを準備してください。Dockerfileは，データベース初期化コンテナを起動するKubernetesワーカーノード上に保存してください。保存先を次に示します。

■Dockerfileの保存先

/home/docker/hadb_init/Dockerfile

Dockerfileの例を次に示します。

■Dockerfileの例

FROM registry.access.redhat.com/rhel7:latest

MAINTAINER Hitachi, Ltd.

ARG HADB_VERSION

RUN set -ex; ¥
        yum -y install ¥
            file ¥
            gdb ¥
            hostname ¥
            iproute ¥
            libaio ¥
            lvm2 ¥
            sysstat ¥
     && rm -rf /var/cache/yum/* ¥
     && yum clean all ¥
     && ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime ¥
     && localedef -i ja_JP -f UTF-8 ja_JP.UTF-8 ¥
     && groupadd --gid=990 adbgroup && useradd --uid=990 -g adbgroup -m adbmanager ¥
     && mkdir -p /HADB/db && chown -R adbmanager:adbgroup /HADB

COPY ./hitachi_advanced_database_server-${HADB_VERSION}.tar.gz ¥
     ./adbinstall ¥
     ./adbinit.opt ¥
     /home/adbmanager/install/
RUN chown -R adbmanager:adbgroup /home/adbmanager/install ¥
 && chmod 500 /home/adbmanager/install/adbinstall

USER adbmanager

ENV ADBDIR=/HADB/server ¥
    ADBLANG=UTF8 ¥
    LANG=ja_JP.UTF-8
ENV DBDIR=/HADB/db ¥
    ADBCLTDIR=$ADBDIR ¥
    ADBCLTLANG=$ADBLANG ¥
    LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ADBDIR/lib:$ADBDIR/client/lib ¥
    PATH=$PATH:$ADBDIR/bin:$ADBDIR/client/bin

RUN set -eux; ¥
        /home/adbmanager/install/adbinstall -s $ADBDIR ¥
     && cp -rf $ADBDIR/sample/conf $ADBDIR ¥
     && cp -f /home/adbmanager/install/adbinit.opt $ADBDIR/conf/ ¥
     && rm -rf /home/adbmanager/install

USER root

VOLUME ["$DBDIR", "$ADBDIR/spool"]

ENTRYPOINT chown -R adbmanager:adbgroup "$DBDIR" "$ADBDIR"/spool ¥
        && runuser adbmanager -c '"$ADBDIR"/bin/adbinit -u "$HADB_ADMIN_NAME" -p "$HADB_ADMIN_PASSWORD" "$ADBDIR"/conf/adbinit.opt "$DBDIR"'

［説明］

上記のDockerfileの例は，次のすべての設定が完了していることを前提としています。

コンテナ内のインターネット接続

プロキシ設定

リポジトリ設定

上記の設定が完了している場合は，コンテナ内でyumコマンドによるパッケージのインストールが可能です。上記の設定が完了していない場合は，先に設定を完了してください。または，Dockerfileを編集して，yumコマンドによるインストールの設定を組み込んでください。

メモ

上記のDockerfileの例では，コンテナ起動時（docker runコマンド実行時）に--envオプションを使用して，HADBのデータベース作成時に登録するユーザの認可識別子やパスワードなどの秘密情報を受け渡します。新しいバージョンのDocker（18.09以降）を使用する場合は，BuildKitが提供しているdocker buildの--secretフラグを使用することを推奨します。

HADBサーバのインストールに必要なファイルおよび初期設定オプションファイルを準備する

手順1.のDockerfileを格納したディレクトリに，次のファイルを格納してください。

HADBサーバのインストールに必要な次のファイル

HADBサーバのプログラムの圧縮ファイル（hitachi_advanced_database_server-$VER.tar.gz）

adbinstallコマンドの実行形式ファイル（adbinstall）

adbinitコマンドの初期設定オプションファイル（adbinit.opt）

$VERは，HADBサーバのバージョンとリリース番号です。

メモ

各定義ファイルやオプションファイルのひな形は，$ADBDIR/sample/conf/ディレクトリに格納されています。

HADBサーバのインストール時に必要なファイルを格納する際，権限の付与や，コピーしたファイルの確認作業などが必要になります。詳細な方法については，「8.2.2　HADBサーバのインストール手順」を参照してください。その際，次の点に注意してください。

インストールデータを格納するディレクトリは，Dockerfileを格納したディレクトリ（/home/docker/hadb_init）と読み替えてください。

!8A9_HADBファイルのコピーは必要ありません。HADBサーバのプログラムの圧縮ファイルとadbinstallコマンドの実行形式ファイルをコピーしてください。

初期設定オプションファイルの作成方法については，マニュアルHADB　コマンドリファレンスのadbinit（データベースの初期設定）のadbinitコマンドの指定形式の初期設定オプションの形式を参照してください。

次のコマンドを実行すると，すべてのファイルがそろっているかどうかを確認できます。

■コマンドの実行例

ls /home/docker/hadb_init

すべてのファイルがそろっている場合，次のような実行結果が表示されます。

■コマンドの実行結果の例

Dockerfile   adbinstall
adbinit.opt  hitachi_advanced_database_server-$VER.tar.gz

$VERは，HADBサーバのバージョンとリリース番号です。

Dockerイメージを生成する

次のコマンドを実行し，Dockerイメージを生成してください。

■コマンドの実行例

cd /home/docker/hadb_init
docker build -f ./Dockerfile -t hadb-init:$VER ¥
--build-arg HADB_VERSION=$VER ¥
.

$VERは，HADBサーバのバージョンとリリース番号です。

上記のコマンドが正常終了したら，次のコマンドを実行してください。次のコマンドを実行すると，Dockerイメージが正しく生成されているかどうかを確認できます。

■コマンドの実行例

docker images hadb-init:$VER

$VERは，HADBサーバのバージョンとリリース番号です。

Dockerイメージが正しく生成されている場合，次のような結果が表示されます。

■コマンドの実行結果の例

REPOSITORY   TAG     IMAGE ID       CREATED         SIZE
hadb-init    $VER    6210a7de50ea   3 seconds ago   204 MB

$VERは，HADBサーバのバージョンとリリース番号です。

なお，IMAGE ID列やCREATED列，SIZE列に表示される値は実行環境によって異なります。

(2)　HADBサーバ起動コンテナのDockerイメージを生成する

HADBサーバ起動コンテナのDockerイメージを生成してください。

手順

コンテナのDockerイメージを生成するDockerfileを準備する

Dockerイメージを生成するためのDockerfileを準備してください。Dockerfileは，HADBサーバ起動コンテナを起動するKubernetesワーカーノード上に保存してください。保存先を次に示します。

■Dockerfileの保存先

/home/docker/hadb_server/Dockerfile

Dockerfileの例を次に示します。

■Dockerfileの例

FROM registry.access.redhat.com/rhel7:latest

MAINTAINER Hitachi, Ltd.

ARG HADB_VERSION

RUN set -ex; ¥
        yum -y install ¥
            file ¥
            gdb ¥
            hostname ¥
            iproute ¥
            libaio ¥
            lvm2 ¥
            sysstat ¥
     && rm -rf /var/cache/yum/* ¥
     && yum clean all ¥
     && ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime ¥
     && localedef -i ja_JP -f UTF-8 ja_JP.UTF-8 ¥
     && groupadd --gid=990 adbgroup && useradd --uid=990 -g adbgroup -m adbmanager ¥
     && mkdir -p /HADB/db && chown -R adbmanager:adbgroup /HADB

COPY ./hitachi_advanced_database_server-${HADB_VERSION}.tar.gz ¥
     ./adbinstall ¥
     ./server.def ¥
     /home/adbmanager/install/
RUN chown -R adbmanager:adbgroup /home/adbmanager/install ¥
 && chmod 500 /home/adbmanager/install/adbinstall

USER adbmanager

ENV ADBDIR=/HADB/server ¥
    ADBLANG=UTF8 ¥
    LANG=ja_JP.UTF-8
ENV DBDIR=/HADB/db ¥
    ADBCLTDIR=$ADBDIR ¥
    ADBCLTLANG=$ADBLANG ¥
    LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ADBDIR/lib:$ADBDIR/client/lib ¥
    PATH=$PATH:$ADBDIR/bin:$ADBDIR/client/bin

RUN set -eux; ¥
        /home/adbmanager/install/adbinstall -s $ADBDIR ¥
     && cp -rf $ADBDIR/sample/conf $ADBDIR ¥
     && cp -f /home/adbmanager/install/server.def $ADBDIR/conf/ ¥
     && rm -rf /home/adbmanager/install

# Change the execution user back to the root user.
# This is needed to create /dev/HADB/pth by executing the shell script specified in the ENTRYPOINT instruction.
USER root

VOLUME ["$DBDIR", "$ADBDIR/spool"]

EXPOSE 23650

COPY ./docker-entrypoint.sh /usr/local/bin/
ENTRYPOINT ["docker-entrypoint.sh"]

［説明］

上記のDockerfileの例は，次のすべての設定が完了していることを前提としています。

コンテナ内のインターネット接続

プロキシ設定

リポジトリ設定

上記の設定が完了している場合は，コンテナ内でyumコマンドによるパッケージのインストールが可能です。上記の設定が完了していない場合は，先に設定を完了してください。または，Dockerfileを編集して，yumコマンドによるインストールの設定を組み込んでください。

HADBサーバ起動用のシェルスクリプトを準備する

手順1.のDockerfileと同じ場所に，HADBサーバ起動用のシェルスクリプトを準備してください。

HADBサーバ起動コンテナのDockerイメージを生成するDockerfile内では，HADBサーバを起動し，HADBサーバが起動している間待機するシェルスクリプトをENTRYPOINTで呼び出しています。そのため，HADBサーバ起動用のシェルスクリプトが必要になります。シェルスクリプト（docker-entrypoint.sh）の例を次に示します。

■シェルスクリプトの例

#!/bin/bash

# Create directories for storing communication-information files.
mkdir -p -m 777 /dev/HADB/pth

# Start the HADB server as an HADB administrator.
runuser adbmanager -c "yes | adbstart"

# When the container stops, terminate HADB normally by using the adbstop command with the --cancel option.
trap 'runuser adbmanager -c "adbstop --cancel"' SIGTERM

# Check whether adbsrvd exists.
while [ $? -eq 0 ];
do
  # The wait interval is 1 second.
  sleep 1
  ps -C adbsrvd -o command= | grep -E "^${ADBDIR}/bin/adbsrvd¥$" 1>/dev/null 2>&1
done

exit

重要

任意のユーザが実行できるように，このシェルスクリプトには必ず実行権限を付与してください。

HADBサーバのインストールに必要なファイルおよびサーバ定義ファイルを準備する

手順1.のDockerfileを格納したディレクトリに，次のファイルを格納してください。

HADBサーバのインストールに必要な次のファイル

HADBサーバのプログラムの圧縮ファイル（hitachi_advanced_database_server-$VER.tar.gz）

adbinstallコマンドの実行形式ファイル（adbinstall）

サーバ定義ファイル（server.def）

$VERは，HADBサーバのバージョンとリリース番号です。

メモ

各定義ファイルやオプションファイルのひな形は，$ADBDIR/sample/conf/ディレクトリに格納されています。

HADBサーバのインストール時に必要なファイルを格納する際，権限の付与や，コピーしたファイルの確認作業などが必要になります。詳細な方法については，「8.2.2　HADBサーバのインストール手順」を参照してください。その際，次の点に注意してください。

インストールデータを格納するディレクトリは，Dockerfileを格納したディレクトリ（/home/docker/hadb_server）と読み替えてください。

!8A9_HADBファイルのコピーは必要ありません。HADBサーバのプログラムの圧縮ファイルとadbinstallコマンドの実行形式ファイルをコピーしてください。

サーバ定義ファイルの作成方法については，「8.5.1　サーバ定義の作成方法および格納先」を参照してください。

サーバ定義ファイルを作成する際，DBディレクトリのパスを指定するadb_db_pathオペランドには，「/HADB/db（Dockerfile内の$DBDIRの値）」を指定してください。その際，「20.2.5　ストレージ構成」も参照してください。

次のコマンドを実行すると，すべてのファイルがそろっているかどうかを確認できます。

■コマンドの実行例

ls /home/docker/hadb_server

すべてのファイルがそろっている場合，次のような実行結果が表示されます。

■コマンドの実行結果の例

Dockerfile  docker-entrypoint.sh                              server.def
adbinstall  hitachi_advanced_database_server-$VER.tar.gz

$VERは，HADBサーバのバージョンとリリース番号です。

Dockerイメージを生成する

次のコマンドを実行し，Dockerイメージを生成してください。

■コマンドの実行例

cd /home/docker/hadb_server
docker build -f ./Dockerfile -t hadb-server:$VER ¥
--build-arg HADB_VERSION=$VER ¥
.

$VERは，HADBサーバのバージョンとリリース番号です。

上記のコマンドが正常終了したら，次のコマンドを実行してください。次のコマンドを実行すると，Dockerイメージが正しく生成されているかどうかを確認できます。

■コマンドの実行例

docker images hadb-server:$VER

$VERは，HADBサーバのバージョンとリリース番号です。

Dockerイメージが正しく生成されている場合，次のような結果が表示されます。

■コマンドの実行結果の例

REPOSITORY    TAG     IMAGE ID       CREATED         SIZE
hadb-server   $VER    2eeb8964de7a   3 seconds ago   204 MB

$VERは，HADBサーバのバージョンとリリース番号です。

なお，IMAGE ID列やCREATED列，SIZE列に表示される値は実行環境によって異なります。

(3)　HADBクライアント利用コンテナのDockerイメージを生成する

HADBクライアント利用コンテナのDockerイメージを生成してください。

手順

コンテナのDockerイメージを生成するDockerfileを準備する

Dockerイメージを生成するためのDockerfileを準備してください。Dockerfileは，HADBクライアント利用コンテナを起動するKubernetesワーカーノード上に保存してください。保存先を次に示します。

■Dockerfileの保存先

/home/docker/hadb_client/Dockerfile

Dockerfileの例を次に示します。

■Dockerfileの例

FROM registry.access.redhat.com/rhel7:latest

MAINTAINER Hitachi, Ltd.

ARG HADB_VERSION

RUN set -ex; ¥
        yum -y install ¥
            libaio ¥
     && rm -rf /var/cache/yum/* ¥
     && yum clean all ¥
     && ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime ¥
     && localedef -i ja_JP -f UTF-8 ja_JP.UTF-8 ¥
     && useradd -m adbuser

COPY ./hitachi_advanced_database_client-${HADB_VERSION}.tar.gz ¥
     ./adbinstall ¥
     ./client.def ¥
     /home/adbuser/install/
RUN chown -R adbuser:adbuser /home/adbuser/install ¥
 && chmod 555 /home/adbuser/install/adbinstall

USER adbuser

ENV ADBCLTDIR=/home/adbuser/client ¥
    ADBCLTLANG=UTF8 ¥
    LANG=ja_JP.UTF-8
ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ADBCLTDIR/client/lib ¥
    PATH=$PATH:$ADBCLTDIR/client/bin

RUN set -eux; ¥
        /home/adbuser/install/adbinstall -c $ADBCLTDIR ¥
     && cp -rf $ADBCLTDIR/sample/conf $ADBCLTDIR ¥
     && cp -f /home/adbuser/install/client.def $ADBCLTDIR/conf/ ¥
     && rm -rf /home/adbuser/install

# Keep the container running.
CMD ["tail","-f","/dev/null"]

［説明］

上記のDockerfileの例は，次のすべての設定が完了していることを前提としています。

コンテナ内のインターネット接続

プロキシ設定

リポジトリ設定

上記の設定が完了している場合は，コンテナ内でyumコマンドによるパッケージのインストールが可能です。上記の設定が完了していない場合は，先に設定を完了してください。または，Dockerfileを編集して，yumコマンドによるインストールの設定を組み込んでください。

HADBクライアントのインストールに必要なファイルおよびクライアント定義ファイルの準備をする

手順1.のDockerfileを格納したディレクトリに，次のファイルを格納してください。

HADBクライアントのインストールに必要な次のファイル

HADBクライアントのプログラムの圧縮ファイル（hitachi_advanced_database_client-$VER.tar.gz）

adbinstallコマンドの実行形式ファイル（adbinstall）

クライアント定義ファイル（client.def）

$VERは，HADBクライアントのバージョンとリリース番号です。

メモ

各定義ファイルやオプションファイルのひな形は，$ADBDIR/sample/conf/ディレクトリに格納されています。

ファイルの格納方法については，マニュアルHADB　AP開発ガイドのHADBクライアントのインストールおよびアンインストールのLinux版のHADBクライアントの場合のHADBクライアントのインストールを参照してください。その際，インストールデータを格納するディレクトリは，Dockerfileを格納したディレクトリ（/home/docker/hadb_client）と読み替えてください。

クライアント定義ファイルの作成方法については，マニュアルHADB　AP開発ガイドのHADBクライアントの環境設定（ODBCドライバおよびCLI関数を使用する場合）のクライアント定義の作成を参照してください。

クライアント定義ファイルを作成する際，HADBサーバのホスト名を指定するadb_clt_rpc_srv_hostオペランドには，後述するKubernetesのServiceオブジェクトの名前である「hadb-svc」を指定してください。「hadb-svc」は，「図20‒1　DockerおよびKubernetesを使用したシステム構成例」の図中に示しているServiceオブジェクトです。

次のコマンドを実行すると，すべてのファイルがそろっているかどうかを確認できます。

■コマンドの実行例

ls /home/docker/hadb_client

すべてのファイルがそろっている場合，次のような実行結果が表示されます。

■コマンドの実行結果の例

Dockerfile  client.def
adbinstall  hitachi_advanced_database_client-$VER.tar.gz

$VERは，HADBクライアントのバージョンとリリース番号です。

Dockerイメージを生成する

次のコマンドを実行し，Dockerイメージを生成してください。

■コマンドの実行例

cd /home/docker/hadb_client
docker build -f ./Dockerfile -t hadb-client:$VER ¥
--build-arg HADB_VERSION=$VER ¥
.

$VERは，HADBクライアントのバージョンとリリース番号です。

上記のコマンドが正常終了したら，次のコマンドを実行してください。次のコマンドを実行すると，Dockerイメージが正しく生成されているかどうかを確認できます。

■コマンドの実行例

docker images hadb-client:$VER

$VERは，HADBクライアントのバージョンとリリース番号です。

Dockerイメージが正しく生成されている場合，次のような結果が表示されます。

■コマンドの実行結果の例

REPOSITORY    TAG     IMAGE ID       CREATED         SIZE
hadb-client   $VER    9f266d35e02c   3 seconds ago   204 MB

$VERは，HADBクライアントのバージョンとリリース番号です。

なお，IMAGE ID列やCREATED列，SIZE列に表示される値は実行環境によって異なります。

20.4.2　コンテナ内のHADBが使用するDBディレクトリの初期化

HADB用のデータベースを初期化する方法を説明します。なお，初期化済みのDBエリアファイルが存在する場合は，この方法を実施する必要はありません。

次のコマンドを実行して，HADB用のデータベースを初期化してください。

docker run ¥
-it ¥
--rm ¥
--mount type=bind,src=/exports/hadb-server/dbarea,dst=/HADB/db ¥
--mount type=bind,src=/exports/hadb-server/spool,dst=/HADB/server/spool ¥
--env HADB_ADMIN_NAME="ADBADMIN" ¥                   …1
--env HADB_ADMIN_PASSWORD="#HelloDockerHADB_ZA" ¥    …2
hadb-init:$VER

$VERは，HADBサーバのバージョンとリリース番号です。

［説明］

データベースの作成時に登録するユーザの認可識別子（ADBADMIN）を指定してください。

1.で作成するユーザのパスワード（#HelloDockerHADB_ZA）を指定してください。

20.5　Kubernetesを使用したHADBの環境構築

ここでは，Kubernetesを使用してHADBを運用する場合の環境構築の手順を説明します。以降の手順は，DockerでのHADBの環境構築が完了したあとに実施してください。DockerでのHADBの環境構築については，「20.4　DockerでのHADBの環境構築」を参照してください。

20.5.1　Kubernetesの各リソースオブジェクトの生成

Kubernetesの各リソースオブジェクトを生成する手順を説明します。

生成するリソースオブジェクトは次のとおりです。

HADBサーバ用Deployment

HADBクライアント用Deployment

コンテナ間通信用Service

各リソースオブジェクトの生成は，Kubernetesマスタノード上からkubectlコマンドを使用して実施してください。

kubectlコマンドには次の実行方法がありますが，ここではマニフェストファイルを指定する方法を説明します。

リソースオブジェクトの生成方法を定義したマニフェストファイル（yamlファイル）を指定する方法

runサブコマンドに直接Dockerイメージを指定する方法

メモ

kubectlコマンドを実行できるユーザで各リソースオブジェクトを生成してください。なお，スーパユーザで実行することを想定しています。異なるユーザで実行する場合は，yamlファイルの格納場所などを適宜変更してください。

(1)　マニフェストファイル（yamlファイル）を準備する

リソースオブジェクトの生成方法を定義したマニフェストファイルを準備します。マニフェストファイルは，Kubernetesマスタノードに保存してください。保存先を次に示します。

■マニフェストファイルの保存先

/root/k8s/hadb-k8s-manifest.yaml

マニフェストファイルの例を次に示します。

メモ

マニフェストファイルは，行頭のインデント（文字の開始位置）が厳密に評価されます。注意して作成してください。

■マニフェストファイルの例

apiVersion: v1
kind: Service
metadata:
  name: hadb-svc
spec:
  type: ClusterIP
  selector:
    app: hadb-server
  ports:
    - name: hadb-port
      protocol: TCP
      port: 23650
      targetPort: 23650
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hadb-server
  labels:
    name: hadb-server
spec:
  replicas: 1
  selector:
    matchLabels:
      app: hadb-server
  template:
    metadata:
      labels:
        app: hadb-server
      annotations:
        security.alpha.kubernetes.io/sysctls: net.ipv4.ip_local_port_range=32767 61001
        security.alpha.kubernetes.io/unsafe-sysctls: kernel.msgmnb=16386,
          kernel.msgmni=736,
          kernel.sem=250 32001 32 129,
          kernel.shmmax=18446744073692774400,
          kernel.shmmni=4097,
          kernel.shmall=18446744073692774400,
          net.core.somaxconn=129
    spec:
      # This container starts the HADB server.
      containers:
      - name: hadb-server
        image: hadb-server:$VER
        ports:
        - containerPort: 23650
          protocol: TCP
        resources:
          requests:
            cpu: 2
            memory: 8Gi
          limits:
            cpu: 45
            memory: 160Gi
        volumeMounts:
        - name: dbarea-vol
          mountPath: /HADB/db
        - name: spool-vol
          mountPath: /HADB/server/spool
        lifecycle:
          preStop:
            exec:
              command: ["/bin/sh", "-c", "echo Terminating HADB...; sleep 3; runuser adbmanager -c 'adbstop --cancel'; sleep 10"]
      volumes:
      - name: dbarea-vol
        hostPath:
          path: /exports/hadb-server/dbarea
          type: DirectoryOrCreate
      - name: spool-vol
        hostPath:
          path: /exports/hadb-server/spool
          type: DirectoryOrCreate
      terminationGracePeriodSeconds: 30
      nodeSelector:
        kubernetes.io/hostname: host01
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hadb-client
  labels:
    name: hadb-client
spec:
  replicas: 1
  selector:
    matchLabels:
      app: hadb-client
  template:
    metadata:
      labels:
        app: hadb-client
      annotations:
        security.alpha.kubernetes.io/sysctls: net.ipv4.ip_local_port_range=32767 61001
        security.alpha.kubernetes.io/unsafe-sysctls: kernel.msgmnb=16386,
          kernel.msgmni=736,
          kernel.sem=250 32001 32 129,
          kernel.shmmax=18446744073692774400,
          kernel.shmmni=4097,
          kernel.shmall=18446744073692774400,
          net.core.somaxconn=129
    spec:
      containers:
      - name: hadb-client
        image: hadb-client:$VER
        resources:
          requests:
            cpu: 2
            memory: 8Gi
          limits:
            cpu: 4
            memory: 16Gi

$VERは，HADBサーバのバージョンとリリース番号です。

［説明］

上記のマニフェストファイルは，HADB用に作成するKubernetesの各リソースオブジェクトの定義を，すべて1つのファイルに記述しています。

Kubernetesの各リソースオブジェクト

HADBサーバ用Deployment

HADBクライアント用Deployment

コンテナ間通信用Service

(2)　kubectlコマンドでリソースオブジェクトを生成する

次のコマンドを実行して，HADB用にKubernetesの各リソースオブジェクトを生成してください。

■コマンドの実行例

cd /root/k8s
kubectl apply -f ./hadb-k8s-manifest.yaml --record

リソースオブジェクトが正常に生成されている場合，次のような結果が表示されます。

service/hadb-svc created
deployment.apps/hadb-server created
deployment.apps/hadb-client created

また，次のコマンドを実行すると，生成されたリソースオブジェクトが正しく動作しているかどうかを確認できます。

■コマンドの実行例

kubectl get deployments
kubectl get pods
kubectl get services hadb-svc

リソースオブジェクトが正しく動作している場合，次のような結果が表示されます。

■コマンドの実行結果の例

NAME          READY   UP-TO-DATE   AVAILABLE   AGE
hadb-client   1/1     1            1           14s
hadb-server   1/1     1            1           14s

NAME                           READY   STATUS    RESTARTS   AGE
hadb-client-6fbb9fbb97-4xvkr   1/1     Running   0          19s
hadb-server-5fd5cc7fb8-8jv58   1/1     Running   0          20s

NAME       TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)     AGE
hadb-svc   ClusterIP   10.233.47.129   <none>        23650/TCP   28s

なお，各列に表示される値は実行環境によって異なります。また，kubectlのdescribeサブコマンドを使用すると，各リソースオブジェクトのさらに詳細な情報を参照できます。

20.6　DockerおよびKubernetesを使用したHADBの運用

ここでは，DockerおよびKubernetesを使用したHADBの運用例を説明します。

20.6.1　HADBのコマンドの実行方法

DockerおよびKubernetesを使用してHADBのコマンドを実行する手順を説明します。

手順

HADBサーバ起動コンテナのシェルを取得する

次のコマンドを実行してください。

■コマンドの実行例

kubectl exec -it hadb-server-5fd5cc7fb8-8jv58 /bin/bash

［説明］

次のとおりに指定してください。

Pod名（ここではhadb-server-5fd5cc7fb8-8jv58）

kubectl get podsコマンドで取得した，HADBサーバ起動コンテナが配置されているPodの名前を指定してください。

シェル（ここでは/bin/bash）

引数を指定する場合は，指定するシェルの前にダブルダッシュ（--）を指定してください。

■コマンドの実行例

kubectl exec -it hadb-server-5fd5cc7fb8-8jv58 -- /bin/bash -l

ユーザをHADB管理者に切り替える

手順1.のコマンドを実行すると，HADBサーバ起動コンテナのシェルプロンプトが表示されます。この時点では，HADBサーバ起動コンテナ内のrootユーザでログインしている状態になるため，次のrunuserコマンドを実行して，ユーザをHADB管理者に切り替えてください。

■コマンドの実行例

[root@hadb-server-5fd5cc7fb8-8jv58 /]# runuser adbmanager
[adbmanager@hadb-server-5fd5cc7fb8-8jv58 /]$ cd
[adbmanager@hadb-server-5fd5cc7fb8-8jv58 ~]$

［説明］

下線部分は，コンテナ内のシェルプロンプトです。表示内容は実行環境によって異なります。また，adbmanagerは，HADBサーバ起動コンテナ内のHADB管理者のユーザ名です。

HADBのコマンドを実行する

通常のLinuxと同じようにHADB管理者で各種コマンドを実行できます。各種コマンドの詳しい使い方については，HADB　コマンドリファレンスの各章を参照してください。ただし，adbstopコマンドは実行しないでください。

なお，adbimportコマンドを実行する場合に，必要な入力データファイルがコンテナの外部にあるときは，次のどちらかを実施してください。

コンテナ内からアクセス可能な場所に，入力データファイルを格納する

コンテナ内に入力データファイルをコピーする

コンテナ内に入力データファイルをコピーする場合は，次のコマンドを実行してください。ホストOS上の入力データファイル（/root/import/data.csv）を，HADBサーバ起動コンテナ内のディレクトリ（/home/adbmanager/）にコピーできます。

■コマンドの実行例

kubectl cp /root/import/data.csv hadb-server-5fd5cc7fb8-8jv58:/home/adbmanager/

［説明］

下線部分はPod名です。kubectl get podsコマンドで取得した，HADBサーバ起動コンテナが配置されているPod名を指定してください。

メモ

上記のコマンドでコピーしたファイルは，ファイルの所有者がコンテナ内のHADB管理者になっていません。HADBサーバ起動コンテナのシェルプロンプトを取得したあとに，chownコマンドを使用して，HADB管理者に所有者を変更してください。

HADBサーバ起動コンテナのシェルを終了する

コンテナ内のシェルプロンプトでexitを入力してください。runuserコマンドでユーザを切り替えている場合，exitを複数回実行してください。

重要

コンテナ内でadbstopコマンドを実行しないでください。adbstopコマンドを実行してHADBサーバを終了させると，HADBサーバ起動コンテナ自体も同時に停止してしまいます。なお，コンテナ内でadbstopコマンドを実行してしまった場合は，Deploymentオブジェクトの定義のreplicas数に応じて，KubernetesがHADBサーバ起動コンテナを含むPodオブジェクトを再作成します。そのため，HADBサーバ起動コンテナを再度手動で作成したり，HADBサーバ起動コンテナを含むDeploymentオブジェクトを再作成したりする必要はありません。

20.6.2　adbsqlコマンドの実行方法

DockerおよびKubernetesを使用してadbsqlコマンドを実行する手順を示します。adbsqlコマンドを使用してHADBサーバに接続するには，HADBクライアント利用コンテナのシェルを取得します。

手順

HADBクライアント利用コンテナのシェルを取得する

次のコマンドを実行してください。

■コマンドの実行例

kubectl exec -it hadb-client-6fbb9fbb97-4xvkr /bin/bash

［説明］

次のとおりに指定してください。

Pod名（ここではhadb-client-6fbb9fbb97-4xvkr）

kubectl get podsコマンドで取得した，HADBクライアント利用コンテナが配置されているPodの名前を指定してください。

シェル（ここでは/bin/bash）

引数を指定する場合は，指定するシェルの前にダブルダッシュ（--）を指定してください。

■コマンドの実行例

kubectl exec -it hadb-client-6fbb9fbb97-4xvkr -- /bin/bash -l

メモ

手順1.のコマンドを実行すると，HADBクライアント利用コンテナのシェルプロンプトが表示されます。これ以降は，通常のLinuxと同じようにHADBクライアントを使用できます。

コマンドを実行する

adbsqlコマンドを使用する例を次に示します。

■コマンドの実行例

[adbuser@hadb-client-6fbb9fbb97-4xvkr ~]$ adbsql
  USER-ID ?
ADBUSER
  PASSWORD ?
COMMAND ?     +----2----+----3----+----4----+----5----+----6----+----7----+
SELECT * FROM MASTER.SQL_TABLES;
.
.
.

［説明］

下線部分は，コンテナ内のシェルプロンプトです。表示内容は実行環境によって異なります。3行目の「ADBUSER」は，HADBサーバに接続する際のユーザの認可識別子です。使用するデータベースによって異なります。

adbsqlコマンドの詳しい使い方については，マニュアルHADB　コマンドリファレンスのadbsql（SQLの実行）を参照してください。

HADBクライアント利用コンテナのシェルを終了する

コンテナ内のシェルプロンプトでexitを入力してください。

20.6.3　APの運用

APからDockerおよびKubernetesを使用したHADBの環境を利用する場合は，APを実行するPodを同一のKubernetesクラスタ上に作成してください。HADBクライアント用のPodと同様に，HADBサーバのホスト名およびポート番号を使用できます。Podの作成方法については，DockerおよびKubernetesの公式ドキュメントを参照してください。

20.7　DockerおよびKubernetesの使用停止

ここでは，DockerおよびKubernetesの使用をやめる手順を説明します。

Kubernetesのリソースオブジェクトを削除し，そのあとにDockerイメージを削除することで，DockerおよびKubernetesの使用をやめることができます。

20.7.1　Kubernetesの使用停止

次のコマンドを実行し，作成したKubernetesのリソースオブジェクトを削除してください。削除完了のメッセージが出力されるまで，しばらく時間が掛かる場合があります。

■コマンドの実行例

cd /root/k8s
kubectl delete -f ./hadb-k8s-manifest.yaml

重要

リソースオブジェクトを直ちに削除する「--grace-period=0 --force」オプションの指定は推奨しません。このオプションを指定してリソースオブジェクトを削除した場合，HADBのデータベースが破壊されるおそれがあります。

リソースオブジェクトが正常に削除されている場合，次のような実行結果が表示されます。

■コマンドの実行結果の例

service "hadb-svc" deleted
deployment.apps "hadb-server" deleted
deployment.apps "hadb-client" deleted

20.7.2　Dockerの使用停止

Dockerイメージを今後使用する予定がない場合は，Dockerイメージを作成したノードで次のコマンドを実行して，Dockerイメージを削除してください。なお，先にKubernetesのリソースオブジェクトを削除していない場合，Dockerイメージは削除できません（エラーとなります）。Kubernetesのリソースオブジェクトを削除したあとに，Dockerイメージを削除してください。

■コマンドの実行例

docker rmi -f hadb-init:$VER
docker rmi -f hadb-server:$VER
docker rmi -f hadb-client:$VER

$VERは，HADBサーバのバージョンとリリース番号です。

第9編　クラウドストレージ機能編

21　クラウド環境の構築（クラウドストレージ機能を使用する場合）

この章では，クラウド環境（AWS環境またはAzure環境）でクラウドストレージ機能を使用したシステム構築方法について説明します。

また，オンプレミス環境からAWS環境に移行する方法や，クラウドストレージ機能を使用しているシステムから，クラウドストレージ機能を使用しないシステムへの移行方法についても説明します。

メモ

クラウドストレージ機能の概要を知りたい場合は，「2.21　クラウド環境でHADBサーバを使用する場合」を参照してください。

クラウド環境でマルチノード構成を構築，運用したい場合は，「18.34　AWS環境でのマルチノード機能の運用」または「18.35　Azure環境でのマルチノード機能の運用」を参照してください。

クラウド環境でコールドスタンバイ構成を構築，運用したい場合は，「19.22　AWS環境でのコールドスタンバイ構成の運用」または「19.23　Azure環境でのコールドスタンバイ構成の運用」を参照してください。

21.1　新規にAWS環境を構築する場合

ここでは，AWS環境でクラウドストレージ機能を使用したシステム構築方法について，新規導入を前提として説明します。

メモ

オンプレミス環境でHADBサーバを使用していて，データベースの内容を引き継いだままAWS環境に移行したい場合は，「21.3　オンプレミス環境からAWS環境に移行する場合」を参照してください。

21.1.1　AWS環境でのシステム構成例

AWS環境でクラウドストレージ機能を使用したシステム構成例を次の図に示します。以降の説明は，このシステム構成例を前提としています。

図21‒1　システム構成例（AWS環境でクラウドストレージ機能を使用する場合）

注※

上記のシステム構成例では，HADBサーバをインストールするインスタンスのインスタンスタイプは，r5b.2xlargeを使用するとします。

21.1.2　ネットワーク構成

AWS環境でクラウドストレージ機能を使用するシステムの場合，次のネットワークが必要になります。

クライアント−サーバ間ネットワーク

HADBクライアントとHADBサーバ間の通信で使用するネットワークです。

「図21‒1　システム構成例（AWS環境でクラウドストレージ機能を使用する場合）」のシステム構成例の場合の，IPアドレスおよびポート番号の設定例を次の表に示します。

表21‒1　クライアント−サーバ間ネットワークのIPアドレスとポート番号の設定例

項番

設定対象

IPアドレス

ポート番号

1

クライアントマシン

10.196.108.111

設定不要

2

HADBサーバをインストールするインスタンス

10.196.108.11

23650

21.1.3　ストレージ構成

「図21‒1　システム構成例（AWS環境でクラウドストレージ機能を使用する場合）」のシステム構成を例にしてストレージ構成の方針を説明します。

ストレージ構成の方針

次のDBエリアおよびファイルシステムをEBS上に作成します。

作業表用DBエリア

DBディレクトリ用のファイルシステム

データインポートで使用する入力データファイルを格納するファイルシステム

キャッシュファイル用のファイルシステム

重要

ディスクに対するI/O性能を最大限引き出すために，上記のDBエリアおよび各ファイルシステムは，別々のEBSボリューム上に作成してください。

EBSのボリュームタイプは，汎用SSDボリュームのうち，I/O性能とコスト面に優れた汎用SSD(gp3)を使用してください。

作業表用DBエリアおよびキャッシュファイル用のファイルシステムは，EBS上ではなく，インスタンスストア上に作成することもできます。その場合，HADBサーバをインストールするインスタンスには，インスタンスストアを利用できるインスタンスタイプ（r6id.xlargeなど）を選択してください。

データ用DBエリア，マスタディレクトリ用DBエリア，ディクショナリ用DBエリア，およびシステム表用DBエリアのデータは，Amazon S3のS3バケット内のS3オブジェクトに格納します。

上記以外のHADBサーバで使用するファイルシステム（サーバディレクトリを配置するファイルシステムなど）は，EBS上に作成します。EBSのボリュームタイプは，汎用SSD(gp2)を使用してください。

上記の方針に従い，次の表に示すようなファイルシステム，ディスク，およびS3バケットを用意してください。

表21‒2　用意するファイルシステム，ディスク，およびS3バケット

格納先のストレージ

名称※

用途

EBS(gp2)

FS001

次のディレクトリを配置するファイルシステム

サーバディレクトリ

監査証跡の出力先ディレクトリ（監査証跡機能を使用する場合）

統一フォーマット用監査証跡の出力先ディレクトリ（監査証跡機能を使用する場合）

EBS(gp3)

WRK001

作業表用DBエリア用のディスク

FS002

次のディレクトリを配置するファイルシステム

DBディレクトリ

FS003

次のディレクトリを配置するファイルシステム

データインポートで使用する入力データファイルを格納するファイルシステム

CCH001

キャッシュファイル用のファイルシステム

Amazon S3

BKT001

次のDBエリアのデータを格納するS3オブジェクトを格納するS3バケット

データ用DBエリア

マスタディレクトリ用DBエリア

ディクショナリ用DBエリア

システム表用DBエリア

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合，S3バケットには次のファイルのデータを格納するS3オブジェクトも格納されます。

システムログファイル

ステータスファイル

注※

「図21‒1　システム構成例（AWS環境でクラウドストレージ機能を使用する場合）」のシステム構成例に対応している名称です。

(1)　EBS(gp2)の使い方

HADBサーバをインストールしたインスタンスのOS用の領域（ルートボリューム）として使用するEBS(gp2)上のファイルシステム（/home下など）に，次のディレクトリを配置します。

サーバディレクトリ

監査証跡の出力先ディレクトリ（監査証跡機能を使用する場合に必要）

統一フォーマット用監査証跡の出力先ディレクトリ（監査証跡機能を使用する場合に必要）

(2)　EBS(gp3)の使い方

EBS(gp3)上のVGからLVを作成し，各LVを次の用途で使用します。

作業表用DBエリア用のディスク

EBS(gp3)上のVG（VG名：dbarea_work）からLVを作成し，作業表用DBエリアに割り当てるブロックスペシャルファイル（ブロックスペシャルファイル名：/dev/dbarea_work/ADBWRK）として使用します。

DBディレクトリを配置するファイルシステム

EBS(gp3)上のVG（VG名：vg_dbdir）からLV（LV名：hadb_db）を作成し，DBディレクトリ（DBディレクトリ下のシステムディレクトリを含む）を配置するファイルシステムを作成します。

作成したLV（LV名：hadb_db）をXFSのファイルシステムで初期化する場合の例を次に示します。

mkfs -t xfs /dev/vg_dbdir/hadb_db

このあと，OSのmountコマンドを実行し，上記のファイルシステムをDBディレクトリ（パス名：/HADB/db）にマウントしてください。

データインポートで使用する入力データファイルを格納するファイルシステム

EBS(gp3)上のVG（VG名：vg_import）からLV（LV名：hadb_import）を作成し，データインポートで使用する入力データファイルを格納するファイルシステムを作成します。

作成したLV（LV名：hadb_import）をXFSのファイルシステムで初期化する場合の例を次に示します。

mkfs -t xfs /dev/vg_import/hadb_import

このあと，OSのmountコマンドを実行し，上記のファイルシステムをデータインポートで使用する入力データファイルを格納するディレクトリ（パス名：/HADB/import_data）にマウントしてください。

キャッシュファイル用のファイルシステム

EBS(gp3)上のVG（VG名：vg_cache）からLV（LV名：hadb_cache）を作成し，キャッシュファイル用のファイルシステムを作成します。

作成したLV（LV名：hadb_cache）をXFSのファイルシステムで初期化する場合の例を次に示します。

mkfs -t xfs /dev/vg_cache/hadb_cache

このあと，OSのmountコマンドを実行し，上記のファイルシステムをキャッシュファイルの格納先ディレクトリ（パス名：/HADB/ADBCCH）にマウントしてください。

重要

キャッシュファイル用のファイルシステムは，キャッシュファイルの格納先ディレクトリを配置する以外の用途で使用しないでください。

キャッシュファイル用のファイルシステムのサイズは，次の値より数ギガバイト大きくすることを推奨します。

サーバ定義のadbcachegrpオペランドを指定する場合

各adbcachegrpオペランドの-sオプションの指定値の合計（単位：ギガバイト）

サーバ定義のadb_sys_cld_cache_total_sizeオペランドを指定する場合

このオペランドの指定値（単位：ギガバイト）

上記2つのオペランドを両方とも指定しない場合

adb_sys_cld_cache_total_sizeオペランドのデフォルト値の64ギガバイト

(3)　Amazon S3の使い方

次のDBエリアのデータを格納するS3オブジェクトを格納するS3バケットを作成します。

データ用DBエリア

マスタディレクトリ用DBエリア

ディクショナリ用DBエリア

システム表用DBエリア

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にする場合，S3バケットには次のファイルのデータを格納するS3オブジェクトも格納されます。

システムログファイル

ステータスファイル

メモ

ユーザは，S3オブジェクトを作成する必要はありません。S3オブジェクトは，HADBサーバが作成します。

S3バケット内に作成されるS3オブジェクトの個数は，格納するデータ量などによって決まります。

■データの暗号化に関する留意事項

S3バケットに格納するデータを暗号化する場合は，Amazon S3のデフォルトバケット暗号化を有効にしてください。有効にする方法については，AWSのドキュメントのAmazon S3のデフォルトバケット暗号化の有効化およびS3 Express One Zoneのデータ保護と暗号化を参照してください。

なお，デフォルトバケット暗号化を有効にした場合，Amazon S3のサーバがデータの暗号化と復号を行うため，キャッシュファイルには復号後の暗号化していないデータが格納されます。

一方，HADBのDBエリア暗号化機能を使用する場合は，HADBサーバがデータの暗号化と復号を行うため，キャッシュファイルには復号前の暗号化されたデータが格納されます。そのため，DBエリア内のデータを暗号化する場合は，セキュリティ強度がより強いHADBのDBエリア暗号化機能を使用することを推奨します。DB暗号化機能については，「2.19　DBエリア暗号化機能」を参照してください。

メモ

DBエリア暗号化機能を使用する場合は，Amazon S3のデフォルトバケット暗号化を有効にする必要はありません。

21.1.4　AWS環境でのHADBサーバの構築

ここでの説明は，新規導入を前提としています。

(1)　インスタンスの用意

HADBサーバをインストールするインスタンスを用意してください。

ここでは，インスタンスタイプがr5b.2xlargeのインスタンスを用意するとします。

(2)　ファイルシステム，ディスク，およびS3バケットの用意

「表21‒2　用意するファイルシステム，ディスク，およびS3バケット」に示すファイルシステム，ディスク，およびS3バケットを用意してください。

(3)　HADBサーバおよびHADBオプションのインストール

HADBサーバをインストールする前に，環境変数の設定を実施してください。環境変数の設定については，「(8)　環境変数の設定」を参照してください。

次に，HADBサーバをインストールし，そのあとにHADBオプションをインストールしてください。HADBサーバおよびHADBオプションのインストール方法については，「8.2　インストール」を参照してください。

(4)　セキュリティグループの設定

HADBサーバをインストールしたインスタンスで，TCPポート443でのアウトバウンドのHTTPS通信ができるようにセキュリティグループを設定してください。

また，HADBサーバをインストールしたインスタンスで次の環境変数を設定している場合は，プロキシサーバとして使用するインスタンスに対しても，上記のセキュリティグループの設定をしてください。

HTTP_PROXY

HTTPS_PROXY

重要

環境変数HTTP_PROXYを設定している場合，プロキシサーバへのアクセスに通信プロトコルHTTPが使用されるため，通信内容の盗聴や改ざんなどのセキュリティ上のリスクがあります。そのため，プロキシサーバを使用する場合は，環境変数HTTPS_PROXYを設定し，通信プロトコルとしてよりセキュアなHTTPSを使用することを推奨します。

(5)　AWS CLIのインストール

HADBサーバは，AWS CLIを実行してインスタンスの情報や，Amazon S3に関する情報を取得します。そのため，HADBサーバをインストールしたインスタンスにAWS CLIをインストールしてください。

HADBサーバは，AWS CLIを次のどちらかで実行します。そのため，AWS CLIをインストールする際は，次のどちらかでawsコマンドが実行できるようにインストールパスを指定してください。

/usr/local/bin/aws

/usr/bin/aws

AWS CLIのインストール方法および設定については，AWSのドキュメントのAWS CLI のインストールと設定を参照してください。

(6)　Amazon S3へのアクセスに必要な認証情報の設定

「(a)　IAMロールを使用した認証情報の設定」または「(b)　認証情報ファイルの設定」に示す方法で，Amazon S3へのアクセスに必要な認証情報を設定してください。

なお，「(a)　IAMロールを使用した認証情報の設定」と「(b)　認証情報ファイルの設定」の両方の設定をした場合，「(b)　認証情報ファイルの設定」で設定した認証情報が優先されます。そのため，「(a)　IAMロールを使用した認証情報の設定」を実施した場合は，「(b)　認証情報ファイルの設定」を実施しないでください。

(a)　IAMロールを使用した認証情報の設定

S3バケットへのアクセスを許可するように設定したIAMロールを作成し，HADBサーバをインストールしたインスタンスにアタッチします。作成するIAMロールには，次のアクションを許可するIAMポリシーを関連づけてください。

インスタンスの情報を取得するときに必要なアクション

ec2:Describe*

S3オブジェクトの情報を取得するときに必要なアクション

s3:ListBucket*

S3オブジェクトを取得，追加，および削除するときに必要なアクション

s3:DeleteObject*

s3:GetObject*

s3:PutObject*

ディレクトリバケットへのアクセスに必要なアクション

s3express:CreateSession

S3バケットとしてディレクトリバケットを使用する場合に必要なアクションです。

Amazon S3のアクセス制御の設定方法については，AWSのドキュメントのAmazon S3でのIdentity and Access ManagementまたはS3 Express One Zone 向け AWS Identity and Access Management (IAM)を参照してください。

インスタンスへのIAMロールのアタッチについては，AWSのドキュメントのAmazon EC2のIAMロールを参照してください。

(b)　認証情報ファイルの設定

AWS CLIをインストールしたインスタンスで，AWS CLIで使用する認証情報ファイルを設定してください。手順を次に示します。

手順

IAMポリシーを設定する

HADBサーバの運用で使用するIAMユーザに対して，「(a)　IAMロールを使用した認証情報の設定」でIAMロールに関連づけているものと同じIAMポリシーを設定してください。

HADB 管理者ユーザ（adbmanager）で次のAWS CLIのコマンドを実行する

aws configure

アクセスキーIDとシークレットアクセスキーを入力する

アクセスキーID（AWS Access Key ID）とシークレットアクセスキー（AWS Secret Access Key）の入力を求められます。入力例を次に示します。

$ aws configure
AWS Access Key ID [None]: ARLYAHKBV4BD8GQEJRWJ
AWS Secret Access Key [None]: N8jZZhCzETd5yCexhKsu2EXJbuhAH7gyZjHBzeQs
Default region name [None]: ap-northeast-1
Default output format [None]: json

手順の1.でIAMポリシーを設定したIAMユーザのアクセスキーIDとシークレットアクセスキーを入力してください。

リージョン名（Default region name）と出力形式（Default output format）には，任意のリージョン名と任意の出力形式を指定してください。

aws configureコマンドの詳細については，AWSのドキュメントを参照してください。

認証情報ファイルの内容を確認する

adbmanagerのホームディレクトリ下にある.awsディレクトリ下に，認証情報ファイル（ファイル名：credentials）が作成されます。同名のファイルが存在する場合は，そのファイルの内容が更新されます。作成または更新された認証情報ファイルの内容を確認してください。

＜認証情報ファイルの例＞

[default]
aws_access_key_id=ARLYAHKBV4BD8GQEJRWJ
aws_secret_access_key=N8jZZhCzETd5yCexhKsu2EXJbuhAH7gyZjHBzeQs

認証情報ファイル中のdefaultプロファイルのaws_access_key_idとaws_secret_access_keyに，手順の1.でIAMポリシーを設定したIAMユーザのアクセスキーIDとシークレットアクセスキーが指定されていることを確認してください。

(7)　HADBクライアントのインストール

HADBクライアントをインストールしてください。HADBクライアントのインストール方法については，マニュアルHADB　AP開発ガイドのHADBクライアントのインストールおよびアンインストールを参照してください。

(8)　環境変数の設定

HADBサーバをインストールしたインスタンスで環境変数を設定してください。HADBサーバで設定する環境変数については，「8.4　環境変数の設定」を参照してください。

また，HADBクライアントでも環境変数を設定してください。HADBクライアントで設定する環境変数については，マニュアルHADB　AP開発ガイドの環境変数の設定を参照してください。

(9)　カーネルパラメタの設定

HADBサーバをインストールしたインスタンスでカーネルパラメタを設定してください。設定するカーネルパラメタについては，「6.2　カーネルパラメタの見積もり」を参照してください。

(10)　ネットワークの設定

「21.1.2　ネットワーク構成」を参照して，必要なネットワークを設定してください。

(11)　サーバ定義の作成

HADBサーバをインストールしたインスタンスでサーバ定義を作成してください。サーバ定義の作成方法については，「8.5　サーバ定義の作成および変更方法」を参照してください。サーバ定義に指定するオペランドについては，「7.　サーバ定義の設計」を参照してください。

なお，クラウドストレージ機能を使用するため，次のオペランドは必ず指定する必要があります。

adb_sys_cld_aws_regionまたはadb_sys_cld_endpoint

adb_sys_cld_aws_bucket

adb_sys_cld_cache_path

上記のほかにもクラウドストレージ機能に関するオペランドがあります。詳細については，「7.2.17　クラウドストレージ機能に関するオペランド（set形式）」を参照してください。

＜サーバ定義の指定例＞

set adb_db_path = /HADB/db
set adb_rpc_port = 23650
set adb_sys_max_users = 10
set adb_sys_rthd_num = 40
set adb_sys_uthd_num = 128
set adb_sql_exe_max_rthd_num = 4
set adb_sys_memory_limit = 64000
set adb_sys_cld_aws_region = ap-northeast-1        ...1
set adb_sys_cld_aws_bucket = adbbucket             ...2
set adb_sys_cld_cache_path = /HADB/ADBCCH          ...3
adbbuff -g TBLBUF01 ¥
        -n ADBUTBL01 ¥
        -p 1000000 ¥
        -v 1024
adbbuff -g IDXBUF01 ¥
        -n ADBUIDX01 ¥
        -p 312500
adbcachegrp -g TBLGRP01 ¥                ...4
            -n ADBUTBL01,ADBUTBL02 ¥     ...5
            -s 256                       ...6
adbcachegrp -g IDXGRP01 ¥                ...7
            -n ADBUIDX01,ADBUIDX02 ¥
            -s 64
adbcachegrp -o ¥                         ...8
            -s 16
adbcachegrp -d ¥                         ...9
            -s 16

［説明］

下記の（　）内は，指定値の例を示しています。

S3オブジェクトの格納先リージョン名（ap-northeast-1）を指定します。

「(13)　データベースの初期設定」で作成する初期設定オプションのadb_init_cld_aws_regionオペランドと同じリージョン名を指定することを推奨します。

S3オブジェクトの格納先S3バケット名（adbbucket）を指定します。

「(13)　データベースの初期設定」で作成する初期設定オプションのadb_init_cld_aws_bucketオペランドと同じS3バケット名を指定することを推奨します。

キャッシュファイルの格納先ディレクトリ名（/HADB/ADBCCH）を指定します。

キャッシュグループを定義するためにadbcachegrpオペランドを指定します。-gオプションにはキャッシュグループ名を指定します。

-nオプションには，4.で指定したキャッシュグループに割り当てるデータ用DBエリア名を指定します。

キャッシュグループに格納するキャッシュファイルの容量の上限を指定します。

2つ目のキャッシュグループを定義するためにadbcachegrpオペランドを指定します。

-oオプションを指定したadbcachegrpオペランドを指定して，既定のキャッシュグループを定義します。

-dオプションを指定したadbcachegrpオペランドを指定して，システムディレクトリ用のキャッシュグループのキャッシュファイルの容量の上限を変更します。

(12)　クライアント定義の作成

クライアント定義の作成方法については，マニュアルHADB　AP開発ガイドのHADBクライアントの環境設定（ODBCドライバおよびCLI関数を使用する場合）のクライアント定義の作成を参照してください。

(13)　データベースの初期設定

adbinitコマンドを実行して，データベースを初期設定してください。初期設定オプションの指定例を次に示します。

set adb_init_dbarea_initialize = Y
set adb_init_wrk_blk_path = /dev/dbarea_work/ADBWRK          ...1
set adb_init_cld_sysdir_storage = Y                          ...2
set adb_init_cld_aws_region = ap-northeast-1                 ...3
set adb_init_cld_aws_bucket = adbbucket                      ...4
set adb_init_cld_cache_path = /HADB/ADBCCH                   ...5
adbinitdbarea -n ADBUTBL01 -p 32 -s 32                       ...6
adbinitdbarea -n ADBUIDX01 -p 32 -s 32                       ...6

［説明］

下記の（　）内は，指定値の例を示しています。

作業表用DBエリアファイルを割り当てるEBS上のブロックスペシャルファイル名（/dev/dbarea_work/ADBWRK）を指定します。

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にするためにYを指定します。

S3オブジェクトの格納先リージョン名（ap-northeast-1）を指定します。

S3オブジェクトの格納先S3バケット名（adbbucket）を指定します。

キャッシュファイルの格納先ディレクトリ名（/HADB/ADBCCH）を指定します。

データ用DBエリア（ADBUTBL01，ADBUIDX01）の指定をします。DBエリアのページサイズには32キロバイトを，セグメントサイズには32メガバイトを指定してください。

クラウドストレージ機能を使用する場合，作成されるデータ用DBエリアの容量は約1ペタバイトになります。

21.2　新規にAzure環境を構築する場合

ここでは，Azure環境でクラウドストレージ機能を使用したシステム構築方法について，新規導入を前提として説明します。

21.2.1　Azure環境でのシステム構成例

Azure環境でクラウドストレージ機能を使用したシステム構成例を次の図に示します。以降の説明は，このシステム構成例を前提としています。

図21‒2　システム構成例（Azure環境でクラウドストレージ機能を使用する場合）

注※

上記のシステム構成例では，HADBサーバをインストールする仮想マシンとしてStandard_E8s_v4を使用するとします。

21.2.2　ネットワーク構成

Azure環境でクラウドストレージ機能を使用するシステムの場合，次のネットワークが必要になります。

クライアント－サーバ間ネットワーク

HADBクライアントとHADBサーバ間の通信で使用するネットワークです。

「図21‒2　システム構成例（Azure環境でクラウドストレージ機能を使用する場合）」のシステム構成例の場合の，IPアドレスおよびポート番号の設定例を次の表に示します。

表21‒3　クライアント−サーバ間ネットワークのIPアドレスとポート番号の設定例

項番

設定対象

IPアドレス

ポート番号

1

クライアントマシン

10.196.108.111

設定不要

2

HADBサーバをインストールする仮想マシン

10.196.108.11

23650

21.2.3　ストレージ構成

「図21‒2　システム構成例（Azure環境でクラウドストレージ機能を使用する場合）」のシステム構成を例にしてストレージ構成の方針を説明します。

ストレージ構成の方針

次のDBエリアおよびファイルシステムをマネージドディスク上に作成します。マネージドディスクの種類は，I/O性能とコスト面に優れたPremium SSD v2を使用してください。

作業表用DBエリア

DBディレクトリ用のファイルシステム

データインポートで使用する入力データファイルを格納するファイルシステム

キャッシュファイル用のファイルシステム

重要

ディスクに対するI/O性能を最大限引き出すために，上記のDBエリアおよび各ファイルシステムは，別々のマネージドディスクに作成してください。

作業表用DBエリアおよびキャッシュファイル用のファイルシステムは，マネージドディスクではなく，仮想マシンの一時ディスク上に作成することもできます。その場合，HADBサーバをインストールする仮想マシンには，一時ディスクが利用できる仮想マシン（Standard_E8ds_v4など）を使用してください。

データ用DBエリア，マスタディレクトリ用DBエリア，ディクショナリ用DBエリア，およびシステム表用DBエリアのデータは，Azure Blob Storageのコンテナー内のBLOBに格納します。

上記以外のHADBサーバで使用するファイルシステム（サーバディレクトリを配置するファイルシステムなど）は，マネージドディスクに作成します。マネージドディスクの種類はPremium SSDを使用してください。

上記の方針に従い，次の表に示すようなファイルシステム，ディスク，およびコンテナーを用意してください。

表21‒4　用意するファイルシステム，ディスク，およびコンテナー

格納先のストレージ

名称※

用途

マネージドディスク（Premium SSD）

FS001

次のディレクトリを配置するファイルシステム

サーバディレクトリ

監査証跡の出力先ディレクトリ（監査証跡機能を使用する場合）

統一フォーマット用監査証跡の出力先ディレクトリ（監査証跡機能を使用する場合）

マネージドディスク（Premium SSD v2）

WRK001

作業表用DBエリア用のディスク

FS002

次のディレクトリを配置するファイルシステム

DBディレクトリ（DBディレクトリ下のシステムディレクトリを含む）

FS003

次のディレクトリを配置するファイルシステム

データインポートで使用する入力データファイルを格納するファイルシステム

CCH001

キャッシュファイル用のファイルシステム

Azure Blob Storage

CNT001

次のDBエリアのデータを格納するBLOBを格納するコンテナー

データ用DBエリア

マスタディレクトリ用DBエリア

ディクショナリ用DBエリア

システム表用DBエリア

注※

「図21‒2　システム構成例（Azure環境でクラウドストレージ機能を使用する場合）」のシステム構成例に対応している名称です。

(1)　マネージドディスク（Premium SSD）の使い方

HADBサーバをインストールした仮想マシンのOS用の領域（ルートボリューム）として使用するマネージドディスク（Premium SSD）上のファイルシステム（/home下など）に，次のディレクトリを配置します。

サーバディレクトリ

監査証跡の出力先ディレクトリ（監査証跡機能を使用する場合に必要）

統一フォーマット用監査証跡の出力先ディレクトリ（監査証跡機能を使用する場合に必要）

(2)　マネージドディスク（Premium SSD v2）の使い方

マネージドディスク（Premium SSD v2）上のVGからLVを作成し，各LVを次の用途で使用します。

作業表用DBエリア用のディスク

マネージドディスク（Premium SSD v2）上のVG（VG名：dbarea_work）からLVを作成し，作業表用DBエリアに割り当てるブロックスペシャルファイル（ブロックスペシャルファイル名：/dev/dbarea_work/ADBWRK）として使用します。

DBディレクトリを配置するファイルシステム

マネージドディスク（Premium SSD v2）上のVG（VG名：vg_dbdir）からLV（LV名：hadb_db）を作成し，DBディレクトリ（DBディレクトリ下のシステムディレクトリを含む）を配置するファイルシステムを作成します。

作成したLV（LV名：hadb_db）をXFSのファイルシステムで初期化する場合の例を次に示します。

mkfs -t xfs /dev/vg_dbdir/hadb_db

このあと，OSのmountコマンドを実行し，上記のファイルシステムをDBディレクトリ（パス名：/HADB/db）にマウントしてください。

データインポートで使用する入力データファイルを格納するファイルシステム

マネージドディスク（Premium SSD v2）上のVG（VG名：vg_import）からLV（LV名：hadb_import）を作成し，データインポートで使用する入力データファイルを格納するファイルシステムを作成します。

作成したLV（LV名：hadb_import）をXFSのファイルシステムで初期化する場合の例を次に示します。

mkfs -t xfs /dev/vg_import/hadb_import

このあと，OSのmountコマンドを実行し，上記のファイルシステムをデータインポートで使用する入力データファイルを格納するディレクトリ（パス名：/HADB/import_data）にマウントしてください。

キャッシュファイル用のファイルシステム

マネージドディスク（Premium SSD v2）上のVG（VG名：vg_cache）からLV（LV名：hadb_cache）を作成し，キャッシュファイル用のファイルシステムを作成します。

作成したLV（LV名：hadb_cache）をXFSのファイルシステムで初期化する場合の例を次に示します。

mkfs -t xfs /dev/vg_cache/hadb_cache

このあと，OSのmountコマンドを実行し，上記のファイルシステムをキャッシュファイルの格納先ディレクトリ（パス名：/HADB/ADBCCH）にマウントしてください。

重要

キャッシュファイル用のファイルシステムは，キャッシュファイルの格納先ディレクトリを配置する以外の用途で使用しないでください。

キャッシュファイル用のファイルシステムのサイズは，次の値より数ギガバイト大きくすることを推奨します。

サーバ定義のadbcachegrpオペランドを指定する場合

各adbcachegrpオペランドの-sオプションの指定値の合計（単位：ギガバイト）

サーバ定義のadb_sys_cld_cache_total_sizeオペランドを指定する場合

このオペランドの指定値（単位：ギガバイト）

上記2つのオペランドを両方とも指定しない場合

adb_sys_cld_cache_total_sizeオペランドのデフォルト値の64ギガバイト

(3)　Azure Blob Storageの使い方

次のDBエリアのデータを格納するBLOBを格納するコンテナーを作成します。

データ用DBエリア

マスタディレクトリ用DBエリア

ディクショナリ用DBエリア

システム表用DBエリア

メモ

ユーザは，BLOBを作成する必要はありません。BLOBは，HADBサーバが作成します。

コンテナー内に作成されるBLOBの個数は，格納するデータ量などによって決まります。

重要

Azure Blob StorageとHADBサーバ間で大量のデータを転送するため，Azure Blob Storageに対応するストレージアカウントの種類にはStandard 汎用 v2（GPv2）を指定し，BLOBのアクセス層としてホットを指定してください。

21.2.4　Azure環境でのHADBサーバの構築

ここでの説明は，新規導入を前提としています。　

(1)　仮想マシンの用意

HADBサーバをインストールする仮想マシンを用意してください。

ここでは，Standard_E8s_v4の仮想マシンを用意するとします。

(2)　ファイルシステム，ディスク，およびコンテナーの用意

「表21‒4　用意するファイルシステム，ディスク，およびコンテナー」に示すファイルシステム，ディスク，およびコンテナーを用意してください。

(3)　HADBサーバおよびHADBオプションのインストール

HADBサーバをインストールする前に，環境変数の設定を実施してください。環境変数の設定については，「(8)　環境変数の設定」を参照してください。

次に，HADBサーバをインストールし，そのあとにHADBオプションをインストールしてください。HADBサーバおよびHADBオプションのインストール方法については，「8.2　インストール」を参照してください。

(4)　ネットワークセキュリティグループの設定

HADBサーバをインストールした仮想マシンのサブネットまたはNICに対して，TCPポート443でのアウトバウンドのHTTPS通信ができるようにネットワークセキュリティグループを設定してください。

また，HADBサーバをインストールした仮想マシンで次の環境変数を設定している場合は，プロキシサーバとして使用する仮想マシンのサブネットとNICに対しても，上記のネットワークセキュリティグループの設定をしてください。

HTTP_PROXY

HTTPS_PROXY

重要

環境変数HTTP_PROXYを設定している場合，プロキシサーバへのアクセスに通信プロトコルHTTPが使用されるため，通信内容の盗聴や改ざんなどのセキュリティ上のリスクがあります。そのため，プロキシサーバを使用する場合は，環境変数HTTPS_PROXYを設定し，通信プロトコルとしてよりセキュアなHTTPSを使用することを推奨します。

(5)　Azure CLIのインストール

HADBサーバをインストールした仮想マシンにAzure CLIをインストールしてください。Azure CLIのインストール方法および設定については，Azureのドキュメントを参照してください。

(6)　Azure Blob Storageへのアクセスに必要な認証情報の設定

Azure Blob Storageへのアクセスに必要な認証情報の設定が必要です。HADBサーバがAzure Blob Storageにアクセスするには，Azure Blob Storageへのアクセスを許可するように設定したカスタムロールを割り当てたHADB専用のサービスプリンシパルか，またはマネージドIDが必要になります。「(a)　サービスプリンシパルを使用する場合」または「(b)　マネージドIDを使用する場合」のどちらかの方法で認証情報の設定を実施してください。

(a)　サービスプリンシパルを使用する場合

カスタムロールの作成とサービスプリンシパルの作成を行い，そのサービスプリンシパルを使用して認証を行ってください。

■カスタムロールの作成

サービスプリンシパルに割り当てるカスタムロールを作成してください。カスタムロールには，Azure Blob Storageへのアクセスを許可する次のアクションを設定します。

BLOBを取得，追加，および削除するときに必要となるアクション

Microsoft.Storage/storageAccounts/blobServices/containers/read

Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read

Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write

Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete

■サービスプリンシパルの作成

HADB専用のサービスプリンシパルを作成し，■カスタムロールの作成で作成したカスタムロールを割り当ててください。

なお，サービスプリンシパルのログイン認証方式は，証明書またはアプリケーションパスワードのどちらかを使用してください。認証の有効期限は，業務の稼働期間（HADBサーバを使用する期間）より十分に長い期間を設定してください。有効期限が切れると，HADBサーバを開始できないなどの問題が発生するおそれがあります。

サービスプリンシパルの作成方法の詳細については，Azureのドキュメントを参照してください。

■サービスプリンシパルを使用した認証

次のどちらかの方法で，■サービスプリンシパルの作成で作成したサービスプリンシパルによる認証を行ってください。

Azure CLIによる認証

環境変数による認証

なお，上記の両方の認証を実施した場合，「環境変数による認証」が優先されます。そのため，「Azure CLIによる認証」を実施したい場合は，「環境変数による認証」を実施しないでください。

Azure CLIによる認証

HADB管理者のOSユーザ（adbmanagerなど）で，次のAzure CLIのコマンドを実行してAzureにサインインしてください。

$ az login --service-principal -u アプリケーションID -p 証明書のパスまたはアプリケーションパスワード --tenant テナントID

アプリケーションID，証明書のパスまたはアプリケーションパスワード，およびテナントIDには，■サービスプリンシパルの作成で作成した値を指定してください。

環境変数による認証

HADBサーバをインストールした仮想マシンで次の表に示す環境変数を設定してください。

表21‒5　サービスプリンシパルの認証で使用する環境変数

環境変数

設定する内容※1

AZURE_CLIENT_ID

アプリケーションID

AZURE_TENANT_ID

テナントID

AZURE_CLIENT_SECRET※2

アプリケーションパスワード

AZURE_CLIENT_CERTIFICATE_PATH※2

証明書のパス

注※1

■サービスプリンシパルの作成で作成した値を設定してください。

注※2

■サービスプリンシパルの作成で選択したログイン認証方式に従って，どちらかの環境変数を設定してください。

(b)　マネージドIDを使用する場合

カスタムロールの作成とマネージドIDの割り当てを行い，そのマネージドIDを使用して認証を行ってください。

■カスタムロールの作成

カスタムロールを作成してください。カスタムロールには，Azure Blob Storageへのアクセスを許可する次のアクションを設定します。

BLOBを取得，追加，および削除するときに必要となるアクション

Microsoft.Storage/storageAccounts/blobServices/containers/read

Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read

Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write

Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete

■マネージドIDの割り当て

HADBサーバをインストールした仮想マシンにマネージドIDを割り当ててください。そのあとに，マネージドIDのロールとして■カスタムロールの作成で作成したカスタムロールを割り当ててください。マネージドIDの割り当て方法については，Azureのドキュメントを参照してください。

■マネージドIDを使用した認証

■マネージドIDの割り当てで割り当てたマネージドIDを使用して認証を行います。HADB管理者のOSユーザ（adbmanagerなど）で，次のAzure CLIのコマンドを実行してAzureにサインインしてください。

$ az login --identity

(7)　HADBクライアントのインストール

HADBクライアントをインストールしてください。HADBクライアントのインストール方法については，マニュアルHADB　AP開発ガイドのHADBクライアントのインストールおよびアンインストールを参照してください。

(8)　環境変数の設定

HADBサーバをインストールした仮想マシンで環境変数を設定してください。HADBサーバで設定する環境変数については，「8.4　環境変数の設定」を参照してください。

また，HADBクライアントでも環境変数を設定してください。HADBクライアントで設定する環境変数については，マニュアルHADB　AP開発ガイドの環境変数の設定を参照してください。

(9)　カーネルパラメタの設定

HADBサーバをインストールした仮想マシンでカーネルパラメタを設定してください。設定するカーネルパラメタについては，「6.2　カーネルパラメタの見積もり」を参照してください。

(10)　ネットワークの設定

「21.2.2　ネットワーク構成」を参照して，必要なネットワークを設定してください。

(11)　サーバ定義の作成

HADBサーバをインストールした仮想マシンでサーバ定義を作成してください。サーバ定義の作成方法については，「8.5　サーバ定義の作成および変更方法」を参照してください。サーバ定義に指定するオペランドについては，「7.　サーバ定義の設計」を参照してください。

なお，クラウドストレージ機能を使用するため，次のオペランドは必ず指定する必要があります。

adb_sys_cld_az_storage_account

adb_sys_cld_az_container

adb_sys_cld_cache_path

上記のほかにもクラウドストレージ機能に関するオペランドがあります。詳細については，「7.2.17　クラウドストレージ機能に関するオペランド（set形式）」を参照してください。

＜サーバ定義の指定例＞

set adb_db_path = /HADB/db
set adb_rpc_port = 23650
set adb_sys_max_users = 10
set adb_sys_rthd_num = 40
set adb_sys_uthd_num = 128
set adb_sql_exe_max_rthd_num = 4
set adb_sys_memory_limit = 64000
set adb_sys_cld_az_storage_account = adbstorageaccount   ...1
set adb_sys_cld_az_container = adbcontainer              ...2
set adb_sys_cld_cache_path = /HADB/ADBCCH                ...3
adbbuff -g TBLBUF01 ¥
        -n ADBUTBL01 ¥
        -p 1000000 ¥
        -v 1024
adbbuff -g IDXBUF01 ¥
        -n ADBUIDX01 ¥
        -p 312500
adbcachegrp -g TBLGRP01 ¥                ...4
            -n ADBUTBL01,ADBUTBL02 ¥     ...5
            -s 256                       ...6
adbcachegrp -g IDXGRP01 ¥                ...7
            -n ADBUIDX01,ADBUIDX02 ¥
            -s 64
adbcachegrp -o ¥                         ...8
            -s 16

［説明］

下記の（　）内は，指定値の例を示しています。

Azure Blob Storageのストレージアカウント名（adbstorageaccount）を指定します。

「(13)　データベースの初期設定」で作成する初期設定オプションのadb_sys_cld_az_storage_accountオペランドと同じストレージアカウント名を指定することを推奨します。

BLOBの格納先コンテナー名（adbcontainer）を指定します。

「(13)　データベースの初期設定」で作成する初期設定オプションのadb_sys_cld_az_containerオペランドと同じコンテナー名を指定することを推奨します。

キャッシュファイルの格納先ディレクトリ名（/HADB/ADBCCH）を指定します。

キャッシュグループを定義するためにadbcachegrpオペランドを指定します。-gオプションにはキャッシュグループ名を指定します。

-nオプションには，4.で指定したキャッシュグループに割り当てるデータ用DBエリア名を指定します。

キャッシュグループに格納するキャッシュファイルの容量の上限を指定します。

2つ目のキャッシュグループを定義するためにadbcachegrpオペランドを指定します。

-oオプションを指定したadbcachegrpオペランドを指定して，既定のキャッシュグループを定義します。

(12)　クライアント定義の作成

クライアント定義の作成方法については，マニュアルHADB　AP開発ガイドのHADBクライアントの環境設定（ODBCドライバおよびCLI関数を使用する場合）のクライアント定義の作成を参照してください。

(13)　データベースの初期設定

adbinitコマンドを実行して，データベースを初期設定してください。初期設定オプションの指定例を次に示します。

set adb_init_dbarea_initialize = Y
set adb_init_wrk_blk_path = /dev/dbarea_work/ADBWRK          ...1
set adb_sys_cld_az_storage_account = adbstorageaccount       ...2
set adb_sys_cld_az_container = adbcontainer                  ...3
set adb_init_cld_cache_path = /HADB/ADBCCH                   ...4
adbinitdbarea -n ADBUTBL01 -p 32 -s 32                       ...5
adbinitdbarea -n ADBUIDX01 -p 32 -s 32                       ...5

［説明］

下記の（　）内は，指定値の例を示しています。

作業表用DBエリアファイルを割り当てるマネージドディスク上のブロックスペシャルファイル名（/dev/dbarea_work/ADBWRK）を指定します。

Azure Blob Storageのストレージアカウント名（adbstorageaccount）を指定します。

BLOBの格納先コンテナー名（adbcontainer）を指定します。

キャッシュファイルの格納先ディレクトリ名（/HADB/ADBCCH）を指定します。

データ用DBエリア（ADBUTBL01，ADBUIDX01）の指定をします。DBエリアのページサイズには32キロバイトを，セグメントサイズには32メガバイトを指定してください。

クラウドストレージ機能を使用する場合，作成されるデータ用DBエリアの容量は約1ペタバイトになります。

重要

データ用DBエリア数が増えると，HADBサーバの開始，adbdbstatusコマンド，およびチャンクの更新や削除などの処理時間が長くなることがあります。したがって，データ用DBエリアは必要な分だけ作成するようにしてください。データ用DBエリアを追加する必要性の判断については，「5.6　データ用DBエリアの設計」を参照してください。

21.3　オンプレミス環境からAWS環境に移行する場合

ここでは，オンプレミス環境からAWS環境へのシステムの移行方法を説明します。

＜移行の前提条件＞

移行前は，オンプレミス環境でHADBサーバを運用していたとします。

移行後は，クラウドストレージ機能を使用したAWS環境でHADBサーバを運用し，データベースはオンプレミス環境のときのものを引き継ぐものとします。

移行後のAWS環境でのシステム構成は，「図21‒1　システム構成例（AWS環境でクラウドストレージ機能を使用する場合）」に示すシステム構成であるとします。

必要となるネットワーク構成については「21.1.2　ネットワーク構成」を，ストレージ構成については「21.1.3　ストレージ構成」を参照してください。

マルチノード構成ではないとします。

メモ

クラウドストレージ機能を使用しないAWS環境から，クラウドストレージ機能を使用するAWS環境に移行する場合も，以降で説明している手順に従って作業をしてください。

21.3.1　移行作業の流れ

移行作業の流れを次の図に示します。

図21‒3　移行作業の流れ（オンプレミス環境からAWS環境へのシステムへの移行）

21.3.2　移行前の準備作業

移行前の準備作業について説明します。

(1)　全HADBユーザの情報の取得

移行後のシステムで全HADBユーザを再作成するため，全HADBユーザの認可識別子と持っている権限の情報を取得しておいてください。取得方法については，「17.2.2　全HADBユーザの情報の取得」を参照してください。

(2)　表およびインデクスの定義情報の取得

移行後のシステムで表およびインデクスを再定義するため，表およびインデクスの定義情報と，表に対するアクセス権限の情報などを取得しておいてください。取得方法については，「17.2.4　表およびインデクスの定義情報の取得」を参照してください。

データ用DBエリアの一覧が必要な場合は，DBA権限を持っているHADBユーザで次のSELECT文を実行し，ディクショナリ表を検索してください。

SELECT "DBAREA_NAME" FROM "MASTER"."SQL_DBAREAS"

(3)　表のデータのエクスポート

移行後のシステムで表およびインデクスを再定義したあとに，表のデータをインポートするため，すべての表のデータをエクスポートしておいてください。エクスポート方法については，「17.2.5　表のデータのエクスポート」を参照してください。

(4)　監査証跡機能に関する情報の取得

監査証跡機能を使用している場合，移行後のシステムで監査証跡機能の環境設定を行うため，監査証跡機能に関する情報を取得しておいてください。取得方法については，「17.2.6　監査証跡機能，同義語検索に関する情報の取得」を参照してください。

(5)　バックアップの取得

移行作業の手順を間違えると，データベースの状態が移行前とは異なってしまうおそれがあります。そのため，データベースのフルバックアップを取得しておいてください。バックアップの取得方法については，「10.3.1　バックアップの取得方法」を参照してください。

移行作業の手順を間違えた場合，バックアップからデータベースを回復し，移行前の状態に戻してください。

取得したバックアップは，移行作業後のシステムの動作確認が完了したあとに削除してください。

■クラウドストレージ機能を使用しないAWS環境から，クラウドストレージ機能を使用するAWS環境に移行する場合

バックアップの取得方法については，「18.34.5　データベースのバックアップ（AWS環境の場合）」の「(1)　バックアップの取得方法」を参照してください。その際，プライマリノードの記述は無視してください。

21.3.3　移行後のAWS環境でのHADBサーバの構築

移行後のAWS環境でのHADBサーバの構築方法を説明します。

(1)　インスタンスの用意

HADBサーバをインストールするインスタンスを用意してください。

ここでは，インスタンスタイプがr5b.2xlargeのインスタンスを用意するとします。

メモ

クラウドストレージ機能を使用しないAWS環境から，クラウドストレージ機能を使用するAWS環境に移行する場合など，すでにインスタンスが用意されているときは，この作業は不要です。

(2)　ファイルシステム，ディスク，およびS3バケットの用意

「表21‒2　用意するファイルシステム，ディスク，およびS3バケット」に示すファイルシステム，ディスク，およびS3バケットを用意してください。

■クラウドストレージ機能を使用しないAWS環境から，クラウドストレージ機能を使用するAWS環境に移行する場合

「図21‒1　システム構成例（AWS環境でクラウドストレージ機能を使用する場合）」のS3バケット（BKT001），およびキャッシュファイル用のファイルシステム（CCH001）を新たに用意してください。

必要に応じて，DBディレクトリ用のファイルシステム（FS002），およびデータインポートの入力データを格納するファイルシステム（FS003）も，新たに用意してください。

移行前のシステムで次のDBエリアのデータを格納していたEBSのディスクについては，不要な場合は破棄してください。

マスタディレクトリ用DBエリア

ディクショナリ用DBエリア

システム表用DBエリア

データ用DBエリア

破棄する場合は，HADBサーバを正常終了させてから作業を実施してください。HADBサーバが正常終了しているかどうかを確認する方法については，「21.4.3　移行前の準備作業」の「(7)　HADBサーバの正常終了」を参照してください。

(3)　HADBサーバおよびHADBオプションのインストール

HADBサーバをインストールする前に，環境変数の設定を実施してください。環境変数の設定については，「(7)　環境変数の設定」を参照してください。

次に，用意したインスタンスにHADBサーバをインストールし，そのあとにHADBオプションをインストールしてください。HADBサーバおよびHADBオプションのインストール方法については，「8.2　インストール」を参照してください。

■クラウドストレージ機能を使用しないAWS環境から，クラウドストレージ機能を使用するAWS環境に移行する場合

移行前のHADBサーバのバージョンが05-06以前の場合は，クラウドストレージ機能が使用できる05-07以降のHADBサーバにバージョンアップしてください。バージョンアップの手順については，「8.6　HADBサーバのバージョンアップ」を参照してください。

(4)　セキュリティグループの設定

用意したインスタンスでセキュリティグループを設定してください。セキュリティグループの設定方法については，「21.1.4　AWS環境でのHADBサーバの構築」の「(4)　セキュリティグループの設定」を参照してください。

(5)　AWS CLIのインストール

用意したインスタンスにAWS CLIをインストールしてください。AWS CLIのインストール方法については，「21.1.4　AWS環境でのHADBサーバの構築」の「(5)　AWS CLIのインストール」を参照してください。

(6)　Amazon S3へのアクセスに必要な認証情報の設定

Amazon S3へのアクセスに必要な認証情報を設定してください。設定方法については，「21.1.4　AWS環境でのHADBサーバの構築」の「(6)　Amazon S3へのアクセスに必要な認証情報の設定」を参照してください。

(7)　環境変数の設定

用意したインスタンスで環境変数を設定してください。設定する環境変数については，「8.4　環境変数の設定」を参照してください。

(8)　カーネルパラメタの設定

用意したインスタンスでカーネルパラメタを設定してください。設定するカーネルパラメタについては，「6.2　カーネルパラメタの見積もり」を参照してください。

(9)　ネットワークの設定

「21.1.2　ネットワーク構成」を参照して，必要なネットワークを設定してください。

(10)　サーバ定義の作成

HADBサーバをインストールしたインスタンスでサーバ定義を作成してください。サーバ定義の作成方法については，「8.5　サーバ定義の作成および変更方法」を参照してください。サーバ定義に指定するオペランドについては，「7.　サーバ定義の設計」を参照してください。

なお，クラウドストレージ機能を使用するため，次のオペランドは必ず指定する必要があります。

adb_sys_cld_aws_regionまたはadb_sys_cld_endpoint

adb_sys_cld_aws_bucket

adb_sys_cld_cache_path

上記のほかにもクラウドストレージ機能に関するオペランドがあります。詳細については，「7.2.17　クラウドストレージ機能に関するオペランド（set形式）」を参照してください。

＜サーバ定義の指定例＞

set adb_db_path = /HADB/db
set adb_rpc_port = 23650
set adb_sys_max_users = 10
set adb_sys_rthd_num = 40
set adb_sys_uthd_num = 128
set adb_sql_exe_max_rthd_num = 4
set adb_sys_memory_limit = 64000
set adb_sys_cld_aws_region = ap-northeast-1        ...1
set adb_sys_cld_aws_bucket = adbbucket             ...2
set adb_sys_cld_cache_path = /HADB/ADBCCH          ...3
adbbuff -g TBLBUF01 ¥
        -n ADBUTBL01 ¥
        -p 1000000 ¥
        -v 1024
adbbuff -g IDXBUF01 ¥
        -n ADBUIDX01 ¥
        -p 2500000

［説明］

下記の（　）内は，指定値の例を示しています。

S3オブジェクトの格納先リージョン名（ap-northeast-1）を指定します。

「(11)　データベースの初期設定」で作成する初期設定オプションのadb_init_cld_aws_regionオペランドと同じリージョン名を指定することを推奨します。

S3オブジェクトの格納先S3バケット名（adbbucket）を指定します。

「(11)　データベースの初期設定」で作成する初期設定オプションのadb_init_cld_aws_bucketオペランドと同じS3バケット名を指定することを推奨します。

キャッシュファイルの格納先ディレクトリ名（/HADB/ADBCCH）を指定します。

(11)　データベースの初期設定

adbinitコマンドを実行して，データベースを初期設定してください。

データベースの初期設定後，adbstartコマンドを実行してHADBサーバを開始してください。

■初期設定オプションの指定例

adbinitコマンドを実行するときに指定する初期設定オプションの指定例を次に示します。

set adb_init_dbarea_initialize = Y
set adb_init_wrk_blk_path = /dev/dbarea_work/ADBWRK          ...1
set adb_init_cld_aws_region = ap-northeast-1                 ...2
set adb_init_cld_aws_bucket = adbbucket                      ...3
set adb_init_cld_cache_path = /HADB/ADBCCH                   ...4
adbinitdbarea -n ADBUTBL01 -p 32 -s 32                       ...5
adbinitdbarea -n ADBUIDX01 -p 32 -s 32                       ...5

［説明］

下記の（　）内は，指定値の例を示しています。

作業表用DBエリアファイルを割り当てるEBS上のブロックスペシャルファイル名（/dev/dbarea_work/ADBWRK）を指定します。

S3オブジェクトの格納先リージョン名（ap-northeast-1）を指定します。

S3オブジェクトの格納先S3バケット名（adbbucket）を指定します。

キャッシュファイルの格納先ディレクトリ名（/HADB/ADBCCH）を指定します。

データ用DBエリア（ADBUTBL01，ADBUIDX01）※の指定をします。DBエリアのページサイズには32キロバイトを，セグメントサイズには32メガバイトを指定してください。

クラウドストレージ機能を使用する場合，作成されるデータ用DBエリアの容量は約1ペタバイトになります。

注※

移行前のシステムで定義していたDBエリア名と同じDBエリア名を指定してください。

21.3.4　移行後のAWS環境でのデータベースの再作成

移行後のAWS環境で実施するデータベースの再作成方法について説明します。

(1)　HADBユーザの作成および権限の付与

CREATE USER文でHADBユーザを作成して，作成したHADBユーザにGRANT文で権限を付与してください。

「21.3.2　移行前の準備作業」の「(1)　全HADBユーザの情報の取得」で取得した全HADBユーザの情報を使用して，HADBユーザを作成して権限を付与します。

HADBユーザを作成して権限を付与する際の注意事項，およびHADBユーザの作成と権限を付与するSQL文の例については，「17.4.1　HADBユーザの作成および権限の付与」を参照してください。

(2)　表およびインデクスの再作成

移行前のシステムで定義していた表およびインデクスを再定義し，表にデータをインポートしてください。また，表に対するアクセス権限も付与してください。手順を次に示します。

手順

次の1.～3.および5.の操作方法については，「17.4.2　表およびインデクスの再作成」の手順の1.～3.および5.の操作方法を参照してください。

表およびインデクスを再定義する

表およびインデクスを再定義する際は，「21.3.2　移行前の準備作業」の「(2)　表およびインデクスの定義情報の取得」で取得した情報を使用してください。

ビュー表を再定義する

ビュー表を再定義する際は，「21.3.2　移行前の準備作業」の「(2)　表およびインデクスの定義情報の取得」で取得した，ビュー表の定義情報を使用してください。

表に対するアクセス権限を付与する

アクセス権限を付与する際は，「21.3.2　移行前の準備作業」の「(2)　表およびインデクスの定義情報の取得」で取得した，表に対するアクセス権限の情報を使用してください。

表にデータをインポートする

adbimportコマンドを実行して，表にデータをインポートしてください。

マルチチャンク表にデータをインポートする場合

「21.3.2　移行前の準備作業」の「(3)　表のデータのエクスポート」でエクスポートしたデータを入力データファイルにして，バックグラウンドインポートを実行してください。

なお，初回のデータインポートの際は，作成モードでデータインポートを実行してください。手順については，「11.1.10　実表にデータを格納する方法（データインポート）」および「11.5.2　マルチチャンク表にデータを格納する方法（バックグラウンドインポート）」を参照してください。

重要

「21.3.2　移行前の準備作業」の「(3)　表のデータのエクスポート」で取得した，チャンクコメントおよびチャンクの状態に合わせてオプションを指定してください。

カレントチャンクは，いちばん最後にインポートしてください。「21.3.2　移行前の準備作業」の「(3)　表のデータのエクスポート」でカレントチャンクを調べています。

マルチチャンク表ではない表にデータをインポートする場合

「21.3.2　移行前の準備作業」の「(3)　表のデータのエクスポート」でエクスポートしたデータを入力データファイルにして，adbimportコマンドを実行してください。

メモ

この作業は，データベース管理の担当者が実施してください。表の所有者と同じ認可識別子のHADBユーザを使用してデータをインポートしてください。

コスト情報を収集する

コスト情報を収集する際は，「21.3.2　移行前の準備作業」の「(2)　表およびインデクスの定義情報の取得」で取得した，コスト情報を収集している表の一覧を使用してください。

(3)　監査証跡機能の環境設定

移行前のシステムで監査証跡機能を使用していた場合は，「12.2　監査証跡機能の環境設定」を参照して，監査証跡機能の環境設定をしてください。

環境設定をする際，「21.3.2　移行前の準備作業」の「(4)　監査証跡機能に関する情報の取得」で取得した監査証跡に関する情報を使用してください。監査対象を定義していた場合は，監査対象の定義が必要です。監査対象を定義していない場合は，監査対象の定義は不要です。監査対象の定義方法については，「12.2.7　監査対象の定義」を参照してください。

(4)　HADBユーザのユーザ認証方式とパスワードの変更

HADBユーザのユーザ認証方式の変更

この時点では，全HADBユーザのユーザ認証方式がデータベース認証になっています。

「21.3.2　移行前の準備作業」の「(1)　全HADBユーザの情報の取得」で取得した情報を参照してください。AUTHENTICATION_TYPE列に'PAM'が表示されているHADBユーザは，PAM認証を使用しています。このHADBユーザのユーザ認証方式をPAM認証に変更してください。AUTHENTICATION_TYPE列に'Keycloak'が表示されているHADBユーザは，Keycloak認証を使用しています。このHADBユーザのユーザ認証方式をKeycloak認証に変更してください。

ユーザ認証方式の変更方法については，「11.7.4　HADBユーザのユーザ認証方式を変更する方法」を参照してください。

HADBユーザのパスワードの変更

「21.3.2　移行前の準備作業」の「(1)　全HADBユーザの情報の取得」で取得した情報を参照してください。AUTHENTICATION_TYPE列に'DB'が表示されているHADBユーザは，データベース認証を使用しています。このHADBユーザを使用する人に，HADBユーザの認可識別子と設定済みのパスワードを知らせてください。そして，このHADBユーザを使用する人が，HADBユーザのパスワードを変更してください。パスワードの変更方法については，「11.7.2　HADBユーザのパスワードを変更する方法」を参照してください。

21.4　クラウドストレージ機能を使用しないAWS環境に移行する場合

ここでは，クラウドストレージ機能を使用しているシステムから，クラウドストレージ機能を使用しないシステムへの移行方法を説明します。

＜移行の前提条件＞

移行前および移行後のシステムもAWS環境であるとします。

移行前のシステム構成は，「図21‒1　システム構成例（AWS環境でクラウドストレージ機能を使用する場合）」に示すシステム構成であるとします。

移行後のシステム構成は，「図21‒4　移行後のシステム構成例（AWS環境でクラウドストレージ機能を使用しない場合）」に示すシステム構成であるとします。

マルチノード構成ではないとします。

21.4.1　移行後のシステム構成例

移行後のシステム構成例（AWS環境でクラウドストレージ機能を使用しない場合）を次の図に示します。

図21‒4　移行後のシステム構成例（AWS環境でクラウドストレージ機能を使用しない場合）

＜移行の際の要点＞

「図21‒1　システム構成例（AWS環境でクラウドストレージ機能を使用する場合）」のS3バケット（BKT001）内のS3オブジェクトに格納されている次のDBエリアのデータを，移行後のシステムでは上図のEBSのLU001～LU005に格納します。

データ用DBエリア

マスタディレクトリ用DBエリア

ディクショナリ用DBエリア

システム表用DBエリア

移行後のシステムでは，「図21‒1　システム構成例（AWS環境でクラウドストレージ機能を使用する場合）」のキャッシュファイル用のファイルシステム（CCH001）は不要になります。

そのほかのストレージ構成は，移行前のシステムと移行後のシステムで同じになります。

21.4.2　移行作業の流れ

移行作業の流れを次の図に示します。

図21‒5　移行作業の流れ（クラウドストレージ機能を使用しないシステムへの移行）

21.4.3　移行前の準備作業

移行前の準備作業について説明します。

(1)　全HADBユーザの情報の取得

移行後のシステムで全HADBユーザを再作成するため，全HADBユーザの認可識別子と持っている権限の情報を取得しておいてください。取得方法については，「17.2.2　全HADBユーザの情報の取得」を参照してください。

(2)　表およびインデクスの定義情報の取得

移行後のシステムで表およびインデクスを再定義するため，表およびインデクスの定義情報と，表に対するアクセス権限の情報などを取得しておいてください。取得方法については，「17.2.4　表およびインデクスの定義情報の取得」を参照してください。

データ用DBエリアの一覧が必要な場合は，DBA権限を持っているHADBユーザで次のSELECT文を実行し，ディクショナリ表を検索してください。

SELECT "DBAREA_NAME" FROM "MASTER"."SQL_DBAREAS"

(3)　表のデータのエクスポート

移行後のシステムで表およびインデクスを再定義したあとに，表のデータをインポートするため，すべての表のデータをエクスポートしておいてください。エクスポート方法については，「17.2.5　表のデータのエクスポート」を参照してください。

(4)　監査証跡機能に関する情報の取得

監査証跡機能を使用している場合，移行後のシステムで監査証跡機能の環境設定を行うため，監査証跡機能に関する情報を取得しておいてください。取得方法については，「17.2.6　監査証跡機能，同義語検索に関する情報の取得」を参照してください。

(5)　バックアップの取得

移行作業の手順を間違えると，データベースの状態が移行前とは異なってしまうおそれがあります。そのため，データベースのフルバックアップを取得しておいてください。バックアップの取得方法については，「22.1.1　バックアップの取得方法とデータベースの回復方法（AWS環境の場合）」を参照してください。

移行作業の手順を間違えた場合，バックアップからデータベースを回復し，移行前の状態に戻してください。

取得したバックアップは，移行作業後のシステムの動作確認が完了したあとに削除してください。

(6)　HADBサーバのバージョンアップ

移行後のシステムでバージョンアップしたHADBサーバを使用したい場合は，この時点でHADBサーバをバージョンアップしてください。バージョンアップの手順については，「8.6　HADBサーバのバージョンアップ」を参照してください。

(7)　HADBサーバの正常終了

移行前にHADBサーバを正常終了してください。

HADBサーバがすでに終了している場合は，次に示す2点を確認して，HADBサーバが正常終了していることを確認してください。

adbls -d srvコマンドの出力項目「STATUS」の表示がSTOPになっているかどうか

メッセージログファイルまたはsyslogに出力されているKFAA91154-Iメッセージの終了モードが，normally（正常終了）になっているかどうか

HADBサーバが正常終了していない場合は，adbstartコマンドを実行してHADBサーバを開始したあとに，adbstopコマンドを実行して正常終了させてください。

21.4.4　DBエリアファイルの格納先の用意

EBSボリューム上のVG（VG名：dbarea_mst，dbarea_dic，dbarea_stbl，dbarea_data01，dbarea_data02）から，次のDBエリアに割り当てるブロックスペシャルファイルとして使用するLVを作成してください。ここでは，EBSのボリュームタイプは，汎用SSD(gp3)とします。

マスタディレクトリ用DBエリア

ディクショナリ用DBエリア

システム表用DBエリア

データ用DBエリア

作成するLVと各DBエリアの関係を次の表に示します。

表21‒6　作成するLVと各DBエリアの関係

LVの名称

DBエリア

パス名

EBS_LV001

マスタディレクトリ用DBエリア

/dev/dbarea_mst/ADBMST

EBS_LV002

ディクショナリ用DBエリア

/dev/dbarea_dic/ADBDIC

EBS_LV003

システム表用DBエリア

/dev/dbarea_stbl/ADBSTBL

EBS_LV004

データ用DBエリア（ADBUTBL01）

/dev/dbarea_data01/ADBUTBL01

EBS_LV005

データ用DBエリア（ADBUIDX01）

/dev/dbarea_data02/ADBUIDX01

「図21‒4　移行後のシステム構成例（AWS環境でクラウドストレージ機能を使用しない場合）」のシステムの場合，LU001～LU005が上記のDBエリア用のディスクに当たります。

LU001：マスタディレクトリ用DBエリア用のディスク

LU002：ディクショナリ用DBエリア用のディスク

LU003：システム表用DBエリア用のディスク

LU004：データ用DBエリア（ADBUTBL01）用のディスク

LU005：データ用DBエリア（ADBUIDX01）用のディスク

なお，「図21‒1　システム構成例（AWS環境でクラウドストレージ機能を使用する場合）」のシステムの場合，DBエリアのデータを格納していたS3バケット（BKT001），およびキャッシュファイル用のファイルシステム（CCH001）とそのファイルシステムを構成するEBSは不要になります。

21.4.5　移行後のシステムでの環境設定

移行後のシステムでの環境設定について説明します。

(1)　HADBオプションのアンインストール

移行後のシステムではHADBオプションは不要なため，HADBオプションをアンインストールしてください。アンインストール方法については，「8.12.3　HADBオプションのアンインストール手順」を参照してください。

(2)　サーバ定義の変更

移行後のシステムの環境に合わせて，必要に応じてサーバ定義を変更してください。

なお，クラウドストレージ機能に関するオペランドは削除してください。クラウドストレージ機能に関するオペランドについては，「7.2.17　クラウドストレージ機能に関するオペランド（set形式）」を参照してください。

(3)　データベースの初期設定

adbinitコマンドを実行して，データベースを初期設定してください。

データベースの初期設定後，adbstartコマンドを実行してHADBサーバを開始してください。

■初期設定オプションの指定例

adbinitコマンドを実行するときに指定する初期設定オプションの指定例を次に示します。

set adb_init_dbarea_initialize = Y
set adb_init_wrk_blk_path = /dev/dbarea_work/ADBWRK                        ...1
set adb_init_mst_blk_path = /dev/dbarea_mst/ADBMST                         ...2
set adb_init_dic_blk_path = /dev/dbarea_dic/ADBDIC                         ...3
set adb_init_stbl_blk_path = /dev/dbarea_stbl/ADBSTBL                      ...4
adbinitdbarea -n ADBUTBL01 -p 8 -s 4 -v /dev/dbarea_data01/ADBUTBL01       ...5
adbinitdbarea -n ADBUIDX01 -p 8 -s 4 -v /dev/dbarea_data02/ADBUIDX01       ...6

［説明］

作業表用DBエリアファイルとして割り当てるブロックスペシャルファイル名を指定します。

マスタディレクトリ用DBエリアファイルとして割り当てるブロックスペシャルファイル名を指定します。

ディクショナリ用DBエリアファイルとして割り当てるブロックスペシャルファイル名を指定します。

システム表用DBエリアファイルとして割り当てるブロックスペシャルファイル名を指定します。

データ用DBエリア（ADBUTBL01）※の指定をします。-vオプションには，データ用DBエリアファイルとして割り当てるブロックスペシャルファイル名を指定します。

データ用DBエリア（ADBUIDX01）※の指定をします。-vオプションには，データ用DBエリアファイルとして割り当てるブロックスペシャルファイル名を指定します。

注※

移行前のシステムで定義していたDBエリア名と同じDBエリア名を指定してください。

また，データ用DBエリアのページサイズおよびセグメントサイズについては，「5.6.3　データ用DBエリアのページサイズを決める際の考慮点」および「5.6.4　データ用DBエリアの1セグメントの容量を決める際の考慮点」を参照し，設計した値を指定してください。

21.4.6　移行後のシステムでのデータベースの再作成

移行後のシステムで実施するデータベースの再作成方法について説明します。

(1)　HADBユーザの作成および権限の付与

CREATE USER文でHADBユーザを作成して，作成したHADBユーザにGRANT文で権限を付与してください。

「21.4.3　移行前の準備作業」の「(1)　全HADBユーザの情報の取得」で取得した全HADBユーザの情報を使用して，HADBユーザを作成して権限を付与します。

HADBユーザを作成して権限を付与する際の注意事項，およびHADBユーザの作成と権限を付与するSQL文の例については，「17.4.1　HADBユーザの作成および権限の付与」を参照してください。

(2)　表およびインデクスの再作成

移行前のシステムで定義していた表およびインデクスを再定義し，表にデータをインポートしてください。また，表に対するアクセス権限も付与してください。手順を次に示します。

手順

次の1.～3.および5.の操作方法については，「17.4.2　表およびインデクスの再作成」の手順の1.～3.および5.の操作方法を参照してください。

表およびインデクスを再定義する

表およびインデクスを再定義する際は，「21.4.3　移行前の準備作業」の「(2)　表およびインデクスの定義情報の取得」で取得した情報を使用してください。

ビュー表を再定義する

ビュー表を再定義する際は，「21.4.3　移行前の準備作業」の「(2)　表およびインデクスの定義情報の取得」で取得した，ビュー表の定義情報を使用してください。

表に対するアクセス権限を付与する

アクセス権限を付与する際は，「21.4.3　移行前の準備作業」の「(2)　表およびインデクスの定義情報の取得」で取得した，表に対するアクセス権限の情報を使用してください。

表にデータをインポートする

adbimportコマンドを実行して，表にデータをインポートしてください。

マルチチャンク表にデータをインポートする場合

「21.4.3　移行前の準備作業」の「(3)　表のデータのエクスポート」でエクスポートしたデータを入力データファイルにして，バックグラウンドインポートを実行してください。

なお，初回のデータインポートの際は，作成モードでデータインポートを実行してください。手順については，「11.1.10　実表にデータを格納する方法（データインポート）」および「11.5.2　マルチチャンク表にデータを格納する方法（バックグラウンドインポート）」を参照してください。

重要

「21.4.3　移行前の準備作業」の「(3)　表のデータのエクスポート」で取得した，チャンクコメントおよびチャンクの状態に合わせてオプションを指定してください。

カレントチャンクは，いちばん最後にインポートしてください。「21.4.3　移行前の準備作業」の「(3)　表のデータのエクスポート」でカレントチャンクを調べています。

マルチチャンク表ではない表にデータをインポートする場合

「21.4.3　移行前の準備作業」の「(3)　表のデータのエクスポート」でエクスポートしたデータを入力データファイルにして，adbimportコマンドを実行してください。

メモ

この作業は，データベース管理の担当者が実施してください。表の所有者と同じ認可識別子のHADBユーザを使用してデータをインポートしてください。

コスト情報を収集する

コスト情報を収集する際は，「21.4.3　移行前の準備作業」の「(2)　表およびインデクスの定義情報の取得」で取得した，コスト情報を収集している表の一覧を使用してください。

(3)　監査証跡機能の環境設定

移行前のシステムで監査証跡機能を使用していた場合は，「12.2　監査証跡機能の環境設定」を参照して，監査証跡機能の環境設定をしてください。

環境設定をする際，「21.4.3　移行前の準備作業」の「(4)　監査証跡機能に関する情報の取得」で取得した監査証跡に関する情報を使用してください。監査対象を定義していた場合は，監査対象の定義が必要です。監査対象を定義していない場合は，監査対象の定義は不要です。監査対象の定義方法については，「12.2.7　監査対象の定義」を参照してください。

(4)　HADBユーザのユーザ認証方式とパスワードの変更

HADBユーザのユーザ認証方式の変更

この時点では，全HADBユーザのユーザ認証方式がデータベース認証になっています。

「21.4.3　移行前の準備作業」の「(1)　全HADBユーザの情報の取得」で取得した情報を参照してください。AUTHENTICATION_TYPE列に'PAM'が表示されているHADBユーザは，PAM認証を使用しています。このHADBユーザのユーザ認証方式をPAM認証に変更してください。AUTHENTICATION_TYPE列に'Keycloak'が表示されているHADBユーザは，Keycloak認証を使用しています。このHADBユーザのユーザ認証方式をKeycloak認証に変更してください。

ユーザ認証方式の変更方法については，「11.7.4　HADBユーザのユーザ認証方式を変更する方法」を参照してください。

HADBユーザのパスワードの変更

「21.4.3　移行前の準備作業」の「(1)　全HADBユーザの情報の取得」で取得した情報を参照してください。AUTHENTICATION_TYPE列に'DB'が表示されているHADBユーザは，データベース認証を使用しています。このHADBユーザを使用する人に，HADBユーザの認可識別子と設定済みのパスワードを知らせてください。そして，このHADBユーザを使用する人が，HADBユーザのパスワードを変更してください。パスワードの変更方法については，「11.7.2　HADBユーザのパスワードを変更する方法」を参照してください。

22　クラウドストレージ機能を使用している場合の運用

この章では，クラウドストレージ機能を使用している際の固有の運用方法について説明します。ここで説明している以外の運用方法については，第5編　運用編を参照してください。

22.1　バックアップの取得とデータベースの回復

ここでは，クラウドストレージ機能を使用しているときのバックアップの取得方法とデータベースの回復方法について説明します。

22.1.1　バックアップの取得方法とデータベースの回復方法（AWS環境の場合）

AWS環境でデータベースのバックアップを取得する手順，およびバックアップを使用したデータベースの回復手順を説明します。

(1)　バックアップの取得方法（AWS環境の場合）

AWS環境でデータベースのバックアップを取得する手順を説明します。

メモ

バックアップを取得する前に，「10.3.1　バックアップの取得方法」の「(1)　バックアップを取得するタイミング」を参照して，バックアップ取得時の留意事項を確認してください。

手順

HADBサーバの稼働モードを静止モードに変更する

adbchgsrvmode --quiescence

バックアップを取得する

次の表に示すファイルとDBエリアのデータを格納しているS3オブジェクトのバックアップを取得してください。

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にしているかどうかによってバックアップの取得対象が異なります。

表22‒1　バックアップを取得するS3オブジェクト（クラウドストレージ機能のシステムディレクトリ対応オプションを有効にしている場合）

格納先のストレージ種別

バックアップを取得するS3オブジェクト

Amazon S3

マスタディレクトリ用DBエリア

S3バケット※内の全S3オブジェクト

ディクショナリ用DBエリア

システム表用DBエリア

データ用DBエリア

システムログファイル

ステータスファイル

注

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にしている場合は，コマンドステータスファイルのバックアップは取得不要です。

注※

バケットタイプによって，S3オブジェクトのバックアップの取得方法が異なります。

表22‒2　バックアップを取得するファイルおよびS3オブジェクト（クラウドストレージ機能のシステムディレクトリ対応オプションが無効な場合）

格納先のストレージ種別

バックアップを取得するファイルおよびS3オブジェクト

EBS

コマンドステータスファイル

$DBDIR/ADBSYS/ADBUTLに格納されているファイル

システムログファイル

$DBDIR/ADBSYS/ADBSLGに格納されているファイル

ステータスファイル

$DBDIR/ADBSYS/ADBSTS/ADBSTS

Amazon S3

マスタディレクトリ用DBエリア

S3バケット※内の全S3オブジェクト

ディクショナリ用DBエリア

システム表用DBエリア

データ用DBエリア

注※

バケットタイプによって，S3オブジェクトのバックアップの取得方法が異なります。

■EBS内のファイルのバックアップの取得方法

次のどちらかの方法でバックアップを取得します。

バックアップ対象ファイルが格納されているすべてのEBSのEBSスナップショットを取得する

EBSスナップショットを取得する方法については，AWSのドキュメントのAmazon EBSスナップショットを参照してください。

バックアップ対象ファイルをコピーする

ファイルをコピーする場合は，スパースファイルにしないでください。

重要

バックアップ対象ファイルがシンボリックリンクの場合，リンク先のファイルのバックアップを取得してください。

■S3オブジェクトのバックアップの取得方法（S3バケットが汎用バケットの場合）

汎用バケット内のS3オブジェクトのバックアップを取得する場合は，AWSが提供している機能のAWS Backupまたはオブジェクトのレプリケーションを使用してください。

AWS Backupを使用してバックアップを取得する場合

Amazon S3用のAWS Backupを使用して，汎用バケット内の全S3オブジェクトのバックアップを取得してください。AWS Backupの使用方法については，AWSのドキュメントのAmazon S3用のAWS Backupの使用を参照してください。

なお，AWS BackupでS3オブジェクトのバックアップを取得する場合は，事前にAmazon S3のバージョニング機能を有効にしておく必要があります。バージョニング機能を有効にする方法については，AWSのドキュメントのバケットでのバージョニングの有効化を参照してください。

重要

バージョニング機能を有効にした場合，S3オブジェクトに格納しているデータを更新するたびに，そのS3オブジェクトのバージョンが取得されます（更新前のS3オブジェクトの複製が作成されます）。取得したバージョンごとにAmazon S3のストレージ料金が発生するため，Amazon S3の利用料金を抑えたい場合は，次のことを検討してください。

S3オブジェクトのライフサイクルを適切に設定し，保存するバージョン数を制限する

オブジェクトのレプリケーションを使用してバックアップを取得する

S3オブジェクトのライフサイクルの設定方法については，AWSのドキュメントのストレージのライフサイクルの管理を参照してください。

オブジェクトのレプリケーションを使用してバックアップを取得する場合

オブジェクトのレプリケーションを使用して，汎用バケット内の全S3オブジェクトのコピーを取得してください。オブジェクトのレプリケーションの使用方法については，AWSのドキュメントのオブジェクトのレプリケーションを参照してください。

■S3オブジェクトのバックアップの取得方法（S3バケットがディレクトリバケットの場合）

ディレクトリバケット内のS3オブジェクトのバックアップを取得する場合は，ディレクトリバケット内の全S3オブジェクトを，バックアップ用に別途用意した空の汎用バケットにフォルダごとコピーしてください。その際，コピー先の汎用バケットに書き込むためのs3:PutObjectアクセス許可が必要となります。必要に応じて「21.1.4　AWS環境でのHADBサーバの構築」の「(6)　Amazon S3へのアクセスに必要な認証情報の設定」の「(a)　IAMロールを使用した認証情報の設定」で作成したIAMロールを修正してください。

HADBサーバの稼働モードを元に戻す

adbchgsrvmode --normal

1.で変更した稼働モードを元に戻します。上記は，稼働モードを通常モードに戻す場合の例です。

(2)　データベースの回復方法（AWS環境の場合）

AWS環境でバックアップを使用したデータベースの回復手順を説明します。

メモ

データベースの回復をする前に，「10.3.2　バックアップからの回復方法」の内容も確認してください。

手順

HADBサーバを正常終了する

adbstop

バックアップを使用してデータベースを回復する

EBS内のファイルと，S3バケット内のS3オブジェクトを回復してください。

■EBS内のファイルの回復方法

EBSスナップショットでバックアップを取得した場合

EBSスナップショットを使用してEBSを復元してください。復元方法については，AWSのドキュメントのスナップショットからのAmazon EBSボリュームの復元およびAmazon EBSボリュームの初期化を参照してください。

バックアップ対象ファイルをコピーした場合

コピーしたファイルを元の位置に戻してください。

■S3オブジェクトの回復方法（S3バケットが汎用バケットの場合）

AWS Backupでバックアップを取得した場合

S3バケット内の全S3オブジェクトを削除して，S3バケットを空にしてください。S3バケットを空にする方法については，AWSのドキュメントのバケットを空にするを参照してください。

次に，AWS Backupで取得したバックアップを使用して，S3オブジェクトを復元してください。復元方法については，AWSのドキュメントのS3データの復元を参照してください。

オブジェクトのレプリケーションを使用してバックアップを取得した場合

オブジェクトのレプリケーションでコピーしたS3オブジェクトの格納先のS3バケット名とリージョン名を，サーバ定義のadb_sys_cld_aws_bucketオペランドとadb_sys_cld_aws_regionオペランドに指定してください。

■S3オブジェクトの回復方法（S3バケットがディレクトリバケットの場合）

次の手順でS3オブジェクトを回復してください。

1．ディレクトリバケットを空にする

回復対象のディレクトリバケット内の全S3オブジェクトを削除して，ディレクトリバケットを空にしてください。ディレクトリバケットを空にする方法については，AWSのドキュメントのバケットを空にするを参照してください。

2．ディレクトリバケットにS3オブジェクトをコピーする

バックアップの取得時にS3オブジェクトをコピーした汎用バケットに格納されている全S3オブジェクトを，1.で空にしたディレクトリバケットにフォルダごとコピーしてください。その際，コピー元の汎用バケットを読み取るためのs3:GetObjectアクセス許可が必要となります。必要に応じて「21.1.4　AWS環境でのHADBサーバの構築」の「(6)　Amazon S3へのアクセスに必要な認証情報の設定」の「(a)　IAMロールを使用した認証情報の設定」で作成したIAMロールを修正してください。

HADBサーバを開始する

adbstart

HADBサーバの稼働モードを変更する

HADBサーバの稼働モードを静止モードにした状態でバックアップを取得した場合，データベースを回復したあとにHADBサーバを開始すると，HADBサーバの稼働モードは静止モードになります。この場合，必要に応じてadbchgsrvmodeコマンドを実行し，HADBサーバの稼働モードをデータベースを回復する前の状態に戻してください。

adbchgsrvmode --normal

上記は，稼働モードを通常モードに戻す場合の例です。

メモ

データベースを回復した直後のHADBサーバの開始後の場合，キャッシュファイルの再利用はできません。

22.1.2　バックアップの取得方法とデータベースの回復方法（Azure環境の場合）

Azure環境でデータベースのバックアップを取得する手順，およびバックアップを使用したデータベースの回復手順を説明します。

(1)　バックアップの取得方法（Azure環境の場合）

Azure環境でデータベースのバックアップを取得する手順を説明します。

メモ

バックアップを取得する前に，「10.3.1　バックアップの取得方法」の「(1)　バックアップを取得するタイミング」を参照して，バックアップ取得時の留意事項を確認してください。

手順

HADBサーバの稼働モードを静止モードに変更する

adbchgsrvmode --quiescence

バックアップを取得する

次の表に示すファイルとDBエリアのデータを格納しているBLOBのバックアップを取得してください。

表22‒3　バックアップを取得するファイルおよびBLOB

格納先のストレージ種別

バックアップを取得するファイルおよびBLOB

マネージドディスク

コマンドステータスファイル

$DBDIR/ADBSYS/ADBUTLに格納されているファイル

システムログファイル

$DBDIR/ADBSYS/ADBSLGに格納されているファイル

ステータスファイル

$DBDIR/ADBSYS/ADBSTS/ADBSTS

Azure Blob Storage

マスタディレクトリ用DBエリア

コンテナー内の全BLOB

ディクショナリ用DBエリア

システム表用DBエリア

データ用DBエリア

■マネージドディスク内のファイルのバックアップを取得する場合

次のどちらかの方法でバックアップを取得します。

バックアップ対象ファイルが格納されているすべてのマネージドディスクのスナップショットを取得する

マネージドディスクのスナップショットを取得する方法については，Azureのドキュメントの仮想ハードディスクのスナップショットを作成するを参照してください。

バックアップ対象ファイルをコピーする

ファイルをコピーする場合は，スパースファイルにしないでください。

重要

バックアップ対象ファイルがシンボリックリンクの場合，リンク先のファイルのバックアップを取得してください。

■Azure Blob Storage内のBLOBのバックアップを取得する場合

BLOBのバックアップを取得する場合は，Azureが提供している機能のAzure Backupまたはオブジェクトのレプリケーションを使用してください。

Azure Backupを使用してバックアップを取得する場合

Azure Blob Storage用のAzure Backupを使用して，コンテナー内の全BLOBのバックアップを取得してください。Azure Backupの使用方法については，AzureのドキュメントのAzure Backupを使用してAzure BLOBのバックアップを構成および管理するを参照してください。

オブジェクトのレプリケーションを使用してバックアップを取得する場合

オブジェクトのレプリケーションを使用して，コンテナー内の全BLOBのコピーを取得してください。オブジェクトのレプリケーションの使用方法については，AzureのドキュメントのブロックBLOBのオブジェクトレプリケーションを参照してください。

HADBサーバの稼働モードを元に戻す

adbchgsrvmode --normal

1.で変更した稼働モードを元に戻します。上記は，稼働モードを通常モードに戻す場合の例です。

(2)　データベースの回復方法（Azure環境の場合）

Azure環境でバックアップを使用したデータベースの回復手順を説明します。

メモ

データベースの回復をする前に，「10.3.2　バックアップからの回復方法」の内容も確認してください。

手順

HADBサーバを正常終了する

adbstop

バックアップを使用してデータベースを回復する

マネージドディスク内のファイルと，コンテナー内のBLOBを回復してください。

■マネージドディスク内のファイルを回復する場合

スナップショットでバックアップを取得した場合

スナップショットを使用してマネージドディスクを復元してください。復元方法については，AzureのドキュメントのAzureマネージドディスクを復元するを参照してください。

バックアップ対象ファイルをコピーした場合

コピーしたファイルを元の位置に戻してください。

■Azure Blob Storage内のBLOBを回復する場合

Azure Backupでバックアップを取得した場合

コンテナー内の全BLOBを削除して，コンテナーを空にしてください。

次に，Azure Backupで取得したバックアップを使用して，BLOBを復元してください。復元方法については，AzureのドキュメントのAzureのBLOBを復元するを参照してください。

オブジェクトのレプリケーションを使用してバックアップを取得した場合

オブジェクトのレプリケーションでコピーしたBLOBの格納先のストレージアカウント名とコンテナー名を，サーバ定義のadb_sys_cld_az_storage_accountオペランドとadb_sys_cld_az_containerオペランドに指定してください。

HADBサーバを開始する

adbstart

HADBサーバの稼働モードを変更する

HADBサーバの稼働モードを静止モードにした状態でバックアップを取得した場合，データベースを回復したあとにHADBサーバを開始すると，HADBサーバの稼働モードは静止モードになります。この場合，必要に応じてadbchgsrvmodeコマンドを実行し，HADBサーバの稼働モードをデータベースを回復する前の状態に戻してください。

adbchgsrvmode --normal

上記は，稼働モードを通常モードに戻す場合の例です。

メモ

データベースを回復した直後のHADBサーバの開始後の場合，キャッシュファイルの再利用はできません。

22.2　キャッシュファイルの状態確認

adbls -d cfmコマンドを実行すると，各キャッシュグループのキャッシュファイルの総容量などを確認できます。

サーバ定義のadbcachegrpオペランドでキャッシュグループを定義している場合

［説明］

CACHE_GRP_NAME

キャッシュグループ名が表示されます。キャッシュファイルに関する情報がキャッシュグループごとに表示されます。

##ADBCACHEGRP_ADBSYSは，システムディレクトリ用のキャッシュグループです。クラウドストレージ機能のシステムディレクトリ対応オプションを有効にしている場合に限り表示されます。

##ADBCACHEGRP_OTHERは，既定のキャッシュグループです。

IDXGRP01，TBLGRP01は，DBエリア用のキャッシュグループです。

TOTAL_LIMIT(MB)

キャッシュグループのキャッシュファイルの総容量の上限値（サーバ定義のadbcachegrpオペランドの-sオプションの指定値）が，メガバイト単位で表示されます。

INTERNAL_TOTAL_LIMIT(MB)

adbcachegrpオペランドの-sオプションの指定値を基にして，HADBサーバが決定したキャッシュグループのキャッシュファイルの総容量の上限値が，メガバイト単位で表示されます。

TOTAL_SIZE(MB)

キャッシュグループの現在のキャッシュファイルの総容量が，メガバイト単位で表示されます。

サーバ定義のadbcachegrpオペランドでキャッシュグループを定義していない場合

［説明］

CACHE_GRP_NAME

キャッシュグループ名が表示されます。adbcachegrpオペランドを指定しなくても，HADBの仕様として既定のキャッシュグループが1つだけ定義されます。

##ADBCACHEGRP_ADBSYSは，システムディレクトリ用のキャッシュグループです。クラウドストレージ機能のシステムディレクトリ対応オプションを有効にしている場合に限り表示されます。

##ADBCACHEGRP_OTHERは，既定のキャッシュグループです。

TOTAL_LIMIT(MB)

キャッシュファイルの総容量の上限値（サーバ定義のadb_sys_cld_cache_total_sizeオペランドの指定値）が，メガバイト単位で表示されます。

INTERNAL_TOTAL_LIMIT(MB)

adb_sys_cld_cache_total_sizeオペランドの指定値を基にして，HADBサーバが決定したキャッシュファイルの総容量の上限値が，メガバイト単位で表示されます。

TOTAL_SIZE(MB)

現在のキャッシュファイルの総容量が，メガバイト単位で表示されます。

ここでは，主な出力項目だけを説明しています。そのほかの出力項目の説明については，マニュアルHADB　コマンドリファレンスのadbls -d cfm（キャッシュファイルの情報表示）を参照してください。

メモ

キャッシュファイルの作成時にストレージの容量不足を検知した場合，警告メッセージKFAA51285-Wが出力され，HADBサーバが決定したキャッシュファイルの総容量の上限値（INTERNAL_TOTAL_LIMIT(MB)）を一時的に利用可能な容量まで引き下げます。一度引き下げられた上限値は，HADBサーバの稼働中には元に戻せません。元に戻す場合は，HADBサーバを再起動する必要があります。

22.3　DBエリアの使用量の確認

S3オブジェクトまたはBLOBにデータを格納している次のDBエリアの使用量を確認する手順を説明します。

データ用DBエリア

マスタディレクトリ用DBエリア（DBエリア名：ADBMST）

ディクショナリ用DBエリア（DBエリア名：ADBDIC）

システム表用DBエリア（DBエリア名：ADBSTBL）

手順（AWS環境の場合）

使用量を確認するDBエリアのDBエリアIDを確認する

SELECT "MASTER"."SQL_DBAREAS"."DBAREA_ID"
    FROM "MASTER"."SQL_DBAREAS"
      WHERE "MASTER"."SQL_DBAREAS"."DBAREA_NAME" = ?

上記のSELECT文でディクショナリ表を検索して，使用量を確認するDBエリアのDBエリアIDを確認してください。

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。使用量を確認するDBエリア名を入力してください。

DBエリアのデータを格納している全S3オブジェクトの合計サイズを求める

AWSのマネージメントコンソールを使用して，サーバ定義のadb_sys_cld_aws_bucketオペランドに指定したS3バケットの情報を表示してください。

次に，下記のプレフィックスでS3オブジェクトを検索し，表示されたプレフィックス下の全S3オブジェクトの合計サイズを求めてください。全S3オブジェクトの合計サイズがDBエリアの使用量になります。

ADBSGMT/0011

上記は，手順1.で確認したDBエリアIDが11の場合のプレフィックスです。0011の部分が，DBエリアIDによって変わります。

手順（Azure環境の場合）

以降の操作を実施する前に，Azure Blob Storageへのアクセスに必要な認証情報を設定しておく必要があります。詳細については，「21.2.4　Azure環境でのHADBサーバの構築」の「(6)　Azure Blob Storageへのアクセスに必要な認証情報の設定」を参照してください。

使用量を確認するDBエリアのDBエリアIDを確認する

SELECT "MASTER"."SQL_DBAREAS"."DBAREA_ID"
    FROM "MASTER"."SQL_DBAREAS"
      WHERE "MASTER"."SQL_DBAREAS"."DBAREA_NAME" = ?

上記のSELECT文でディクショナリ表を検索して，使用量を確認するDBエリアのDBエリアIDを確認してください。

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。使用量を確認するDBエリア名を入力してください。

DBエリアのデータを格納している全BLOBの合計サイズを求める

HADB管理者（adbmanager）で次のAzure CLIのコマンドを実行してください。DBエリアのデータを格納している全BLOBの合計サイズ（バイト）が表示されます。

＜Azure CLIによるサービスプリンシパルを使用した認証，またはマネージドIDを使用した認証をしている場合＞

$ az storage blob list ¥
 --account-name adbstorageaccount ¥                                        ...a
 --container-name adbcontainer ¥                                           ...b
 --query "[?contains(name,'ADBSGMT/0011')].[properties.contentLength]" ¥   ...c
 --num-results "*" ¥
 --auth-mode login ¥
 --output tsv | awk '{s+=$1} END {print s}'

［説明］

下線部分には，サーバ定義のadb_sys_cld_az_storage_accountオペランドに指定したストレージアカウント名を入力してください。

下線部部分には，サーバ定義のadb_sys_cld_az_containerオペランドに指定したコンテナー名を入力してください。

下線部部分には，手順1.で確認したDBエリアIDを，4文字になるように先頭から0を付与して入力してください。

上記は，手順1.で確認したDBエリアIDが11の場合です。

＜環境変数によるサービスプリンシパルを使用した認証をしている場合＞

$ az storage blob list ¥
 --account-name adbstorageaccount ¥                                        ...a
 --container-name adbcontainer ¥                                           ...b
 --query "[?contains(name,'ADBSGMT/0011')].[properties.contentLength]" ¥   ...c
 --num-results "*" ¥
 --account-key XXXXXXXXXXXX ¥                                              ...d
 --output tsv | awk '{s+=$1} END {print s}'

［説明］

下線部分には，サーバ定義のadb_sys_cld_az_storage_accountオペランドに指定したストレージアカウント名を入力してください。

下線部部分には，サーバ定義のadb_sys_cld_az_containerオペランドに指定したコンテナー名を入力してください。

下線部部分には，手順1.で確認したDBエリアIDを，4文字になるように先頭から0を付与して入力してください。

上記は，手順1.で確認したDBエリアIDが11の場合です。

下線部分には，サーバ定義のadb_sys_cld_az_storage_accountオペランドに指定したストレージアカウントのアクセスキーを入力してください。アクセスキーの詳細については，Azureのドキュメントを参照してください。

重要

adbdbstatusコマンドのDBエリアのサマリ情報に，DBエリアの使用中セグメント数（Used_segments）が出力されます。この数値を基にDBエリアの使用量を計算すると，全S3オブジェクトまたは全BLOBの合計サイズより大きな数値となることがあります。そのため，クラウドストレージ機能を使用している場合は，上記の手順でDBエリアの使用量を求めることを推奨します。

22.4　トラブルシュート

ここでは，クラウドストレージ機能を使用している際の固有のトラブルシュートについて説明します。ここで説明している以外のトラブルシュートについては，「16.　トラブルシュート」を参照してください。

22.4.1　S3オブジェクトに関するトラブル

S3オブジェクトに格納されているデータが破損した場合

S3オブジェクトに格納されているデータが破損した場合や，誤ってS3オブジェクトを削除してしまった場合は，バックアップからデータベースを回復してください。回復方法については，「22.1.1　バックアップの取得方法とデータベースの回復方法（AWS環境の場合）」の「(2)　データベースの回復方法（AWS環境の場合）」を参照してください。

不要なS3オブジェクトが残ってしまった場合

TRUNCATE TABLE文などの実行に伴い，S3オブジェクトの削除処理中にHADBサーバが異常終了すると，削除対象のS3オブジェクトが削除されないでS3バケット内に残ったままとなることがあります。また，セグメントの確保など，S3オブジェクトを作成するSQL文やコマンドが異常終了した場合，そのSQL文やコマンドが作成したS3オブジェクトがS3バケット内に残ったままとなることがあります。残ったままとなったS3オブジェクトは，HADBサーバが再利用するため，ユーザが削除操作をする必要はありません。

22.4.2　BLOBに関するトラブル

BLOBに格納されているデータが破損した場合

BLOBに格納されているデータが破損した場合や，誤ってBLOBを削除してしまった場合は，バックアップからデータベースを回復してください。回復方法については，「22.1.2　バックアップの取得方法とデータベースの回復方法（Azure環境の場合）」の「(2)　データベースの回復方法（Azure環境の場合）」を参照してください。

不要なBLOBが残ってしまった場合

TRUNCATE TABLE文などの実行に伴い，BLOBの削除処理中にHADBサーバが異常終了すると，削除対象のBLOBが削除されないでコンテナー内に残ったままとなることがあります。また，セグメントの確保など，BLOBを作成するSQL文やコマンドが異常終了した場合，そのSQL文やコマンドが作成したBLOBがコンテナー内に残ったままとなることがあります。残ったままとなったBLOBは，HADBサーバが再利用するため，ユーザが削除操作をする必要はありません。

22.4.3　データ用DBエリアの容量不足に関するトラブル

データ用DBエリアの空き容量が少なくなったときは，adbmodareaコマンドでデータ用DBエリアを拡張してください。データ用DBエリアの容量が1ペタバイト増加します。

ただし，データ用DBエリアを拡張した場合，HADBサーバの開始，adbdbstatusコマンドの実行，およびチャンクの更新または削除などの各種の処理時間が長くなるおそれがあります。そのため，データ用DBエリアの拡張は，データ用DBエリアの容量不足の発生が確実な場合に限り実行するようにしてください。

付録

付録A　HADBサーバのディレクトリの構成

ここでは，HADBサーバのサーバディレクトリ（インストール時），サーバディレクトリ（運用時），およびDBディレクトリの構成について説明します。

付録A.1　サーバディレクトリ（インストール時）の構成

HADBサーバをインストールしたときのサーバディレクトリの構成を次の表に示します。

表に示すディレクトリおよびファイルが作成されるタイミングは，HADBサーバのインストール時です。また，表に示すディレクトリおよびファイルが削除されるタイミングは，HADBサーバのアンインストール時です。

表A‒1　サーバディレクトリ（インストール時）の構成

項番

ディレクトリ名またはファイル名

説明

1

$INSTDIR/bin

各種コマンドを格納するディレクトリ

2

$INSTDIR/bin/adbarchivechunk

アーカイブチャンクコマンド

3

$INSTDIR/bin/adbaudittrail

監査証跡機能の管理コマンド

4

$INSTDIR/bin/adbcancel

キャンセルコマンド

5

$INSTDIR/bin/adbchgchunkcomment

チャンクのコメントの設定・変更・削除コマンド

6

$INSTDIR/bin/adbchgchunkstatus

チャンクの状態変更コマンド

7

$INSTDIR/bin/adbchgnodetype

HADBサーバのノード種別変更コマンド

8

$INSTDIR/bin/adbchgsqltrc

SQLトレース情報の出力開始・停止コマンド

9

$INSTDIR/bin/adbchgsrvmode

HADBサーバの稼働モード変更コマンド

10

$INSTDIR/bin/adbclientdefmang

クライアント定義の集中管理コマンド

11

$INSTDIR/bin/adbcolumnize

更新行のカラム化機能の管理コマンド

12

$INSTDIR/bin/adbconvertaudittrailfile※2

監査証跡ファイルの変換コマンド

13

$INSTDIR/bin/adbdbstatus

データベース状態解析コマンド

14

$INSTDIR/bin/adbexport

データエクスポートコマンド

15

$INSTDIR/bin/adbgetcst

コスト情報収集コマンド

16

$INSTDIR/bin/adbidxrebuild

インデクス再作成コマンド

17

$INSTDIR/bin/adbimport

データインポートコマンド

18

$INSTDIR/bin/adbinfoget

トラブルシュート情報収集コマンド

19

$INSTDIR/bin/adbinfosweep

トラブルシュート情報削除コマンド

20

$INSTDIR/bin/adbinit

データベース初期設定コマンド

21

$INSTDIR/bin/adbls

HADBサーバの状態表示コマンド

22

$INSTDIR/bin/adbmergechunk

マージチャンクコマンド

23

$INSTDIR/bin/adbmkdmk

HADB暗号鍵の作成コマンド

24

$INSTDIR/bin/adbmodarea

DBエリア追加・変更コマンド

25

$INSTDIR/bin/adbmodbuff

バッファの変更コマンド

26

$INSTDIR/bin/adbmonitor

サーバ監視コマンド

27

$INSTDIR/bin/adbreorgsystemdata

ディクショナリ表およびシステム表の再編成コマンド

28

$INSTDIR/bin/adbshmdump

共有メモリダンプコマンド

29

$INSTDIR/bin/adbsrvd

サーバデーモン

30

$INSTDIR/bin/adbstart

HADBサーバの起動コマンド

31

$INSTDIR/bin/adbstat

統計解析コマンド

32

$INSTDIR/bin/adbstop

HADBサーバの停止コマンド

33

$INSTDIR/bin/adbsyndict

同義語辞書管理コマンド

34

$INSTDIR/bin/adbsystoru※2

ITRU用トラブルシュート情報の取得コマンド

35

$INSTDIR/bin/adbtdmpget

システムで使用

36

$INSTDIR/bin/adbtdmpview

37

$INSTDIR/bin/adbterrno

38

$INSTDIR/bin/adbtgetdef

39

$INSTDIR/bin/adbtgetsqltrc

40

$INSTDIR/bin/adbthdlinfo

41

$INSTDIR/bin/adbtmsglog

42

$INSTDIR/bin/adbtstat

43

$INSTDIR/bin/adbtsyslog

44

$INSTDIR/bin/adbtmk2

45

$INSTDIR/bin/adbunarchivechunk

アンアーカイブチャンクコマンド

46

$INSTDIR/bin/adbupddmk

HADB暗号鍵の更新コマンド

47

$INSTDIR/bin/linaphx64

システムで使用

48

$INSTDIR/bin/patrol_sby_exe

HAモニタ用セカンダリ監視コマンド（開始）

49

$INSTDIR/bin/patrol_sby_term

HAモニタ用セカンダリ監視コマンド（停止）

50

$INSTDIR/bin/stop_sby

HAモニタ用セカンダリ停止コマンド

51

$INSTDIR/client

HADBクライアントで使用するコマンドおよびライブラリを格納するディレクトリ

52

$INSTDIR/client/bin

HADBクライアントで使用する各種コマンドを格納するディレクトリ

53

$INSTDIR/client/bin/adbsql

SQL実行コマンド

54

$INSTDIR/client/lib

HADBクライアントで使用する各種ライブラリを格納するディレクトリ

55

$INSTDIR/client/lib/libadbclt.so

クライアントライブラリ

56

$INSTDIR/client/lib/libadbodbc.so

ODBCドライバ

57

$INSTDIR/client/lib/adbjdbc8.jar

JDBCドライバ（JRE8版）

58

$INSTDIR/conf

定義ファイルを格納するディレクトリ

59

$INSTDIR/include

ユーザ提供ヘッダファイルを格納するディレクトリ

60

$INSTDIR/include/adbcli.h

ユーザ提供ヘッダファイル

61

$INSTDIR/include/adbtypes.h

62

$INSTDIR/include/adbcnv.h

63

$INSTDIR/include/adbodb.h

64

$INSTDIR/lib

各種ライブラリを格納するディレクトリ

65

$INSTDIR/lib/libadb.so

データベースアクセス制御

66

$INSTDIR/lib/libadbarrow.so※1

Apache Arrow制御ライブラリ

67

$INSTDIR/lib/libadbiceberg.so※1

Apache Icebergライブラリ

68

$INSTDIR/lib/libadbrpcs.so

通信ライブラリ

69

$INSTDIR/lib/libadbsort.so

ソートライブラリ

70

$INSTDIR/lib/libarrow.so.2200※1

外部データアクセス用ライブラリ

71

$INSTDIR/lib/libarrow_acero.so.2200※1

72

$INSTDIR/lib/libarrow_compute.so.2200※1

73

$INSTDIR/lib/libarrow_dataset.so.2200※1

74

$INSTDIR/lib/libparquet.so.2200※1

Apache Parquet用ライブラリ

75

$INSTDIR/lib/libaws-c-mqtt.so.1.0.0※1

AWS SDKライブラリ

76

$INSTDIR/lib/libaws-c-event-stream.so.1.0.0※1

77

$INSTDIR/lib/libaws-c-s3.so.0unstable※1

78

$INSTDIR/lib/libaws-c-auth.so.1.0.0※1

79

$INSTDIR/lib/libaws-c-http.so.1.0.0※1

80

$INSTDIR/lib/libaws-c-io.so.1.0.0※1

81

$INSTDIR/lib/libaws-c-cal.so.1.0.0※1

82

$INSTDIR/lib/libaws-checksums.so.1.0.0※1

83

$INSTDIR/lib/libaws-c-compression.so.1.0.0※1

84

$INSTDIR/lib/libaws-c-sdkutils.so.1.0.0※1

85

$INSTDIR/lib/libaws-c-common.so.1※1

86

$INSTDIR/lib/libs2n.so.1※1

87

$INSTDIR/lib/libaws-crt-cpp.so※1

AWS SDK for C++ ライブラリ

88

$INSTDIR/lib/libaws-cpp-sdk-cognito-identity.so※1

89

$INSTDIR/lib/libaws-cpp-sdk-config.so※1

90

$INSTDIR/lib/libaws-cpp-sdk-core.so※1

91

$INSTDIR/lib/libaws-cpp-sdk-identity-management.so※1

92

$INSTDIR/lib/libaws-cpp-sdk-s3.so※1

93

$INSTDIR/lib/libaws-cpp-sdk-sts.so※1

94

$INSTDIR/lib/libaws-cpp-sdk-transfer.so※1

95

$INSTDIR/lib/libtapa.so

システムで使用

96

$INSTDIR/lib/adbmsg.cat

メッセージカタログファイル

97

$INSTDIR/lib/sysdef

定義解析情報ファイルを格納するディレクトリ

98

$INSTDIR/lib/sysdef/adb.def

定義解析情報ファイル

99

$INSTDIR/lib/sysdef/adbarchivechunk.def

100

$INSTDIR/lib/sysdef/adbchgchunkstatus_bulk.def

101

$INSTDIR/lib/sysdef/adbclientdefmang.def

102

$INSTDIR/lib/sysdef/adbclt.def

103

$INSTDIR/lib/sysdef/adbexport.def

104

$INSTDIR/lib/sysdef/adbgetcst.def

105

$INSTDIR/lib/sysdef/adbidxrebuild.def

106

$INSTDIR/lib/sysdef/adbimport.def

107

$INSTDIR/lib/sysdef/adbimport_clm.def

108

$INSTDIR/lib/sysdef/adbimport_clm_csv.def

109

$INSTDIR/lib/sysdef/adbinit.def

110

$INSTDIR/lib/sysdef/adbmergechunk.def

111

$INSTDIR/lib/sysdef/adbmodarea.def

112

$INSTDIR/lib/sysdef/adbmodbuff.def

113

$INSTDIR/lib/sysdef/adbreorgsystemdata.def

114

$INSTDIR/lib/sysdef/adbunarchivechunk.def

115

$INSTDIR/sample

サンプルAPおよび定義ファイルのひな形を格納するディレクトリ

116

$INSTDIR/sample/cli_sample1.c

サンプルAP（CLI関数用）

117

$INSTDIR/sample/create_sampledb.sh

SAMPLE表を作成するシェルスクリプト

118

$INSTDIR/sample/reorg_column_sample.sh

カラムストア表を再編成するシェルスクリプト

119

$INSTDIR/sample/SAMPLE.txt

SAMPLE表に格納するデータ

120

$INSTDIR/sample/SAMPLE_table.sql

SAMPLE表を定義する定義系SQLを記述したファイル

121

$INSTDIR/sample/Sample1.java

サンプルAP（JDBC用）

122

$INSTDIR/sample/odbc_sample1.c

サンプルAP（ODBC用）

123

$INSTDIR/sample/conf

定義ファイルのひな形を格納するディレクトリ

124

$INSTDIR/sample/conf/adbarchivechunk.opt

アーカイブチャンクオプションのひな形ファイル

125

$INSTDIR/sample/conf/adbclientdefmang.def

クライアント管理定義のひな形ファイル

126

$INSTDIR/sample/conf/adbexport.opt

エクスポートオプションのひな形ファイル

127

$INSTDIR/sample/conf/adbgetcst.opt

コスト情報収集オプションのひな形ファイル

128

$INSTDIR/sample/conf/adbidxrebuild.opt

インデクス再作成オプションのひな形ファイル

129

$INSTDIR/sample/conf/adbimport.opt

インポートオプションのひな形ファイル

130

$INSTDIR/sample/conf/adbinit.opt

初期設定オプションのひな形ファイル

131

$INSTDIR/sample/conf/adbmergechunk.opt

マージチャンクオプションのひな形ファイル

132

$INSTDIR/sample/conf/adbmodarea.opt

DBエリア追加・変更オプションのひな形ファイル

133

$INSTDIR/sample/conf/adbmodbuff.opt

バッファ変更オプションのひな形ファイル

134

$INSTDIR/sample/conf/adbunarchivechunk.opt

アンアーカイブチャンクオプションのひな形ファイル

135

$INSTDIR/sample/conf/client.def

クライアント定義のひな形ファイル

136

$INSTDIR/sample/conf/server.def

サーバ定義のひな形ファイル

137

$INSTDIR/sample/docker

DockerfileとHADBサーバ起動スクリプトを格納するディレクトリ

138

$INSTDIR/sample/docker/docker-entrypoint.sh

Dockerコンテナ用HADBサーバ起動スクリプト

139

$INSTDIR/sample/docker/Dockerfile_hadb-client

HADBクライアント利用コンテナのDockerfile

140

$INSTDIR/sample/docker/Dockerfile_hadb-init

データベース初期化コンテナのDockerfile

141

$INSTDIR/sample/docker/Dockerfile_hadb-server

HADBサーバ起動コンテナのDockerfile

142

$INSTDIR/sample/k8s

Kubernetes用のマニフェストファイルを格納するディレクトリ

143

$INSTDIR/sample/k8s/hadb-k8s-manifest.yaml

Kubernetes用のマニフェストファイル（yamlファイル）

144

$INSTDIR/sample/scripts

HAモニタ用コマンドのサンプルファイルを格納するディレクトリ

145

$INSTDIR/sample/scripts/multinode.env

HAモニタ用コマンドの環境変数定義ファイル（マルチノード機能）

146

$INSTDIR/sample/scripts/multinode_user.sh

HAモニタ用ユーザコマンドのサンプルシェルファイル（マルチノード機能）

147

$INSTDIR/sample/scripts/multinode_act.sh

HAモニタ用起動コマンドのサンプルシェルファイル（マルチノード機能）

148

$INSTDIR/sample/scripts/multinode_term.sh

HAモニタ用停止コマンドのサンプルシェルファイル（マルチノード機能）（系のリセット用）

149

$INSTDIR/sample/scripts/multinode_term_scsi.sh

HAモニタ用停止コマンドのサンプルシェルファイル（マルチノード機能）（共有ディスクのSCSIリザーブ用）

150

$INSTDIR/sample/scripts/multinode_patrol.sh

HAモニタ用監視コマンドのサンプルシェルファイル（マルチノード機能）

151

$INSTDIR/sample/scripts/multinode_patrol_ex.sh

HAモニタ用監視コマンドのサンプルシェルファイル（マルチノード機能）（クラウド環境用）

152

$INSTDIR/sample/scripts/multinode_sby_term.sh

HAモニタ用待機サーバ停止コマンドのサンプルシェルファイル（マルチノード機能）（クラウド環境用）

153

$INSTDIR/sample/scripts/coldstandby.env

HAモニタ用コマンドの環境変数定義ファイル（コールドスタンバイ構成）

154

$INSTDIR/sample/scripts/coldstandby_act.sh

HAモニタ用起動コマンドのサンプルシェルファイル（コールドスタンバイ構成）

155

$INSTDIR/sample/scripts/coldstandby_term.sh

HAモニタ用停止コマンドのサンプルシェルファイル（コールドスタンバイ構成）

156

$INSTDIR/sample/scripts/coldstandby_patrol.sh

HAモニタ用監視コマンドのサンプルシェルファイル（コールドスタンバイ構成）

157

$INSTDIR/sample/scripts/coldstandby_patrol_ex.sh

HAモニタ用監視コマンドのサンプルシェルファイル（コールドスタンバイ構成）（クラウド環境用）

158

$INSTDIR/sample/jp1audit※2

JP1/Audit用定義ファイルのサンプルファイルを格納するディレクトリ

159

$INSTDIR/sample/jp1audit/admjevlog_HADB.conf※2

JP1/Audit用動作定義ファイルのサンプルファイル

160

$INSTDIR/sample/jp1audit/HADB.conf※2

JP1/Audit用製品定義ファイルのサンプルファイル

161

$INSTDIR/sample/pam

PAM設定ファイルのサンプルファイルを格納するディレクトリ

162

$INSTDIR/sample/pam/hadb

PAM設定ファイルのサンプルファイル

163

$INSTDIR/spool

実行結果ログを格納するディレクトリ

164

$INSTDIR/adbinstsv.log

HADBサーバをインストールしたときの実行結果ログファイル

注※1

RHEL 9以降のHADBサーバの場合に限り作成されます。

注※2

RHEL 8のHADBサーバの場合に限り作成されます。

付録A.2　サーバディレクトリ（運用時）の構成

HADBサーバの運用で使用するサーバディレクトリの構成を次の表に示します。

表A‒2　サーバディレクトリ（運用時）の構成

項番

ディレクトリ名またはファイル名

説明

作成されるタイミング

削除されるタイミング

1

$ADBDIR/bin

各種コマンドを格納するディレクトリ

HADBサーバのインストール時

HADBサーバのアンインストール時

2

$ADBDIR/bin/adbarchivechunk

アーカイブチャンクコマンド

3

$ADBDIR/bin/adbaudittrail

監査証跡機能の管理コマンド

4

$ADBDIR/bin/adbcancel

キャンセルコマンド

5

$ADBDIR/bin/adbchgchunkcomment

チャンクのコメントの設定・変更・削除コマンド

6

$ADBDIR/bin/adbchgchunkstatus

チャンクの状態変更コマンド

7

$ADBDIR/bin/adbchgnodetype

HADBサーバのノード種別変更コマンド

8

$ADBDIR/bin/adbchgsqltrc

SQLトレース情報の出力開始・停止コマンド

9

$ADBDIR/bin/adbchgsrvmode

HADBサーバの稼働モード変更コマンド

10

$ADBDIR/bin/adbclientdefmang

クライアント定義の集中管理コマンド

11

$ADBDIR/bin/adbcolumnize

更新行のカラム化機能の管理コマンド

12

$ADBDIR/bin/adbconvertaudittrailfile※9

監査証跡ファイルの変換コマンド

13

$ADBDIR/bin/adbdbstatus

データベース状態解析コマンド

14

$ADBDIR/bin/adbexport

データエクスポートコマンド

15

$ADBDIR/bin/adbgetcst

コスト情報収集コマンド

16

$ADBDIR/bin/adbidxrebuild

インデクス再作成コマンド

17

$ADBDIR/bin/adbimport

データインポートコマンド

18

$ADBDIR/bin/adbinfoget

トラブルシュート情報収集コマンド

19

$ADBDIR/bin/adbinfosweep

トラブルシュート情報削除コマンド

20

$ADBDIR/bin/adbinit

データベース初期設定コマンド

21

$ADBDIR/bin/adbls

HADBサーバの状態表示コマンド

22

$ADBDIR/bin/adbmergechunk

マージチャンクコマンド

23

$ADBDIR/bin/adbmkdmk

HADB暗号鍵の作成コマンド

24

$ADBDIR/bin/adbmodarea

DBエリア追加・変更コマンド

25

$ADBDIR/bin/adbmodbuff

バッファの変更コマンド

26

$ADBDIR/bin/adbmonitor

サーバ監視コマンド

27

$ADBDIR/bin/adbreorgsystemdata

ディクショナリ表およびシステム表の再編成コマンド

28

$ADBDIR/bin/adbshmdump

共有メモリダンプコマンド

29

$ADBDIR/bin/adbsrvd

サーバデーモン

30

$ADBDIR/bin/adbstart

HADBサーバの起動コマンド

31

$ADBDIR/bin/adbstat

統計解析コマンド

32

$ADBDIR/bin/adbstop

HADBサーバの停止コマンド

33

$ADBDIR/bin/adbsyndict

同義語辞書管理コマンド

34

$ADBDIR/bin/adbsystoru※9

ITRU用トラブルシュート情報の取得コマンド

35

$ADBDIR/bin/adbtdmpget

システムで使用

36

$ADBDIR/bin/adbtdmpview

37

$ADBDIR/bin/adbterrno

38

$ADBDIR/bin/adbtgetdef

39

$ADBDIR/bin/adbtgetsqltrc

40

$ADBDIR/bin/adbthdlinfo

41

$ADBDIR/bin/adbtmsglog

42

$ADBDIR/bin/adbtstat

43

$ADBDIR/bin/adbtsyslog

44

$ADBDIR/bin/adbtmk2

45

$ADBDIR/bin/adbunarchivechunk

アンアーカイブチャンクコマンド

46

$ADBDIR/bin/adbupddmk

HADB暗号鍵の更新コマンド

47

$ADBDIR/bin/linaphx64

システムで使用

48

$ADBDIR/bin/patrol_sby_exe

HAモニタ用セカンダリ監視コマンド（開始）

49

$ADBDIR/bin/patrol_sby_term

HAモニタ用セカンダリ監視コマンド（停止）

50

$ADBDIR/bin/stop_sby

HAモニタ用セカンダリ停止コマンド

51

$ADBDIR/client

HADBクライアントで使用するコマンドおよびライブラリを格納するディレクトリ

52

$ADBDIR/client/bin

HADBクライアントで使用する各種コマンドを格納するディレクトリ

53

$ADBDIR/client/bin/adbsql

SQL実行コマンド

54

$ADBDIR/client/lib

HADBクライアントで使用する各種ライブラリを格納するディレクトリ

55

$ADBDIR/client/lib/libadbclt.so

クライアントライブラリ

56

$ADBDIR/client/lib/libadbodbc.so

ODBCドライバ

57

$ADBDIR/client/lib/adbjdbc8.jar

JDBCドライバ（JRE8版）

58

$ADBDIR/conf

定義ファイルを格納するディレクトリ

59

$ADBDIR/include

ユーザ提供ヘッダファイルを格納するディレクトリ

60

$ADBDIR/include/adbcli.h

ユーザ提供ヘッダファイル

61

$ADBDIR/include/adbtypes.h

62

$ADBDIR/include/adbcnv.h

63

$ADBDIR/include/adbodb.h

64

$ADBDIR/lib

各種ライブラリを格納するディレクトリ

65

$ADBDIR/lib/libadb.so

データベースアクセス制御

66

$ADBDIR/lib/libadbarrow.so※7

Apache Arrow制御ライブラリ

67

$ADBDIR/lib/libadbiceberg.so※7

Apache Icebergライブラリ

68

$ADBDIR/lib/libadbrpcs.so

通信ライブラリ

69

$ADBDIR/lib/libadbsort.so

ソートライブラリ

70

$ADBDIR/lib/libarrow.so.2200※7

外部データアクセス用ライブラリ

71

$ADBDIR/lib/libarrow_acero.so.2200※7

72

$ADBDIR/lib/libarrow_compute.so.2200※7

73

$ADBDIR/lib/libarrow_dataset.so.2200※7

74

$ADBDIR/lib/libaws-c-mqtt.so.1.0.0※7

AWS SDKライブラリ

75

$ADBDIR/lib/libaws-c-event-stream.so.1.0.0※7

76

$ADBDIR/lib/libaws-c-s3.so.0unstable※7

77

$ADBDIR/lib/libaws-c-auth.so.1.0.0※7

78

$ADBDIR/lib/libaws-c-http.so.1.0.0※7

79

$ADBDIR/lib/libaws-c-io.so.1.0.0※7

80

$ADBDIR/lib/libaws-c-cal.so.1.0.0※7

81

$ADBDIR/lib/libaws-checksums.so.1.0.0※7

82

$ADBDIR/lib/libaws-c-compression.so.1.0.0※7

83

$ADBDIR/lib/libaws-c-sdkutils.so.1.0.0※7

84

$ADBDIR/lib/libaws-c-common.so.1※7

85

$ADBDIR/lib/libs2n.so.1※7

86

$ADBDIR/lib/libaws-crt-cpp.so※7

AWS SDK for C++ ライブラリ

87

$ADBDIR/lib/libaws-cpp-sdk-cognito-identity.so※7

88

$ADBDIR/lib/libaws-cpp-sdk-config.so※7

89

$ADBDIR/lib/libaws-cpp-sdk-core.so※8

90

$ADBDIR/lib/libaws-cpp-sdk-identity-management.so※7

91

$ADBDIR/lib/libaws-cpp-sdk-s3.so※7

92

$ADBDIR/lib/libaws-cpp-sdk-s3-crt.so

AWS用のHADBオプション（クラウドストレージ機能）のインストール時

AWS用のHADBオプション（クラウドストレージ機能）のアンインストール後に手動で削除

93

$ADBDIR/lib/libaws-cpp-sdk-sts.so※7

HADBサーバのインストール時

HADBサーバのアンインストール時

94

$ADBDIR/lib/libaws-cpp-sdk-transfer.so※7

95

$ADBDIR/lib/libazure-core.so.1.17.0-beta.1※7

Azure SDK for C++ コアライブラリ

Azure用のHADBオプション（クラウドストレージ機能）のインストール時

Azure用のHADBオプション（クラウドストレージ機能）のアンインストール後に手動で削除

96

$ADBDIR/lib/libazure-identity.so.1.13.0-beta.2※7

Azure SDK for C++ 資格情報ライブラリ

97

$ADBDIR/lib/libazure-storage-blobs.so.12.14.0※7

Azure SDK for C++ BLOBストレージライブラリ

98

$ADBDIR/lib/libazure-storage-common.so.12.11.0-beta.1※7

Azure SDK for C++ ストレージ共通ライブラリ

99

$ADBDIR/lib/libparquet.so.2200※7

Apache Parquet用ライブラリ

HADBサーバのインストール時

HADBサーバのアンインストール時

100

$ADBDIR/lib/libtapa.so

システムで使用

101

$ADBDIR/lib/libadbcldstge-aws.so

Amazon S3用ライブラリ

AWS用のHADBオプション（クラウドストレージ機能）のインストール時

AWS用のHADBオプション（クラウドストレージ機能）のアンインストール時

102

$ADBDIR/lib/libadbcldstge-azure.so※7

Azure Blob Storage用ライブラリ

Azure用のHADBオプション（クラウドストレージ機能）のインストール時

Azure用のHADBオプション（クラウドストレージ機能）のアンインストール時

103

$ADBDIR/lib/adbmsg.cat

メッセージカタログファイル

HADBサーバのインストール時

HADBサーバのアンインストール時

104

$ADBDIR/lib/sysdef

定義解析情報ファイルを格納するディレクトリ

105

$ADBDIR/lib/sysdef/adb.def

定義解析情報ファイル

106

$ADBDIR/lib/sysdef/adbarchivechunk.def

107

$ADBDIR/lib/sysdef/adbchgchunkstatus_bulk.def

108

$ADBDIR/lib/sysdef/adbclientdefmang.def

109

$ADBDIR/lib/sysdef/adbclt.def

110

$ADBDIR/lib/sysdef/adbexport.def

111

$ADBDIR/lib/sysdef/adbgetcst.def

112

$ADBDIR/lib/sysdef/adbidxrebuild.def

113

$ADBDIR/lib/sysdef/adbimport.def

114

$ADBDIR/lib/sysdef/adbimport_clm.def

115

$ADBDIR/lib/sysdef/adbimport_clm_csv.def

116

$ADBDIR/lib/sysdef/adbinit.def

117

$ADBDIR/lib/sysdef/adbmergechunk.def

118

$ADBDIR/lib/sysdef/adbmodarea.def

119

$ADBDIR/lib/sysdef/adbmodbuff.def

120

$ADBDIR/lib/sysdef/adbreorgsystemdata.def

121

$ADBDIR/lib/sysdef/adbunarchivechunk.def

122

$ADBDIR/sample

サンプルAPおよび定義ファイルのひな形を格納するディレクトリ

123

$ADBDIR/sample/cli_sample1.c

サンプルAP（CLI関数用）

124

$ADBDIR/sample/create_sampledb.sh

SAMPLE表を作成するシェルスクリプト

125

$ADBDIR/sample/reorg_column_sample.sh

カラムストア表を再編成するシェルスクリプト

126

$ADBDIR/sample/SAMPLE.txt

SAMPLE表に格納するデータ

127

$ADBDIR/sample/SAMPLE_table.sql

SAMPLE表を定義する定義系SQLを記述したファイル

128

$ADBDIR/sample/Sample1.java

サンプルAP（JDBC用）

129

$ADBDIR/sample/odbc_sample1.c

サンプルAP（ODBC用）

130

$ADBDIR/sample/conf

定義ファイルのひな形を格納するディレクトリ

131

$ADBDIR/sample/conf/adbarchivechunk.opt

アーカイブチャンクオプションのひな形ファイル

132

$ADBDIR/sample/conf/adbclientdefmang.def

クライアント管理定義のひな形ファイル

133

$ADBDIR/sample/conf/adbexport.opt

エクスポートオプションのひな形ファイル

134

$ADBDIR/sample/conf/adbgetcst.opt

コスト情報収集オプションのひな形ファイル

135

$ADBDIR/sample/conf/adbidxrebuild.opt

インデクス再作成オプションのひな形ファイル

136

$ADBDIR/sample/conf/adbimport.opt

インポートオプションのひな形ファイル

137

$ADBDIR/sample/conf/adbinit.opt

初期設定オプションのひな形ファイル

138

$ADBDIR/sample/conf/adbmergechunk.opt

マージチャンクオプションのひな形ファイル

139

$ADBDIR/sample/conf/adbmodarea.opt

DBエリア追加・変更オプションのひな形ファイル

140

$ADBDIR/sample/conf/adbmodbuff.opt

バッファ変更オプションのひな形ファイル

141

$ADBDIR/sample/conf/adbunarchivechunk.opt

アンアーカイブチャンクオプションのひな形ファイル

142

$ADBDIR/sample/conf/client.def

クライアント定義のひな形ファイル

143

$ADBDIR/sample/conf/server.def

サーバ定義のひな形ファイル

144

$ADBDIR/sample/docker

DockerfileとHADBサーバ起動スクリプトを格納するディレクトリ

145

$ADBDIR/sample/docker/docker-entrypoint.sh

Dockerコンテナ用HADBサーバ起動スクリプト

146

$ADBDIR/sample/docker/Dockerfile_hadb-client

HADBクライアント利用コンテナのDockerfile

147

$ADBDIR/sample/docker/Dockerfile_hadb-init

データベース初期化コンテナのDockerfile

148

$ADBDIR/sample/docker/Dockerfile_hadb-server

HADBサーバ起動コンテナのDockerfile

149

$ADBDIR/sample/k8s

Kubernetes用のマニフェストファイルを格納するディレクトリ

150

$ADBDIR/sample/k8s/hadb-k8s-manifest.yaml

Kubernetes用のマニフェストファイル（yamlファイル）

151

$ADBDIR/sample/scripts

HAモニタ用コマンドのサンプルファイルを格納するディレクトリ

152

$ADBDIR/sample/scripts/multinode.env

HAモニタ用コマンドの環境変数定義ファイル（マルチノード機能）

153

$ADBDIR/sample/scripts/multinode_user.sh

HAモニタ用ユーザコマンドのサンプルシェルファイル（マルチノード機能）

154

$ADBDIR/sample/scripts/multinode_act.sh

HAモニタ用起動コマンドのサンプルシェルファイル（マルチノード機能）

155

$ADBDIR/sample/scripts/multinode_term.sh

HAモニタ用停止コマンドのサンプルシェルファイル（マルチノード機能）（系のリセット用）

156

$ADBDIR/sample/scripts/multinode_term_scsi.sh

HAモニタ用停止コマンドのサンプルシェルファイル（マルチノード機能）（共有ディスクのSCSIリザーブ用）

157

$ADBDIR/sample/scripts/multinode_patrol.sh

HAモニタ用監視コマンドのサンプルシェルファイル（マルチノード機能）

158

$ADBDIR/sample/scripts/multinode_patrol_ex.sh

HAモニタ用監視コマンドのサンプルシェルファイル（マルチノード機能）（クラウド環境用）

159

$ADBDIR/sample/scripts/multinode_sby_term.sh

HAモニタ用待機サーバ停止コマンドのサンプルシェルファイル（マルチノード機能）（クラウド環境用）

160

$ADBDIR/sample/scripts/coldstandby.env

HAモニタ用コマンドの環境変数定義ファイル（コールドスタンバイ構成）

161

$ADBDIR/sample/scripts/coldstandby_act.sh

HAモニタ用起動コマンドのサンプルシェルファイル（コールドスタンバイ構成）

162

$ADBDIR/sample/scripts/coldstandby_term.sh

HAモニタ用停止コマンドのサンプルシェルファイル（コールドスタンバイ構成）

163

$ADBDIR/sample/scripts/coldstandby_patrol.sh

HAモニタ用監視コマンドのサンプルシェルファイル（コールドスタンバイ構成）

164

$ADBDIR/sample/scripts/coldstandby_patrol_ex.sh

HAモニタ用監視コマンドのサンプルシェルファイル（コールドスタンバイ構成）（クラウド環境用）

165

$ADBDIR/sample/jp1audit※9

JP1/Audit用定義ファイルのサンプルファイルを格納するディレクトリ

166

$ADBDIR/sample/jp1audit/admjevlog_HADB.conf※9

JP1/Audit用動作定義ファイルのサンプルファイル

167

$ADBDIR/sample/jp1audit/HADB.conf※9

JP1/Audit用製品定義ファイルのサンプルファイル

168

$ADBDIR/sample/pam

PAM設定ファイルのサンプルファイルを格納するディレクトリ

169

$ADBDIR/sample/pam/hadb

PAM設定ファイルのサンプルファイル

170

$ADBDIR/spool

実行結果ログを格納するディレクトリ

171

$ADBDIR/spool/adbdumpYYYYMMDDhhmmss.サーバプロセスのプロセスID※1

HADBダンプファイル

HADBサーバの開始時

HADBサーバの正常終了時

adbinfosweepコマンド実行時

172

$ADBDIR/spool/adbdumperrorYYYYMMDDhhmmssSSSSSS_TTTTTTTTTTTTTTTTTTTT.サーバプロセスのプロセスID※1，※2

KFAA60007-Eメッセージが出力されるエラー発生時

adbinfosweepコマンド実行時

173

$ADBDIR/spool/adbmessageXX.log※3

サーバメッセージログファイル

HADBサーバの開始時

174

$ADBDIR/spool/adbsqltrcXX.log※4

SQLトレースファイル

HADBサーバのアンインストール時

175

$ADBDIR/spool/adbstatlogXX※3，※5

統計ログファイル

176

$ADBDIR/spool/adbsrvd.pid

HADBサーバプロセスのプロセスID格納ファイル

HADBサーバの正常終了時

adbinfosweepコマンド実行時

177

$ADBDIR/spool/.defrslt

サーバ定義格納ファイル

adbinfosweepコマンド実行時

178

$ADBDIR/spool/.adbmessage

メッセージログファイル番号管理ファイル

179

$ADBDIR/spool/.adbshmid

共有メモリID格納ファイル

180

$ADBDIR/spool/.adbsemid

セマフォ集合ID格納ファイル

181

$ADBDIR/spool/.adbsqltrc

SQLトレースファイルのファイル番号を管理するファイル

HADBサーバのアンインストール時

182

$ADBDIR/spool/.adbstatlog※5

統計ログファイルの管理ファイル

183

$ADBDIR/spool/adbcolumnize01

更新行のカラム化機能で使用するファイル

184

$ADBDIR/spool/.adbcolumnize

185

$ADBDIR/spool/adboptlogXX※6

アクセスパス探索情報ログファイル

186

$ADBDIR/spool/.adboptlog

アクセスパス探索情報ログの管理ファイル

187

$ADBDIR/spool/.hadb_map

システムで使用

188

$ADBDIR/spool/.hadb_ulimit

189

$ADBDIR/adbinstsv.log

HADBサーバをインストールしたときの実行結果ログファイル

HADBサーバのインストール時

190

$ADBDIR/adboptinst_s3option.log

AWS用のHADBオプション（クラウドストレージ機能）をインストールしたときの実行結果ログファイル

AWS用のHADBオプション（クラウドストレージ機能）のインストール時

AWS用のHADBオプション（クラウドストレージ機能）のアンインストール後に手動で削除

191

$ADBDIR/adboptinst_azoption.log※7

Azure用のHADBオプション（クラウドストレージ機能）をインストールしたときの実行結果ログファイル

Azure用のHADBオプション（クラウドストレージ機能）のインストール時

Azure用のHADBオプション（クラウドストレージ機能）のアンインストール後に手動で削除

注※1

ファイル名のYYYYMMDDhhmmssは，ファイルを生成した時刻になります。

注※2

ファイル名のSSSSSSは，HADBダンプファイルを生成した時刻のマイクロ秒になります。また，TTTTTTTTTTTTTTTTTTTTは，HADBサーバの内部矛盾エラーを検知したリアルスレッドのスレッドIDになります。

注※3

ファイル名のXXは通番であり，01〜04のどれかになります。

注※4

ファイル名のXXは通番であり，01〜08のどれかになります。

注※5

サーバ定義adb_sta_log_pathオペランドを指定している場合は，サーバ定義adb_sta_log_pathオペランドで指定したディレクトリ下に出力されます。

サーバ定義adb_sta_log_pathオペランドについては，「7.2.8　統計情報に関するオペランド（set形式）」のadb_sta_log_pathオペランドを参照してください。

注※6

ファイル名のXXは通番であり，01〜02のどちらかになります。

注※7

RHEL 9以降のHADBサーバの場合に限り作成されます。

注※8

適用OSがRHEL 9以降の場合は，HADBサーバのインストール時に格納されます。

注※9

RHEL 8のHADBサーバの場合に限り作成されます。

付録A.3　DBディレクトリの構成

adbinitコマンドを使用してデータベースの初期設定をしたときに作成されるDBディレクトリの構成を次の表に示します。

表A‒3　DBディレクトリの構成

項番

ディレクトリ名およびファイル名

説明

作成されるタイミング

削除されるタイミング

1

$DBDIR/ADBMST※3

マスタディレクトリ用DBエリアファイル

adbinitコマンド実行時

adbinitコマンド実行時（既存のファイルが存在する場合）

2

$DBDIR/ADBDIC※3

ディクショナリ用DBエリアファイル

3

$DBDIR/ADBSTBL※3

システム表用DBエリアファイル

4

$DBDIR/ADBWRK

作業表用DBエリアファイル

5

$DBDIR/DBAREA※1，※3

データ用DBエリアファイル

adbinitコマンド実行時

adbmodareaコマンド実行時（データ用DBエリアを追加する場合）

adbmodareaコマンド実行時（データ用DBエリアを拡張する場合）

adbinitコマンド実行時（既存のファイルが存在する場合）

adbmodareaコマンド実行時（データ用DBエリアを削除する場合）

6

$DBDIR/ADBSYS

システムディレクトリ

adbinitコマンド実行時

adbinitコマンド実行時（既存のディレクトリが存在する場合）

7

$DBDIR/ADBSYS/ADBSLG

システムログファイル用ディレクトリ

8

$DBDIR/ADBSYS/ADBSTS

ステータスファイル用ディレクトリ

9

$DBDIR/ADBSYS/ADBUTL

コマンドステータスファイル用ディレクトリ

10

$DBDIR/ADBWORK

作業用ディレクトリ

11

$DBDIR/SPOOL

障害情報（コアファイル）の出力先ディレクトリ※2

12

$DBDIR/SPOOL/core.サーバプロセスのプロセスID

障害情報（コアファイル）

HADBサーバの異常終了時

adbinfosweepコマンド実行時

注※1

adbinitコマンドまたはadbmodareaコマンドで，ユーザが指定した名称になります。

注※2

サーバ定義adb_core_pathオペランドを指定した場合は，$DBDIR/SPOOLディレクトリ下ではなく，adb_core_pathオペランドに指定したディレクトリ下に，障害情報（コアファイル）が出力されます。

なお，コアファイルの出力がsystemd-coredumpによって制御されている場合，コアファイルは/var/lib/systemd/coredumpディレクトリ下に出力されます。このとき，$DBDIR/SPOOLディレクトリは，トラブルシュートの情報収集時にコアファイル展開用の一時ディレクトリとして使用されます。サーバ定義adb_core_pathオペランドが指定されている場合は，adb_core_pathオペランドに指定したディレクトリがコアファイル展開用の一時ディレクトリになります。

注※3

クラウドストレージ機能を使用する場合は，$DBDIR下にDBエリアファイルは作成されません。オブジェクトストレージにAmazon S3またはAmazon S3互換オブジェクトストレージを使用する場合は，S3バケット内のS3オブジェクトにこれらのDBエリアのデータが格納されます。オブジェクトストレージにAzure Blob Storageを使用する場合は，コンテナー内のBLOBにこれらのDBエリアのデータが格納されます。

付録B　ディクショナリ表

ここでは，ディクショナリ表に格納されている情報，ディクショナリ表に定義されているB-treeインデクス，およびディクショナリ表の検索方法について説明します。

付録B.1　ディクショナリ表の概要

ディクショナリ表には，表およびインデクスの定義情報や，DBエリアの情報が格納されています。

ディクショナリ表は，実表とビュー表の2種類があります。

ディクショナリ表（実表）

このマニュアルでは，ディクショナリ表の実表を，ディクショナリ表（実表）と表記しています。ディクショナリ表（実表）のスキーマ名は，HADBになります。

ディクショナリ表（ビュー表）

このマニュアルでは，ディクショナリ表のビュー表を，ディクショナリ表と表記しています。ディクショナリ表のスキーマ名は，MASTERになります。

ディクショナリ表（実表）とディクショナリ表の関係を次の図に示します。

図B‒1　ディクショナリ表（実表）とディクショナリ表の関係

［説明］

表およびインデクスの定義情報や，DBエリアの情報は，ディクショナリ表（実表）に格納されます。ディクショナリ表（実表）から検索用に作成されるビュー表が，ディクショナリ表になります。

HADBユーザは，ディクショナリ表を検索できます。しかし，ディクショナリ表（実表）は検索できません。

HADBユーザがSELECT文でディクショナリ表を検索すると，表およびインデクスの定義情報や，DBエリアの情報を確認できます。ディクショナリ表を検索する場合は，スキーマ名にMASTERを指定してください。

(1)　ディクショナリ表の一覧

ディクショナリ表の一覧を次の表に示します。

表B‒1　ディクショナリ表の一覧

項番

ディクショナリ表の名称

格納されている情報

ディクショナリ表に対応するディクショナリ表（実表）の表ID

ビュー定義に含まれる副問合せの数※

外への参照の有無

1

SQL_TABLES

実表，ビュー表，外部表，ディクショナリ表（実表），システム表（実表），ディクショナリ表，およびシステム表の表定義情報が格納されています。1行に1表分の情報が格納されています。

0x00020001

1

○

2

SQL_COLUMNS

実表，ビュー表，外部表，ディクショナリ表（実表），システム表（実表），ディクショナリ表，およびシステム表の列の定義情報が格納されています。1行に1列分の情報が格納されています。

0x00020002

1

○

3

SQL_DIV_TABLE

実表，ディクショナリ表（実表），およびシステム表（実表）を格納しているDBエリアなどの情報が格納されています。1行に1表分の情報が格納されています。

0x00020004

1

○

4

SQL_INDEXES

実表のインデクスの定義情報が格納されています。また，ディクショナリ表（実表），およびシステム表（実表）のB-treeインデクスの定義情報も格納されています。1行に1インデクス分の情報が格納されています。

0x00020003

1

○

5

SQL_DIV_INDEX

実表のインデクスが格納されているDBエリアなどの情報が格納されています。また，ディクショナリ表（実表），およびシステム表（実表）のB-treeインデクスが格納されているDBエリアなどの情報も格納されています。1行に1インデクス分の情報が格納されています。

0x00020005

1

○

6

SQL_DBAREAS

DBエリアの定義情報が格納されています。1行に1DBエリア分の情報が格納されています。

0x00020006

0

×

7

SQL_SCHEMATA

スキーマに関する定義情報が格納されています。1行に1スキーマ分の情報が格納されています。

0x00020007

1

○

8

SQL_VIEWS

ビュー表の定義情報が格納されています。1行に1ビュー表分が格納されています。

0x00020008

1

○

9

SQL_VIEW_TABLE_USAGE

ビュー表の基表の情報が格納されています。1行に1基表分の情報が格納されています。

0x00020009

1

○

10

SQL_VIEW_OBJECT

システムが使用する情報が格納されています。

なお，ディクショナリ表は存在しません。ディクショナリ表（実表）だけ存在します。

0x0002000A

−

−

11

SQL_DEFINE_SOURCE

SQL文の情報が格納されています。1行に1SQLテキスト分の情報が格納されています。

0x0002000B

2

○

12

SQL_DEFINE_ENVIRONMENT

ビュー定義時およびビュー定義変更時の環境情報が格納されています。1行に1つのビュー表の環境情報が格納されています。

0x0002000C

2

○

13

SQL_USERS

HADBユーザの情報が格納されています。1行に1HADBユーザの情報が格納されています。

0x0002000D

1

×

14

SQL_TABLE_CONSTRAINTS

実表の制約に関する情報が格納されています。1行に1制約分の情報が格納されています。

0x0002000E

1

○

15

SQL_INDEX_COLINF

インデクス構成列に関する情報が格納されています。1行にインデクス構成列1列分の情報が格納されています。

0x0002000F

1

○

16

SQL_KEY_COLUMN_USAGE

主キーと外部キーの構成列に関する情報が格納されています。1行に主キーと外部キーの構成列1列分の情報が格納されています。

0x00020010

1

○

17

SQL_REFERENTIAL_CONSTRAINTS

参照制約に関する情報が格納されています。1行に1参照制約分の情報が格納されています。

0x00020011

1

○

18

SQL_TABLE_PRIVILEGES

表に対するアクセス権限に関する情報が格納されています。1行に，ある権限付与者が与えた1認可識別子の1表分の情報が格納されています。

0x00020012

1

○

19

SQL_AUDITS

CREATE AUDIT文で定義した監査対象定義に関する情報が格納されています。1行に，1監査対象定義の情報が格納されています。

0x00020013

0

×

20

SQL_FOREIGN_SERVERS

外部サーバの定義情報が格納されています。1行に，1外部サーバ分の定義情報が格納されています。

0x00020014

0

×

21

SQL_DATATYPE_DESCRIPTORS

外部表に定義したSTRUCT型の列のフィールド情報が格納されています。1行に，1フィールド分の情報が格納されています。

0x00020015

1

○

（凡例）

○：ディクショナリ表のビュー定義に，外への参照を行う副問合せを含みます。そのため，該当するディクショナリ表は，マルチ集合値式の副問合せに指定できません。

×：ディクショナリ表のビュー定義に，外への参照を行う副問合せを含みません。

−：該当しません。

注※

該当するディクショナリ表をSQL文の副問合せに指定した場合に，副問合せの入れ子の数として加算する必要がある数を示しています。

メモ

ディクショナリ表中には，ディクショナリ表の表定義情報およびインデクス定義情報も格納されています。

ディクショナリ表の各列のデータ型は，HADBのSQLの仕様に従っています。

なお，ディクショナリ表の各列のデータ型で，INTEGER型は8バイトの符号付き整数，SMALLINT型は4バイトの符号付き整数となります。整数データ型のデータ形式に関係なく常にこの仕様になります。

(2)　ディクショナリ表が作成されるタイミング

ディクショナリ表は，次に示すタイミングで自動的に作成されます。

データベースの初期設定が完了したあとに，初めてHADBサーバを開始したとき

HADBサーバをバージョンアップしたとき

(3)　HADBユーザが参照できるディクショナリ表の範囲

HADBユーザがディクショナリ表を参照する際，持っている権限によって参照できる情報が異なります。HADBユーザが参照できるディクショナリ表の情報を次の表に示します。

なお，ディクショナリ表を基表に指定したビュー表の場合も，持っている権限によって参照できる情報が異なります。そのため，同じビュー表を検索しても，ビュー表を定義したHADBユーザと，ビュー表に対するアクセス権限を付与されたHADBユーザでは，参照できる情報が異なることがあります。

表B‒2　HADBユーザが参照できるディクショナリ表の情報

ディクショナリ表の名称

参照対象の情報

ディクショナリ表を参照するHADBユーザが持っている権限

DBA権限

監査管理権限

アクセス権限

CONNECT権限

SQL_TABLES

自分

○

○

○

○

他ユーザ

○

○

△※1

×

MASTER

○

○

○

○

SQL_COLUMNS

自分

○

○

○

○

他ユーザ

○

×

△※1

×

MASTER

○

○

○

○

SQL_DIV_TABLE

自分

○

○

○

○

他ユーザ

○

×

△※1

×

MASTER

－

－

－

－

SQL_INDEXES

自分

○

○

○

○

他ユーザ

○

○

△※1

×

MASTER

○

○

○

○

SQL_DIV_INDEX

自分

○

○

○

○

他ユーザ

○

×

△※1

×

MASTER

－

－

－

－

SQL_DBAREAS

－

○

○

○

○

SQL_SCHEMATA

自分

○

○

○

○

他ユーザ

○

○

△※1

×

MASTER

○

○

○

○

SQL_VIEWS

自分

○

○

○

○

他ユーザ

○

×

△※1，※3

×

MASTER

○

○

○

○

SQL_VIEW_TABLE_USAGE

自分

○

○

○

○

他ユーザ

○

○

△※1，※3

×

MASTER

○

○

○

○

SQL_DEFINE_SOURCE

自分

○

○

○

○

他ユーザ

○

×

△※1，※3

×

MASTER

－

－

－

－

SQL_DEFINE_ENVIRONMENT

自分

○

○

○

○

他ユーザ

○

×

△※1，※3

×

MASTER

○

○

○

○

SQL_USERS

自分

○

○

－

○

他ユーザ

○

○

－

×

MASTER

－

－

－

－

SQL_TABLE_CONSTRAINTS

自分

○

○

○

○

他ユーザ

○

×

△※1

×

MASTER

－

－

－

－

SQL_INDEX_COLINF

自分

○

○

○

○

他ユーザ

○

×

△※1

×

MASTER

－

－

－

－

SQL_KEY_COLUMN_USAGE

自分

○

○

○

○

他ユーザ

○

×

△※1

×

MASTER

－

－

－

－

SQL_REFERENTIAL_CONSTRAINTS

自分

○

○

○

○

他ユーザ

○

×

△※1

×

MASTER

－

－

－

－

SQL_TABLE_PRIVILEGES

自分

△※2

△※2

△※2

△※2

他ユーザ

△※2

×

△※1，※2

×

MASTER

－

－

－

－

SQL_AUDITS

自分

×

○

×

×

他ユーザ

×

○

×

×

MASTER

×

○

×

×

SQL_FOREIGN_SERVERS

自分

○

○

○

○

他ユーザ

○

○

○

○

MASTER

○

○

○

○

SQL_DATATYPE_DESCRIPTORS

自分

○

○

○

○

他ユーザ

○

×

△※1

×

MASTER

○

○

○

○

（凡例）

自分：自分が所有するスキーマおよびスキーマオブジェクトに関する情報（SQL_USERSの場合は自分のユーザ情報）

他ユーザ：ほかのHADBユーザが所有するスキーマおよびスキーマオブジェクトに関する情報（SQL_USERSの場合はほかのHADBユーザのユーザ情報）

MASTER：ディクショナリ表およびシステム表に関する情報

○：参照できます。

△：条件付きで参照できます。

×：参照できません。

－：該当しません。

注※1

アクセス権限を持っているスキーマオブジェクトに関する情報と，そのスキーマに関する情報については参照できます。

注※2

対象のスキーマオブジェクトがビュー表で，かつそのビュー表が無効化されている場合，無効化されているビュー表に対するアクセス権限についての情報は，SQL_TABLE_PRIVILEGESから検索することはできません。

注※3

対象のスキーマオブジェクトがビュー表で，かつそのビュー表が無効化されている場合，無効化されているビュー表に関する定義情報を参照することはできません。

付録B.2　SQL_TABLESの内容

SQL_TABLESには，実表，ビュー表，外部表，ディクショナリ表（実表），システム表（実表），ディクショナリ表，およびシステム表の表定義情報が格納されています。1行に1表分の情報が格納されています。

SQL_TABLESの内容を次の表に示します。

表B‒3　SQL_TABLESの内容

項番

列名

データ型

格納されている情報

1

TABLE_SCHEMA

VARCHAR(100)

スキーマ名

2

TABLE_NAME

VARCHAR(100)

表識別子

3

TABLE_TYPE

CHAR(1)

表種別

'R'：実表

'V'：ビュー表

'F'：外部表

4

TABLE_ID

SMALLINT

表ID

0x00020001〜：ディクショナリ表（実表）

0x000200C9〜：システム表（実表）

0x00020191〜：実表または外部表

0x00040001〜：ディクショナリ表およびシステム表

0x00040401〜：ビュー表

5

N_COLS

SMALLINT

表の構成列数

外部表の場合，パーティションキー列も表の構成列数に含まれます。

6

N_INDEX

SMALLINT

表に定義されているインデクス数（全インデクスの合計）

7

CREATE_TIME

TIMESTAMP

表定義時のタイムスタンプ

8

N_NOTNULL

SMALLINT

非ナル値制約が定義されている列数

9

FREE_AREA

SMALLINT

表のページ内の未使用領域の比率

10

FIX_TABLE

CHAR(1)

FIX表かどうか

'F'：FIX表

'N'：FIX表ではない表

11

ROW_LENGTH

SMALLINT

FIX表の行長

FIX表ではない表，ディクショナリ表（実表），またはシステム表（実表）の場合は，ナル値が格納されます。

12

IS_BRANCH_ALL

CHAR(1)

表オプションBRANCH ALLの指定

'Y'：BRANCH ALLの指定ありの表

'N'：BRANCH ALLの指定なしの表

13

N_RANGE_INDEX

SMALLINT

表に定義されているレンジインデクスの数

14

IS_CHUNK

CHAR(1)

チャンク指定のCHUNKの指定

'Y'：指定あり（マルチチャンク表）

'N'：指定なし（シングルチャンク表）

15

N_CHUNK_RESERVED

SMALLINT

作成されるチャンク数の最大値

CHUNKの指定値が格納されます。

シングルチャンク表，ビュー表，および外部表の場合は，ナル値が格納されます。

16

N_DEFAULT_COLUMN

SMALLINT

DEFAULT句を指定した列数

実表の定義時に，DEFAULT句を指定した列の数が格納されます。

なお，ビュー表，外部表，ディクショナリ表（実表），システム表（実表），およびDEFAULT句の指定がない実表の場合は，ナル値が格納されます。

17

N_PRIMARY_KEY_COLUMN

SMALLINT

主キーを構成する列数

実表の定義時に，定義した主キーを構成する列の数が格納されます。

なお，ビュー表，外部表，ディクショナリ表（実表），システム表（実表），および主キーが定義されていない実表の場合は，ナル値が格納されます。

18

N_FOREIGN_KEY

SMALLINT

外部キーの数

実表に定義した外部キーの数が格納されます。

なお，次に示す表の場合は，ナル値が格納されます。

ビュー表

外部表

ディクショナリ表（実表）

システム表（実表）

外部キーが定義されていない実表

19

N_REFERENCING_KEY

SMALLINT

主キーを参照する外部キーの数

この実表に定義された主キーを参照する外部キーの数が格納されます。

なお，次に示す表の場合は，ナル値が格納されます。

ビュー表

外部表

ディクショナリ表（実表）

システム表（実表）

主キーを参照する外部キーが1つもない実表

主キーが定義されていない実表

20

N_FOREIGN_KEY_COLUMN

SMALLINT

外部キーを構成する列数

実表に定義した外部キーを構成する列数を合計した数が格納されます。

なお，次に示す表の場合は，ナル値が格納されます。

ビュー表

外部表

ディクショナリ表（実表）

システム表（実表）

外部キーが定義されていない実表

21

N_TEXT_INDEX

SMALLINT

表に定義されているテキストインデクスの数

次に示す表の場合は，ナル値が格納されます。

ビュー表

外部表

ディクショナリ表（実表）

システム表（実表）

テキストインデクスが定義されていない表

22

IS_ARCHIVABLE

CHAR(1)

チャンクアーカイブ指定の有無

'Y'

チャンクアーカイブ指定が指定されている（アーカイブマルチチャンク表である）

ナル値

チャンクアーカイブ指定が指定されていない（アーカイブマルチチャンク表以外の実表である）

なお，次に示す表の場合は，ナル値が格納されます。

ビュー表

外部表

ディクショナリ表（実表）

システム表（実表）

23

ARCHIVE_DIRECTORY_PATH

VARCHAR(400)

アーカイブディレクトリの絶対パス

次に示す表の場合は，ナル値が格納されます。

ビュー表

外部表

ディクショナリ表（実表）

システム表（実表）

アーカイブマルチチャンク表以外の実表

24

RECREATE_TIME

TIMESTAMP

ALTER VIEW文の実行日時

ビュー表に対して，ALTER VIEW文を実行した最新のタイムスタンプが格納されます。

なお，次に示す表の場合は，ナル値が格納されます。

実表

ALTER VIEW文を実行していないビュー表

外部表

25

STORAGE_FORMAT

VARCHAR(32)

表データの格納形式

'COLUMN'

カラムストア形式

'ROW'

ローストア形式

なお，ビュー表または外部表の場合は，ナル値が格納されます。

26

N_ARRAY_COLUMN

SMALLINT

表に定義されている配列型の列の数

配列型の列が定義されていない表の場合は，ナル値が格納されます。

27

SERVER_NAME

VARCHAR(100)

外部表が使用している外部サーバ名

次の場合は，ナル値が格納されます。

外部表以外の表の場合

外部サーバ名を省略して定義した外部表の場合

28

FTBL_FORMAT

VARCHAR(16)

外部データのデータ形式指定の指定値

'CSV'：CSV形式

'JSON'：JSON形式

'PARQUET'：PARQUET形式

'ICEBERG'：Icebergテーブル形式

外部表以外の表の場合は，ナル値が格納されます。

29

FTBL_PATH

VARCHAR(1024)

外部データのディレクトリパス文字列

外部表以外の表の場合は，ナル値が格納されます。

30

FTBL_PATH_TEMPLATE

VARCHAR(1024)

テンプレートディレクトリパス文字列

次のどちらかの場合は，ナル値が格納されます。

外部表以外の表の場合

テンプレートディレクトリパス文字列を指定していない外部表の場合

31

N_PARTITION_COLUMN

SMALLINT

外部表に定義されているパーティションキー列の数

外部表以外の表の場合

パーティションキー列を指定していない外部表の場合

32

N_STRUCT_COLUMN

SMALLINT

表に定義されているSTRUCT型の列の数

STRUCT型の列が定義されていない表の場合は，ナル値が格納されます。

33

CATALOG_TYPE

VARCHAR(16)

カタログ種別指定の指定値

'REST'：REST Catalog

'GLUE'：Glue Catalog

次の場合は，ナル値が格納されます。

外部表以外の表の場合

外部データのデータ形式指定にICEBERG以外を指定して定義した外部表の場合

34

CATALOG_NAMESPACE

VARCHAR(100)

カタログ名前空間の指定値

次の場合は，ナル値が格納されます。

外部表以外の表の場合

外部データのデータ形式指定にICEBERG以外を指定して定義した外部表の場合

35

CATALOG_URI

VARCHAR(100)

カタログエンドポイント文字列の指定値

次の場合は，ナル値が格納されます。

外部表以外の表の場合

外部データのデータ形式指定にICEBERG以外を指定して定義した外部表の場合

36

CATALOG_REGION

VARCHAR(100)

カタログリージョン名の指定値

次の場合は，ナル値が格納されます。

外部表以外の表の場合

外部データのデータ形式指定にICEBERG以外を指定して定義した外部表の場合

37

CATALOG_ID

VARCHAR(100)

カタログIDの指定値

次の場合は，ナル値が格納されます。

外部表以外の表の場合

外部データのデータ形式指定にICEBERG以外を指定して定義した外部表の場合

38

WAREHOUSE_NAME

VARCHAR(100)

ウェアハウス名の指定値

次の場合は，ナル値が格納されます。

外部表以外の表の場合

外部データのデータ形式指定にICEBERG以外を指定して定義した外部表の場合

39

TOKEN_URI

VARCHAR(400)

トークンURIの指定値

次の場合は，ナル値が格納されます。

外部表以外の表の場合

外部データのデータ形式指定にICEBERG以外を指定して定義した外部表の場合

40

CLIENT_ID

VARCHAR(100)

クライアントIDの指定値

次の場合は，ナル値が格納されます。

外部表以外の表の場合

外部データのデータ形式指定にICEBERG以外を指定して定義した外部表の場合

41

ALLOWED_SCOPE

VARCHAR(255)

許可スコープ文字列の指定値

次の場合は，ナル値が格納されます。

外部表以外の表の場合

外部データのデータ形式指定にICEBERG以外を指定して定義した外部表の場合

付録B.3　SQL_COLUMNSの内容

SQL_COLUMNSには，実表，ビュー表，外部表，ディクショナリ表（実表），システム表（実表），ディクショナリ表，およびシステム表の列の定義情報が格納されています。1行に1列分の情報が格納されています。

SQL_COLUMNSの内容を次の表に示します。

表B‒4　SQL_COLUMNSの内容

項番

列名

データ型

格納されている情報

1

TABLE_SCHEMA

VARCHAR(100)

スキーマ名

2

TABLE_NAME

VARCHAR(100)

表識別子

3

COLUMN_NAME

VARCHAR(100)

列名

4

COLUMN_ID

SMALLINT

列ID

5

TABLE_ID

SMALLINT

表ID

0x00020001〜：ディクショナリ表（実表）

0x000200C9〜：システム表（実表）

0x00020191〜：実表または外部表

0x00040001〜：ディクショナリ表およびシステム表

0x00040401〜：ビュー表

6

DATA_TYPE_CODE

SMALLINT

列のデータ型

33（0x21）：BOOLEAN

113（0x71）：DATE

121（0x79）：TIME

125（0x7D）：TIMESTAMP WITHOUT TIME ZONE

127（0x7F）：TIMESTAMP WITH TIME ZONE

139（0x8B）：STRUCT

145（0x91）：VARBINARY

149（0x95）：BINARY

155（0x9B）：UUID

193（0xC1）：VARCHAR，STRING

197（0xC5）：CHAR

225（0xE1）：DOUBLE PRECISION，FLOAT

227（0xE3）：REAL

229（0xE5）：DECIMAL，NUMERIC

241（0xF1）：BIGINT※

245（0xF5）：INTEGER※

247（0xF7）：SMALLINT※

配列型の列の場合は，要素データ型が格納されます。

注※

整数データ型のデータ形式がレガシー形式の場合，列のデータ型は下記になります。

241（0xF1）：BIGINT，INTEGER

245（0xF5）：SMALLINT

7

DATA_LENGTH

SMALLINT

列の定義長

列の定義長は，列のデータ型（配列型の列の場合は，要素データ型）によって異なります。

列のデータ型が次に示すどれかの場合

列の定義長がバイト単位で格納されます。

INTEGER

BIGINT

SMALLINT

CHAR

VARCHAR

STRING

DATE

DOUBLE PRECISION

FLOAT

REAL

BINARY

VARBINARY

BOOLEAN

UUID

STRUCT

STRUCT型の列の定義長は，0になります。

列のデータ型がTIME(p)の場合

次に示す計算式で求めた値が格納されます。

3＋↑p÷2↑

p：0，3，6，9または12

列のデータ型がTIMESTAMP(p)の場合

次に示す計算式で求めた値が格納されます。

7＋↑p÷2↑

p：0，3，6，9または12

列のデータ型がDECIMAL，NUMERICの場合

最初の1バイト目に位取りが格納され，2バイト目に精度が格納されます。

CREATE VIEW文の問合せ式本体の選択式に，四則演算の除算結果のデータ型がDECIMAL型となる値式が含まれている場合，次に示す2つの値が不一致になることがあります。

ここに格納されている位取りの値

ビュー表の検索時に，ビュー表を等価変換した内部導出表の導出列の位取りの値

詳細については，マニュアルHADB　SQLリファレンスの除算結果のデータ型がDECIMAL型の場合の留意事項のビュー表を検索する場合を参照してください。

8

MAX_ELEMENT

SMALLINT

配列型の列の最大要素数

配列型の列の場合

2〜30,000の整数が格納されます。

配列型以外の列の場合

1が格納されます。

9

IS_NULLABLE

CHAR(1)

列に対する非ナル値制約定義の指定

'Y'

ナル値を許容する（非ナル値制約定義の指定なし）

'N'

ナル値を許容しない（非ナル値制約定義の指定あり）

FIX表の場合は，すべての列が'N'となります。

10

COLUMN_OFFSET

SMALLINT

列オフセット（表の先頭から何バイトの位置で列が始まっているかの情報）

FIX表ではない表（表オプションBRANCH ALLの指定なし）の場合は，ナル値が格納されます。

11

BRANCH

CHAR(1)

列定義のBRANCHの指定値

'Y'：YES

'N'：NO

'A'：AUTO

'O'：VARCHAR型の列，またはVARBINARY型の列でBRANCHの指定なし

VARCHAR型およびVARBINARY型以外の列の場合は，ナル値が格納されます。

また，カラムストア表の列の場合もナル値が格納されます。

12

DEFAULT_VALUE

VARCHAR(32000)

DEFAULT句に指定された既定値

実表の定義時にDEFAULT句に指定された既定値が格納されます。

定数

定数を指定した場合に格納されます。詳細については，「表B‒5　定数を指定した場合にDEFAULT_VALUEの列に格納される値」を参照してください。

CURRENT_DATE

CURRENT_DATEを指定した場合に格納されます。

CURRENT_TIME(p)

CURRENT_TIME(p)を指定した場合に格納されます。pは小数秒精度を示します。

p＝0の場合は，CURRENT_TIMEとなります。

p＝3，6，9および12の場合は，CURRENT_TIME(p)となります。

CURRENT_TIMESTAMP(p)

CURRENT_TIMESTAMP(p)を指定した場合に格納されます。pは小数秒精度を示します。

p＝0の場合は，CURRENT_TIMESTAMPとなります。

p＝3，6，9および12の場合は，CURRENT_TIMESTAMP(p)となります。

CURRENT_USER

CURRENT_USERを指定した場合に格納されます。

ナル値

NULLを指定した場合に格納されます。

なお，ビュー表の列，外部表の列，ディクショナリ表（実表）の列，システム表（実表）の列，およびDEFAULT句の指定がない実表の列の場合は，ナル値が格納されます。

13

IS_DEFAULT_COLUMN

CHAR(1)

DEFAULT句の指定有無

'Y'

実表の定義時にDEFAULT句を指定した列

ナル値

実表の定義時にDEFAULT句を指定していない列

ビュー表の列，外部表の列，ディクショナリ表（実表）の列，およびシステム表（実表）の列の場合も，ナル値が格納されます。

14

IS_PRIMARY_KEY_COLUMN

CHAR(1)

主キーを構成する列かどうか

'Y'

主キーを構成する列

ナル値

主キーを構成しない列

ビュー表の列，外部表の列，ディクショナリ表（実表）の列，およびシステム表（実表）の列の場合も，ナル値が格納されます。

15

PRIMARY_KEY_COLUMN_SEQUENCE_NUMBER

SMALLINT

主キーの構成順序

主キーを構成する列の順序が，1から昇順で格納されます。

なお，ビュー表の列，外部表の列，ディクショナリ表（実表）の列，システム表（実表）の列，および主キーを構成しない実表の列の場合は，ナル値が格納されます。

16

N_FOREIGN_KEY_COLUMN

SMALLINT

この列を使用している外部キーの数

この列を使用している外部キーの数が格納されます。

なお，次に示す列の場合は，ナル値が格納されます。

ビュー表の列

外部表の列

ディクショナリ表（実表）の列

システム表（実表）の列

外部キーを構成しない実表の列

17

IS_ARCHIVE_RANGE_COLUMN

CHAR(1)

アーカイブレンジ列かどうか

'Y'

アーカイブレンジ列である

ナル値

アーカイブレンジ列ではない

なお，次に示す列の場合は，ナル値が格納されます。

ビュー表の列

外部表の列

ディクショナリ表（実表）の列

システム表（実表）の列

18

COMPRESSION_TYPE

VARCHAR(32)

列定義のCOMPRESSION TYPEの指定値

カラムストア表の定義時に，圧縮方式指定に指定された内容が格納されます。

なお，次に示す列の場合は，ナル値が格納されます。

ビュー表の列

外部表の列

ディクショナリ表（実表）の列

システム表（実表）の列

ローストア表の列

19

IS_PARTITION_COLUMN

CHAR(1)

パーティションキー列かどうか

'Y'

パーティションキー列

ナル値

パーティションキー列ではない

外部表以外の表の列の場合は，ナル値が格納されます。

20

PARTITION_TYPE

VARCHAR(10)

属性プロパティのTYPEの指定値

次のどれかの値が格納されます。

'ENUM'

'INTEGER'

'DATE'

'TIME'

'TIMESTAMP'

パーティションキー列以外の列の場合は，ナル値が格納されます。

21

PARTITION_VALUE

VARCHAR(10100)

属性プロパティで指定した列挙文字列

次のどちらかの場合は，ナル値が格納されます。

パーティションキー列以外の列の場合

パーティションキー列に対する列挙文字列の指定がない場合

22

PARTITION_RANGE_MIN

VARCHAR(100)

属性プロパティで指定した最小値文字列

次のどちらかの場合は，ナル値が格納されます。

パーティションキー列以外の列の場合

パーティションキー列に対する最小値文字列の指定がない場合

23

PARTITION_RANGE_MAX

VARCHAR(100)

属性プロパティで指定した最大値文字列

次のどちらかの場合は，ナル値が格納されます。

パーティションキー列以外の列の場合

パーティションキー列に対する最大値文字列の指定がない場合

24

PARTITION_FORMAT

VARCHAR(64)

属性プロパティで指定した日時書式文字列

次のどちらかの場合は，ナル値が格納されます。

パーティションキー列以外の列の場合

パーティションキー列に対する日時書式文字列の指定がない場合

25

PARTITION_INTERVAL

SMALLINT

属性プロパティで指定した間隔値

次のどちらかの場合は，ナル値が格納されます。

パーティションキー列以外の列の場合

パーティションキー列に対する間隔値の指定がない場合（省略値が設定された場合を除く）

26

PARTITION_INTERVAL_UNIT

VARCHAR(10)

属性プロパティで指定した時間単位の値

次のどれかの値が格納されます。

'YEAR'

'MONTH'

'WEEK'

'DAY'

'HOUR'

'MINUTE'

'SECOND'

次のどちらかの場合は，ナル値が格納されます。

パーティションキー列以外の列の場合

パーティションキー列に対する時間単位の指定がない場合（省略値が設定された場合を除く）

27

PARTITION_DIGITS

SMALLINT

属性プロパティで指定した桁数

次のどちらかの場合は，ナル値が格納されます。

パーティションキー列以外の列の場合

パーティションキー列に対する桁数の指定がない場合（省略値が設定された場合を除く）

28

STRUCT_TYPE_ID

SMALLINT

STRUCT型のID

STRUCT型のIDは，同一表内で一意（ユニーク）です。

STRUCT型以外の列の場合は，ナル値が格納されます。

29

N_STRUCT_FIELD

SMALLINT

STRUCT型のフィールド数

STRUCT型以外の列の場合は，ナル値が格納されます。

DEFAULT句に定数を指定した場合に，DEFAULT_VALUEの列に格納される値を次の表に示します。

表B‒5　定数を指定した場合にDEFAULT_VALUEの列に格納される値

項番

既定値に仮定されるデータ型

DEFAULT_VALUEの列に格納される値

データ長（単位：バイト）

格納される値の文字形式の例

1

数データ

INTEGER

指定された既定値を文字形式に変換した長さ

12345

2

SMALLINT

12345

3

DECIMAL

12.345

4

DOUBLE PRECISION

-1234567890.1234567E-123

5

文字データ

CHAR

指定された既定値を文字形式に変換した長さ＋2

'ABCD'

6

VARCHAR

7

日時データ

DATE

16

DATE'YYYY-MM-DD'

8

TIME(p)

pが0のとき：

14

pが0以外のとき：

15＋p

TIME'hh:mm:ss.nn...n'※1，※2

9

TIMESTAMP(p) WITHOUT TIME ZONE

pが0のとき：

30

pが0以外のとき：

31＋p

TIMESTAMP'YYYY-MM-DD△hh:mm:ss.nn....n'※1，※2

10

TIMESTAMP(p) WITH TIME ZONE

pが0のとき：

36

pが0以外のとき：

37＋p

TIMESTAMP'YYYY-MM-DD△hh:mm:ss.nn....n±hh:mm'※1，※2

11

バイナリデータ

BINARY

2進形式のバイナリデータの場合：

指定された既定値のデータ長×8＋3

16進形式のバイナリデータの場合：

指定された既定値のデータ長×2＋3

2進形式のバイナリデータの場合：

B'01010101'

16進形式のバイナリデータの場合：

X'010203'

12

VARBINARY

13

論理データ

BOOLEAN

TRUEの場合：

4

FALSEの場合：

5

TRUE

FALSE

14

UUIDデータ

UUID

42

UUID'11111111-2222-3333-4444-555555555555'

（凡例）

p：小数秒精度（0，3，6，9または12）

YYYY：年

MM：月

DD：日

△：空白

hh：時

mm：分

ss：秒

nn...n：小数秒

注※1

DEFAULT句を指定した列の小数秒精度が0の場合は，秒（ss）と小数秒（nn...n）の間のピリオド（ . ）は省略されます。

注※2

既定値の小数秒精度が，DEFAULT句を指定した列の小数秒（nn...n）の桁数に満たない場合は，満たない桁数分，右側に0が補われます。

既定値の小数秒精度が，DEFAULT句を指定した列の小数秒（nn...n）の桁数を超える場合は，超えた桁数分，値が切り捨てられます。

付録B.4　SQL_DIV_TABLEの内容

SQL_DIV_TABLEには，実表，ディクショナリ表（実表），およびシステム表（実表）を格納しているDBエリアの情報などが格納されています。1行に1表分の情報が格納されています。

SQL_DIV_TABLEの内容を次の表に示します。

表B‒6　SQL_DIV_TABLEの内容

項番

列名

データ型

格納されている情報

1

TABLE_SCHEMA

VARCHAR(100)

スキーマ名

2

TABLE_NAME

VARCHAR(100)

表識別子

3

TABLE_ID

SMALLINT

表ID

0x00020001〜：ディクショナリ表（実表）

0x000200C9〜：システム表（実表）

0x00020191〜：HADBユーザが定義した実表

4

DBAREA_ID

SMALLINT

表が格納されているDBエリアのDBエリアID

付録B.5　SQL_INDEXESの内容

SQL_INDEXESには，実表のインデクスの定義情報が格納されています。また，ディクショナリ表（実表），およびシステム表（実表）のB-treeインデクスの定義情報も格納されています。1行に1インデクス分の情報が格納されています。

SQL_INDEXESの内容を次の表に示します。

表B‒7　SQL_INDEXESの内容

項番

列名

データ型

格納されている情報

1

TABLE_SCHEMA

VARCHAR(100)

スキーマ名

2

TABLE_NAME

VARCHAR(100)

インデクスが定義されている表の表識別子

3

INDEX_NAME

VARCHAR(100)

インデクス識別子

主キーに対応するインデクスの場合，制約名と同じ名称のインデクス識別子が格納されます。

4

INDEX_ID

SMALLINT

インデクスID

0x00030001〜：ディクショナリ表（実表）のインデクス

0x00030191〜：システム表（実表）のインデクス

0x00030321〜：HADBユーザが定義した実表のインデクス

5

TABLE_ID

SMALLINT

インデクスが定義されている表の表ID

0x00020001〜：ディクショナリ表（実表）

0x000200C9〜：システム表（実表）

0x00020191〜：HADBユーザが定義した実表

6

COLUMN_COUNT

SMALLINT

インデクス構成列数

7

COLUMN_ID_LIST

VARCHAR(32)

インデクス構成列IDリスト※

8

CREATE_TIME

TIMESTAMP

インデクス定義時のタイムスタンプ

9

UNIQUE_TYPE

CHAR(1)

B-treeインデクスの種類（ユニークインデクスかどうか）

'Y'：ユニークインデクス

'N'：非ユニークインデクス

10

FREE_AREA

SMALLINT

インデクスのページ内の未使用領域の比率

レンジインデクスの場合は，ナル値が格納されます。

11

INDEX_KEY_EXPAND

CHAR(1)

インデクスを構成する列の長さの合計が256バイト以上のインデクスかどうか

'Y'

インデクスを構成する列の長さの合計が256バイト以上のインデクス

'N'

インデクスを構成する列の長さの合計が255バイト以下のインデクス

12

INDEX_TYPE

CHAR(1)

インデクスの種別

'B'：B-treeインデクス

'T'：テキストインデクス

'R'：レンジインデクス

13

IS_PRIMARY_KEY

CHAR(1)

主キーに対応するインデクスかどうか

'Y'

主キーに対応するインデクス

ナル値

主キーに対応しないインデクス

ディクショナリ表（実表）のインデクス，およびシステム表（実表）のインデクスの場合も，ナル値が格納されます。

14

IS_CHUNK_SKIP

CHAR(1)

チャンクのスキップができるレンジインデクスかどうか

'Y'

チャンクのスキップができるレンジインデクス

ナル値

チャンクのスキップができないレンジインデクス

次に示すインデクスの場合は，ナル値が格納されます。

レンジインデクス以外のインデクス

バージョン02-02より前のバージョンで定義されたレンジインデクス

15

IS_EXCLUDE_NULL_VALUES

CHAR(1)

ナル値除外指定の指定有無

'Y'

ナル値除外指定が指定されているインデクス

ナル値

ナル値除外指定が指定されていないインデクス

16

IS_ARCHIVE_RANGE

CHAR(1)

HADBサーバが自動的に定義したレンジインデクスかどうか

'Y'

アーカイブレンジ列に対して，HADBサーバが自動的に定義したレンジインデクス

ナル値

'Y'の条件を満たさないレンジインデクス

ただし，アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更した場合は，HADBサーバが自動的に定義したレンジインデクスであっても，ナル値が格納されます。

なお，次に示すインデクスの場合は，ナル値が格納されます。

ディクショナリ表（実表）のインデクス

システム表（実表）のインデクス

17

IS_TEXT_CORRECTION_RULE

CHAR(1)

テキストインデクス表記ゆれ補正指定の有無

'Y'

テキストインデクス表記ゆれ補正指定が指定されているテキストインデクス

ナル値

テキストインデクス表記ゆれ補正指定が指定されていないテキストインデクス

なお，次に示すインデクスの場合は，ナル値が格納されます。

ディクショナリ表（実表）のインデクス

システム表（実表）のインデクス

テキストインデクス以外のインデクス

18

IS_TEXT_WORDCONTEXT

CHAR(1)

テキストインデクスワード検索指定の有無

'Y'

テキストインデクスワード検索指定が指定されているテキストインデクス

ナル値

テキストインデクスワード検索指定が指定されていないテキストインデクス

なお，次に示すインデクスの場合は，ナル値が格納されます。

ディクショナリ表（実表）のインデクス

システム表（実表）のインデクス

テキストインデクス以外のインデクス

19

TEXT_DELIMITER_TYPE

CHAR(1)

テキストインデクス区切り文字指定の種類

'D'

テキストインデクス区切り文字指定に，DEFAULTが指定されているテキストインデクス（テキストインデクス区切り文字指定を省略して，DEFAULTが仮定された場合も含む）

'A'

テキストインデクス区切り文字指定に，ALLが指定されているテキストインデクス

なお，次に示すインデクスの場合は，ナル値が格納されます。

テキストインデクスワード検索指定が指定されていないテキストインデクス

ディクショナリ表（実表）のインデクス

システム表（実表）のインデクス

テキストインデクス以外のインデクス

注※

インデクス構成列IDリストの形式を次の図に示します。

図B‒2　インデクス構成列IDリストの形式

付録B.6　SQL_DIV_INDEXの内容

SQL_DIV_INDEXには，実表のインデクスが格納されているDBエリアなどの情報が格納されています。また，ディクショナリ表（実表），およびシステム表（実表）のB-treeインデクスが格納されているDBエリアなどの情報も格納されています。1行に1インデクス分の情報が格納されています。

SQL_DIV_INDEXの内容を次の表に示します。

表B‒8　SQL_DIV_INDEXの内容

項番

列名

データ型

格納されている情報

1

TABLE_SCHEMA

VARCHAR(100)

スキーマ名

2

TABLE_NAME

VARCHAR(100)

インデクスが定義されている表の表識別子

3

INDEX_NAME

VARCHAR(100)

インデクス識別子

4

INDEX_ID

SMALLINT

インデクスID

0x00030001〜：ディクショナリ表（実表）のインデクス

0x00030191〜：システム表（実表）のインデクス

0x00030321〜：HADBユーザが定義した実表のインデクス

5

DBAREA_ID

SMALLINT

インデクスが格納されているDBエリアのDBエリアID

付録B.7　SQL_DBAREASの内容

SQL_DBAREASには，DBエリアの定義情報が格納されています。1行に1DBエリア分の情報が格納されています。

SQL_DBAREASの内容を次の表に示します。

表B‒9　SQL_DBAREASの内容

項番

列名

データ型

格納されている情報

1

DBAREA_NAME

VARCHAR(100)

DBエリア名

2

DBAREA_ID

SMALLINT

DBエリアID

3

DBAREA_TYPE

CHAR(4)

DBエリアの種類

'MAST'：マスタディレクトリ用DBエリア

'DICT'：ディクショナリ用DBエリア

'DATA'：データ用DBエリア

'WORK'：作業表用DBエリア

'STBL'：システム表用DBエリア

4

PAGE_SIZE

SMALLINT

DBエリアのページサイズ（単位：バイト）

作業表用DBエリアの場合，adbinitコマンドの初期設定オプションのadb_init_wrk_page_sizeオペランドで指定したページサイズが格納されます。なお，サーバ定義adb_dbarea_wrk_page_sizeオペランドを指定してページサイズを変更していても，adbinitコマンドで指定したページサイズが格納されます。

5

SEGMENT_SIZE

SMALLINT

DBエリアのセグメントサイズ（単位：ページ）

6

N_TABLE

SMALLINT

DBエリアに格納されている実表の数

マスタディレクトリ用DBエリア，および作業表用DBエリアの場合は0が格納されます。

7

N_INDEX

SMALLINT

DBエリアに格納されているインデクスの数（全インデクスの合計）

マスタディレクトリ用DBエリア，および作業表用DBエリアの場合は0が格納されます。

8

IS_ENCRYPTED

CHAR(1)

DBエリアが暗号化されているかどうか

'Y'：暗号化されている

'N'：暗号化されていない

付録B.8　SQL_SCHEMATAの内容

SQL_SCHEMATAには，スキーマに関する定義情報が格納されています。1行に1スキーマ分の情報が格納されています。

SQL_SCHEMATAの内容を次の表に示します。

表B‒10　SQL_SCHEMATAの内容

項番

列名

データ型

格納されている情報

1

SCHEMA_OWNER

VARCHAR(100)

スキーマの所有者

2

SCHEMA_DEFINER

VARCHAR(100)

スキーマ定義を実行したHADBユーザの認可識別子

3

SCHEMA_NAME

VARCHAR(100)

スキーマ名

4

CREATE_TIME

TIMESTAMP

スキーマ定義時のタイムスタンプ

付録B.9　SQL_VIEWSの内容

SQL_VIEWSには，ビュー表に関する定義情報が格納されています。1行に1ビュー表分の情報が格納されています。

SQL_VIEWSの内容を次の表に示します。

表B‒11　SQL_VIEWSの内容

項番

列名

データ型

格納されている情報

1

TABLE_SCHEMA

VARCHAR(100)

スキーマ名

2

TABLE_NAME

VARCHAR(100)

表識別子

3

VIEW_ID

SMALLINT

ビューID

4

IS_UPDATABLE

CHAR(1)

ビュー表の更新可否

'Y'：更新可能ビュー表

'N'：読み取り専用ビュー表

5

VIEW_OBJECT_SIZE

SMALLINT

ビューオブジェクト長

6

DEFINE_SOURCE_ID

INTEGER

SQL文ID

7

IS_INVALID

CHAR(1)

ビュー表が無効化されているかどうかの情報

'Y'

ビュー表が無効化されている状態

なお，ビュー表が無効化されていない場合は，ナル値が格納されます。

8

VIEW_LEVEL

SMALLINT

ビューレベル

付録B.10　SQL_VIEW_TABLE_USAGEの内容

SQL_VIEW_TABLE_USAGEには，ビュー表の基表の情報が格納されています。1行に1基表分の情報が格納されています。

なお，定義したビュー表の基表がビュー表の場合は，そのビュー表の基表の情報も格納されます。ビュー表の基表が，実表または外部表になるまで，すべての情報が格納されます。例を次の図に示します。

図B‒3　基表がビュー表の場合に格納される情報の例

［説明］

ビュー表V3の基表は，ビュー表V1とビュー表V2です。そのため，ビュー表V3の基表の情報としては，ビュー表V1とビュー表V2だけでなく，実表T1，実表T2および実表T3の情報も，SQL_VIEW_TABLE_USAGEに格納されます。

メモ

外部表を定義している場合は，「実表」を「外部表」に読み替えてください。

SQL_VIEW_TABLE_USAGEの内容を次の表に示します。

表B‒12　SQL_VIEW_TABLE_USAGEの内容

項番

列名

データ型

格納されている情報

1

VIEW_SCHEMA

VARCHAR(100)

ビュー表のスキーマ名

2

VIEW_NAME

VARCHAR(100)

ビュー表の表識別子

3

VIEW_ID

SMALLINT

ビューID

4

TABLE_SCHEMA

VARCHAR(100)

基表のスキーマ名

5

TABLE_NAME

VARCHAR(100)

基表の表識別子

6

TABLE_TYPE

CHAR(1)

基表の種類

'R'：実表

'V'：ビュー表

'F'：外部表

7

IS_DIRECT

CHAR(1)

直接基表として指定した表かどうかの情報

'Y'：直接指定

'N'：直接指定ではない

付録B.11　SQL_DEFINE_SOURCEの内容

SQL_DEFINE_SOURCEには，各SQL文の情報が格納されています。1行に1SQLテキスト分の情報が格納されています。

SQL_DEFINE_SOURCEの内容を次の表に示します。

表B‒13　SQL_DEFINE_SOURCEの内容

項番

列名

データ型

格納されている情報

1

SOURCE_ID

INTEGER

SQL文ID

2

SOURCE_TYPE

CHAR(1)

SQL文種別

'V'：ビュー定義

3

DEFINE_SOURCE

VARCHAR(64000)

SQL文

SQL文は入力された形で格納されます。

4

SOURCE_SIZE

SMALLINT

SQL文の実長

注

ディクショナリ表SQL_DEFINE_SOURCEを検索した場合，HADBユーザが定義したビュー表の情報だけが検索結果として出力されます。

スキーマ名にHADBおよびMASTERを指定して検索しても，検索結果は0件となります（エラーにはなりません）。

付録B.12　SQL_DEFINE_ENVIRONMENTの内容

SQL_DEFINE_ENVIRONMENTには，ビュー定義時およびビュー定義変更時の環境情報が格納されています。1行に1つのビュー表の環境情報が格納されています。

SQL_DEFINE_ENVIRONMENTの内容を次の表に示します。

表B‒14　SQL_DEFINE_ENVIRONMENTの内容

項番

列名

データ型

格納されている情報

1

RESOURCE_TYPE

CHAR(1)

定義情報種別

'V'：ビュー表

2

RESOURCE_ID

SMALLINT

定義情報ID

ビューID

3

DELETE_RESERVED_WORD

VARCHAR(32000)

CREATE VIEWの実行時に削除されていた予約語※

予約語を削除していない場合は，ナル値となります。

4

DEFINE_VR

CHAR(8)

定義時のバージョン

次に示す形式で格納されます。

'VV-RR'

VV：バージョン番号

RR：リビジョン番号

5

RECREATE_VR

CHAR(8)

ALTER VIEW文実行時のHADBサーバのバージョン

ビュー表に対して，ALTER VIEW文を最後に実行したときのHADBサーバのバージョン情報が，次に示す形式で格納されます。

'VV-RR'

VV：バージョン番号

RR：リビジョン番号

なお，ビュー表に対して，ALTER VIEW文を実行していない場合は，ナル値が格納されます。

注※

DELETE_RESERVED_WORD列には，予約語削除機能環境で定義した削除予約語が，サーバ定義で指定した順にコンマ区切り（スペースなし）で格納されます。

予約語削除機能環境で削除予約語がACTION，CATALOGの順に定義され，ビュー表が2つ定義されている場合の格納例を次に示します。

（例）SQL_DEFINE_ENVIRONMENTの検索

SELECT * FROM "MASTER"."SQL_DEFINE_ENVIRONMENT"

検索結果

付録B.13　SQL_USERSの内容

SQL_USERSには，HADBユーザの情報が格納されています。1行に1HADBユーザの情報が格納されています。

SQL_USERSの内容を次の表に示します。

表B‒15　SQL_USERSの内容

項番

列名

データ型

格納されている情報

1

USER_NAME

VARCHAR(100)

HADBユーザの認可識別子

2

USER_ID

SMALLINT

HADBユーザのユーザID

3

DBA_PRIVILEGE

CHAR(1)

DBA権限の有無

'Y'：DBA権限あり

'N'：DBA権限なし

4

CONNECT_PRIVILEGE

CHAR(1)

CONNECT権限の有無

'Y'：CONNECT権限あり

'N'：CONNECT権限なし

5

SCHEMA_PRIVILEGE

CHAR(1)

スキーマ定義権限の有無

'Y'：スキーマ定義権限あり

'N'：スキーマ定義権限なし

6

CREATE_TIME

TIMESTAMP

HADBユーザの作成日時

7

AUDIT_ADMIN_PRIVILEGE

CHAR(1)

監査管理権限の有無

'Y'：監査管理権限あり

'N'：監査管理権限なし

8

AUDIT_VIEWER_PRIVILEGE

CHAR(1)

監査参照権限の有無

'Y'：監査参照権限あり

'N'：監査参照権限なし

9

CRYPTO_ADMIN_PRIVILEGE

CHAR(1)

暗号管理権限の有無

'Y'：暗号管理権限あり

'N'：暗号管理権限なし

10

AUTHENTICATION_TYPE

VARCHAR(8)

HADBユーザのユーザ認証方式

'DB'：データベース認証

'PAM'：PAM認証

'Keycloak'：Keycloak認証

付録B.14　SQL_TABLE_CONSTRAINTSの内容

SQL_TABLE_CONSTRAINTSには，実表の制約に関する情報が格納されています。1行に1制約の情報が格納されています。

SQL_TABLE_CONSTRAINTSの内容を次の表に示します。

表B‒16　SQL_TABLE_CONSTRAINTSの内容

項番

列名

データ型

格納されている情報

1

CONSTRAINT_SCHEMA

VARCHAR(100)

制約を含むスキーマ名

2

CONSTRAINT_NAME

VARCHAR(100)

制約名

3

CONSTRAINT_TYPE

CHAR(1)

制約の種別

'P'：主キー

'F'：外部キー

4

TABLE_SCHEMA

VARCHAR(100)

制約が定義されている表のスキーマ名

5

TABLE_NAME

VARCHAR(100)

制約が定義されている表の表識別子

付録B.15　SQL_INDEX_COLINFの内容

SQL_INDEX_COLINFには，インデクスの構成列に関する情報が格納されています。1行にインデクス構成列1列分の情報が格納されています。

SQL_INDEX_COLINFの内容を次の表に示します。

表B‒17　SQL_INDEX_COLINFの内容

項番

列名

データ型

格納されている情報

1

TABLE_SCHEMA

VARCHAR(100)

スキーマ名

2

TABLE_NAME

VARCHAR(100)

インデクスが定義されている表の表識別子

3

INDEX_NAME

VARCHAR(100)

インデクス識別子

4

INDEX_ID

SMALLINT

インデクスID

5

INDEX_ORDER

SMALLINT

インデクスを構成する列の順序

インデクスを構成する列の順序が，1から昇順に格納されます。

6

COLUMN_NAME

VARCHAR(100)

インデクス構成列名

7

ASC_DESC

CHAR(1)

B-treeインデクスのキー値の並び順

'A'

ASCが指定されています（並び順は昇順です）。

'D'

DESCが指定されています（並び順は降順です）。

なお，B-treeインデクス以外のインデクスの場合は，ナル値が格納されます。

付録B.16　SQL_KEY_COLUMN_USAGEの内容

SQL_KEY_COLUMN_USAGEには，主キー・外部キーの構成列に関する情報が格納されています。1行に主キー・外部キーの構成列1列分の情報が格納されています。

SQL_KEY_COLUMN_USAGEの内容を次の表に示します。

表B‒18　SQL_KEY_COLUMN_USAGEの内容

項番

列名

データ型

格納されている情報

1

CONSTRAINT_SCHEMA

VARCHAR(100)

制約を含むスキーマ名

2

CONSTRAINT_NAME

VARCHAR(100)

制約名

3

TABLE_SCHEMA

VARCHAR(100)

制約が定義されている表のスキーマ名

4

TABLE_NAME

VARCHAR(100)

制約が定義されている表の表識別子

5

COLUMN_NAME

VARCHAR(100)

制約が定義されている列の列名

6

COLUMN_ORDER

SMALLINT

制約が定義されている列の定義順序

付録B.17　SQL_REFERENTIAL_CONSTRAINTSの内容

SQL_REFERENTIAL_CONSTRAINTSには，参照制約に関する情報が格納されています。1行に1参照制約分の情報が格納されています。

SQL_REFERENTIAL_CONSTRAINTSの内容を次の表に示します。

表B‒19　SQL_REFERENTIAL_CONSTRAINTSの内容

項番

列名

データ型

格納されている情報

1

CONSTRAINT_SCHEMA

VARCHAR(100)

参照制約を含むスキーマ名

2

CONSTRAINT_NAME

VARCHAR(100)

参照制約の制約名

3

TABLE_SCHEMA

VARCHAR(100)

参照制約が定義されている表のスキーマ名

4

TABLE_NAME

VARCHAR(100)

参照制約が定義されている表の表識別子

5

PRIMARY_CONSTRAINT_SCHEMA

VARCHAR(100)

外部キーが参照する制約を含むスキーマ名

6

PRIMARY_CONSTRAINT_NAME

VARCHAR(100)

外部キーが参照する制約名

7

REFERENCED_TABLE_SCHEMA

VARCHAR(100)

被参照表のスキーマ名

8

REFERENCED_TABLE_NAME

VARCHAR(100)

被参照表の表識別子

9

IS_DISABLE

CHAR(1)

参照制約チェック抑止指定の有無

'Y'

参照制約のチェックを行いません。

付録B.18　SQL_TABLE_PRIVILEGESの内容

SQL_TABLE_PRIVILEGESには，表に対するアクセス権限に関する情報が格納されています。1行に，ある権限付与者が与えた1認可識別子の1表分の情報が格納されています。

SQL_TABLE_PRIVILEGESの内容を次の表に示します。

表B‒20　SQL_TABLE_PRIVILEGESの内容

項番

列名

データ型

格納されている情報

1

GRANTOR

VARCHAR(100)

アクセス権限を付与したHADBユーザの認可識別子

2

GRANTEE

VARCHAR(100)

アクセス権限が付与されたHADBユーザの認可識別子，または'PUBLIC'

3

GRANTEE_TYPE

CHAR(1)

アクセス権限が付与されたHADBユーザの種別

'I'

HADBユーザの認可識別子，またはPUBLIC

4

OWNER

VARCHAR(100)

アクセス権限の対象となる表を所有するHADBユーザの認可識別子

5

TABLE_SCHEMA

VARCHAR(100)

アクセス権限の対象となる表のスキーマ名

6

TABLE_NAME

VARCHAR(100)

アクセス権限の対象となる表の表識別子

7

GRANT_TIME

TIMESTAMP

アクセス権限が付与された時刻

ある権限付与者が，1認可識別子に対して，表のアクセス権限を初めて与えたときの時刻が格納されます。

8

SELECT_PRIVILEGE

CHAR(1)

SELECT権限を持っているかどうか

'G'

付与権付きのSELECT権限を持っている

'Y'

付与権なしのSELECT権限を持っている

'N'

SELECT権限を持っていない

9

INSERT_PRIVILEGE

CHAR(1)

INSERT権限を持っているかどうか

'G'

付与権付きのINSERT権限を持っている

'Y'

付与権なしのINSERT権限を持っている

'N'

INSERT権限を持っていない

10

UPDATE_PRIVILEGE

CHAR(1)

UPDATE権限を持っているかどうか

'G'

付与権付きのUPDATE権限を持っている

'Y'

付与権なしのUPDATE権限を持っている

'N'

UPDATE権限を持っていない

11

DELETE_PRIVILEGE

CHAR(1)

DELETE権限を持っているかどうか

'G'

付与権付きのDELETE権限を持っている

'Y'

付与権なしのDELETE権限を持っている

'N'

DELETE権限を持っていない

12

TRUNCATE_PRIVILEGE

CHAR(1)

TRUNCATE権限を持っているかどうか

'G'

付与権付きのTRUNCATE権限を持っている

'Y'

付与権なしのTRUNCATE権限を持っている

'N'

TRUNCATE権限を持っていない

13

REFERENCES_PRIVILEGE

CHAR(1)

REFERENCES権限を持っているかどうか

'G'

付与権付きのREFERENCES権限を持っている

'Y'

付与権なしのREFERENCES権限を持っている

'N'

REFERENCES権限を持っていない

14

IMPORT_TABLE_PRIVILEGE

CHAR(1)

IMPORT TABLE権限を持っているかどうか

'G'

付与権付きのIMPORT TABLE権限を持っている

'Y'

付与権なしのIMPORT TABLE権限を持っている

'N'

IMPORT TABLE権限を持っていない

15

REBUILD_INDEX_PRIVILEGE

CHAR(1)

REBUILD INDEX権限を持っているかどうか

'G'

付与権付きのREBUILD INDEX権限を持っている

'Y'

付与権なしのREBUILD INDEX権限を持っている

'N'

REBUILD INDEX権限を持っていない

16

GET_COSTINFO_PRIVILEGE

CHAR(1)

GET COSTINFO権限を持っているかどうか

'G'

付与権付きのGET COSTINFO権限を持っている

'Y'

付与権なしのGET COSTINFO権限を持っている

'N'

GET COSTINFO権限を持っていない

17

EXPORT_TABLE_PRIVILEGE

CHAR(1)

EXPORT TABLE権限を持っているかどうか

'G'

付与権付きのEXPORT TABLE権限を持っている

'Y'

付与権なしのEXPORT TABLE権限を持っている

'N'

EXPORT TABLE権限を持っていない

18

MERGE_CHUNK_PRIVILEGE

CHAR(1)

MERGE CHUNK権限を持っているかどうか

'G'

付与権付きのMERGE CHUNK権限を持っている

'Y'

付与権なしのMERGE CHUNK権限を持っている

'N'

MERGE CHUNK権限を持っていない

19

CHANGE_CHUNK_COMMENT_PRIVILEGE

CHAR(1)

CHANGE CHUNK COMMENT権限を持っているかどうか

'G'

付与権付きのCHANGE CHUNK COMMENT権限を持っている

'Y'

付与権なしのCHANGE CHUNK COMMENT権限を持っている

'N'

CHANGE CHUNK COMMENT権限を持っていない

20

CHANGE_CHUNK_STATUS_PRIVILEGE

CHAR(1)

CHANGE CHUNK STATUS権限を持っているかどうか

'G'

付与権付きのCHANGE CHUNK STATUS権限を持っている

'Y'

付与権なしのCHANGE CHUNK STATUS権限を持っている

'N'

CHANGE CHUNK STATUS権限を持っていない

21

ARCHIVE_CHUNK_PRIVILEGE

CHAR(1)

ARCHIVE CHUNK権限を持っているかどうか

'G'

付与権付きのARCHIVE CHUNK権限を持っている

'Y'

付与権なしのARCHIVE CHUNK権限を持っている

'N'

ARCHIVE CHUNK権限を持っていない

22

UNARCHIVE_CHUNK_PRIVILEGE

CHAR(1)

UNARCHIVE CHUNK権限を持っているかどうか

'G'

付与権付きのUNARCHIVE CHUNK権限を持っている

'Y'

付与権なしのUNARCHIVE CHUNK権限を持っている

'N'

UNARCHIVE CHUNK権限を持っていない

23

COPY_PRIVILEGE

CHAR(1)

COPY権限を持っているかどうか

'G'

付与権付きのCOPY権限を持っている

'Y'

付与権なしのCOPY権限を持っている

'N'

COPY権限を持っていない

注

ビュー表が無効化されている場合，そのビュー表に対するアクセス権限に関する情報は検索できません。

■ディクショナリ表およびシステム表に対するアクセス権限に関する情報

ディクショナリ表およびシステム表に対するアクセス権限に関する情報は，SQL_TABLE_PRIVILEGESには格納されません。ディクショナリ表およびシステム表に対するアクセス権限に関する情報は，次のように仮定されます。

SELECT_PRIVILEGE（SELECT権限を持っているかどうか）

'G'：付与権付きのSELECT権限を持っている

COPY_PRIVILEGE（COPY権限を持っているかどうか）

'G'：付与権付きのCOPY権限を持っている

EXPORT_TABLE_PRIVILEGE（EXPORT TABLE権限を持っているかどうか）

'G'：付与権付きのEXPORT TABLE権限を持っている

上記以外のアクセス権限を持っているかどうか

'N'：持っていない

付録B.19　SQL_AUDITSの内容

SQL_AUDITSには，CREATE AUDIT文で定義した監査対象定義の情報が格納されています。1行に，1監査対象定義の情報が格納されています。

SQL_AUDITSの内容を次の表に示します。

表B‒21　SQL_AUDITSの内容

項番

列名

データ型

格納されている情報

1

OPERATION_TYPE

VARCHAR(30)

対象操作種別

'ANY'：すべての監査対象操作

2

EVENT_TYPE

VARCHAR(30)

システムで使用

3

OBJECT_TYPE

VARCHAR(30)

システムで使用

4

OBJECT_SCHEMA

VARCHAR(100)

システムで使用

5

OBJECT_NAME

VARCHAR(100)

システムで使用

6

USER_NAME

VARCHAR(100)

システムで使用

7

EVENT_RESULT

VARCHAR(30)

システムで使用

8

AUDIT_TYPE

VARCHAR(30)

監査証跡種別

'EVENT'：イベントの最終結果

9

IS_EXCLUSION_AUDIT

CHAR(1)

システムで使用

付録B.20　SQL_FOREIGN_SERVERSの内容

SQL_FOREIGN_SERVERSには，外部サーバの定義情報が格納されています。1行に，1外部サーバ分の定義情報が格納されています。

SQL_FOREIGN_SERVERSの内容を次の表に示します。

表B‒22　SQL_FOREIGN_SERVERSの内容

項番

列名

データ型

格納されている情報

1

SERVER_OWNER

VARCHAR(100)

外部サーバの所有者（外部サーバを定義したHADBユーザ）

2

SERVER_NAME

VARCHAR(100)

外部サーバ名

3

ACCESS_KEY

VARCHAR(100)

外部サーバに接続する際に使用するアクセスキー

アクセスキーの指定を省略した場合は，ナル値が格納されます。

4

ENDPOINT

VARCHAR(100)

外部サーバに接続する際に使用するエンドポイント

エンドポイントの指定を省略した場合は，ナル値が格納されます。

付録B.21　SQL_DATATYPE_DESCRIPTORSの内容

SQL_DATATYPE_DESCRIPTORSには，外部表に定義したSTRUCT型の列のフィールド情報が格納されています。1行に，1フィールド分の情報が格納されています。

SQL_DATATYPE_DESCRIPTORSの内容を次の表に示します。

表B‒23　SQL_DATATYPE_DESCRIPTORSの内容

項番

列名

データ型

格納されている情報

1

TYPE_SCHEMA

VARCHAR(100)

スキーマ名

2

TYPE_TABLE

VARCHAR(100)

表識別子

3

TYPE_NAME

VARCHAR(100)

STRUCT型の列に属するフィールドの場合は，属している列名が格納されます。

STRUCT型のフィールドに属するフィールドの場合は，属しているフィールド名が格納されます。

4

FIELD_NAME

VARCHAR(100)

フィールド名

5

TYPE_ID

SMALLINT

このフィールドが属するSTRUCT型のID

同一の表内で一意（ユニーク）です。1から昇順に格納されます。

6

ORDINAL_POSITION

SMALLINT

順序位置（フィールドの定義位置）

7

DATA_TYPE_CODE

SMALLINT

データ型コード

フィールドデータ型のデータ型コードが格納されます。詳細については，「表B‒4　SQL_COLUMNSの内容」のDATA_TYPE_CODE列を参照してください。

8

DATA_LENGTH

SMALLINT

データ定義長

フィールドデータの定義長が格納されます。詳細については，「表B‒4　SQL_COLUMNSの内容」のDATA_LENGTH列を参照してください。

9

MAX_ELEMENT

SMALLINT

フィールドデータ型が配列型の場合，最大要素数（2～30,000）が格納されます。

フィールドデータ型が配列型以外の場合，1が格納されます。

10

IS_NULLABLE

CHAR(1)

ナル値の可否

'Y'：ナル値を許容する

'N'：ナル値を許容しない

なお，非ナル値制約指定がある場合は'N'が格納されます。

11

STRUCT_TYPE_ID

SMALLINT

フィールドデータ型がSTRUCT型の場合，STRUCT型のIDが格納されます。

フィールドデータ型がSTRUCT型以外の場合，ナル値が格納されます。

12

N_STRUCT_FIELD

SMALLINT

フィールドデータ型がSTRUCT型の場合，フィールド数が格納されます。

フィールドデータ型がSTRUCT型以外の場合，ナル値が格納されます。

付録B.22　ディクショナリ表の参照時に排他が取得される実表

SQL文を実行してディクショナリ表を参照すると，ディクショナリ表（実表）およびシステム表（実表）の排他が取得されます。ディクショナリ表の参照時に排他が取得される実表については，「2.10.6　ディクショナリ表およびシステム表の参照時に排他が取得される実表」を参照してください。

付録B.23　ディクショナリ表（実表）のB-treeインデクス

ディクショナリ表（実表）には，次の表に示すB-treeインデクスが定義されています。

表B‒24　ディクショナリ表（実表）のB-treeインデクスの一覧

項番

ディクショナリ表（実表）

インデクス構成列

B-treeインデクス名

1

SQL_TABLES

TABLE_SCHEMA

SQLINDEXM01

2

TABLE_NAME

3

TABLE_ID

SQLINDEXS01

4

SQL_COLUMNS

TABLE_SCHEMA

SQLINDEXM02

5

TABLE_NAME

6

COLUMN_NAME

7

TABLE_ID

SQLINDEXS02

8

SQL_DIV_TABLE

TABLE_SCHEMA

SQLINDEXM05

9

TABLE_NAME

10

DBAREA_ID

SQLINDEXS04

11

SQL_INDEXES

TABLE_SCHEMA

SQLINDEXM03

12

INDEX_NAME

13

TABLE_SCHEMA

SQLINDEXM04

14

TABLE_NAME

15

INDEX_ID

SQLINDEXS03

16

SQL_DIV_INDEX

TABLE_SCHEMA

SQLINDEXM06

17

TABLE_NAME

18

TABLE_SCHEMA

SQLINDEXM07

19

INDEX_NAME

20

DBAREA_ID

SQLINDEXS05

21

SQL_DBAREAS

DBAREA_NAME

SQLINDEXS06

22

DBAREA_ID

SQLINDEXS07

23

N_TABLE

SQLINDEXM08

24

DBAREA_ID

25

SQL_SCHEMATA

SCHEMA_OWNER

SQLINDEXS08

26

SCHEMA_NAME

SQLINDEXS09

27

SQL_VIEWS

TABLE_SCHEMA

SQLINDEXM09

28

TABLE_NAME

29

VIEW_ID

SQLINDEXS10

30

SQL_VIEW_TABLE_USAGE

VIEW_SCHEMA

SQLINDEXM10

31

VIEW_NAME

32

TABLE_SCHEMA

SQLINDEXM11

33

TABLE_NAME

34

VIEW_ID

SQLINDEXS11

35

SQL_VIEW_OBJECT

VIEW_ID

SQLINDEXM12

36

OBJECT_NO

37

SQL_DEFINE_SOURCE

SOURCE_ID

SQLINDEXS12

38

SQL_DEFINE_ENVIRONMENT

RESOURCE_TYPE

SQLINDEXM13

39

RESOURCE_ID

40

SQL_USERS

USER_NAME

SQLINDEXS13

41

SQL_TABLE_CONSTRAINTS

CONSTRAINT_SCHEMA

SQLINDEXM14

42

CONSTRAINT_NAME

43

TABLE_SCHEMA

SQLINDEXM15

44

TABLE_NAME

45

SQL_INDEX_COLINF

TABLE_SCHEMA

SQLINDEXM16

46

INDEX_NAME

47

TABLE_SCHEMA

SQLINDEXM17

48

TABLE_NAME

49

SQL_KEY_COLUMN_USAGE

CONSTRAINT_SCHEMA

SQLINDEXM18

50

CONSTRAINT_NAME

51

COLUMN_NAME

52

TABLE_SCHEMA

SQLINDEXM19

53

TABLE_NAME

54

COLUMN_NAME

55

SQL_REFERENTIAL_CONSTRAINTS

CONSTRAINT_SCHEMA

SQLINDEXM20

56

CONSTRAINT_NAME

57

TABLE_SCHEMA

SQLINDEXM21

58

TABLE_NAME

59

PRIMARY_CONSTRAINT_SCHEMA

SQLINDEXM22

60

PRIMARY_CONSTRAINT_NAME

61

REFERENCED_TABLE_SCHEMA

SQLINDEXM23

62

REFERENCED_TABLE_NAME

63

SQL_TABLE_PRIVILEGES

TABLE_SCHEMA

SQLINDEXM24

64

TABLE_NAME

65

GRANTEE

66

GRANTOR

67

GRANTOR

SQLINDEXS14

68

GRANTEE

SQLINDEXS15

69

SQL_AUDITS

OBJECT_TYPE

SQLINDEXM25

70

OBJECT_SCHEMA

71

OBJECT_NAME

72

SQL_FOREIGN_SERVERS

SERVER_NAME

SQLINDEXS16

73

SQL_DATATYPE_DESCRIPTORS

TYPE_SCHEMA

SQLINDEXM26

74

TYPE_TABLE

75

TYPE_ID

付録B.24　ディクショナリ表の検索

SELECT文でディクショナリ表を検索できます。ディクショナリ表の認可識別子はMASTERです。

なお，ディクショナリ表を検索したら，すぐにCOMMIT文を実行してトランザクションを終了させてください。COMMIT文を実行しないと，ディクショナリ表の排他が解放されません。ただし，ディクショナリ表を検索したあとで，adbsqlコマンドを終了する場合，ディクショナリ表の排他は解放されるため，COMMIT文の実行は不要です。

また，ディクショナリ表を検索するHADBユーザがDBA権限を持っているかどうかによって，検索できる情報が異なります。詳細については，「付録B.1　ディクショナリ表の概要」の「(3)　HADBユーザが参照できるディクショナリ表の範囲」を参照してください。

ディクショナリ表を検索するSELECT文の指定例を次に示します。

(1)　表IDから表の表名を調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "TABLE_SCHEMA","TABLE_NAME"
  FROM "MASTER"."SQL_TABLES"
    WHERE "TABLE_ID"=?

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。表IDを入力してください。

(2)　ローストア表の一覧を調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "TABLE_SCHEMA", "TABLE_NAME"
  FROM "MASTER"."SQL_TABLES"
    WHERE "STORAGE_FORMAT" = 'ROW'

(3)　カラムストア表の一覧を調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "TABLE_SCHEMA", "TABLE_NAME"
  FROM "MASTER"."SQL_TABLES"
    WHERE "STORAGE_FORMAT" = 'COLUMN'

(4)　インデクスIDからインデクスのインデクス名を調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "TABLE_SCHEMA","INDEX_NAME"
  FROM "MASTER"."SQL_INDEXES"
    WHERE "INDEX_ID"=?

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。インデクスIDを入力してください。

(5)　インデクスIDからインデクスが定義された表の表名を調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "TABLE_SCHEMA","TABLE_NAME"
  FROM "MASTER"."SQL_INDEXES"
    WHERE "INDEX_ID"=?

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。インデクスIDを入力してください。

(6)　インデクスIDからインデクスが定義された列の列名を調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "TABLE_SCHEMA","TABLE_NAME","COLUMN_NAME"
  FROM "MASTER"."SQL_INDEX_COLINF" WHERE "INDEX_ID" = ?

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。インデクスIDを入力してください。

(7)　全レンジインデクスのインデクス名を調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "TABLE_SCHEMA","INDEX_NAME"
  FROM "MASTER"."SQL_INDEXES"
    WHERE "INDEX_TYPE"='R'

(8)　表名から表に定義された全インデクス名を調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "TABLE_SCHEMA","INDEX_NAME"
  FROM "MASTER"."SQL_INDEXES"
    WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=?

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を，2番目の入力要求には表識別子を入力してください。

(9)　表名から表を使用する全ビュー表のビュー表名を調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "VIEW_SCHEMA","VIEW_NAME"
  FROM "MASTER"."SQL_VIEW_TABLE_USAGE"
    WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=?

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を，2番目の入力要求には表識別子を入力してください。

(10)　表名から表が格納されているDBエリア名を調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "MASTER"."SQL_DBAREAS"."DBAREA_NAME"
  FROM "MASTER"."SQL_DBAREAS","MASTER"."SQL_DIV_TABLE"
    WHERE "MASTER"."SQL_DIV_TABLE"."TABLE_SCHEMA" = ?
      AND "MASTER"."SQL_DIV_TABLE"."TABLE_NAME" = ?
      AND "MASTER"."SQL_DBAREAS"."DBAREA_ID"="MASTER"."SQL_DIV_TABLE"."DBAREA_ID"

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を，2番目の入力要求には表識別子を入力してください。

(11)　スキーマ名から定義された全表の表名を調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "TABLE_SCHEMA","TABLE_NAME","TABLE_TYPE"
  FROM "MASTER"."SQL_TABLES"
    WHERE "TABLE_SCHEMA"=?

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。スキーマ名を入力してください。

なお，TABLE_TYPEが'R'の場合は実表を，'V'の場合はビュー表を，'F'の場合は外部表を意味しています。

(12)　スキーマ名から定義された全インデクスのインデクス名を調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "TABLE_SCHEMA","INDEX_NAME","INDEX_TYPE"
  FROM "MASTER"."SQL_INDEXES"
    WHERE "TABLE_SCHEMA"=?

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。スキーマ名を入力してください。

なお，INDEX_TYPEが'B'の場合はB-treeインデクスを，'T'の場合はテキストインデクスを，'R'の場合はレンジインデクスを意味しています。

(13)　インデクス名からインデクスが格納されているDBエリア名を調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "MASTER"."SQL_DBAREAS"."DBAREA_NAME"
  FROM "MASTER"."SQL_DBAREAS","MASTER"."SQL_DIV_INDEX"
    WHERE "MASTER"."SQL_DIV_INDEX"."TABLE_SCHEMA"=?
      AND "MASTER"."SQL_DIV_INDEX"."INDEX_NAME"=?
      AND "MASTER"."SQL_DBAREAS"."DBAREA_ID"="MASTER"."SQL_DIV_INDEX"."DBAREA_ID"

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を，2番目の入力要求にはインデクス識別子を入力してください。

(14)　全マルチチャンク表に作成されるチャンク数の最大値を調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "TABLE_NAME","N_CHUNK_RESERVED"
  FROM "MASTER"."SQL_TABLES"
    WHERE "IS_CHUNK" = 'Y'
      ORDER BY "TABLE_NAME"

(15)　DBエリアに格納されている表の表名を調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "TABLE_SCHEMA","TABLE_NAME" FROM "MASTER"."SQL_DIV_TABLE"
  WHERE "DBAREA_ID"=
   (SELECT "DBAREA_ID" FROM "MASTER"."SQL_DBAREAS" WHERE "DBAREA_NAME"=?)

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。入力要求にはDBエリア名を入力してください。

(16)　DBエリアに格納されているインデクスのインデクス名を調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "TABLE_SCHEMA","INDEX_NAME" FROM "MASTER"."SQL_DIV_INDEX"
  WHERE "DBAREA_ID"=
   (SELECT "DBAREA_ID" FROM "MASTER"."SQL_DBAREAS" WHERE "DBAREA_NAME"=?)

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。入力要求にはDBエリア名を入力してください。

(17)　ビュー表の更新可否を調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "IS_UPDATABLE" FROM "MASTER"."SQL_VIEWS"
  WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=?

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を，2番目の入力要求にはビュー表の表識別子を入力してください。

検索結果が'Y'の場合は，更新可能ビュー表であるため更新できます。'N'の場合は，読み取り専用ビュー表であるため更新できません。

(18)　HADBユーザが持っているユーザ権限とスキーマ操作権限を調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

なお，DBA権限を持っているHADBユーザは，すべてのHADBユーザが持っているユーザ権限情報，およびスキーマ操作権限情報を調べられます。DBA権限を持っていないHADBユーザは，自分（HADBサーバに接続中の認可識別子のHADBユーザ）が持っているユーザ権限情報，およびスキーマ操作権限情報を調べられます。

指定例

SELECT "DBA_PRIVILEGE","CONNECT_PRIVILEGE","SCHEMA_PRIVILEGE"
  FROM "MASTER"."SQL_USERS" WHERE "USER_NAME"=?

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。入力要求には，HADBユーザの認可識別子を入力してください。

検索結果の各列の値が'Y'の場合は，対象のユーザ権限およびスキーマ操作権限情報を持っています。'N'の場合は，対象のユーザ権限およびスキーマ操作権限情報を持っていません。

(19)　主キーに対応するインデクスのインデクス名を調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "TABLE_SCHEMA","INDEX_NAME" FROM "MASTER"."SQL_INDEXES"
  WHERE "TABLE_SCHEMA" = ? AND "TABLE_NAME" = ? AND "IS_PRIMARY_KEY" = 'Y'

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を，2番目の入力要求には表識別子を入力してください。

(20)　チャンクのスキップができるレンジインデクスかどうかを調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "IS_CHUNK_SKIP" FROM "MASTER"."SQL_INDEXES"
  WHERE "TABLE_SCHEMA" = ? AND "INDEX_NAME" = ?

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を，2番目の入力要求にはインデクス識別子を入力してください。

検索結果が'Y'の場合は，チャンクのスキップができるレンジインデクスです。ナル値の場合は，チャンクのスキップができないレンジインデクス，またはレンジインデクス以外のインデクスです。

(21)　主キーと外部キーを構成する列名を調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "COLUMN_NAME"
  FROM "MASTER"."SQL_KEY_COLUMN_USAGE"
    WHERE "CONSTRAINT_SCHEMA" = ? AND "CONSTRAINT_NAME" = ?
      ORDER BY "COLUMN_ORDER" ASC

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求には制約を含むスキーマ名を，2番目の入力要求には制約名を入力してください。

(22)　主キーを参照する外部キーを調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "CONSTRAINT_SCHEMA","CONSTRAINT_NAME"
  FROM "MASTER"."SQL_REFERENTIAL_CONSTRAINTS"
    WHERE "PRIMARY_CONSTRAINT_SCHEMA" = ?
      AND "PRIMARY_CONSTRAINT_NAME" = ?

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求には制約を含むスキーマ名を，2番目の入力要求には制約名を入力してください。

(23)　ビュー表が無効化されているかどうかを調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "IS_INVALID" FROM "MASTER"."SQL_VIEWS"
  WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=?

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはビュー表のスキーマ名を，2番目の入力要求にはビュー表の表識別子を入力してください。

検索結果が'Y'の場合，ビュー表は無効化されています。ナル値の場合，ビュー表は無効化されていません。

(24)　表に対するアクセス権限を調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "GRANTOR",
       "SELECT_PRIVILEGE","INSERT_PRIVILEGE","UPDATE_PRIVILEGE",
       "DELETE_PRIVILEGE","TRUNCATE_PRIVILEGE",
       "REFERENCES_PRIVILEGE","IMPORT_TABLE_PRIVILEGE",
       "REBUILD_INDEX_PRIVILEGE","GET_COSTINFO_PRIVILEGE",
       "EXPORT_TABLE_PRIVILEGE","MERGE_CHUNK_PRIVILEGE",
       "CHANGE_CHUNK_COMMENT_PRIVILEGE","CHANGE_CHUNK_STATUS_PRIVILEGE",
       "ARCHIVE_CHUNK_PRIVILEGE","UNARCHIVE_CHUNK_PRIVILEGE","COPY_PRIVILEGE"
  FROM "MASTER"."SQL_TABLE_PRIVILEGES"
    WHERE "GRANTEE" IN ('PUBLIC', ?)
      AND "TABLE_SCHEMA"=? AND "TABLE_NAME"=?

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはアクセス権限が付与されたHADBユーザの認可識別子を，2番目の入力要求には表のスキーマ名を，3番目の入力要求には表の表識別子を入力してください。

GRANTOR列には，アクセス権限を付与したHADBユーザの認可識別子が出力されます。

そのほかの列には，各アクセス権限を持っているかどうかが出力されます。検索結果が'G'の場合は，該当の表に対するアクセス権限を付与権付きで持っています。'Y'の場合は，該当の表に対するアクセス権限（付与権なし）を持っています。'N'の場合は，該当の表に対するアクセス権限を持っていません。

(25)　実表の種類（マルチチャンク表，アーカイブマルチチャンク表，カラムストア表かどうか）を調べる場合

指定例に示すSELECT文でディクショナリ表を検索すると，次のことを確認できます。

実表がシングルチャンク表なのか，それともマルチチャンク表なのか

実表がレギュラーマルチチャンク表なのか，それともアーカイブマルチチャンク表なのか

実表がローストア表なのか，それともカラムストア表なのか

指定例

SELECT "TABLE_SCHEMA","TABLE_NAME","IS_CHUNK","IS_ARCHIVABLE","STORAGE_FORMAT"
  FROM "MASTER"."SQL_TABLES"
    WHERE "TABLE_SCHEMA" = ? AND "TABLE_NAME" = ?

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を，2番目の入力要求には表識別子を入力してください。

検索結果の例

TABLE_SCHEMA  TABLE_NAME  IS_CHUNK  IS_ARCHIVABLE  STORAGE_FORMAT
------------  ----------  --------  -------------  --------------
ADBUSER01     T1                 Y              *  COLUMN

この例では，実表"ADBUSER01"."T1"（以降，表T1と表記）の種類が表示されています。

IS_CHUNK列には，表T1がマルチチャンク表かどうかが表示されます。'Y'が表示された場合，表T1はマルチチャンク表です。'N'が表示された場合，表T1はシングルチャンク表です。

IS_ARCHIVABLE列には，表T1がアーカイブマルチチャンク表かどうかが表示されます。'Y'が表示された場合，表T1はアーカイブマルチチャンク表です。ナル値が表示された場合，表T1はアーカイブマルチチャンク表ではありません。この例の*は，ナル値を意味しています。

STORAGE_FORMAT列には，表T1がローストア表なのか，カラムストア表なのかが表示されます。'COLUMN'が表示された場合，表T1はカラムストア表です。'ROW'が表示された場合，表T1はローストア表です。

この例の場合，表T1は，レギュラーマルチチャンク表かつカラムストア表であることがわかります。

(26)　アーカイブマルチチャンク表のアーカイブディレクトリを調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "ARCHIVE_DIRECTORY_PATH" FROM "MASTER"."SQL_TABLES"
  WHERE "TABLE_SCHEMA" = ? AND "TABLE_NAME" = ?

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を，2番目の入力要求には表識別子を入力してください。

(27)　アーカイブマルチチャンク表のアーカイブレンジ列の列名を調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "COLUMN_NAME" FROM "MASTER"."SQL_COLUMNS"
  WHERE "TABLE_SCHEMA" = ? AND "TABLE_NAME" = ? AND "IS_ARCHIVE_RANGE_COLUMN" = 'Y'

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を，2番目の入力要求には表識別子を入力してください。

(28)　アーカイブマルチチャンク表のアーカイブレンジ列に定義されたレンジインデクスを調べる場合

次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "IX"."TABLE_SCHEMA","IX"."INDEX_NAME"
  FROM "MASTER"."SQL_INDEXES" "IX"
      ,"MASTER"."SQL_INDEX_COLINF" "IC"
      ,"MASTER"."SQL_COLUMNS" "CL"
  WHERE "IX"."TABLE_SCHEMA" = ?
    AND "IX"."TABLE_NAME" = ?
    AND "IX"."INDEX_TYPE" = 'R'
    AND "IX"."INDEX_ID" = "IC"."INDEX_ID"
    AND "IC"."TABLE_SCHEMA" = "CL"."TABLE_SCHEMA"
    AND "IC"."TABLE_NAME" = "CL"."TABLE_NAME"
    AND "IC"."COLUMN_NAME" = "CL"."COLUMN_NAME"
    AND "CL"."IS_ARCHIVE_RANGE_COLUMN" = 'Y'

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を，2番目の入力要求には表識別子を入力してください。

(29)　実表の定義情報を調べる場合

実表を再定義する際にCREATE TABLE文の指定内容がわからない場合は，指定例1および指定例2のSELECT文をそれぞれ実行し，ディクショナリ表を検索してください。

なお，SELECT文をadbsqlコマンドで実行する場合は，-sオプションを指定してください。SELECT文の検索結果を，標準出力にCSV形式で出力できます。

メモ

adbsqlコマンドについては，マニュアルHADB　コマンドリファレンスのadbsql（SQLの実行）を参照してください。

指定例1

SELECT "MT"."TABLE_SCHEMA"                       AS "スキーマ名"
      ,"MT"."TABLE_NAME"                         AS "表識別子"
      ,"MT"."FREE_AREA"                          AS "表未使用領域指定"
      ,"MT"."FIX_TABLE"                          AS "FIX指定"
      ,"MT"."IS_BRANCH_ALL"                      AS "BRANCH ALL指定"
      ,"MT"."IS_CHUNK"                           AS "チャンク指定"
      ,"MT"."N_CHUNK_RESERVED"                   AS "チャンクの最大値"
      ,"MT"."IS_ARCHIVABLE"                      AS "チャンクアーカイブ指定"
      ,"MT"."ARCHIVE_DIRECTORY_PATH"             AS "アーカイブディレクトリ"
      ,"MT"."STORAGE_FORMAT"                     AS "表データの格納形式"
      ,"MR"."DBAREA_NAME"                        AS "表格納DBエリア名"
      ,"MC"."COLUMN_ID"                          AS "列ID"
      ,"MC"."COLUMN_NAME"                        AS "列名"
      ,CONVERT("MC"."DATA_TYPE_CODE", CHAR(9), '0XXXXXXX')
                                                 AS "データ型コード"
      ,CONVERT("MC"."DATA_LENGTH", CHAR(9), '0XXXXXXX')
                                                 AS "データ長"
      ,"MC"."IS_NULLABLE"                        AS "ナル値可否"
      ,"MC"."BRANCH"                             AS "ブランチ指定"
      ,"MC"."DEFAULT_VALUE"                      AS "既定値"
      ,"MC"."IS_DEFAULT_COLUMN"                  AS "DEFAULT句指定"
      ,"MC"."PRIMARY_KEY_COLUMN_SEQUENCE_NUMBER" AS "主キー構成順序"
      ,"MC"."IS_ARCHIVE_RANGE_COLUMN"            AS "アーカイブレンジ列指定"
      ,"MC"."COMPRESSION_TYPE"                   AS "列データの圧縮方式"
FROM "MASTER"."SQL_TABLES"    "MT"
    ,"MASTER"."SQL_DIV_TABLE" "MD"
    ,"MASTER"."SQL_DBAREAS"   "MR"
    ,"MASTER"."SQL_COLUMNS"   "MC"
WHERE "MT"."TABLE_SCHEMA" = ?
  AND "MT"."TABLE_NAME" = ?
  AND "MT"."TABLE_TYPE" = 'R'
  AND "MT"."TABLE_ID" = "MD"."TABLE_ID"
  AND "MD"."DBAREA_ID" = "MR"."DBAREA_ID"
  AND "MT"."TABLE_SCHEMA" = "MC"."TABLE_SCHEMA"
  AND "MT"."TABLE_NAME" = "MC"."TABLE_NAME"
ORDER BY "MT"."TABLE_SCHEMA" ASC
        ,"MT"."TABLE_NAME"   ASC
        ,"MC"."COLUMN_ID"    ASC

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を，2番目の入力要求には表識別子を入力してください。

指定例2

SELECT "MT"."TABLE_SCHEMA"            AS "スキーマ名"
      ,"MT"."TABLE_NAME"              AS "表識別子"
      ,"MT"."CONSTRAINT_SCHEMA"       AS "制約を含むスキーマ名"
      ,"MT"."CONSTRAINT_NAME"         AS "制約名"
      ,"MT"."CONSTRAINT_TYPE"         AS "制約の種別"
      ,"MC"."COLUMN_NAME"             AS "列名"
      ,"MC"."COLUMN_ORDER"            AS "定義順序"
      ,"MR"."REFERENCED_TABLE_SCHEMA" AS "被参照表のスキーマ名"
      ,"MR"."REFERENCED_TABLE_NAME"   AS "被参照表の表識別子"
      ,"MR"."IS_DISABLE"              AS "参照制約チェック抑止指定"
FROM "MASTER"."SQL_TABLE_CONSTRAINTS" "MT"
INNER JOIN "MASTER"."SQL_KEY_COLUMN_USAGE" "MC"
  ON "MT"."CONSTRAINT_SCHEMA" = "MC"."CONSTRAINT_SCHEMA"
 AND "MT"."CONSTRAINT_NAME" = "MC"."CONSTRAINT_NAME"
LEFT OUTER JOIN "MASTER"."SQL_REFERENTIAL_CONSTRAINTS" "MR"
  ON "MT"."CONSTRAINT_SCHEMA" = "MR"."CONSTRAINT_SCHEMA"
 AND "MT"."CONSTRAINT_NAME" = "MR"."CONSTRAINT_NAME"
WHERE "MT"."TABLE_SCHEMA" = ?
  AND "MT"."TABLE_NAME" = ?
ORDER BY "MT"."TABLE_SCHEMA"      ASC
        ,"MT"."TABLE_NAME"        ASC
        ,"MT"."CONSTRAINT_SCHEMA" ASC
        ,"MT"."CONSTRAINT_NAME"   ASC
        ,"MC"."COLUMN_ORDER"      ASC

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を，2番目の入力要求には表識別子を入力してください。

(30)　インデクスの定義情報を調べる場合

インデクスを再定義する際にCREATE INDEX文の指定内容がわからない場合は，指定例1または指定例2のSELECT文でディクショナリ表を検索してください。

なお，SELECT文をadbsqlコマンドで実行する場合は，-sオプションを指定してください。SELECT文の検索結果を，標準出力にCSV形式で出力できます。

メモ

adbsqlコマンドについては，マニュアルHADB　コマンドリファレンスのadbsql（SQLの実行）を参照してください。

指定例1（表名を入力してその表に定義されている全インデクスの定義情報を調べる場合）

SELECT "MI"."TABLE_SCHEMA"            AS "スキーマ名"
      ,"MI"."TABLE_NAME"              AS "表識別子"
      ,"MI"."INDEX_NAME"              AS "インデクス識別子"
      ,"MC"."INDEX_ORDER"             AS "インデクス構成列順序"
      ,"MC"."COLUMN_NAME"             AS "列名"
      ,"MC"."ASC_DESC"                AS "昇順・降順"
      ,"MI"."UNIQUE_TYPE"             AS "UNIQUE"
      ,"MI"."FREE_AREA"               AS "インデクス未使用領域指定"
      ,"MI"."INDEX_TYPE"              AS "インデクスタイプ指定"
      ,"MI"."IS_EXCLUDE_NULL_VALUES"  AS "ナル値除外指定"
      ,"MI"."IS_TEXT_CORRECTION_RULE" AS "テキストインデクス表記ゆれ補正指定"
      ,"MI"."IS_TEXT_WORDCONTEXT"     AS "テキストインデクスワード検索指定"
      ,"MI"."TEXT_DELIMITER_TYPE"     AS "テキストインデクス区切り文字指定"
      ,"MR"."DBAREA_NAME"             AS "インデクス格納DBエリア名"
FROM "MASTER"."SQL_INDEXES"      "MI"
    ,"MASTER"."SQL_DIV_INDEX"    "MD"
    ,"MASTER"."SQL_DBAREAS"      "MR"
    ,"MASTER"."SQL_INDEX_COLINF" "MC"
WHERE "MI"."TABLE_SCHEMA" = ?
  AND "MI"."TABLE_NAME" = ?
  AND "MI"."INDEX_ID" = "MD"."INDEX_ID"
  AND "MI"."INDEX_ID" = "MC"."INDEX_ID"
  AND "MD"."DBAREA_ID" = "MR"."DBAREA_ID"
ORDER BY "MI"."TABLE_SCHEMA" ASC
        ,"MI"."TABLE_NAME"   ASC
        ,"MI"."INDEX_NAME"   ASC
        ,"MC"."INDEX_ORDER"  ASC

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を，2番目の入力要求には表識別子を入力してください。

指定例2（インデクス名を入力してそのインデクスの定義情報を調べる場合）

SELECT "MI"."TABLE_SCHEMA"            AS "スキーマ名"
      ,"MI"."TABLE_NAME"              AS "表識別子"
      ,"MI"."INDEX_NAME"              AS "インデクス識別子"
      ,"MC"."INDEX_ORDER"             AS "インデクス構成列順序"
      ,"MC"."COLUMN_NAME"             AS "列名"
      ,"MC"."ASC_DESC"                AS "昇順・降順"
      ,"MI"."UNIQUE_TYPE"             AS "UNIQUE"
      ,"MI"."FREE_AREA"               AS "インデクス未使用領域指定"
      ,"MI"."INDEX_TYPE"              AS "インデクスタイプ指定"
      ,"MI"."IS_EXCLUDE_NULL_VALUES"  AS "NULL値除外指定"
      ,"MI"."IS_TEXT_CORRECTION_RULE" AS "テキストインデクス表記ゆれ補正指定"
      ,"MI"."IS_TEXT_WORDCONTEXT"     AS "テキストインデクスワード検索指定"
      ,"MI"."TEXT_DELIMITER_TYPE"     AS "テキストインデクス区切り文字指定"
      ,"MR"."DBAREA_NAME"             AS "インデクス格納DBエリア名"
FROM "MASTER"."SQL_INDEXES"      "MI"
    ,"MASTER"."SQL_DIV_INDEX"    "MD"
    ,"MASTER"."SQL_DBAREAS"      "MR"
    ,"MASTER"."SQL_INDEX_COLINF" "MC"
WHERE "MI"."TABLE_SCHEMA" = ?
  AND "MI"."INDEX_NAME" = ?
  AND "MI"."INDEX_ID" = "MD"."INDEX_ID"
  AND "MI"."INDEX_ID" = "MC"."INDEX_ID"
  AND "MD"."DBAREA_ID" = "MR"."DBAREA_ID"

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を，2番目の入力要求にはインデクス識別子を入力してください。

(31)　アーカイブレンジ列として指定する列にレンジインデクスが定義されているかどうかを調べる場合

ALTER TABLE文で，レギュラーマルチチャンク表をアーカイブマルチチャンク表に変更する際，アーカイブレンジ列として指定する列にレンジインデクスが定義されているかどうかを調べる必要があります。

アーカイブレンジ列として指定する列にレンジインデクスが定義されているかどうかを調べる場合は，次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "TABLE_SCHEMA","INDEX_NAME" FROM "MASTER"."SQL_INDEXES" "IX"
  WHERE "TABLE_SCHEMA" = ?
    AND "TABLE_NAME" = ?
    AND "INDEX_TYPE" = 'R'
    AND EXISTS(SELECT * FROM "MASTER"."SQL_INDEX_COLINF" "IC"
                 WHERE "IX"."TABLE_SCHEMA" = "IC"."TABLE_SCHEMA"
                   AND "IX"."INDEX_NAME" = "IC"."INDEX_NAME"
                   AND "IC"."COLUMN_NAME" = ?)

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。

最初の入力要求には，レギュラーマルチチャンク表のスキーマ名を入力してください。

2番目の入力要求には，レギュラーマルチチャンク表の表識別子を入力してください。

3番目の入力要求には，アーカイブレンジ列として指定する列の列名を入力してください。

(32)　ビュー表の定義情報を調べる場合

ビュー表を再定義する際に，CREATE VIEW文の指定内容がわからない場合は，次に示すSELECT文でディクショナリ表を検索してください。

なお，SELECT文をadbsqlコマンドで実行する場合は，-sオプションを指定してください。SELECT文の検索結果を，標準出力にCSV形式で出力できます。

メモ

adbsqlコマンドについては，マニュアルHADB　コマンドリファレンスのadbsql（SQLの実行）を参照してください。

指定例

SELECT "MV"."TABLE_SCHEMA"         AS "スキーマ名"
      ,"MV"."TABLE_NAME"           AS "表識別子"
      ,"MV"."VIEW_LEVEL"           AS "ビューレベル"
      ,"MS"."DEFINE_SOURCE"        AS "ビュー定義文"
      ,"ME"."DELETE_RESERVED_WORD" AS "削除予約語"
      ,"ME"."DEFINE_VR"            AS "定義バージョン"
FROM "MASTER"."SQL_VIEWS" "MV"
    ,"MASTER"."SQL_DEFINE_SOURCE" "MS"
    ,"MASTER"."SQL_DEFINE_ENVIRONMENT" "ME"
WHERE "MV"."TABLE_SCHEMA" = ?
  AND "MV"."TABLE_NAME" = ?
  AND "MV"."DEFINE_SOURCE_ID" = "MS"."SOURCE_ID"
  AND "MV"."VIEW_ID" = "ME"."RESOURCE_ID"

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはビュー表のスキーマ名を，2番目の入力要求にはビュー表の表識別子を入力してください。

検索結果の例

ビュー定義文に表示されている内容が，ビュー表V11（スキーマ名ADBUSER01）のCREATE VIEW文の指定内容です。

上記のSELECT文でディクショナリ表を検索したあとで，ビュー表を再定義する場合の注意事項を次に示します。

SELECT文の検索結果のうち，「"削除予約語"」がナル値ではない場合は，ビュー表を前回定義したときと同じ予約語削除の指定が，ビュー表の再定義時に必要になることがあります。

ALTER TABLE文による列名変更の影響で，ビュー表の無効化を解除する場合は，SELECT文の検索結果を基に作成する定義系SQLについて，列名の修正が必要になることがあります。

ALTER TABLE文による表名変更の影響で，ビュー表の無効化を解除する場合は，SELECT文の検索結果を基に作成する定義系SQLについて，表識別子の修正が必要になることがあります。

(33)　依存するビュー表の一覧，およびそれらのビュー表の定義情報を調べる場合

依存するビュー表の一覧と，それらのビュー表の定義情報を調べる場合は，次に示すSELECT文でディクショナリ表を検索してください。

なお，SELECT文をadbsqlコマンドで実行する場合は，-sオプションを指定してください。SELECT文の検索結果を，標準出力にCSV形式で出力できます。

メモ

adbsqlコマンドについては，マニュアルHADB　コマンドリファレンスのadbsql（SQLの実行）を参照してください。

指定例

SELECT "MV"."TABLE_SCHEMA"         AS "スキーマ名"
      ,"MV"."TABLE_NAME"           AS "表識別子"
      ,"MV"."IS_INVALID"           AS "無効状態"
      ,"MV"."VIEW_LEVEL"           AS "ビューレベル"
      ,"MS"."DEFINE_SOURCE"        AS "ビュー定義文"
      ,"ME"."DELETE_RESERVED_WORD" AS "削除予約語"
      ,"ME"."DEFINE_VR"            AS "定義バージョン"
 FROM  "MASTER"."SQL_VIEW_TABLE_USAGE" "MVU"
     ,"MASTER"."SQL_VIEWS" "MV"
     ,"MASTER"."SQL_DEFINE_SOURCE" "MS"
     ,"MASTER"."SQL_DEFINE_ENVIRONMENT" "ME"
 WHERE "MVU"."TABLE_SCHEMA"=?
   AND "MVU"."TABLE_NAME" = ?
   AND "MV"."TABLE_SCHEMA"     = "MVU"."VIEW_SCHEMA"
   AND "MV"."TABLE_NAME"       = "MVU"."VIEW_NAME"
   AND "MV"."DEFINE_SOURCE_ID" = "MS"."SOURCE_ID"
   AND "ME"."RESOURCE_TYPE"    = 'V'
   AND "MV"."VIEW_ID"          = "ME"."RESOURCE_ID"
 ORDER BY "ビューレベル" ASC

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求には表のスキーマ名を，2番目の入力要求には表の表識別子を入力してください。

指定した表に依存するビュー表の一覧と，それらのビュー表の定義情報が表示されます。

検索結果の例

上記のビュー表（V12，V11，V3）が，？パラメタで指定した表に依存するビュー表です。

ビュー定義文に表示されている内容が，各ビュー表のCREATE VIEW文の指定内容です。

上記のSELECT文でディクショナリ表を検索したあとで，ビュー表を再定義する場合の注意事項を次に示します。

SELECT文の検索結果のうち，「"削除予約語"」がナル値ではない場合は，ビュー表を前回定義したときと同じ予約語削除の指定が，ビュー表の再定義時に必要になることがあります。

ALTER TABLE文による列名変更の影響で，ビュー表の無効化を解除する場合は，SELECT文の検索結果を基に作成する定義系SQLについて，列名の修正が必要になることがあります。

ALTER TABLE文による表名変更の影響で，ビュー表の無効化を解除する場合は，SELECT文の検索結果を基に作成する定義系SQLについて，表識別子の修正が必要になることがあります。

(34)　依存するビュー表の一覧を調べる場合

依存するビュー表の一覧を調べる場合は，次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "MV"."TABLE_SCHEMA"         AS "スキーマ名"
      ,"MV"."TABLE_NAME"           AS "表識別子"
      ,"MV"."IS_INVALID"           AS "無効状態"
FROM  "MASTER"."SQL_VIEW_TABLE_USAGE" "MVU"
     ,"MASTER"."SQL_VIEWS" "MV"
WHERE "MVU"."TABLE_SCHEMA"=?
   AND "MVU"."TABLE_NAME" = ?
   AND "MV"."TABLE_SCHEMA"     = "MVU"."VIEW_SCHEMA"
   AND "MV"."TABLE_NAME"       = "MVU"."VIEW_NAME"

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求には表のスキーマ名を，2番目の入力要求には表の表識別子を入力してください。

指定した表に依存するビュー表の一覧が表示されます。

検索結果の例

上記のビュー表（V12，V3，V11）が，？パラメタで指定した表に依存するビュー表です。

(35)　テキストインデクスに指定したインデクスオプションを調べる場合

テキストインデクスに指定したインデクスオプションを調べる場合は，次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "TABLE_SCHEMA"
      ,"INDEX_NAME"
      ,"INDEX_TYPE"
      ,"IS_TEXT_CORRECTION_RULE"
      ,"IS_TEXT_WORDCONTEXT"
      ,"TEXT_DELIMITER_TYPE"
  FROM "MASTER"."SQL_INDEXES"
    WHERE "TABLE_SCHEMA" = ?
      AND "INDEX_NAME" = ?

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を，2番目の入力要求にはインデクス識別子を入力してください。

(36)　ビュー表の基表を調べる場合

ビュー表の基表を調べる場合は，次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "TABLE_SCHEMA","TABLE_NAME"
  FROM "MASTER"."SQL_VIEW_TABLE_USAGE"
    WHERE "VIEW_SCHEMA"=? AND "VIEW_NAME"=? AND "IS_DIRECT"='Y'

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはビュー表のスキーマ名を，2番目の入力要求にはビュー表の表識別子を入力してください。

(37)　監査人の認可識別子と監査人が持っている監査権限を調べる方法

次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "USER_NAME","AUDIT_ADMIN_PRIVILEGE","AUDIT_VIEWER_PRIVILEGE"
  FROM "MASTER"."SQL_USERS"
    WHERE "AUDIT_ADMIN_PRIVILEGE"='Y' OR "AUDIT_VIEWER_PRIVILEGE"='Y'

検索結果の例

USER_NAME      AUDIT_ADMIN_PRIVILEGE  AUDIT_VIEWER_PRIVILEGE
-------------  ---------------------  ----------------------
ADBAUDITADMIN                      Y                       N
ADBAUDITOR                         N                       Y

監査人の一覧が表示されます。

USER_NAME列には，監査人の認可識別子が表示されます。

AUDIT_ADMIN_PRIVILEGE列が'Y'の場合は，その監査人は監査管理権限を持っています。

AUDIT_VIEWER_PRIVILEGE列が'Y'の場合は，その監査人は監査参照権限を持っています。

(38)　adbinitコマンド実行時に指定した作業表用DBエリアのページサイズを調べる方法

次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "PAGE_SIZE"
  FROM "MASTER"."SQL_DBAREAS"
    WHERE "DBAREA_NAME"='ADBWRK'

adbinitコマンド実行時に指定した作業表用DBエリアのページサイズが，PAGE_SIZE列にバイト単位で出力されます。

(39)　更新行のカラム化機能の対象となる表を調べる方法（B-treeインデクスを定義していないカラムストア表を調べる方法）

次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "TABLE_SCHEMA","TABLE_NAME"
  FROM "MASTER"."SQL_TABLES"
    WHERE "STORAGE_FORMAT" = 'COLUMN'
      AND "TABLE_ID"
           NOT IN (
                   SELECT "TABLE_ID"
                     FROM "MASTER"."SQL_INDEXES"
                       WHERE "INDEX_TYPE" = 'B'
                   )

更新行のカラム化機能の対象となる表（B-treeインデクスを定義していないカラムストア表）の一覧が表示されます。

(40)　HADBユーザのユーザ認証方式を調べる方法

次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "AUTHENTICATION_TYPE" FROM "MASTER"."SQL_USERS"
  WHERE "USER_NAME" = ?

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。ユーザ認証方式を知りたいHADBユーザの認可識別子を入力してください。

検索結果が'DB'の場合は，データベース認証が使用されています。検索結果が'PAM'の場合は，PAM認証が使用されています。検索結果が'Keycloak'の場合は，Keycloak認証が使用されています。

(41)　暗号化対象のDBエリアの一覧を表示する方法

次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "DBAREA_ID","DBAREA_TYPE","DBAREA_NAME" FROM "MASTER"."SQL_DBAREAS"
  WHERE "IS_ENCRYPTED" = 'Y'
    ORDER BY "DBAREA_ID" ASC

上記のSELECT文を実行すると，暗号化対象のDBエリアの一覧（DBエリアID，DBエリアの種類，およびDBエリア名）が表示されます。

(42)　外部サーバを使用している外部表の一覧を調べる方法

次に示すSELECT文でディクショナリ表を検索してください。

指定例

SELECT "MS"."SERVER_OWNER","MS"."SERVER_NAME"
      ,"MT"."TABLE_SCHEMA","MT"."TABLE_NAME"
  FROM "MASTER"."SQL_FOREIGN_SERVERS" "MS","MASTER"."SQL_TABLES" "MT"
    WHERE "MS"."SERVER_NAME" = "MT"."SERVER_NAME"
      AND "MS"."SERVER_NAME" = ?
    ORDER BY "MT"."TABLE_NAME"

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。外部サーバ名を入力してください。

上記のSELECT文を実行すると，入力した外部サーバを使用している外部表の一覧が表示されます。

付録C　システム表

ここでは，システム表に格納されている情報，システム表に定義されているB-treeインデクス，およびシステム表の検索方法について説明します。

付録C.1　システム表の概要

システム表には，実表およびインデクスのコスト情報や，マルチチャンク表のチャンク情報が格納されます。

システム表は，実表とビュー表の2種類があります。

システム表（実表）

このマニュアルでは，システム表の実表を，システム表（実表）と表記しています。システム表（実表）のスキーマ名は，HADBになります。

システム表（ビュー表）

このマニュアルでは，システム表のビュー表を，システム表と表記しています。システム表のスキーマ名は，MASTERになります。

システム表（実表）とシステム表の関係を次の図に示します。

図C‒1　システム表（実表）とシステム表の関係

［説明］

実表およびインデクスのコスト情報や，マルチチャンク表のチャンク情報は，システム表（実表）に格納されます。システム表（実表）から検索用に作成されるビュー表が，システム表になります。

HADBユーザは，システム表を検索できます。しかし，システム表（実表）は検索できません。

HADBユーザがSELECT文でシステム表を検索することで，コスト情報の収集日時，チャンクの作成日時などの情報を確認できます。システム表を検索する場合は，スキーマ名にMASTERを指定してください。

重要

「付録C.2　STATUS_TABLESの内容」以降でシステム表の各列に格納されている情報を説明しています。システム表の各列のデータ型で，INTEGER型は8バイトの符号付き整数，SMALLINT型は4バイトの符号付き整数になります。整数データ型のデータ形式がデフォルト形式か，またはレガシー形式かに関係なく常にこのデータ形式になります。

(1)　システム表の一覧

システム表の一覧を次の表に示します。

表C‒1　システム表の一覧

項番

システム表の名称

格納されている情報

システム表に対応するシステム表（実表）の表ID

ビュー定義に含まれる副問合せの数※

外への参照の有無

1

STATUS_TABLES

実表に関するコスト情報が格納されています。1行に1実表分の情報が格納されています。

0x000200C9

1

○

2

STATUS_COLUMNS

列に関するコスト情報が格納されています。1行に1列分の情報が格納されています。

0x000200CA

1

○

3

STATUS_INDEXES

インデクスに関するコスト情報が格納されています。1行に1インデクス分の情報が格納されています。

なお，レンジインデクスのコスト情報は格納されません。

0x000200CB

1

○

4

STATUS_CHUNKS

マルチチャンク表に関するチャンク情報が格納されています。1行に1チャンク分の情報が格納されています。

0x000200CC

1

○

5

STATUS_SYNONYM_DICTIONARIES

同義語辞書に関する情報が格納されています。1行に1辞書分の情報が格納されています。

0x000200CD

0

×

（凡例）

○：システム表のビュー定義に，外への参照を行う副問合せを含みます。そのため，該当するシステム表は，マルチ集合値式の副問合せに指定できません。

×：システム表のビュー定義に，外への参照を行う副問合せを含みません。

注※

該当するシステム表をSQL文の副問合せに指定した場合に，副問合せの入れ子の数として加算する必要がある数を示しています。

(2)　システム表が作成されるタイミング

システム表は，次に示すタイミングで自動的に作成されます。

データベースの初期設定が完了したあとに，初めてHADBサーバを開始したとき

HADBサーバをバージョンアップしたとき

(3)　HADBユーザが参照できるシステム表の範囲

HADBユーザがシステム表を参照する際，持っている権限によって参照できる情報が異なります。HADBユーザが参照できるシステム表の情報を次の表に示します。

なお，システム表を基表に指定したビュー表の場合も，持っている権限によって参照できる情報が異なります。そのため，同じビュー表を検索しても，ビュー表を定義したHADBユーザと，ビュー表に対するアクセス権限を付与されたHADBユーザでは，参照できる情報が異なることがあります。

表C‒2　HADBユーザが参照できるシステム表の情報

システム表の名称

参照対象の情報

システム表を参照するHADBユーザが持っている権限

DBA権限

監査管理権限

アクセス権限

CONNECT権限

STATUS_TABLES

自分

○

○

○

○

他ユーザ

○

×

△※

×

MASTER

－

－

－

－

STATUS_COLUMNS

自分

○

○

○

○

他ユーザ

○

×

△※

×

MASTER

－

－

－

－

STATUS_INDEXES

自分

○

○

○

○

他ユーザ

○

×

△※

×

MASTER

－

－

－

－

STATUS_CHUNKS

自分

○

○

○

○

他ユーザ

○

×

△※

×

MASTER

－

－

－

－

STATUS_SYNONYM_DICTIONARIES

自分

○

○

○

○

他ユーザ

○

×

△※

×

MASTER

－

－

－

－

（凡例）

自分：自分が所有するスキーマおよびスキーマオブジェクトに関する情報

他ユーザ：ほかのHADBユーザが所有するスキーマおよびスキーマオブジェクトに関する情報

MASTER：ディクショナリ表およびシステム表に関する情報

○：参照できます。

△：条件付きで参照できます。

×：参照できません。

－：該当しません。

注※

アクセス権限を持っているスキーマオブジェクトに関する情報と，そのスキーマに関する情報については参照できます。

付録C.2　STATUS_TABLESの内容

STATUS_TABLESには，実表に関するコスト情報が格納されています。1行に1実表分の情報が格納されています。

STATUS_TABLESの内容を次の表に示します。

表C‒3　STATUS_TABLESの内容

項番

列名

データ型

格納されている情報

1

TABLE_SCHEMA

VARCHAR(100)

スキーマ名

2

TABLE_NAME

VARCHAR(100)

表識別子

3

COLLECT_TIME

TIMESTAMP

コスト情報の収集日時

4

N_ROW

INTEGER

処理対象表の行数

IS_N_ROW_COMPLETE列の値が'N'の場合，コスト情報の収集処理が打ち切られた時点で，分析が完了している行数が格納されます。

5

COLLECT_VR

CHAR(8)

コスト情報を収集したときのHADBサーバのバージョン※

6

IS_COMPLETE

CHAR(1)

コスト情報を収集した際に，「処理対象表に格納されているデータの特徴」の取得処理が完了しているかどうか※

'Y'：完了している

'N'：完了していない

コスト情報を収集する時間（コスト情報収集オプションadb_getcst_collect_timeの指定値）を超えたため，コスト情報の収集処理が途中で打ち切られています。

7

IS_N_ROW_COMPLETE

CHAR(1)

「処理対象表の行数」の取得処理が完了しているかどうか※

'Y'：完了している

'N'：完了していない

コスト情報を収集する時間（コスト情報収集オプションadb_getcst_collect_timeの指定値）を超えたため，コスト情報の収集処理が途中で打ち切られています。

注※

次の条件をすべて満たす表の場合，STATUS_TABLESのこの列にナル値が格納されます。

バージョン04-03より前のHADBサーバで，コスト情報を収集している表

バージョン04-03以降のHADBサーバでは，コスト情報を収集していない表

付録C.3　STATUS_COLUMNSの内容

STATUS_COLUMNSには，実表の列に関するコスト情報が格納されています。1行に1列分の情報が格納されています。

STATUS_COLUMNSの内容を次の表に示します。

表C‒4　STATUS_COLUMNSの内容

項番

列名

データ型

格納されている情報

1

TABLE_SCHEMA

VARCHAR(100)

スキーマ名

2

TABLE_NAME

VARCHAR(100)

表識別子

3

COLUMN_NAME

VARCHAR(100)

列名

4

DATA_TYPE_CODE

SMALLINT

列のデータ型

5

DATA_LENGTH

SMALLINT

列のデータ定義長

詳細については，「表B‒4　SQL_COLUMNSの内容」のDATA_LENGTHを参照してください。

6

COLUMN_VALUE_MAX

VARCHAR(100)

列の値の最大値

列のデータ型が配列型の場合，配列要素の値の最大値が格納されます。

IS_MAXMIN_COMPLETE列の値が'N'の場合，コスト情報の収集処理が打ち切られた時点で，処理対象となった列の値の最大値が格納されます。

列データがない場合，または列データがNULLだけの場合，この列にはナル値が格納されます。

7

COLUMN_VALUE_MIN

VARCHAR(100)

列の値の最小値

列のデータ型が配列型の場合，配列要素の値の最小値が格納されます。

IS_MAXMIN_COMPLETE列の値が'N'の場合，コスト情報の収集処理が打ち切られた時点で，処理対象となった列の値の最小値が格納されます。

列データがない場合，または列データがNULLだけの場合，この列にはナル値が格納されます。

8

N_NULL

INTEGER

ナル値の数

列のデータ型が配列型の場合，列値（配列要素の値ではありません）がナル値となる行数が格納されます。

この列が含まれる表に対応するSTATUS_TABLESのIS_COMPLETE列の値が'N'の場合，コスト情報の収集処理が打ち切られた時点で，分析が完了している処理対象列のナル値の数が格納されます。

9

IS_MAXMIN_COMPLETE

CHAR(1)

「列の値の最大値」，および「列の値の最小値」の取得処理が完了しているかどうか※1

'Y'：完了している

'N'：完了していない

コスト情報を収集する時間（コスト情報収集オプションadb_getcst_collect_timeの指定値）を超えたため，コスト情報の収集処理が途中で打ち切られています。

10

MAX_ELEMENT

SMALLINT

配列型の列の最大要素数※2

配列型の列の場合，最大要素数が格納されます。配列型以外の列の場合，1が格納されます。

11

ARRAY_DATA_LENGTH_AVG

SMALLINT

配列要素のデータ長の平均値

可変長のデータの場合は，実データ長の平均値が格納されます。配列要素の値がナル値の場合は，その配列要素は平均値の計算に含まれません。

すべての配列データが次のどちらかの条件に該当する場合は，この列には0が格納されます。

配列要素の値がすべてナル値の場合

空の配列データの場合

なお，次のどれかの条件に該当する場合は，この列にはナル値が格納されます。

配列型以外の列の場合

列データがない場合

列データがナル値だけの場合

12

N_ARRAY_NULL_ELEMENT

INTEGER

配列要素にナル値を含む行数

次のどれかの条件に該当する場合は，この列にはナル値が格納されます。

配列型以外の列の場合

列データがない場合

列データがナル値だけの場合

13

N_ARRAY_ELEMENT_AVG

SMALLINT

配列データの配列要素数の平均値

次のどれかの条件に該当する場合は，この列にはナル値が格納されます。

配列型以外の列の場合

列データがない場合

列データがナル値だけの場合

注※1

次の条件をすべて満たす表の場合，STATUS_COLUMNSのIS_MAXMIN_COMPLETE列にはナル値が格納されます。

バージョン04-03より前のHADBサーバで，コスト情報を収集している表

バージョン04-03以降のHADBサーバでは，コスト情報を収集していない表

注※2

次の条件をすべて満たす表の場合，STATUS_COLUMNSのMAX_ELEMENT列にはナル値が格納されます。

バージョン05-04より前のHADBサーバで，コスト情報を収集している表

バージョン05-04以降のHADBサーバでは，コスト情報を収集していない表

付録C.4　STATUS_INDEXESの内容

STATUS_INDEXESには，インデクスに関するコスト情報が格納されています。1行に1インデクス分の情報が格納されています。

STATUS_INDEXESの内容を次の表に示します。

表C‒5　STATUS_INDEXESの内容

項番

列名

データ型

格納されている情報

1

TABLE_SCHEMA

VARCHAR(100)

スキーマ名

2

TABLE_NAME

VARCHAR(100)

表識別子

3

INDEX_NAME

VARCHAR(100)

インデクス識別子

4

INDEX_TYPE

CHAR(1)

インデクスの種別

'B'：B-treeインデクス

'T'：テキストインデクス

5

COLLECT_TIME

TIMESTAMP

コスト情報の収集日時

付録C.5　STATUS_CHUNKSの内容

STATUS_CHUNKSには，マルチチャンク表に関するチャンク情報が格納されています。1行に1チャンク分の情報が格納されています。

STATUS_CHUNKSの内容を次の表に示します。

表C‒6　STATUS_CHUNKSの内容

項番

列名

データ型

格納されている情報

1

TABLE_SCHEMA

VARCHAR(100)

スキーマ名

2

TABLE_NAME

VARCHAR(100)

表識別子

3

CHUNK_ID

INTEGER

チャンクID

4

CREATE_TIME

TIMESTAMP

チャンクの作成日時

チャンクをマージしている場合は，マージ元チャンクのうち，最も古い「チャンクの作成日時」が格納されます。

adbimportコマンドで待機状態で作成されたあと，adbchgchunkstatusコマンドで通常状態に変更されたチャンクの場合は，「adbchgchunkstatusコマンドを実行した日時」が格納されます。

adbchgchunkstatusコマンドのカレントチャンク切り替え動作によって作成されたチャンクの場合は，「adbchgchunkstatusコマンドを実行した日時」が格納されます。

なお，次に示す場合はナル値が格納されます。

adbimportコマンドで待機状態のチャンクを作成した場合

5

SWAP_TIME

TIMESTAMP

カレントチャンクが切り替わった日時

チャンクをマージしている場合は，マージ元チャンクのうち，最も新しい「カレントチャンクが切り替わった日時」が格納されます。

adbimportコマンドで待機状態で作成されたあと，adbchgchunkstatusコマンドで通常状態に変更されたチャンクであり，かつ通常状態に変更されたときにカレントチャンクに切り替わらなかったチャンクの場合は，「adbchgchunkstatusコマンドを実行した日時」が格納されます。

なお，次に示す場合はナル値が格納されます。

新たなチャンクが作成されていない場合（カレントチャンクが切り替わっていない場合）

チャンクをマージしたときに，マージ元チャンクにカレントチャンクが含まれていた場合

adbimportコマンドで待機状態のチャンクを作成した場合

6

CHUNK_COMMENT

VARCHAR(1024)

チャンクに設定されたコメント

コメントが設定されていない場合は，ナル値が格納されます。

7

CHUNK_STATUS

VARCHAR(32)

チャンクの状態

'Normal'

通常状態

'Pending Delete'

削除仕掛中

'Wait'

待機状態

8

ARCHIVE_STATUS

VARCHAR(32)

アーカイブ状態のチャンクかどうか

'Archive'

アーカイブ状態のチャンク

ナル値

アーカイブ状態ではないチャンク

9

STORAGE_FORMAT

VARCHAR(32)

チャンク内のデータ格納形式

'COLUMN'

カラムストア形式

'ROW'

ローストア形式

付録C.6　STATUS_SYNONYM_DICTIONARIESの内容

STATUS_SYNONYM_DICTIONARIESには，同義語辞書に関する情報が格納されています。1行に1辞書分の情報が格納されています。

STATUS_SYNONYM_DICTIONARIESの内容を次の表に示します。

表C‒7　STATUS_SYNONYM_DICTIONARIESの内容

項番

列名

データ型

格納されている情報

1

SYNONYM_DICTIONARY_NAME

VARCHAR(120)

同義語辞書名

2

CREATE_TIME

TIMESTAMP

同義語辞書の作成日時

3

BINARY_PATH

VARCHAR(510)

同義語辞書ファイルの格納ディレクトリのパス名

4

BINARY_FILE_NAME

VARCHAR(130)

同義語辞書ファイル名

5

BINARY_FILE_NAME_IGNORECASE

VARCHAR(130)

表記ゆれ補正検索（IGNORECASE指定）に対応している同義語辞書ファイル名

表記ゆれ補正オプションにCASESENSITIVEを指定した場合は，ナル値が格納されます。

また，表記ゆれ補正オプションの指定を省略した場合も，ナル値が格納されます。

6

BINARY_FILE_NAME_SORTCODE

VARCHAR(130)

表記ゆれ補正検索（SORTCODE指定）に対応している同義語辞書ファイル名

表記ゆれ補正オプションにCASESENSITIVEを指定した場合は，ナル値が格納されます。

また，表記ゆれ補正オプションの指定を省略した場合も，ナル値が格納されます。

7

CORRECTION_RULE

VARCHAR(32)

表記ゆれ補正オプションの指定値

'CASESENSITIVE'

表記ゆれ補正検索の指定なし

'CORRECTIONRULE'

表記ゆれ補正検索の指定あり

表記ゆれ補正オプションの指定を省略した場合は，'CASESENSITIVE'が格納されます。

8

N_SYNONYM_GROUP

SMALLINT

同義語グループ数

9

SYNONYM_DICTIONARY_COMMENT

VARCHAR(1024)

コメント

コメントを指定していない場合は，ナル値が格納されます。

付録C.7　システム表の参照時に排他が取得される実表

SQL文を実行してシステム表を参照すると，ディクショナリ表（実表）およびシステム表（実表）の排他が取得されます。システム表の参照時に排他が取得される実表については，「2.10.6　ディクショナリ表およびシステム表の参照時に排他が取得される実表」を参照してください。

付録C.8　システム表（実表）のB-treeインデクス

システム表（実表）には，次の表に示すB-treeインデクスが定義されています。

表C‒8　システム表（実表）のB-treeインデクスの一覧

項番

システム表

インデクス構成列

B-treeインデクス名

1

STATUS_TABLES

TABLE_SCHEMA

STATUSINDEXM01

2

TABLE_NAME

3

STATUS_COLUMNS

TABLE_SCHEMA

STATUSINDEXM02

4

TABLE_NAME

5

COLUMN_NAME

6

STATUS_INDEXES

TABLE_SCHEMA

STATUSINDEXM03

7

INDEX_NAME

8

TABLE_SCHEMA

STATUSINDEXM04

9

TABLE_NAME

10

STATUS_CHUNKS

TABLE_SCHEMA

STATUSINDEXM05

11

TABLE_NAME

12

CHUNK_ID

13

STATUS_SYNONYM_DICTIONARIES

SYNONYM_DICTIONARY_NAME

STATUSINDEXS01

付録C.9　システム表の検索

SELECT文でシステム表を検索できます。システム表を検索することで，コスト情報およびチャンクの情報を確認できます。システム表の認可識別子はMASTERです。

なお，システム表を検索したら，すぐにCOMMIT文を実行してトランザクションを終了させてください。COMMIT文を実行しないと，システム表の排他が解放されません。ただし，システム表を検索したあとで，adbsqlコマンドを終了する場合，システム表の排他は解放されるため，COMMIT文の実行は不要です。

また，システム表を検索するときに，REPEATABLE READのトランザクションからシステム表を検索すると，更新前の古いシステム表の情報を参照するおそれがあります。そのため，次のどちらかの方法で検索してください。

READ COMMITTEDのトランザクションからシステム表を検索する

adbsqlサブコマンドの#SET TRAN_ISOLVでREAD_COMMITTEDを指定したあとで，システム表を検索してください。

検索の直前にCOMMIT文を実行する

REPEATABLE READのトランザクションからシステム表を検索する場合は，COMMIT文を実行したあとで，システム表を検索してください。

システム表を検索するHADBユーザがDBA権限を持っているかどうかによって，検索できる情報が異なります。詳細については，「付録C.1　システム表の概要」の「(3)　HADBユーザが参照できるシステム表の範囲」を参照してください。

システム表を検索するSELECT文の指定例を次に示します。

(1)　コスト情報を収集した全実表の表名と収集日時を調べる場合

次に示すSELECT文でシステム表を検索してください。

指定例

SELECT "TABLE_SCHEMA","TABLE_NAME","COLLECT_TIME"
  FROM "MASTER"."STATUS_TABLES"

(2)　コスト情報を収集した全インデクスのインデクス名と収集日時を調べる場合

次に示すSELECT文でシステム表を検索してください。

指定例

SELECT "TABLE_SCHEMA","INDEX_NAME","COLLECT_TIME"
  FROM "MASTER"."STATUS_INDEXES"

(3)　表名から表内の全チャンクの情報を調べる場合

次に示すSELECT文でシステム表を検索してください。

指定例

SELECT "CHUNK_ID","CHUNK_COMMENT","CHUNK_STATUS","CREATE_TIME","SWAP_TIME"
  FROM "MASTER"."STATUS_CHUNKS" WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=?

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を，2番目の入力要求には表識別子を入力してください。

(4)　チャンクIDからチャンクの情報を調べる場合

次に示すSELECT文でシステム表を検索してください。

指定例

SELECT * FROM "MASTER"."STATUS_CHUNKS"
  WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=? AND "CHUNK_ID"=?

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を，2番目の入力要求には表識別子を，3番目の入力要求にはチャンクIDを入力してください。

(5)　指定した期間に作成されたチャンクを調べる場合

次に示すSELECT文でシステム表を検索してください。

指定例

SELECT * FROM "MASTER"."STATUS_CHUNKS"
  WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=?
    AND "CREATE_TIME" BETWEEN ? AND ?

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を，2番目の入力要求には表識別子を，3番目の入力要求には期間の開始日時を，4番目の入力要求には期間の終了日時を入力してください。

上記のSELECT文では，次のチャンクが検索対象となります。

指定した期間に作成されたチャンク

バックグラウンドインポートで待機状態のチャンクとして作成されたあとで，指定した期間にadbchgchunkstatusコマンドでチャンクの状態を通常状態に変更されたチャンク

ただし，次のチャンクは検索対象外です。

指定した期間にバックグラウンドインポートで待機状態のチャンクとして作成されたチャンク

(6)　チャンクの作成日時から最新のチャンクIDを調べる場合

次に示すSELECT文でシステム表を検索してください。

指定例

SELECT "CHUNK_ID" FROM "MASTER"."STATUS_CHUNKS" TC
  WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=?
    AND "CREATE_TIME"=(SELECT MAX("CREATE_TIME")
        FROM "MASTER"."STATUS_CHUNKS"
          WHERE TC."TABLE_SCHEMA"="TABLE_SCHEMA"
            AND TC."TABLE_NAME"="TABLE_NAME")

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を，2番目の入力要求には表識別子を入力してください。

上記のSELECT文では，次の日時のうち，最も新しい日時のチャンクが検索対象となります。

チャンクが作成された日時

バックグラウンドインポートで待機状態のチャンクとして作成されたあとで，adbchgchunkstatusコマンドで通常状態のチャンクに変更されたときの日時

ただし，次のチャンクは検索対象外です。

過去に通常状態になったことがない待機状態のチャンク

(7)　チャンクの作成日時から最古のチャンクIDを調べる場合

次に示すSELECT文でシステム表を検索してください。

指定例

SELECT "CHUNK_ID" FROM "MASTER"."STATUS_CHUNKS" TC
  WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=?
    AND "CREATE_TIME"=(SELECT MIN("CREATE_TIME")
        FROM "MASTER"."STATUS_CHUNKS"
          WHERE TC."TABLE_SCHEMA"="TABLE_SCHEMA"
            AND TC."TABLE_NAME"="TABLE_NAME")

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を，2番目の入力要求には表識別子を入力してください。

上記のSELECT文では，次の日時のうち，最も古い日時のチャンクが検索対象となります。

チャンクが作成された日時

バックグラウンドインポートで待機状態のチャンクとして作成されたあとで，adbchgchunkstatusコマンドで通常状態のチャンクに変更されたときの日時

ただし，次のチャンクは検索対象外です。

過去に通常状態になったことがない待機状態のチャンク

(8)　指定した期間内に作成されたチャンクやカレントチャンクから切り替わったチャンクのチャンクIDを調べる場合

次に示すSELECT文でシステム表を検索してください。

指定例

SELECT "CHUNK_ID" FROM "MASTER"."STATUS_CHUNKS"
  WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=?
    AND (("CREATE_TIME" BETWEEN ? AND ?)
      OR ("SWAP_TIME" BETWEEN ? AND ?))

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を，2番目の入力要求には表識別子を，3番目の入力要求にはチャンクの作成日時の開始日時を，4番目の入力要求にはチャンクの作成日時の終了日時を，5番目の入力要求にはカレントチャンクが切り替わった日時の開始日時を，6番目の入力要求にはカレントチャンクが切り替わった日時の終了日時を入力してください。

上記のSELECT文では，次のチャンクが対象となります。

指定した期間内に作成されたチャンク

指定した期間内にカレントチャンクから切り替わったチャンク

バックグラウンドインポートで待機状態のチャンクとして作成されたあとで，指定した期間内にadbchgchunkstatusコマンドでチャンクの状態が通常状態に変更されたチャンク

ただし，次のチャンクは検索対象外です。

過去に通常状態になったことがない待機状態のチャンク

(9)　指定した日時にデータが格納された可能性があるチャンクを調べる場合

次に示すSELECT文でシステム表を検索してください。

指定例

SELECT "CHUNK_ID" FROM "MASTER"."STATUS_CHUNKS"
  WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=?
     AND "CREATE_TIME" <= ?
       AND ("SWAP_TIME" IS NULL OR "SWAP_TIME" >= ?)

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を，2番目の入力要求には表識別子を，3番目と4番目の入力要求には指定の日時を入力してください。

上記のSELECT文では，次のチャンクが対象となります。

指定した日時以前に作成されたカレントチャンク

指定した日時以前に作成されて，かつ指定した日時以降にカレントチャンクから切り替わったチャンク

バックグラウンドインポートで待機状態のチャンクとして作成されたあとで，指定した日時にadbchgchunkstatusコマンドでチャンクの状態が通常状態に変更されたチャンク

ただし，次のチャンクは検索対象外です。

過去に通常状態になったことがない待機状態のチャンク

(10)　作成されたチャンクの数を調べる場合

次に示すSELECT文でシステム表を検索してください。

指定例

SELECT COUNT(*) FROM MASTER.STATUS_CHUNKS
  WHERE "TABLE_SCHEMA" = ? AND "TABLE_NAME" = ?

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を，2番目の入力要求には表識別子を入力してください。

(11)　指定したコメントが含まれているチャンクを調べる場合

次に示すSELECT文でシステム表を検索してください。

指定例

SELECT "CHUNK_ID","CHUNK_COMMENT" FROM "MASTER"."STATUS_CHUNKS"
  WHERE "TABLE_SCHEMA"= ? AND "TABLE_NAME"= ? AND "CHUNK_COMMENT" LIKE ?

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を，2番目の入力要求には表識別子を，3番目の入力要求にはチャンクに指定したコメントを入力してください。

(12)　削除仕掛中のチャンクを調べる場合

次に示すSELECT文でシステム表を検索してください。

指定例

SELECT "CHUNK_ID" FROM "MASTER"."STATUS_CHUNKS"
  WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=?
    AND "CHUNK_STATUS"='Pending Delete'

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を，2番目の入力要求には表識別子を入力してください。

(13)　通常状態のチャンクを調べる場合

次に示すSELECT文でシステム表を検索してください。

指定例

SELECT "CHUNK_ID" FROM "MASTER"."STATUS_CHUNKS"
  WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=?
    AND "CHUNK_STATUS"='Normal'

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を，2番目の入力要求には表識別子を入力してください。

(14)　待機状態のチャンクを調べる場合

次に示すSELECT文でシステム表を検索してください。

指定例

SELECT "CHUNK_ID" FROM "MASTER"."STATUS_CHUNKS"
  WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=?
    AND "CHUNK_STATUS"='Wait'

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を，2番目の入力要求には表識別子を入力してください。

(15)　チャンクがアーカイブ状態かどうかを調べる場合

次に示すSELECT文でシステム表を検索してください。

指定例

SELECT "ARCHIVE_STATUS" FROM "MASTER"."STATUS_CHUNKS"
  WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=? AND "CHUNK_ID"=?

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を，2番目の入力要求には表識別子を，3番目の入力要求にはチャンクIDを入力してください。

SELECT文の実行結果にArchiveが出力された場合は，チャンクがアーカイブ状態であることを意味しています。

(16)　カレントチャンクの情報を調べる場合

次に示すSELECT文でシステム表を検索してください。

指定例

SELECT * FROM "MASTER"."STATUS_CHUNKS"
  WHERE "TABLE_SCHEMA"=? AND "TABLE_NAME"=?
    AND "CREATE_TIME" IS NOT NULL AND "SWAP_TIME" IS NULL

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。最初の入力要求にはスキーマ名を，2番目の入力要求には表識別子を入力してください。

(17)　すべての同義語辞書に関する情報を調べる場合

次に示すSELECT文でシステム表を検索してください。

指定例

SELECT * FROM "MASTER"."STATUS_SYNONYM_DICTIONARIES"

検索結果の例

説明のない出力項目については，「付録C.6　STATUS_SYNONYM_DICTIONARIESの内容」で説明されているSTATUS_SYNONYM_DICTIONARIESの列情報の説明を参照してください。

上記の検索結果の表示形式は，実際に出力される表示形式とは異なるところがあります。

(18)　特定の同義語辞書に関する情報を調べる場合

次に示すSELECT文でシステム表を検索してください。

指定例

SELECT * FROM "MASTER"."STATUS_SYNONYM_DICTIONARIES"
  WHERE "SYNONYM_DICTIONARY_NAME"=?

adbsqlコマンドで上記のSELECT文を実行した場合，？パラメタに対する入力データの入力要求があります。同義語辞書名を入力してください。

検索結果の例

説明のない出力項目については，「付録C.6　STATUS_SYNONYM_DICTIONARIESの内容」で説明されているSTATUS_SYNONYM_DICTIONARIESの列情報の説明を参照してください。

上記の検索結果の表示形式は，実際に出力される表示形式とは異なるところがあります。

付録D　HADBの最大値と最小値

ここでは，システム構成およびデータベースに関する最大値と最小値について，一覧で示します。

付録D.1　システム構成に関する最大値と最小値

HADBのシステム構成に関する最大値と最小値を次の表に示します。

表D‒1　HADBのシステム構成に関する最大値と最小値

項番

項目

最小値

最大値

単位

1

総HADBユーザ数

1

30,000

ユーザ

2

総DBエリア数

5

1,024

個

3

マスタディレクトリ用DBエリア数

1

個

4

ディクショナリ用DBエリア数

1

個

5

システム表用DBエリア数

1

個

6

作業表用DBエリア数

1

12※1

個

7

データ用DBエリア数

1

1,014

個

8

DBエリア名

1

30

バイト

9

DBエリアファイル相対パス名

1

100

バイト

10

ディクショナリ用DBエリアの容量

－

16

テラバイト

11

システム表用DBエリアの容量

－

16

テラバイト

12

作業表用DBエリアの容量

－

作業表用DBエリアのページサイズ×4,294,967,295

バイト

13

データ用DBエリアの容量

－

128※3

エクサバイト

14

データ用DBエリアのDBエリアファイルサイズ

－

128※4

ペタバイト

15

データ用DBエリアの1DBエリア中の構成ファイル数

1

1,024

個

16

1作業表のサイズ

－

作業表用DBエリアのページサイズ×4,294,967,295

バイト

17

HADBユーザが定義できる実表と外部表の合計数

0

30,000

個

18

HADBユーザが定義できるビュー表の数

0

30,000

個

19

HADBユーザが定義できるインデクス数

0

8,192

個

20

1DBエリア中の実表の数

0

200

個

21

1DBエリア中のインデクス数

0

400

個

22

最大文ハンドル数

4,095

個

23

最大同時接続数※2

1,024

個

24

ページサイズ（作業表用DBエリア以外）

4,096

32,768

バイト

25

作業表用DBエリアのページサイズ

32,768

33,554,432

バイト

26

マスタログファイル数

1

個

27

ユーザログファイル数

1

10,240

個

28

1DBエリア中のチャンク数

1

30,000

個

29

1つの実表に作成できるチャンク数

1

30,000

個

30

マルチノード機能を使用する場合のノード数

2

12

ノード

31

プライマリノード数

1

1

ノード

32

セカンダリノード数（HAモニタありのマルチノード構成の場合）

1

3

ノード

33

セカンダリノード数（HAモニタなしのマルチノード構成の場合）

0

0

ノード

34

ワーカーノード数（HAモニタありのマルチノード構成の場合）

0

10

ノード

35

ワーカーノード数（HAモニタなしのマルチノード構成の場合）

1

11

ノード

36

HADBユーザが登録できる同義語辞書の数

0

50

個

（凡例）

－：該当しません。

注※1

マルチノード機能を使用する場合の最大値になります。各ノードに作業表用DBエリアを1個作成できるため，最大12個となります。

注※2

マルチノード機能を使用する場合，マルチノード構成の全HADBサーバの最大同時接続数になります。

注※3

クラウドストレージ機能を使用している場合，データ用DBエリアの容量の最大値は1エクサバイトになります。

注※4

クラウドストレージ機能を使用している場合，データ用DBエリアの仮想DBエリアファイルの容量の最大値は1ペタバイトになります。

付録D.2　データベースに関する最大値と最小値

HADBのデータベースに関する最大値と最小値を次の表に示します。

表D‒2　HADBのデータベースに関する最大値と最小値

項番

項目

最小値

最大値

単位

1

文字データの長さ（定義長）

CHAR

1

32,000

バイト

2

VARCHAR

1

64,000※3

バイト

3

STRING

32,000,000

バイト

4

数データの長さ

BIGINT

8

バイト

5

INTEGER※4

4

バイト

6

SMALLINT※5

2

バイト

7

DOUBLE PRECISION

8

バイト

8

FLOAT

9

REAL

4

バイト

10

数データの値の範囲

BIGINT

-9,223,372,036,854,775,808

9,223,372,036,854,775,807

−

11

INTEGER※6

-2,147,483,648

2,147,483,647

12

SMALLINT※7

-32,768

32,767

13

固定小数点データの精度

DECIMAL

1

38

桁

14

NUMERIC

15

固定小数点データの位取り

DECIMAL

0

38

桁

16

NUMERIC

17

浮動小数点データの仮数部

DOUBLE PRECISION

17

桁

18

FLOAT

19

REAL

20

浮動小数点データの指数部

DOUBLE PRECISION

3

桁

21

FLOAT

22

REAL

23

日付データの値の範囲

DATE

DATE'0001-01-01'

DATE'9999-12-31'

−

24

時刻データの値の範囲

TIME

TIME'00:00:00.000000000000'

TIME'23:59:59.999999999999'

−

25

時刻印データの値の範囲

TIMESTAMP

TIMESTAMP'0001-01-01 00:00:00.000000000000'

TIMESTAMP'9999-12-31 23:59:59.999999999999'

−

26

時刻データの小数秒精度

TIME

0

12

桁

27

時刻印データの小数秒精度

TIMESTAMP

0

12

桁

28

バイナリデータの長さ（定義長）

BINARY

1

32,000

バイト

29

VARBINARY

1

32,000

バイト

30

論理データの長さ

BOOLEAN

1

バイト

31

UUIDデータの長さ

UUID

16

バイト

32

配列データの最大要素数

ARRAY

2

30,000

個

33

ラベル付き間隔に指定できる値の範囲（YEAR(S)）

-9,998

9,998

−

34

ラベル付き間隔に指定できる値の範囲（MONTH(S)）

-119,987

119,987

−

35

ラベル付き間隔に指定できる値の範囲（DAY(S)）

-3,652,058

3,652,058

−

36

ラベル付き間隔に指定できる値の範囲（HOUR(S)）

-87,649,415

87,649,415

−

37

ラベル付き間隔に指定できる値の範囲（MINUTE(S)）

-5,258,964,959

5,258,964,959

−

38

ラベル付き間隔に指定できる値の範囲（SECOND(S)）

-315,537,897,599

315,537,897,599

−

39

ラベル付き間隔に指定できる値の範囲（MILLISECOND(S)）

-315,537,897,599,999

315,537,897,599,999

−

40

ラベル付き間隔に指定できる値の範囲（MICROSECOND(S)）

-315,537,897,599,999,999

315,537,897,599,999,999

−

41

ラベル付き間隔に指定できる値の範囲（NANOSECOND(S)）

-9,223,372,036,854,775,807

9,223,372,036,854,775,807

−

42

ラベル付き間隔に指定できる値の範囲（PICOSECOND(S)）

-9,223,372,036,854,775,807

9,223,372,036,854,775,807

−

43

表中の列数

1

4,000

列

44

外部表中のパーティションキー列数

0

16

列

45

表中のインデクス数

0

64

個

46

表中の外部キーの数

0

255

個

47

主キーを参照する外部キーの数

0

255

個

48

制約の列数

1

16

列

49

B-treeインデクスの構成列数

1

16

列

50

レンジインデクスの構成列数

1

列

51

テキストインデクスの構成列数

1

列

52

レンジインデクスを定義するCHARACTER型の列の長さ

1

32

バイト

53

表のページ内未使用領域の比率

0

99

％（パーセント）

54

インデクスのページ内未使用領域の比率

0

99

％（パーセント）

55

識別子の長さ（認可識別子，スキーマ識別子，表識別子，インデクス識別子，列名，相関名，制約名，問合せ名，フィールド名，外部サーバ名）

1

100

バイト

56

SQLテキスト長

1

16,000,000※1

バイト

57

SQL文中の表数

1

2,048

個

58

集合演算の数

すべてUNIONの場合

0

1,023

個

59

EXCEPTまたはINTERSECTを含む場合

0

63

個

60

SQL文中のFULL OUTER JOINの数

0

63

個

61

問合せ指定と表値構成子の指定数

1

1,024

個

62

ソートキーの数

0

64

個

63

グループ化列数

0

64

個

64

集まり導出表の列指定の指定数

1

4,000

個

65

表の結合数

1

64

個

66

表値構成子中の行値構成子の指定数

1

30,000

個

67

行値構成子中の行値構成子要素の指定数

1

4,000

個

68

選択式の数

スカラ副問合せ

1

1

個

69

IN述語に指定する表副問合せ

1

1

個

70

EXISTS述語に指定する表副問合せ

1

4,000

個

71

導出表の表副問合せ

1

4,000

個

72

INSERT〜SELECT

1

4,000

個

73

上記以外

1

4,000

個

74

挿入列数

1

4,000

個

75

更新列数

1

4,000

個

76

？パラメタ数

0

1,000

個

77

IN述語中の値式数

1

30,000

個

78

最大行数

0

18,446,744,073,709,551,615

件

79

値式中のスカラ演算と集合関数の数

0

500

個

80

値式を展開したあとの値式中のスカラ演算と集合関数の数

0

10,000

個

81

スカラ関数，ウィンドウ関数およびCASE式の入れ子の数

0

15

個

82

副問合せの入れ子の数

0

32

個

83

ウィンドウ関数のウィンドウ分割句に指定する値式の数

0

16

個

84

SQL文中のスカラ関数RANDOMCURSORの識別番号の種類数

0

1,000

個

85

SQL文中のスカラ関数RANDOMROWの識別番号の種類数

0

1,000

個

86

配列要素参照の添え字の指定値

1

30,000

−

87

配列要素参照の識別番号の指定値

1

255

−

88

作業表の最大行長

−

33,554,364※2

バイト

89

再帰的問合せの最大再帰数に指定できる値の範囲

0

32,767

−

90

問合せ指定中に集合関数として指定した，被集約引数が異なるDISTINCT集合関数の数

0

64

個

91

問合せ指定中のARRAY_AGG集合関数の指定数

0

256

個

92

問合せ指定中のLISTAGG集合関数の指定数

0

64

個

93

SQL文中の？パラメタのデータ長の合計

0

32,000,000

バイト

94

ビュー表のビューレベルの範囲

1

33

−

95

SQLメインノード数

1

1

ノード

96

SQLサブノード数

1

11

ノード

（凡例）

−：該当しません。

注※1

CREATE VIEW文の場合は，64,000バイトが最大値になります。

注※2

作業表用DBエリアのページサイズから68バイトを引いた値が最大値になります。

注※3

次に示す個所に，データ長が32,000バイトを超えるVARCHAR型は指定できません。

ALTER TABLE文の列定義に指定するデータ型

CREATE TABLE文の列定義に指定するデータ型

表関数列リストに指定するデータ型

スカラ関数CASTに指定する変換後のデータ型

スカラ関数CONVERTに指定する変換後のデータ型

注※4

整数データ型のデータ形式がレガシー形式の場合，データ長が8バイトになります。

注※5

整数データ型のデータ形式がレガシー形式の場合，データ長が4バイトになります。

注※6

整数データ型のデータ形式がレガシー形式の場合，最小値は-9,223,372,036,854,775,808，最大値は9,223,372,036,854,775,807になります。

注※7

整数データ型のデータ形式がレガシー形式の場合，最小値は-2,147,483,648，最大値は2,147,483,647になります。

付録E　HADBサーバで起動するプロセス

adbstartコマンドを実行すると，次に示す名称のHADBサーバのサーバプロセスが起動します。

adbsrvd

起動されるサーバプロセス数は1つで，adbstopコマンドを実行するとサーバプロセスが終了します。

メモ

HADBサーバのサーバプロセス（adbsrvd）の実行ユーザは，adbstartコマンドを実行したOSユーザ（HADB管理者）になります。

HADBのコマンドを実行すると，コマンドプロセスが起動します。コマンドプロセスの名称は，コマンドの名称と同じになります。

用語解説

（数字）

1セグメントの容量

1セグメントの大きさをメガバイト単位で表すときの用語です。

次に示すコマンドのオプションで，データ用DBエリアの1セグメントの容量をメガバイト単位で指定します。

adbinitコマンドの初期設定オプションadbinitdbareaの-sオプション

adbmodareaコマンドのDBエリア追加・変更オプションadbaddareaの-sオプション

（英字）

CONNECT権限

HADBユーザがHADBサーバに接続する際に必要となるユーザ権限のことです。HADBサーバを利用するための前提となるユーザ権限であり，ほかの権限を持っていても，CONNECT権限を持っていないとHADBサーバに接続できません。

DBA権限

次の操作を実行する際に必要となるユーザ権限のことです。

HADBユーザの管理

ユーザ権限およびスキーマ操作権限の付与と取り消し

監査権限の付与

暗号管理権限の付与と取り消し

外部サーバの管理

DBエリア

表やインデクス，およびそれらの定義情報などを格納する論理的な領域のことです。DBエリアは用途によって次のように分類されます。

マスタディレクトリ用DBエリア

ディクショナリ用DBエリア

システム表用DBエリア

作業表用DBエリア

データ用DBエリア

DBエリア暗号化機能

次のDBエリアおよびシステムログファイル内のデータを暗号化する機能です。

データ用DBエリア

ディクショナリ用DBエリア

システム表用DBエリア

作業表用DBエリア

DBエリアファイル

DBエリアを構成するファイルです。

DBディレクトリ

DBエリアファイルやシステムログファイルなど，データベースに関するファイル群を格納するディレクトリのことです。

HADB暗号鍵

データ暗号鍵を暗号化するために使用する暗号鍵です。HADBシステムで1つだけ存在します。

HADB暗号鍵利用パスワード

HADB暗号鍵ファイルを利用する際に必要となるパスワードです。次の操作をするときなどにHADB暗号鍵利用パスワードの入力を求められます。

HADBサーバの開始

HADB暗号鍵の更新

HADBオプション

次の機能を使用する場合に必要となるHADBのプログラムです。

クラウドストレージ機能

adboptinstallコマンドでHADBオプションをインストールすると，クラウドストレージ機能で使用するクラウドストレージ機能用ライブラリがインストールされます。

HADB管理グループ

サーバマシンのOSに設定するHADB専用のグループのことです。HADB管理グループは，次に示すOSユーザが所属するプライマリグループになります。

HADB管理者

HADB管理グループに所属するOSユーザ

HADB管理グループに所属するOSユーザ

HADB管理者とは別に，HADBを管理するOSユーザのことです。HADB管理者が所有するサーバディレクトリおよびDBディレクトリにアクセスできます。また，HADBの一部のコマンドを実行できます。

HADB管理者

HADBを管理するOSユーザのことです。HADB管理者はサーバディレクトリおよびDBディレクトリの所有者になります。また，HADBのすべてのコマンドを実行できます。

HADBクライアント

クライアント・サーバシステムで動作するHADBの，クライアント側システムのことです。

HADBサーバ

クライアント・サーバシステムで動作するHADBの，サーバ側システムのことです。

HADBユーザ

HADBサーバに接続して，データのインポート，データの検索・更新，HADBユーザの管理などを実施できるユーザのことです。HADBユーザには，各種操作の実施に必要な権限を付与できます。

HAモニタありのマルチノード構成

プライマリノードおよびセカンダリノードにHAモニタをインストールして構築したマルチノード構成のことです。HAモニタありのマルチノード構成は，プライマリノード，セカンダリノード，およびワーカーノードの3種類のノードで構成されます。

HAモニタなしのマルチノード構成

HAモニタをインストールしないで構築したマルチノード構成のことです。HAモニタなしのマルチノード構成は，プライマリノードおよびワーカーノードの2種類のノードで構成されます。HAモニタがないため，セカンダリノードは設定できません。

Keycloak認証

Keycloakの認証機能を使用して，外部ユーザのユーザ名とパスワード（KeycloakサーバやLDAPサーバなどに登録されているユーザ名とパスワード）でユーザ認証を行うユーザ認証方式のことです。

OSユーザ

OSにログインして，OSの機能を利用できるユーザのことです。HADBサーバの運用で使用するOSユーザには，次の3種類があります。

スーパユーザ

HADB管理者

HADB管理グループに所属するOSユーザ

PAM認証

外部ユーザのユーザ名（OSユーザ名やLDAPユーザ名など）とそのパスワードでユーザ認証を行うユーザ認証方式のことです。

S3オブジェクト

Amazon S3またはAmazon S3互換オブジェクトストレージのオブジェクトのことです。HADBのマニュアルでは，Amazon S3またはAmazon S3互換オブジェクトストレージのオブジェクトをS3オブジェクトと表記しています。

S3バケット

Amazon S3またはAmazon S3互換オブジェクトストレージのバケットのことです。HADBのマニュアルでは，Amazon S3またはAmazon S3互換オブジェクトストレージのバケットをS3バケットと表記しています。

SQLサブノード

SQLパラレル実行機能を適用した検索系SQLを実行した際に，SQLメインノードからの要求を受けてSQL文の処理の一部を実行するノードのことです。プライマリノードのHADBサーバがSQLサブノードを決定します。

SQL処理リアルスレッド

SQL実行時に使用される処理リアルスレッドのことです。

SQLトレース機能

SQL文の実行履歴情報（SQLトレース情報）をファイル（SQLトレースファイル）に出力する機能のことです。

SQLトレース情報

SQLトレース機能によって取得されるSQL文の実行履歴情報のことです。実行したSQL文の実行時間や，アクセスパスの情報などがSQLトレース情報として出力されます。SQLトレース情報は次のことに使用します。

SQL文のエラー原因の調査

SQL文のチューニング

SQLパラレル実行機能

検索系SQL（SELECT文）の処理を複数のノードで並列実行する機能のことです。SQLパラレル実行機能を使用することによって，検索系SQLの処理時間が短縮できます。SQLパラレル実行機能は，マルチノード機能を使用している場合に利用できます。

なお，検索系SQLのCOPY文には，SQLパラレル実行機能は適用されません。

SQLメインノード

SQLパラレル実行機能を適用した検索系SQLを実行した際に，検索系SQLの処理を制御するノードのことです。また，HADBクライアントとのデータのやり取りも実行します。プライマリノードのHADBサーバがSQLメインノードを決定します。

（ア行）

アーカイブ状態

アーカイブされたデータがアーカイブファイルに格納されている状態のことです。

アーカイブディレクトリ

アーカイブファイルを格納するディレクトリです。

アーカイブファイル

アーカイブされたデータを格納しているファイルです。

アーカイブマルチチャンク表

バックグラウンドインポート機能およびチャンクアーカイブ機能を使用できる実表のことです。

アーカイブレンジ列

アーカイブマルチチャンク表の検索時に，検索範囲を絞り込むために使用する列のことです。アーカイブマルチチャンク表には，アーカイブレンジ列を必ず定義する必要があります。日時データの列などを，アーカイブレンジ列として使用できます。

アクセス権限

スキーマオブジェクト（実表，ビュー表，外部表）にアクセスする際に必要となる権限のことです。スキーマオブジェクトのデータをSQL文で検索したり，スキーマオブジェクトをコマンドで操作したりするには，スキーマオブジェクトに対するアクセス権限が必要になります。アクセス権限には，SELECT権限，INSERT権限，IMPORT TABLE権限など，幾つかの種類があります。

アンロード

無効な行データを除いたディクショナリ表またはシステム表のデータを，アンロードファイルに出力する処理のことです。

アンロードファイル

ディクショナリ表およびシステム表の再編成処理中に一時的に作成されるファイルのことです。

依存権限

ほかのHADBユーザから付与されたアクセス権限のことです。

（例）

HADBユーザAが表X.T1に対して持っているアクセス権限をP1とします。

HADBユーザAがHADBユーザBに付与した，表X.T1に対するアクセス権限をP2とします。

HADBユーザBがHADBユーザCに付与した，表X.T1に対するアクセス権限をP3とします。

この場合，アクセス権限P1の依存権限は，アクセス権限P2，P3になります。アクセス権限P2の依存権限は，アクセス権限P3になります。アクセス権限P3には，依存権限はありません。

例えば，アクセス権限P1が取り消された場合，依存権限であるアクセス権限P2とP3も取り消されます。アクセス権限P2が取り消された場合，依存権限であるアクセス権限P3も取り消されます。

依存するビュー表

DROP TABLE文による実表の削除，DROP VIEW文によるビュー表の削除，またはDROP FOREIGN TABLE文による外部表の削除などによって，影響を受けるビュー表のことです。依存するビュー表の例を次の図に示します。

依存するビュー表の例

［説明］

実表T1に依存するビュー表は，ビュー表V1，V2，V4になります。

実表T2に依存するビュー表は，ビュー表V1，V2，V4になります。

実表T3に依存するビュー表は，ビュー表V2，V4になります。

実表T4に依存するビュー表は，ビュー表V3，V4になります。

ビュー表V1に依存するビュー表は，ビュー表V2，V4になります。

ビュー表V2に依存するビュー表は，ビュー表V4になります。

ビュー表V3に依存するビュー表は，ビュー表V4になります。

ビュー表V4に依存するビュー表はありません。

実表の削除，ビュー表の削除，および外部表の削除以外にも，依存するビュー表が影響を受ける操作があります。依存するビュー表が影響を受ける操作については，「2.1.2　ビュー表」の「(3)　ビュー表の無効化」を参照してください。

メモ

外部表を基表にしている場合は，上記の例の実表を外部表に読み替えてください。

一意性制約

列値（または複数の列の列値の組み合わせ）が重複することを許さない制約のことです。

インデクス再作成

実表に定義されたインデクスを再作成することです。インデクス再作成には，adbidxrebuildコマンドを使用します。

（カ行）

外部キー

ほかの実表の主キーを参照する列（または複数の列の組み合わせ）のことです。主キーと外部キーによって，データベース内の表と表の関係を定義できます。

外部サーバ

外部データを管理するサーバに名称を付けて概念化したものです。物理的な実体があるサーバではありません。定義系SQLのCREATE SERVER文で外部サーバを定義します。その際，外部サーバの名称や，HADBサーバが外部データを格納しているオブジェクトストレージ（Amazon S3またはAmazon S3互換オブジェクトストレージ）に接続する際に使用する認証情報などを指定します。

外部データ

データ用DBエリアに格納されていないデータのことです。外部表または表関数導出表を使用すると，実表やビュー表と同様にSELECT文で外部データを検索することができます。

外部データアクセス用ライブラリ

外部表の検索とCOPY文を実行する際に必要となるライブラリです。

外部表

外部のオブジェクトストレージ（Amazon S3またはAmazon S3互換オブジェクトストレージ）またはファイルストレージに格納されている外部データを読み込んで作成される表のことです。定義系SQLのCREATE FOREIGN TABLE文で外部表を定義します。外部表は参照専用の表で，SQL文やコマンドによるデータの追加，更新，および削除はできません。

仮想DBエリアファイル

Amazon S3互換オブジェクトストレージを使用している場合は，AWS環境の場合をお読みください。その際，Amazon S3をAmazon S3互換オブジェクトストレージに読み替えてください。

AWS環境の場合

DBエリア（作業表用DBエリアを除く）のデータを格納しているS3オブジェクト群を格納する概念的なDBエリアファイルのことです。クラウドストレージ機能を使用する場合，DBエリアファイルは物理的に作成されません。DBエリアのデータは，Amazon S3のバケット内のS3オブジェクトに格納されます。各DBエリアのデータを格納するS3オブジェクト群は，概念的なDBエリアファイルである仮想DBエリアファイルに格納されます。仮想DBエリアファイルの概要を次の図に示します。

仮想DBエリアファイルの概要（AWS環境の場合）

メモ

adbinitコマンドによるデータベースの初期設定後は，各DBエリアの仮想DBエリアファイル数は1になります。

データ用DBエリアを拡張すると，拡張したデータ用DBエリアの仮想DBエリアファイルが1つ増えます。上記の図のデータ用DBエリア2は，仮想DBエリアファイルが3つあるため，DBエリアの拡張を2回実行しています。

Azure環境の場合

DBエリア（作業表用DBエリアを除く）のデータを格納しているBLOB群を格納する概念的なDBエリアファイルのことです。クラウドストレージ機能を使用する場合，DBエリアファイルは物理的に作成されません。DBエリアのデータは，Azure Blob Storageのコンテナー内のBLOBに格納されます。各DBエリアのデータを格納するBLOB群は，概念的なDBエリアファイルである仮想DBエリアファイルに格納されます。仮想DBエリアファイルの概要を次の図に示します。

仮想DBエリアファイルの概要（Azure環境の場合）

メモ

adbinitコマンドによるデータベースの初期設定後は，各DBエリアの仮想DBエリアファイル数は1になります。

データ用DBエリアを拡張すると，拡張したデータ用DBエリアの仮想DBエリアファイルが1つ増えます。上記の図のデータ用DBエリア2は，仮想DBエリアファイルが3つあるため，DBエリアの拡張を2回実行しています。

カラムストア形式

データを列単位でデータベースに格納する形式のことをカラムストア形式といいます。カラムストア形式の場合，表の各列のデータが列ごとにまとまってデータベースに格納されます。

カラムストア表

表データの格納形式にカラムストア形式を選択して定義した表のことです。表データの格納形式には，ローストア形式とカラムストア形式の2つがあり，表を定義するときに表データの格納形式を指定することができます。

カレントチャンク

作成されたチャンクのうち，データが追加されるチャンクのことです。実表内に1つだけ存在します。

次の場合に，カレントチャンクが変更されます。

バックグラウンドインポートを実行して新たなチャンクが作成された場合

カレントチャンクを含む複数のチャンクをマージした場合

また，次の場合に，カレントチャンクが変更されることがあります。

チャンクの状態を変更した場合

監査権限

監査権限とは，次に示す2つの権限の総称です。監査証跡機能を使用する場合に，監査権限が必要になります。

監査管理権限

監査管理権限とは，監査証跡機能の運用を行う際に必要となる権限です。

監査参照権限

監査参照権限とは，監査証跡を参照する際に必要となる権限です。

監査証跡機能

HADBユーザがデータベースにアクセスした際のアクセス記録や，HADBユーザが実行したコマンドの操作記録などを，監査証跡としてファイルに出力する機能のことです。例えば，HADBユーザが表にアクセスした場合，アクセスした時刻，アクセスしたHADBユーザの認可識別子，操作内容，操作対象のスキーマオブジェクトなどが，操作記録（監査証跡）として出力されます。出力された監査証跡を参照すると，「いつ」，「誰が」，「どのような操作を実行し」，「どのスキーマオブジェクトにアクセスしたか」，などを調査できます。

監査証跡ファイル

HADBユーザがデータベースにアクセスした際の操作記録や，HADBユーザが実行したコマンドの実行記録などが格納されている監査証跡を出力するファイルのことです。

監査対象イベント

監査証跡の出力対象となる操作のことです。監査対象イベントには，監査証跡機能が有効な場合は監査証跡が必ず出力される必須監査イベントと，監査証跡を出力するかどうかを選択できる選択監査イベントがあります。

監査対象定義

監査証跡を出力するイベント，HADBユーザ，スキーマオブジェクトの組み合わせを定義したものです。CREATE AUDIT文で定義した情報を監査対象定義といいます。

監査人

監査権限を持っているHADBユーザのことです。監査人は，監査証跡機能の運用や，出力された監査証跡を調査してデータベースの監査を実施します。

擬似スレッド

1つのリアルスレッド上で複数の処理を並行に実行させるために，HADB上で実装されているスレッドのことです。1つのリアルスレッド上で，複数の擬似スレッドが動作することで処理を並列に実行します（同時に処理を実行できる擬似スレッドは1つだけです）。

既定のキャッシュグループ

adbcachegrpオペランドに-oオプションを指定して定義したキャッシュグループのことです。既定のキャッシュグループには，adbcachegrpオペランドの-nオプションに指定したデータ用DBエリア以外の全データ用DBエリアが割り当てられます。既定のキャッシュグループは，必ず1つ定義する必要があります。

基本行

分岐行が作成される場合に，分岐先の情報を持つ行のことです。分岐行が作成されない場合は，基本行には1行のデータが格納されます。

キャッシュグループ

キャッシュファイルを格納する仮想のグループのことです。キャッシュグループは，サーバ定義のadbcachegrpオペランドで定義します。キャッシュグループを定義すると，キャッシュファイルの作成や削除処理がキャッシュグループ単位で実行されます。例えば，キャッシュグループAとキャッシュグループBという2つのキャッシュグループを定義したとします。キャッシュグループAのキャッシュファイルの総容量の上限を超えた場合，キャッシュグループAの既存のキャッシュファイルを削除し，そのあとに新たなキャッシュファイルをキャッシュグループAに作成します。キャッシュグループBは，キャッシュグループAの処理の影響を受けません。各キャッシュグループに作成できるキャッシュファイルの総容量の上限は，adbcachegrpオペランドの-sオプションで指定します。

キャッシュファイル

オブジェクトストレージにAmazon S3またはAmazon S3互換オブジェクトストレージを使用している場合

S3バケット内の一部のS3オブジェクトのデータを格納するファイルです。1つのキャッシュファイルには，1つのS3オブジェクトのデータが格納されます。対応するキャッシュファイルとS3オブジェクトには，同じデータが格納されます。Amazon S3を使用している場合，キャッシュファイルは，HADBサーバによってEBSまたはインスタンスストア上のレギュラーファイルとして作成されます。Amazon S3互換オブジェクトストレージを使用している場合，キャッシュファイルは，HADBサーバによってオンプレミス環境下のレギュラーファイルとして作成されます。

オブジェクトストレージにAzure Blob Storageを使用している場合

コンテナー内の一部のBLOBのデータを格納するファイルです。1つのキャッシュファイルには，1つのBLOBのデータが格納されます。対応するキャッシュファイルとBLOBには，同じデータが格納されます。キャッシュファイルは，HADBサーバによってマネージドディスク上のレギュラーファイルとして作成されます。

共有ディスクのSCSIリザーブ

共有ディスクのデータを保護するための，HAモニタの機能です。HAモニタによる共有ディスクのデータ保護方法には，次のどちらかを選択する必要があります。推奨する方法は，系のリセットです。

系のリセット

共有ディスクのSCSIリザーブ

系のリセットおよび共有ディスクのSCSIリザーブの詳細については，マニュアルHAモニタ Linux(R)(x86)編の系のリセットおよび共有ディスクのSCSIリザーブを参照してください。

クライアントグループ機能

複数のHADBクライアントを1つのグループにまとめて，グループで使用する接続数や処理リアルスレッド数の範囲を設定する機能のことです。

クライアント定義

HADBクライアントの実行環境を指定する定義のことです。

クライアント定義の集中管理機能

各HADBクライアントで個々に管理しているクライアント定義を，HADBサーバ上で一括管理できる機能のことです。

クライアントディレクトリ

1つのクライアントプロセスに関するファイル群を格納するディレクトリのことです。

クラウドストレージ機能

クラウドベンダが提供しているオブジェクトストレージのオブジェクトに，次のDBエリアのデータを格納できるようにする機能です。

データ用DBエリア

マスタディレクトリ用DBエリア

ディクショナリ用DBエリア

システム表用DBエリア

クラウドストレージ機能で使用できるオブジェクトストレージを次に示します。

Amazon S3

バケット内のオブジェクトに上記のDBエリアのデータを格納できます。

Amazon S3互換オブジェクトストレージ

バケット内のオブジェクトに上記のDBエリアのデータを格納できます。

Azure Blob Storage

コンテナー内のBLOBに上記のDBエリアのデータを格納できます。

クラウドストレージ機能のシステムディレクトリ対応オプション

システムディレクトリ（$DBDIR/ADBSYS）下にある次のファイルをオブジェクトストレージに格納するかどうかを決めるオプションです。

システムログファイル

ステータスファイル

クラウドストレージ機能のシステムディレクトリ対応オプションを有効にすると，上記のファイルがオブジェクトストレージに格納されます。

クラウドストレージ機能用ライブラリ

クラウドストレージ機能を使用する場合に必要となるライブラリの総称です。クラウドストレージ機能用ライブラリには，AWS用のクラウドストレージ機能用ライブラリと，Azure用のクラウドストレージ機能用ライブラリがあります。

オブジェクトストレージにAmazon S3またはAmazon S3互換オブジェクトストレージを使用する場合は，AWS用のクラウドストレージ機能用ライブラリが必要になります。

オブジェクトストレージにAzure Blob Storageを使用する場合は，Azure用のクラウドストレージ機能用ライブラリが必要になります。

AWS用のクラウドストレージ機能用ライブラリ

次の3つのライブラリの総称です。

libadbcldstge-aws.so（Amazon S3用ライブラリ）

libaws-cpp-sdk-s3-crt.so（AWS SDK for C++ ライブラリ）

libaws-cpp-sdk-core.so（AWS SDK for C++ ライブラリ）

AWS用のHADBオプションをインストールすると，上記のAWS用のクラウドストレージ機能用ライブラリがインストールされます。

Azure用のクラウドストレージ機能用ライブラリ

次の5つのライブラリの総称です。

libadbcldstge-azure.so（Azure Blob Storage用ライブラリ）

libazure-storage-blobs.so（Azure SDK for C++ BLOBストレージライブラリ）

libazure-storage-common.so（Azure SDK for C++ ストレージ共通ライブラリ）

libazure-identity.so（Azure SDK for C++ 資格情報ライブラリ）

libazure-core.so（Azure SDK for C++ コアライブラリ）

Azure用のHADBオプションをインストールすると，上記のAzure用のクラウドストレージ機能用ライブラリがインストールされます。

グローバルバッファ

ディスク上のDBエリアに格納されているデータを入出力するためのバッファです。グローバルバッファは共有メモリ上に確保されます。

系のリセット

共有ディスクのデータを保護するための，HAモニタの機能です。HAモニタによる共有ディスクのデータ保護方法には，次のどちらかを選択する必要があります。推奨する方法は，系のリセットです。

系のリセット

共有ディスクのSCSIリザーブ

系のリセットおよび共有ディスクのSCSIリザーブの詳細については，マニュアルHAモニタ Linux(R)(x86)編の系のリセットおよび共有ディスクのSCSIリザーブを参照してください。

権限

HADBユーザが，HADBサーバに対して各種操作を実行する際に必要となります。HADBの権限は，大きく分けて次に示す3種類があります。

ユーザ権限

スキーマ操作権限

アクセス権限

HADBユーザは，複数の権限を持つことができます。必要な権限を持っていない場合，操作を実行できません。

検索系SQL

表のデータを検索するときに使用するSQL文のことです。SELECT文とCOPY文が該当します。

更新行のカラム化機能

カラムストア表にローストア形式で格納されたデータを，HADBが自動的にカラムストア形式に変換する機能のことです。カラムストア表に対してINSERT文またはUPDATE文を実行すると，追加・更新されたデータはローストア形式でカラムストア表に格納されます。この機能を有効にすると，ローストア形式で格納されたデータが，自動的にカラムストア形式に変換されます。

更新系SQL

表のデータを追加，削除および更新するときに使用するSQL文の総称です。次に示すSQL文が該当します。

INSERT文

DELETE文

UPDATE文

PURGE CHUNK文

TRUNCATE TABLE文

コールドスタンバイ構成

業務処理を行うサーバマシン（実行系）のほかに，待機用のサーバマシン（待機系）を準備するシステム構成のことです。実行系で障害が発生して業務が続行できない場合，待機系を実行系に切り替えて，業務を続行します。

コスト情報

HADBサーバが表の検索処理を最適化するために，実表，B-treeインデクスおよびテキストインデクスから収集した検索方法に関する情報のことです。adbgetcstコマンドを実行すると，コスト情報が収集されて，システム表に格納されます。

コネクションハンドル

コネクション（HADBクライアントとHADBサーバとの接続）を管理するオブジェクトです。

コマンドステータスファイル

コマンドの実行状況や中断状態などを管理するファイルです。

（サ行）

サーバディレクトリ

HADBサーバの実行に必要なファイルを格納するディレクトリのことです。1つのサーバプロセスに関するファイル群を格納します。

作業表用DBエリア

SQLの実行時にHADBが内部的に作成する表（作業表）を格納するDBエリアです。

削除仕掛中のチャンク

チャンクのマージ処理が中断した場合に，削除されないで残ってしまった不要なチャンク（マージ元チャンク）のことです。または，ディクショナリ表（実表）およびシステム表（実表）の再編成処理が中断した場合に，削除されないで残ってしまった不要なチャンク（再編成前のデータ）のことです。

チャンクに含まれるデータは，操作系SQLの対象外となります。ただし，PURGE CHUNK文とTRUNCATE TABLE文によるチャンクの削除はできます。なお，adbchgchunkstatusコマンドで，チャンクの状態を変更できません。

参照制約

表と表の関係（データの参照整合性）を保つ制約のことです。実表の定義時に，特定の列（外部キー）に定義できます。

参照表

参照制約，および外部キーを定義した実表のことです。

システムディレクトリ

次に示すファイルを格納しているディレクトリ（$DBDIR/ADBSYSディレクトリ）のことです。

システムログファイル

ステータスファイル

コマンドステータスファイル

なお，クラウドストレージ機能のシステムディレクトリ対応オプションを有効にしている場合，システムログファイルおよびステータスファイルは，$DBDIR/ADBSYSディレクトリではなく，オブジェクトストレージに格納されます。

システム表

システム表（実表）から検索用に作成されるビュー表のことです。システム表のスキーマ名はMASTERです。

システム表の再編成

システム表内の無効な行データの領域を解放することです。

システム表用DBエリア

システム表およびシステム表のインデクスを格納するDBエリアです。

システム表（実表）

次の情報を格納する表です。

実表，B-treeインデクスおよびテキストインデクスのコスト情報

マルチチャンク表のチャンク情報

システム表（実表）をHADBユーザは検索できません。システム表（実表）に格納された情報を確認する場合，システム表を検索します。

システムログ

HADBが自動的に取得するデータベースの更新履歴情報です。システムログは，障害発生時にデータベースを回復するために使用されます。

システムログファイル

システムログが出力されるファイルのことです。

主キー

表中の行を一意（ユニーク）に識別するための列（または複数の列の組み合わせ）のことです。主キーを定義することによって，実表のデータの一意性を保つことができます。主キーを定義すると，主キーを構成する列には，次の制約が適用されます。

一意性制約

非ナル値制約

処理リアルスレッド

HADBサーバの開始時に確保される，SQL文，データインポートの実行時などに使用されるリアルスレッドのことです。

シングルチャンク表

1表に1つのチャンクだけを作成できる実表のことです。シングルチャンク表の場合，バックグラウンドインポート機能，およびチャンクアーカイブ機能を使用できません。

スキーマ

表やインデクスを包括する論理的な概念です。HADBでは，1HADBユーザは1つのスキーマだけを所有できます。

スキーマオブジェクト

スキーマに定義できる要素のことです。実表，ビュー表，外部表や，B-treeインデクス，テキストインデクス，レンジインデクスが該当します。

スキーマ操作権限

HADBユーザのスキーマを管理するときに必要となる権限のことです。スキーマ操作権限の種類を次に示します。

スキーマ定義権限

スキーマ定義権限

HADBユーザがスキーマ，表，およびインデクスを定義・削除する際に必要となるスキーマ操作権限のことです。

ステータスファイル

HADBサーバの稼働状況や終了モードなどを管理するファイルです。

整数データ型のデータ形式

HADBでは，整数データ型のデータ形式が次の表に示すようにデフォルト形式とレガシー形式の2つがあり，どちらかを選択できます。

整数データ型の種類

整数データ型のデータ形式

デフォルト形式

レガシー形式

BIGINT

8バイトの符号付き整数

INTEGER

4バイトの符号付き整数

8バイトの符号付き整数

SMALLINT

2バイトの符号付き整数

4バイトの符号付き整数

上記の表に示すとおりデフォルト形式とレガシー形式では，INTEGER型とSMALLINT型のデータ形式が異なります。通常はデフォルト形式が適用されます。レガシー形式を適用したい場合は，データベースの初期設定時に実行するadbinitコマンドで，adb_init_integer_formatオペランドにLEGACYを指定してください。

メモ

HADBサーバのバージョンアップ後も，整数データ型のデータ形式は引き継がれます。

レガシー形式は，HADB 06-00より前のデータ形式と同じです。HADBサーバを06-00より前のバージョンからバージョンアップした場合，整数データ型のデータ形式はレガシー形式のまま引き継がれます。

デフォルト形式とレガシー形式で仕様差がある場合，レガシー形式の仕様を「整数データ型のデータ形式がレガシー形式の場合」と表記して説明します。

セカンダリノード

マルチノード機能で，検索系SQLや一部のコマンドを処理するHADBサーバがあるノードのことです。HAモニタの待機系に対応しています。

プライマリノードでノード障害が発生した場合，セカンダリノードの1つがプライマリノードに切り替わります。

なお，セカンダリノードは，HAモニタありのマルチノード構成の場合に設定できます。HAモニタなしのマルチノード構成の場合はセカンダリノードを設定できません。

セグメント

データの格納単位の1つで，ファイル内の領域を表やインデクスに割り当てる単位です。セグメントは連続したページから構成されます。

セグメントサイズ

1セグメントの大きさをページ数単位で表すときの用語です。

セグメントサイズは，「1セグメントの容量÷ページサイズ」で求められます。1セグメントの容量については，「1セグメントの容量」を参照してください。

操作系SQL

表のデータを操作するときに使用するSQL文（検索系SQL，および更新系SQL）の総称です。

ソートコード

ISO/IEC14651:2011で規定されている文字の並べ替えや比較を行う際に使用するコードのことです。表記ゆれ補正検索で，表記のゆれを補正して検索する際に使用します。

外への参照列

外側の問合せのFROM句に指定した表を，副問合せ中の探索条件で参照している列のことです。副問合せ中の探索条件で参照することを，外への参照といいます。外への参照列の例を次の図に示します

外への参照列の例

（タ行）

待機状態のチャンク

チャンクに含まれるデータが操作系SQLの対象外となるチャンクのことです。ただし，PURGE CHUNK文とTRUNCATE TABLE文によるチャンクの削除はできます。バックグラウンドインポートを実行するときに，作成されるチャンクの状態を指定することで作成されます。また，adbchgchunkstatusコマンドで，通常状態のチャンクに変更できます。なお，待機状態のチャンクは，カレントチャンクにはなりません。

チャンク

1回のバックグラウンドインポートで実表に格納したデータの固まりのことです。バックグラウンドインポートで格納された実表のデータと，バックグラウンドインポート時に作成されたインデクスのデータで構成されます。バックグラウンドインポートを実行するたびに，新たなチャンクが作成されます。

チャンクには，次に示す状態があります。

通常状態のチャンク

待機状態のチャンク

削除仕掛中のチャンク

また，複数のチャンクをマージすることもできます（チャンクのマージ）。

チャンクID

チャンクごとに付与される番号のことです。設定される番号は，実表内で一意となります。

チャンクアーカイブ機能

チャンク内のデータを圧縮し，アーカイブしたデータをアーカイブファイルに格納する機能のことです。

チャンクのアーカイブ

チャンクアーカイブ機能によってチャンク内のデータを圧縮し，アーカイブしたデータをアーカイブファイルに格納することを意味しています。

チャンクのアンアーカイブ

チャンクアーカイブ機能によってアーカイブファイル内のデータを伸長し，データ用DBエリア内にデータを格納することを意味しています。このとき，インデクスも再作成されます。

チャンクのマージ

複数のチャンクを，1つのチャンクにマージする（まとめる）ことです。チャンクのマージには，adbmergechunkコマンドを使用します。

なお，マージ対象の複数のチャンクをマージ元チャンク，マージした1つのチャンクをマージ先チャンクといいます。

通常状態のチャンク

チャンクに含まれるデータが操作系SQLの対象となるチャンクのことです。バックグラウンドインポートを実行すると作成されます。また，adbchgchunkstatusコマンドで待機状態のチャンクに変更できます。

定義系SQL

次に示す場合などに使用するSQL文の総称です。

スキーマ，表およびインデクスを定義，削除する場合

HADBユーザを作成，削除する場合

HADBユーザに権限を付与する場合

HADBユーザが持っている権限を取り消す場合

マニュアルHADB　SQLリファレンスの定義系SQLで示すSQL文が該当します。

ディクショナリ表

ディクショナリ表（実表）から検索用に作成されるビュー表のことです。ディクショナリ表のスキーマ名はMASTERです。

ディクショナリ表の再編成

ディクショナリ表内の無効な行データの領域を解放することです。

ディクショナリ表（実表）

表定義，列定義，インデクス定義といったデータベースの定義情報を格納する表です。ディクショナリ表（実表）をHADBユーザは検索できません。ディクショナリ表（実表）に格納された情報を確認する場合，ディクショナリ表を検索します。

ディクショナリ用DBエリア

ディクショナリ表およびディクショナリ表のインデクスを格納するDBエリアです。

データ暗号鍵

DBエリアおよびシステムログファイル内のデータを暗号化するために使用される暗号鍵です。1つのDBエリアファイルに1つのデータ暗号鍵がHADBによって作成されます。また，1つのシステムログファイルに1つのデータ暗号鍵がHADBによって作成されます。

データインポート

表にデータを一括して格納することです。データインポートには，adbimportコマンドを使用します。

データの再編成

表内の無効な行データを削除するために，表のデータをいったんエクスポートし，エクスポートしたデータをインポートすることです。データの再編成は，表単位（表の再編成），またはチャンク単位（チャンクの再編成）で実行できます。

データベース認証

HADBユーザの認可識別子とパスワードでユーザ認証を行うユーザ認証方式のことです。

データ用DBエリア

表およびインデクスを格納するDBエリアです。

テーブルスキャン

B-treeインデクスおよびテキストインデクスを使用しないで，実表を検索する方式のことです。

テキストインデクス

表に格納されているデータ（文字列）の出現情報を管理するインデクスのことです。このインデクスは，任意の文字列を含む文字データを検索する場合に使用できます。

統一フォーマット用監査証跡ファイル

JP1/Auditで収集して参照・管理できる形式の監査証跡が出力されたファイルのことです。監査証跡ファイルに出力された監査証跡を，adbconvertaudittrailfileコマンドで変換すると，変換された監査証跡が統一フォーマット用監査証跡ファイルに出力されます。

同義語一覧定義ファイル

同義語辞書に登録する同義語の一覧を記述するファイルです。同義語検索をする場合，同義語一覧定義ファイル中の同義語グループに登録されているすべての同義語が同義語検索の対象になります。

同義語グループ

同義語検索の対象とする同義語の集まりのことです。

同義語検索

文献や論文などの文書データを検索する際，検索対象に指定した語句と，その語句の同義語をまとめて検索する機能のことです。

同義語辞書

同義語の一覧が登録されている辞書のことです。

同義語辞書ファイル

同義語辞書の情報を格納したファイルです。同義語検索の実行時，HADBサーバが同義語辞書ファイルの内容を参照します。

同義語辞書ファイルの格納ディレクトリ

同義語辞書ファイルを格納するディレクトリのことです。サーバ定義のadb_syndict_storage_pathオペランドに指定したディレクトリのことです。

統計ログファイル

HADBサーバの稼働情報の一部が出力されるファイルのことです。出力された情報は，adbstatコマンドで確認できます。次の情報が出力されます。

SQL文の統計情報

（ナ行）

認可識別子

HADBに接続するときに使用するユーザIDのことです。

ノード

HADBサーバがインストールされているサーバマシンと，そのサーバマシンにインストールされているOS，HADBサーバ，およびHAモニタを包括したものです。

HAモニタありのマルチノード構成の場合，プライマリノードとセカンダリノードは，HAモニタの系に対応しています。

ノード障害

HAモニタありのマルチノード構成の場合

プライマリノードまたはセカンダリノードの場合，マルチノード構成からノード（プライマリノードまたはセカンダリノード）の切り離し対象となる障害を意味しています。HAモニタの系障害およびサーバ障害に対応しています。

ワーカーノードの場合，ワーカーノードのHADBサーバが異常終了して，マルチノード構成からワーカーノードが削除される障害を意味しています。

HAモニタなしのマルチノード構成の場合

HADBサーバが異常終了する障害を意味しています。プライマリノードでノード障害が発生してプライマリノードのHADBサーバが異常終了した場合，マルチノード構成のHADBサーバが異常終了します。

ワーカーノードでノード障害が発生してワーカーノードのHADBサーバが異常終了した場合，マルチノード構成からそのワーカーノードが削除されます。

ノードの切り離し

ノード障害が発生したプライマリノードまたはセカンダリノードは，マルチノード構成から切り離されます。これをノードの切り離しといいます。

ノードの切り離しはHAモニタによって制御されているため，HAモニタなしのマルチノード構成の場合はノードの切り離しは発生しません。

ノードの復帰

ノード障害が発生してマルチノード構成から切り離されたノード（プライマリノードまたはセカンダリノード）を，障害対策後にマルチノード構成に復帰させることです。マルチノード構成に復帰する際，ノード種別は必ずセカンダリノードになります。

ノードの復帰は，HAモニタによって制御されているため，HAモニタなしのマルチノード構成の場合はノードの復帰操作を実行することはできません。

（ハ行）

バックグラウンドインポート

adbimportコマンドのオプション機能の1つです。adbimportコマンド実行時にバックグラウンドインポートを適用すると，同一表に対して，検索系SQL（SELECT文，COPY文）によるデータの検索とデータインポートが同時に実行できます。

ハッシュ検索

ハッシュテーブル領域を使用する処理のことです。次に示す処理が該当します。

表の結合方式のハッシュジョイン

グループ化の処理方式のグローバルハッシュグループ化

副問合せの処理方式のハッシュ実行

SELECT DISTINCTの処理方式のハッシュ実行

集合演算の処理方式のハッシュ実行

被参照表

外部キーによって参照表から参照される，主キーを定義した実表のことです。

非順序実行方式

HADBで採用されているデータベースの検索処理方式です。非順序実行方式では，検索処理が行単位に分割され，並列に実行されます。

非ナル値制約

列値にナル値を許さない制約のことです。

ビュー表

CREATE VIEW文に指定した問合せ式の結果を，新たな表として定義した仮想的な表のことです。複数の表に対する集合演算の結果をビュー表として定義したり，表中の特定の行や列だけを取り出してビュー表として定義したりすることができます。

ビューレベル

定義したビュー表が，実表または外部表から何番目の階層になるのかを示す値のことです。ビューレベルの例を次の図に示します。

ビューレベルの例

［説明］

ビュー表V1の基表はすべて実表のため，ビュー表V1のビューレベルは1になります。

ビュー表V2の基表は，実表とビューレベル1のビュー表のため，ビュー表V2のビューレベルは2になります。

ビュー表V3の基表は実表のため，ビュー表V3のビューレベルは1になります。

ビュー表V4の基表は，ビューレベル2のビュー表とビューレベル1のビュー表のため，ビュー表V4のビューレベルは3になります。

メモ

外部表を基表にしている場合は，上記の例の実表を外部表に読み替えてください。

表関数導出表

次のシステム定義関数によって導出された表形式のデータ集合のことです。

ADB_AUDITREAD関数

ADB_CSVREAD関数

表記ゆれ補正検索

テキストデータ中の文字列に「大文字と小文字」，「半角文字と全角文字」，「ひらがなとカタカナ」などの表記ゆれがある場合に，それらの文字列を一括して検索する機能のことです。

付与権

ほかのHADBユーザにアクセス権限を付与できる権限のことです。

プライマリノード

マルチノード機能の制御を行うHADBサーバがあるノードのことです。プライマリノードのHADBサーバが，APまたはコマンドの接続要求を受け付けて，負荷の少ないセカンダリノードまたはワーカーノードに検索系SQLの処理を振り分けます。

更新系SQL，定義系SQL，またはadbimportコマンドなど，データベースの更新が発生する処理はプライマリノードで実行されます。

なお，HAモニタありのマルチノード構成の場合，プライマリノードはHAモニタの実行系に対応しています。

プライマリノードの切り替え

プライマリノードでノード障害が発生した場合，そのプライマリノードをマルチノード構成から切り離し，セカンダリノードの1つをプライマリノードに切り替えることです。

プライマリノードの切り替えができるのはセカンダリノードを設定できるHAモニタありのマルチノード構成のときです。HAモニタなしのマルチノード構成のときは，セカンダリノードを設定できないため，プライマリノードの切り替えはできません。

分岐行

基本行が格納されたページとは異なるページに格納された可変長列データ（行）を分岐行といいます。

文ハンドル

実行するSQLを管理するためのオブジェクトです。

ページ

データの格納単位の1つで，ディスクI/O時の最小単位です。ディスク上のデータを読み込むときや，ディスク上にデータを書き込むときは，ページ単位で実行されます。

（マ行）

マスタディレクトリ

HADBがDBエリアに関する各種情報などを管理するために使用する，システムの内部情報です。

マスタディレクトリ用DBエリア

マスタディレクトリを格納するDBエリアです。

マルチチャンク表

1表に複数のチャンクを作成できる実表のことです。マルチチャンク表の場合，バックグラウンドインポート機能を使用できます。マルチチャンク表には，レギュラーマルチチャンク表とアーカイブマルチチャンク表の2種類があります。

マルチノード機能

複数のHADBサーバを連携することによって，検索系SQLの処理の負荷分散を実現する機能のことです。

マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリ

マルチノード機能の使用時に同義語検索を行う際に使用される同義語辞書ファイルを格納するディレクトリのことです。サーバ定義のadb_syndict_node_storage_pathオペランドに指定したディレクトリのことです。

マルチノード構成

マルチノード機能を使用している複数のHADBサーバから成るシステム構成のことです。

マルチノード構成からのワーカーノードの削除

ワーカーノードのHADBサーバが異常終了した場合，そのワーカーノードはマルチノード構成から削除されます。これをマルチノード構成からのワーカーノードの削除といいます。

マルチノード構成へのワーカーノードの追加

マルチノード構成から削除されたワーカーノードを再びマルチノード構成に追加することができます。これをマルチノード構成へのワーカーノードの追加といいます。

無効な行データ

削除した行のデータや，更新した行の更新前のデータは，ディスク上から削除されません。このように，ディスク上には存在しますが，検索の対象にはならない行データのことです。行の削除および行の更新を繰り返し実行した場合，表内に無効な行データが増加します。無効な行データが増加すると，次のような影響があります。

無効な行データが増加した影響で，データの格納効率が悪くなる

検索時に参照するページ数が増えるため，検索性能が低下する

メッセージカタログファイル

HADBが出力するメッセージのテキストを格納したメッセージオブジェクトファイルです。

メッセージログファイル

HADBが出力するメッセージを格納するファイルのことです。

基表

ビュー表の基になる表のことです。CREATE VIEW文の問合せ式中に指定した表が，基表になります。

（ヤ行）

ユーザ権限

HADBユーザが，HADBユーザを管理したり，HADBサーバに接続したりするときに必要な権限のことです。ユーザ権限の種類を次に示します。

DBA権限

CONNECT権限

（ラ行）

リアルスレッド

OS（カーネルとライブラリ）によって管理されるスレッドです。

リロード

ディクショナリ表およびシステム表の再編成で，アンロードファイル中のデータをディクショナリ表またはシステム表に再格納することです。

レギュラーマルチチャンク表

マルチチャンク表の基本機能であるバックグラウンドインポート機能を使用できる実表のことです。レギュラーマルチチャンク表の場合，チャンクアーカイブ機能は使用できません。

レンジインデクス

表のチャンク内およびセグメント内に格納されているデータの列の値の最小値と最大値（値域）を管理するインデクスのことです。

ローストア形式

データを行単位でデータベースに格納する形式のことをローストア形式といいます。ローストア形式の場合，1行のデータが1レコードとしてデータベースに格納されます。

ローストア表

表データの格納形式にローストア形式を選択して定義した表のことです。表データの格納形式には，ローストア形式とカラムストア形式の2つがあり，表を定義するときに表データの格納形式を指定することができます。

ロケーション表

チャンク内のデータをアーカイブしたときに，HADBサーバによって自動的に作成される表です。ロケーション表には，次に示す情報が格納されています。

チャンクID

アーカイブファイルのパス

アーカイブファイルごとのアーカイブレンジ列の値の範囲（最大値と最小値）

ロケーション表は，HADBサーバが使用するための表で，ユーザが使用することはありません。

1つのアーカイブマルチチャンク表に対して，1つのロケーション表が作成されます。

（ワ行）

ワーカーノード

マルチノード機能で，検索系SQLや一部のコマンドを処理するHADBサーバがあるノードのことです。

ワーカーノードは，セカンダリノードとは異なり，プライマリノードの予備のノードにはなりません。そのため，プライマリノードで障害が発生しても，ワーカーノードがプライマリノードになることはありません。

ワード検索

英語で書かれたテキストデータから，検索対象に指定した英単語を高速に検索する機能のことです。ワード検索には，次の2つの検索方法があります。

完全一致検索

前方一致検索

索引

記号

？パラメタの情報〔SQLトレース情報〕[1]

/sys/block/デバイス名/queue/add_random〔カーネルパラメタ〕[1]

/sys/block/デバイス名/queue/nr_requests〔カーネルパラメタ〕[1]

/sys/block/デバイス名/queue/rotational〔カーネルパラメタ〕[1]

/sys/block/デバイス名/queue/rq_affinity〔カーネルパラメタ〕[1]

/sys/block/デバイス名/queue/scheduler〔カーネルパラメタ〕[1]

数字

1セグメントの容量〔用語解説〕[1]

1セグメントの容量を決める際の考慮点〔データ用DBエリア〕[1]

A

actcommandオペランド

コールドスタンバイ構成[1]

マルチノード機能[1]

acttypeオペランド

コールドスタンバイ構成[1]

マルチノード機能[1]

adb_audit_log_max_num[1]

adb_audit_log_max_size[1]

adb_audit_log_path[1]

ADB_AUDITREAD関数を使用した監査証跡の確認[1]

adb_auth_clt_keyc_endpoint[1]

adb_auth_keyc_clt_id[1]

adb_auth_keyc_endpoint[1]

adb_auth_keyc_realm[1]

adb_auth_passwd_privkey_path[1]

adb_blk_path_wrk[1]

adb_cmd_dvbix_rthd_use[1]

adb_cmd_ixrec_file_use[1]

adb_cmd_passwd_pubkey_path[1]

adb_core_path[1]

adb_crypto_dmkey_path[1]

ADB_CSVREAD関数[1]

adb_db_path[1]

adb_dbarea_wrk_page_size[1]

adb_dbarea_wrn_pnt_except_name[1]

adb_dbarea_wrn_pnt_use_rate[1]

adb_dbbuff_wrktbl_clt_blk_num[1]

adb_dbbuff_wrktbl_glb_blk_num[1]

ADB_DEFFILE_UNSUPPORTED_OPERAND_BEHAVIOR〔環境変数〕[1]

adb_log_rec_msg_interval[1]

adb_log_usrbuf_num[1]

adb_log_usrfile_num[1]

adb_log_usrfile_size[1]

adb_rpc_port[1]

adb_rpc_tcp_keepalive_time[1]

adb_rpc_wait_time[1]

adb_sql_default_dbarea_shared[1]

adb_sql_exe_hashflt_area_size[1]

adb_sql_exe_hashgl_area_size[1]

adb_sql_exe_hashgrp_area_size[1]

adb_sql_exe_hashtbl_area_size[1]

adb_sql_exe_max_rthd_num[1]

adb_sql_opt_col_bidx_sel_mode[1]

adb_sql_opt_drvtbl_grping_prior[1]

adb_sql_opt_hashjoin_div[1]

adb_sql_order_mode[1]

adb_sql_prep_dec_div_rs_prior[1]

adb_sql_prep_delrsvd_words[1]

adb_sql_prep_null_collation[1]

adb_sql_rngidx_preread[1]

adb_sql_tbldef_cache_size[1]

adb_sql_text_out[1]

adb_sql_trc_accesspath[1]

adb_sql_trc_level[1]

adb_sql_trc_out[1]

adb_sql_trc_param[1]

adb_sql_trc_txtfile_size[1]

adb_sta_log_max_size[1]

adb_sta_log_path[1]

adb_sta_log_size_unit[1]

adb_syndict_node_storage_path[1]

adb_syndict_storage_path[1]

adb_sys_cld_access_area_size[1]

adb_sys_cld_aws_bucket[1]

adb_sys_cld_aws_region[1]

adb_sys_cld_az_container[1]

adb_sys_cld_az_storage_account[1]

adb_sys_cld_cache_path[1]

adb_sys_cld_cache_total_size[1]

adb_sys_lck_conflict_behavior[1]

adb_sys_max_parallel_exec_num[1]

adb_sys_max_users[1]

adb_sys_max_users_wrn_pnt[1]

adb_sys_memory_limit[1]

adb_sys_memory_limit_wrn_pnt[1]

adb_sys_mlg_message_suppress[1]

adb_sys_multi_max_worker_nodes[1]

adb_sys_multi_node_clt_host[1]

adb_sys_multi_node_info[1]

adb_sys_multi_worker_abort_time[1]

adb_sys_multi_worker_node_info[1]

adb_sys_node_start_wait_time[1]

adb_sys_proc_area_max[1]

adb_sys_rthd_area_max[1]

adb_sys_rthd_num[1]

adb_sys_shm_huge_page_size[1]

adb_sys_trn_iso_lv[1]

adb_sys_uthd_num[1]

adbarchivechunkコマンド

メモリ所要量の事前見積もり[1]

adbarchivechunkコマンド実行時に出力されるユーザログ容量（変数max_user_log）の求め方[1]

adbarchivechunkコマンド実行時のメモリ所要量の求め方[1]

adbarchivechunkコマンドの実行時間の短縮〔チューニング〕[1]

adbaudittrailコマンド

--startオプション[1]

--stopオプション[1]

--swapオプション[1]

--write-errorオプション[1]

-dオプション[1]

メモリ所要量の求め方[1]

adbaudittrailコマンド実行時のメモリ所要量の求め方[1]

adbbuff[1]

adbbuffオペランドの指定を見直す〔バージョンアップ後の作業〕[1]

adbcachegrp[1]

adbchgchunkcommentコマンド

チャンクのコメントを変更する方法[1]

adbchgchunkcommentコマンド実行時のメモリ所要量の求め方[1]

adbchgchunkstatusコマンド

チャンクの状態変更によるカレントチャンクの切り替え[1]

チャンクの状態を変更する運用例[1]

チャンクの状態を変更する方法[1]

adbchgchunkstatusコマンド実行時に出力されるユーザログ容量（変数max_user_log）の求め方[1]

adbchgchunkstatusコマンド実行時のメモリ所要量の求め方[1]

adbchgchunkstatusコマンドによるチャンクの状態変更[1]

adbclientdefmangコマンド実行時のメモリ所要量の求め方[1]

adbclientmangオペランド

クライアント管理定義ファイル[1]

ADBCLTDIR〔環境変数〕[1]

adbcltgrp

クライアントグループを設定する場合[1]

コマンドグループを設定する場合[1]

ADBCLTLANG〔環境変数〕[1]

adbcolumnizeコマンド[1]

adbconvertaudittrailfileコマンド実行時のメモリ所要量の求め方[1]

adbconvertaudittrailfileコマンドを実行する際の注意事項[1]

ADBCRYPTOFILE〔環境変数〕[1]

adbdbstatusコマンド

B-treeインデクスの状態や使用量を確認したい場合[1]

DBエリアファイルの使用量を確認したい場合[1]

アーカイブファイルのサイズを確認したい場合[1]

システム表（実表）の状態や使用量を確認する[1]

実表の状態や使用量を確認したい場合[1]

チャンクの状態や作成されているチャンク数を確認する方法[1]

ディクショナリ表（実表）の状態や使用量を確認する[1]

データベースの状態や使用量の確認[1]

データベースの使用量を確認したい場合[1]

テキストインデクスの状態や使用量を確認したい場合[1]

レンジインデクスの状態や使用量を確認したい場合[1]

adbdbstatusコマンド実行時のメモリ所要量の求め方[1]

ADBDIR〔環境変数〕[1]

adbexportコマンド

実表のデータをファイルに出力する方法（データをエクスポートする方法）[1]

チャンク単位にデータをエクスポートする方法[1]

ビュー表のデータをファイルに出力する方法（データをエクスポートする方法）[1]

メモリ所要量の事前見積もり[1]

adbexportコマンドが出力するファイルの容量見積もり[1]

adbexportコマンド実行時のメモリ所要量の求め方[1]

adbexportコマンドの実行時間の短縮〔チューニング〕[1]

adbgetcstコマンド

メモリ所要量の事前見積もり[1]

adbgetcstコマンド実行時のメモリ所要量の求め方[1]

adbgetcstコマンドの実行時間の短縮〔チューニング〕[1]

adbidxrebuildコマンド

コマンドが再実行できない場合の対処方法[1]

作業用一時ファイルの容量見積もり[1]

作業用一時ファイルを格納するディスク容量が小さい場合[1]

実表が更新不可状態になった場合[1]

メモリ所要量の事前見積もり[1]

メモリ所要量の求め方[1]

adbidxrebuildコマンドが再実行できない場合の対処方法

KFAA50244-Eメッセージ，およびKFAA50247-Eメッセージ以外のメッセージが出力されたとき[1]

KFAA50244-Eメッセージが出力されたとき[1]

KFAA50247-Eメッセージが出力されたとき[1]

adbidxrebuildコマンド実行時に出力されるユーザログ容量（変数max_user_log）の求め方[1]

adbidxrebuildコマンドの実行時間の短縮〔チューニング〕[1]

adbimportコマンド

コマンドが再実行できない場合の対処方法[1]

作業用一時ファイルの容量見積もり[1]

作業用一時ファイルを格納するディスク容量が小さい場合[1]

実表が更新不可状態になった場合[1]

実表にデータを格納する方法（データインポート）[1]

メモリ所要量の事前見積もり[1]

adbimportコマンドが再実行できない場合の対処方法

KFAA50244-Eメッセージ，およびKFAA50247-Eメッセージ以外のメッセージが出力されたとき[1]

KFAA50244-Eメッセージが出力されたとき[1]

KFAA50247-Eメッセージが出力されたとき[1]

adbimportコマンド実行時に出力されるユーザログ容量（変数max_user_log）の求め方[1]

adbimportコマンド実行時の作業用一時ファイル

インデクス作成用の作業用一時ファイル[1]

データ圧縮用の作業用一時ファイル[1]

adbimportコマンド実行時のメモリ所要量の求め方[1]

adbimportコマンドの実行時間の短縮〔チューニング〕[1]

adbinfogetコマンド〔トラブルシュート情報の取得〕[1]

adbinfosweepコマンド〔トラブルシュート情報の削除〕[1]

adbinitコマンド実行時に指定した作業表用DBエリアのページサイズを調べる[1]

adbinitコマンド実行時のメモリ所要量の求め方[1]

ADBLANG〔環境変数〕[1]

adbmergechunkコマンド

作業用一時ファイルの容量見積もり[1]

作業用一時ファイルを格納するディスク容量が小さい場合[1]

待機状態のチャンクをマージする場合の注意点[1]

チャンクをマージする方法（チャンク数を減らす方法）[1]

メモリ所要量の事前見積もり[1]

メモリ所要量の求め方[1]

adbmergechunkコマンド実行時に出力されるユーザログ容量（変数max_user_log）の求め方[1]

adbmergechunkコマンド実行時に増加するデータ量の見積もり[1]

adbmergechunkコマンド実行中に検索対象となるチャンク[1]

adbmergechunkコマンドによるチャンクのマージ[1]

adbmergechunkコマンドの--purge-chunkオプション指定時の考慮点[1]

adbmergechunkコマンドの実行時間の短縮〔チューニング〕[1]

adbmodareaコマンド

データ用DBエリアが満杯になった場合[1]

データ用DBエリアを拡張する方法（データ用DBエリアファイルの追加）[1]

データ用DBエリアを拡張できなくなった場合[1]

データ用DBエリアを再初期化する方法[1]

データ用DBエリアを削除する方法[1]

データ用DBエリアを追加する方法[1]

データ用DBエリアを追加できなくなった場合[1]

メモリ所要量の求め方[1]

adbmodbuffコマンド

ローカル作業表用バッファを変更する方法[1]

ADBMSGLOGSIZE〔環境変数〕[1]

ADBPRIVKEY〔環境変数〕[1]

adbreorgsystemdataコマンド

adbreorgsystemdataコマンドと排他制御の関係[1]

adbreorgsystemdataコマンドの待ち状態を解消する方法[1]

アンロードファイルに関するトラブル[1]

アンロードファイルを格納するディスクの空き容量が不足したときの対処方法[1]

アンロードファイルを格納するディスクの空き容量が不足しているかどうかを確認する方法[1]

アンロードファイルを格納するディスク容量が小さい場合[1]

作業用一時ファイルの容量見積もり[1]

作業用一時ファイルを格納するディスク容量が小さい場合[1]

システム表（実表）の格納効率を確認する[1]

システム表の再編成[1]

システム表を再編成するタイミング[1]

システム表を再編成する方法[1]

システム表を再編成する理由[1]

ディクショナリ表（実表）の格納効率を調整する[1]

ディクショナリ表の再編成[1]

ディクショナリ表を再編成するタイミング[1]

ディクショナリ表を再編成する方法[1]

ディクショナリ表を再編成する理由[1]

ディスクに不要なアンロードファイルが残っている[1]

メモリ所要量の求め方[1]

adbreorgsystemdataコマンド実行時に出力されるユーザログ容量（変数max_user_log）の求め方[1]

adbreorgsystemdataコマンド実行時の作業用一時ファイルの容量見積もり[1]

adbreorgsystemdataコマンド実行時のメモリ所要量の求め方[1]

ADBSQLNULLCHAR〔環境変数〕[1]

adbsqlコマンド

実表のデータをファイルに出力する方法（データをエクスポートする方法）[1]

チャンク単位にデータをエクスポートする方法[1]

ビュー表のデータをファイルに出力する方法（データをエクスポートする方法）[1]

adbsqlコマンドの実行〔DockerおよびKubernetesを使用したHADBの運用〕[1]

adbstartコマンド[1]

HADBサーバの再開始に掛かる処理時間が長い場合の対処方法[1]

adbstatコマンド

adbstatコマンド実行時に統計ログファイルから出力される情報の容量見積もり[1]

HADBサーバの統計情報の運用方法[1]

SQL文の統計情報の運用方法[1]

グローバルバッファの統計情報の運用方法[1]

コネクションの稼働情報の運用方法[1]

統計解析の運用（HADBサーバの稼働情報の確認）[1]

統計ログファイルの運用[1]

adbstatコマンド実行時のメモリ所要量の求め方[1]

adbstopコマンド[1]

adbstop[1]

adbstop --cancel[1]

adbstop --force[1]

adbstop --wait connection[1]

adbstop --wait transaction[1]

adbsyndictコマンド

作業用一時ファイルの容量見積もり[1]

メモリ所要量の求め方[1]

adbsyndictコマンド実行時の作業用一時ファイルの容量見積もり[1]

adbsyndictコマンド実行時のメモリ所要量の求め方[1]

ADBSYSLOGLV〔環境変数〕[1]

adbunarchivechunkコマンド

コマンドが再実行できない場合の対処方法[1]

作業用一時ファイルの容量見積もり[1]

作業用一時ファイルを格納するディスク容量が小さい場合[1]

メモリ所要量の事前見積もり[1]

adbunarchivechunkコマンド実行時に出力されるユーザログ容量（変数max_user_log）の求め方[1]

adbunarchivechunkコマンド実行時のメモリ所要量の求め方[1]

adbupddmkコマンド

メモリ所要量の求め方[1]

adbupddmkコマンド実行時のメモリ所要量の求め方[1]

addressオペランド

コールドスタンバイ構成[1]

マルチノード機能[1]

aio-max-nr〔カーネルパラメタ〕[1]

ALTER TABLE文

アーカイブレンジ列として指定する列にレンジインデクスが定義されているかどうかを調べる[1]

実表に列を追加する方法[1]

実表の表名を変更する方法[1]

実表の列名を変更する方法[1]

実表の列を削除する方法[1]

チャンク数の最大値を変更する方法[1]

列のデータ型を変更する方法[1]

ALTER VIEW文

ビュー表を再作成する方法[1]

Amazon S3[1]

Amazon S3互換オブジェクトストレージを使用する[1]

Amazon S3へのアクセスに必要な認証情報の設定[1]

APおよびコマンドの処理状況を確認する方法[1]

APが実行できない場合の対処方法[1]

APが終了しない場合やAPが異常終了した場合の対処方法[1]

APに関するトラブル[1]

APのHADBサーバへの接続に時間が掛かる場合の対処方法[1]

APの運用〔DockerおよびKubernetesを使用したHADBの運用〕[1]

ARCHIVE CHUNK権限[1]

ARRAY_ROWSZ〔計算式〕[1]

ARRAY型の定義[1]

ARRAY型の列の定義[1]

AWS CLIのインストール[1]

AWSエンドポイントへのネットワーク〔コールドスタンバイ構成〕

クラウドストレージ機能を使用しない場合[1]

クラウドストレージ機能を使用する場合[1]

AWSエンドポイントへのネットワーク〔マルチノード構成〕

クラウドストレージ機能を使用しない場合[1]

クラウドストレージ機能を使用する場合[1]

AWS環境

コールドスタンバイ構成[1]

コールドスタンバイ構成の例〔クラウドストレージ機能を使用しない場合〕[1]

コールドスタンバイ構成の例〔クラウドストレージ機能を使用する場合〕[1]

データベースの回復方法[1]

バックアップからの回復方法[1]

バックアップの取得方法[1]

マルチノード機能[1]

マルチノード構成の構築手順[1]

マルチノード構成の例〔クラウドストレージ機能を使用しない場合〕[1]

マルチノード構成の例〔クラウドストレージ機能を使用する場合〕[1]

AWS環境でのコールドスタンバイ構成

HAモニタの環境設定[1]

ネットワーク構成〔クラウドストレージ機能を使用しない場合〕[1]

ネットワーク構成〔クラウドストレージ機能を使用する場合〕[1]

AWSの環境に起因するトラブル

コールドスタンバイ構成[1]

マルチノード機能[1]

Azure Blob Storage[1]

Azure Blob Storageへのアクセスに必要な認証情報の設定[1]

Azure CLIのインストール[1]

Azure環境

コールドスタンバイ構成[1]

コールドスタンバイ構成の例[1]

データベースの回復方法[1]

バックアップからの回復方法[1]

バックアップの取得方法[1]

マルチノード機能[1]

マルチノード構成の構築手順[1]

マルチノード構成の例[1]

Azure環境でのコールドスタンバイ構成

HAモニタの環境設定[1]

ネットワーク構成[1]

Azureの環境に起因するトラブル

コールドスタンバイ構成[1]

マルチノード機能[1]

B

B-treeインデクス[1]

インデクスが格納されているデータ用DBエリアを変更する方法[1]

インデクスページスプリット[1]

状態や使用量を確認したい場合[1]

定義する列を決めるときの考慮点[1]

未完状態になったときの対処方法[1]

B-treeインデクス作成用スレッド数の調整機能[1]

B-treeインデクスのインデクスページスプリットの発生を抑える[1]

B-treeインデクスのキー長の求め方[1]

B-treeインデクスの再作成[1]

B-treeインデクスの使用量を確認する[1]

B-treeインデクスのセグメントごとの格納ページ数の求め方[1]

B-treeインデクスの設計[1]

B-treeインデクスの定義〔CREATE INDEX文〕[1]

B-treeインデクスの未完状態[1]

未完状態かどうかを確認する[1]

B-treeインデクスを使用した検索性能の低下を防ぐ[1]

B-treeインデクスを定義する場合の注意点[1]

BLOB〔Azure環境〕[1]

BLOBに関するトラブル[1]

BOM〔サーバ定義〕[1]

BRANCH

BRANCHの指定有無を確認する場合[1]

可変長データ型の列データの分岐指定[1]

BRANCH ALL

表オプションBRANCH ALLの指定有無を確認する場合[1]

C

CHANGE CHUNK COMMENT権限[1]

CHANGE CHUNK STATUS権限[1]

CLASSPATH〔環境変数〕[1]

connectionファイルの作成

AWS環境でのマルチノード構成[1]

Azure環境でのマルチノード構成[1]

CONNECT権限[1]

CONNECT権限〔用語解説〕[1]

COPY権限[1]

COPY文

実表のデータをファイルに出力する方法（データをエクスポートする方法）[1]

COPY文で出力するファイル

容量見積もり[1]

core_pattern〔カーネルパラメタ〕[1]

CORRECTIONRULE

テキストインデクスの表記ゆれ補正指定の指定[1]

CPU障害〔マルチノード機能〕[1]

CREATE INDEX文〔インデクスの定義〕[1]

CREATE TABLE文〔実表の定義〕[1]

CSVファイル中のデータの検索[1]

CSVファイル中のデータを検索する方法[1]

D

DBA権限[1]

DBA権限〔用語解説〕[1]

DBエリア[1]

インデクスが格納されているデータ用DBエリアを変更する方法[1]

実表が格納されているデータ用DBエリアを変更する方法[1]

データ用DBエリアの空き容量を確保する[1]

データ用DBエリアの空き容量を確保する方法（実表の再編成）[1]

データ用DBエリアの空き容量を確保する方法（データの圧縮）[1]

データ用DBエリアの空き容量を確保する方法（不要なデータの削除）[1]

データ用DBエリアファイル（ブロックスペシャルファイル）の格納場所を変更する方法[1]

データ用DBエリアファイルの格納場所を変更する方法[1]

データ用DBエリアファイルをレギュラーファイルからブロックスペシャルファイルに変更する方法[1]

データ用DBエリアを拡張する方法（データ用DBエリアファイルの追加）[1]

データ用DBエリアを再初期化する方法[1]

データ用DBエリアを削除する方法[1]

データ用DBエリアを追加する方法[1]

DBエリア〔用語解説〕[1]

DBエリアID

表が格納されているDBエリアのDBエリアIDを確認する場合[1]

DBエリア暗号化機能[1]

環境設定[1]

コールドスタンバイ構成[1]

使用している状態かどうかを調べる[1]

使用をやめる[1]

セキュリティインシデントが発生した場合[1]

バックアップの取得[1]

マルチノード機能[1]

DBエリア暗号化機能〔用語解説〕[1]

DBエリア暗号化機能に関するオペランド（set形式）[1]

DBエリアに格納されているインデクスのインデクス名を調べる[1]

DBエリアに格納されている表の表名を調べる[1]

DBエリアに関するトラブル[1]

DBエリアに表およびインデクスを格納できるケース[1]

DBエリアに表またはインデクスを格納できないケース[1]

DBエリアの暗号化をやめる[1]

DBエリアの格納位置の変更〔マルチノード機能〕[1]

DBエリアの構造（セグメントとページ）[1]

DBエリアの自動増分[1]

DBエリアの自動増分の失敗が原因の場合[1]

DBエリアの自動増分の発生防止〔チューニング〕[1]

DBエリアの種類[1]

DBエリアの使用量の確認方法〔クラウドストレージ機能使用時〕[1]

DBエリアのファイル構成[1]

DBエリアの名称を確認する場合[1]

DBエリアファイル[1]

クラウドストレージ機能[1]

使用量を確認したい場合[1]

DBエリアファイル〔用語解説〕[1]

DBエリアファイル管理部ページ[1]

DBエリアファイル管理部用のセグメント[1]

DBエリアファイルとマルチノード機能の関係[1]

DBエリアファイルに障害が発生した場合の対処[1]

DBエリアファイルの構成例[1]

DBエリア用のキャッシュグループ[1]

DBエリアを暗号化する[1]

DBディレクトリ[1]

DBディレクトリ〔用語解説〕[1]

DBディレクトリ下のファイルに関するトラブル[1]

DBディレクトリの運用〔コールドスタンバイ構成〕[1]

DBディレクトリの構成[1]

DBディレクトリの削除〔アンインストール〕[1]

DBディレクトリの事前見積もり[1]

DBディレクトリの初期化〔DockerおよびKubernetes〕[1]

DEFAULT句[1]

DEFAULT句の指定内容を確認する場合[1]

DELETE権限[1]

DELETE文

実表のデータを検索・更新する方法[1]

DELIMITER

ワード検索時の区切り文字の選択[1]

diskオペランド

コールドスタンバイ構成[1]

マルチノード機能[1]

dmmp_deviceオペランド

コールドスタンバイ構成[1]

マルチノード機能[1]

dockerd[1]

Dockerfile[1]

Dockerイメージの生成[1]

DockerおよびKubernetesを使用したHADBの運用[1]

DockerおよびKubernetesを使用したHADBの運用例[1]

DockerおよびKubernetesを使用したシステム構成

DockerおよびKubernetesの使用停止[1]

運用例[1]

環境構築[1], [2]

システム構成例[1]

前提ソフトウェアのセットアップ[1]

DRBD〔AWS環境でのコールドスタンバイ構成〕

環境設定[1]

DRBD設定ファイル〔AWS環境でのコールドスタンバイ構成〕[1]

DRBD用ネットワーク〔AWS環境でのコールドスタンバイ構成〕[1]

E

EBSが満杯になった場合

コールドスタンバイ構成[1]

マルチノード機能[1]

EBSで障害が発生した場合

コールドスタンバイ構成[1]

マルチノード機能[1]

EFSアクセス用ネットワーク

コールドスタンバイ構成[1]

マルチノード構成[1]

EX〔排他制御モード〕[1]

EXCLUDE NULL VALUES〔ナル値除外指定〕[1]

EXCLUSIVE〔排他制御モード〕[1]

EXPORT TABLE権限[1]

F

fence_lanオペランド

コールドスタンバイ構成[1]

マルチノード機能[1]

fence_resetオペランド

コールドスタンバイ構成[1]

マルチノード機能[1]

fence_scsiオペランド

コールドスタンバイ構成[1]

マルチノード機能[1]

file-max〔カーネルパラメタ〕[1]

FIX表[1]

FOREIGN KEY[1]

fs_mount_dirオペランド

コールドスタンバイ構成[1]

マルチノード機能[1]

fs_mount_optオペランド

コールドスタンバイ構成[1]

マルチノード機能[1]

fs_nameオペランド

コールドスタンバイ構成[1]

マルチノード機能[1]

fs_neckオペランド

コールドスタンバイ構成[1]

マルチノード機能[1]

G

GET COSTINFO権限[1]

global_common.confファイル〔AWS環境でのコールドスタンバイ構成〕[1]

H

HADB暗号鍵[1]

HADB暗号鍵〔用語解説〕[1]

HADB暗号鍵の更新[1]

コールドスタンバイ構成[1]

マルチノード機能[1]

HADB暗号鍵の世代管理[1]

HADB暗号鍵ファイル[1]

HADB暗号鍵利用パスワード[1]

HADB暗号鍵利用パスワード〔用語解説〕[1]

HADB暗号鍵利用パスワードファイルの作成〔コールドスタンバイ構成〕[1]

HADBオプション

AWS環境の場合[1]

Azure環境の場合[1]

アンインストール[1]

インストール[1]

HADBオプション〔用語解説〕[1]

HADB管理グループ[1]

HADB管理グループ〔用語解説〕[1]

HADB管理グループに所属するOSユーザ[1], [2]

HADB管理グループに所属するOSユーザ〔用語解説〕[1]

HADB管理グループの設定[1]

HADB管理者[1], [2]

HADB管理者〔用語解説〕[1]

HADB管理者の設定[1]

HADBクライアント[1]

HADBクライアント〔用語解説〕[1]

HADBクライアントで管理するクライアント定義ファイル[1]

HADBクライアント利用コンテナ[1]

HADBサーバ[1]

HADBサーバの再開始に掛かる処理時間が長い場合の対処方法[1]

運用項目の一覧[1]

開始処理完了の確認[1]

開始方法[1]

開始モード[1]

稼働モード[1]

稼働モードを確認する方法[1]

稼働モードを変更する方法[1]

終了処理完了の確認[1]

終了方法[1]

終了モード[1]

バージョンアップ[1]

バージョンアップ（動作確認テスト用）[1]

バージョンダウン[1]

バージョンダウン（動作確認テスト用）[1]

HADBサーバ〔用語解説〕[1]

HADBサーバ開始時間の短縮〔チューニング〕[1]

HADBサーバ開始時にメモリが不足した場合の対処方法[1]

HADBサーバ開始時のメモリ所要量の求め方[1]

HADBサーバが異常終了した場合の対処[1]

HADBサーバが異常終了していない場合の対処[1]

HADBサーバ起動コンテナ[1]

HADBサーバで起動するプロセス[1]

HADBサーバの稼働情報の確認[1]

HADBサーバの稼働モードの変更（通常モード）[1]

HADBサーバの再開始に関するトラブル[1]

HADBサーバの再構築方法[1]

HADBサーバの自動起動[1]

HADBサーバの自動再起動[1]

HADBサーバの使用時に単調増加するファイル[1]

HADBサーバの正常開始（オフラインモード）[1]

HADBサーバの正常終了〔監査証跡機能〕[1]

HADBサーバの統計情報の運用方法[1]

HADBサーバのプロセス[1]

HADBサーバのメモリ構成[1]

HADBサーバのメモリ所要量の見積もり[1]

HADBサーバを開始する[1]

HADBダンプファイルの容量見積もり[1]

HADBの最大値と最小値[1]

HADBのシステム構成[1]

HADBユーザ[1]

ユーザ認証方式を調べる[1]

HADBユーザ〔用語解説〕[1]

HADBユーザが参照できるシステム表の範囲[1]

HADBユーザが参照できるディクショナリ表とシステム表の範囲[1]

HADBユーザが参照できるディクショナリ表の範囲[1]

HADBユーザが持っているアクセス権限を確認する方法[1]

HADBユーザが持っているアクセス権限を変更する方法[1]

HADBユーザが持っているユーザ権限とスキーマ操作権限を確認する方法[1]

HADBユーザが持っているユーザ権限とスキーマ操作権限を調べる[1]

HADBユーザが持っているユーザ権限とスキーマ操作権限を取り消す方法[1]

HADBユーザにアクセス権限を付与する方法[1]

HADBユーザに権限を付与する例[1]

HADBユーザにユーザ権限とスキーマ操作権限を付与する方法[1]

HADBユーザの管理[1]

HADBユーザを削除する方法[1]

HADBユーザを作成する方法[1]

パスワードを変更する方法[1]

ユーザ認証方式を調べる方法[1]

ユーザ認証方式を変更する方法[1]

HADBユーザのユーザ認証方式を調べる方法[1]

HADBユーザのユーザ認証方式を変更する方法[1]

HADBユーザを作成する[1]

HAモニタ[1]

インストール〔コールドスタンバイ構成〕[1]

インストール〔マルチノード機能〕[1]

環境設定〔AWS環境でのコールドスタンバイ構成〕[1]

環境設定〔Azure環境でのコールドスタンバイ構成〕[1]

環境設定〔コールドスタンバイ構成〕[1]

環境設定〔マルチノード機能〕[1]

HAモニタありのマルチノード構成[1]

HAモニタありのマルチノード構成〔用語解説〕[1]

HAモニタなしのマルチノード構成[1]

HAモニタなしのマルチノード構成〔用語解説〕[1]

HAモニタの接続構成設定ファイルの作成

AWS環境でのマルチノード構成[1]

Azure環境でのマルチノード構成[1]

HAモニタの接続構成設定ファイルの指定

AWS環境でのコールドスタンバイ構成[1]

Azure環境でのコールドスタンバイ構成[1]

HAモニタの接続構成設定ファイルの指定例

AWS環境でのコールドスタンバイ構成[1]

Azure環境でのコールドスタンバイ構成[1]

HugePagesの適用〔チューニング〕[1]

HugePagesを適用した共有メモリの使用量の削減〔チューニング〕[1]

hugetlb_shm_group〔カーネルパラメタ〕[1]

I

IAMロールを使用した認証情報の設定[1], [2]

IMPORT TABLE権限[1]

initialオペランド

コールドスタンバイ構成[1]

マルチノード機能[1]

INSERT権限[1]

INSERT文

実表のデータを検索・更新する方法[1]

ip_neckオペランド

コールドスタンバイ構成[1]

マルチノード機能[1]

IPアドレスの変更[1]

コールドスタンバイ構成[1]

マルチノード機能[1]

IT Report Utility[1]

IT Report Utilityの設定[1]

ITRU[1]

J

JP1/Audit[1]

JP1/Audit Management - Managerとの連携

監査証跡機能[1]

コールドスタンバイ構成[1]

マルチノード機能[1]

K

KeepAlive[1]

Keycloak認証[1]

Keycloak認証〔用語解説〕[1]

Keycloak認証に関するオペランド（set形式）[1]

Keycloak認証の環境設定[1]

Keycloak認証の導入方法[1]

KFAA30930-Eメッセージが出力された場合

SQL文実行時またはコマンド実行時[1]

KFAA40005-Eメッセージが出力された場合

APが実行できない[1]

コマンドが実行できない[1]

KFAA40007-Eメッセージが出力された場合

HADBサーバ開始時[1]

SQL文実行時またはコマンド実行時[1]

KFAA41205-Eメッセージが出力された場合

再開始できない場合[1]

正常開始できない場合[1]

KFAA50244-Eメッセージが出力されたとき

コマンドが再実行できない場合の対処方法[1]

KFAA50247-Eメッセージが出力されたとき

コマンドが再実行できない場合の対処方法[1]

KFAA51246-Eメッセージが出力された場合

バックグラウンドインポート機能に関するトラブル[1]

KFAA61205-Wメッセージが出力された場合[1]

Kubernetes[1]

L

lan_updownオペランド

コールドスタンバイ構成[1]

マルチノード機能[1]

LANG〔環境変数〕[1]

LD_LIBRARY_PATH〔環境変数〕[1]

LVM設定時の考慮点[1]

M

memlock〔カーネルパラメタ〕[1]

MERGE CHUNK権限[1]

monbegin_restartオペランド

コールドスタンバイ構成[1]

マルチノード機能[1]

multistandbyオペランド

マルチノード機能[1]

N

nameオペランド

コールドスタンバイ構成[1]

マルチノード機能[1]

nofile〔カーネルパラメタ〕[1]

nproc〔カーネルパラメタ〕[1]

nr_hugepages〔カーネルパラメタ〕[1]

O

OSのコマンドでバックアップから回復する[1]

OSのコマンドでバックアップを取得する[1]

OSの時刻変更[1]

OSのホスト名・IPアドレスの変更[1]

コールドスタンバイ構成[1]

マルチノード機能[1]

OSユーザ[1]

OSユーザ〔用語解説〕[1]

P

PAM認証[1]

秘密鍵ファイル，公開鍵ファイルの更新[1]

PAM認証〔用語解説〕[1]

PAM認証に関するオペランド（set形式）[1]

PAM認証の環境設定[1]

PAM認証の環境設定例

LDAPユーザ名を使用してPAM認証をする場合[1]

OSユーザ名を使用してPAM認証をする場合[1]

PAM認証の導入方法[1]

PAMの設定[1]

PATH〔環境変数〕[1]

patrolcommandオペランド

コールドスタンバイ構成[1]

マルチノード機能[1]

PCTFREE

B-treeインデクスのインデクスページ内の未使用領域の確保[1]

PCTFREEの指定内容を確認する場合[1]

データページ内の未使用領域の確保[1]

テキストインデクスのインデクスページ内の未使用領域の確保[1]

PRIMARY KEY[1]

PROTECTED UPDATE〔排他制御モード〕[1]

PU〔排他制御モード〕[1]

PURGE CHUNK文実行時に出力されるユーザログ容量（変数max_user_log）の求め方[1]

R

READ COMMITTED〔トランザクション隔離性水準〕[1]

read-only transaction[1]

read/write transaction[1]

REBUILD INDEX権限[1]

REFERENCES権限[1]

REPEATABLE READ〔トランザクション隔離性水準〕[1]

rmem_default〔カーネルパラメタ〕[1]

rmem_max〔カーネルパラメタ〕[1]

ROWSZ〔計算式〕[1]

S

S3オブジェクト[1]

S3オブジェクト〔用語解説〕[1]

S3オブジェクトに関するトラブル[1]

S3バケット[1]

S3バケット〔用語解説〕[1]

scsi_deviceオペランド

コールドスタンバイ構成[1]

マルチノード機能[1]

SELECT権限[1]

SELECT文

実表のデータを検索・更新する方法[1]

SELinuxのモードの確認[1]

serversファイルの指定

AWS環境でのコールドスタンバイ構成[1]

AWS環境でのマルチノード構成〔クラウドストレージ機能を使用しない場合〕[1]

AWS環境でのマルチノード構成〔クラウドストレージ機能を使用する場合〕[1]

Azure環境でのコールドスタンバイ構成[1]

コールドスタンバイ構成[1]

マルチノード機能[1]

serversファイルの指定例

AWS環境でのコールドスタンバイ構成〔クラウドストレージ機能を使用しない場合〕[1]

AWS環境でのコールドスタンバイ構成〔クラウドストレージ機能を使用する場合〕[1]

AWS環境でのマルチノード構成〔クラウドストレージ機能を使用しない場合〕[1]

AWS環境でのマルチノード構成〔クラウドストレージ機能を使用する場合〕[1]

Azure環境でのコールドスタンバイ構成[1]

Azure環境でのマルチノード構成[1]

コールドスタンバイ構成[1], [2]

マルチノード機能[1], [2], [3]

servexec_retryオペランド

コールドスタンバイ構成[1]

マルチノード機能[1]

set形式〔サーバ定義〕[1]

ShadowImageを使用するときの注意事項[1]

SHARED RETRIEVE〔排他制御モード〕[1]

SHARED UPDATE〔排他制御モード〕[1]

SHM_BUFGLOBAL[1]

shmall〔カーネルパラメタ〕[1]

SHMMAN[1]

shmmax〔カーネルパラメタ〕[1]

shmmni〔カーネルパラメタ〕[1]

SQL_AUDITSの内容〔ディクショナリ表〕[1]

SQL_COLUMNS〔ディクショナリ表〕[1]

SQL_DATATYPE_DESCRIPTORSの内容〔ディクショナリ表〕[1]

SQL_DBAREAS〔ディクショナリ表〕[1]

SQL_DEFINE_ENVIRONMENTの内容〔ディクショナリ表〕[1]

SQL_DEFINE_SOURCEの内容〔ディクショナリ表〕[1]

SQL_DIV_INDEX〔ディクショナリ表〕[1]

SQL_DIV_TABLE〔ディクショナリ表〕[1]

SQL_FOREIGN_SERVERSの内容〔ディクショナリ表〕[1]

SQL_INDEX_COLINFの内容〔ディクショナリ表〕[1]

SQL_INDEXES〔ディクショナリ表〕[1]

SQL_KEY_COLUMN_USAGEの内容〔ディクショナリ表〕[1]

SQL_REFERENTIAL_CONSTRAINTSの内容〔ディクショナリ表〕[1]

SQL_SCHEMATA〔ディクショナリ表〕[1]

SQL_TABLE_CONSTRAINTSの内容〔ディクショナリ表〕[1]

SQL_TABLE_PRIVILEGESの内容〔ディクショナリ表〕[1]

SQL_TABLES〔ディクショナリ表〕[1]

チャンクの状態や作成されているチャンク数を確認する方法[1]

SQL_USERSの内容〔ディクショナリ表〕[1]

SQL_VIEW_TABLE_USAGEの内容〔ディクショナリ表〕[1]

SQL_VIEWSの内容〔ディクショナリ表〕[1]

SQLサブノード[1]

SQLサブノード〔用語解説〕[1]

SQL処理リアルスレッド〔用語解説〕[1]

SQLトレース機能〔用語解説〕[1]

SQLトレース機能の運用[1]

SQLトレース機能の使用をやめる場合[1]

SQLトレース情報[1]

出力先ファイルの確認[1]

出力される情報[1]

出力時の運用[1]

出力情報の確認[1]

出力情報の変更[1]

出力の開始[1]

出力の停止[1]

出力例[1]

準備作業[1]

障害時の対処方法[1]

チューニング[1]

SQLトレース情報〔用語解説〕[1]

SQLトレースファイル[1]

バックアップの取得[1]

容量見積もり[1]

SQLパラレル実行機能[1]

運用[1]

準備作業[1]

SQLパラレル実行機能〔用語解説〕[1]

SQLパラレル実行機能に関する情報〔SQLトレース情報〕[1]

SQL文実行時またはコマンド実行時にメモリが不足した場合の対処方法[1]

SQL文に関するオペランド（set形式）[1]

SQL文の基本情報〔SQLトレース情報〕[1]

SQL文の実行時間の短縮に関するチューニング[1]

SQL文の実行時間を短縮する方法〔チューニング〕[1]

SQL文の実行情報〔SQLトレース情報〕[1]

SQL文の実行待ち状態の発生防止〔チューニング〕[1]

SQL文の処理時間の短縮〔チューニング〕[1]

SQL文の統計情報〔SQLトレース情報〕[1]

SQL文の統計情報の運用方法[1]

SQLメインノード[1]

SQLメインノード〔用語解説〕[1]

SQLメインノードとSQLサブノードを確認する場合[1]

SR〔排他制御モード〕[1]

standbypriオペランド

マルチノード機能[1]

STATUS_CHUNKSの内容〔システム表〕[1]

チャンクの状態や作成されているチャンク数を確認する方法[1]

STATUS_COLUMNSの内容〔システム表〕[1]

STATUS_INDEXESの内容〔システム表〕[1]

STATUS_SYNONYM_DICTIONARIESの内容〔システム表〕[1]

STATUS_TABLESの内容〔システム表〕[1]

SU〔排他制御モード〕[1]

SVP[1]

sysdefファイルの指定

AWS環境でのコールドスタンバイ構成[1]

Azure環境でのコールドスタンバイ構成[1]

コールドスタンバイ構成[1]

マルチノード機能[1]

sysdefファイルの指定例

AWS環境でのコールドスタンバイ構成[1]

AWS環境でのマルチノード構成[1]

Azure環境でのコールドスタンバイ構成[1]

Azure環境でのマルチノード構成[1]

コールドスタンバイ構成[1], [2]

マルチノード機能[1], [2]

syslog〔メッセージ〕[1]

syslogに出力されるメッセージの内容[1]

syslogのアクセス権限の変更[1]

syslogの文字コード変換と信頼性向上（拡張SYSLOG機能の適用）[1]

syslogへのメッセージの出力抑止[1]

systemd-coredumpが有効かどうかを確認する[1]

T

termcmd_at_abortオペランド

コールドスタンバイ構成[1]

マルチノード機能[1]

termcommandオペランド

コールドスタンバイ構成[1]

マルチノード機能[1]

TEXT WORDCONTEXT

ワード検索用のテキストインデクスの指定[1]

threads-max〔カーネルパラメタ〕[1]

TLB[1]

TRUNCATE TABLE文

実表の全行を削除する方法[1]

マルチチャンク表に格納されているデータを一括削除する[1]

TRUNCATE TABLE文実行時に出力されるユーザログ容量（変数max_user_log）の求め方[1]

TRUNCATE権限[1]

TZ〔環境変数〕[1]

U

udevルールの設定

AWS環境でのコールドスタンバイ構成[1]

AWS環境でのマルチノード構成[1]

Azure環境でのコールドスタンバイ構成[1]

Azure環境でのマルチノード構成[1]

UNARCHIVE CHUNK権限[1]

uoc_neckオペランド

コールドスタンバイ構成[1]

マルチノード機能[1]

UPDATE権限[1]

UPDATE文

実表のデータを検索・更新する方法[1]

usrcommandオペランド

マルチノード機能[1]

V

VARBINARY型の列データの分岐指定（BRANCH）[1]

VARCHAR型の列データの分岐指定（BRANCH）[1]

VARCHAR型の列のデータ長を長くする方法[1]

vg_neckオペランド

コールドスタンバイ構成[1]

マルチノード機能[1]

W

waitserv_execオペランド

コールドスタンバイ構成[1]

マルチノード機能[1]

WAITモード[1]

wmem_default〔カーネルパラメタ〕[1]

wmem_max〔カーネルパラメタ〕[1]

あ

アーカイブ状態〔用語解説〕[1]

アーカイブ状態のチャンク[1]

アーカイブする方法[1]

アーカイブディレクトリ[1]

アーカイブディレクトリのパス名を確認する場合[1]

アーカイブディレクトリ〔用語解説〕[1]

アーカイブディレクトリに関するトラブル[1]

アーカイブディレクトリの空き容量が不足したときの対処方法[1]

アーカイブファイルに障害が発生したときの対処方法[1]

アーカイブディレクトリの空き容量が不足したときの対処方法[1]

アーカイブディレクトリの事前見積もり[1]

アーカイブディレクトリの容量見積もり[1]

アーカイブファイル[1]

アーカイブファイル〔用語解説〕[1]

アーカイブファイルに障害が発生したときの対処方法[1]

アーカイブマルチチャンク表[1]

アーカイブする方法[1]

アーカイブディレクトリの容量見積もり[1]

アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更する方法[1]

アーカイブレンジ列として指定する列にレンジインデクスが定義されているかどうかを調べる[1]

アンアーカイブする方法[1]

マルチチャンク表を削除する方法[1]

マルチチャンク表を定義する方法[1]

アーカイブマルチチャンク表〔用語解説〕[1]

アーカイブマルチチャンク表かどうかを調べる場合[1]

アーカイブマルチチャンク表のアーカイブディレクトリを調べる[1]

アーカイブマルチチャンク表のアーカイブレンジ列に定義されたレンジインデクスを調べる[1]

アーカイブマルチチャンク表のアーカイブレンジ列の列名を調べる[1]

アーカイブマルチチャンク表の検索[1]

アーカイブマルチチャンク表のデータを検索・更新するときの注意事項[1]

アーカイブマルチチャンク表を定義する場合の考慮点[1]

アーカイブレンジ列[1]

アーカイブレンジ列かどうかを確認する場合[1]

アーカイブレンジ列〔用語解説〕[1]

アーカイブレンジ列として指定する列にレンジインデクスが定義されているかどうかを調べる[1]

空き容量の確保〔データ用DBエリア〕[1]

実表の再編成[1]

データの圧縮（チャンクのアーカイブ）[1]

不要なデータの削除[1]

アクセス権限[1]

ARCHIVE CHUNK権限[1]

CHANGE CHUNK COMMENT権限[1]

CHANGE CHUNK STATUS権限[1]

COPY権限[1]

DELETE権限[1]

EXPORT TABLE権限[1]

GET COSTINFO権限[1]

IMPORT TABLE権限[1]

INSERT権限[1]

MERGE CHUNK権限[1]

REBUILD INDEX権限[1]

REFERENCES権限[1]

SELECT権限[1]

TRUNCATE権限[1]

UNARCHIVE CHUNK権限[1]

UPDATE権限[1]

依存権限[1]

ビュー表[1]

複数のスキーマオブジェクトにアクセスする場合[1]

付与権[1]

アクセス権限〔用語解説〕[1]

アクセス権限の管理[1]

HADBユーザが持っているアクセス権限を確認する方法[1]

HADBユーザが持っているアクセス権限を変更する方法[1]

HADBユーザにアクセス権限を付与する方法[1]

アクセス権限の付与権だけを取り消す方法[1]

アクセス権限を取り消す方法[1]

アクセス権限の種類[1]

アクセス権限の伝搬[1]

アクセス権限の取り消し[1]

アクセス権限の付与[1]

アクセス権限の付与権だけを取り消す方法[1]

アクセス権限を調べる[1]

アクセス権限を取り消す方法[1]

アクセス処理方式〔データベース〕[1]

アクセスパス情報〔SQLトレース情報〕[1]

アクセスパス探索情報ログファイルの容量見積もり[1]

アクセスパスの統計情報〔SQLトレース情報〕[1]

アクセスパスの統計情報の出力例と出力項目[1]

アクセス頻度の高い列と低い列がある場合〔表の正規化〕[1]

圧縮方式〔カラムストア表〕[1]

アンアーカイブする方法[1]

アンインストール[1]

アンインストール後に実施する作業〔HADBサーバ〕[1]

アンインストール手順

HADBオプション[1]

HADBサーバ[1]

暗号化〔DBエリア〕[1]

暗号化されているデータを破棄する場合[1]

暗号化対象のDBエリアの一覧を表示する[1]

暗号化対象のDBエリアを調べる[1]

暗号化対象のデータ用DBエリアを追加する[1]

暗号管理権限[1], [2]

暗号管理権限を取り消す方法[1]

暗号管理権限を付与する方法[1]

アンロード〔用語解説〕[1]

アンロードファイル

アンロードファイルを格納するディスク容量が小さい場合[1]

アンロードファイル〔用語解説〕[1]

アンロードファイルに関するトラブル[1]

アンロードファイルを格納するディスクの空き容量が不足したときの対処方法[1]

アンロードファイルの格納ディレクトリの事前見積もり[1]

アンロードファイルの容量見積もり[1]

アンロードファイルを格納するディスクの空き容量が不足したときの対処方法[1]

アンロードファイルを格納するディスクの空き容量が不足しているかどうかを確認する方法[1]

い

異常終了〔HADBサーバ〕[1]

依存権限[1]

依存権限〔用語解説〕[1]

依存するビュー表[1]

依存するビュー表〔用語解説〕[1]

依存するビュー表を確認する方法[1]

一意性制約[1], [2]

一意性制約〔用語解説〕[1]

一意性制約違反状態〔ユニークインデクス〕[1]

一意性制約違反状態かどうかを確認する[1]

一意性制約違反状態かどうかを確認する方法[1]

一意性制約違反状態を解除する方法[1]

一意性制約定義[1]

一意性制約に違反した場合の対処方法[1]

一括先読み〔レンジインデクス〕[1]

イベントログ[1]

入れ替え[1], [2]

インスタンスが異常終了した場合

コールドスタンバイ構成[1]

マルチノード機能[1]

インスタンスを再起動する場合

コールドスタンバイ構成[1]

マルチノード機能[1]

インストール[1]

AWS CLI[1]

Azure CLI[1]

Docker環境[1]

HADBオプション[1]

HADBサーバ[1]

HAモニタ〔コールドスタンバイ構成〕[1]

HAモニタ〔マルチノード機能〕[1]

Kubernetes環境[1]

インストール後に実施する作業[1]

インストール前に実施する作業[1]

HADB管理グループに所属するOSユーザの設定[1]

HADB管理グループの設定[1]

HADB管理者の設定[1]

syslogのアクセス権限の変更[1]

サーバディレクトリを格納するディレクトリの作成[1]

サーバディレクトリを格納するディレクトリの設定の変更[1]

通信情報ファイルを格納するディレクトリの作成[1]

インデクス

B-treeインデクス[1]

インデクスが格納されているデータ用DBエリアを変更する方法[1]

テキストインデクス[1]

レンジインデクス[1]

インデクスIDからインデクスが定義された表の表名を調べる場合[1]

インデクスIDからインデクスが定義された列の列名を調べる場合[1]

インデクスIDからインデクスのインデクス名を調べる場合[1]

インデクスオプションの確認

テキストインデクス[1]

インデクスが格納されているDBエリア名を調べる場合[1]

インデクス構成列IDリストの形式[1]

インデクス再作成〔用語解説〕[1]

インデクスに関するオペランド（set形式）[1]

インデクスの一覧

システム表（実表）[1]

ディクショナリ表（実表）[1]

インデクスの再作成

B-treeインデクス[1]

テキストインデクス[1]

レンジインデクス[1]

インデクスの削除[1]

インデクスの種類[1]

インデクスの定義〔CREATE INDEX文〕[1]

インデクスの定義情報を調べる場合[1]

インデクスの未完状態

B-treeインデクス[1]

テキストインデクス[1]

レンジインデクス[1]

インデクスの未完状態を解除する

コールドスタンバイ構成[1]

マルチノード機能[1]

インデクスページ

B-treeインデクス[1]

テキストインデクス[1]

レンジインデクス[1]

インデクスページスプリット

B-treeインデクス[1]

テキストインデクス[1]

インデクスページスプリットの発生を抑える

B-treeインデクス[1]

テキストインデクス[1]

インデクスページ内の未使用領域の確保（PCTFREE）

B-treeインデクス[1]

テキストインデクス[1]

インデクスを作成する〔マルチノード機能〕[1]

インポート

実表にデータを格納する方法（データインポート）[1]

う

ウイルス対策ソフトによるスキャン対象の見直し[1]

運用項目の一覧〔HADBサーバ〕[1]

え

エクスポート

実表のデータをファイルに出力する方法（データをエクスポートする方法）[1]

チャンク単位にデータをエクスポートする方法[1]

ビュー表のデータをファイルに出力する方法（データをエクスポートする方法）[1]

エントリページ[1]

お

オフラインモード〔HADBサーバの稼働モード〕[1]

オンプレミス環境からAWS環境への移行[1]

か

カーネルパラメタ〔dockerd〕[1]

カーネルパラメタ〔DockerおよびKubernetesを使用したシステム構成〕[1]

カーネルパラメタの設定[1]

カーネルパラメタの見積もり[1]

改行コード〔サーバ定義〕[1]

開始処理完了の確認〔HADBサーバ〕[1]

開始手順

コールドスタンバイ構成[1]

マルチノード構成[1]

開始方法〔HADBサーバ〕[1]

開始モード

HADBサーバ[1]

コールドスタンバイ構成[1]

マルチノード構成[1]

外部キー[1]

実表の制約に関する情報（主キーや外部キーの有無）を確認する場合[1]

主キーと外部キーの構成列に関する情報を確認する場合[1]

外部キー〔用語解説〕[1]

外部キーの指定（FOREIGN KEY）[1]

回復処理の流れ〔データベース〕[1]

回復方法〔データベース〕[1]

外部サーバ[1]

外部サーバ〔用語解説〕[1]

外部サーバを削除する方法[1]

外部サーバを使用している外部表の一覧を調べる[1]

外部サーバを定義する方法[1]

外部データ〔用語解説〕[1]

外部データアクセス用ライブラリ〔用語解説〕[1]

外部データアクセス用ライブラリ使用時のメモリ所要量の求め方[1]

外部データの検索[1]

外部データの検索〔マルチノード機能〕

外部表[1]

表関数導出表[1]

外部データファイル[1]

外部表[1]

外部表の運用[1]

外部表を検索する方法[1]

外部表を削除する方法[1]

外部表を定義する方法[1]

外部表〔用語解説〕[1]

外部表の検索[1]

下位ページ用のセグメント[1]

下位ページ用のセグメントで使用する格納ページ数の求め方[1]

拡張SYSLOG機能[1]

格納位置の変更〔DBエリアファイル〕[1]

格納効率〔システム表（実表）〕[1]

格納効率〔ディクショナリ表（実表）〕[1]

格納先〔サーバ定義の格納先〕[1]

カスタムロールの作成

サービスプリンシパルを使用する場合[1]

マネージドIDを使用する場合[1]

仮想DBエリアファイル

AWS環境の場合[1]

Azure環境の場合[1]

仮想DBエリアファイル〔用語解説〕[1]

仮想マシンが異常終了した場合

コールドスタンバイ構成[1]

マルチノード機能[1]

仮想マシンを再起動する場合

コールドスタンバイ構成[1]

マルチノード機能[1]

稼働モード[1]

確認する方法[1]

変更する方法[1]

マルチノード機能[1]

可変長データ型の列データの分岐指定（BRANCH）[1]

カラムストア形式[1]

カラムストア形式〔用語解説〕[1]

カラムストア表[1]

圧縮方式[1]

カラムストア表の列データの圧縮方式を確認する場合[1]

カラムストア表をローストア表に変更する方法[1]

実表のデータを検索・更新する方法[1]

実表を定義する方法[1]

制限事項[1]

選択基準[1]

表の種類（ローストア表またはカラムストア表）を確認する場合[1]

ローストア表をカラムストア表に変更する方法[1]

カラムストア表〔用語解説〕[1]

カラムストア表かどうかを調べる場合[1]

カラムストア表の一覧を調べる場合[1]

カラムデータ用セグメント[1]

カレントチャンク〔用語解説〕[1]

カレントチャンクの切り替え[1]

カレントチャンクの情報を調べる[1]

環境構築〔DockerおよびKubernetesを使用したHADB〕[1], [2]

環境変数の設定[1]

AWS環境でのコールドスタンバイ構成[1]

Azure環境でのコールドスタンバイ構成[1]

HAモニタ〔コールドスタンバイ構成〕[1]

HAモニタ〔マルチノード機能〕[1]

監査管理権限[1], [2]

監査権限[1], [2]

用語解説[1]

監査権限の取り消し[1]

監査権限の付与[1]

監査参照権限[1], [2]

監査証跡機能[1], [2]

JP1/Auditとの連携[1]

イベントの選定[1]

運用例[1]

環境設定〔マルチノード機能〕[1]

検討項目[1]

コールドスタンバイ構成[1]

推奨運用[1]

マルチノード機能[1]

有効化と無効化[1]

用語解説[1]

監査証跡機能で使用するサーバ定義の指定[1]

監査証跡機能で使用するディスクの設計[1]

監査証跡機能で使用するディレクトリの準備[1]

監査証跡機能で使用するディレクトリの容量見積もり[1]

監査証跡機能とJP1/Auditの連携

adbconvertaudittrailfileコマンドを実行する際の注意事項[1]

環境設定[1]

サーバ構成と前提ソフトウェア[1]

システム構成例[1]

統一フォーマット用監査証跡ファイルの形式と出力項目[1]

監査証跡機能に関するオペランド（set形式）[1]

監査証跡機能の環境設定[1]

監査証跡機能の使用をやめる場合[1]

監査証跡機能の定期運用[1]

監査証跡機能の動作状況の確認[1]

監査証跡機能のトラブルシュート[1]

監査証跡機能の非定期運用[1]

監査証跡機能の無効化[1]

監査証跡機能の有効化[1]

監査証跡の参照

ADB_AUDITREAD関数を使用した監査証跡の確認[1]

CSV形式による監査証跡の確認[1]

監査証跡の出力契機と出力項目[1]

監査証跡の出力先ディスク[1]

監査証跡の出力先ディレクトリ[1]

容量見積もり[1]

監査証跡の出力先ディレクトリを作成したディスクが満杯になった場合の対処方法[1]

監査証跡の出力先ディレクトリを作成したディスクで障害が発生した場合の対処方法[1]

監査証跡の長期保存先ディスク[1]

監査証跡のデータ容量の見積もり[1]

監査証跡の変換[1]

監査証跡の保存先ディスク[1]

監査証跡ファイル[1]

用語解説[1]

リネーム規則[1]

監査証跡ファイルの圧縮率の見積もり[1]

監査証跡ファイルの移動（監査証跡の長期保存先ディレクトリへの移動）[1]

監査証跡ファイルの移動（監査証跡の保存先ディレクトリへの移動）[1]

監査証跡ファイルの切り替え[1]

監査証跡ファイルへの書き込みに失敗した場合の処理方式の検討[1]

監査証跡をCSV形式に変換する[1]

監査証跡を検索するときの表関数導出表の列構成[1]

監査対象イベント[1]

用語解説[1]

監査対象イベントと表関数導出表の列構成[1]

監査対象イベントの一覧と出力項目[1]

監査対象定義

用語解説[1]

監査対象定義の確認[1]

監査対象定義の検討[1]

監査対象定義の削除[1]

監査対象定義の変更[1]

監査対象の定義[1]

監査人[1]

用語解説[1]

監査人が持っている監査権限を調べる場合[1]

監査人の削除[1]

監査人の作成[1]

監査人の選定[1]

監査人の追加[1]

監査人の認可識別子を調べる場合[1]

監査人の変更[1]

監視対象メッセージ[1]

監視パス

AWS環境でのコールドスタンバイ構成[1], [2]

Azure環境でのコールドスタンバイ構成[1]

コールドスタンバイ構成[1]

完全一致検索

ワード検索[1]

き

擬似スレッド〔用語解説〕[1]

擬似スレッドの確認[1]

記述形式〔サーバ定義〕[1]

記述順序〔サーバ定義〕[1]

既定のキャッシュグループ

AWS環境の場合[1]

Azure環境の場合[1]

既定のキャッシュグループ〔用語解説〕[1]

基本行[1]

基本行〔用語解説〕[1]

基本行用セグメント[1]

基本行用ページ[1]

キャッシュグループ

AWS環境の場合[1]

Azure環境の場合[1]

キャッシュグループ〔用語解説〕[1]

キャッシュグループに関するオペランドおよびオプション（コマンド形式）[1]

キャッシュファイル

AWS環境の場合[1]

Azure環境の場合[1]

キャッシュファイル〔用語解説〕[1]

キャッシュファイルの再利用

AWS環境の場合[1]

Azure環境の場合[1]

キャッシュファイルの状態確認[1]

行IDディレクトリページ[1]

行IDリストページ[1]

強制終了〔HADBサーバ〕[1]

強制終了〔コールドスタンバイ構成〕[1]

強制終了〔マルチノード構成〕[1]

行長の固定（FIX指定）[1]

行の継続〔サーバ定義〕[1]

行の種別ごとの格納ページ数の求め方[1]

共有更新モード[1]

共有参照モード[1]

共有ディスク[1]

共有ディスクのSCSIリザーブ

コールドスタンバイ構成[1]

マルチノード機能[1]

用語解説[1]

共有ディスクのデータの保護方法

コールドスタンバイ構成[1]

マルチノード機能[1]

共有メモリ[1]

共有メモリ管理の所要量の求め方（adbinitコマンド実行時）[1]

共有メモリ管理の所要量の求め方（HADBサーバ開始時）[1]

共有メモリ管理用のメモリ[1]

共有メモリの使用状況を確認したい場合[1]

共有メモリの所要量の求め方[1]

行を格納するセグメントが割り当てられている状態[1]

切り替え

現用の監査証跡ファイル[1]

く

区切り文字

ワード検索[1]

ワード検索時の区切り文字の選択（DELIMITER）[1]

クライアント－サーバ間ネットワーク

Azure環境でのコールドスタンバイ構成[1]

Azure環境でのマルチノード構成[1]

Azure環境の場合[1]

クライアント−サーバ間ネットワーク

AWS環境でクラウドストレージ機能を使用する場合[1]

AWS環境でのコールドスタンバイ構成[1], [2]

AWS環境でのマルチノード構成[1], [2]

HAモニタありのマルチノード構成の場合[1]

HAモニタなしのマルチノード構成の場合[1]

コールドスタンバイ構成[1]

クライアント管理定義の指定形式[1]

クライアント管理定義の指定形式の説明[1]

クライアント管理定義ファイル[1], [2]

クライアントグループ[1]

クライアントグループ機能[1]

クライアントグループ機能を適用する際の考慮点[1]

クライアントグループの設定内容の確認[1]

グループごとの接続数・処理リアルスレッド数の設定[1]

グループの種類[1]

グループの処理リアルスレッド数を設定する際の考慮点[1]

グループの接続数を設定する際の考慮点[1]

最大同時接続数[1]

最大同時接続数に関する警告メッセージの出力[1]

使用できる処理リアルスレッドの最大数[1]

使用できる処理リアルスレッドの保証数[1]

接続保証数[1]

クライアントグループ機能〔用語解説〕[1]

クライアントグループ機能で設定できるグループの種類[1]

クライアントグループ機能に関するオペランドおよびオプション（コマンド形式）[1]

クライアントグループ機能の概要[1]

クライアントグループ機能を適用する際の考慮点[1]

クライアントグループの設定内容の確認[1]

クライアント定義〔用語解説〕[1]

クライアント定義情報〔SQLトレース情報〕[1]

クライアント定義の作成

コールドスタンバイ構成[1]

マルチノード機能[1]

クライアント定義の集中管理機能[1]

新たにクライアント定義の集中管理機能を使用する方法[1]

クライアント定義の集中管理機能の使用をやめる方法[1]

クライアント定義の集中管理機能の適用内容を変更する方法[1]

使用例[1]

適用例[1]

マルチノード機能の使用時[1]

クライアント定義の集中管理機能〔用語解説〕[1]

クライアント定義の集中管理機能で使用するクライアント定義ファイル[1]

クライアント定義の集中管理機能で必要なファイル[1]

クライアント定義の集中管理機能の使用時に必要なファイル

クライアント管理定義ファイル[1]

クライアント定義の集中管理機能を使用する流れ[1]

クライアント定義の集中管理の運用[1]

クライアント定義ファイル

HADBクライアントで管理するクライアント定義ファイル[1]

クライアント定義の集中管理機能[1]

クライアントディレクトリ〔用語解説〕[1]

クライアントディレクトリの回復[1]

クライアントメッセージログファイル[1]

クラウド環境でHADBサーバを使用する[1]

クラウド環境の構築

クラウドストレージ機能を使用する場合[1]

クラウドストレージ機能

AWS環境の場合[1]

Azure環境の場合[1]

運用[1]

クラウドストレージ機能〔用語解説〕[1]

クラウドストレージ機能使用時のメモリ所要量の求め方[1]

クラウドストレージ機能に関するオペランド（set形式）[1]

クラウドストレージ機能のシステムディレクトリ対応オプション[1]

クラウドストレージ機能のシステムディレクトリ対応オプション〔用語解説〕[1]

クラウドストレージ機能用ライブラリ

AWS環境の場合[1]

Azure環境の場合[1]

クラウドストレージ機能用ライブラリ〔用語解説〕[1]

クラウドストレージ機能を使用しない環境への移行[1]

グループ

クライアントグループ[1]

コマンドグループ[1]

グループごとの接続数・処理リアルスレッド数の設定[1]

グループの処理リアルスレッド数を設定する際の考慮点[1]

グループの接続数を設定する際の考慮点[1]

グローバル作業表用のグローバルバッファのページ数の見積もり[1]

グローバル作業表を作成するSQL文の実行時間を短縮する方法〔チューニング〕[1]

グローバルバッファ[1]

グローバルバッファ〔用語解説〕[1]

グローバルバッファに関するオペランドおよびオプション（コマンド形式）[1]

グローバルバッファの統計情報の運用方法[1]

グローバルバッファのページ数の見積もり〔レンジインデクス〕[1]

グローバルバッファの見直しによるメモリ使用量の削減〔チューニング〕[1]

グローバルバッファの割り当て〔マルチノード機能〕[1]

グローバルバッファページの所要量の求め方（HADBサーバ開始時）[1]

グローバルバッファ用のメモリ[1]

け

計画系切り替え

コールドスタンバイ構成[1]

マルチノード機能[1]

系切り替え機能[1]

系のリセット

コールドスタンバイ構成[1]

マルチノード機能[1]

用語解説[1]

系復帰[1]

権限[1]

HADBユーザが参照できるディクショナリ表とシステム表の範囲[1]

HADBユーザに権限を付与する例[1]

アクセス権限[1]

暗号管理権限[1]

監査権限[1]

権限の種類[1]

スキーマ操作権限[1]

ユーザ権限[1]

ユーザ権限とスキーマ操作権限の管理[1]

権限〔用語解説〕[1]

検索

CSVファイル中のデータ[1]

外部データ[1]

外部表[1]

システム表[1]

ディクショナリ表[1]

検索系SQL〔用語解説〕[1]

検知なし〔検知モード〕[1]

検知モード[1]

現用の監査証跡ファイル[1]

adbconvertaudittrailfileコマンド[1]

現用の監査証跡ファイルの切り替え[1], [2]

こ

コアファイルの容量見積もり[1]

公開鍵ファイルの更新〔PAM認証〕[1]

更新可能ビュー表[1]

更新行のカラム化機能[1]

エラーが発生した場合の対処[1]

コールドスタンバイ構成[1]

トラブルシュート[1]

マルチノード機能[1]

メンテナンス処理が実行されない場合[1]

有効にする[1]

更新行のカラム化機能〔用語解説〕[1]

更新行のカラム化機能に必要なファイルの容量見積もり[1]

更新行のカラム化機能の対象となる表を調べる[1]

更新行のカラム化機能のメンテナンス処理に必要なユーザログ容量（変数max_user_log）の求め方[1]

更新系SQL〔用語解説〕[1]

更新処理方式[1]

更新不可状態〔実表〕[1]

構成

DBディレクトリ[1]

サーバディレクトリ（インストール時）[1]

サーバディレクトリ（運用時）[1]

コール[1]

コールドスタンバイ構成

AWS環境[1]

Azure環境[1]

HADBサーバのインストールおよび環境設定[1]

HADBサーバへの接続[1]

JP1/Audit Management - Managerとの連携[1]

運用方法[1]

サーバ構成〔オンプレミス環境〕[1]

サーバマシンのOSのホスト名・IPアドレスの変更[1]

システム構成例〔オンプレミス環境〕[1]

前提ソフトウェア〔オンプレミス環境〕[1]

ネットワーク構成〔オンプレミス環境〕[1]

バージョンアップ[1]

コールドスタンバイ構成〔用語解説〕[1]

コールドスタンバイ構成の開始手順[1]

コールドスタンバイ構成の終了手順[1]

コールドスタンバイ構成への系復帰[1]

コスト情報〔用語解説〕[1]

コスト情報の収集[1]

コスト情報を収集した全インデクスのインデクス名と収集日時を調べる[1]

コスト情報を収集した全実表の表名と収集日時を調べる[1]

コスト情報を収集する[1]

コスト情報を収集するタイミング[1]

コネクション状態に関する情報〔SQLトレース情報〕[1]

コネクションの稼働情報の運用方法[1]

コネクションハンドル〔用語解説〕[1]

後発検知〔検知モード〕[1]

コマンドが応答待ちタイムアウトになる場合の対処方法[1]

コマンドが再実行できない場合の対処方法

adbidxrebuildコマンド[1]

adbimportコマンド[1]

adbunarchivechunkコマンド[1]

コマンドが実行できない場合の対処方法[1]

コマンドが終了しない場合の対処方法[1]

コマンドグループ[1]

コマンド形式〔サーバ定義〕[1]

コマンド実行時に増加するデータ量の見積もり[1]

コマンド実行時の作業用一時ファイルの容量見積もり[1]

コマンド実行時の作業用一時ファイルを格納するディスクの空き容量が不足した場合の対処方法[1]

作業用一時ファイルを格納するディスクの空き容量が不足しているかどうかを確認する方法[1]

作業用一時ファイルを格納するディスク容量が小さい場合（adbimportコマンドまたはadbidxrebuildコマンドが中断したとき）[1]

作業用一時ファイルを格納するディスク容量が小さい場合（adbmergechunkコマンド，adbunarchivechunkコマンドまたはadbreorgsystemdataコマンドが中断したとき）[1]

ディスクに不要な作業用一時ファイルが残っている場合[1]

コマンドステータスファイル〔用語解説〕[1]

コマンド同時実行時のシステムログファイルの容量に関する考慮点[1]

コマンド同時実行時の排他制御に関する考慮点[1]

コマンド同時実行時のメモリ所要量に関する考慮点[1]

コマンドに関するオペランド（set形式）[1]

コマンドに関するトラブル[1]

コマンドによるプライマリノードの切り替え[1]

コマンドの最大同時実行数[1]

コマンドの実行〔DockerおよびKubernetesを使用したHADBの運用〕[1]

コマンドの実行時間の短縮に関するチューニング[1]

コマンドの実行時に使用する処理リアルスレッド数に関する考慮点[1]

コマンドの実行時に使用する処理リアルスレッド数の最大値[1]

コマンドの実行時に使用する処理リアルスレッド数を指定するオペランドとコマンドオプション[1]

コマンド用環境変数定義の作成

AWS環境でのコールドスタンバイ構成[1]

AWS環境でのマルチノード構成[1]

Azure環境でのコールドスタンバイ構成[1]

Azure環境でのマルチノード構成[1]

コールドスタンバイ構成[1]

マルチノード機能[1]

コマンドを同時実行する際の考慮点[1]

コマンドを同時実行するときの処理リアルスレッド数の目安[1]

コメント〔サーバ定義〕[1]

コメントを設定する方法〔チャンク〕[1]

コンテナー[1]

コンテナ構成〔DockerおよびKubernetesを使用したシステム構成〕[1]

コンマ〔サーバ定義〕[1]

さ

サーバ構成と前提ソフトウェア

監査証跡機能とJP1/Auditの連携[1]

サーバ定義

BOM[1]

オペランドの指定形式[1]

オペランドの内容[1]

改行コード[1]

格納先[1]

記述形式[1]

記述順序[1]

行の継続[1]

コメント[1]

コンマ[1]

サーバ定義の設計[1]

作成方法[1]

文法規則[1]

変更方法[1]

文字列の識別規則[1]

サーバ定義およびコマンドオプションの指定値を見直す〔バージョンアップ後の作業〕

adb_arcv_rthd_num[1]

adb_cmd_rthd_num[1]

adb_export_rthd_num[1]

adb_getcst_rthd_num[1]

adb_idxrebuild_rthd_num[1]

adb_import_rthd_num[1]

adb_mergechunk_rthd_num[1]

adb_unarcv_rthd_num[1]

サーバ定義のオペランド

DBエリア暗号化機能に関するオペランド（set形式）[1]

Keycloak認証に関するオペランド（set形式）[1]

PAM認証に関するオペランド（set形式）[1]

SQL文に関するオペランド（set形式）[1]

インデクスに関するオペランド（set形式）[1]

監査証跡機能に関するオペランド（set形式）[1]

キャッシュグループに関するオペランドおよびオプション（コマンド形式）[1]

クライアントグループ機能に関するオペランドおよびオプション（コマンド形式）[1]

クラウドストレージ機能に関するオペランド（set形式）[1]

グローバルバッファに関するオペランドおよびオプション（コマンド形式）[1]

コマンドに関するオペランド（set形式）[1]

システム構成に関するオペランド（set形式）[1]

システムログに関するオペランド（set形式）[1]

状態監視に関するオペランド（set形式）[1]

性能に関するオペランド（set形式）[1]

同義語検索に関するオペランド（set形式）[1]

統計情報に関するオペランド（set形式）[1]

排他制御に関するオペランド（set形式）[1]

マルチノード機能に関するオペランド（set形式）[1]

メッセージに関するオペランド（set形式）[1]

サーバ定義の記述形式

set形式[1]

コマンド形式[1]

サーバ定義の作成

AWS環境でのコールドスタンバイ構成[1]

AWS環境でのマルチノード構成[1]

Azure環境でのコールドスタンバイ構成[1]

Azure環境でのマルチノード構成[1]

コールドスタンバイ構成[1]

マルチノード機能[1]

サーバ定義ファイル[1]

サーバディレクトリ[1]

サーバディレクトリ（インストール時）の構成[1]

サーバディレクトリ（運用時）の構成[1]

サーバディレクトリ〔用語解説〕[1]

サーバディレクトリの回復[1]

サーバディレクトリの削除〔アンインストール〕[1]

サーバディレクトリの事前見積もり[1]

サーバディレクトリを格納するディレクトリの作成[1]

サーバディレクトリを格納するディレクトリの設定の変更[1]

サーバの監視コマンドの作成

AWS環境でのコールドスタンバイ構成[1]

AWS環境でのマルチノード構成[1]

Azure環境でのコールドスタンバイ構成[1]

Azure環境でのマルチノード構成[1]

コールドスタンバイ構成[1]

マルチノード機能[1]

サーバの起動コマンドの作成

AWS環境でのコールドスタンバイ構成[1]

AWS環境でのマルチノード構成[1]

Azure環境でのコールドスタンバイ構成[1]

Azure環境でのマルチノード構成[1]

コールドスタンバイ構成[1]

マルチノード機能[1]

サーバの停止コマンドの作成

AWS環境でのコールドスタンバイ構成[1]

AWS環境でのマルチノード構成[1]

Azure環境でのコールドスタンバイ構成[1]

Azure環境でのマルチノード構成[1]

コールドスタンバイ構成[1]

マルチノード機能[1]

サーバプロセス[1]

サーバマシンのOSの時刻変更[1]

サーバマシンのOSの時刻を進める方法[1]

サーバマシンのOSの時刻を戻す方法[1]

サーバマシンのOSのホスト名・IPアドレスの変更[1]

コールドスタンバイ構成[1]

マルチノード機能[1]

サーバメッセージログファイル[1]

サーバメッセージログファイルの容量見積もり[1]

サービスプリンシパルの作成[1]

再開始

HADBサーバの再開始に掛かる処理時間が長い場合の対処方法[1]

再開始による回復処理の流れ[1]

再初期化〔データ用DBエリア〕[1]

最大値と最小値

システム構成[1]

データベース[1]

最大同時実行数〔コマンド〕[1]

最大同時接続数

クライアントグループ機能[1]

マルチノード機能[1]

最大同時接続数に関する警告メッセージの出力[1]

クライアントグループ機能[1]

最大要素数の決め方[1]

最大要素数の変更[1]

再編成

システム表[1]

シングルチャンク表を再編成する方法[1]

ディクショナリ表[1]

マルチチャンク表を再編成する方法〔サンプルシェル〕[1]

マルチチャンク表を再編成する方法〔チャンク単位〕[1]

マルチチャンク表を再編成する方法〔表全体〕[1]

再編成前のデータが残っているかどうかを確認する〔ディクショナリ表〕[1]

再編成前のデータが残っているかどうかを確認する〔システム表〕[1]

再編成要否の確認

シングルチャンク表[1]

マルチチャンク表[1]

作業表用DBエリア[1]

作業表用DBエリア〔用語解説〕[1]

作業表用DBエリアの運用[1]

コールドスタンバイ構成[1]

マルチノード機能[1]

作業表用DBエリアの設計[1]

作業表用DBエリアの総ページ数の求め方[1]

作業表用DBエリアのファイル構成の変更〔チューニング〕[1]

作業表用DBエリアの容量見積もり[1]

作業表用DBエリアファイル[1]

作業表用DBエリアファイルの格納場所を変更する方法[1]

作業表用DBエリアファイルの容量を小さくする方法[1]

作業表用ページ[1]

作業表を格納するために必要な基本行用ページ数の求め方[1]

作業用一時ファイル

作業用一時ファイルを格納するディスクの空き容量が不足しているかどうかを確認する方法[1]

作業用一時ファイルを格納するディスク容量が小さい場合（adbimportコマンドまたはadbidxrebuildコマンドが中断したとき）[1]

作業用一時ファイルを格納するディスク容量が小さい場合（adbmergechunkコマンド，adbunarchivechunkコマンドまたはadbreorgsystemdataコマンドが中断したとき）[1]

ディスクに不要な作業用一時ファイルが残っている場合[1]

先読み〔レンジインデクス〕[1]

削除

チャンク単位にデータを削除する方法[1]

マルチチャンク表に格納されているデータを一括削除する[1]

削除〔Dockerイメージ〕[1]

削除〔Kubernetesのリソースオブジェクト〕[1]

削除仕掛中のチャンク[1], [2]

削除仕掛中のチャンク〔用語解説〕[1]

削除仕掛中のチャンクを調べる[1]

作成されたチャンクの数を調べる[1]

作成方法〔サーバ定義〕[1]

作成モード〔データインポート〕[1]

差分圧縮〔カラムストア表〕[1]

差分ランレングス圧縮〔カラムストア表〕[1]

参照制約

参照制約に関する情報を確認する場合[1]

参照制約〔用語解説〕[1]

参照表〔用語解説〕[1]

サンプルシェルを使用して再編成する場合[1]

し

時刻変更〔サーバマシンのOS〕[1]

辞書圧縮〔カラムストア表〕[1]

辞書情報登録ファイル[1]

作成する[1]

指定規則[1]

辞書ページ[1]

システム構成[1]

システム構成に関するオペランド（set形式）[1]

システム構成に関する最大値と最小値[1]

システム構成例

Azure環境でのコールドスタンバイ構成[1]

DockerおよびKubernetesを使用したHADBの運用[1]

監査証跡機能とJP1/Auditの連携[1]

システム構成例〔AWS環境でのコールドスタンバイ構成〕

クラウドストレージ機能を使用しない場合[1]

クラウドストレージ機能を使用する場合[1]

システム構成例〔AWS環境でのマルチノード構成〕

クラウドストレージ機能を使用しない場合[1]

クラウドストレージ機能を使用する場合[1]

ネットワーク構成[1], [2]

システム構成例〔Azure環境でのマルチノード構成〕[1]

ネットワーク構成[1]

システム構築の手順[1]

システム設計の流れ[1]

システムディレクトリ〔用語解説〕[1]

システムディレクトリ用のキャッシュグループ[1]

システム表[1]

システム表の状態や使用量を確認する方法[1]

システム表（実表）〔用語解説〕[1]

システム表（実表）のB-treeインデクス[1]

システム表（実表）の格納効率を確認する[1]

システム表（実表）の状態や使用量を確認する[1]

システム表（実表）の使用量を確認する[1]

システム表〔用語解説〕[1]

システム表が作成されるタイミング[1]

システム表の一覧[1]

システム表の概要[1]

システム表の検索[1]

カレントチャンクの情報を調べる[1]

コスト情報を収集した全インデクスのインデクス名と収集日時を調べる[1]

コスト情報を収集した全実表の表名と収集日時を調べる[1]

削除仕掛中のチャンクを調べる[1]

作成されたチャンクの数を調べる[1]

指定した期間内に作成されたチャンクやカレントチャンクから切り替わったチャンクのチャンクIDを調べる[1]

指定した期間に作成されたチャンクを調べる[1]

指定したコメントが含まれているチャンクを調べる[1]

指定した日時にデータが格納された可能性があるチャンクを調べる[1]

すべての同義語辞書に関する情報を調べる[1]

待機状態のチャンクを調べる[1]

チャンクIDからチャンクの情報を調べる[1]

チャンクがアーカイブ状態かどうかを調べる[1]

チャンクの作成日時から最古のチャンクIDを調べる[1]

チャンクの作成日時から最新のチャンクIDを調べる[1]

通常状態のチャンクを調べる[1]

同義語辞書に関する情報を調べる[1]

表名から表内の全チャンクの情報を調べる[1]

システム表の再編成[1]

adbreorgsystemdataコマンドの待ち状態を解消する方法[1]

システム表の再編成と排他制御[1]

システム表の状態や使用量を確認する方法[1]

システム表を再編成するタイミング[1]

システム表を再編成する方法[1]

システム表を再編成する理由[1]

マルチノード機能[1]

システム表の再編成〔用語解説〕[1]

システム表の容量見積もり[1]

システム表用DBエリア[1]

システム表用DBエリア〔用語解説〕[1]

システム表用DBエリアの容量見積もり[1]

システム表用DBエリアファイル[1]

システム用のチャンク[1]

システムログ[1]

システムログ〔用語解説〕[1]

システムログに関するオペランド（set形式）[1]

システムログの運用〔マルチノード機能〕[1]

システムログファイル〔用語解説〕[1]

システムログファイルでトラブルが発生した場合の対処[1]

システムログファイルの運用方法[1]

システムログファイルの構成[1]

システムログファイルの作成先[1]

システムログファイルの容量に関する考慮点〔コマンド同時実行時〕[1]

システムログファイルの容量見積もり[1]

事前見積もり

adbarchivechunkコマンド実行時のメモリ所要量[1]

adbexportコマンド実行時のメモリ所要量[1]

adbgetcstコマンド実行時のメモリ所要量[1]

adbidxrebuildコマンド実行時のメモリ所要量[1]

adbimportコマンド実行時のメモリ所要量[1]

adbmergechunkコマンド実行時のメモリ所要量[1]

adbunarchivechunkコマンド実行時のメモリ所要量[1]

通常運用時のメモリ所要量[1]

実行系[1]

実行サーバ[1]

実表[1]

カラムストア表をローストア表に変更する方法[1]

更新不可状態になった場合[1]

実表が格納されているデータ用DBエリアを変更する方法[1]

実表にデータを格納する方法（データインポート）[1]

実表の運用[1]

実表の定義情報を調べる方法（ディクショナリ表の検索）[1]

実表のデータを検索・更新する方法[1]

実表を削除する方法[1]

実表を定義する方法[1]

状態や使用量を確認したい場合[1]

シングルチャンク表をマルチチャンク表に変更する方法[1]

全行を削除する方法[1]

データをファイルに出力する方法（データをエクスポートする方法）[1]

配列型の列を定義した実表の運用[1]

表定義を変更する方法[1]

表の設計[1]

表名を変更する方法[1]

列のデータ型を変更する方法[1]

列名を変更する方法[1]

列を削除する方法[1]

列を追加する方法[1]

列を追加できない場合[1]

ローストア表をカラムストア表に変更する方法[1]

実表に関するトラブル[1]

実表にデータをインポートする[1]

実表にデータを格納する

SQLパラレル実行機能を使用している場合[1]

マルチノード機能[1]

実表の更新不可状態[1]

実表の更新不可状態を解除する

コールドスタンバイ構成[1]

マルチノード機能[1]

実表の再編成に必要なファイルの容量見積もり[1]

実表の種類[1]

実表の定義情報を調べる場合[1]

実表を定義するHADBユーザを作成する[1]

指定した期間内に作成されたチャンクやカレントチャンクから切り替わったチャンクのチャンクIDを調べる[1]

指定した期間に作成されたチャンクを調べる[1]

指定したコメントが含まれているチャンクを調べる[1]

指定した日時にデータが格納された可能性があるチャンクを調べる[1]

自動再起動〔HADBサーバ〕[1]

自動増分[1]

自動増分の失敗が原因の場合[1]

修正版HADBオプションとの入れ替え[1]

修正版HADBサーバとの入れ替え[1]

コールドスタンバイ構成[1]

マルチノード機能[1]

集中管理

クライアント定義の集中管理機能[1]

終了形態〔マルチノード機能〕[1]

終了処理完了の確認〔HADBサーバ〕[1]

終了待機状態[1]

終了待機状態の確認方法[1]

終了待機状態の待ち時間[1]

終了手順

コールドスタンバイ構成[1]

マルチノード構成[1]

終了方法〔HADBサーバ〕[1]

終了モード

HADBサーバ[1]

コールドスタンバイ構成[1]

主キー[1]

実表の制約に関する情報（主キーや外部キーの有無）を確認する場合[1]

主キーと外部キーの構成列に関する情報を確認する場合[1]

主キーの指定内容を確認する場合[1]

主キー〔用語解説〕[1]

主キーと外部キーを構成する列名を調べる[1]

主キーに対応するインデクスのインデクス名を調べる[1]

主キーを参照する外部キーを調べる[1]

縮退運用[1]

縮退状態〔メッセージログファイル〕[1]

縮退状態を解除する〔メッセージログファイル〕[1]

出現情報管理部〔テキストインデクス〕[1]

出現情報管理部ページ〔テキストインデクス〕[1]

出現情報管理部用のセグメント〔テキストインデクス〕[1]

出現情報管理部用のセグメントで使用する格納ページ数の求め方[1]

出力

実表のデータをファイルに出力する方法（データをエクスポートする方法）[1]

チャンク単位にデータをエクスポートする方法[1]

ビュー表のデータをファイルに出力する方法（データをエクスポートする方法）[1]

取得方法〔バックアップ〕[1]

上位ページ[1]

上位ページ用のセグメント[1]

上位ページ用のセグメントで使用する格納ページ数の求め方[1]

障害

実行系[1]

待機系[1]

障害が発生した場合〔コールドスタンバイ構成〕[1]

障害管理プロセサ[1]

障害情報（コアファイル）の容量見積もり[1]

障害発生時の対処の流れ[1]

状態監視に関するオペランド（set形式）[1]

使用停止〔Docker〕[1]

使用停止〔DockerおよびKubernetes〕[1]

使用停止〔Kubernetes〕[1]

使用できる処理リアルスレッドの最大数〔クライアントグループ機能〕[1]

使用できる処理リアルスレッドの保証数〔クライアントグループ機能〕[1]

使用率の監視〔データ用DBエリア〕[1]

処理性能の向上に関するチューニング[1]

処理リアルスレッド〔用語解説〕[1]

処理リアルスレッド数に関する考慮点〔コマンド〕[1]

処理リアルスレッドの確保待ちの発生状況を確認する方法[1]

処理リアルスレッドの最大数〔クライアントグループ機能〕[1]

処理リアルスレッドの保証数〔クライアントグループ機能〕[1]

シングルチャンク表[1]

再編成要否の確認[1]

選択基準[1]

シングルチャンク表〔用語解説〕[1]

シングルチャンク表を再編成する方法[1]

シングルチャンク表をマルチチャンク表に変更する方法[1]

伸長[1]

す

スーパユーザ[1]

スキーマ[1]

スキーマの運用[1]

スキーマを削除する方法[1]

スキーマを定義する方法[1]

スキーマ，表，およびインデクスを定義する[1]

スキーマ〔用語解説〕[1]

スキーマオブジェクト[1]

スキーマオブジェクト〔用語解説〕[1]

スキーマ操作権限[1]

HADBユーザが持っているユーザ権限とスキーマ操作権限を確認する方法[1]

HADBユーザが持っているユーザ権限とスキーマ操作権限を取り消す方法[1]

HADBユーザにユーザ権限とスキーマ操作権限を付与する方法[1]

スキーマ定義権限[1]

スキーマ操作権限〔用語解説〕[1]

スキーマ定義権限[1]

スキーマ定義権限〔用語解説〕[1]

スキーマ名から定義された全インデクスのインデクス名を調べる場合[1]

スキーマ名から定義された全表の表名を調べる場合[1]

ステータス情報[1]

ステータスファイル〔用語解説〕[1]

ストライプサイズ[1]

ストレージ構成

Azure環境でのコールドスタンバイ構成[1]

Azure環境でのマルチノード構成[1]

Azure環境の場合[1]

DockerおよびKubernetesを使用したシステム構成[1]

オンプレミス環境でのコールドスタンバイ構成[1]

AWS環境でクラウドストレージ機能を使用する場合[1]

ストレージ構成〔AWS環境でのコールドスタンバイ構成〕

クラウドストレージ機能を使用しない場合[1]

クラウドストレージ機能を使用する場合[1]

ストレージ構成〔AWS環境でのマルチノード構成〕

クラウドストレージ機能を使用しない場合[1]

クラウドストレージ機能を使用する場合[1]

スレッドの確認[1]

せ

正規化[1]

正規表現を使用した検索[1]

静止モード〔HADBサーバの稼働モード〕[1]

正常終了

HADBサーバ[1]

コールドスタンバイ構成[1]

マルチノード構成[1]

正常終了の種類[1]

整数データ型のデータ形式〔用語解説〕[1]

性能に関するオペランド（set形式）[1]

制約

実表の制約に関する情報（主キーや外部キーの有無）を確認する場合[1]

セカンダリノード[1]

セカンダリノード〔用語解説〕[1]

セカンダリノードのHADBサーバだけを強制終了させる[1]

セカンダリノードのHADBサーバだけを正常終了させる[1]

セカンダリノードの削除[1]

セカンダリノードの新規追加[1]

adbinitコマンドを実行する際の留意事項[1]

セキュリティインシデント発生時の対処〔DBエリア暗号化機能〕[1]

セキュリティグループの設定[1]

セグメント[1]

セグメント〔用語解説〕[1]

セグメントが解放されるタイミング[1]

セグメントが割り当てられるタイミング[1]

セグメント管理部ページ[1]

セグメントサイズ〔用語解説〕[1]

セグメントの種類[1]

セグメントのスキップ〔レンジインデクス〕[1]

設計手順〔データベース〕[1]

接続構成設定ファイルの作成

AWS環境でのマルチノード構成[1]

Azure環境でのマルチノード構成[1]

接続保証数〔クライアントグループ機能〕[1]

遷移〔排他制御モード〕[1]

選択監査イベント[1]

前提OSおよび前提ソフトウェア〔DockerおよびKubernetesを使用したシステム構成〕[1]

前提ソフトウェアのセットアップ〔DockerおよびKubernetes〕[1]

前提パッケージの確認[1]

前方一致検索

ワード検索[1]

占有モード[1]

そ

操作系SQL〔用語解説〕[1]

ソートコード[1]

ソートコード〔用語解説〕[1]

外への参照列〔用語解説〕[1]

た

待機系[1]

待機サーバ[1]

待機サーバの監視コマンドの作成

AWS環境でのマルチノード構成[1]

Azure環境でのマルチノード構成[1]

待機サーバの停止コマンドの作成

AWS環境でのマルチノード構成[1]

Azure環境でのマルチノード構成[1]

待機状態のチャンク[1]

マルチチャンク表にインポートするデータを一時的に検索対象外にする方法[1]

待機状態のチャンク〔用語解説〕[1]

待機状態のチャンクを調べる[1]

待機状態のチャンクをマージする場合の注意点[1]

待機状態のチャンクを利用した運用〔バックグラウンドインポート〕[1]

体験環境構築ナビ[1]

よくある質問と対処方法[1]

単一列インデクス[1]

単一列インデクスと複数列インデクスの使い分け[1]

単一列インデクスを定義した方がよい場合[1]

単調増加するファイル（HADBサーバ）[1]

ち

値域〔レンジインデクス〕[1]

値域情報部ページ[1]

値域情報部用のセグメント[1]

チャンク[1]

アーカイブディレクトリの容量見積もり[1]

カレントチャンク[1]

シングルチャンク表をマルチチャンク表に変更する方法[1]

チャンクID[1]

チャンク単位にデータをエクスポートする方法[1]

チャンクの状態と実行できるSQL文・コマンドの関係[1]

チャンクの状態変更によるカレントチャンクの切り替え[1]

マージ元チャンクの削除と検索処理・更新処理の関係[1]

マルチチャンク表にインポートするデータを一時的に検索対象外にする方法（待機状態のチャンクの作成）[1]

チャンク〔削除仕掛中〕[1], [2]

チャンク〔システム用〕[1]

チャンク〔待機状態〕[1]

チャンク〔通常状態〕[1]

チャンク〔用語解説〕[1]

チャンクID〔用語解説〕[1]

チャンクIDからチャンクの情報を調べる[1]

チャンクアーカイブ機能[1]

チャンクアーカイブ機能〔用語解説〕[1]

チャンクがアーカイブ状態かどうかを調べる[1]

チャンク数の最大値の求め方[1]

チャンク数の最大値を大きくする方法〔KFAA51246-Eメッセージ〕[1]

チャンク数の最大値を変更する方法[1]

チャンク数を減らす方法〔KFAA51246-Eメッセージ〕[1]

チャンク数を変更できないときの対処方法〔KFAA51246-Eメッセージ〕[1]

チャンク単位で再編成する場合[1]

チャンク単位にデータを削除する方法[1]

チャンクとレンジインデクスの関係[1]

チャンクにコメントを設定する方法[1]

チャンクのアーカイブ[1]

チャンクのアーカイブ〔用語解説〕[1]

チャンクのアーカイブを意識した運用例[1]

チャンクのアンアーカイブ[1]

チャンクのアンアーカイブ〔用語解説〕[1]

チャンクの概要[1]

チャンクのコメントを変更する方法[1]

マルチノード機能[1]

チャンクの削除[1]

チャンクの作成日時から最古のチャンクIDを調べる[1]

チャンクの作成日時から最新のチャンクIDを調べる[1]

チャンクの状態と実行できるSQL文・コマンドの関係[1]

チャンクの状態変更[1]

運用例[1]

チャンクの状態変更によるカレントチャンクの切り替え[1]

チャンクの状態や作成されているチャンク数を確認する方法[1]

チャンクの状態を変更する方法[1]

マルチノード機能[1]

チャンクのスキップ〔レンジインデクス〕[1], [2]

チャンクのスキップができるレンジインデクスかどうかを調べる[1]

チャンクのスキップの可否〔レンジインデクス〕[1]

チャンクのスキップの設定〔レンジインデクス〕[1]

チャンクのマージ[1]

待機状態のチャンクをマージする場合の注意点[1]

チャンクのマージ〔用語解説〕[1]

チャンクのマージに伴うインデクスのデータ量の一時的な増加[1]

チャンクをアーカイブする方法[1]

チャンクをアンアーカイブする方法[1]

チャンクをマージする方法

マルチノード機能[1]

チャンクをマージする方法（チャンク数を減らす方法）[1]

中間ページ[1]

チューニング

adbarchivechunkコマンドの実行時間の短縮[1]

adbexportコマンドの実行時間の短縮[1]

adbgetcstコマンドの実行時間の短縮[1]

adbidxrebuildコマンドの実行時間の短縮[1]

adbimportコマンドの実行時間の短縮[1]

adbmergechunkコマンドの実行時間の短縮[1]

DBエリアの自動増分の発生防止[1]

HADBサーバ開始時間の短縮（HugePagesの適用）[1]

HugePagesを適用した共有メモリの使用量の削減[1]

SQLトレース情報[1]

SQL文の実行時間を短縮する方法[1]

SQL文の実行待ち状態の発生防止[1]

SQL文の処理時間の短縮[1]

グローバル作業表を作成するSQL文の実行時間を短縮する方法[1]

グローバルバッファの見直しによるメモリ使用量の削減[1]

作業表用DBエリアのファイル構成の変更[1]

チューニングを行う前に確認すること[1]

定義したテキストインデクスの見直し[1]

定義したレンジインデクスの見直し[1]

テーブルスキャンを実行するSQL文の実行時間を短縮する方法[1]

ハッシュグループ化領域サイズの見直しによるSQL文の実行時間の短縮[1]

ハッシュジョインが適用されるINNER JOINの結合順序の見直しによるSQL文の実行時間の短縮[1]

ハッシュテーブル領域サイズの見直しによるSQL文の実行時間の短縮[1]

ハッシュフィルタ領域サイズの見直しによるSQL文の実行時間の短縮[1]

表定義プールサイズの見直しによるSQL文の実行時間の短縮[1]

ユーザログバッファ面数の拡張[1]

ユーザログファイルの縮小化容量の見直し[1]

ユーザログファイルの初期化容量の拡張[1]

レンジインデクスの一括先読み[1]

ローカル作業表用バッファの見直しによるメモリ使用量の削減[1]

ローカル作業表を作成するSQL文の実行時間を短縮する方法[1]

重複したキー値を検索する〔一意性制約違反状態の解除〕[1]

つ

追加モード〔データインポート〕[1]

追記型の更新処理方式[1]

通常運用時のメモリ所要量の事前見積もり[1]

通常運用時のメモリ所要量の求め方[1]

通常状態のチャンク[1]

通常状態のチャンク〔用語解説〕[1]

通常状態のチャンクを調べる[1]

通常モード〔HADBサーバの稼働モード〕[1]

通信障害

コールドスタンバイ構成[1]

マルチノード機能[1]

通信情報ファイルを格納するディレクトリの作成[1]

通信ポート数を確認する方法〔HADBクライアント〕[1]

て

定義系SQL〔用語解説〕[1]

定義系SQL実行時に出力されるユーザログ容量（変数max_user_log）の求め方[1]

定義したテキストインデクスの見直し〔チューニング〕[1]

定義したレンジインデクスの見直し〔チューニング〕[1]

定義情報を調べる方法〔実表〕[1]

ディクショナリ表[1]

ディクショナリ表の状態や使用量を確認する方法[1]

ディクショナリ表（実表）〔用語解説〕[1]

ディクショナリ表（実表）およびシステム表（実表）の状態や使用量を確認する[1]

ディクショナリ表（実表）のB-treeインデクス[1]

ディクショナリ表（実表）の格納効率を確認する[1]

ディクショナリ表（実表）の使用量を確認する[1]

ディクショナリ表〔用語解説〕[1]

ディクショナリ表およびシステム表の再編成[1]

ディクショナリ表およびシステム表の再編成と排他制御[1]

ディクショナリ表およびシステム表の状態や使用量を確認する方法[1]

ディクショナリ表およびシステム表を再編成するタイミング[1]

ディクショナリ表およびシステム表を再編成する方法[1]

ディクショナリ表およびシステム表を再編成する理由[1]

ディクショナリ表が作成されるタイミング[1]

ディクショナリ表の一覧[1]

ディクショナリ表の概要[1]

ディクショナリ表の検索[1]

adbinitコマンド実行時に指定した作業表用DBエリアのページサイズを調べる[1]

DBエリアに格納されているインデクスのインデクス名を調べる[1]

DBエリアに格納されている表の表名を調べる[1]

HADBユーザが持っているユーザ権限とスキーマ操作権限を調べる[1]

アーカイブマルチチャンク表かどうかを調べる場合[1]

アーカイブマルチチャンク表のアーカイブディレクトリを調べる[1]

アーカイブマルチチャンク表のアーカイブレンジ列に定義されたレンジインデクスを調べる[1]

アーカイブマルチチャンク表のアーカイブレンジ列の列名を調べる[1]

アーカイブレンジ列として指定する列にレンジインデクスが定義されているかどうかを調べる[1]

暗号化対象のDBエリアの一覧を表示する[1]

インデクスIDからインデクスが定義された表の表名を調べる[1]

インデクスIDからインデクスが定義された列の列名を調べる[1]

インデクスIDからインデクスのインデクス名を調べる[1]

インデクスが格納されているDBエリア名を調べる[1]

インデクスの定義情報を調べる場合[1]

外部サーバを使用している外部表の一覧を調べる[1]

カラムストア表かどうかを調べる場合[1]

カラムストア表の一覧を調べる[1]

監査人が持っている監査権限を調べる場合[1]

監査人の認可識別子を調べる場合[1]

更新行のカラム化機能の対象となる表を調べる[1]

実表の定義情報を調べる場合[1]

主キーと外部キーを構成する列名を調べる[1]

主キーに対応するインデクスのインデクス名を調べる[1]

主キーを参照する外部キーを調べる[1]

スキーマ名から定義された全インデクスのインデクス名を調べる[1]

スキーマ名から定義された全表の表名を調べる[1]

全マルチチャンク表に作成されるチャンク数の最大値を調べる[1]

チャンクのスキップができるレンジインデクスかどうかを調べる[1]

ビュー表が無効化されているかどうかを調べる[1]

ビュー表の更新可否を調べる[1]

表IDから表の表名を調べる[1]

表に対するアクセス権限を調べる[1]

表名から表が格納されているDBエリア名を調べる[1]

表名から表に定義された全インデクス名を調べる[1]

表名から表を使用する全ビュー表のビュー表名を調べる[1]

マルチチャンク表かどうかを調べる場合[1]

ユーザ認証方式を調べる[1]

レンジインデクスのインデクス名を調べる[1]

ローストア表の一覧を調べる[1]

ディクショナリ表の再編成[1]

ディクショナリ表の再編成と排他制御[1]

ディクショナリ表の状態や使用量を確認する方法[1]

ディクショナリ表を再編成するタイミング[1]

ディクショナリ表を再編成する方法[1]

ディクショナリ表を再編成する理由[1]

マルチノード機能[1]

ディクショナリ表の再編成〔用語解説〕[1]

ディクショナリ用DBエリア[1]

ディクショナリ用DBエリア〔用語解説〕[1]

ディクショナリ用DBエリアの容量見積もり[1]

ディクショナリ用DBエリアファイル[1]

ディスクが満杯になったときの対処方法〔マルチノード機能〕[1]

ディスク障害〔マルチノード機能〕[1]

ディスクに関するトラブル[1]

ディスクに不要なアンロードファイルが残っている[1]

ディスクの空き容量に関するトラブル[1]

ディスクの設計[1]

LVM設定時の考慮点[1]

ディスク設計時の考慮点[1]

ディスクレプリケーションパス〔AWS環境でのコールドスタンバイ構成〕[1]

ディスクを増設した場合の運用〔マルチノード機能〕[1]

ディレクトリページ[1]

ディレクトリページ群[1]

ディレクトリページの配置[1]

データ暗号鍵[1]

データ暗号鍵〔用語解説〕[1]

データ暗号鍵の更新[1]

データインポート

実表にデータを格納する方法（データインポート）[1]

データインポート〔用語解説〕[1]

データインポート単位のデータ管理（チャンク）[1]

データエクスポート

実表のデータをファイルに出力する方法（データをエクスポートする方法）[1]

チャンク単位にデータをエクスポートする方法[1]

ビュー表のデータをファイルに出力する方法（データをエクスポートする方法）[1]

データの圧縮[1]

データの再編成〔用語解説〕[1]

データの追加と削除を繰り返す運用〔バックグラウンドインポート〕[1]

データページ[1]

データページ内の未使用領域の確保（PCTFREE）[1]

データベース初期化コンテナ[1]

データベースに関する最大値と最小値[1]

データベース認証[1]

データベース認証〔用語解説〕[1]

データベースのアクセス処理方式[1]

データベースの回復処理の流れ[1]

データベースの回復方法[1]

AWS環境でのコールドスタンバイ構成[1]

AWS環境でのマルチノード構成[1]

AWS環境の場合[1]

Azure環境でのコールドスタンバイ構成[1]

Azure環境でのマルチノード構成[1]

Azure環境の場合[1]

コールドスタンバイ構成[1]

マルチノード構成[1]

データベースの検索処理方式（非順序実行方式）[1]

データベースの更新時に出力されるユーザログ容量（変数max_user_log）の求め方[1]

データベースの更新処理方式[1]

データベースの作成手順[1]

データベースの状態や使用量の確認〔adbdbstatusコマンド〕[1]

データベースの使用量を確認したい場合〔adbdbstatusコマンド〕[1]

データベースの設計手順[1]

データベースのバックアップ[1]

データベースを初期設定する（データ用DBエリアを作成する）[1]

データ用DBエリア[1]

空き容量を確保する方法[1]

空き容量を確保する方法（実表の再編成）[1]

空き容量を確保する方法（データの圧縮）[1]

空き容量を確保する方法（不要なデータの削除）[1]

インデクスが格納されているデータ用DBエリアを変更する方法[1]

拡張する方法（データ用DBエリアファイルの追加）[1]

拡張できなくなった場合[1]

再初期化する方法[1]

削除する方法[1]

実表が格納されているデータ用DBエリアを変更する方法[1]

使用率の監視方法[1]

追加する方法[1]

追加できなくなった場合[1]

データ用DBエリアファイル（ブロックスペシャルファイル）の格納場所を変更する方法[1]

データ用DBエリアファイルの格納場所を変更する方法[1]

データ用DBエリアファイルをレギュラーファイルからブロックスペシャルファイルに変更する方法[1]

満杯になった場合[1]

データ用DBエリア〔用語解説〕[1]

データ用DBエリアの1セグメントの容量を決める際の考慮点[1]

データ用DBエリアの空き容量を確保する方法

実表の再編成[1]

データの圧縮[1]

不要なデータの削除[1]

データ用DBエリアの暗号化をやめる[1]

データ用DBエリアの運用[1]

データ用DBエリアの拡張[1]

AWS環境でのコールドスタンバイ構成[1]

Azure環境でのコールドスタンバイ構成[1]

コールドスタンバイ構成[1]

マルチノード機能[1]

データ用DBエリアの削除[1]

AWS環境でのコールドスタンバイ構成[1]

Azure環境でのコールドスタンバイ構成[1]

コールドスタンバイ構成[1]

マルチノード機能[1]

データ用DBエリアの使用率に関する警告メッセージの出力[1]

データ用DBエリアの使用量を削減する

B-treeインデクス[1]

テキストインデクス[1]

レンジインデクス[1]

データ用DBエリアの設計[1]

データ用DBエリアの総ページ数の求め方[1]

計算式[1]

変数の説明[1]

データ用DBエリアの追加[1]

AWS環境でのコールドスタンバイ構成[1]

Azure環境でのコールドスタンバイ構成[1]

暗号化対象のデータ用DBエリア[1]

コールドスタンバイ構成[1]

マルチノード機能[1]

データ用DBエリアのページサイズを決める際の考慮点[1]

データ用DBエリアの容量不足に関するトラブル〔クラウドストレージ機能〕[1]

データ用DBエリアの容量見積もり[1]

データ用DBエリアファイル[1]

格納場所を変更する方法[1]

データ用DBエリアファイル（ブロックスペシャルファイル）の格納場所を変更する方法[1]

データ用DBエリアファイルをレギュラーファイルからブロックスペシャルファイルに変更する方法[1]

データ用DBエリアファイルの追加〔マルチノード機能〕[1]

データ用DBエリアを暗号化する[1]

データ用DBエリアを作成する[1]

データ用DBエリアを設計する際の考慮点[1]

マルチチャンク表を格納する場合[1]

テーブルスキャン〔用語解説〕[1]

テーブルスキャンを実行するSQL文の実行時間を短縮する方法〔チューニング〕[1]

テキストインデクス[1]

インデクスが格納されているデータ用DBエリアを変更する方法[1]

インデクスページスプリット[1]

検索対象データとテキストインデクスの関係[1]

出現情報管理部[1]

状態や使用量を確認したい場合[1]

定義した方がよいケース[1]

定義しない方がよいケース[1]

定義する列を決めるときの考慮点[1]

定義できる列[1]

表記ゆれ補正指定の指定（CORRECTIONRULE）[1]

文字列管理部[1]

ワード検索時の区切り文字の選択（DELIMITER）[1]

ワード検索用のテキストインデクスの指定（TEXT WORDCONTEXT）[1]

テキストインデクス〔用語解説〕[1]

テキストインデクスに関するトラブル[1]

テキストインデクスのインデクスページスプリットの発生を抑える[1]

テキストインデクスの確認（指定したインデクスオプションの確認）[1]

テキストインデクスの再作成[1]

テキストインデクスの使用量を確認する[1]

テキストインデクスのセグメントごとの格納ページ数の求め方[1]

テキストインデクスの設計[1]

テキストインデクスの定義〔CREATE INDEX文〕[1]

テキストインデクスの未完状態[1]

未完状態かどうかを確認する[1]

未完状態になったときの対処方法[1]

テキストインデクスワード検索指定[1]

テキストインデクスを使用した検索性能の低下を防ぐ場合[1]

テキストインデクスを定義する場合の注意点[1]

テキストデータの検索[1]

電源障害

マルチノード機能[1]

電源断に対する考慮点[1]

と

統一フォーマット用監査証跡管理ファイル[1]

統一フォーマット用監査証跡の出力先ディレクトリ[1], [2]

容量見積もり[1]

統一フォーマット用監査証跡ファイル[1], [2]

ファイルの形式と出力項目[1]

統一フォーマット用監査証跡ファイル〔用語解説〕[1]

統一フォーマット用監査証跡ファイルの切り替え[1]

同義語一覧定義ファイル[1]

作成する[1]

指定規則[1]

用語解説[1]

同義語一覧定義ファイルを再作成する[1]

同義語グループ[1]

追加する[1]

用語解説[1]

同義語検索[1]

運用[1]

検索例[1]

コールドスタンバイ構成[1]

準備作業[1]

準備作業〔マルチノード機能〕[1]

チューニングを行う[1]

マルチノード機能[1]

用語解説[1]

同義語検索に関するオペランド（set形式）[1]

同義語辞書[1]

辞書名を確認したい[1]

辞書を削除する[1]

辞書を登録する[1]

登録されている同義語を確認する[1]

表記ゆれ補正検索対応かどうかを知りたい[1]

表記ゆれ補正検索対応に変更する[1]

用語解説[1]

同義語辞書に関する情報を調べる[1]

同義語辞書ファイル[1]

格納ディレクトリを変更する[1]

障害が発生したときの対処方法[1]

トラブルシュート[1]

用語解説[1]

同義語辞書ファイルの格納ディレクトリ

空き容量が不足したときの対処方法[1]

事前見積もり[1]

容量見積もり[1]

同義語辞書ファイルの格納ディレクトリ〔用語解説〕[1]

同義語辞書ファイルの同期[1]

同義語を削除する[1]

同義語を追加する[1]

統計解析の運用[1]

adbstatコマンド実行時に統計ログファイルから出力される情報の容量見積もり[1]

HADBサーバの統計情報の運用方法[1]

SQL文の統計情報の運用方法[1]

グローバルバッファの統計情報の運用方法[1]

コネクションの稼働情報の運用方法[1]

統計ログファイルの運用[1]

統計情報に関するオペランド（set形式）[1]

統計情報の運用

コールドスタンバイ構成[1]

マルチノード機能[1]

統計ログファイル

上書きされない期間の目安[1]

統計ログファイル〔用語解説〕[1]

統計ログファイルから出力される情報の容量見積もり〔adbstatコマンド〕[1]

統計ログファイルの運用[1]

統計ログファイルの出力先を変更する[1]

統計ログファイルの容量見積もり[1]

統計ログファイルを削除する[1]

トラブルシュート

BLOB[1]

S3オブジェクト[1]

コールドスタンバイ構成[1]

実表に列を追加できない場合[1]

データ用DBエリアの容量不足〔クラウドストレージ機能〕[1]

マルチノード機能[1]

トラブルシュート情報の削除（adbinfosweepコマンド）[1]

トラブルシュート情報の取得（adbinfogetコマンド）[1]

トランザクションアクセスモード[1]

読み書き可能モード[1]

読み取り専用モード[1]

トランザクション隔離性水準[1]

トランザクションがロールバックしたときの状況を確認する方法[1]

トランザクション制御[1]

トランザクションの開始[1]

トランザクションの終了[1]

トランザクションの状況

トランザクションがロールバックしたときの状況を確認する方法[1]

トランザクションの情報〔SQLトレース情報〕[1]

トランザクションの処理状況

処理リアルスレッドの確保待ちの発生状況を確認する方法[1]

排他資源の確保待ちの発生状況を確認する方法[1]

トランザクションの処理状況の確認[1]

APおよびコマンドの処理状況を確認する方法[1]

トランザクションを実行するノード[1]

な

ナル値除外指定の設定（EXCLUDE NULL VALUES）[1]

ナル値表示文字列[1]

に

認可識別子〔用語解説〕[1]

認可識別子の指定規則[1]

認可識別子の情報〔SQLトレース情報〕[1]

認証情報の設定

AWS環境の場合[1]

Azure環境の場合[1]

認証情報ファイルを使用した認証情報の設定[1]

ね

ネットワーク構成

AWS環境でのコールドスタンバイ構成[1]

AWS環境でのマルチノード構成[1], [2]

AWS環境の場合[1]

Azure環境でのコールドスタンバイ構成[1]

Azure環境でのマルチノード構成[1]

Azure環境の場合[1]

DockerおよびKubernetesを使用したシステム構成[1]

HAモニタありのマルチノード構成[1]

HAモニタなしのマルチノード構成[1]

コールドスタンバイ構成[1]

ネットワーク遮断設定ファイルの作成

AWS環境でのコールドスタンバイ構成[1]

Azure環境でのコールドスタンバイ構成[1]

ネットワークセキュリティグループの設定[1]

の

ノード〔用語解説〕[1]

ノード間ネットワーク

AWS環境でのマルチノード構成[1], [2]

Azure環境でのマルチノード構成[1]

HAモニタありのマルチノード構成の場合[1]

HAモニタなしのマルチノード構成の場合[1]

ノード構成〔DockerおよびKubernetesを使用したシステム構成〕[1]

ノード障害[1]

セカンダリノード[1]

プライマリノード[1]

ワーカーノード[1]

ノード障害〔用語解説〕[1]

ノードの切り離し[1]

ノードの切り離し〔用語解説〕[1]

ノードの構築〔Kubernetes環境〕[1]

ノードの情報を確認する場合[1]

ノードの復帰[1]

手順[1]

ノードの復帰〔用語解説〕[1]

は

バージョンアップ[1]

adbbuffオペランドの指定を見直す[1]

コールドスタンバイ構成の場合[1]

動作確認テスト用[1]

マルチノード機能の場合[1]

バージョンアップ時の注意事項[1]

バージョンアップに失敗した場合の対処方法[1]

バージョンダウン

旧バージョンでデータベースを再構築する場合[1]

旧バージョンのデータベースのバックアップを使用する場合[1]

動作確認テスト用[1]

バージョンダウン〔HADBサーバ〕[1]

排他〔マルチノード機能〕[1]

排他資源の確保待ちの発生状況を確認する方法[1]

排他制御[1]

確保される排他資源と排他制御モード[1]

システム表の再編成と排他制御[1]

ディクショナリ表およびシステム表の参照時に排他が取得される実表[1]

ディクショナリ表の再編成と排他制御[1]

データベースの参照・更新時に排他が取得されるディクショナリ表とシステム表[1]

排他資源[1]

排他資源が確保される期間[1]

排他制御に関するオペランド（set形式）[1]

排他制御に関する考慮点〔コマンド同時実行時〕[1]

排他制御モード[1]

排他競合時の動作[1]

排他制御モードの同時実行の関係性[1]

排他制御モードの種類[1]

排他制御モードの遷移[1]

配列型

最大要素数の変更[1]

表の検索[1]

表の全行削除[1]

配列型の定義

表の定義[1]

配列型の列の追加[1]

配列型の列の定義[1]

配列型の列を定義した実表の運用[1]

配列要素[1]

パスワードの指定規則[1]

パスワードを変更する方法〔HADBユーザ〕[1]

バックアップ〔データベース〕[1]

バックアップからの回復方法[1]

AWS環境でのコールドスタンバイ構成[1]

AWS環境でのマルチノード構成[1]

AWS環境の場合[1]

Azure環境でのコールドスタンバイ構成[1]

Azure環境でのマルチノード構成[1]

Azure環境の場合[1]

コールドスタンバイ構成[1]

マルチノード構成[1]

バックアップの運用例

OSコマンドを使用する場合[1]

ShadowImageを使用する場合[1]

バックアップの取得方法[1]

AWS環境でのコールドスタンバイ構成[1]

AWS環境でのマルチノード構成[1]

AWS環境の場合[1]

Azure環境でのコールドスタンバイ構成[1]

Azure環境でのマルチノード構成[1]

Azure環境の場合[1]

コールドスタンバイ構成[1]

マルチノード構成[1]

バックアップを取得するタイミング[1]

バックアップを取得する手順[1]

バックグラウンドインポート

マルチチャンク表にデータを格納する方法[1]

バックグラウンドインポート〔用語解説〕[1]

バックグラウンドインポート機能[1]

バックグラウンドインポート機能に関するトラブル[1]

作成されたチャンク数を減らす方法[1]

作成されたチャンク数を変更できないときの対処方法[1]

作成されるチャンク数の最大値を大きくする方法[1]

バックグラウンドインポートとは[1]

パッケージ[1]

ハッシュグループ化領域[1]

ハッシュグループ化領域サイズの見直しによるSQL文の実行時間の短縮〔チューニング〕[1]

ハッシュ検索〔用語解説〕[1]

ハッシュジョインが適用されるINNER JOINの結合順序の見直しによるSQL文の実行時間の短縮〔チューニング〕[1]

ハッシュテーブル領域[1]

ハッシュテーブル領域サイズの見直しによるSQL文の実行時間の短縮〔チューニング〕[1]

ハッシュテーブルを使用した検索時に作成される作業表の数[1]

ハッシュフィルタ領域[1]

ハッシュフィルタ領域サイズの見直しによるSQL文の実行時間の短縮〔チューニング〕[1]

バッファの運用[1]

ローカル作業表用バッファを変更する方法[1]

バッファの見直しによるSQL文の実行時間の短縮に関するチューニング[1]

ひ

被参照表〔用語解説〕[1]

非順序実行方式〔用語解説〕[1]

必須監査イベント[1]

非ナル値制約[1]

非ナル値制約〔用語解説〕[1]

秘密鍵ファイルの更新〔PAM認証〕[1]

ビュー表[1]

アクセス権限[1]

アクセス権限を確認する方法[1]

依存するビュー表を確認する方法[1]

運用例[1]

更新可能ビュー表[1]

データの検索，追加，更新，削除[1]

データをファイルに出力する方法（データをエクスポートする方法）[1]

ビュー表の運用[1]

ビュー表の更新可否を調べる方法[1]

ビュー表の無効化を解除する方法[1]

ビュー表を再作成する方法[1]

ビュー表を削除する方法[1]

ビュー表を定義する方法[1]

付与権[1]

無効化されたビュー表を削除する方法[1]

無効化されているかどうかを確認する方法[1]

基表を確認する方法[1]

読み取り専用ビュー表[1]

ビュー表〔用語解説〕[1]

ビュー表が無効化されているかどうかを調べる[1]

ビュー表の更新可否を調べる[1]

ビュー表の無効化[1]

ビューレベル[1]

ビューレベル〔用語解説〕[1]

表

実表の設計[1]

表IDから表の表名を調べる場合[1]

表関数導出表[1]

表関数導出表〔ADB_AUDITREAD関数〕[1]

表関数導出表〔用語解説〕[1]

表記ゆれ補正検索[1]

表記ゆれ補正検索〔用語解説〕[1]

表記ゆれ補正指定

テキストインデクスの表記ゆれ補正指定の指定（CORRECTIONRULE）[1]

標準エラー出力〔メッセージ〕[1]

標準出力〔メッセージ〕[1]

表定義情報[1]

表定義プール[1]

表定義プールサイズの見直しによるSQL文の実行時間の短縮〔チューニング〕[1]

表定義を変更する方法[1]

表データの格納形式[1]

表に対するアクセス権限を調べる[1]

表の格納効率を向上させる場合〔表の正規化〕[1]

表の種類[1]

表の正規化[1]

アクセス頻度の高い列と低い列がある場合[1]

表の格納効率を向上させる場合[1]

表名から表が格納されているDBエリア名を調べる場合[1]

表名から表内の全チャンクの情報を調べる[1]

表名から表に定義された全インデクス名を調べる場合[1]

表名から表を使用する全ビュー表のビュー表名を調べる場合[1]

表名を確認する場合[1]

表名を変更する方法[1]

表を設計する際の流れ[1]

ふ

ファイル構成〔DBエリア〕[1]

ファイルディスクリプタが不足した場合の対処方法[1]

複数列インデクス[1]

複数列インデクスを使用するときの留意事項[1]

複数列インデクスを定義した方がよい場合[1]

付与権[1]

付与権〔用語解説〕[1]

付与権だけを取り消す方法[1]

プライマリノード[1]

プライマリノード〔用語解説〕[1]

プライマリノードのHADBサーバだけを強制終了させる[1]

プライマリノードのHADBサーバだけを正常終了させる[1]

プライマリノードの切り替え[1]

コマンドによる切り替え[1]

プライマリノードの切り替え〔用語解説〕[1]

フルバックアップ[1]

プローブパケット[1]

プロセス[1]

プロセス共通メモリ[1]

プロセスメモリ[1]

プロセスメモリの所要量の求め方[1]

ブロックスペシャルファイル[1]

データ用DBエリアファイル（ブロックスペシャルファイル）の格納場所を変更する方法[1]

データ用DBエリアファイルをレギュラーファイルからブロックスペシャルファイルに変更する方法[1]

マルチノード機能[1]

分岐行[1]

分岐行〔用語解説〕[1]

分岐行用セグメント[1]

分岐行用ページ[1]

分岐指定〔可変長データ型の列データ〕[1]

文ハンドル〔用語解説〕[1]

文法規則〔サーバ定義〕[1]

へ

ページ[1]

ページ〔用語解説〕[1]

ページが解放されるタイミング[1]

ページが割り当てられるタイミング[1]

ページグループ[1]

ページグループサイズを確認する〔レンジインデクス〕[1]

ページサイズを決める際の考慮点〔データ用DBエリア〕[1]

ページの種類[1]

変更方法〔サーバ定義〕[1]

ほ

保護更新モード[1]

ホスト名の変更

コールドスタンバイ構成[1]

マルチノード機能[1]

ホスト名の変更〔サーバマシンのOS〕[1]

ま

マージ先チャンク〔用語解説〕[1]

マージチャンク[1]

チャンクのマージに伴うインデクスのデータ量の一時的な増加[1]

マージ元チャンクの削除と検索処理・更新処理の関係[1]

マージ元チャンク〔用語解説〕[1]

マージ元チャンクの削除と検索処理・更新処理の関係[1]

前処理表〔排他資源〕[1]

マスタディレクトリ〔用語解説〕[1]

マスタディレクトリ用DBエリア[1]

マスタディレクトリ用DBエリア〔用語解説〕[1]

マスタディレクトリ用DBエリアの容量見積もり[1]

マスタディレクトリ用DBエリアファイル[1]

マスタログファイル[1]

マスタログファイルの容量の求め方[1]

マニフェストファイル（yamlファイル）の準備[1]

マネージドIDの割り当て[1]

マネージドディスクが満杯になった場合

コールドスタンバイ構成[1]

マルチノード機能[1]

マネージドディスクで障害が発生した場合

コールドスタンバイ構成[1]

マルチノード機能[1]

マルチチャンク表[1]

再編成要否の確認[1]

シングルチャンク表をマルチチャンク表に変更する方法[1]

選択基準[1]

チャンク単位にデータをエクスポートする方法[1]

マルチチャンク表〔用語解説〕[1]

マルチチャンク表かどうかを調べる場合[1]

マルチチャンク表にインポートするデータを一時的に検索対象外にする方法（待機状態のチャンクの作成）[1]

マルチチャンク表に作成されるチャンク数の最大値を調べる[1]

マルチチャンク表にデータを格納する方法（バックグラウンドインポート）[1]

マルチチャンク表の運用[1]

アーカイブマルチチャンク表をレギュラーマルチチャンク表に変更する方法[1]

チャンク数の最大値を変更する方法[1]

チャンク単位にデータを削除する方法[1]

チャンクのコメントを変更する方法[1]

チャンクの状態や作成されているチャンク数を確認する方法[1]

チャンクの状態を変更する方法[1]

チャンクをマージする方法（チャンク数を減らす方法）[1]

データを一括削除する方法[1]

バックグラウンドインポートとチャンクを意識した運用例1（定期的にデータの追加と削除を繰り返す運用）[1]

バックグラウンドインポートとチャンクを意識した運用例2（待機状態のチャンクを利用した運用）[1]

マルチチャンク表にインポートするデータを一時的に検索対象外にする方法（待機状態のチャンクの作成）[1]

マルチチャンク表にデータを格納する方法（バックグラウンドインポート）[1]

マルチチャンク表を削除する方法[1]

マルチノード機能[1]

レギュラーマルチチャンク表をアーカイブマルチチャンク表に変更する方法[1]

マルチチャンク表を再編成する方法

サンプルシェルを使用する場合[1]

チャンク単位で再編成する場合[1]

表全体を再編成する場合[1]

マルチチャンク表を定義する場合の考慮点[1]

マルチチャンク表を定義する方法[1]

マルチノード機能[1]

AWS環境[1]

Azure環境[1]

DBエリアファイル[1]

HADBサーバの環境設定[1]

HADBサーバへの接続[1]

JP1/Audit Management - Managerとの連携[1]

運用方法[1]

サーバ構成〔HAモニタありのマルチノード構成〕[1]

サーバ構成〔HAモニタなしのマルチノード構成〕[1]

サーバマシンのOSのホスト名・IPアドレスの変更[1]

システム構成例〔HAモニタありのマルチノード構成〕[1]

システム構成例〔HAモニタなしのマルチノード構成〕[1]

ストレージ構成〔HAモニタありのマルチノード構成〕[1]

ストレージ構成〔HAモニタなしのマルチノード構成〕[1]

前提ソフトウェア〔HAモニタありのマルチノード構成〕[1]

前提ソフトウェア〔HAモニタなしのマルチノード構成〕[1]

同義語辞書ファイルの格納ディレクトリ[1]

ネットワーク構成〔HAモニタありのマルチノード構成〕[1]

ネットワーク構成〔HAモニタなしのマルチノード構成〕[1]

バージョンアップ[1]

ブロックスペシャルファイル[1]

マルチノード機能〔用語解説〕[1]

マルチノード機能で使用する同義語辞書ファイルの格納ディレクトリ

事前見積もり[1]

容量見積もり[1]

マルチノード機能に関するオペランド（set形式）[1]

マルチノード機能を使用するシステムへの移行[1]

マルチノード構成[1]

ノードの切り離し[1]

ノードの復帰[1]

マルチノード構成〔用語解説〕[1]

マルチノード構成からのワーカーノードの削除[1]

マルチノード構成からのワーカーノードの削除〔用語解説〕[1]

マルチノード構成のHADBサーバの開始[1]

マルチノード構成のHADBサーバの終了[1]

マルチノード構成の構築手順[1]

AWS環境の場合[1]

Azure環境の場合[1]

マルチノード構成へのノードの復帰[1]

マルチノード構成へのワーカーノードの追加[1]

マルチノード構成へのワーカーノードの追加〔用語解説〕[1]

満杯状態[1]

み

未完状態

B-treeインデクス[1]

テキストインデクス[1]

レンジインデクス[1]

未完状態かどうかを確認する

B-treeインデクス[1]

テキストインデクス[1]

レンジインデクス[1]

未完状態になったときの対処方法

B-treeインデクス[1]

テキストインデクス[1]

レンジインデクス[1]

未使用領域の確保（PCTFREE）

B-treeインデクスのインデクスページ内[1]

データページ内[1]

テキストインデクスのインデクスページ内[1]

見積もり

グローバル作業表用のグローバルバッファのページ数[1]

ハッシュテーブルを使用した検索時に作成される作業表の数[1]

ローカル作業表用バッファのページ数[1]

見積もり式

adbarchivechunkコマンド実行時のメモリ所要量[1]

adbaudittrailコマンド実行時のメモリ所要量[1]

adbchgchunkcommentコマンド実行時のメモリ所要量[1]

adbchgchunkstatusコマンド実行時のメモリ所要量[1]

adbclientdefmangコマンド実行時のメモリ所要量[1]

adbconvertaudittrailfileコマンド実行時のメモリ所要量[1]

adbdbstatusコマンド実行時のメモリ所要量[1]

adbexportコマンドが出力するファイルの容量見積もり[1]

adbexportコマンド実行時のメモリ所要量[1]

adbgetcstコマンド実行時のメモリ所要量[1]

adbidxrebuildコマンド実行時の作業用一時ファイルの容量見積もり[1]

adbidxrebuildコマンド実行時のメモリ所要量[1]

adbimportコマンド実行時の作業用一時ファイルの容量[1]

adbimportコマンド実行時のメモリ所要量[1]

adbinitコマンド実行時のメモリ所要量[1]

adbmergechunkコマンド実行時の作業用一時ファイルの容量見積もり[1]

adbmergechunkコマンド実行時のメモリ所要量[1]

adbmodareaコマンド実行時のメモリ所要量[1]

adbreorgsystemdataコマンド実行時の作業用一時ファイルの容量見積もり[1]

adbreorgsystemdataコマンド実行時のメモリ所要量[1]

adbstatコマンド実行時のメモリ所要量[1]

adbsyndictコマンド実行時の作業用一時ファイルの容量見積もり[1]

adbsyndictコマンド実行時のメモリ所要量[1]

adbunarchivechunkコマンド実行時の作業用一時ファイルの容量見積もり[1]

adbunarchivechunkコマンド実行時のメモリ所要量[1]

adbupddmkコマンド実行時のメモリ所要量[1]

B-treeインデクスのキー長（KEYSZ）[1]

B-treeインデクスのセグメントごとの格納ページ数[1]

COPY文で出力するファイルの容量見積もり[1]

HADBサーバ開始時のメモリ所要量[1]

HADBサーバのメモリ所要量[1]

HADBダンプファイルの容量[1]

SQLトレースファイルの容量[1]

アクセスパス探索情報ログファイルの容量[1]

アンロードファイルの容量見積もり[1]

カーネルパラメタ[1]

外部データアクセス用ライブラリ使用時のメモリ所要量[1]

下位ページ用のセグメントで使用する格納ページ数[1]

監査証跡の出力先ディレクトリの容量見積もり[1]

行の種別ごとの格納ページ数[1]

共有メモリの所要量[1]

クラウドストレージ機能使用時のメモリ所要量[1]

更新行のカラム化機能に必要なファイルの容量[1]

サーバメッセージログファイルの容量[1]

作業表用DBエリアの総ページ数[1]

作業表用DBエリアの容量[1]

作業表を格納するために必要な基本行用ページ数[1]

システム表用DBエリアの容量[1]

システムログファイルの容量[1]

実表の再編成に必要なファイルの容量見積もり[1]

出現情報管理部用のセグメントで使用する格納ページ数[1]

上位ページ用のセグメントで使用する格納ページ数[1]

障害情報（コアファイル）の容量[1]

通常運用時のメモリ所要量[1]

ディクショナリ用DBエリアの容量[1]

データ用DBエリアの総ページ数[1]

データ用DBエリアの容量[1]

テキストインデクスのセグメントごとの格納ページ数[1]

統一フォーマット用監査証跡の出力先ディレクトリの容量見積もり[1]

統計ログファイルの容量[1]

プロセスメモリの所要量[1]

マスタディレクトリ用DBエリアの容量[1]

マスタログファイルの容量[1]

メモリ所要量の事前見積もり[1]

文字列管理部用のセグメントで使用する格納ページ数[1]

ユーザログファイル数[1]

ユーザログファイルの容量[1]

レンジインデクスを格納するセグメント数[1]

む

無圧縮〔カラムストア表〕[1]

無効化されたビュー表を削除する方法[1]

無効情報管理用ページ[1], [2]

無効な行データ〔用語解説〕[1]

め

メッセージ〔監視対象〕[1]

メッセージカタログファイル〔用語解説〕[1]

メッセージに関するオペランド（set形式）[1]

メッセージの確認[1]

メッセージの出力先[1]

メッセージの出力抑止[1]

メッセージの出力抑止〔syslog〕[1]

メッセージの出力レベル[1]

メッセージログの参照方法（メッセージログの出力先）[1]

メッセージログの出力先[1]

メッセージログファイル

縮退状態[1]

メッセージログファイル〔用語解説〕[1]

メッセージログファイルに関するトラブル[1]

メッセージログファイルの運用[1]

メッセージログファイルの切り替え[1]

メッセージログファイルの縮退状態を解除する方法[1]

メモリが不足した場合の対処方法

HADBサーバ開始時[1]

SQL文実行時またはコマンド実行時[1]

メモリ構成〔HADBサーバ〕[1]

メモリ使用状況を確認したい場合〔リアルスレッドごと〕[1]

メモリ使用量に関する警告メッセージの出力[1]

メモリ使用量の削減に関するチューニング[1]

メモリ所要量に関する考慮点〔コマンド同時実行時〕[1]

メモリ所要量の事前見積もり[1]

メモリに関するトラブル[1]

メモリの使用状況の確認[1]

メモリの使用状況を確認したい場合[1]

メモリの使用状況を確認する場合〔コールドスタンバイ構成〕[1]

メモリの使用状況を確認する場合〔マルチノード機能〕[1]

メンテナンス処理[1]

メンテナンスモード〔HADBサーバの稼働モード〕[1]

も

文字コード

HADBクライアントで使用する文字コード[1]

HADBサーバで使用する文字コード[1]

OSの文字コード[1]

文字列管理部〔テキストインデクス〕[1]

文字列管理部ページ〔テキストインデクス〕[1]

文字列管理部用のセグメント〔テキストインデクス〕[1]

文字列管理部用のセグメントで使用する格納ページ数の求め方[1]

文字列の識別規則〔サーバ定義〕[1]

基表[1]

基表〔用語解説〕[1]

モニタモード[1]

ゆ

ユーザ権限[1]

CONNECT権限[1]

DBA権限[1]

HADBユーザが持っているユーザ権限とスキーマ操作権限を確認する方法[1]

HADBユーザが持っているユーザ権限とスキーマ操作権限を取り消す方法[1]

HADBユーザにユーザ権限とスキーマ操作権限を付与する方法[1]

ユーザ権限〔用語解説〕[1]

ユーザコマンドの作成[1]

ユーザとスキーマ[1]

ユーザ認証[1]

ユーザ認証方式[1]

ユーザ認証方式を調べる方法[1], [2]

ユーザ認証方式を変更する方法[1]

ユーザの種類（OSユーザとHADBユーザ）[1]

ユーザログ[1]

ユーザログバッファ面数の拡張〔チューニング〕[1]

ユーザログファイル[1]

ユーザログファイル数の求め方[1]

ユーザログファイルの縮小化容量の見直し〔チューニング〕[1]

ユーザログファイルの初期化容量の拡張〔チューニング〕[1]

ユーザログファイルの容量の求め方[1]

ユニークインデクス[1]

ユニークインデクスが一意性制約違反状態かどうかを確認する[1]

よ

要素データ型[1]

読み書き可能トランザクション[1]

読み書き可能モード〔トランザクションアクセスモード〕[1]

読み取り専用トランザクション[1]

読み取り専用ビュー表[1]

読み取り専用モード〔トランザクションアクセスモード〕[1]

ら

ランレングス圧縮〔カラムストア表〕[1]

り

リアルスレッド〔用語解説〕[1]

リアルスレッド固有メモリ[1]

リアルスレッドの確認[1]

リーフページ[1]

リストア

AWS環境でのマルチノード構成[1]

Azure環境でのマルチノード構成[1]

リセットパス〔コールドスタンバイ構成〕[1]

リセットパス〔マルチノード機能〕[1]

リソースオブジェクトの生成[1]

リソース管理ファイル〔AWS環境でのコールドスタンバイ構成〕[1]

リソースの事前見積もり[1]

リソースの使用状況の監視[1]

リターンコード〔adbstartコマンド〕[1]

リターンコード〔adbstopコマンド〕[1]

リロード〔用語解説〕[1]

る

ルートページ[1]

れ

レギュラーファイル[1]

データ用DBエリアファイルをレギュラーファイルからブロックスペシャルファイルに変更する方法[1]

レギュラーマルチチャンク表[1]

マルチチャンク表を削除する方法[1]

マルチチャンク表を定義する方法[1]

レギュラーマルチチャンク表をアーカイブマルチチャンク表に変更する方法[1]

レギュラーマルチチャンク表〔用語解説〕[1]

列（VARCHAR型）のデータ長を長くする方法[1]

列データの圧縮方式〔カラムストア表〕[1]

列データページ[1]

列の既定値の設定[1]

列のデータ型と列の定義長を確認する場合[1]

列のデータ型を変更する方法[1]

列名

列名を確認する場合[1]

列名を変更する方法[1]

列を削除する方法[1]

列を追加する方法[1]

列を追加できない場合〔トラブルシュート〕[1]

レンジインデクス[1]

インデクスが格納されているデータ用DBエリアを変更する方法[1]

状態や使用量を確認したい場合[1]

セグメントのスキップ[1]

チャンクのスキップ[1]

定義した方がよいケース[1]

定義しない方がよいケース[1]

定義する際の考慮点[1]

定義できない列[1]

レンジインデクス〔チャンク〕[1]

レンジインデクス〔用語解説〕[1]

レンジインデクス専用のグローバルバッファのページ数の見積もり[1]

レンジインデクスに関するトラブル[1]

レンジインデクスの一括先読み[1]

一括先読みしたレンジインデクスのデータの掃き出しを防ぐ方法[1]

一括先読みを行うメリット[1]

レンジインデクスの一括先読み〔チューニング〕[1]

レンジインデクスのインデクス名を調べる場合[1]

レンジインデクスの概要[1]

レンジインデクスの確認（チャンクのスキップの可否）[1]

レンジインデクスの再作成[1]

レンジインデクスの再定義（チャンクのスキップの設定）[1]

レンジインデクスの使用量を確認する[1]

レンジインデクスの設計[1]

レンジインデクスの値域の更新（セグメント）[1]

レンジインデクスの値域の更新（チャンクとセグメント）[1]

レンジインデクスの定義〔CREATE INDEX文〕[1]

レンジインデクスの特徴[1]

レンジインデクスの特徴（チャンクのスキップ）[1]

レンジインデクスのページグループサイズを確認する[1]

レンジインデクスの未完状態[1]

未完状態かどうかを確認する[1]

未完状態になったときの対処方法[1]

レンジインデクスを格納するセグメント数の求め方[1]

レンジインデクスを使用した検索処理（チャンクのスキップ）[1]

レンジインデクスを使用した検索性能の低下を防ぐ場合[1]

レンジインデクスを定義する場合の注意点[1]

ろ

ローカル作業表[1]

ローカル作業表用バッファ[1]

ローカル作業表用バッファのページ数の見積もり[1]

ローカル作業表用バッファの見直しによるメモリ使用量の削減〔チューニング〕[1]

ローカル作業表用バッファを変更する方法[1]

ローカル作業表を作成するSQL文の実行時間を短縮する方法〔チューニング〕[1]

ローストア形式[1]

ローストア形式〔用語解説〕[1]

ローストア表[1]

カラムストア表をローストア表に変更する方法[1]

実表のデータを検索・更新する方法[1]

実表を定義する方法[1]

選択基準[1]

表の種類（ローストア表またはカラムストア表）を確認する場合[1]

ローストア表の一覧を調べる場合[1]

ローストア表をカラムストア表に変更する方法[1]

ローストア表〔用語解説〕[1]

ローデータ用セグメント[1]

ロールバックしたときの状況を確認する方法[1]

ロケーション表[1]

ロケーション表〔用語解説〕[1]

ロケーション表のチャンク数[1]

わ

ワーカーノード[1]

ワーカーノード〔用語解説〕[1]

ワーカーノードのHADBサーバだけを強制終了させる[1]

ワーカーノードのHADBサーバだけを正常終了させる[1]

ワーカーノードの最大数[1]

ワーカーノードの削除[1]

ワーカーノードの新規追加[1]

ワーカーノードの追加手順[1]

ワーカーノードのマルチノード構成からの削除[1]

ワーカーノードのマルチノード構成への追加[1]

ワード検索[1]

完全一致検索[1]

区切り文字[1]

前方一致検索[1]

ワード検索〔用語解説〕[1]

ワード検索用のテキストインデクスの指定（TEXT WORDCONTEXT）[1]

割り当て管理用ページ[1]

マニュアル発行元

株式会社 日立製作所

〒 100-8280 　東京都千代田区丸の内一丁目 6 番 6 号