DBMS_EXPFILパッケージには、属性セット、式セット、式の索引、オプティマイザ統計および権限を式フィルタで管理する場合に使用するすべてのプロシージャが含まれています。
|
関連項目: 詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』を参照してください。 |
この章では、次の項目について説明します。
表53-1に、DBMS_EXPFILパッケージのサブプログラムを示します。
特に明記されていないかぎり、DBMS_EXPFILパッケージに定義されているプロシージャに渡されるすべての値と名前で、大/小文字は区別されません。大/小文字の区別を保つには、値を二重引用符で囲んでください。
表53-1 DBMS_EXPFILパッケージのサブプログラム
| サブプログラム | 説明 |
|---|---|
|
ADD_ELEMENTARY_ATTRIBUTEプロシージャ |
指定の属性を属性セットに追加します。 |
|
|
属性セットを含むファンクションの承認リストに、ファンクション、タイプまたはパッケージを追加します。 |
|
|
式が格納されている列に属性セットを割り当てます。 |
|
|
無効な式への参照を保持する例外表を作成します。 |
|
|
式セットの述語統計を消去します。 |
|
|
属性セットをコピーします。 |
|
|
属性セットを作成します。 |
|
DEFAULT_INDEX_PARAMETERSプロシージャ |
属性セットにデフォルトの索引パラメータを割り当てます。 |
|
DEFAULT_XPINDEX_PARAMETERSプロシージャ |
属性セットにデフォルトのXPath索引パラメータを割り当てます。 |
|
|
ビットマップ索引をオンラインで再作成して、断片化を減らします。 |
|
|
未使用の属性セットを削除します。 |
|
|
式セットの述語統計を収集します。 |
|
|
ユーザーに式のDML権限を付与します。 |
|
|
式セットに索引パラメータを割り当てます。 |
|
|
特定の属性を持つ述語で使用される共通演算子のリストを変更します。 |
|
|
ユーザーに付与されている式のDML権限を取り消します。 |
|
|
格納されている式のCONTAINS演算子に関連する述語を処理するために定義された索引を同期化します。 |
|
|
式が格納されている列と属性セットとの関連付けを解除します。 |
|
|
式のメタデータおよび列に格納されている式を検証します。 |
|
|
式セットにXPath索引パラメータを割り当てます。 |
このプロシージャは、指定の属性を属性セットに追加します。このプロシージャはオーバーロードされています。複数の機能を構文形式ごとに、定義とともに示します。
構文
指定の要素属性を属性セットに追加する場合:
DBMS_EXPFIL.ADD_ELEMENTARY_ATTRIBUTE ( attr_set IN VARCHAR2, attr_name IN VARCHAR2, attr_type IN VARCHAR2, attr_defv1 IN VARCHAR2 DEFAULT NULL);
表の別名である要素属性を識別して、属性セットに追加する場合:
DBMS_EXPFIL.ADD_ELEMENTARY_ATTRIBUTE ( attr_set IN VARCHAR2, attr_name IN VARCHAR2, tab_alias IN exf$table_alias);
属性セットへのテキスト属性の追加を許可する場合:
DBMS_EXPFIL.ADD_ELEMENTARY_ATTRIBUTE ( attr_set IN VARCHAR2, attr_name IN VARCHAR2, attr_type IN VARCHAR2, text_pref IN EXF$TEXT);
パラメータ
表53-2 ADD_ELEMENTARY_ATTRIBUTEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
この属性を追加する属性セットの名前。 |
|
|
追加する要素属性の名前。同じセット内の2つの属性に同じ名前を指定することはできません。 |
|
|
属性のデータ型。この引数には、標準のSQLデータ型、または現行のユーザーがアクセス可能なオブジェクト・タイプの名前を指定できます。 |
|
|
要素属性のデフォルト値。 |
|
|
属性の別名を設定するデータベース表を識別する型。 |
|
|
LEXER、WORDLIST指定などのテキスト・プリファレンス。 |
使用上の注意
このプロシージャは、要素属性を属性セットに追加します。最初に既存のオブジェクト・タイプから作成された属性セットには、他の属性は追加できません。
属性セット内の1つ以上またはすべての要素属性は、表の別名として使用できます。要素属性が表の別名である場合、その要素属性に割り当てられる値は、対応する表のROWIDです。表の別名属性が1つ以上ある属性セットは、既存のオブジェクト・タイプからは作成できません。 表の別名の詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』の付録Aを参照してください。
式が格納されている列にすでに割り当てられている属性セットには、要素属性は追加できません。
属性のデフォルト値の指定は、表の列のデフォルト値の指定に類似しています。設定されたデフォルト値は、属性のデータ型と一致している必要があります。 たとえば、DATEデータ型の属性の有効なデフォルト値は、SYSDATEおよびto_date('01-01-2004','DD-MM-YYYY')です。
要素属性の追加の詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』の属性セットの定義に関する項を参照してください。
関連ビュー: USER_EXPFIL_ATTRIBUTE_SETSおよびUSER_EXPFIL_ATTRIBUTES。
このプロシージャをtext_pref引数にバインドされたテキスト・プリファレンスとともに使用すると、属性セット内にテキスト属性が作成されます。このような属性のデータ型は、VARCHAR2またはCLOBである必要があります。このプロシージャを使用して指定されたプリファレンスは、この属性セットを使用して式フィルタの索引を作成する場合にのみ検証されます。
これらのプリファレンスは、CONTAINS演算子に関連する述語を処理するCTXRULE索引の作成に使用されます。有効なプリファレンスは、CTXRULE索引の作成に使用するPARAMETERS句で有効なプリファレンスです。構文については、『Oracle Textアプリケーション開発者ガイド』を参照してください。
例
次のコマンドでは、2つの要素属性が属性セットに追加されます。
BEGIN
DBMS_EXPFIL.ADD_ELEMENTARY_ATTRIBUTE (
attr_set => 'HRAttrSet',
attr_name => 'HRREP',
attr_type => 'VARCHAR2(30)'
attr_defv1 => 'Betty Smith');
DBMS_EXPFIL.ADD_ELEMENTARY_ATTRIBUTE (
attr_set => 'HRAttrSet',
attr_name => 'DEPT',
tab_alias => exf$table_alias('DEPT'));
END;
/
次のコマンドでは、データベース時間をデフォルト値とする要素属性CreationTimeが定義されます。
BEGIN
DBMS_EXPFIL.ADD_ELEMENTARY_ATTRIBUTE (
attr_set => 'PurchaseOrder',
attr_name => 'CreationTime',
attr_type => 'DATE',
attr_defvl => 'SYSDATE');
END;
/
また、次のコマンドを使用すると、CreationTime属性は特定の値に初期化されます(EVALUATE演算子に渡されるデータ・アイテムで値が明示的に指定されていない場合)。
BEGIN
DBMS_EXPFIL.ADD_ELEMENTARY_ATTRIBUTE (
attr_set => 'PurchaseOrder',
attr_name => 'CreationTime',
attr_type => 'DATE',
attr_defvl => 'to_date(''01-01-2004'',''DD-MM-YYYY'')');
END;
/
次のコマンドでは、VARCHAR2データ型のModel属性およびテキスト述語用に構成されたInsReport属性を含む属性セットが作成されます。
BEGIN
DBMS_EXPFIL.CREATE_EVENT_STRUT(event_struct => 'Car4Sale');
// create scalar attributes
DBMS_EXPFIL.ADD_ELEMENTARY_ATTRIBUTE(
attr_set => 'Car4Sale',
attr_name => 'Model',
attr_type => 'VARCHAR2(30)');
//create text attribute
DBMS_EXPFIL.ADD_ELEMENTARY_ATTRIBUTE(
attr_set => 'Car4Sale',
attr_name => 'InsReport',
attr_type => 'CLOB',
attr_type => exf$text(
'LEXER insrpt_lexer
WORDLIST insrpt_wordlist'));
END;
/
このプロシージャは、ファンクションの集合を表すユーザー定義ファンクション、パッケージ、またはタイプを属性セットに追加します。
構文
DBMS_EXPFIL.ADD_FUNCTIONS ( attr_set IN VARCHAR2, funcs_name IN VARCHAR2);
パラメータ
表53-3 ADD_FUNCTIONSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
ファンクションを追加する属性セットの名前。 |
|
|
(ファンクションの集合を表す)ファンクション、パッケージまたはタイプの名前またはそのシノニム。 |
使用上の注意
デフォルトでは、属性セットによって、式セットで使用されるオラクル社提供のすべてのSQLファンクションを暗黙的に参照できます。式セットでユーザー定義ファンクションを参照する場合は、そのファンクションが属性セットに明示的に追加されている必要があります。
ADD_FUNCTIONSプロシージャは、ファンクションの集合を表すユーザー定義ファンクション、パッケージまたはタイプを属性セットに追加します。新しい式または変更された式は、このリストを使用して有効性が検証されます。属性セットに追加されたファンクションは、格納されている式で使用されるため、DMLおよびDDL(データベース状態の変更)操作は実行しないでください。 このルールに対する違反は、式の評価時(実行時)にのみ検出されます(ADD_FUNCTIONSプロシージャのコール時にはチェックされません)。
ファンクションまたはパッケージの名前は、スキーマ拡張を使用して指定できます。スキーマ拡張を使用せずにファンクション名を指定した場合、式セットではスキーマ拡張を使用していない参照のみが有効であるとみなされます。セット内の式は、ファンクションまたはパッケージにシノニムを使用するように制限できます。そのためには、対応するシノニムを属性セットに追加します。これによって、他のスキーマに対する式セットの移植性が保持されます。
属性セットにファンクションを追加する方法の詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』の属性セットの定義属性に関する項を参照してください。
関連ビュー: USER_EXPFIL_ATTRIBUTE_SETSおよびUSER_EXPFIL_EXPRESSION_SETS。
例
次のコマンドでは、2つのファンクションが属性セットに追加されます。
BEGIN DBMS_EXPFIL.ADD_FUNCTIONS ( attr_set => 'Car4Sale', funcs_name => 'HorsePower'); DBMS_EXPFIL.ADD_FUNCTIONS ( attr_set => 'Car4Sale', funcs_name => 'Scott.CrashTestRating'); END; /
このプロシージャは、ユーザー表のVARCHAR2列に属性セットを割り当ててExpression列を作成します。
構文
DBMS_EXPFIL.ASSIGN_ATTRIBUTE_SET ( attr_set IN VARCHAR2, expr_tab IN VARCHAR2, expr_col IN VARCHAR2, force IN VARCHAR2 DEFAULT 'FALSE');
パラメータ
表53-4 ASSIGN_ATTRIBUTE_SETプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
属性セットの名前。 |
|
|
式セットが格納されている表の名前。 |
|
|
式が格納されている表の列の名前。 |
|
|
表の既存の式を信頼(および検証をスキップ)するために使用する引数。 |
使用上の注意
ASSIGN_ATTRIBUTE_SETプロシージャは、ユーザー表のVARCHAR2列に属性セットを割り当ててExpression列を作成します。属性セットには、式で使用される要素属性の名前とそのデータ型、およびすべてのファンクションが含まれています。Expression列では、属性セットを使用して式セットに対する変更および追加の妥当性がチェックされます。
属性セットは、その属性セットと同じスキーマにある表の列にのみ割り当てることができます。属性セットは、表の1つ以上の列に割り当てることができます。属性セットを式が格納されている列に割り当てると、関連するオブジェクト・タイプ用のメソッドが暗黙的に作成されます。この操作を正しく行うには、属性セットを割り当てる前に、オブジェクト・タイプに依存オブジェクトが含まれないようにしておきます。
デフォルトでは、関連付け時に、列に式が存在していない必要があります。ただし、列の値が有効な式であることがわかっている場合は、force引数に値'TRUE'を使用して、式が格納されている列に属性セットを割り当てることができます。
要素属性の追加の詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』のExpression列の定義に関する項を参照してください。
関連ビュー: USER_EXPFIL_ATTRIBUTE_SETSおよびUSER_EXPFIL_EXPRESSION_SETS。
例
次のコマンドでは、式が格納されている列に属性セットが割り当てられます。式セットは、関連付け時に、空である必要があります。
BEGIN
DBMS_EXPFIL.ASSIGN_ATTRIBUTE_SET (attr_set => 'Car4Sale',
expr_tab => 'Consumer',
expr_col => 'Interest');
END;
/
このプロシージャは、検証に使用される例外表を現行のスキーマ内に作成します。
構文
DBMS_EXPFIL.BUILD_EXCEPTIONS_TABLE ( exception_tab IN VARCHAR2);
パラメータ
使用上の注意
表の列に格納されている式は、VALIDATE_EXPRESSIONSプロシージャを使用して検証できます。式の検証時に、無効な式への参照が格納されている例外表の名前をオプションで指定できます。 BUILD_EXCEPTIONS_TABLEプロシージャは、現行のスキーマ内に例外表を作成します。
詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』の評価のセマンティクスに関する項、およびこの章の「VALIDATE_EXPRESSIONSプロシージャ」を参照してください。
関連ビュー: USER_TABLES。
例
次のコマンドでは、現行のスキーマ内に例外表InterestExceptionsが作成されます。
BEGIN
DBMS_EXPFIL.BUILD_EXCEPTIONS_TABLE (
exception_tab => 'InterestExceptions');
END;
/
このプロシージャは、表の列に格納されている式セットの述語統計を消去します。
構文
DBMS_EXPFIL.CLEAR_EXPRSET_STATS ( expr_tab IN VARCHAR2, expr_col IN VARCHAR2);
パラメータ
使用上の注意
このプロシージャは、表の列に格納されている式セットの述語統計を消去します。 述語統計の収集については、この章の「GET_EXPRSET_STATSプロシージャ」も参照してください。
関連ビュー: USER_EXPFIL_EXPRESSION_SETSおよびUSER_EXPFIL_EXPRSET_STATS。
例
次のコマンドでは、Consumer表のInterest列に格納されている式セットの述語統計が消去されます。
BEGIN
DBMS_EXPFIL.CLEAR_EXPRSET_STATS (expr_tab => 'Consumer',
expr_col => 'Interest');
END;
/
このプロシージャは、属性セットを、そのユーザー定義ファンクション・リストとデフォルトの索引パラメータとともに別のセットにコピーします。
構文
DBMS_EXPFIL.COPY_ATTRIBUTE_SET ( from_set IN VARCHAR2, to_set IN VARCHAR2);
パラメータ
使用上の注意
スキーマ拡張した名前をfrom_set引数に使用すると、属性セットをスキーマ間でコピーできます。このコマンドを発行するユーザーには、元の属性セットに関連づけられているオブジェクト・タイプに対するEXECUTE権限が必要です。また、スキーマ・オブジェクト(ユーザー定義ファンクション、表および埋込みオブジェクト)への参照が新しいスキーマ内で有効であることを確認する必要があります。
新しいセットのデフォルトの索引パラメータおよびユーザー定義ファンクション・リストは、元のセットとは無関係に変更できます。
関連ビュー: ALL_EXPFIL_ATTRIBUTE_SETSおよびALL_EXPFIL_ATTRIBUTES。
例
次のコマンドでは、属性セットCar4Saleがコピーされます。
BEGIN
DBMS_EXPFIL.COPY_ATTRIBUTE_SET (from_set => 'Car4Sale',
to_set => 'Vehicle');
END;
/
このプロシージャは、空の属性セットを作成するか、または一致する名前のオブジェクト・タイプから導出される要素属性の完全なセットを含む属性セットを作成します。
構文
DBMS_EXPFIL.CREATE_ATTRIBUTE_SET ( attr_set IN VARCHAR2, from_type IN VARCHAR2 DEFAULT 'NO');
パラメータ
表53-8 CREATE_ATTRIBUTE_SETプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
作成する属性セットの名前。 |
|
|
属性セットの属性を既存のオブジェクト・タイプから導出する必要がある場合は |
使用上の注意
属性セットに使用されるオブジェクト・タイプに、ユーザー・メソッドを含めることはできません。また、(ALTER TYPEコマンドを使用する)発展型をそのオブジェクト・タイプにすることはできません。属性セットの作成時に、このオブジェクト・タイプに、依存オブジェクトが含まれないようにする必要があります。このプロシージャは、属性セットが既存のオブジェクト・タイプから導出されない場合、一致する名前を持つオブジェクト・タイプを作成します。
表の別名属性が1つ以上ある属性セットは、オブジェクト・タイプからは導出できません。 これを行うには、空の属性セットを作成し、DBMS_EXPFIL.ADD_ELEMENTARY_ATTRIBUTEプロシージャを使用して1度に1つずつ要素属性を追加します (詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』の付録Aを参照)。
詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』の属性セットの定義に関する項、およびこの章の「ADD_ELEMENTARY_ATTRIBUTEプロシージャ」を参照してください。
関連ビュー: USER_EXPFIL_ATTRIBUTE_SETSおよびUSER_EXPFIL_ATTRIBUTES。
例
次のコマンドでは、Car4Saleタイプから導出された必須の要素属性をすべて含む属性セットが作成されます。
CREATE OR REPLACE TYPE Car4Sale AS OBJECT
(Model VARCHAR2(20),
Year NUMBER,
Price NUMBER,
Mileage NUMBER);
/
BEGIN
DBMS_EXPFIL.CREATE_ATTRIBUTE_SET(attr_set => 'Car4Sale',
from_type => 'YES');
END;
/
Car4Saleタイプが存在しない場合は、次の例に示すように、属性セットを最初から作成できます。
BEGIN
DBMS_EXPFIL.CREATE_ATTRIBUTE_SET(attr_set => 'Car4Sale');
DBMS_EXPFIL.ADD_ELEMENTARY_ATTRIBUTE(
attr_set => 'Car4Sale',
attr_name => 'Model',
attr_type => 'VARCHAR2(20)');
DBMS_EXPFIL.ADD_ELEMENTARY_ATTRIBUTE(
attr_set => 'Car4Sale',
attr_name => 'Year',
attr_type => 'NUMBER');
DBMS_EXPFIL.ADD_ELEMENTARY_ATTRIBUTE(
attr_set => 'Car4Sale',
attr_name => 'Price',
attr_type => 'NUMBER');
DBMS_EXPFIL.ADD_ELEMENTARY_ATTRIBUTE(
attr_set => 'Car4Sale',
attr_name => 'Mileage',
attr_type => 'NUMBER');
END;
/
このプロシージャは、属性セットにデフォルトの索引パラメータを割り当てます。また、属性リストに関連付けられているデフォルトのリストに対して、ストアド属性または索引付き属性の部分的なリストを追加または削除します。
構文
DBMS_EXPFIL.DEFAULT_INDEX_PARAMETERS ( attr_set IN VARCHAR2, attr_list IN EXF$ATTRIBUTE_LIST, operation IN VARCHAR2 DEFAULT 'ADD');
パラメータ
表53-9 DEFAULT_INDEX_PARAMETERSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
属性セットの名前。 |
|
|
式フィルタの索引の(デフォルトの)ストアド属性および索引付き属性の部分的なリストを含む |
|
|
索引パラメータのリストに対して実行する操作。デフォルト値は |
使用上の注意
既存の式フィルタの索引は、対応する属性セットのデフォルト・パラメータが変更された場合でも変更されません。新規の式フィルタの索引の作成時および既存の索引の再作成時には、新規の索引のデフォルトが使用されます。 (索引の再作成の詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』のALTER INDEX REBUILTに関する項を参照)。
属性セットにデフォルトの索引パラメータを割り当てる方法の詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』のデフォルト・パラメータからの索引の作成に関する項を参照してください。
関連ビュー: USER_EXPFIL_ATTRIBUTE_SETSおよびUSER_EXPFIL_DEF_INDEX_PARAMS。
例
次のコマンドでは、指定したストアド属性および索引付き属性が属性セットのデフォルトの索引パラメータ・リストに追加されます。
BEGIN
DBMS_EXPFIL.DEFAULT_INDEX_PARAMETERs(
attr_set => 'Car4Sale',
attr_list => exf$attribute_list (
exf$attribute (attr_name => 'Model',
attr_oper => exf$indexoper('='),
attr_indexed => 'TRUE'),
exf$attribute (attr_name => 'Price',
attr_oper => exf$indexoper('all'),
attr_indexed => 'TRUE'),
exf$attribute (attr_name => 'HorsePower(Model, Year)',
attr_oper => exf$indexoper('=','<','>','>=','<='),
attr_indexed => 'FALSE'),
exf$attribute (attr_name => 'CrashTestRating(Model, Year)',
attr_oper => exf$indexoper('=','<','>','>=','<='),
attr_indexed => 'FALSE')),
operation => 'ADD');
END;
/
次のコマンドでは、前述のリストからCrashTestRating(Model, Year)属性(ストアドまたは索引付き)が削除されます。
BEGIN
DBMS_EXPFIL.DEFAULT_INDEX_PARAMETERS(
attr_set => 'Car4Sale',
attr_list => exf$attribute_list (
exf$attribute (attr_name => 'CrashTestRating(Model, Year)')),
operation => 'DROP');
END;
/
このプロシージャは、属性セットに関連付けられているデフォルトの索引パラメータにXPathパラメータの部分的なリストを追加(または削除)します。
構文
DBMS_EXPFIL.DEFAULT_XPINDEX_PARAMETERS ( attr_set IN VARCHAR2, xmlt_attr IN VARCHAR2, xptag_list IN EXF$XPATH_TAGS, operation IN VARCHAR2 DEFAULT 'ADD');
パラメータ
表53-10 DEFAULT_XPINDEX_PARAMETERSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
属性セットの名前。 |
|
|
|
|
|
式フィルタの索引用に構成するXML要素と属性の部分的なリストを含む |
|
|
索引パラメータのリストに対して実行する操作。デフォルト値は |
使用上の注意
式セットで使用する属性セットには1つ以上のXMLタイプの属性(XMLTypeデータ型で定義)を含めることができ、対応する式にはそれらの属性に対するXPath述語を含めることができます。式セット用に作成された式フィルタの索引は、XPath固有の索引パラメータ(およびXPath索引パラメータ以外のパラメータ)を使用して、これらのXPath述語を効率的に処理するようにチューニングできます。
DEFAULT_XPINDEX_PARAMETERSプロシージャは、属性セットに関連付けられているデフォルトの索引パラメータにXPathパラメータの部分的なリストを追加(または削除)します。 XPathパラメータは、属性セット内の特定のXMLType属性に割り当てられます。この情報は、USER_EXPFIL_DEF_INDEX_PARAMSビューを使用して表示できます。 DEFAULT_INDEX_PARAMETERSプロシージャとDEFAULT_XPINDEX_PARAMETERSプロシージャは、互いに独立して使用できます。これらのプロシージャは、属性セットのデフォルトの索引パラメータの共通リストをメンテナンスします。
属性セットのデフォルトの索引パラメータに対するXPathパラメータの詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』のXPath述語の索引チューニングに関する項を参照してください。 デフォルトの索引パラメータの詳細は、この章の「DEFAULT_INDEX_PARAMETERSプロシージャ」も参照してください。
関連ビュー: USER_EXPFIL_ATTRIBUTESおよびUSER_EXPFIL_DEF_INDEX_PARAMS。
|
注意: exf$xpath_tagタイプのtag_name引数に割り当てる値では、大/小文字が区別されます。 |
例
次のコマンドでは、指定したXMLタグが、位置フィルタ、値フィルタ、索引付き述語グループ、ストアド述語グループなどのプリファレンスとともに、デフォルトの索引パラメータ・リストに追加されます。
BEGIN
DBMS_EXPFIL.DEFAULT_XPINDEX_PARAMETERS(
attr_set => 'Car4Sale',
xmlt_attr => 'Details',
xptag_list => --- XPath tag list
exf$xpath_tags(
exf$xpath_tag(tag_name => 'stereo@make', --- XML attribute
tag_indexed => 'TRUE',
tag_type => 'VARCHAR(15)'), --- value filter
exf$xpath_tag(tag_name => 'stereo', --- XML element
tag_indexed => 'FALSE',
tag_type => null), --- positional filter
exf$xpath_tag(tag_name => 'memory', --- XML element
tag_indexed => 'TRUE',
tag_type => 'VARCHAR(10)'), --- value filter
exf$xpath_tag(tag_name => 'GPS',
tag_indexed => 'TRUE',
tag_type => null)
)
);
END;
/
次のコマンドでは、デフォルトの索引パラメータからstereo@makeタグが削除されます。
BEGIN
DBMS_EXPFIL.DEFAULT_XPINDEX_PARAMETERS(
attr_set => 'Car4Sale',
xmlt_attr => 'Details',
xptag_list => --- XPath tag list
exf$xpath_tags(
exf$xpath_tag(tag_name => 'stereo@make')
),
operation => 'DROP'
);
END;
/
このプロシージャは、ビットマップ索引をオンラインで再作成して断片化を減らします。
構文
DBMS_EXPFIL.DEFRAG_INDEX ( idx_name IN VARCHAR2);
パラメータ
使用上の注意
式フィルタの索引の索引付き属性に対して定義されたビットマップ索引は、式セットに対して追加または更新されると断片化されます。 DEFRAG_INDEXプロシージャは、ビットマップ索引をオンラインで再作成して断片化を削減します。
索引の断片化は、式セットの変更時に解消できます。ただし断片化の解消は、ワークロードが比較的小さいときにスケジュールする必要があります。
索引の再作成の詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』の索引の格納とメンテナンスに関する項を参照してください。
関連ビュー: USER_EXPFIL_INDEXESおよびUSER_INDEXES。
例
次のコマンドを発行すると、式フィルタの索引に関連づけられているビットマップ索引の断片化が解消されます。
BEGIN DBMS_EXPFIL.DEFRAG_INDEX (idx_name => 'InterestIndex'); END; /
このプロシージャは、いずれの式セットでも使用されていない属性セットを削除します。
構文
DBMS_EXPFIL.DROP_ATTRIBUTE_SET ( attr_set IN VARCHAR2);
パラメータ
使用上の注意
DROP_ATTRIBUTE_SETプロシージャは、いずれの式セットでも使用されていない属性セットを削除します。最初に既存のオブジェクト・タイプから作成された属性セットを削除した場合、そのオブジェクト・タイプは残ります。そうでない場合は、属性セットとともにオブジェクト・タイプも削除されます。
関連ビュー: USER_EXPFIL_ATTRIBUTE_SETSおよびUSER_EXPFIL_EXPRESSION_SETS。
例
属性セットがExpression列で使用されていない場合、次のコマンドではその属性セットが削除されます。
BEGIN DBMS_EXPFIL.DROP_ATTRIBUTE_SET(attr_set => 'Car4Sale'); END; /
このプロシージャは、式セットの述語統計を計算して式フィルタ・ディクショナリに格納します。
構文
DBMS_EXPFIL.GET_EXPRSET_STATS ( expr_tab IN VARCHAR2, expr_col IN VARCHAR2);
パラメータ
使用上の注意
典型的な式セットが表の列に格納されている場合は、それらの式の述語統計(およびTOPパラメータ句)を使用して、対応する式フィルタの索引を構成できます。 GET_EXPRSET_STATSプロシージャは、式セットの述語統計を計算して式フィルタ・ディクショナリに格納します。
述語統計の使用方法の詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』の統計からの索引作成に関する項を参照してください。
関連ビュー: USER_EXPFIL_EXPRESSION_SETSおよびUSER_EXPFIL_EXPRSET_STATS。
例
次のコマンドでは、Consumer表のInterest列に格納されている式の述語統計が計算されます。
BEGIN
DBMS_EXPFIL.GET_EXPRSET_STATS (expr_tab => 'Consumer',
expr_col => 'Interest');
END;
/
このプロシージャは、1つ以上のExpression列に対する権限を他のユーザーに付与します。
構文
DBMS_EXPFIL.GRANT_PRIVILEGE ( expr_tab IN VARCHAR2, expr_col IN VARCHAR2, priv_type IN VARCHAR2, to_user IN VARCHAR2);
パラメータ
表53-14 GRANT_PRIVILEGEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
式セットが格納されている表の名前。 |
|
|
式が格納されている表の列の名前。 |
|
|
付与する権限のタイプ。有効な値は、INSERT EXPRESSION、UPDATE EXPRESSIONおよびALLです。 |
|
|
権限を付与されるユーザー。 |
使用上の注意
SQLのEVALUATE演算子は、式が格納されている表の所有者の権限を使用して式を評価します。問合せを発行したユーザーの権限は考慮されません。表の所有者は、式を挿入、更新および削除できます。他のユーザーは、表に対するINSERT権限およびUPDATE権限と、表の特定のExpression列に対するINSERT EXPRESSION権限およびUPDATE EXPRESSION権限が必要です。
表の所有者は、GRANT_PRIVILEGEプロシージャを使用して、1つ以上のExpression列に対するINSERT EXPRESSION権限またはUPDATE EXPRESSION権限を他のユーザーに付与できます。権限タイプにALLを指定すると、両方の権限をユーザーに付与できます。
権限の付与および取消しの詳細は、この章の「REVOKE_PRIVILEGEプロシージャ」および『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』の権限の付与および取消しに関する項を参照してください。
関連ビュー: USER_EXPFIL_EXPRESSION_SETSおよびUSER_EXPFIL_PRIVILEGES。
例
Consumer表の所有者は、次のコマンドを使用して、ユーザーSCOTTにINSERT EXPRESSION権限を付与できます。ユーザーSCOTTが新しい式を式セットに追加できるようになるには、表に対するINSERT権限も必要です。
BEGIN
DBMS_EXPFIL.GRANT_PRIVILEGE (expr_tab => 'Consumer',
expr_col => 'Interest',
priv_type => 'INSERT EXPRESSION',
to_user => 'SCOTT');
END;
このプロシージャは、索引の作成前に各式セットの索引パラメータを詳細にチューニングします。
構文
DBMS_EXPFIL.INDEX_PARAMETERS ( expr_tab IN VARCHAR2, expr_col IN VARCHAR2, attr_list IN EXF$ATTRIBUTE_LIST, operation IN VARCHAR2 DEFAULT 'ADD');
パラメータ
表53-15 INDEX_PARAMETERSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
式セットが格納されている表の名前。 |
|
|
式が格納されている表の列の名前。 |
|
|
ストアド属性と索引付き属性の部分的なリストを含む |
|
|
索引パラメータのリストに対して実行する操作。デフォルト値は |
使用上の注意
属性セットは、ユーザー表の別々の列に格納された複数の式セットで使用できます。デフォルトでは、属性セットに関連付けられている索引パラメータが、式セットの式フィルタの索引の定義に使用されます。各式セットの索引を詳細にチューニングする必要がある場合は、CREATE INDEX文のPARAMETERS句に索引パラメータの小さいリストを指定できます。ただし、式フィルタの索引で多くの索引パラメータが使用されている場合または索引がXPath述語用に構成されている場合は、CREATE INDEX文でパラメータの詳細なチューニングはできません。
INDEX_PARAMETERSプロシージャは、索引の作成前に各式セットの索引パラメータを詳細にチューニングします。このプロシージャを使用すると、対応する属性セットのデフォルトをコピーし、式セットに対する追加の索引パラメータを選択して追加(または削除)できます。 (XPath索引パラメータの追加および削除には、XPINDEX_PARAMETERSプロシージャを使用します。)索引パラメータのリストが空でない式セットに対して定義された式フィルタの索引では、常にこれらのパラメータが使用されます。 式が格納されている列に対して式フィルタの索引がすでに定義されている場合、INDEX_PARAMETERSプロシージャは使用できません。
このプロシージャで実行可能な操作は、次のとおりです。
対応する属性セットからデフォルトの索引パラメータ(XPath固有のパラメータを含む)の現在のリストを導出して、指定した式セットに割り当てる操作(operation引数に値DEFAULTを指定)。
式セットに割り当てられている現在のパラメータ・リストに対して1つ以上の属性の追加(または削除)を行う操作(operation引数に値ADDまたはDROPを指定)。
式セットに割り当てられている索引パラメータを消去する操作。これによって、ユーザーは、デフォルト・パラメータの使用を開始したり、パラメータを最初からチューニングできます(operation引数に値CLEARを指定)。
|
注意: このプロシージャは、属性セットが複数の式セット間で共有されている場合にのみ有効です。それ以外の場合、属性セットに割り当てられているデフォルト値は、それらが使用される式セットに応じてチューニングできます。 |
詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』の完全パラメータからの索引作成に関する項、およびこの章の「XPINDEX_PARAMETERSプロシージャ」を参照してください。
関連ビュー: USER_EXPFIL_EXPRESSION_SETS、USER_EXPFIL_DEF_INDEX_PARAMSおよびUSER_EXPFIL_INDEX_PARAMS。
例
次のコマンドでは、式セットの索引パラメータが、対応する属性セットに関連付けられているデフォルト値と同期されます。
BEGIN
DBMS_EXPFIL.INDEX_PARAMETERS(expr_tab => 'Consumer',
expr_col => 'Interest',
attr_list => null,
operation => 'DEFAULT');
END;
/
次のコマンドでは、式セットの索引パラメータにストアド属性が追加されます。
BEGIN
DBMS_EXPFIL.INDEX_PARAMETERS(expr_tab => 'Consumer',
expr_col => 'Interest',
attr_list =>
exf$attribute_list (
exf$attribute (
attr_name => 'CrashTestRating(Model, Year)',
attr_oper => exf$indexoper('all'),
attr_indexed => 'FALSE')),
operation => 'ADD');
END;
/
次のコマンドでは、式セットに関連付けられている索引パラメータが消去されます。
BEGIN
DBMS_EXPFIL.INDEX_PARAMETERS(expr_tab => 'Consumer',
expr_col => 'Interest',
attr_list => null,
operation => 'CLEAR');
END;
/
以降の索引作成では、対応する属性セットに割り当てられているデフォルトの索引パラメータが使用されます。
このプロシージャは、属性セットの特定の属性に関連付けられている共通演算子のリストを変更します。
構文
DBMS_EXPFIL.MODIFY_OPERATOR_LIST ( attr_set IN VARCHAR2, attr_name IN VARCHAR2, attr_oper IN EXF$INDEXOPER);
パラメータ
表53-16 MODIFY_OPERATOR_LISTプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
属性セットの名前。 |
|
|
変更するストアド属性または索引付き属性の名前。 |
|
|
その属性を持つ述語で頻繁に使用される演算子の新しいリスト。 |
使用上の注意
MODIFY_OPERATOR_LISTプロシージャは、属性セットのデフォルトの索引パラメータに定義されている、ストアド属性および索引付き属性の演算子リストを変更します。属性の演算子リストを変更した場合でも、既存の式フィルタの索引は影響を受けません。更新された索引のデフォルト値は、新規の式フィルタの索引の作成時および既存の索引の再作成時に使用されます。
関連ビュー: USER_EXPFIL_DEF_INDEX_PARAMS。
例
次のコマンドでは、属性セットCar4Saleに定義されているHorsePower(Model,Year)属性に関連付けられている演算子リストが変更されます。
BEGIN
DBMS_EXPFIL.MODIFY_OPERATOR_LIST (
attr_set => 'Car4Sale',
attr_name => 'HorsePower(Model, Year)',
attr_oper => exf$indexoper('=','<','>', 'between'));
END;
/
このプロシージャは、所有者が以前に付与した式の権限を取り消します。
構文
DBMS_EXPFIL.REVOKE_PRIVILEGE ( expr_tab IN VARCHAR2, expr_col IN VARCHAR2, priv_type IN VARCHAR2, from_user IN VARCHAR2);
パラメータ
表53-17 REVOKE_PRIVILEGEプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
式セットが格納されている表の名前。 |
|
|
式が格納されている表の列の名前。 |
|
|
取り消す権限のタイプ。 |
|
|
権限を取り消されるユーザー。 |
使用上の注意
REVOKE_PRIVILEGEプロシージャは、所有者が以前に付与した式の権限を取り消します。
権限の付与および取消しの詳細は、この章の「GRANT_PRIVILEGEプロシージャ」および『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』の権限の付与および取消しに関する項を参照してください。
関連ビュー: USER_EXPFIL_EXPRESSION_SETSおよびUSER_EXPFIL_PRIVILEGES。
例
次のコマンドでは、ユーザーSCOTTに付与されているConsumer表のInterest列に対するINSERT EXPRESSION権限が取り消されます。
BEGIN
DBMS_EXPFIL.REVOKE_PRIVILEGE (expr_tab => 'Consumer',
expr_col => 'Interest',
priv_type => 'INSERT EXPRESSION',
from_user => 'SCOTT');
END;/
このプロシージャは、格納されている式のCONTAINS演算子に関連する述語を処理するために定義された索引を同期化します。
構文
DBMS_EXPFIL.SYNC_TEXT_INDEXES (
expr_tab IN VARCHAR2);
パラメータ
使用上の注意
式が格納されている列に式フィルタの索引が定義されている場合、式のすべてのテキスト述語はCTXRULE索引を使用して索引付けされます。式セット内の述語の処理に使用される他のタイプの索引(スカラーおよびXML述語用のビットマップ索引または空間述語用の空間索引)とは異なり、テキスト述語を処理するために定義されているCTXRULE索引に、トランザクションの特性はありません。つまり、式が格納されている表にDML操作を実行してテキスト述語を更新した場合、新しい述語は対応するCTXRULE索引に自動的には反映されません。このため、CTXRULE索引が同期化されるまで一貫性が失われる可能性があります。このプロシージャを使用すると、1つ以上のExpression列が含まれている表に関連付けられているすべてのCTXRULE索引を同期化できます。 このプロシージャは、すべてのCTXRULE索引を識別し、それらの索引のそれぞれに対してCTX_DDL.SYNC_INDEXプロシージャを起動します。
テキスト索引を正常に同期化するには、CTX_DDLパッケージに対するEXECUTE権限が必要です。
例
次のコマンドでは、CONSUMER表のExpression列に関連付けられているテキスト索引が同期化されます。
BEGIN DBMS_EXPFIL.SYNC_TEXT_INDEXES (expr_tab => 'Consumer'); END; /
このプロシージャは、式が格納されている列に対する属性セットの割当てを解除します。
構文
DBMS_EXPFIL.UNASSIGN_ATTRIBUTE_SET ( expr_tab IN VARCHAR2, expr_col IN VARCHAR2);
パラメータ
表53-19 UNASSIGN_ATTRIBUTE_SETプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
式セットが格納されている表の名前。 |
|
|
式が格納されている表の列の名前。 |
使用上の注意
Expressionデータ型の列は、属性セットの割当てを解除することで、元のVARCHAR2型に変換できます。式が格納されている列に対する属性セットの割当ての解除は、その列に式フィルタの索引が定義されていない場合に実行できます。
属性セットの割当てについては、この章の「ASSIGN_ATTRIBUTE_SETプロシージャ」を参照してください。
関連ビュー: USER_EXPFIL_EXPRESSION_SETSおよびUSER_EXPFIL_INDEXES。
例
次のコマンドでは、Consumer表のInterest列に対して以前に割り当てられた属性セットの割当てが解除されます (詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』の式データのバルク・ロードに関する項を参照)。
BEGIN
DBMS_EXPFIL.UNASSIGN_ATTRIBUTE_SET (expr_tab => 'Consumer',
expr_col => 'Interest');
END;
/
このプロシージャは、セット内のすべての式の妥当性を検証します。
構文
DBMS_EXPFIL.VALIDATE_EXPRESSIONS ( expr_tab IN VARCHAR2, expr_col IN VARCHAR2, exception_tab IN VARCHAR2 DEFAULT NULL);
パラメータ
表53-20 VALIDATE_EXPRESSIONSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
式セットが格納されている表の名前。 |
|
|
式が格納されている表の列の名前。 |
|
|
例外表の名前。 この表は、 |
使用上の注意
表に格納されている式は、スキーマ・オブジェクト(ユーザー定義ファンクション、表など)を参照している場合があります。これらのスキーマ・オブジェクトが削除または変更されると、式が無効になり、それ以降の評価(EVALUATE演算子による問合せ)が失敗する可能性があります。
VALIDATE_EXPRESSIONSプロシージャは、セット内のすべての式の妥当性を検証します。デフォルトでは、無効な式が最初に見つかった時点で、式の検証ユーティリティは失敗します。コール元は、オプションで、無効なすべての式の参照が格納される例外表を渡すことができます。このプロシージャは、セット内の式を検証する他に、関連する索引のパラメータ(ストアド属性と索引付き属性)およびユーザー定義関数の承認済リストも検証します。索引パラメータまたはユーザー定義ファンクション・リストにエラーがある場合は、コール元に即時にレポートされます。
詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』の評価のセマンティクスに関する項、およびこの章の「BUILD_EXCEPTIONS_TABLEプロシージャ」を参照してください。
関連ビュー: USER_EXPFIL_EXPRESSION_SETS、USER_EXPFIL_ASET_FUNCTIONSおよびUSER_EXPFIL_PREDTAB_ATTRIBUTES。
例
次のコマンドでは、Consumer表のInterest列に格納されている式が検証されます。
BEGIN
DBMS_EXPFIL.VALIDATE_EXPRESSIONS (expr_tab => 'Consumer',
expr_col => 'Interest');
END;
/
このプロシージャは、INDEX_PARAMETERSプロシージャと組み合せて使用します。それによって、各式セットのXPath固有の索引パラメータを詳細にチューニングします。
構文
DBMS_EXPFIL.XPINDEX_PARAMETERS ( expr_tab IN VARCHAR2, expr_col IN VARCHAR2, xmlt_attr IN VARCHAR2, xptag_list IN EXF$XPATH_TAGS, operation IN VARCHAR2 DEFAULT 'ADD');
パラメータ
表53-21 XPINDEX_PARAMETERSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
式セットが格納されている表の名前。 |
|
|
式が格納されている表の列の名前。 |
|
|
|
|
|
XML要素および属性の部分的なリストを含む |
|
|
索引パラメータのリストに対して実行する操作。デフォルト値は |
使用上の注意
1つの属性セットが複数の式セットで共有されている場合は、INDEX_PARAMETERSプロシージャを使用して、式セットごとに単純な(XPath以外の)索引パラメータをチューニングできます。 各式セットのXPath固有の索引パラメータを詳細にチューニングするには、XPINDEX_PARAMETERSプロシージャをINDEX_PARAMETERSプロシージャと組み合せて使用します。
詳細は、この章の「INDEX_PARAMETERSプロシージャ」、および『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』のXPath述語の索引のチューニングに関する項を参照してください。
関連ビュー: USER_EXPFIL_ATTRIBUTES、USER_EXPFIL_DEF_INDEX_PARAMSおよびUSER_EXPFIL_INDEX_PARAMS。
|
注意: exf$xpath_tagタイプのtag_name引数に割り当てる値では、大/小文字が区別されます。 |
例
次のコマンドでは、式セットの索引パラメータ(XPathおよびXPath以外)が、対応する属性セットに関連付けられているデフォルト値と同期されます。
BEGIN
DBMS_EXPFIL.INDEX_PARAMETERS(expr_tab => 'Consumer',
expr_col => 'Interest',
attr_list => null,
operation => 'DEFAULT');
END;
/
次のコマンドでは、XPath固有の索引パラメータが式セットに追加されます。
BEGIN
DBMS_EXPFIL.XPINDEX_PARAMETERS(expr_tab => 'Consumer',
expr_col => 'Interest',
xmlt_attr => 'Details',
xptag_list =>
exf$xpath_tags(
exf$xpath_tag(tag_name => 'GPS',
tag_indexed => 'TRUE',
tag_type => NULL)),
operation => 'ADD');
END;
/