Hitachi

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


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

SDBデータベースの定義変更をする場合,pdsdbdefコマンドで*ALTER DICTIONARY文および*ALTER DIRECTORY文を実行します。

なお,*ALTER DICTIONARY文および*ALTER DIRECTORY文によるSDBデータベースの定義変更では,次の変更だけができます。

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

そのほかの定義変更をする場合は,いったんSDBデータベースの定義削除をしたあとに定義変更を行い,再度SDBデータベースを定義追加するため,HiRDBを再起動する必要があります。この場合の手順については,「5.6.5 SDBデータベースの定義変更」を参照してください。

注意事項

SD FMBのSDBデータベースの場合,HiRDBの再起動を必要としないSDBデータベースの定義変更はできません。「5.6.5(2)SDBデータベースを再定義する方法」で説明している方法を実施してください。

SDBデータベースの定義変更の手順を次に示します。

〈この項の構成〉

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

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

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

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

(2) SDBディクショナリ情報を変更する

pdsdbdefコマンドで*ALTER DICTIONARY文を実行し,SDBデータベースのSDBディクショナリ情報を変更します。*ALTER DICTIONARY文には,(1)で作成したSDBデータベース定義およびSDBデータベース格納定義を指定します。

注意事項
  • pdsdbdefコマンドを実行する際,SDB定義文に*CHECK DICTIONARY文(データベース定義のチェック)も必ずあわせて指定してください。

    *ALTER DICTIONARY文と*CHECK DICTIONARY文を別々に実行した場合,*CHECK DICTIONARY文の実行時にデータベース定義の不整合が検知されると,不整合が検知されたSDBディクショナリ情報を*DELETE DICTIONARY文で削除する必要が生じます。しかし,*DELETE DICTIONARY文を実行した場合,HiRDBを再起動する必要があるため,*ALTER DICTIONARY文とあわせて*CHECK DICTIONARY文を必ず指定するようにしてください。

  • pdsdbdefコマンドを実行する際,-iオプションは指定しないでください。-iオプションを指定すると,HiRDBの再起動が必要になります。

*CHECK DICTIONARY文を指定した場合,データベース定義の指定内容に不整合があると,エラーメッセージが出力されます。また,このときSDBディクショナリ情報はディクショナリ表に追加されません。エラーがなくなるまで,(2)の作業を繰り返してください。

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

(3) SDBディレクトリ情報を変更する

pdsdbdefコマンドで*ALTER DIRECTORY文を実行し,SDBディレクトリ情報を変更します。

注意事項
  • (2)の作業で,複数のSDBデータベースのSDBディクショナリ情報を変更した場合,*ALTER DIRECTORY文によるSDBディレクトリ情報の変更は,1回のpdsdbdefコマンドで実行してください。

    pdsdbdefコマンドを複数回実行した場合,何回目かのpdsdbdefコマンドでエラーが発生すると,一部のSDBディレクトリ情報については作成が完了し,一部のSDBディレクトリ情報については未作成の状態になります。この場合,未作成状態のSDBディレクトリ情報を再度作成する必要があります。

    一方,1回のpdsdbdefコマンドで複数のSDBディレクトリ情報を変更した場合,すべてのSDBディレクトリ情報の作成が完了するか,またはすべてのSDBディレクトリ情報が未作成になるかのどちらかになります。そのため,pdsdbdefコマンドを複数回実行したときに比べて対処が簡単になります。

  • pdsdbdefコマンドを実行する際,-iオプションは指定しないでください。-iオプションを指定すると,HiRDBの再起動が必要になります。

*ALTER DIRECTORY文については,「11.4.7 *ALTER DIRECTORY文(SDBディレクトリ情報の変更)【4V FMB,4V AFM】」を参照してください。

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

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

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

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

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

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

  5. HiRDBを再起動します。

  6. pdsdblodコマンドを使用して,1.でアンロードしたレコードをデータロードします。

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

参考

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