Hitachi

インナレプリカ機能 HiRDB Staticizer Option Version 10


付録B.1 定義系SQLを実行するための条件

インナレプリカ機能を使用している場合,定義系SQLはオリジナルRDエリアとレプリカRDエリアの対象の表に関連するすべてのRDエリア(インデクス,LOB列,BLOB属性,およびプラグインインデクス)に対して処理を行います。

定義系SQLを実行するためには,次に示す幾つかの条件を満たしている必要があります。(b)および(c)の条件を満たしていない場合,定義系SQLはエラーになります。

(a) 格納RDエリア名

指定された格納RDエリアがオリジナルRDエリアかどうか。

(b) 対象の表と関連RDエリアのレプリカRDエリアの複製定義

対象の表と関連するRDエリアが複数になる場合,次の条件を満たすかどうか。

  • 各RDエリアのレプリカRDエリアの定義数が同じ

  • 各RDエリアのレプリカRDエリアを定義した世代が同じ

(c) RDエリアの状態

対象の表と関連するRDエリアが,すべての世代(オリジナルRDエリアも含む)で定義系SQLを実行できる状態か。

RDエリアの状態の確認手順とRDエリアの状態ごとの定義系SQLの実行可否を次に示します。

RDエリアの状態の確認手順

定義系SQLを実行する前に,次の手順に従ってRDエリアの状態を確認します。

  1. pdrdreflsコマンドに-tオプションを指定し,対象の表に関連するRDエリアを調べます。

    インデクスの定義を変更する場合は,インデクスを定義している表を指定します。なお,pdrdreflsコマンドで表示される関連RDエリアは,対象の表またはインデクス格納RDエリアにほかの表またはインデクスが定義されている場合,それらの情報も表示するため,実際に定義SQL文が対象とする関連RDエリアよりも範囲が広い場合があります。-aオプション指定で表示される表またはインデクス名称から対象RDエリアを判断してください。

  2. 1.で調べたRDエリアで,すべてのオリジナルRDエリアが更新可能状態であることをpddblsコマンドで確認します。

  3. 1.で調べたRDエリアで,レプリカRDエリアの状態をpddblsコマンドで確認します。定義系SQLを実行できる条件を次に示します。

    <オリジナルRDエリアがすべてカレントRDエリアである場合>

    すべてのレプリカRDエリアが,各世代内で次のどちらかの状態で統一されていること。

    ・更新可能な状態

    ・コマンド閉塞かつクローズ状態で定義処理をスキップする状態

    <オリジナルRDエリアがカレントRDエリアでない場合>

    (i)pddblsコマンドに-Cオプションを指定し,1.で調べたオリジナルRDエリアののレプリカRDエリアを調べます。

    (ii)pddblsコマンドの-qオプションに(i)のカレントRDエリアの世代番号を指定し,すべてのRDエリアが更新可能状態であることを確認します。

    (iii)上記以外のレプリカRDエリアが,各世代内で次のどちらかの状態で統一されていること。

    ・更新可能な状態

    ・コマンド閉塞かつクローズ状態で定義処理をスキップする状態

    注※

    世代の処理対象となる表に関連するすべてのRDエリアがコマンド閉塞かつクローズ状態の場合は,定義処理がスキップされます。定義処理をスキップした場合,KFPH22032-Wメッセージが出力されます。定義系SQLが正常に完了し,KFPH22032-Wメッセージが出力されている場合は,スキップした世代のRDエリアはデータディクショナリ用RDエリアの定義情報と不整合です。閉塞を解除する前にRDエリアの再作成が必要になります。詳細は「KFPH22032-Wメッセージの出力と対処」を参照してください。

RDエリアの状態ごとの定義系SQLの実行可否

RDエリアの状態ごとの定義系SQLの実行可否を,表「RDエリア状態ごとの定義系SQLの実行可否(オープン契機がINITIALの場合)」および表「RDエリア状態ごとの定義系SQLの実行可否(オープン契機がDEFERまたはSCHEDULEの場合)」に示します。

表B‒1 RDエリア状態ごとの定義系SQLの実行可否(オープン契機がINITIALの場合)

定義系SQL

オリジナル世代または

カレントRDエリアの世代

左記以外のレプリカRDエリアの世代

閉塞なし

オープン

クローズ

×

×

コマンド閉塞

オープン

×

×

クローズ

×

※1

参照可能閉塞

オープン

×

×

クローズ

×

×

参照可能バックアップ閉塞

オープン

×

×

クローズ

×

×

更新可能バックアップ閉塞

オープン

クローズ

障害閉塞

オープン

×

×

クローズ

×

×

ログレス閉塞

オープン

×

×

クローズ

×

×

同期化閉塞

オープン

※2

※2

クローズ

×

×

オンライン再編成閉塞

オープン

×

×

クローズ

×

×

(凡例)

○:実行できます。

×:実行できません。

−:該当しません。

注※1

世代の処理対象となる表に関連するすべてのRDエリアがコマンド閉塞かつクローズ状態の場合は,定義処理がスキップされます。この場合,KFPH22032-Wメッセージが出力され,閉塞を解除する前にRDエリアを再作成する必要があります。詳細は「KFPH22032-Wメッセージの出力と対処」を参照してください。

注※2

排他待ちになります。

表B‒2 RDエリア状態ごとの定義系SQLの実行可否(オープン契機がDEFERまたはSCHEDULEの場合)

定義系SQL

オリジナル世代または

カレントRDエリアの世代

左記以外のレプリカRDエリアの世代

閉塞なし

オープン

クローズ

コマンド閉塞

オープン

×

×

クローズ

×

※1

参照可能閉塞

オープン

×

×

クローズ

×

×

参照可能バックアップ閉塞

オープン

×

×

クローズ

×

×

更新可能バックアップ閉塞

オープン

クローズ

障害閉塞

オープン

×

×

クローズ

×

×

ログレス閉塞

オープン

×

×

クローズ

×

×

同期化閉塞

オープン

※2

※2

クローズ

※2

※2

オンライン再編成閉塞

オープン

×

×

クローズ

×

×

(凡例)

○:実行できます。

×:実行できません。

注※1

世代の処理対象となる表に関連するすべてのRDエリアがコマンド閉塞かつクローズ状態の場合は,定義処理がスキップされます。この場合,KFPH22032-Wメッセージが出力され,閉塞を解除する前にRDエリアを再作成する必要があります。詳細は「KFPH22032-Wメッセージの出力と対処」を参照してください。

注※2

排他待ちになります。

一部の定義系SQLは,それぞれのRDエリアに対してこれらの条件のどれかをチェックしてから処理を行います。チェックが発生する定義系SQLの一覧とそのチェック内容を次の表に示します。

表B‒3 チェックが発生する定義系SQLの一覧とそのチェック内容

SQL文

内容

チェック内容

(a)

(b)

(c)

CREATE TABLE

表定義

CREATE INDEX

インデクス定義

DROP INDEX

インデクス削除

×

DROP SCHEMA

スキーマ削除

×

ALTER TABLE ADD 列

LOB列,BLOB属性を含む抽象データ型列の列追加

ALTER TABLE CHANGE SEGMENT REUSE

空き領域の再利用機能の適用を変更

×

DROP TABLE

表削除

×

ALTER TABLE ADD RDAREA

ハッシュ関数によって横分割している表に対して,表格納用RDエリアを追加

ALTER TABLE ADD 列

FIX表の列,NOT NULL列追加

DEFAULT句指定列追加

×

ALTER TABLE CHANGE [NO SPLIT|SPLIT]

可変長文字データの格納方式を変更

×

ALTER TABLE CHANGE CLUSTER KEY

実表のクラスタキーの一意性制約を変更

×

ALTER TABLE CHANGE HASH

FIXハッシュ分割表のハッシュ関数を変更

×

ALTER TABLE DROP

実表の列を削除

×

GRANT RDAREA

RDエリア利用権限の付与

×

×

ALTER TABLE CHANGE RDAREA

分割表の境界値指定を変更

ALTER TABLE CHANGE COLUMN

LOB列,LOB属性のログ取得種別を変更

(凡例)

○:チェックします。

×:チェックしません。