ヘッダーをスキップ
Oracle Rdb SQLリファレンス・マニュアル
リリース7.2
E06178-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 


SQL> ALTER DATABASE FILENAME mf_personnel
cont> RESERVE 2 STORAGE AREAS
cont> ADD STORAGE AREA TEST_ONE
cont>    FILENAME mf_pers_test;
%RDB-E-BAD_DPB_CONTENT, invalid database parameters in the database
parameter block (DPB)
-RDMS-E-CONFRESERVE, RESERVE cannot be used with ADD/DROP in the same
ALTER DATABASE command

  • 次のOracle RMUコマンドのいずれかを使用して、複数ファイルのデータベース用に直接変更できる単一ファイルのデータベースの基本特性の一部を変更します。

  • ADD CACHEでは、同一名の表または索引にキャッシュが自動的に割り当てられます。記憶域にキャッシュを割り当てるには、CACHE USING句をALTER DATABASE文のADD STORAGE AREA句またはALTER STORAGE AREA句と併用する必要があります。

  • CACHE SIZEおよびROW LENGTHの設定の内容に応じて、行キャッシュに必要なメモリーの量が決定されます(追加のオーバーヘッドおよびページ境界への端数の切上げ処理は、データベース・システムで実行されます)。RMUを使用して必要なメモリーを表示します。

  • 行キャッシュは、任意のノード上のデータベースにアタッチするすべてのプロセスによって共有されます。

  • 行キャッシュ機能を使用する場合の要件を次に示します。

  • 行キャッシュの行の長さを変更する場合、指定した値がOracle Rdbによって4で割り切れる次の値に切り上げられます。たとえば、行の長さを30に変更すると、Oracle Rdbによって32が割り当てられます。

  • DICTIONARY IS NOT USED句を指定すると、DICTIONARY IS REQUIREDフラグがクリアされます。

  • DICTIONARY IS NOT USED句を使用してリポジトリとデータベースの間のリンクを解除する場合は、PATHNAME句ではなく、FILENAME句を使用する必要があります。

  • BACKUP FILENAME句では、EDIT STRINGオプションが指定した順にバックアップ・ファイル名の後に付加されます。たとえば、構文の次の部分では、ジャーナル3が4月23日の午後4:05にバックアップされると、BACKUP160504233.AIJという名前のOpenVMSファイルが作成されます。


       .
       .
       .
    cont> BACKUP FILENAME 'DISK2:[DIRECTORY2]BACKUP'
    cont>    (EDIT STRING IS HOUR + MINUTE + MONTH + DAY + SEQUENCE)
       .
       .
       .
    


    次の例に示すように、それぞれのEDIT STRINGオプションの間に文字列リテラルを挿入すると、ファイル名(BACKUP$1605_0423_3.AIJ)が読みやすくなります。


       .
       .
       .
    cont> BACKUP FILENAME 'DISK2:[DIRECTORY2]BACKUP'
    cont>    (EDIT STRING IS '$' + HOUR + MINUTE + '_' +
    cont>                     MONTH + DAY + '_' + SEQUENCE)
       .
       .
       .
    SQL> SHOW JOURNAL BACKUP;
         BACKUP
            Journal File:    DISK1:[DIRECTORY1]BACKUP.AIJ;1
            Backup File:     DISK2:[DIRECTORY2]BACKUP.AIJ;
            Edit String:     ('$'+HOUR+MINUTE+'_'+MONTH+DAY+'_'+SEQUENCE)
    

  • NO BATCH UPDATEまたはNO EXCLUSIVEトランザクション・モードを設定すると、IMPORTに関する様々なトランザクション・タイプが抑制され、インポートが続いて行われないように効果的に抑制できます。

  • Oracle Rdbでは、トランザクション・パラメータ・ブロック(TPB)が処理されると、無効化したトランザクション・モードについてはユーザーを指定できなくなります。

  • 順序用に予約されたスロット数は削減できません。

  • RESERVE n CACHE SLOTS句を指定しない場合、キャッシュ・スロットのデフォルト数は32になります。

  • RDB$PROFILESシステム・リレーションを使用して、CREATE USER文およびCREATE ROLE文で作成されたユーザーとロールが記録されます。データベースが作成されると、作成者は自動的にユーザーとして追加されます。

  • NUMBER OF CLUSTER NODES IS 1 (MULTIPLE INSTANCE)構文は、矛盾しているため、CREATE DATABASE、ALTER DATABASE、またはIMPORT文は失敗します。

  • RDMS$PRESTART_TXN論理名や、明示的なATTACH、CONNECT、またはDECLARE ALIAS文のPRESTARTED TRANSACTION句によってオーバーライドされないかぎり、データベース内のPRESTARTED TRANSACTION属性が使用されます。ただし、事前起動済トランザクションが有効になっている場合は、データベース用に指定した時間値が使用されます。

  • Galaxyサポートを有効化または無効化するには、コマンドを実行するプロセスにSHMEM権限が付与されている必要があります。Galaxyを有効にした場合は、データベースをオープンするプロセスのSHMEM権限が有効になっている必要があります。この機能の利用時にはRMU Openコマンドの使用をお薦めします。

  • 次に示す使用方法は、DROP STORAGE AREA CASCADE句に適用されます。

  • デフォルトでは、領域拡張の通知は無効になっています。この通知を有効にするには、論理名RDM$BIND_NOTIFY_STORAGE_AREA_EXTENDを1と定義します。これにより、記憶域拡張イベントが通知されます。メッセージは、CENTRAL演算子およびCLUSTER演算子、およびNOTIFY IS ENABLED句で指定されるすべての演算子に送信されます。
    論理名RDM$BIND_NOTIFY_STORAGE_AREA_EXTENDは、記憶域を拡張するすべてのプロセスから通知されるように、システム全体に定義する必要があります。

  • ALTER DATABASE文は、次に示す関数の2つのクラスを実行します。


    変更の最初のクラスでは、トランザクションがアクティブである必要はありません。ただし、2番目のクラスでは、トランザクションがアクティブである必要があります。Oracle Rdbでは現在、ALTER DATABASE句のこれらの2つのクラスの混在はサポートしていません。
    両方のクラスに分類される句を混在させると、次のエラー・メッセージが表示され、ALTER DATABASE文は失敗します。


    DDLDONOTMIX the {SQL-syntax} clause can not be used with some ALTER DATABASE clauses
    


    次に例を示します。


    SQL> alter database filename MF_PERSONNEL
    cont> dictionary is not used
    cont> add storage area JOB_EXTRA filename JOB_EXTRA
    RDB-F-BAD_DPB_CONTENT, invalid database parameters in the database parameter
    %RDMS-E-DDLDONOTMIX, the "DICTIONARY IS NOT USED" clause can not be used with
    some ALTER DATABASE clauses
    


    次の句はシステム・メタデータを変更しますが、ADD STORAGE AREAまたはADD CACHEなどの他の句と併用はできません。


    DDLDONOTMIXエラーが表示される場合は、アクションのクラスごとに1つの文になるよう、ALTER DATABASEを2文に再構成します。


    SQL> alter database filename MF_PERSONNEL
    cont> dictionary is not used;
    SQL> alter database filename MF_PERSONNEL
    cont> add storage area JOB_EXTRA filename JOB_EXTRA;
    

  • ノードの指定は、ALTER DATABASE文のルートのFILENAME句に対してのみ行われている可能性があります。
    これは、次の句を使用して指定されたディレクトリまたはファイル仕様には、デバイス、ディレクトリ、ファイル名、およびファイル・タイプのみが使用可能であることを意味します。

  • Oracle Rdbでは、大容量メモリー(VLM)を使用すると、システムで空いている物理メモリーがすべて使用可能になり、物理メモリーをデータベース・ユーザーの仮想アドレス空間に動的にマップできます。VLMでは、小規模な仮想アドレス・ウィンドウを介して大量の物理メモリーにアクセスできます。VLMは物理メモリー内で定義されますが、仮想アドレス・ウィンドウは各ユーザーのプライベート仮想アドレス空間内で定義され、維持されています。VLM内のグローバル・バッファは、メモリー内に常駐または固定されており、一連のプロセスの割当て制限には直接影響しません。
    プロセスごとの仮想アドレス・ウィンドウの数は、ALTER DATABASE...GLOBAL BUFFERSコマンドのUSER LIMIT IS値で指定されるグローバル・バッファの最大割当てセット・パラメータに基づいており、直接調整できません。
    ALTER DATABASE...GLOBAL BUFFERSコマンドのLARGE MEMORYパラメータは、VLM内でのグローバル・バッファ作成を指定するために使用されます。


    SQL> ALTER DATABASE FILENAME 'MYBIGDB.RDB'
    cont> GLOBAL BUFFERS ARE ENABLED
    cont>   (NUMBER IS 250000,
    cont>    USER LIMIT IS 500,
    cont>    LARGE MEMORY IS ENABLED);
    


    グローバル・バッファでのVLMの使用を開始する前に、システムの空きメモリーの量を考慮する必要があります。OpenVMSシステムでは、DCLコマンドSHOW MEMORY/PHYSICALを使用して、物理メモリーの可用性および使用率を確認できます。このコマンドは、使用中のメモリーの量および空きメモリーの量に関する情報を表示します。空きメモリーは、ユーザー・アプリケーション以外にも、VLMのグローバル・バッファに使用できます。
    データベースごとのグローバル・バッファの合計数は524,288に制限されており、最大バッファ・サイズは64ブロックです。これは、最大16GB(2,097,152アルファ・ページ)のグローバル・バッファに相当します。この制限は、将来のリリースのOracle Rdbで緩和される予定です。
    グローバル・バッファの機能の詳細は、『Oracle Rdb7 Guide to Database Performance and Tuning』を参照してください。


    例1: 読取り/書込み記憶域の読取り専用記憶域への変更

    この例では、SALARY_HISTORY記憶域を読取り/書込み記憶域から読取り専用記憶域に変更します。


    SQL> ALTER DATABASE FILENAME mf_personnel
    cont> ALTER STORAGE AREA salary_history
    cont> READ ONLY;
    

    例2: 複数の固定サイズのジャーナル・ファイルの追加

    この例では、スロットをジャーナル・ファイル用に予約し、ジャーナリング機能を有効化し、複数の固定サイズのジャーナル・ファイルを追加する方法を示します。


    SQL> CREATE DATABASE FILENAME test
    cont>    RESERVE 5 JOURNALS
    cont>    CREATE STORAGE AREA sa_one
    cont>       ALLOCATION IS 10 PAGES;
    SQL> DISCONNECT ALL;
    SQL>
    SQL> ALTER DATABASE FILENAME test
    cont>    JOURNAL IS ENABLED
    cont>    ADD JOURNAL AIJ_ONE
    cont>       FILENAME aij_one
    cont>       BACKUP FILENAME aij_one
    cont>    ADD JOURNAL AIJ_TWO
    cont>       FILENAME aij_two
    cont>       BACKUP FILENAME aij_two
    cont> ;
    

    ジャーナル・ファイルとバックアップ・ファイルは、データベースのあるディスクとは別のディスクに配置してください。

    例3: 記憶域用のスロットの予約および使用

    この例では、記憶域用にスロットを予約し、スロットを使用するデータベースに記憶域を追加する方法を示します。SHOW DATABASE文を使用してデータベースに対する変更を表示します。


    SQL> CREATE DATABASE FILENAME sample
    cont>    RESERVE 5 STORAGE AREAS
    cont>    CREATE STORAGE AREA RDB$SYSTEM
    cont>       FILENAME sample_system
    cont> --
    cont> -- Storage areas created when the database is created do not use
    cont> -- the reserved storage area slots because this operation is being
    cont> -- executed off line.
    cont> --
    cont> ;
    %RDMS-W-DOFULLBCK, full database backup should be done to ensure future
    recovery
    SQL> --
    SQL> -- Reserving storage area slots is not a journaled activity.
    SQL> --
    SQL> -- To use the reserved slots, you must alter the database and
    SQL> -- add storage areas.
    SQL> --
    SQL> DISCONNECT ALL;
    SQL> ALTER DATABASE FILENAME sample
    cont>    ADD STORAGE AREA SAMPLE_1
    cont>       FILENAME sample_1
    cont>    ADD STORAGE AREA SAMPLE_2
    cont>       FILENAME sample_2;
    

    例4: 順序用のスロットの予約

    この例では、データベース内で追加の順序を予約すると、追加分がデフォルトの32個に追加され、順序の数が次の32の倍数(64)に切り上げられる様子について示しています。


    $ SQL$ ALTER DATABASE FILENAME MF_PERSONNEL RESERVE 10 SEQUENCES;
    %RDMS-W-DOFULLBCK, full database backup should be done to ensure future recovery
    $ RMU/DUMP/HEADER=SEQUENCE MF_PERSONNEL
    *------------------------------------------------------------------------------
    * Oracle Rdb V7.1-200                                   15-AUG-2003 14:54:26.55
    *
    * Dump of Database header
    *     Database: USER2:[DOCS.WORK]MF_PERSONNEL.RDB;1
    *
    *------------------------------------------------------------------------------
    
    Database Parameters:
        Root filename is "USER2:[DOCS.WORK]MF_PERSONNEL.RDB;1"
        Sequence Numbers...
       .
       .
       .
        Client sequences...
          - 64 client sequences have been allocated
          - 0 client sequences in use
    

    例5: OpenVMSでの行キャッシュの追加および有効化

    行キャッシュを追加し、これを複数の記憶域に適用して有効化するようにMF_PERSONNELデータベースが変更されます。また、この例では、データベースにアフターイメージ・ジャーナルがすでに定義されており、JOURNAL IS ENABLED句を続行するために必要であるとされています。


    SQL> /*
    ***> Prepare the database for ROW CACHE, include extra
    ***> capacity for later additions
    ***> */
    SQL> alter database
    cont>     filename MF_PERSONNEL
    cont>     number of cluster nodes is 1
    cont>     journal is ENABLED (fast commit is enabled)
    cont>     reserve 20 cache slots
    cont>     row cache is ENABLED
    cont>
    cont> /*
    ***> Create a physical cache for all the employee rows
    ***> */
    cont>  add cache EMPIDS_RCACHE
    cont>     shared memory is SYSTEM
    cont>     row length is 126 bytes
    cont>     cache size is 204 rows
    cont>     checkpoint updated rows to database
    cont>
    cont> /*
    ***> Apply the cache to each of the relevant storage areas
    ***> */
    cont>  alter storage area EMPIDS_LOW
    cont>     cache using EMPIDS_RCACHE
    cont>  alter storage area EMPIDS_MID
    cont>     cache using EMPIDS_RCACHE
    cont>  alter storage area EMPIDS_OVER
    cont>     cache using EMPIDS_RCACHE
    cont> ;
    %RDMS-W-DOFULLBCK, full database backup should be done to ensure future recovery
    

    例6: 事前起動済トランザクションのタイムアウト値の設定


    SQL> ALTER DATABASE
    cont>   FILENAME SAMPLE
    cont>   PRESTARTED TRANSACTIONS ARE ENABLED
    cont>      (WAIT 90 SECONDS FOR TIMEOUT)
    cont>   ;
    

    例7: SINGLE INSTANCEオプションを指定するデータベースの変更

    この例では、4つのノードで構成されるGALAXYクラスタでのデータベース実行を準備します。SINGLE INSTANCE句を使用して、GALAXYの共有メモリーによる特別な最適化を有効にします。


    SQL> alter database
    cont> filename MF_PERSONNEL
    cont> galaxy support is ENABLED
    cont> number of cluster nodes is 4 (single instance);
    

    例8: スナップショット行の場合の記憶域の無効化

    次の例では、SQLを使用してC1キャッシュを変更し、キャッシュ内のスナップショット行の記憶域を無効化する方法、およびC5キャッシュを変更し、キャッシュ内のスナップショット行の記憶域をスナップショット・キャッシュ・サイズ12345行で有効化する方法を示します。


    SQL> ALTER DATABASE FILE EXAMPLE_DB
    cont> ALTER CACHE C1
    cont>  ROW SNAPSHOT IS DISABLED;
    cont> ALTER CACHE C5
    cont>  ROW SNAPSHOT IS ENABLED (CACHE SIZE IS 12345 ROWS);
    

    注意

    1 SYNONYMS ARE ENABLEDとMULISCHEMA IS ONは、両方とも同じデータベースには指定できません。

    ALTER DOMAIN文

    ドメイン定義を変更します。

    ALTER DOMAIN文を使用すると、ドメイン名に関連するキャラクタ・セット、データ型、オプションのデフォルト値、オプションの照合順番またはオプションのフォーマット句を変更できます。このドメインを参照する表およびビュー定義には、変更が反映されます。


    環境

    ALTER DOMAIN文は次の環境で使用できます。

    • 対話型SQL内

    • プリコンパイル対象のホスト言語プログラムに埋め込まれる場合

    • SQLモジュールのプロシージャの一部として

    • 動的SQLで動的に実行される文として


    形式









    引数

    char-data-types

    有効なSQL文字データ型です。文字データ型の詳細は、第2.3.1項を参照してください。

    character-set-name

    有効なキャラクタ・セット名です。使用可能なキャラクタ・セット名のリストは、第2.1節を参照してください。

    COLLATING SEQUENCE IS collation-name

    名前付きドメインに新しい照合順番を指定します。

    OpenVMS各国語キャラクタ・セット(NCS)のユーティリティでは、事前定義された一連の照合順番を使用でき、独自の照合順番も定義できます。COLLATING SEQUENCE句では、事前定義されたNCS照合順番とユーザー定義のNCS照合順番の両方を使用できます。

    COLLATING SEQUENCE句をALTER DOMAIN文で使用するには、最初にCREATE COLLATING SEQUENCE文を使用して、SQLに対するNCS照合順番を指定する必要があります。COLLATING SEQUENCE句に含まれる順番名の引数は、CREATE COLLATING SEQUENCE文に含まれる順番名と同一である必要があります。

    COMMENT IS 'string'

    ドメインに関するコメントを追加します。SQLでは、SHOW DOMAIN文の実行時にコメントのテキストが表示されます。コメントは一重引用符(')で囲み、コメント内の複数の行はスラッシュ(/)で区切ります。

    date-time-data-types

    日付、時間、または期間を指定するデータ型です。日時データ型の詳細は、第2.3.2項を参照してください。

    DEFAULT value-expr

    ドメインにデフォルト値を指定します。

    副問合せ、条件、文字、日/時および数式を含む、あらゆる値式をデフォルト値として使用できます。値式の詳細は、第2.6節を参照してください。

    NULLの詳細は、第2.6.1項およびこの引数リストに続く「使用方法」を参照してください。

    第2.6節で説明している値式には、DBKEYおよび集計関数が含まれています。ただしDEFAULT句は、DBKEYまたは集計関数の参照に有効な場所ではありません。いずれかを参照しようとすると、コンパイル時エラーが表示されます。

    列にDEFAULTを指定しない場合は、ドメインからDEFAULTが継承されます。列またはドメインのいずれにもデフォルトを指定しない場合、SQLはNULLをデフォルト値として割り当てます。

    domain-constraint

    既存の名前付きドメインに対する制約を追加または変更します。

    ドメイン制約は、ドメインに基づく列は特定のデータ値以外は含まないこと、またはデータ値をNULLにできるかどうかを指定します。

    CHECK句を使用して、値が規定の範囲内である必要があること、または値が値リストと一致するように指定します。ドメイン制約にCHECK句を指定する場合、ドメインに基づいて列に格納されているすべての値が一貫してチェックされていることを確認します。

    ドメイン制約のすべての列の値を参照するには、VALUEキーワードを使用します。次に例を示します。


    SQL> CREATE DOMAIN dom1 CHAR(1)
    cont> CHECK (VALUE IN ('F','M'))
    cont> NOT DEFERRABLE;
    

    SQL99、SQL92、ORACLE LEVEL 1、またはORACLE LEVEL 2以外の言語では、ドメイン制約をNOT DEFERRABLEと指定する必要があります。

    ドメイン制約を追加(または変更)する場合、SQLはそのドメインに基づくすべての列に対して新しい制約定義を伝播させます。ドメインに基づく列に制約と適合しないデータが含まれる場合は、SQLは次のエラーを返します。


    %RDB-E-NOT_VALID, validation on field DATE_COL caused operation to fail
    

    domain-name

    変更するドメインの名前です。ドメイン名は、データベースに含まれるドメイン内で一意である必要があります。

    DROP DEFAULT

    ドメインのデフォルト値を削除(ドロップ)します。

    IS data-type

    有効なSQLデータ型です。データ型の詳細は、第2.3節を参照してください。

    NO COLLATING SEQUENCE

    名前付きのドメインが、標準のデフォルト照合順番(ASCII)を使用するように指定します。NO COLLATING SEQUENCE句を使用して、CREATE SCHEMA文またはALTER SCHEMA文の中のスキーマや、CREATE DOMAIN文の中のドメインに対して定義された照合順番をオーバーライドします。

    RENAME TO

    変更中のドメイン名を変更します。詳細は、「RENAME文」を参照してください。新規名がシノニム名である場合は、エラーが発生します。

    RENAME TO句には、このデータベースに対して有効なシノニムが必要です。「ALTER DATABASE文」のSYNONYMS ARE ENABLED句に関する説明を参照してください。これらのシノニムがデータベース定義またはアプリケーションによって使用されていない場合は、削除される可能性があります。

    SET DEFAULT

    挿入された列にその列の値が含まれていない場合に、列のデフォルト値を設定します。列のデフォルト値は、ドメインのデフォルト値をオーバーライドします。デフォルト値を指定しない場合、SQLはNULLをデフォルト値として割り当てます。NULLの詳細は、第2.6.1項およびこの引数リストに続く「使用方法」を参照してください。

    sql-and-dtr-clause

    オプションのSQLおよびDATATRIEVEフォーマット句です。フォーマット句の詳細は、第2.5節を参照してください。

    value-expr

    ドメインのデフォルト値を指定します。

    使用方法

    • ドメイン定義を変更するには、データベースに対して、ドメインを含むALTER権限を付与されている必要があります。

    • Oracle Rdbは、ストアド・プロシージャとメタデータ(ドメインなど)の間に依存関係を作成し、これらは依存関係に基づいてコンパイルおよび格納されるため、ドメインがストアド・プロシージャのパラメータ・リストの中で使用されている場合は、ドメインを変更できません。ただし、ドメインがプロシージャ・ブロック内部で参照されている場合は、そのドメインを変更できます。この項で説明している、ストアド・プロシージャとドメインの依存関係の作成およびそのALTER DOMAIN文への影響については、例を参照してください。

    • ALTER DOMAIN文を使用すると、ドメイン自体の変更によって、ドメインを使用して定義されているすべての列のデータ型、オプションのデフォルト値、オプションの照合順番、またはオプションのフォーマット句を変更できます。たとえば、EMPLOYEE_IDのデータ型をCHAR(5)からCHAR(6)に変更する場合は、ID_DOMのデータ型のみ変更します。DEGREES表、EMPLOYEES表、JOB_HISTORY表、またはSALARY_HISTORY表に含まれるEMPLOYEE_ID列のデータ型や、DEPARTMENTS表に含まれるMANAGER_ID列を変更する必要はありません。(ただし、EMPLOYEE_IDドメインが索引やビュー定義で参照されている場合は、次の説明を参照してください。)

    • 索引定義内で参照されているドメインのデータ型や照合順番を変更するALTER DOMAIN文は発行できません。そのような場合にデータ型や照合順番を変更するには、最初に索引を削除し、ドメインを変更してから索引を再定義する必要があります。

    • DEFAULT句で指定される値のデータ型は、そのデータ型が定義される列と同じデータ型である必要があります。データ型を指定しないと、SQLでは次の例に示すエラー・メッセージが表示されます。