Hitachi

ノンストップデータベース HiRDB Version 10 構造型データベース機能


5.6.5 SDBデータベースの定義変更

SDBデータベースの定義変更をするには,次の2つの方法があります。

  1. SDBデータベースの定義変更をする方法

  2. SDBデータベースを再定義する方法

1.の方法では次の操作ができます。

そのほかの定義変更をする場合は,2.の方法で実施してください。

最下位のレコード型とその親子集合の定義追加の例については,4V FMBのSDBデータベースの場合は「11.5.1(4) *ALTER DICTIONARY文によるSDBデータベースの定義変更」を参照してください。4V AFMのSDBデータベースの場合は「11.6.1(4) *ALTER DICTIONARY文によるSDBデータベースの定義変更」を参照してください。

注意事項

SD FMBのSDBデータベースの定義変更は,「2.SDBデータベースを再定義する方法」で実施してください。「1.SDBデータベースの定義変更をする方法」は実施できません。

〈この項の構成〉

(1) SDBデータベースの定義変更をする方法

*ALTER DICTIONARY文および*ALTER DIRECTORY文で,SDBデータベースの定義変更ができます。手順を次に示します。

手順

  1. データベース定義を作成する

    定義変更するSDBデータベースのSDBデータベース定義およびSDBデータベース格納定義を作成します。

    なお,SDBデータベース定義およびSDBデータベース格納定義を作成する際は,変更個所だけを指定するのではなく,変更後のSDBデータベース定義およびSDBデータベース格納定義をすべて指定する必要があります。

    SDBデータベース定義およびSDBデータベース格納定義については,次の個所を参照してください。

  2. レコードをアンロードする

    格納RDエリアの変更をする場合は,pdsdbrogコマンドで,変更対象のRDエリアに格納されたレコードをアンロードします。

  3. SDBディクショナリ情報およびSDBディレクトリ情報を変更する

    pdsdbdefコマンドで*ALTER DICTIONARY文および*ALTER DIRECTORY文を実行し,ディクショナリ表に登録されているSDBディクショナリ情報およびSDBディレクトリ情報を変更します。1.で作成したSDBデータベース定義およびSDBデータベース格納定義を*ALTER DICTIONARY文に指定します。

    SDB定義文の参照先を次に示します。

    • *ALTER DICTIONARY文:「11.4.3 *ALTER DICTIONARY文(SDBディクショナリ情報の変更)【4V FMB,4V AFM】

    • *ALTER DIRECTORY文:「11.4.7 *ALTER DIRECTORY文(SDBディレクトリ情報の変更)【4V FMB,4V AFM】

      注意事項

      *ALTER DICTIONARY文および*ALTER DIRECTORY文は,1回のpdsdbdefコマンドで実行してください。

      理由:

      *ALTER DIRECTORY文の実行時にはデータベース定義のチェックが実行されます。

      *ALTER DICTIONARY文および*ALTER DIRECTORY文を1回のpdsdbdefコマンドで実行した場合,データベース定義の不整合が検知されると,SDBディクショナリ情報およびSDBディレクトリ情報はディクショナリ表に追加されません。この場合,データベース定義を修正して,pdsdbdefコマンドを再実行することで対処できます。

      *ALTER DICTIONARY文と*ALTER DIRECTORY文を別々に実行した場合,*ALTER DIRECTORY文の実行時には,すでにSDBディクショナリ情報はディクショナリ表に追加されています。そのため,データベース定義の不整合が検知された場合に,データベース定義を修正するには,*DELETE DICTIONARY文を実行してSDBディクショナリ情報を削除してから,pdsdbdefコマンドを再実行することになります。

      1回のpdsdbdefコマンドで,*ALTER DICTIONARY文で追加または削除できるRDエリア数は15個までとなります。

  4. レコードをデータロードする

    格納RDエリアを変更した場合は,変更したRDエリアに対してpdsdblodコマンドを実行して,2.でアンロードしたレコードをデータロードします。

■SDBデータベースの定義変更を誤った場合の対処

名称の誤りなど,SDBデータベースの定義変更を誤った場合,次に示す手順で対処してください。

  1. pdsdbrogコマンドで,レコードをアンロードします。

  2. pdsdbdefコマンドで,定義変更を誤ったSDBデータベースの定義削除を行います。

  3. pdsdbdefコマンドで,SDBデータベースの定義追加を行います。

  4. pdsdbdefコマンドで,SDBディレクトリ情報ファイルを作成して,全ユニットに配布します。

  5. HiRDBを再起動します。

  6. pdsdblodコマンドを使用して,1.でアンロードしたレコードをデータロードします。分割したRDエリアを元に戻した場合は,追加データロードを実行してください。

詳細な手順については,「5.6.3 SDBデータベースの定義追加,定義変更,または定義削除の手順(各手順の詳細)」を参照してください。

参考

上記手順の2.〜4.は,1回のpdsdbdefコマンドで実行できます。

(2) SDBデータベースを再定義する方法

*DELETE DICTIONARY文および*DELETE DIRECTORY文でSDBデータベースの定義をいったん削除し,*ENTRY DICTIONARY文と*ENTRY DIRECTORY文でSDBデータベースを再定義することで,SDBデータベースの定義変更を行います。手順を次に示します。

手順

  1. データベース定義を作成する

    定義変更するSDBデータベースのSDBデータベース定義およびSDBデータベース格納定義を作成します。

  2. SDBディクショナリ情報およびSDBディレクトリ情報をいったん削除し,追加し直す

    SDBディクショナリ情報およびSDBディレクトリ情報を,*DELETE DICTIONARY文と*DELETE DIRECTORY文でいったん削除し,*ENTRY DICTIONARY文と*ENTRY DIRECTORY文で再度追加します。1.で作成したSDBデータベース定義およびSDBデータベース格納定義を*ENTRY DICTIONARY文に指定します。

    なお,*DELETE DICTIONARY文および*DELETE DIRECTORY文を実行するためにpdsdbdefコマンドを実行する際,-iオプションを指定する必要があります。-iオプションを指定しないと,pdsdbdefコマンドの実行がエラーになります。

注意事項

SDBディレクトリ情報およびSDBディクショナリ情報を削除する際は,必ず*DELETE DIRECTORY文,*DELETE DICTIONARY文の順にSDB定義文を指定してください。

SDB定義文の参照先を次に示します。