Symfoware Server RDB運用ガイド(データベース定義編) - FUJITSU -
目次 索引 前ページ次ページ

第3章 データベースの定義変更と削除> 3.1 データベースの定義変更

3.1.2 格納構造定義の変更

格納構造定義の変更の指定方法について説明します。

■表のDSO定義の追(CREATE DSO

表定義の追加後に、表のDSO定義を追加す場合には、CREATE DSO文を使用します。表のDSO定義の追加例を以下に示します。CREATE DSO文の指定方法の詳細については、“格納構造の定義”を参照してください。

製品表のDSOとして製品表DSOを追加
CREATE DSO    製品表DSO    FROM  STOCKS.製品表
                   ↑                    ↑
            追加対象のDSO名             表名

          TYPE SEQUENTIAL(PAGESIZE(4),ORDER(1))
                            ↑
                        データ構造 

■表のDSO定義の削(DROP DSO

実表から表のDSO定義を削除す場合には、DROP DSO文を使用します。なお、削除対象のDSOに対して、インデックスのDSOが定義されているとき、あるいは表のDSIが定義されている場合には、当該DSO定義を削除することはできません。あらかじめ、関連するインデックスのDSO定義、あるいは表のDSI定義を削除しておく必要があります。

ただし、CASCADEを指定した場合、削除するDSOに関連するDSIはすべて削除されます。

表のDSO定義の削除例を以下に示します。

在庫管理DBに属するすべての表のDSOを削除
DROP DSO    在庫表DSO;
                 ↑
          削除対象のDSO名

DROP DSO    発注表DSO;
                 ↑
           削除対象のDSO名

■インデックスのDSO定義の追(CREATE DSO

表のDSO定義が済んでいる実表にインデックスのDSO定義を追加す場合には、CREATE DSO文を使用します。インデックスのDSO定義の追加例を以下に示します。CREATE DSO文の指定方法の詳細については、“格納構造の定義”を参照してください。

在庫表の倉庫番号の上に、インデックスのDSOとして在庫番号IXDSOを追加
CREATE DSO    在庫番号IXDSO  INDEX ON   STOCKS.在庫表 (倉庫番号)
                      ↑                           ↑           ↑
         追加対象のインデックスのDSO名       スキーマで修飾    列名
                                             された表名

            TYPE BTREE (PAGESIZE1(16), PAGESIZE2(1), REALIGNMENT)

■インデックスのDSO定義の削(DROP DSO

実表からインデックスのDSO定義を削除す場合には、DROP DSO文を使用します。

インデックスのDSIが定義されている場合には、当該インデックスのDSO定義を削除することはできません。前もって、関連するインデックスのDSIを削除しておく必要があります。

ただし、CASCADEを指定した場合、削除するDSOが実表の場合に、それに関連するインデックスのDSOおよびそれに関連するDSIはすべて削除されます。

インデックスのDSO定義の削除例を以下に示します。

在庫管理DBに属するすべてのインデックスのDSOを削除
DROP DSO    製品番号IXDSO;
                   ↑
       削除対象のインデックスのDSO名

DROP DSO    在庫番号IXDSO;
                    ↑
       削除対象のインデックスのDSO名

■表のDSI定義の追(CREATE DSI

DSO定義済みの実表にDSI定義を追加す場合には、CREATE DSI文を使用します。CREATE DSI文の各項目の指定方法は、格納構造定義時の指定と同じです。

また、運用中のデータベースに対して表のDSI定義の追加が必要な場合は、アプリケーションを停止せずに表のDSI定義を追加することができます。

アプリケーション実行中に表のDSI定義を追加する場合は、rdbddlexコマンドの準備モード(lオプション)で定義します。

rdbddlexコマンドの詳細については、“コマンドリファレンス”を参照してください。

表のDSI定義の追加例を以下に示します。CREATE DSI文の指定方法の詳細については、“格納構造の定義”を参照してください。

在庫管理DBに東海発注表DSIを追加
CREATE DSI  東海発注表DSI  DSO  発注表DSO   USING  (80, 89)
                   ↑                   ↑                  ↑
            追加対象のDSI名            DSO名            分割キー値

            ALLOCATE  DATA  ON   DBSP_3  SIZE  2000M ← スペース割付け
                                   ↑           ↑
                              データベース    割付け量
                              スペース名

この東海発注表DSIは、発注表DSOの配下に属し、かつデータベーススペースDBSP_3上に定義されるものとします。

■表のDSI定義の削(DROP DSI

実表からDSI定義を削除す場合には、DROP DSI文を使用します。対象のDSIが表のDSIであり、それに関係するインデックスのDSIが存在する場合、当該DSI定義を削除することはできません。あらかじめ、関連するインデックスのDSIのDSI定義を削除しておく必要があります。

ただし、CASCADEを指定した場合、削除するDSIによる格納対象が表の場合に、それに関連するインデックスのDSIはすべて削除されます。

DSI定義の削除例を以下に示します。

在庫管理DBに属するすべてのDSIを削除
DROP DSI    製品番号IXDSI;
                  ↑
           削除対象のDSI名

DROP DSI    在庫表DSI;
                  ↑
           削除対象のDSI名

DROP DSI    関西発注表DSI;
                  ↑
           削除対象のDSI名

DROP DSI    関東発注表DSI;
                  ↑
           削除対象のDSI名

■インデックスのDSI定義の追(CREATE DSI

インデックスのDSIを追加する場合には、CREATE DSI文を使用します。

rdbddlexコマンドの準備モード(lオプション)で追加した表のDSIに関連するインデックスのDSIを定義する場合は、rdbddlexコマンドの準備モード(lオプション)で定義します。

rdbddlexコマンドの詳細については、“コマンドリファレンス”を参照してください。

 

CREATE  DSI  在庫番号IXDSI INDEX  DSO 在庫番号IXDSO
                     ↑                            ↑
            インデックスのDSI名           インデックスのDSO名

      BASE  在庫表DSI
                  ↑
               表のDSI名

        ALLOCATE  INDEX ON DBSP_4 SIZE   1M,    ← スペース割付け
                  BASE  ON DBSP_4 SIZE 100M     ← スペース割付け

■DSI定義の分割キー値の変(ALTER DSI

表のDSI定義の分割キー値を変更する場合には、ALTER DSI文を使用します。表の格納構造がSEQUENTIAL構およびRANDOM構の場合に分割キー値を変更することができます。以下に分割キー値の変例を示します。

◆DSIを統合す

兵庫データを大阪データに統合したい場合の例を以下に示します。

[変更前]

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) 兵庫データをファイルに出力します。------------- rdbunlコマンド
(2) 兵庫データのDSIを削除します。----------------- rdbddlexコマンド
(3) ALTER DSIにより分割値の変更を行います。------ rdbddlexコマンド
(4) 大阪データのバックアップをファイルに出力します。---- rdbunlコマンド
(5) (1)のデータを追加ロードします。--------------- rdbsaloaderコマンド

操作例

$ rdbunl -i 在庫管理DB.兵庫DSI /rdb2/backup/HyogoDSI.dat
$ rdbddlex -d 在庫管理DB /home3/ddl/drop.ddl
$ rdbddlex -d 在庫管理DB /home3/ddl/alter.ddl
$ rdbunl -i 在庫管理DB.大阪DSI /rdb2/backup/OsakaDSI.dat
$ rdbsaloader -ma -i 在庫管理DB.大阪DSI -E OUTER_SPLIT_VALUE /rdb2/backup/HyogoDSI.dat

rdbsaloaderコマンドは、入力ファイル内に分割値範囲外のデータが含まれている場合、該当データを処理対象とせずに処理を続行し、正常終了します。この場合、Eオプションを使用して、分割値の変更ミスや入力ファイルの指定ミスによるデータ抜けをチェックすることができます。

rdbsaloaderコマンドの詳細については、“コマンドリファレンス”を参照してください。

◆DSIの格納範囲を変更す

保存期間を3年としている売上データについて、保存対象となる年を変更する例を以下に示します。

[変更前]

CREATE DSO 売上表DSO  FROM   STOCKS.売上表
           TYPE SEQUENTIAL(PAGESIZE(4),ORDER(1))
           WHERE(年度, 月) = (?, ?);

CREATE DSI 1月DSI DSO 売上表DSO
                      USING (2004, 1),(2005, 1),(2006, 1) …
CREATE DSI 2月DSI DSO 売上表DSO
                      USING (2004, 2),(2005, 2),(2006, 2) …
CREATE DSI 3月DSI DSO 売上表DSO
                      USING (2004, 3),(2005, 3),(2006, 3) …
        :

[DSI変更の指定例]

ALTER DSI  1月DSI  ALTER  USING(2005, 1),(2006, 1),(2007, 1);
ALTER DSI  2月DSI  ALTER  USING(2005, 2),(2006, 2),(2007, 2);
ALTER DSI  3月DSI  ALTER  USING(2005, 3),(2006, 3),(2007, 3);
                                                ↑
                :                        変更する分割値

■スコープ定義の追(CREATE SCOPE

スコープ定義を追加する場合は、CREATE SCOPE文を使用します。スコープ定義を追加する例を、以下に示します。CREATE SCOPE文の指定方法の詳細については、“スコープ定義”を参照してください。

スコープ“大阪スコープ”の追加
CREATE SCOPE    大阪スコープ
                     ↑
                  スコープ名

        DSI (大阪在庫表DSI, 大阪発注表DSI)
                            ↑
                        DSI名リスト

■スコープ定義の適(APPLY SCOPE

追加したスコープ定義を適用する場合は、APPLY SCOPE文を使用します。スコープ定義を適用する例を、以下に示します。APPLY SCOPE文の指定方法の詳細については、“スコープ定義の適用”を参照してください。

利用者“SUZUKI”にスコープ“大阪スコープ”を適用
APPLY SCOPE    大阪スコープ      TO      SUZUKI
                    ↑                     ↑
                スコープ名             認可識別子

■スコープ定義の解(RELEASE SCOPE)

スコープ定義の解除は、RELEASE SCOPE文を使用します。APPLY SCOPE文により、利用者に適用されているスコープ定義を解除します。

RELEASE SCOPE文とAPPLY SCOPE文の実行者は、同じでなければなりません。

RELEASE SCOPE文の例を、以下に示します。

利用者“SUZUKI”に適用しているスコープ“大阪スコープ”を解除
RELEASE SCOPE    大阪スコープ      FROM      SUZUKI
                      ↑                       ↑
                  スコープ名               認可識別子

■スコープ定義の削(DROP SCOPE

スコープ定義の削除は、DROP SCOPE文を使用します。APPLY SCOPE文により、利用者に適用されているスコープ定義も削除します。

DROP SCOPE文とCREATE SCOPE文は、同じ実行者でなければなりません。

DROP SCOPE文の例を、以下に示します。

スコープ“東京スコープ”の定義を削除
DROP SCOPE  東京スコープ
                 ↑
             スコープ名

目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2007-2008