Hitachi

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


11.4.12 チャンクの状態を変更する方法

チャンクの状態を変更する場合,adbchgchunkstatusコマンドを実行してください。adbchgchunkstatusコマンドについては,マニュアルHADB コマンドリファレンスadbchgchunkstatus(チャンクの状態変更)を参照してください。また,チャンクの状態の詳細については,「2.14.2 データインポート単位のデータ管理(チャンク)」の「(4) チャンクの状態変更」を参照してください。

adbchgchunkstatusコマンドを実行すると,次に示すチャンクの状態変更ができます。

重要
メモ
〈この項の構成〉

(1) adbchgchunkstatusコマンドによるチャンクの状態変更

adbchgchunkstatusコマンドを使用して,チャンクの状態を変更する手順を次に示します。

■チャンクの状態を変更する手順

  1. 状態を変更したいチャンクのチャンクIDを調べる

    付録C.9 システム表の検索」の「(13) 通常状態のチャンクを調べる場合」または「(14) 待機状態のチャンクを調べる場合」を参照して,状態を変更したいチャンクのチャンクIDを確認してください。

  2. adbchgchunkstatusコマンドでチャンクの状態を変更する

    手順1.で確認したチャンクIDを基に,adbchgchunkstatusコマンドを使用して,チャンクの状態を変更してください。adbchgchunkstatusコマンドの指定例を次に示します。

    指定例1(待機状態のチャンクを通常状態のチャンクに変更する)

    HADBユーザ(ADBUSER01)が,店舗表(SHOPSLIST)の待機状態のチャンク(チャンクIDが1)を,通常状態のチャンクに変更します。

    adbchgchunkstatus -u ADBUSER01 -p '#HelloHADB_01'
                      -n 1 SHOPSLIST
    重要

    待機状態のチャンクが大量にある場合,状態を変更する前に,待機状態のチャンクをマージしてチャンク数を減らしてください。通常状態のチャンクが大量になると,検索性能が低下するおそれがあります。チャンクをマージする場合は,「11.4.9 チャンクをマージする方法(チャンク数を減らす方法)」を参照してください。

    指定例2(通常状態のチャンクを待機状態のチャンクに変更する)

    HADBユーザ(ADBUSER01)が,店舗表(SHOPSLIST)の通常状態のチャンク(チャンクIDが2)を,待機状態のチャンクに変更します。

    adbchgchunkstatus -u ADBUSER01  -p '#HelloHADB_01'
                      -w 2 SHOPSLIST

これで,チャンクの状態を変更できます。

なお,チャンクの状態変更によって,カレントチャンクが変更されることがあります。詳細については,「(3) チャンクの状態変更によるカレントチャンクの切り替え」を参照してください。また,カレントチャンクを元に戻す(チャンクの状態変更の前にカレントチャンクだったチャンクを,状態変更のあともカレントチャンクとする)手順については,「(4) 運用例(チャンク内のデータを入れ替える)」を参照してください。

(2) チャンクの状態と実行できるSQL文・コマンドの関係

チャンクの状態によって,チャンクに含まれるデータに対して,実行できるSQL文およびコマンドが異なります。チャンクの状態と,実行できるSQL文およびコマンドの関係を次の2つの表に示します。

表11‒4 チャンクの状態と,実行できるSQL文およびコマンドの関係(アーカイブ状態ではないチャンクの場合)

項番

実行するSQL文およびコマンド

チャンクの状態

通常状態

待機状態

削除仕掛中

1

SELECT

×

×

2

INSERT

×

×

3

UPDATE

×

×

4

DELETE

×

×

5

PURGE CHUNK

6

TRUNCATE TABLE

7

adbstartコマンド

(レンジインデクスの一括先読みを実行する場合)

×

8

adbsqlコマンド

※1

×

9

adbmergechunkコマンド

※2

※3

×

10

adbexportコマンド

※4

×

11

adbidxrebuildコマンド

※5

×

12

adbdbstatusコマンド

(チャンクの情報を参照する場合)

13

adbchgchunkcommentコマンド

14

adbchgchunkstatusコマンド

×

15

adbarchivechunkコマンド

※6

×

16

adbunarchivechunkコマンド

×

×

×

(凡例)

○:実行できます。

△:実行できますが,制限があります。

×:実行できません。

注※1

adbsqlコマンドのサブコマンド#GETDATAおよび#GETCOUNTだけが実行できます。

注※2

通常状態で,かつアーカイブ状態ではない複数のチャンクを,通常状態で,かつアーカイブ状態ではない1つのチャンクにマージできます。それ以外のチャンクのマージはできません。

注※3

待機状態で,かつアーカイブ状態ではない複数のチャンクを,待機状態で,かつアーカイブ状態ではない1つのチャンクにマージできます。それ以外のチャンクのマージはできません。

注※4

adbexportコマンドの-cオプションを指定した検索だけ実行できます。

注※5

待機状態のチャンクに含まれるインデクスも再作成されます。

注※6

一度も通常状態になったことがない待機状態のチャンクは,アーカイブ状態にできません。

表11‒5 チャンクの状態と,実行できるSQL文およびコマンドの関係(アーカイブ状態のチャンクの場合)

項番

実行するSQL文およびコマンド

チャンクの状態

通常状態

待機状態

削除仕掛中

1

SELECT

×

×

2

INSERT

×

×

×

3

UPDATE

×

×

×

4

DELETE

×

×

×

5

PURGE CHUNK

6

TRUNCATE TABLE

7

adbstartコマンド

(レンジインデクスの一括先読みを実行する場合)

×※1

×※1

×※1

8

adbsqlコマンド

※2

×

9

adbmergechunkコマンド

※3

※4

×

10

adbexportコマンド

※5

×

11

adbidxrebuildコマンド

×※6

×※6

×※6

12

adbdbstatusコマンド

(チャンクの情報を参照する場合)

13

adbchgchunkcommentコマンド

14

adbchgchunkstatusコマンド

×

15

adbarchivechunkコマンド

×

×

×

16

adbunarchivechunkコマンド

×

(凡例)

○:実行できます。

△:実行できますが,制限があります。

×:実行できません。

注※1

アーカイブ状態のチャンク内のデータにはインデクスが存在しません。そのため,adbstartコマンドによるレンジインデクスの一括先読みは実行できません。

注※2

adbsqlコマンドのサブコマンド#GETDATAおよび#GETCOUNTだけが実行できます。

注※3

通常状態で,かつアーカイブ状態の複数のチャンクを,通常状態で,かつアーカイブ状態の1つのチャンクにマージできます。それ以外のチャンクのマージはできません。

注※4

待機状態で,かつアーカイブ状態の複数のチャンクを,待機状態で,かつアーカイブ状態の1つのチャンクにマージできます。それ以外のチャンクのマージはできません。

注※5

adbexportコマンドの-cオプションを指定した検索だけが実行できます。

注※6

アーカイブ状態のチャンク内のデータにはインデクスが存在しません。そのため,adbidxrebuildコマンドによるインデクスの再作成は実行できません。

(3) チャンクの状態変更によるカレントチャンクの切り替え

adbchgchunkstatusコマンドでチャンクの状態を変更する場合,状態を変更するチャンクの種類と状態変更の処理内容によって,カレントチャンクの切り替えが発生することがあります。また,システム表STATUS_CHUNKSにあるチャンクの作成日時およびカレントチャンクが切り替わった日時に設定される情報が異なります。

メモ

システム表STATUS_CHUNKSの詳細については,「付録C.5 STATUS_CHUNKSの内容」を参照してください。

詳細を次の表に示します。

表11‒6 チャンクの状態変更の実行条件

状態変更するチャンクの種類と状態変更の処理内容

通常状態のチャンクへの変更

なし

過去に通常状態になったことがある待機状態のチャンク※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‒6 チャンクの状態変更の実行条件」の(a)の条件で,「図11‒10 adbchgchunkstatusコマンド実行前のチャンクの状態」のチャンクに対して,adbchgchunkstatusコマンドを実行した場合の例を次に示します。

図11‒11 (a)の条件でadbchgchunkstatusコマンドを実行した場合

[図データ]

[説明]

過去に通常状態になったことがある待機状態のチャンク(チャンク3と4)を,通常状態のチャンクに変更します。

■(a)の条件でadbchgchunkstatusコマンドを実行した場合の処理結果

カレントチャンク

変更されません。

チャンクの作成日時

設定されません。

カレントチャンクが切り替わった日時

設定されません。

(b) adbchgchunkstatusコマンドの実行例2

表11‒6 チャンクの状態変更の実行条件」の(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‒6 チャンクの状態変更の実行条件」の(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‒6 チャンクの状態変更の実行条件」の(d)の条件で,「図11‒10 adbchgchunkstatusコマンド実行前のチャンクの状態」のチャンクに対して,adbchgchunkstatusコマンドを実行した場合の例を次に示します。

図11‒14 (d)の条件でadbchgchunkstatusコマンドを実行した場合

[図データ]

[説明]

通常状態のチャンク(チャンク1と2)を,待機状態のチャンクに変更します。

■(d)の条件でadbchgchunkstatusコマンドを実行した場合の処理結果

カレントチャンク

変更されません。

チャンクの作成日時

設定されません。

カレントチャンクが切り替わった日時

設定されません。

(e) adbchgchunkstatusコマンドの実行例5

表11‒6 チャンクの状態変更の実行条件」の(e)の条件で,「図11‒10 adbchgchunkstatusコマンド実行前のチャンクの状態」のチャンクに対して,adbchgchunkstatusコマンドを実行した場合の例を次に示します。

図11‒15 (e)の条件でadbchgchunkstatusコマンドを実行した場合

[図データ]

[説明]

通常状態のチャンク(チャンク1と2)を,待機状態のチャンクに変更します。また,過去に通常状態になったことがある待機状態のチャンク(チャンク3と4)を,通常状態のチャンクに変更します。

■(e)の条件でadbchgchunkstatusコマンドを実行した場合の処理結果

カレントチャンク

変更されません。

チャンクの作成日時

設定されません。

カレントチャンクが切り替わった日時

設定されません。

(f) adbchgchunkstatusコマンドの実行例6

表11‒6 チャンクの状態変更の実行条件」の(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‒6 チャンクの状態変更の実行条件」の(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‒6 チャンクの状態変更の実行条件」の(h)の条件で,「図11‒10 adbchgchunkstatusコマンド実行前のチャンクの状態」のチャンクに対して,adbchgchunkstatusコマンドを実行した場合の例を次に示します。

図11‒18 (h)の条件でadbchgchunkstatusコマンドを実行した場合

[図データ]

[説明]

カレントチャンク(チャンク5)を,待機状態のチャンクに変更します。

このとき,新規にチャンクが作成されて,カレントチャンクが変更されます(チャンク8になります)。また,チャンクの作成日時とカレントチャンクの切り替え日時が設定されます。

■(h)の条件でadbchgchunkstatusコマンドを実行した場合の処理結果

カレントチャンク

新規にチャンクが作成されて,そのチャンクがカレントチャンクになります。

チャンクの作成日時

次のチャンクにadbchgchunkstatusコマンドを実行した日時が設定されます。

  • 新規に作成されたチャンク

カレントチャンクが切り替わった日時

次のチャンクにadbchgchunkstatusコマンドを実行した日時が設定されます。

  • 変更される前にカレントチャンクだったチャンク

(i) adbchgchunkstatusコマンドの実行例9

表11‒6 チャンクの状態変更の実行条件」の(i)の条件で,「図11‒10 adbchgchunkstatusコマンド実行前のチャンクの状態」のチャンクに対して,adbchgchunkstatusコマンドを実行した場合の例を次に示します。

図11‒19 (i)の条件でadbchgchunkstatusコマンドを実行した場合

[図データ]

[説明]

カレントチャンク(チャンク5)を,待機状態のチャンクに変更します。また,過去に通常状態になったことがある待機状態のチャンク(チャンク3と4)を,通常状態のチャンクに変更します。

このとき,新規にチャンクが作成されて,カレントチャンクが変更されます(チャンク8になります)。また,チャンクの作成日時とカレントチャンクの切り替え日時が設定されます。

■(i)の条件でadbchgchunkstatusコマンドを実行した場合の処理結果

カレントチャンク

新規にチャンクが作成されて,そのチャンクがカレントチャンクになります。

チャンクの作成日時

次のチャンクにadbchgchunkstatusコマンドを実行した日時が設定されます。

  • 新規に作成されたチャンク

カレントチャンクが切り替わった日時

次のチャンクにadbchgchunkstatusコマンドを実行した日時が設定されます。

  • 変更される前にカレントチャンクだったチャンク

(j) adbchgchunkstatusコマンドの実行例10

表11‒6 チャンクの状態変更の実行条件」の(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‒6 チャンクの状態変更の実行条件」の(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‒6 チャンクの状態変更の実行条件」の(l)の条件で,「図11‒10 adbchgchunkstatusコマンド実行前のチャンクの状態」のチャンクに対して,adbchgchunkstatusコマンドを実行した場合の例を次に示します。

図11‒22 (l)の条件でadbchgchunkstatusコマンドを実行した場合

[図データ]

[説明]

通常状態のチャンク(チャンク1と2),およびカレントチャンク(チャンク5)を,待機状態のチャンクに変更します。

このとき,新規にチャンクが作成されて,カレントチャンクが変更されます(チャンク8になります)。また,チャンクの作成日時とカレントチャンクの切り替え日時が設定されます。

■(l)の条件でadbchgchunkstatusコマンドを実行した場合の処理結果

カレントチャンク

新規にチャンクが作成されて,そのチャンクがカレントチャンクになります。

チャンクの作成日時

次のチャンクにadbchgchunkstatusコマンドを実行した日時が設定されます。

  • 新規に作成されたチャンク

カレントチャンクが切り替わった日時

次のチャンクにadbchgchunkstatusコマンドを実行した日時が設定されます。

  • 変更される前にカレントチャンクだったチャンク

(m) adbchgchunkstatusコマンドの実行例13

表11‒6 チャンクの状態変更の実行条件」の(m)の条件で,「図11‒10 adbchgchunkstatusコマンド実行前のチャンクの状態」のチャンクに対して,adbchgchunkstatusコマンドを実行した場合の例を次に示します。

図11‒23 (m)の条件でadbchgchunkstatusコマンドを実行した場合

[図データ]

[説明]

通常状態のチャンク(チャンク1と2),およびカレントチャンク(チャンク5)を,待機状態のチャンクに変更します。また,過去に通常状態になったことがある待機状態のチャンク(チャンク3と4)を,通常状態のチャンクに変更します。

このとき,新規にチャンクが作成されて,カレントチャンクが変更されます(チャンク8になります)。また,チャンクの作成日時とカレントチャンクの切り替え日時が設定されます。

■(m)の条件でadbchgchunkstatusコマンドを実行した場合の処理結果

カレントチャンク

新規にチャンクが作成されて,そのチャンクがカレントチャンクになります。

チャンクの作成日時

次のチャンクにadbchgchunkstatusコマンドを実行した日時が設定されます。

  • 新規に作成されたチャンク

カレントチャンクが切り替わった日時

次のチャンクにadbchgchunkstatusコマンドを実行した日時が設定されます。

  • 変更される前にカレントチャンクだったチャンク

(n) adbchgchunkstatusコマンドの実行例14

表11‒6 チャンクの状態変更の実行条件」の(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‒6 チャンクの状態変更の実行条件」の(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地区の旧店舗情報を参照できるようにします。

チャンク内のデータを入れ替えるときの流れ

次の流れでチャンク内のデータを入れ替えます。

  1. C地区の新店舗情報をバックグラウンドインポートする

  2. チャンクの状態を変更して,C地区の旧店舗情報を参照できなくする(同時にC地区の新店舗情報を参照できるようにする)

  3. C地区の旧店舗情報を削除する

データの入れ替えを始める前に確認すること

チャンク内のデータの入れ替え手順を実施すると,カレントチャンクが変わります。カレントチャンクを変えたくない場合は,カレントチャンクのチャンクIDとチャンクのコメントを確認してください。「付録C.9 システム表の検索」の「(16) カレントチャンクの情報を調べる場合」を参照し,カレントチャンクのCHUNK_ID(チャンクID)とCHUNK_COMMENT(チャンクに設定されたコメント)を確認してください。

なお,入れ替え前のデータがカレントチャンク内にある場合は,カレントチャンクのチャンクIDとチャンクのコメントを確認する必要はありません。

チャンク内のデータの入れ替え手順
  1. 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オプションを指定してください。このオプションを指定すると,データをインポートするチャンクの状態が待機状態になります(新店舗情報は参照できない状態になります)。

    メモ

    バックグラウンドインポートの処理中,旧店舗情報は参照できます。

  2. インポートした新店舗情報が格納されたチャンクのチャンクIDを確認する

    手順1.のバックグラウンドインポート時にKFAA51242-Iメッセージが出力されます。このメッセージにチャンクIDが表示されます。

    KFAA51242-I A chunk was created. (chunk id = 5 )

    上記の例の場合,インポートした新店舗情報は,チャンクIDが5のチャンクに格納されています。

  3. チャンクの状態を変更して,C地区の旧店舗情報を参照できなくする(同時にC地区の新店舗情報を参照できるようにする)

    adbchgchunkstatus -u ADBUSER01 -p '#HelloHADB_01'
                      -n 5 -w 3 SHOPSLIST

    旧店舗情報を参照できなくし,新店舗情報を参照できるようにするために,adbchgchunkstatusコマンドでチャンクの状態を変更します。このとき,-nオプションには5を,-wオプションには3を指定します。新店舗情報を格納しているチャンク(チャンクIDが5)が通常状態になり,チャンク内のデータが参照できるようになります。また,旧店舗情報を格納しているチャンク(チャンクIDが3)が待機状態になり,チャンク内のデータは参照できなくなります。

  4. 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のチャンクがカレントチャンクになります。カレントチャンクをデータの差し替え前と同じにしたい場合は,カレントチャンクの変更手順の操作を行ってください。

カレントチャンクの変更手順
  1. adbimportコマンドで空のチャンク(データが0件のチャンク)を作成する

    adbimportコマンドの入力データファイルに空のファイルを指定して,-bオプションを指定してバックグラウンドインポートを実行してください。

  2. チャンクをマージする

    手順1.で作成した空のチャンクと,データの入れ替えを始める前に確認することで確認したカレントチャンクを,adbmergechunkコマンドでマージしてください。このとき,adbmergechunkコマンドの-mオプションには,データの入れ替えを始める前に確認することで確認したチャンクのコメントを指定してください。

    チャンクのマージが完了すると,データの入れ替え前にカレントチャンクだったチャンクが,カレントチャンクに戻ります。