Hitachi

Hitachi Advanced Data Binder システム構築・運用ガイド


10.2.6 ビュー表の無効化を解除する方法

ビュー表の無効化を解除する方法は,ビュー表が無効化された原因によって異なります。それぞれの方法について説明します。

〈この項の構成〉

(1) ALTER TABLE文で表の種別を変更したことによってビュー表が無効化された場合

次に示す場合は,種別を変更した表に依存するすべてのビュー表が無効化されます。

ビュー表の無効化を解除する手順を次に示します。

例題

CUSTOMER表をレギュラーマルチチャンク表からアーカイブマルチチャンク表に変更したため,CUSTOMER表に依存するすべてのビュー表が無効化されました。CUSTOMER表に依存するすべてのビュー表の無効化を解除します。

手順

  1. 無効化されたビュー表の一覧と,それらのビュー表の定義情報を確認する

    ディクショナリ表を検索すると,無効化されたビュー表の一覧と,それらのビュー表の定義情報を取得できます。ディクショナリ表の検索例については,「付録B.21(30) 依存するビュー表の一覧,およびそれらのビュー表の定義情報を調べる場合」を参照してください。

    この例では,ビュー表CUSTOMER30s,CUSTOMER40s,およびCUSTOMER50sが無効化されたとします。

  2. 無効化されたビュー表をDROP VIEW文で削除する

    DROP VIEW "CUSTOMER30s"
    DROP VIEW "CUSTOMER40s"
    DROP VIEW "CUSTOMER50s"

    手順1.で確認した無効化されたビュー表をすべて削除してください。

  3. 無効化されたビュー表をCREATE VIEW文で再定義する

    CREATE VIEW "CUSTOMER30s" ("AGE","SEX","GNO","PNAME","PRICE")
      AS SELECT "CUSTOMER"."AGE",
                "CUSTOMER"."SEX",
                "CUSTOMER"."GNO",
                "STOCK"."PNAME",
                "STOCK"."PRICE"
           FROM "CUSTOMER","STOCK"
             WHERE "CUSTOMER"."AGE"=30 AND "CUSTOMER"."GNO"="STOCK"."GNO"

    同様に,CUSTOMER40sおよびCUSTOMER50sもCREATE VIEW文でビュー表を再定義してください。

    ポイント

    再定義するビュー表が複数ある場合,ビューレベルの値が小さい順にCREATE VIEW文を実行してください。

(2) ALTER TABLE文で表の列名を変更したことによってビュー表が無効化された場合

ALTER TABLE文で表の列名を変更した場合,列名を変更した表に依存するすべてのビュー表が無効化されます。ビュー表の無効化を解除する手順を次に示します。

例題

CUSTOMER表の列名を変更したため,CUSTOMER表に依存するすべてのビュー表が無効化されました。CUSTOMER表に依存するすべてのビュー表の無効化を解除します。

手順

  1. 無効化されたビュー表の一覧と,それらのビュー表の定義情報を確認する

    ディクショナリ表を検索すると,無効化されたビュー表の一覧と,それらのビュー表の定義情報を取得できます。ディクショナリ表の検索例については,「付録B.21(30) 依存するビュー表の一覧,およびそれらのビュー表の定義情報を調べる場合」を参照してください。

    この例では,ビュー表CUSTOMER30s,CUSTOMER40s,およびCUSTOMER50sが無効化されたとします。

  2. 無効化されたビュー表をDROP VIEW文で削除する

    DROP VIEW "CUSTOMER30s"
    DROP VIEW "CUSTOMER40s"
    DROP VIEW "CUSTOMER50s"

    手順1.で確認した無効化されたビュー表をすべて削除してください。

  3. CREATE VIEW文の指定内容を修正する

    手順1.で調べたCREATE VIEW文の指定内容のうち,列名変更に該当する個所を修正します。

    (例)表T1の列名をC3からC33に変更した場合

    <修正前>

    CREATE VIEW "VT1" ("VC1","VC2","VC3")
        AS SELECT "C1"."C2","C3" FROM "T1"

    <修正後>

    CREATE VIEW "VT1" ("VC1","VC2","VC3")
        AS SELECT "C1"."C2","C33" FROM "T1"

    変更対象の列名をCREATE VIEW文中に指定していない場合は,修正不要です。

  4. 無効化されたビュー表をCREATE VIEW文で再定義する

    CREATE VIEW "CUSTOMER30s" ("AGE","SEX","GNO","PNAME","PRICE")
      AS SELECT "CUSTOMER"."AGE",
                "CUSTOMER"."SEX",
                "CUSTOMER"."GNO",
                "STOCK"."PNAME",
                "STOCK"."PRICE"
           FROM "CUSTOMER","STOCK"
             WHERE "CUSTOMER"."AGE"=30 AND "CUSTOMER"."GNO"="STOCK"."GNO"

    同様に,CUSTOMER40sおよびCUSTOMER50sもCREATE VIEW文でビュー表を再定義してください。

    ポイント

    再定義するビュー表が複数ある場合,ビューレベルの値が小さい順にCREATE VIEW文を実行してください。

(3) 基表に対するSELECT権限を誤って取り消したことによってビュー表が無効化された場合

基表に対するSELECT権限を誤って取り消してしまった場合,その表に依存するすべてのビュー表が無効化されます。ビュー表の無効化を解除する手順を次に示します。

例題

CUSTOMER表に対するSELECT権限を誤って取り消してしまったため,CUSTOMER表に依存するすべてのビュー表が無効化されました。CUSTOMER表に依存するすべてのビュー表の無効化を解除します。

手順

  1. 無効化されたビュー表の一覧と,それらのビュー表の定義情報を確認する

    ディクショナリ表を検索すると,無効化されたビュー表の一覧と,それらのビュー表の定義情報を取得できます。ディクショナリ表の検索例については,「付録B.21(30) 依存するビュー表の一覧,およびそれらのビュー表の定義情報を調べる場合」を参照してください。

    この例では,ビュー表CUSTOMER30sが無効化されたとします。

  2. 無効化されたビュー表をDROP VIEW文で削除する

    DROP VIEW "CUSTOMER30s"

    手順1.で確認した無効化されたビュー表をすべて削除してください。

  3. CUSTOMER表に対するSELECT権限をGRANT文で付与する

    GRANT SELECT ON "CUSTOMER" TO "ADBUSER01"

    下線部分は,CUSTOMER30sを所有しているHADBユーザの認可識別子を指定します。

  4. CUSTOMER30sをCREATE VIEW文で再定義する

    CREATE VIEW "CUSTOMER30s" ("AGE","SEX","GNO","PNAME","PRICE")
      AS SELECT "CUSTOMER"."AGE",
                "CUSTOMER"."SEX",
                "CUSTOMER"."GNO",
                "STOCK"."PNAME",
                "STOCK"."PRICE"
           FROM "CUSTOMER","STOCK"
             WHERE "CUSTOMER"."AGE"=30 AND "CUSTOMER"."GNO"="STOCK"."GNO"
    ポイント

    再定義するビュー表が複数ある場合,ビューレベルの値が小さい順にCREATE VIEW文を実行してください。

(4) 表を誤って削除してしまったことによってビュー表が無効化された場合

表を誤って削除してしまった場合,削除してしまった表に依存するすべてのビュー表が無効化されます。ビュー表の無効化を解除する手順を次に示します。

注※

削除動作の指定を省略したDROP TABLE文またはDROP VIEW文を実行した場合が該当します。

手順

  1. 無効化されたビュー表の一覧と,それらのビュー表の定義情報を確認する

    ディクショナリ表を検索すると,無効化されたビュー表の一覧と,それらのビュー表の定義情報を取得できます。ディクショナリ表の検索例については,「付録B.21(30) 依存するビュー表の一覧,およびそれらのビュー表の定義情報を調べる場合」を参照してください。

  2. 無効化を解除するビュー表をDROP VIEW文で削除する

    手順1.で確認した無効化されたビュー表をすべて削除してください。

  3. 削除してしまった実表をCREATE TABLE文で再定義する。

    削除してしまった表がビュー表の場合は,ビュー表をCREATE VIEW文で再定義します。

  4. 無効化されたビュー表をCREATE VIEW文で再定義する

    CREATE VIEW文の指定内容については,手順1.のディクショナリ表の検索結果を参照してください。

    ポイント

    再定義するビュー表が複数ある場合,ビューレベルの値が小さい順にCREATE VIEW文を実行してください。