11.15.3 非改竄防止表から改竄防止表への変更
既存の表を改竄防止表に変更する方法について説明します。次に示すどちらかの方法で,表を改竄防止表に変更できます。
-
HiRDB Control Managerの改竄防止ウィザードを使用する方法
-
HiRDBのコマンドを使用する方法
なお,データが格納されている表は改竄防止表に変更できません。したがって,表にデータが格納されている場合は,いったん表データをアンロードし,その後にALTER TABLEで表の定義を変更します。
(1) HiRDB Control Managerの改竄防止ウィザードを使用する方法
HiRDB Control Managerの改竄防止ウィザードを使用して,改竄防止表に変更する手順を次に示します。なお,手順の画面はWindows版HiRDBサーバで実行した例です。UNIX版HiRDBサーバで実行する場合は,パス名の表記が異なります。
- 〈手順〉
-
表T1を次に示す条件を設定した改竄防止表に変更します。
-
COL_NOTE列は更新可能列にします。
-
COL_DATE列を挿入履歴保持列とし,行削除禁止期間を10年に設定します。
-
HiRDB Control Manager - Consoleを起動します。HiRDB Control Manager - Consoleの起動方法については,マニュアル「HiRDB システム運用ガイド」を参照してください。
-
操作対象のHiRDBサーバを登録します。管理HiRDBの登録方法については,マニュアル「HiRDB システム運用ガイド」を参照してください。既に登録してある場合,この手順は必要ありません。
-
タブメニュー[表操作]から[改ざん防止表移行ウィザード]を選択します。
[改ざん防止ウィザード - 1/5]画面が表示されます。
改竄防止表に変更する表名を選択して,[パスワード]テキストボックスに,表所有者のパスワードを入力してください。ここで入力する値は,大文字と小文字の区別をします。
-
[次へ>]ボタンをクリックします。
[改ざん防止ウィザード - 2/5]画面が表示されます。
この画面では,行削除禁止期間を設定します。行削除禁止期間を設定しない場合は,[表データの削除を行わない]が選択されていることを確認してください。行削除禁止期間を設定する場合は,[一定期間後に表のデータの削除を許可する]を選択し,[挿入履歴保持列名]と[行削除禁止期間]を設定してください。
-
[次へ>]ボタンをクリックします。
[改ざん防止ウィザード - 3/5]画面が表示されます。
この画面では,更新可能列を設定します。更新可能列を設定しない場合は,[列単位でのデータの更新を許可しない]が選択されていることを確認してください。更新可能列を設定する場合は,[一部の列の更新を許可する]を選択してください。次に,[列一覧]リストから更新可能にする列名を選択し,[>]ボタンをクリックして[更新可能列一覧]リストに追加してください。
-
[次へ>]ボタンをクリックします。
[改ざん防止ウィザード - 4/5]画面が表示されます。
この画面では,変更処理中に使用する一時ファイルを格納するディレクトリについて指定します。[一時ファイル格納先一覧]リストに既定値が設定されていますので,必要に応じて変更してください。
-
[次へ>]ボタンをクリックします。
[改ざん防止ウィザード - 5/5]画面が表示されます。
設定した条件を確認します。設定を変更したい場合は,[<戻る]ボタンをクリックして,前の画面に戻ります。
-
問題がなければ[実行]ボタンをクリックします。変更処理が始まります。
- 注意事項
-
改竄防止ウィザード実行後は,ディクショナリ用RDエリアと表データの回復に必要なRDエリアのバックアップを取得してください。バックアップは,HiRDB Control Managerのバックアップウィザードで実行できます。
- 参考
-
HiRDB Control Managerでは,改竄防止表は通常表と区別して表示されます。タブメニュー[マップ]から[表]を選択して,[表マップ]画面を表示すると,変更した表が改竄防止属性であることが確認できます。
-
(2) HiRDBのコマンドを使用する方法
HiRDBのコマンドを使用して,改竄防止表に変更する手順を次に示します。
- 〈手順〉
-
RDエリア(RDAREA01)に格納されている表T1を改竄防止表に変更します。
-
pdholdコマンドで,非改竄防止表が格納されているRDエリアとデータディクショナリ用RDエリア(RDDIC01)をバックアップ閉塞します。
pdhold -r RDAREA01,RDDIC01 -b
-
バックアップ対象のRDエリアが属するサーバ(bes01,dic01)のシステムログファイルをスワップさせます。
pdlogswap -d sys -s bes01 -w pdlogswap -d sys -s dic01 -w
-
データベース複写ユティリティ(pdcopy)を実行してRDエリアのバックアップを取得します。
バックアップの取得方法については,マニュアル「HiRDB システム運用ガイド」を参照してください。
pdcopy -m /hirdb/rdarea/mast/mast01 -M r -p /usr/hirdb/pdcopy/pdcopy01 -b /usr/hirdb/pdcopy/backup/backup01 -r RDAREA01,RDDIC01
-
pdrelsコマンドで,データディクショナリ用RDエリアの閉塞を解除します。
pdrels -r RDDIC01
-
非改竄防止表のデータを,データベース再編成ユティリティ(pdrorg)を使用してアンロードします。このとき,後でデータベース作成ユティリティ(pdload)の入力データとして使用できるように,-Wオプションを指定してアンロードしてください。制御文ファイル(control_file)については,マニュアル「HiRDB コマンドリファレンス」を参照してください。
pdrorg -k unld -t T1 -W bin control_file
-
pdrelsコマンドで,ユーザ用RDエリアの閉塞を解除します。なお,9.で再度RDエリアを閉塞するまで,これ以降RDエリアへのアクセスは行わないでください。この間に対象となる表が更新された場合,データの不整合が発生するおそれがあります。
pdrels -r RDAREA01
-
非改竄防止表のデータをPURGE TABLEですべて削除します。
PURGE TABLE T1
-
ALTER TABLEで改竄防止オプションを指定して,改竄防止表に変更します。
ALTER TABLE T1 CHANGE INSERT ONLY
-
pdholdコマンドで,改竄防止表が格納されているRDエリアを閉塞します。
pdhold -r RDAREA01
-
5.でアンロードしたデータを,データベース作成ユティリティ(pdload)でロードします。制御文ファイル(control_file)については,マニュアル「HiRDB コマンドリファレンス」を参照してください。
pdload -b -W T1 control_file
-
pdrelsコマンドで,RDエリアの閉塞を解除します。
pdrels -r RDAREA01
-
pdholdコマンドで,バックアップ対象のRDエリアをバックアップ閉塞します。
pdhold -r RDAREA01,RDDIC01 -b
-
バックアップ対象のRDエリアが属するサーバ(bes01,dic01)のシステムログファイルをスワップさせます。
pdlogswap -d sys -s bes01 -w pdlogswap -d sys -s dic01 -w
-
データベース複写ユティリティ(pdcopy)を実行してRDエリアのバックアップを取得します。
バックアップの取得方法については,マニュアル「HiRDB システム運用ガイド」を参照してください。
pdcopy -m /hirdb/rdarea/mast/mast01 -M r -p /usr/hirdb/pdcopy/pdcopy01 -b /usr/hirdb/pdcopy/backup/backup01 -r RDAREA01,RDDIC01
-
pdrelsコマンドで,RDエリアの閉塞を解除します。
pdrels -r RDAREA01,RDDIC01
-
なお,改竄防止オプションの設定時期はディクショナリ表のSQL_TABLES表の値で確認できます。SQL_TABLES表の値の意味を次の表に示します。
改竄防止オプションの設定 |
SQL_TABLES |
|
---|---|---|
INSERT_ONLY列の値 |
CHANGE_TIME_INSERT_ONLYの値 |
|
なし |
NULL |
NULL |
CREATE TABLE実行時に指定 |
Y |
NULL |
ALTER TABLE実行時に指定 |
Y |
改竄防止表への変更日時 |