5.7.5 SDBデータベースの定義変更
SDBデータベースの定義変更をする場合,pdsdbdefコマンドで*ALTER DICTIONARY文および*ALTER DIRECTORY文を実行します。
なお,*ALTER DICTIONARY文および*ALTER DIRECTORY文によるSDBデータベースの定義変更では,次の変更だけができます。
-
最下位のレコード型とその親子集合の追加
-
横分割したレコード型の格納RDエリア追加
最下位のレコード型とその親子集合の追加の例については,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データベース格納定義については,次の個所を参照してください。
-
4V FMBのSDBデータベースの定義を変更する場合
-
4V AFMの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定義文の参照先を次に示します。
-
*ALTER DICTIONARY文:「11.4.3 *ALTER DICTIONARY文(SDBディクショナリ情報の変更)【4V FMB,4V AFM】」
-
*CHECK DICTIONARY文:「11.4.5 *CHECK DICTIONARY文(データベース定義のチェック)」
(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データベースの定義変更を誤った場合,次に示す手順で対処してください。
-
pdsdbrogコマンドで,レコードをアンロードします。
-
pdsdbdefコマンドで,定義変更を誤ったSDBデータベースの定義削除を行います。
-
pdsdbdefコマンドで,SDBデータベースの定義追加を行います。
-
pdsdbdefコマンドで,SDBディレクトリ情報ファイルを作成して,全ユニットに配布します。
-
HiRDBを再起動します。
-
pdsdblodコマンドを使用して,1.でアンロードしたレコードをデータロードします。
上記の作業の詳細な手順については,「5.6.3 SDBデータベースの定義追加,定義変更,または定義削除の手順(各手順の詳細)」を参照してください。
- 参考
-
上記手順の2.〜4.は,1回のpdsdbdefコマンドで実行できます。
-