Symfoware Parallel Server RDBユーザーズガイド データベース定義編 |
目次
索引
![]() ![]() |
第3章 データベースの定義変更と削除 | > 3.1 データベースの定義変更 |
表定義の追加後に、表のDSO定義を追加する場合には、CREATE DSO文を使用します。表のDSO定義の追加例を以下に示します。CREATE DSO文の指定方法の詳細については、“格納構造の定義”を参照してください。
例
製品表のDSOとして製品表DSOを追加します。
CREATE DSO 製品表DSO FROM STOCKS.製品表 (1) (2) TYPE SEQUENTIAL(PAGESIZE(4),ORDER(1)) (3)(1) 追加対象のDSO名
(2) 表名
(3) データ構造
実表から表のDSO定義を削除する場合には、DROP DSO文を使用します。なお、削除対象のDSOに対して、インデックスのDSOが定義されているとき、あるいは表のDSIが定義されている場合には、当該DSO定義を削除することはできません。あらかじめ、関連するインデックスのDSO定義、あるいは表のDSI定義を削除しておく必要があります。
ただし、CASCADEを指定した場合、削除するDSOに関連するDSIはすべて削除されます。
表のDSO定義の削除例を以下に示します。
例
在庫管理DBに属するすべての表のDSOを削除します。
DROP DSO 在庫表DSO (1) DROP DSO 発注表DSO (1)(1) 削除対象のDSO名
表のDSO定義が済んでいる実表にインデックスのDSO定義を追加する場合には、CREATE DSO文を使用します。インデックスのDSO定義の追加例を以下に示します。CREATE DSO文の指定方法の詳細については、“格納構造の定義”を参照してください。
例
在庫表の倉庫番号の上に、インデックスのDSOとして在庫番号IXDSOを追加します。
CREATE DSO 在庫番号IXDSO INDEX ON STOCKS.在庫表(倉庫番号) (1) (2) (3) TYPE BTREE (PAGESIZE1(16), PAGESIZE2(1))(1) 追加対象のインデックスのDSO名
(2) スキーマで修飾された表名
(3) 列名
実表からインデックスのDSO定義を削除する場合には、DROP DSO文を使用します。
インデックスのDSIが定義されている場合には、当該インデックスのDSO定義を削除することはできません。前もって、関連するインデックスのDSIを削除しておく必要があります。
ただし、CASCADEを指定した場合、削除するDSOが実表の場合に、それに関連するインデックスのDSOおよびそれに関連するDSIはすべて削除されます。
インデックスのDSO定義の削除例を以下に示します。
例
在庫管理DBに属するすべてのインデックスのDSOを削除します。
DROP DSO 製品名IXDSO (1) DROP DSO 在庫番号IXDSO (1)(1) 削除対象のインデックスのDSO名
DSO定義済みの実表にDSI定義を追加する場合には、CREATE DSI文を使用します。CREATE DSI文の各項目の指定方法は格納構造定義時の指定と同じです。
表のDSI定義の追加例を以下に示します。CREATE DSI文の指定方法の詳細については、“格納構造の定義”を参照してください。
例
在庫管理DBに東海発注表DSIを追加します。この東海発注表DSIは、発注表DSOの配下に属し、かつデータベーススペースDBSP_3上に定義されるものとします。
CREATE DSI 東海発注表DSI DSO 発注表DSO USING (80, 89) (1) (2) (3) ALLOCATE DATA ON DBSP_3 SIZE 1M (4) (5) (6)(1) 追加対象のDSI名
(2) DSO名
(3) 分割キー値
(4) データベーススペース指定
(5) 割付け量
(6) スペース割付け
実表からDSI定義を削除する場合には、DROP DSI文を使用します。対象のDSIが表のDSIであり、それに関係するインデックスのDSIが存在する場合、当該DSI定義を削除することはできません。あらかじめ、関連するインデックスのDSIのDSI定義を削除しておく必要があります。
ただし、CASCADEを指定した場合、削除するDSIによる格納対象が表の場合に、それに関連するインデックスのDSIはすべて削除されます。
DSI定義の削除例を以下に示します。
例
在庫管理DBに属するすべてのDSIを削除します。
DROP DSI 製品名IXDSI (1) DROP DSI 在庫表DSI (1) DROP DSI 関西発注表DSI (1) DROP DSI 関東発注表DSI (1)(1) 削除対象のDSI名
圧縮されていないデータが格納されている表のDSIを、データ圧縮指定を指定した表のDSIに変更する場合には、変更対象の表のDSI定義を削除した後、データ圧縮指定を指定して表のDSIを再定義します。このとき、変更前のDSIにインデックスが作成されていた場合は、インデックスも再定義します。
2000年度のDSI(DSI_2000)を、データ圧縮指定を指定したDSIに変更する場合の例を以下に示します。
[変更前]
CREATE DSI DSI_2000 DSO 在庫表DSO ALLOCATE DATA ON (DBSP_1, DBSP_2, DBSP_3) SIZE 6000M |
[DSI変更の例]
DROP DSI DSI_2000 CREATE DSI DSI_2000 DSO 在庫表DSO COMPRESS (1) ALLOCATE DATA ON (DBSP_1, DBSP_2, DBSP_3) SIZE 4000M |
(1) データ圧縮指定
(1) DSI_2000のデータをファイルに出力します。 ―――― rdbunlコマンド (2) DSI_2000を削除します。 ―――― rdbddlexコマンド (3) 「データ圧縮の方式」をもとに、容量の見積りを行います。 (4) データ圧縮指定を指定して、DSI_2000を再定義します。 ―――― rdbddlexコマンド (5) (1)のデータをロードします。 ―――― rdbsloaderコマンド |
表のDSI定義の分割キー値を変更する場合には、ALTER DSI文を使用します。表の格納構造がSEQUENTIAL構造およびRANDOM構造の場合に分割キー値を変更することができます。以下に分割キー値の変更例を示します。
兵庫データを大阪データに統合したい場合の例を以下に示します。
[変更前]
CREATE DSO DSO01 FROM SCH01.TABLE01 TYPE SEQUENTIAL(PAGESIZE(4),ORDER(1)) WHERE(所在) = (?) CREATE DSI 東京DSI DSO DSO01 USING(N'東京') ALLOCATE DATA ON … CREATE DSI 大阪DSI DSO DSO01 USING(N'大阪') ALLOCATE DATA ON … CREATE DSI 兵庫DSI DSO DSO01 USING(N'兵庫') ALLOCATE DATA ON … 〜 |
[DSI変更の例]
DROP DSI 兵庫DSI ALTER DSI 大阪DSI ALTER USING(N'大阪'), (N'兵庫') (1) |
(1) 変更する分割値
(1) 大阪データと兵庫データをファイルに出力します。 ―――― rdbunlコマンド (2) 兵庫データのDSIを削除します。 ―――― rdbddlexコマンド (3) ALTER DSIにより分割値の変更を行います。 ―――― rdbddlexコマンド (4) (1)のデータを同時にロードします。 ―――― rdbsloaderコマンド |
保存期間を3年としている売上データについて、保存対象となる年を変更する例を以下に示します。
[変更前]
CREATE DSO 売上表DSO FROM STOCKS.売上表 TYPE SEQUENTIAL(PAGESIZE(4),ORDER(1)) WHERE(年度, 月) = (?, ?) CREATE DSI 1月DSI DSO 売上表DSO USING (1998, 1),(1999, 1),(2000, 1) … CREATE DSI 2月DSI DSO 売上表DSO USING (1998, 2),(1999, 2),(2000, 2) … CREATE DSI 3月DSI DSO 売上表DSO USING (1998, 3),(1999, 3),(2000, 3) … 〜 |
[DSI変更の指定例]
ALTER DSI 1月DSI ALTER USING(1999, 1),(2000, 1),(2001, 1) ALTER DSI 2月DSI ALTER USING(1999, 2),(2000, 2),(2001, 2) ALTER DSI 3月DSI ALTER USING(1999, 3),(2000, 3),(2001, 3) 〜 (1) |
(1) 変更する分割値
スコープ定義を追加する場合は、CREATE SCOPE文を使用します。スコープ定義を追加する例を、以下に示します。CREATE SCOPE文の指定方法の詳細については、“スコープ定義”を参照してください。
例
スコープ“大阪スコープ”の追加の例
CREATE SCOPE 大阪スコープ (1) DSI (大阪在庫表DSI,大阪発注表DSI) (2)(1) スコープ名
(2) DSI名リスト
追加したスコープ定義を適用する場合は、APPLY SCOPE文を使用します。スコープ定義を追加する例を、以下に示します。APPLY SCOPE文の指定方法の詳細については、“スコープ定義の適用”を参照してください。
スコープ定義の適用の例を、以下に示します。
例
利用者“SUZUKI”にスコープ“大阪スコープ”を適用します。
APPLY SCOPE 大阪スコープ TO SUZUKI (1) (2)(1) スコープ名
(2) 認可識別子
スコープ定義の解除は、RELEASE SCOPE文を使用します。APPLY SCOPE文により、利用者に適用されているスコープ定義を解除します。
RELEASE SCOPE文とAPPLY SCOPE文の実行者は、同じでなければなりません。
RELEASE SCOPE文の例を、以下に示します。
例
利用者“SUZUKI”に適用しているスコープ“大阪スコープ”を解除します。
RELEASE SCOPE 大阪スコープ (1) FROM SUZUKI (2)(1) スコープ名
(2) 認可識別子
スコープ定義の削除は、DROP SCOPE文を使用します。APPLY SCOPE文により、利用者に適用されているスコープ定義も削除します。
DROP SCOPE文とCREATE SCOPE文は、同じ実行者でなければなりません。
DROP SCOPE文の例を、以下に示します。
例
スコープ“東京スコープ”の定義を削除します。
DROP SCOPE 東京スコープ (1)(1) スコープ名
データベースの定義変更が終了したら、RDBディクショナリの領域不足に備えて、rdbprdicコマンドでRDBディクショナリの使用率を確認し、RDBディクショナリの拡張契機を見積もる必要があります。
RDBディクショナリの拡張契機の見積りについては、“RDB管理者ガイド”を参照してください。
目次
索引
![]() ![]() |