ヘッダーをスキップ

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コマンドのいずれかを使用して、複数ファイルのデータベース用に直接変更できる単一ファイルのデータベースの基本特性の一部を変更します。

  - Restore

  - Copy

  - Move_Area

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

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

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

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

  - 高速コミットが有効になっていること。

  - クラスタ・ノードの数が1であること、またはNUMBER OF CLUSTER NODES句にSINGLE INSTANCEが指定されていること。

- 行キャッシュの行の長さを変更する場合、指定した値が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句に適用されます。

  - 記憶域が記憶域マップ内の唯一の領域の場合は、Oracle Rdbでは記憶域およびすべての参照オブジェクトが削除されます。

  - 領域を参照する記憶域マップが厳密にパーティション化されている場合は、記憶域マップが複数の領域を参照していたとしても、記憶域およびすべての参照オブジェクトが削除されます。

  - 記憶域が索引の一部のみを含む場合は、データベースの整合性を保つため、領域は削除されません。

  - ハッシュ索引と1つの表が同じ記憶域に含まれ、ハッシュ索引に対するマッピングが表に対するマッピングとは異なる場合、記憶域は削除されません。

  - 記憶域が制約のある表を含む場合、領域は、結果的にデータベースの整合性が保たれる場合にのみ削除されます。

  - パーティション化されておらず、削除される記憶域に全体が存在する索引は、CASCADEセマンティクスを使用して削除されます（このため、この索引を参照する問合せアウトラインが無効になります）。

  - 影響を受ける表のNOT NULL、PRIMARY KEYおよびUNIQUEの制約は検証する必要がないため、STORAGE AREA CASCADE句ではこれらの制約を無視します。
    これらのタイプの制約には、表から行を削除しても影響はありません。これにより、DROP STORAGE AREA CASCADE操作を実行する際のI/Oと経過時間を大幅に削減できます。ただし、影響を受ける表および参照表に関するCHECK制約およびFOREIGNの制約は、引き続き評価されます。

  - DROP STORAGE AREA CASCADEが実行されると、標準出力デバイスまたはOpenVMS上のRDMS$DEBUG_FLAGS_OUTPUTログ・ファイルにデバッグ・メッセージが記録されます。
    デバッグ・メッセージのロギングを有効にするには、SQL SET FLAGS文と同じ入力を受け入れる論理名RDMS$SET_FLAGSを使用します。次に例を示します。

        $ DEFINE RDMS$SET_FLAGS "STOMAP_STATS, INDEX_STATS, ITEM_LIST"

    前の例に示したSET FLAGS OPTIONSでは、次のデバッグ出力が有効になります。

    - STOMAP_STATSは、削除された記憶域を参照する表に関する記憶域マップの処理を表示します。

    - INDEX_STATSは、削除された記憶域を参照する索引の処理を表示します。

    - ITEM_LISTは、処理が必要な制約の名前を表示します。

    出力には、記憶域マップの削除操作に関して、検出された表と索引、決定ポイント情報（索引を削除する必要があるか、パーティションをスキャンする必要があるか、など）、およびI/O統計が含まれます。
    DROP STORAGE AREA CASCADE操作の一部には、表と索引の削除が含まれる場合があります。これらの削除は、DROP TABLE CASCADE操作およびDROP INDEX CASCADE操作として内部的に処理されます。ただし、これらのコマンドが実行されるまでに、削除された記憶域に対する参照はすべて削除されます。このため、多くの場合、DROP TABLE文またはDROP INDEX文はメタデータ定義のみをクリーン・アップし、記憶域をスキャンする必要はなくなります。

  - 記憶域のファイル削除に必要な時間は、ディレクトリ・ファイルのサイズ、ファイル割当て、ファイル・システムでファイルを拡張する際に使用したエクステントの数によって決まります。ERASE ON DELETE属性がディスク上で有効になっている場合は、このことも時間計算で考慮する必要があります（ファイル・システムが削除パターンを使用してファイルを上書きする時間を含めます）。

  - 読取り/書込みI/Oの統計は、データベースの統計収集が有効になっている場合にのみ出力されます。統計収集は、論理名RDM$BIND_STATS_ENABLEDが0に設定されている場合、またはALTER DATABASE...STATISTICS COLLECTION IS DISABLED文が発行された場合は無効になっている可能性があります。

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

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

  - .RDBファイル内のデータベースのルート構造の変更

  - RDB$SYSTEM記憶域内のシステム・メタデータの変更

  変更の最初のクラスでは、トランザクションがアクティブである必要はありません。ただし、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などの他の句と併用はできません。

  - DICTIONARY IS [ NOT ] REQUIRED

  - DICTIONARY IS NOT USED

  - MULTISCHEMA IS { ON | OFF } 1

  - CARDINALITY COLLECTION IS { ENABLED | DISABLED }

  - METADATA CHANGES ARE { ENABLED | DISABLED }

  - WORKLOAD COLLECTION IS { ENABLED | DISABLED }

  - SYNONYMS ARE ENABLED 1

  - SECURITY CHECKING IS { INTERNAL | EXTERNAL }

  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句に対してのみ行われている可能性があります。
  これは、次の句を使用して指定されたディレクトリまたはファイル仕様には、デバイス、ディレクトリ、ファイル名、およびファイル・タイプのみが使用可能であることを意味します。

  - ROW CACHE IS ENABLED句、RECOVERY JOURNAL句、ADD CACHE句およびCREATE CACHE句のLOCATION句

  - SNAPSHOT FILENAME句

  - ADD STORAGE AREA句およびCREATE STORAGE AREA句のFILENAME句およびSNAPSHOT FILENAME句

  - JOURNAL IS ENABLED句、ADD JOURNAL句およびALTER JOURNAL句のBACKUP FILENAME句

  - JOURNAL IS ENABLED句のBACKUP SERVER句およびCACHE FILENAME句

  - ADD JOURNAL句の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では次の例に示すエラー・メッセージが表示されます。