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 |
. . . 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) |
$ DEFINE RDMS$SET_FLAGS "STOMAP_STATS, INDEX_STATS, ITEM_LIST" |
前の例に示したSET FLAGS OPTIONSでは、次のデバッグ出力が有効になります。
出力には、記憶域マップの削除操作に関して、検出された表と索引、決定ポイント情報(索引を削除する必要があるか、パーティションをスキャンする必要があるか、など)、およびI/O統計が含まれます。
DROP STORAGE AREA CASCADE操作の一部には、表と索引の削除が含まれる場合があります。これらの削除は、DROP TABLE CASCADE操作およびDROP INDEX CASCADE操作として内部的に処理されます。ただし、これらのコマンドが実行されるまでに、削除された記憶域に対する参照はすべて削除されます。このため、多くの場合、DROP TABLE文またはDROP INDEX文はメタデータ定義のみをクリーン・アップし、記憶域をスキャンする必要はなくなります。
変更の最初のクラスでは、トランザクションがアクティブである必要はありません。ただし、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; |
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文は次の環境で使用できます。
- 対話型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では次の例に示すエラー・メッセージが表示されます。