文のデフォルトの制約設定を設定します。
SET DEFAULT CONSTRAINT MODE文は次の環境で使用できます。
- 対話型SQL内
- 動的SQLで動的に実行される文として
DEFAULT
OFF
次回のトランザクション中に、DEFERRABLE INITIALLY DEFERREDとして定義されているすべての制約が、制約定義に最初に指定されているとおりに評価されるようリクエストします。OFFは、DEFAULTと同義です。DEFERRED
DEFAULTと同義です。ただし、Oracle Rdbの将来のリリースでは、このキーワードの意味は変更される予定です。IMMEDIATE
ON
このトランザクション中に、DEFERRABLE INITIALLY DEFERREDとして定義されているすべての制約がDEFERRABLE INITIALLY IMMEDIATEとして定義されている場合と同様に評価されるようリクエストします。ONは、IMMEDIATEと同義です。'string-literal'
セッションのデフォルト・キャラクタ・セットを指定します。runtime-optionsの値は有効なキャラクタ・セットである必要があります。使用可能なキャラクタ・セット名およびオプション値のリストは、第2.1節を参照してください。
parameter parameter-marker
- トランザクション内では、制約モードはSET ALL CONSTRAINTS文を使用して一時的に設定できます。COMMITまたはROLLBACKが実行されると、このモードは、SET DEFAULT CONSTRAINT MODEによって確立されたモードに戻ります。
- この文は、NOT DEFERRABLE制約の実行には影響しません。
次の例は、SET文を使用して現在のトランザクションの制約評価モードを変更する方法を示しています。現在の設定とデフォルト設定の両方を表示できます。
SQL> attach 'filename mf_personnel_sql'; SQL> /* ***> Show settings before starting, set the default mode, ***> then show the settings again. ***> */ SQL> show constraint mode; Statement constraint evaluation default is DEFERRED (off) SQL> set default constraint mode immediate; SQL> show constraint mode; Statement constraint evaluation default is IMMEDIATE (on) SQL> start transaction; SQL> set all constraints deferred; SQL> show constraint mode; Statement constraint evaluation default is IMMEDIATE (on) Statement constraint evaluation is DEFERRED (off) SQL> commit; SQL> show constraint mode; Statement constraint evaluation default is IMMEDIATE (on) SQL>
例2: runtime-optionsの使用
runtime-optionsを使用する場合、渡される文字値は、ON、OFF、IMMEDIATE、DEFERREDまたはDEFAULTのいずれかのキーワードである必要があります。次の例は、対話型SQLでこれを実行する方法を示しています。
SQL> show constraint mode Statement constraint evaluation default is DEFERRED (off) SQL> declare :c_mode char(10) = 'IMMEDIATE'; SQL> set default constraint mode :c_mode; SQL> show constraint mode Statement constraint evaluation default is IMMEDIATE (on) SQL>
表示キャラクタ・セットを指定します。
SET DISPLAY CHARACTER SET文は次の環境で使用できます。
- 対話型SQL内
- プリコンパイル対象のホスト言語プログラムに埋め込まれる場合
- SQLモジュールのプロシージャの一部として
- 動的SQLで動的に実行される文として
'string-literal'
テキスト値がユーザー・アプリケーションに返される前にこれらの値の自動変換に使用される表示キャラクタ・セットを指定します。使用可能なキャラクタ・セットおよびオプション値のリストは、表2-1を参照してください。
parameter parameter-marker
- SET DISPLAY CHARACTER SET文には、自動変換が無効でないときに後続のアタッチ文によって暗黙的に使用されるデフォルトの表示キャラクタ・セットを指定するメカニズムが採用されています。たとえば、次の文は同義です。
SQL> SET DISPLAY CHARACTER SET `SHIFT_JIS'; SQL> ATTACH `FILENAME MF_PERSONNEL'; SQL> -- SQL> -- is equivalent to: SQL> -- SQL> ATTACH `FILENAME MF_PERSONNEL DISPLAY CHARACTER SET SHIFT_JIS';
これらの一連の文では両方とも、Oracle Rdbサーバーにより、そのデータベースのアタッチ・セッションからSQLに返されるテキスト情報が自動的にSHIFT_JISキャラクタ・セットに変換されます。- 表示キャラクタ・セットは、AUTOMATIC TRANSLATIONとともに使用されます。自動変換が有効である場合、データベースの取得および問合せ時に指定された表示キャラクタ・セットと文字データ間の変換が試行されます。SET AUTOMATIC TRANSLATION文を参照してください。
この機能が最も一般的に使用されるのは、OpenVMS上で動作していないクライアント・アプリケーションの場合です。たとえば、格納されているデータがDEC_KANJIであるときに、WindowsクライアントでSHIFT_JISキャラクタ・セットを使用した表示が必要な場合があります。- SET DISPLAY CHARACTER SETにより、表示キャラクタ・セットの他に、識別子キャラクタ・セットおよびリテラル・キャラクタ・セットが変更されます。これにより、たとえば、SHIFT_JISキャラクタ・セットでエンコードされたリテラルおよび表名を渡すデータベースに対する問合せがアプリケーションで可能になります。これらの名前は、ターゲット・データベースの属性に基づいて適切なキャラクタ・セットに変換されます。
- SHOW CHARACTER SETS文を使用して、対話型セッションの現在の表示キャラクタ・セットを表示します。
SQL> set display character set 'SHIFT_JIS'; SQL> show character sets; Default character set is DEC_KANJI National character set is DEC_MCS Identifier character set is SHIFT_JIS Literal character set is SHIFT_JIS Display character set is SHIFT_JIS
- デフォルトはUNSPECIFIEDキャラクタ・セットです。この場合、変換は試行されません。
例1: 対話型セッションの表示キャラクタ・セットの設定
SQL> show character sets; Default character set is DEC_MCS National character set is DEC_MCS Identifier character set is DEC_MCS Literal character set is DEC_MCS Display character set is UNSPECIFIED SQL> set display character set 'SHIFT_JIS'; SQL> show character sets; Default character set is DEC_MCS National character set is DEC_MCS Identifier character set is SHIFT_JIS Literal character set is SHIFT_JIS Display character set is SHIFT_JIS
現在のセッションについてデータベース・システムのデバッグ・フラグの有効化および無効化を可能にします。このコマンドに渡されるリテラルまたはホスト変数には、カンマで区切ったキーワードまたは否定されたキーワードのリストを含めることができます。空白は無視されます。キーワードは、あいまいでない長さに省略できます。
注意
オラクル社には、Oracle Rdbの任意のリリースまたは更新においてSET FLAGS文に新規キーワードを追加する権利があります。これにより、このあいまいでない長さが変更される可能性があります。このため、アプリケーションでは完全なキーワードを使用することをお薦めします。
SET FLAGS文は次の環境で使用できます。
- 対話型SQL内
- 動的SQLで動的に実行される文として
FLAGS
データベース・システムのデバッグ・フラグを設定するかどうかを指定します。表6-16は、指定可能なキーワードを示しています。表に明記されていないかぎり、「デバッグ・フラグの同義語」では、RDMS$DEBUG_FLAGS論理名は、キーワードにリストされている動作に設定されています。
また、表にリストされているキーワード(および否定されたキーワード)は、RDMS$SET_FLAGS論理名の等価文字列として指定できます。
表6-16 デバッグ・フラグのキーワード キーワード デバッグ・フラグの同義語1 コメント ALTERNATE_OUTLINE_ID なし アウトライン識別子の作成時にリテラル値が破棄される。「使用方法」を参照。 AUTO_INDEX Xq CREATE TABLEおよびALTER TABLEで、表に追加されるPRIMARY KEY制約、FOREIGN KEY制約またはUNIQUE制約の索引を作成できるようにする。 AUTO_OVERRIDE なし DBADM(管理者)権限を持つユーザーは、AUTOMATICとして定義されている列を挿入または更新できるようになる。 BITMAPPED_SCAN なし 動的オプティマイザで索引のAND操作およびOR操作に対してメモリー内の圧縮型DBkeyビットマップを使用できるようにする。 BLR B 問合せに対するバイナリ言語表現(BLR)のリクエストを表示する。 CARDINALITY K カーディナリティの更新を表示する。 CARTESIAN_LIMIT なし 結合順序内の任意の位置に配置可能な小さい表の数を制限する。 CHRONO_FLAG(n) Xc ダンプ前にタイムスタンプを強制的に表示する。nの値には、0、1または2を使用できる。また、nは省略することも可能。CHRONO_FLAG(0)とNOCHRONO_FLAGは同義。CHRONO_FLAGを指定するときにnを省略すると、デフォルトはCHRONO_FLAG(1)。CHRONO_FLAG(1)の場合、アタッチ番号と現在時刻が含まれるトレース・メッセージを追加できる。CHRONO_FLAG(2)の場合、アタッチ番号と現在日時が含まれるトレース・メッセージを追加できる。2を超える値をnに指定すると、この値は無視され、値1が使用される。 CONTROL_BITS Bc BLRキーワードとともに使用されたときにBLR$K_CONTROL_BITSセマンティック・フラグのデコーディングを表示する。 COSTING Oc オプティマイザ・コスト計算のトレースを表示する。 COUNT_SCAN なし ランク付きソート索引に対するカウント・スキャンの最適化を有効にする。この場合、ランク付きソート索引のカーディナリティ情報を使用して、問合せを満たす行数が確認される。 CURSOR_STATS Og オプティマイザの一般カーソル統計を表示する。 DATABASE_
PARAMETERSP ATTACH文、CREATE DATABASE文、ALTER DATABASE文、IMPORT DATABASE文およびDISCONNECT文の実行時にデータベース・パラメータ・バッファを表示する。 DDL_BLR D データ定義内の式(表定義内で計算された列の式など)のバイナリ言語表現(BLR)を表示する。 DETAIL_LEVEL なし デバッグ出力に詳細情報を追加するために他のデバッグ・フラグとともに使用されるデバッグ・フラグ。DETAIL_LEVELキーワードの後ろには、丸カッコで囲んだ数値を配置できる。このフラグをサポートしているデバッグ・フラグにとって、このフラグは追加詳細の程度を示す。 ESTIMATES O オプティマイザの推定を表示する。 EXECUTION E 動的オプティマイザからの実行トレースを表示する。厳密にパーティション化されている表からの順次取得の場合、これには、問合せが実行されるたびに選択されるパーティションのリストと数が含まれる。 EXECUTIONキーワードの後ろには、丸カッコで囲んだ数値を配置できる。これは、問合せ実行の実行トレースを停止する前に表示する行数を表す。キーワードとパラメータの間には空白を使用できない。デフォルトは100。
IGNORE_OUTLINE なし データベースに定義されているアウトラインを無視する。IGNORE_OUTLINEキーワードのアクションは、RDMS$BIND_OUTLINE_FLAGS論理名を1に設定した場合と同じ。 INDEX_COLUMN_GROUP なし 先行索引列をワークロード列グループとして使用できるようにする。これにより、ソリューションのカーディナリティの精度が向上する可能性がある。詳細は、「使用方法」を参照。 INDEX_DEFER_ROOT Xb このフラグが設定されているときに索引が作成されると、表内にデータがある場合のみ索引のルート・ノードが作成される。表が空である場合、表に行が挿入されるまで索引のルート・ノードの作成が遅延される。 INDEX_PARTITIONS Si 索引のパーティション化情報を動的実行トレースの一環として表示する。 INDEX_STATS Ai ALTER文、CREATE文またはDROP INDEX文の進捗に関するデバッグ・フラグ出力を有効にする。 INTERNALS I 制約およびトリガーなどの内部問合せに関するデバッグ・フラグ出力を有効にする。これは、STRATEGY、BLRおよびEXECUTIONなどの他のキーワードとともに使用できる。 ITEM_LIST H データベースの問合せのためにコンパイル時の問合せオプションとして渡される項目リスト情報を表示する。 LAREA_READY Xr このフラグを使用して、表と索引のロック動作を調査できる。このフラグはデフォルトでは無効。 MAX_RECURSION なし 一致計画の実行時に実行可能な再帰型の最大数を設定する。これにより、一致計画の処理時に再帰型が過剰にならないようにする。デフォルト値は100。これと同義のデバッグ・フラグは、RDMS$BIND_MAX_RECURSION。 MAX_SOLUTION なし 使用可能な取得ソリューション用として最大の検索領域を有効にする。有効な場合、索引の各先行セグメントに基づいてより多くのソリューションが試行されるため、以前より多くのソリューションが作成される場合があるが、索引の取得時に複数のセグメントを適用する、より効率的なソリューションが見つかる可能性がある。これと同義のデバッグ・フラグは、RDMS$DISABLE_MAX_SOLUTION。デフォルトでは有効。 MAX_STABILITY なし 最大のスタビリティを実現する。動的オプティマイザは許可されない。MAX_STABILITYキーワードのアクションは、RDMS$MAX_STABILITY論理名と同じ。 MBLR M データ定義言語文に対する
メタデータ・バイナリ言語表現のリクエストを表示する。MODE(n) 「使用方法」を参照 問合せアウトラインのモード値を指定することにより、使用する問合せアウトラインを指定できる。 nの値には、正の整数または負の整数を使用できる。また、nは省略することも可能。MODEを指定するときにnを省略すると、デフォルトはMODE(1)。MODE(0)またはNOMODEを指定すると、SHOW FLAGS文の出力でモードの表示が無効になる。MODE(0)は、Oracle Rdbで生成されるアウトラインのデフォルト。
NONE2 適用不可 現在定義されているすべてのキーワードをオフにするために使用する。SET NOFLAGSと同義。 OBLR So バイナリ言語表現(BLR)で問合せアウトラインを表示する。 OLD_COST_MODEL なし 古いコスト・モデルを有効にする。OLD_COST_MODELキーワードのアクションは、RDMS$USE_OLD_COST_MODEL論理名と同じ。 OUTLINE Ss この問合せの問合せアウトラインを表示する(STRATEGYキーワードなしで使用できる)。 PREFIX3 Bn BLRキーワードとともに使用して、バイナリ言語表現表示のオフセット番号および他の書式設定を禁止する。 REBUILD_SPAM_PAGES なし REBUILD_SPAM_PAGESフラグは、DDLコマンドのALTER TABLE、ALTER STORAGE MAPおよびALTER INDEXとともに使用する。表または索引の行の長さまたはTHRESHOLDS句を変更する場合、論理領域の対応するSPAMページの再構成が必要な場合がある。デフォルトでは、これらのDDLコマンドによりAIPが更新され、SPAMページの再構成が必要であることを示すフラグが設定される。ただし、このフラグは、トランザクションに対してCOMMITを実行する前に設定できる。これにより、再構成はこのトランザクション内で行われる。このフラグを否定するには、SET FLAGS 'NOREBUILD_SPAM_PAGES'を使用する。 REQUEST_NAMES Sn ユーザーのリクエスト、トリガーおよび制約の名前を表示する。 REVERSE_SCAN なし 逆索引スキャン計画を有効にする。NOREVERSE_SCANキーワードのアクションは、RDMS$DISABLE_REVERSE_SCAN論理名と同じ。 SCROLL_EMULATION L 旧スタイルのLIST OF BYTE VARYING(セグメント化された文字列)形式のスクロールを無効にする。SCROLL_EMULATIONフラグのアクションは、RDMS$DIAG_FLAGS論理名をLに設定した場合と同じ。 SELECTIVITY なし 静的オプティマイザが条件の選択を推定する方法を示します。このフラグには、丸カッコで囲んだ0〜3の数値を使用できます。
0 = 標準(非アグレッシブ、サンプリングなし)の選択
1 = アグレッシブ + サンプリングなしの選択度
2 = サンプリングあり + 非アグレッシブの選択
3 = サンプリングあり + アグレッシブの選択。
デフォルトでは、このフラグは無効。これは、値を0に設定するのと同義。SEQ_CACHE(n) なし SET FLAGS文を発行するプロセスの順序キャッシュのサイズを調整する。値nは、2より大きい数値である必要がある。(値1を指定するのは、NOSEQ_CACHEを指定するのと同じ。)SEQ_CACHEを使用して、アプリケーションによって後で参照されるすべての順序に関するCACHE設定をオーバーライドする。新規キャッシュ・サイズは、すでに参照されている順序や、NOCACHEとして定義されている順序には影響しない。 SOLUTIONS OsS オプティマイザのソリューションのトレースを表示する。 SORTKEY_EXT S ORDER BY(またはSORTED BY)が外部(定数)値のみを参照しているかどうかをレポートする。SORTKEY_EXTフラグのアクションは、RDMS$DIAG_FLAGS論理名をSに設定した場合と同じ。 SORT_STATISTICS R 実行時のソート統計を表示する。 STOMAP_STATS As 削除された記憶域を参照する表に関する記憶域マップの処理を表示する。出力には接頭辞として「~As」が付けられる。 STRATEGY S オプティマイザ計画を表示する。表が厳密にパーティション化されている場合、テキスト"(partitioned scan#nn)"が表名の後ろに表示される。nnは、順次スキャンのリーフ番号を示す(1つの問合せ内に複数存在する場合がある)。 TEST_SYSTEM なし このフラグは、Oracle Rdbテスト環境で様々なファンクション、トレースおよびデバッグ表示の出力を変更するために使用される。このフラグを使用して、一般的なテスト実行間で差異が生じる原因となるテスト出力のデータを削除する。 TRACE Xt TRACE文からの出力を有効にする。 TRANSACTION_
PARAMETERST SET TRANSACTION、COMMITおよびROLLBACKの実行時とストアド・プロシージャのコンパイル時にトランザクション・パラメータ・バッファを表示する。 TRANSITIVITY なし 選択および結合条件間の推移性を有効にする。NOTRANSITIVITYキーワードのアクションは、RDMS$DISABLE_ TRANSITIVITY論理名と同じ。 VALIDATE_ROUTINE なし 無効にされたストアド・プロシージャまたはストアド・ファンクションの再検証を有効にする。VALIDATE_ROUTINEキーワードのアクションは、RDMS$VALIDATE_ROUTINE論理名と同じ。 VARIANCE_DOF(n) なし 小規模なサンプルの平均値の計算におけるデフォルトの自由度(DOF)を設定する(VARIANCEファンクションの使用の代用)。有効な値は0と1のみ。 WARN_DDL Xd 場合によっては、正規のデータ定義には副次的な影響があることがある。このフラグを使用すると、これらの警告を有効化および無効化できる。このフラグは、デフォルトでは有効。ただし、PATHNAMEによってアタッチされる場合は例外。警告がレポートされても、データ定義文の処理は続行される。データベース管理者は、このフィードバックに基づいて文をロールバックするかどうかを選択できる。 WARN_INVALID Xw ALTER INDEX文、DROP INDEX文、DROP TABLE文およびDROP MODULE文の実行時に無効なオブジェクトをレポートする。 WATCH_CALL Xa 問合せ、トリガー、ストアド・ファンクションおよびストアド・プロシージャの実行をトレースする。この出力には、トリガー、ファンクションおよびプロシージャの名前や、匿名問合せであることを示す「unnamed」が含まれる。多くの場合、問合せには、OPTIMIZE AS句を使用して名前を付けることができる。また、この出力には、ルーチンの実行時におけるCURRENT_USERの値も含まれる。CURRENT_USERは、AUTHORIZATION句を使用する任意のモジュールから継承できる。 WATCH_OPEN Xo データベース上で実行されるすべての問合せをトレースする。これには、表名を検索するSQLランタイム・システム問合せや、アプリケーションによって実行される問合せなどがある。この出力には、CREATE OUTLINE文によって使用される場合と同じ32桁の16進識別子が含まれる。この値により、実行対象の問合せが一意に識別される。 問合せがストアド・ルーチン(ファンクションまたはプロシージャ)である場合、"(stored)"という表記が付加される。問合せに名前が付けられている場合、"(query)"として分類される。それ以外の場合は、"(unnamed)"として指定される。
ZIGZAG_MATCH なし 外部一致ループと内部一致ループの両方でジグザグのキー・スキップを有効にする。ZIGZAG_MATCHキーワードとともにNOZIGZAG_OUTERキーワードを指定すると、外部ループでジグザグのキー・スキップが無効になる(このアクションは、RDMS$DISABLE_ZIGZAG_MATCH論理名を1に設定した場合と同じ)。NOZIGZAG_MATCHキーワードを使用すると、外部一致ループと内部一致ループの両方でジグザグのキー・スキップが無効になる(このアクションは、RDMS$DISABLE_ZIGZAG_MATCH論理名を2に設定した場合と同じ)。 ZIGZAG_OUTER なし 外部ループでジグザグのキー・スキップを有効にする。ZIGZAG_OUTERとともにZIGZAG_MATCHを指定した場合におけるアクションの詳細は、ZIGZAG_MATCHの項目を参照。
- 指定したフラグは、現在アタッチされているデータベースごとに処理されます。
- SET FLAGS文により、RDMS$DEBUG_FLAGS論理名またはRDMS$SET_FLAGS論理名がコマンド・レベルでオーバーライドされます。
- キーワードは、あいまいでない最小の長さに省略できます。最小の長さは2文字です。
- キーワードでは、大文字と小文字は同義です。
- SET FLAGS文は、データベースのアタッチの範囲を超えて永続しません。
- RDMS$SET_FLAGS論理名は、アタッチ操作時に処理されます。等価文字列でエラーが見つかると例外が発生し、データベースへのアタッチは失敗します。SQL SHOW FLAGS文により、RDMS$SET_FLAGS論理名およびRDMS$DEBUG_FLAGS論理名を使用して行われた設定が表示されます。RDMS$DEBUG_FLAGS論理名を使用して行われた設定よりも、RDMS$SET_FLAGSによって指定されたキーワードの方が優先されます。
- 論理名を使用して問合せモードを設定するには、RDMS$BIND_OUTLINE_MODE論理名を目的のモード番号に定義します。
- AUTO_OVERRIDEキーワードを設定するには、データベースに対するDBADM(管理者)権限が必要です。DBADM権限は、明示的に付与したり、OpenVMSシステム権限から継承できます。
必要な権限がない場合、SET FLAG文は失敗し、NO_PRIVエラーが返されます。- AUTO_OVERRIDEフラグを使用すると、行を再ロードできるように、INSERT中に選択したAUTOMATIC列を更新したり、UPDATE中に不正に格納された値を調整できます。
- INSERT文の'AUTO_OVERRIDE'により、すべてのAUTOMATIC列への代入が許可され、列リストから省略されたAUTOMATIC INSERT列が通常どおり評価されます。
- UPDATE文の'AUTO_OVERRIDE'により、任意のAUTOMATIC列に対して値が直接代入されます。AUTOMATIC列は評価されません。
- 生成されたアウトラインがデータベースに追加されると、そのアウトラインはSET FLAGS文により、または論理名RDMS$BIND_OUTLINE_MODEを使用して、モードが設定されている場合にのみ使用されます。
- EXECUTIONキーワードの直後には、丸カッコで囲んだ数値を配置できます。これは、問合せ実行の実行トレースを停止する前に表示する行数を表します。デフォルトは100です。次に例を示します。