Symfoware Parallel Server RDBユーザーズガイド データベース定義編
目次 索引 前ページ次ページ

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

3.1.2 格納構造定義の変更

■表のDSO定義の追(CREATE DSO)

表定義の追加後に、表の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定義を削除する場合には、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定義の追(CREATE 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)

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

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

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

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

在庫管理DBに属するすべてのインデックスのDSOを削除します。
DROP DSO    製品名IXDSO 
                   (1)

DROP DSO    在庫番号IXDSO 
                   (1)

(1) 削除対象のインデックスのDSO名

■表のDSI定義の追(CREATE DSI)

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定義を削除する場合には、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を再定義します。このとき、変更前の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)

表の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)

(1) 変更する分割値

(1) 大阪データと兵庫データをファイルに出力します。  ―――― rdbunlコマンド
(2) 兵庫データのDSIを削除します。                   ―――― rdbddlexコマンド
(3) ALTER DSIにより分割値の変更を行います。         ―――― rdbddlexコマンド
(4) (1)のデータを同時にロードします。               ―――― rdbsloaderコマンド

◆DSIの格納範囲を変更す

保存期間を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文の指定方法の詳細については、“スコープ定義”を参照してください。

スコープ“大阪スコープ”の追加の例
CREATE SCOPE    大阪スコープ                     
                    (1)                   
                                                 
       DSI (大阪在庫表DSI,大阪発注表DSI)  
                           (2)

(1) スコープ名

(2) DSI名リスト

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

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

スコープ定義の適用の例を、以下に示します。

利用者“SUZUKI”にスコープ“大阪スコープ”を適用します。
APPLY  SCOPE    大阪スコープ      TO      SUZUKI  
                     (1)                   (2)

(1) スコープ名

(2) 認可識別子

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

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

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

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

利用者“SUZUKI”に適用しているスコープ“大阪スコープ”を解除します。
RELEASE SCOPE   大阪スコープ 
                     (1) 
                             
        FROM    SUZUKI       
                  (2)

(1) スコープ名

(2) 認可識別子

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

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

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

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

スコープ“東京スコープ”の定義を削除します。
DROP SCOPE  東京スコープ
                (1)

(1) スコープ名

■データベースの定義変更時の注意事

データベースの定義変更が終了したら、RDBディクショナリの領域不足に備えて、rdbprdicコマンドでRDBディクショナリの使用率を確認し、RDBディクショナリの拡張契機を見積もる必要があります。

RDBディクショナリの拡張契機の見積りについては、“RDB管理者ガイド”を参照してください。


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

All Rights Reserved, Copyright(C) 富士通株式会社 2006