注意: この機能は、Oracle Databaseリリース11.2では非推奨で、リリース12.1では廃止されています。廃止の詳細は、My Oracle Support NoteID 1244535.1を参照してください。 |
DBMS_EXPFIL
パッケージには、属性セット、式セット、式の索引、オプティマイザ統計および権限を式フィルタで管理する場合に使用するすべてのプロシージャが含まれています。
関連項目: 詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』を参照してください。 |
この章では、次の項目について説明します。
この項では、ルール・マネージャのDBMS_EXPFIL
パッケージの使用に関連する項目について説明します。
Oracle Databaseインストールでは、catexf.sql
スクリプトを実行してDBMS_EXPFIL
パッケージをロードし、必要な式フィルタのスキーマ・オブジェクトをEXFSYS
スキーマに作成します。
DBMS_EXPFIL
は、EXFSYS
所有のパッケージであり、AUTHID CURRENT_USER
でコンパイルされます。無名PL/SQLブロックからコールされたすべてのDBMS_EXPFIL
サブプログラムは、現行のユーザーの権限を使用して実行されます。
COPY_ATTRIBUTE_SET
プロシージャを発行する前に、ユーザーには、元の属性セットに関連づけられているオブジェクト・タイプに対するEXECUTE
権限が必要です。
ユーザーが式を評価するためには、式が格納されている表に対するSELECT
権限が必要です。SQL EVALUATE
演算子は、式が格納されている表の所有者の権限を使用して式を評価します。問合せを発行したユーザーの権限は考慮されません。表の所有者は、式を挿入、更新および削除できます。他のユーザーが表を変更できるようになるためには、表に対するINSERT
権限およびUPDATE
権限と、表の特定のExpression列に対するINSERT EXPRESSION
権限およびUPDATE EXPRESSION
権限が必要です。
表の所有者は、GRANT_PRIVILEGE
プロシージャを使用して、1つ以上のExpression列に対するINSERT EXPRESSION
権限またはUPDATE EXPRESSION
権限を他のユーザーに付与できます。権限タイプにALL
を指定すると、両方の権限をユーザーに付与できます。
表に対してCREATE INDEX
権限を付与されているユーザーは、ユーザーが表の所有者でないかぎり、式フィルタの索引を作成できません。
DBMS_EXPFIL.SYNC_TEXT_INDEXES
プロシージャを使用してテキスト索引を正常に同期化するには、ユーザーにCTX_DDL
パッケージに対するEXECUTE
権限が必要です。
USER_EXPFIL_PRIVILEGES
ビューには、他のスキーマに属する式セットに対する現行のユーザーの権限、および現行のユーザーが所有する式セットに対する他のユーザーの権限がリストされます。
表65-1に、DBMS_EXPFIL
パッケージのサブプログラムを示します。
特に明記されていないかぎり、DBMS_EXPFIL
パッケージに定義されているプロシージャに渡されるすべての値と名前で、大/小文字は区別されません。大/小文字の区別を保つには、値を二重引用符で囲んでください。
表65-1 DBMS_EXPFILパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
ADD_ELEMENTARY_ATTRIBUTEプロシージャ |
指定の属性を属性セットに追加します。 |
|
属性セットを含むファンクションの承認リストに、ファンクション、タイプまたはパッケージを追加します。 |
|
式が格納されている列に属性セットを割り当てます。 |
|
無効な式への参照を保持する例外表を作成します。 |
|
式セットの述語統計を消去します。 |
|
属性セットをコピーします。 |
|
属性セットを作成します。 |
DEFAULT_INDEX_PARAMETERSプロシージャ |
属性セットにデフォルトの索引パラメータを割り当てます。 |
DEFAULT_XPINDEX_PARAMETERSプロシージャ |
属性セットにデフォルトのXPath索引パラメータを割り当てます。 |
|
ビットマップ索引をオンラインで再作成して、断片化を減らします。 |
|
未使用の属性セットを削除します。 |
|
式セットの述語統計を収集します。 |
|
ユーザーに式のDML権限を付与します。 |
|
式セットに索引パラメータを割り当てます。 |
|
特定の属性を持つ述語で使用される共通演算子のリストを変更します。 |
|
ユーザーに付与されている式のDML権限を取り消します。 |
|
格納されている式の |
|
式が格納されている列と属性セットとの関連付けを解除します。 |
|
式のメタデータおよび列に格納されている式を検証します。 |
|
式セットに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);
パラメータ
表65-2 ADD_ELEMENTARY_ATTRIBUTEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
この属性を追加する属性セットの名前。 |
|
追加する要素属性の名前。同じセット内の2つの属性に同じ名前を指定することはできません。 |
|
属性のデータ・タイプ。この引数には、標準のSQLデータ・タイプ、または現行のユーザーがアクセス可能なオブジェクト・タイプの名前を指定できます。 |
|
要素属性のデフォルト値。 |
|
属性の別名を設定するデータベース表を識別するタイプ。 |
|
LEXER、WORDLIST指定などのテキスト・プリファレンス。 |
使用上の注意
要素属性を受ける属性セットが最初に既存のオブジェクト・タイプから作成された場合、他の属性は追加できません。
属性セット内の1つ以上またはすべての要素属性は、表の別名として使用できます。要素属性が表の別名である場合、その要素属性に割り当てられる値は、対応する表のROWID
です。表の別名属性が1つ以上ある属性セットは、既存のオブジェクト・タイプからは作成できません。表の別名の詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』を参照してください。
式が格納されている列にすでに割り当てられている属性セットには、要素属性は追加できません。
属性のデフォルト値の指定は、表の列のデフォルト値の指定に類似しています。設定されたデフォルト値は、属性のデータ・タイプと一致している必要があります。たとえば、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; /
このプロシージャは、ファンクションの集合を表すユーザー定義ファンクション、パッケージ、またはタイプを属性セットに追加します。
使用上の注意
デフォルトでは、属性セットによって、式セットで使用されるOracle Databaseが提供するすべてのSQLファンクションを暗黙的に参照できます。式セットでユーザー定義ファンクションを参照する場合は、そのファンクションが属性セットに明示的に追加されている必要があります。
ADD_FUNCTIONS
プロシージャは、ファンクションの集合を表すユーザー定義ファンクション、パッケージまたはタイプを属性セットに追加します。新しい式または変更された式は、このリストを使用して有効性が検証されます。属性セットに追加されたファンクションは、格納されている式で使用されるため、DMLおよびDDL(データベース状態の変更)操作は実行しないでください。Oracle Databaseでは、このルールに対する違反は式の評価中の実行時にのみ捕捉されます。ADD_FUNCTIONS
プロシージャ・コール中は違反はチェックされません。
ファンクションまたはパッケージの名前は、スキーマ拡張を使用して指定できます。スキーマ拡張を使用せずにファンクション名を指定した場合、式セットではスキーマ拡張を使用していない参照のみが有効であるとみなされます。セット内の式は、対応するシノニムを属性セットに追加することで、ファンクションまたはパッケージにシノニムを使用するように制限できます。これによって、他のスキーマに対する式セットの移植性が保持されます。
属性セットにファンクションを追加する方法の詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』の属性セットの定義に関する項を参照してください。
関連ビュー: USER_EXPFIL_ATTRIBUTE_SETS
およびUSER_EXPFIL_EXPRESSION_SETS
。
このプロシージャは、ユーザー表のVARCHAR2
列に属性セットを割り当ててExpression列を作成します。
構文
DBMS_EXPFIL.ASSIGN_ATTRIBUTE_SET ( attr_set IN VARCHAR2, expr_tab IN VARCHAR2, expr_col IN VARCHAR2, force IN VARCHAR2 DEFAULT 'FALSE');
使用上の注意
ASSIGN_ATTRIBUTE_SET
プロシージャは、ユーザー表のVARCHAR2
列に属性セットを割り当ててExpression列を作成します。属性セットには、式で使用される要素属性の名前とそのデータ・タイプ、およびすべてのファンクションが含まれています。Expression列(式を格納するためにexpr_col
パラメータに命名される列)では、属性セットを使用して式セットに対する変更および追加の妥当性がチェックされます。
属性セットは、その属性セットと同じスキーマにある表の列にのみ割り当てることができます。属性セットは、表の1つ以上の列に割り当てることができます。属性セットを式が格納されている列に割り当てると、関連するオブジェクト・タイプ用のメソッドが暗黙的に作成されます。この操作を正しく行うには、属性セットを割り当てる前に、オブジェクト・タイプに依存オブジェクトが含まれないようにしておきます。
デフォルトでは、関連付け時に、列に式が存在していない必要があります。ただし、列の値が有効な式であることがわかっている場合は、force
引数に値'TRUE'
を使用して、式が格納されている列に属性セットを割り当てることができます。
要素属性の追加の詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』のExpression列の定義に関する項を参照してください。
関連ビュー: USER_EXPFIL_ATTRIBUTE_SETS
およびUSER_EXPFIL_EXPRESSION_SETS
。
このプロシージャは、検証に使用される例外表を現行のスキーマ内に作成します。
使用上の注意
式の検証時に、無効な式への参照が格納されている例外表の名前をオプションで指定できます。BUILD_EXCEPTIONS_TABLE
プロシージャは、現行のスキーマ内に例外表を作成します。
詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』の評価のセマンティクスに関する項、および「VALIDATE_EXPRESSIONSプロシージャ」を参照してください。
関連ビュー: USER_TABLES
。
このプロシージャは、表の列に格納されている式セットの述語統計を消去します。
使用上の注意
述語統計の収集については、「GET_EXPRSET_STATSプロシージャ」も参照してください。
関連ビュー: USER_EXPFIL_EXPRESSION_SETS
およびUSER_EXPFIL_EXPRSET_STATS
。
このプロシージャは、属性セットを、そのユーザー定義ファンクション・リストとデフォルトの索引パラメータとともに別のセットにコピーします。
使用上の注意
スキーマ拡張した名前をfrom_set
引数に使用すると、属性セットをスキーマ間でコピーできます。このコマンドを発行する前に、元の属性セットに関連づけられているオブジェクト・タイプに対するEXECUTE
権限が必要です。スキーマ・オブジェクト(ユーザー定義ファンクション、表および埋込みオブジェクト)への参照が新しいスキーマ内で有効であることを確認してください。
新しいセットのデフォルトの索引パラメータおよびユーザー定義ファンクション・リストは、元のセットとは無関係に変更できます。
関連ビュー: ALL_EXPFIL_ATTRIBUTE_SETS
およびALL_EXPFIL_ATTRIBUTES
。
このプロシージャは、空の属性セットを作成するか、または一致する名前のオブジェクト・タイプから導出される要素属性の完全なセットを含む属性セットを作成します。
使用上の注意
属性セットに使用されるオブジェクト・タイプにユーザー・メソッドを含めることはできず、(ALTER TYPE
コマンドを使用する)発展型をそのオブジェクト・タイプにすることはできません。属性セットの作成時に、このオブジェクト・タイプに依存オブジェクトが含まれないようにする必要があります。属性セットが既存のオブジェクト・タイプから導出されない場合、このプロシージャは一致する名前を持つオブジェクト・タイプを作成します。
表の別名属性が1つ以上ある属性セットは、オブジェクト・タイプから導出できません。これを行うには、空の属性セットを作成し、DBMS_EXPFIL
.ADD_ELEMENTARY_ATTRIBUTE
プロシージャを使用して、1度に1つずつ要素属性を追加します。(詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』を参照してください。)
詳細は、『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');
使用上の注意
既存の式フィルタの索引は、対応する属性セットのデフォルト・パラメータが変更された場合でも変更されません。新規の式フィルタの索引の作成時および既存の索引の再作成時には、新規の索引のデフォルトが使用されます。(索引の再作成の詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』のALTER INDEX REBUILDに関する項を参照)。
属性セットにデフォルトの索引パラメータを割り当てる方法の詳細は、『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');
使用上の注意
式セットで使用する属性セットには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; /
このプロシージャは、ビットマップ索引をオンラインで再作成して断片化を減らします。
使用上の注意
式フィルタの索引の索引付き属性に対して定義されたビットマップ索引は、式セットに対して追加または更新されると断片化されます。これにより、パフォーマンスに影響が及ぶ可能性があります。DEFRAG_INDEX
プロシージャは、ビットマップ索引をオンラインで再作成して断片化を削減します。
索引の断片化は、式セットの変更時に解消できます。ただし断片化の解消は、ワークロードが比較的小さいとき(午前2時など)にスケジュールする必要があります。
索引の再作成の詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』の索引の格納とメンテナンスに関する項を参照してください。
関連ビュー: USER_EXPFIL_INDEXES
およびUSER_INDEXES
。
このプロシージャは、いずれの式セットでも使用されていない属性セットを削除します。
このプロシージャは、式セットの述語統計を計算して式フィルタ・ディクショナリに格納します。
このプロシージャは、1つ以上のExpression列に対する権限を他のユーザーに付与します。
構文
DBMS_EXPFIL.GRANT_PRIVILEGE ( expr_tab IN VARCHAR2, expr_col IN VARCHAR2, priv_type IN VARCHAR2, to_user IN VARCHAR2);
使用上の注意
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
。
このプロシージャは、索引の作成前に各式セットの索引パラメータを詳細にチューニングします。
構文
DBMS_EXPFIL.INDEX_PARAMETERS ( expr_tab IN VARCHAR2, expr_col IN VARCHAR2, attr_list IN EXF$ATTRIBUTE_LIST, operation IN VARCHAR2 DEFAULT 'ADD');
使用上の注意
属性セットは、ユーザー表の別々の列に格納された複数の式セットで使用できます。デフォルトでは、属性セットに関連付けられている索引パラメータが、式セットの式フィルタの索引の定義に使用されます。各式セットの索引を詳細にチューニングする必要がある場合は、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);
このプロシージャは、所有者が以前に付与した式の権限を取り消します。
構文
DBMS_EXPFIL.REVOKE_PRIVILEGE ( expr_tab IN VARCHAR2, expr_col IN VARCHAR2, priv_type IN VARCHAR2, from_user IN VARCHAR2);
使用上の注意
権限の付与および取消しの詳細は、「GRANT_PRIVILEGEプロシージャ」および『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』の権限の付与および取消しに関する項を参照してください。
関連ビュー: USER_EXPFIL_EXPRESSION_SETS
およびUSER_EXPFIL_PRIVILEGES
。
このプロシージャは、格納されている式のCONTAINS
演算子に関連する述語を処理するために定義された索引を同期化します。
使用上の注意
式が格納されている列に式フィルタの索引が定義されている場合、式のすべてのテキスト述語はCTXRULE
索引を使用して索引付けされます。式セット内の述語の処理に使用される他のタイプの索引(スカラーおよびXML述語用のビットマップ索引または空間述語用の空間索引)とは異なり、テキスト述語を処理するために定義されているCTXRULE
索引に、トランザクションの特性はありません。つまり、式が格納されている表にDML操作を実行してテキスト述語を更新した場合、新しい述語は対応するCTXRULE
索引に自動的には反映されません。このため、CTXRULE
索引が同期化されるまで一貫性が失われる可能性があります。このプロシージャを使用すると、1つ以上のExpression列が含まれている表に関連付けられているすべてのCTXRULE
索引を同期化できます。このプロシージャは、すべてのCTXRULE
索引を識別し、それらの索引のそれぞれに対してCTX_DDL.SYNC_INDEXプロシージャを起動します。
テキスト索引を正常に同期化するには、CTX_DDLパッケージに対するEXECUTE
権限が必要です。
このプロシージャは、式が格納されている列に対する属性セットの割当てを解除します。
使用上の注意
Expressionデータ・タイプの列は、属性セットの割当てを解除することで、元のVARCHAR2
タイプに変換できます。式が格納されている列に対する属性セットの割当ての解除は、その列に式フィルタの索引が定義されていない場合に実行できます。
属性セットの割当てについては、「ASSIGN_ATTRIBUTE_SETプロシージャ」を参照してください。
関連ビュー: USER_EXPFIL_EXPRESSION_SETS
およびUSER_EXPFIL_INDEXES
。
このプロシージャは、セット内のすべての式の妥当性を検証します。
構文
DBMS_EXPFIL.VALIDATE_EXPRESSIONS ( expr_tab IN VARCHAR2, expr_col IN VARCHAR2, exception_tab IN VARCHAR2 DEFAULT NULL);
使用上の注意
表に格納されている式は、スキーマ・オブジェクト(ユーザー定義ファンクション、表など)を参照している場合があります。これらのスキーマ・オブジェクトが削除または変更されると、式が無効になり、それ以降の評価(EVALUATE
演算子による問合せ)が失敗する可能性があります。
デフォルトでは、無効な式が最初に見つかった時点で、式の検証プロシージャは失敗します。コール元は、オプションで、無効なすべての式の参照が格納される例外表を渡すことができます。このプロシージャは、セット内の式を検証する他に、関連する索引のパラメータ(ストアド属性と索引付き属性)およびユーザー定義関数の承認済リストも検証します。索引パラメータまたはユーザー定義ファンクション・リストにエラーがある場合は、コール元に即時にレポートされます。
詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』の評価のセマンティクスに関する項、および「BUILD_EXCEPTIONS_TABLEプロシージャ」を参照してください。
関連ビュー: USER_EXPFIL_EXPRESSION_SETS
、USER_EXPFIL_ASET_FUNCTIONS
およびUSER_EXPFIL_PREDTAB_ATTRIBUTES
。
このプロシージャは、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');
使用上の注意
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; /