SQL> ALTER DATABASE FILENAME sample cont> JOURNAL IS ENABLED; %RDMS-F-NOAIJENB, cannot enable after-image journaling without any AIJ journals |
ADD JOURNAL句を使用すると、ジャーナル・ファイルを作成できます。
ENABLEDオプションには、データベース・ジャーナル・オプションのリストを指定できます。
ジャーナル・ファイルはいずれも変更されませんが、無効にした場合はアクセスできなくなります。データベース・ジャーナル・オプションは、DISABLEDオプションでは指定できません。
このリテラルにより、ALTER DATABASE文でユーザー名およびパスワードの情報を明示的に指定できます。
CREATE CACHE句、ADD CACHE句またはALTER CACHE句のLOCATION句が、データベースのデフォルトであるこの場所より優先されます。
行キャッシュがデータベースのチェックポイントに対して定義されている場合、この句は無視されます。
データベースに対してパーティション・ロック・ツリーが有効になっている場合、記憶域ロックはデータベース・リソース・ツリーから分離され、記憶域ごとにすべてのロックが、そのリソースとの通信量が最も多いVMSclusterノード上で独立して管理されます。OpenVMSでは、各リソースの使用量が最も多いノードが特定され、リソース階層がそのノードに移動します。
単一ファイルのデータベースでは、ロック・パーティション化を有効にできません。単一ノード・システムでは、ロック・リクエストはすべてローカルであるため、ロック・パーティション化は有効にしないでください。
デフォルトでは、ロック・パーティション化は無効です。
0を指定した場合、この値は0秒ではなく、ロックのタイムアウト時間を設定しないと解釈されます。
ロックのタイムアウト時間はデータベース全体に適用され、デフォルトとして使用されるのみでなく、タイムアウト時間を指定する場合の上限としても使用されます。たとえば、データベース定義者がALTER DATABASE文にLOCK TIMEOUT INTERVAL IS 25 SECONDSと指定すると、そのデータベースのユーザーがSET TRANSACTION WAIT 30と指定した場合や、論理名RDM$BIND_LOCK_TIMEOUT_INTERVALを30に変更した場合でも、SQLで使用されるタイムアウト時間は25となります。タイムアウト時間の詳細は、『Oracle Rdb7 Guide to Distributed Transactions』を参照してください。
同一の領域、および同一のページの多数のレコードにアクセスする場合、LOCKING IS PAGE LEVEL句により、トランザクション処理のために実行するロック操作数が減少します。ただし、ページのロックがCOMMIT/ROLLBACK時まで保持されるため、これによって同時実行性が低下します。ページレベル・ロックは、実行時間が短く、かつ同一ページにある複数のデータベース・レコードにアクセスするトランザクションには非常に有効です。
実行時間が長く、多数の行がロックされるようなトランザクションに対しては、LOCKING IS ROW LEVEL句を使用します。
LOCKING IS PAGE LEVEL句を使用すると、非同期システム・トラップのブロック数が減少するため、システム・リソースのレスポンス時間が短縮され、利用効率も向上します。ただし、ページ間競合が増加したり、デッドロックの可能性とトランザクション時間が増大するため、ロックが過剰に使用される場合があります。
RDB$SYSTEMまたはDEFAULT記憶域には、暗黙的、明示的を問わずページレベル・ロックは適用されません。これは、ページレベル・ロックのプロトコルでは、メタデータ・ユーザーが停止する場合があるためです。
単一ファイルのデータベースでは、ページレベル・ロックは指定できません。
更新アクティビティが比較的多いマルチユーザー・データベースでは、アフター・イメージ・ジャーナル(.aij)・ファイルのボトルネックが発生する場合があります。これらのボトルネックを解消するには、LOG SERVER句を指定して自動または手動でログ・データを.aijファイルに転送できます。ALSの単一ノード上では、AIJロックは実行できません。
ログ・サーバーがMANUALに設定されている場合は、Start修飾子を指定したRMU Server After_Journalコマンドを実行して、ログ・サーバーを開始する必要があります。この場合、データベースはすでにオープンしている必要があります。OPEN IS MANUAL句が指定されている場合は、ログ・サーバーを開始する前にRMU Openコマンドを明示的に実行する必要があります。OPEN IS AUTOMATIC句が指定されている場合は、ログ・サーバーを開始する前にユーザーを少なくとも1人データベースにアタッチする必要があります。
ログ・サーバーがAUTOMATICに設定されている場合は、データベースが自動または手動でオープンされたときに開始し、データベースがクローズすると同時に停止します。
ログ・サーバーの設定の詳細は、『Oracle Rdb7 Guide to Database Performance and Tuning』を参照してください。
LOGMINER SUPPORT句を使用すると、LogMinerに対する連続モードの有効化/無効化を切り替えることができます。
デフォルトの数は、バッファ・プールの5分の1で、上限は10です。最小値は2、最大値はバッファ・プールと同じ数まで指定できます。
論理名RDM$BIND_BATCH_MAXを定義すると、非同期の書込みを行うバッファの数をオーバーライドできます。値の設定の詳細は、『Oracle Rdb7 Guide to Database Performance and Tuning』を参照してください。
SQL> CREATE DATABASE FILENAME sample; SQL> CREATE TABLE t (a INTEGER); SQL> DISCONNECT ALL; SQL> ALTER DATABASE FILENAME sample cont> METADATA CHANGES ARE DISABLED; SQL> ATTACH 'FILENAME sample'; SQL> CREATE TABLE s (b INTEGER); %RDB-E-NO_META_UPDATE, metadata update failed -RDMS-E-NOMETADATA, metadata operations are disabled |
METADATA CHANGES ARE DISABLED句を使用すると、データベースに対するデータ定義の変更は許可されません。
METADATA CHANGES ARE ENABLED句を使用すると、DBADMIN権限が付与されたユーザーによるデータベースに対するデータ定義の変更が許可されます。
デフォルトはMETADATA CHANGES ARE ENABLEDです。
CREATE DATABASE MULTISCHEMA IS ON句を使用してデータベースを作成することはできますが、ALTER DATABASE MULTISCHEMA IS OFF句を使用してもマルチスキーマ属性を無効にはできません。データベースに一旦設定したマルチスキーマ属性は、変更できません。
マルチスキーマ・データベースの詳細は、第2.2.11項を参照してください。
データベースのデフォルトをオーバーライドする場合は、記憶域を変更し、行キャッシュの名前を指定します。各記憶域に対して割り当てることができる行キャッシュは1つのみです。
NO ROW CACHE句もCACHE USING句も指定しない場合、デフォルトはNO ROW CACHE句です。
システム通知を有効にすると、ジャーナル用のディスク領域が不足するなどのイベントが発生した場合に、システムに対して(OpenVMS OPCOMファシリティを使用して)それが通知されます。
NOTIFY IS ENABLED句を指定してALERT OPERATOR句を指定しない場合、CENTRALおよびCLUSTERが演算子クラスとして使用されます。それ以外の演算子クラスを指定する場合は、ALERT OPERATOR句を使用します。
NOTIFY IS ENABLED句を使用すると、RMU Set After_Journal Notifyコマンドにより設定された演算子クラスがすべて置換されます。
デフォルトでは無効です。
NUMBER ISパラメータとNUMBER OF BUFFERS ISパラメータを混同しないようにしてください。NUMBER OF BUFFERS ISパラメータは、データベースにアタッチされている各ユーザー・プロセスに対してOracle Rdbが割り当てるバッファのデフォルト数を決定します。NUMBER OF BUFFERS ISパラメータは、ローカル・バッファリングおよびグローバル・バッファリングに適用され、どちらに対しても同等の意味を持ちます。NUMBER ISパラメータが意味を持つのは、グローバル・バッファリングのコンテキストにおいてのみです。 |
論理名RDM$BIND_BUFFERSに対して値を定義することにより、ユーザー割当てバッファ数のデフォルトをオーバーライドできます。ユーザー割当てバッファの詳細は、『Oracle Rdb7 Guide to Database Performance and Tuning』を参照してください。
NUMBER ISパラメータはオンラインで変更できますが、その変更は次回データベースがオープンするまで反映されません。
Oracle Rdbルート・ファイルのデータ構造(.rdb)は、共有メモリーにマップされます。このような共有メモリーの各コピーはRdbインスタンスと呼ばれます。ルート・ファイル情報が含まれる共有メモリーのコピーが1つのみの場合は、ロックおよびルート・ファイルI/Oアクティビティを軽減するため、いくつかの最適化が有効になります。このような最適化を有効にするには、NUMBER OF CLUSTER NODESを1に設定するか、SINGLE INSTANCE句を使用します。
MULTIPLE INSTANCEは、Oracle Rdbルート・ファイルのデータ構造が別々のシステム上にマップされており、ディスクI/Oを介して整合性が維持されていることを意味します。このようなシステムでは、単一インスタンスを最適化しても利点はありません。デフォルトはMULTIPLE INSTANCEです。
2以上32,767以下の数値を指定できます。NUMBER OF RECOVERY BUFFERSパラメータのデフォルト値は20です。規模の大きな複数ファイルのデータベースがあり、大容量のメモリーを備えたシステムで作業している場合は、バッファ数を大きめに指定してください。これにより、リカバリ時間が短縮されます。ただし、バッファ・プールがそのプールに割当て可能なメモリー容量を超えないようにしてください。
リカバリ・プロセスに割り当てられるバッファの数を増やす場合は、NUMBER OF RECOVERY BUFFERSオプションを使用します。
SQL> ALTER DATABASE FILENAME personnel cont> NUMBER OF RECOVERY BUFFERS IS 150; |
このオプションは、NUMBER OF RECOVERY BUFFERSの値がNUMBER OF BUFFERSの値より大きい場合にのみ使用します。リカバリ・バッファの割当ての詳細は、『Oracle Rdb7 Guide to Database Maintenance』を参照してください。
デフォルトは50ユーザーです。最大数に達した後にデータベースを起動しようとしたユーザーには、エラー・メッセージが表示され、待機が要求されます。指定できる最大ユーザー数は16368で、最小ユーザー数は1です。
ユーザー数は、データベースへのアクティブなアタッチメント数として定義されます。このため、あるプロセスで実行されているプログラムが1つでも、そのプログラムで12のアタッチ操作が実行される場合、そのプロセスに対応するアクティブ・ユーザーの数は12となります。
ALTER DATABASE文を使用して現行ユーザー数を変更する場合、その変更はジャーナリングされません。このため、このような変更を行う場合は、あらかじめデータベースをバックアップしておく必要があります。ジャーナリングされない変更の重要情報は「使用方法」を参照してください。
RMU Openコマンドを発行するには、データベースに対してRMU$OPEN権限を持っている必要があります。
OPEN IS MANUALオプションにより、データベースへのアクセスが制限されます。
OPEN IS AUTOMATICオプションとOPEN IS MANUALオプションの両方を指定すると、エラー・メッセージが表示されます。
メディアに障害が発生した場合のデータベース・リカバリや、高速コミット機能の一部であるトランザクション・リカバリにはアフター・イメージ・ジャーナル・ファイルが使用されます。一部の環境では高速コミット機能のみが使用され、小規模なジャーナル・ファイル群が、コンテンツのバックアップが不要な循環高速コミット・ログとして使用できます。OVERWRITEオプションを指定すると、Oracle Rdbでは、本来はメディア・リカバリに使用されるジャーナル・レコードに対して書込みが行われます。書込み後のジャーナル・ファイルは、RMU Recoverコマンドによるメディア・リカバリには使用できません。
アフター・イメージ・ジャーナル(.aij)・ファイルが1つしか存在しない場合、OVERWRITEオプションは無視されます。OVERWRITEオプションは、後続ジャーナル・ファイルが追加されるとアクティブ化されます。
デフォルトはDISABLEDです。
PAGE TRANSFER VIA MEMORYを指定すると、単一ノード上のプロセスでは、ページをディスクに転送することなく、メモリー内のデータベース・ページを共有または更新できます。あるプロセスで変更されたページに別のプロセスがアクセスする前に、そのページをディスクに書き込む必要はありません。
デフォルトはDISKです。PAGE TRANSFER VIA MEMORYを指定する場合、データベースは次の特性を備えている必要があります。
データベースにこれらの特性がない場合、Oracle Rdbでは、ディスクを介したページ転送が実行されます。
ページ転送の詳細は、『Oracle Rdb7 Guide to Database Performance and Tuning』を参照してください。
以前のバージョンで使用可能なキーワードONは、ENABLEDと同義です。
この句は、事前起動済トランザクションの永続データベース設定を構成する際に使用します。以前のバージョンでは、この句は、CREATE DATABASE文およびIMPORT DATABASE文によって実行される暗黙的なアタッチの事前起動済トランザクション・モードを一時的に設定する場合にのみ使用されていました。
prestart-trans-optionsには、次のいずれかの句を指定できます。
以前のバージョンで使用可能なキーワードOFFは、DISABLEDと同義です。
RDB$SYSTEM記憶域の読取り専用パラメータおよび読取り/書込みパラメータを変更する場合は、ALTER STORAGE AREA句の中にではなく、ALTER DATABASE文にこの時点でこれらのパラメータを指定する必要があります。次に例を示します。
SQL> -- You can change the RDB$SYSTEM storage area by altering SQL> -- the database. SQL> -- SQL> ALTER DATABASE FILENAME mf_personnel cont> READ ONLY; SQL> -- SQL> -- An error is returned if you try to change the RDB$SYSTEM storage SQL> -- area to read-only using the ALTER STORAGE AREA clause. SQL> -- SQL> ALTER DATABASE FILENAME mf_personnel cont> ALTER STORAGE AREA RDB$SYSTEM cont> READ ONLY; %RDB-E-BAD_DPB_CONTENT, invalid database parameters in the database parameter block (DPB) -RDMS-E-NOCHGRDBSYS, cannot change RDB$SYSTEM storage area explicitly |
SQLでは、読取り専用データベース、および読取り専用記憶域が1つ以上あるデータベースがサポートされています。
一切(またはほとんど)更新されない安定したデータ群がある場合は、読取り専用サポートを利用できます。RDB$SYSTEM記憶域が読取り専用に変更されると、ロック競合の発生頻度が低くなり、索引と表のカーディナリティの自動更新が行われなくなります。
読取り専用データベースは次の要素により構成されます。
読取り専用データベースは、CD-ROMで公開および配布できます。
読取り専用記憶域の特徴は、次のとおりです。
記憶域を読取り/書込みから読取り専用アクセスに変更する場合はREAD ONLYオプションを使用します。変更頻度の低いデータに対するバッチ更新トランザクションを円滑に行うには、READ WRITEオプションを使用して、記憶域を読取り専用から読取り/書込みに戻します。
記憶域を読取り/書込みから読取り専用に変更すると、EXTENT句、SNAPSHOT ALLOCATION句およびSNAPSHOT EXTENT句は指定できなくなります。
読取り/書込み記憶域と読取り専用記憶域が共存するデータベースは、アフター・イメージ・ジャーナルが有効になっている場合にのみ、システム障害の発生後でも完全なリカバリが可能です。データベースに読取り/書込み記憶域と読取り専用記憶域が共存しているにもかかわらず、アフター・イメージ・ジャーナルが有効になっていない場合は、常に全体バックアップ操作(読取り専用記憶域を含む)を実行します。全体バックアップ操作を実行すると、データベース全体を、前回バックアップ操作を行った時点の状態にリカバリできます。
読取り専用データベースおよび読取り専用記憶域の詳細は、『Oracle Rdb7 Guide to Database Performance and Tuning』を参照してください。
各プロセスで使用されるRUJバッファは通常、ローカル仮想メモリーに割り当てられます。これらのバッファは、行キャッシュの導入により、OpenVMSの共有グローバル・セクション(グローバル・メモリー)に割当てが可能になりました。これにより、リカバリ・プロセスでは、このメモリー内バッファを処理して、ディスク・アクセスを回避できます。
このバッファ・メモリーをグローバルとして定義できるため、リカバリ用の行キャッシュのパフォーマンスが向上します。行キャッシュが無効の場合、バッファ・メモリーは常にローカルです。
リカバリ・ユニット・ジャーナル・ファイルの詳細は、『Oracle Rdb7 Guide to Database Maintenance』を参照してください。
次に、この句の使用例を示します。
SQL> ALTER DATABASE FILENAME SAMPLE cont> RECOVERY JOURNAL (LOCATION IS 'SQL_USER1:[DBDIR.RECOVER]'); |
RESERVE CACHE SLOTS句を使用すると、将来ADD CACHE句で使用できるスロットをデータベース・ルート・ファイルに予約できます。行キャッシュ・スロットを使用できる場合、行キャッシュの追加のみ実行できます。スロットは、DROP CACHE句またはRESERVE CACHE SLOTS句を発行した後に使用可能になります。
行キャッシュの予約済スロット数は削減できません。10個のスロットを予約した後、さらに5個のスロットを予約した場合、行キャッシュに対して合計15個のスロットが予約されたことになります。