35 DBMS_AUTO_INDEX
DBMS_AUTO_INDEX
パッケージは、Oracleデータベースの自動索引を管理するためのインタフェースを提供します。
この章のトピックは、次のとおりです:
35.1 DBMS_AUTO_INDEXの概要
DBMS_AUTO_INDEX
パッケージは、自動索引を構成して、Oracleデータベースでの自動索引付け操作のレポートを生成するためのインタフェースです。
35.2 DBMS_AUTO_INDEXサブプログラムの要約
この表は、DBMS_AUTO_INDEX
パッケージのサブプログラムを示し、簡単に説明しています。
表35-1 DBMS_AUTO_INDEXパッケージのサブプログラム
プロシージャ | 説明 |
---|---|
自動索引付けに関連する設定を構成します。 |
|
DROP_AUTO_INDEXESプロシージャ |
このプロシージャを使用して、保存パラメータの設定をオーバーライドする自動作成索引を手動で削除できます。 |
スキーマまたは表から、制約に使用されるもの以外のすべての索引を削除します。 |
|
特定の期間中にデータベースで実行された自動索引付け操作のレポートを返します。 |
|
データベースで最後に実行された自動索引付け操作のレポートを返します。 |
35.2.1 CONFIGUREプロシージャ
このプロシージャでは、自動索引付けに関連する設定を構成します。
構文
DBMS_AUTO_INDEX.CONFIGURE (
parameter_name IN VARCHAR2,
parameter_value IN VARCHAR2,
allow IN BOOLEAN DEFAULT TRUE);
パラメータ
表35-2 CONFIGUREプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
自動索引付けの構成設定。次の値のうち1つを取ることができます。
|
|
|
|
このパラメータは、
包含リストと除外リストの詳細は、 |
例
これらの例は、初期状態の包含リストと除外リストが空であるという前提に基づいています。
次の例では、除外リストにSH
スキーマとHR
スキーマを追加して、SH
スキーマとHR
スキーマのみが自動索引を使用できないようにします。
begin dbms_auto_index.configure( parameter_name => 'AUTO_INDEX_SCHEMA', parameter_value => 'SH', allow => FALSE); dbms_auto_index.configure( parameter_name => 'AUTO_INDEX_SCHEMA', parameter_value => 'HR', allow => FALSE); end;
次の例では、除外リストからHR
スキーマを削除して、このスキーマでも自動索引が使用できるようにします。この時点で、除外リストにはSH
スキーマのみが追加されているため、このスキーマのみが自動索引を使用できません。
begin dbms_auto_index.configure( parameter_name => 'AUTO_INDEX_SCHEMA', parameter_value => 'HR', allow => NULL); end;
次の例では、除外リストからすべてのスキーマを削除して、すべてのスキーマで自動索引を使用できるようにします。
begin dbms_auto_index.configure( parameter_name => 'AUTO_INDEX_SCHEMA', parameter_value => NULL, allow => TRUE); end;
次の例では、包含リストにHR
スキーマを追加して、HR
スキーマのみが自動索引を使用できるようにします。
begin dbms_auto_index.configure( parameter_name => 'AUTO_INDEX_SCHEMA', parameter_value => 'HR', allow => TRUE); end;
次の例では、自動索引の保存期間を90日間に設定します。
begin dbms_auto_index.configure( parameter_name => 'AUTO_INDEX_RETENTION_FOR_AUTO', parameter_value => '90'); end;
次の例では、自動索引の保存期間をデフォルト値の373日間に設定します。
begin dbms_auto_index.configure( parameter_name => 'AUTO_INDEX_RETENTION_FOR_AUTO', parameter_value => NULL); end;
次の例では、表を有効にしています。
EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_TABLE', 'SH.SALES', TRUE);
包含/除外リストからすべての表を削除するには:
EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_TABLE', NULL);
35.2.2 DROP_AUTO_INDEXESプロシージャ
このプロシージャを使用して、保存パラメータの設定をオーバーライドする自動作成索引を手動で削除できます。
構文
DBMS_AUTO_INDEX.DROP_AUTO_INDEXES (
owner IN VARCHAR2 DEFAULT NULL,
index_name IN VARCHAR2 DEFAULT NULL,
allow_recreate IN BOOLEAN DEFAULT FALSE);
パラメータ
表35-3 DROP_AUTO_INDEXESプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
索引所有者の名前。 |
|
索引の名前。 |
allow_recreate |
このパラメータは、削除された索引の自動作成を再び許可または禁止する場合に設定します。 |
例
単一の索引を削除して、再作成を許可します。
exec dbms_auto_index.drop_auto_indexes('SH','"SYS_AI_612ud3j5ngf0c"',TRUE);
SHが所有するすべての索引を削除して、再作成を許可します。
exec dbms_auto_index.drop_auto_indexes('SH',NULL,TRUE);
HRが所有するすべての索引を削除して、再作成を禁止してから、再作成ステータスを変更して元のように許可します。
exec dbms_auto_index.drop_auto_indexes('HR',NULL); exec dbms_auto_index.drop_auto_indexes('HR', NULL, TRUE);
使用上のノート
- パラメータ所有者およびindex_nameの値が明示的に
NULL
に設定されている場合、ユーザーが権限を持つすべての自動索引が削除されます。 - 所有者が明示的に指定され、
index_name
がNULL
に設定されている場合、指定されたスキーマ内のすべての自動索引が削除されます。削除された索引は、デフォルトではシステムによって自動的に再作成されません。この動作を変更するには、allow_recreate
パラメータをTRUE
に設定します。 - このプロシージャは、削除された索引に関連付けられている
allow_recreate
ステータスをFALSE
からTRUE
に更新します。逆も同様です。
35.2.3 DROP_SECONDARY_INDEXESプロシージャ
このプロシージャでは、表またはスキーマから制約に使用されるもの以外のすべての索引を削除します。
構文
DBMS_AUTO_INDEX.DROP_SECONDARY_INDEXES (
ownname IN VARCHAR2 DEFAULT NULL,
tabname IN VARCHAR2 DEFAULT NULL);
パラメータ
表35-4 DROP_SECONDARY_INDEXESプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
(オプション)すべての索引を削除する必要があるスキーマの名前。 ノート: 制約に使用されている索引は削除されません。 |
|
(オプション)すべての索引を削除する必要がある表の名前。 ノート: 制約に使用されている索引は削除されません。 |
例
次の例では、SH
スキーマから制約に使用されるもの以外のすべての索引を削除します。
begin dbms_auto_index.drop_secondary_indexes('SH'); end;
次の例では、HR
スキーマのEMP
表から制約に使用されるもの以外のすべての索引を削除します。
begin dbms_auto_index.drop_secondary_indexes('HR', 'EMP'); end;
次の例では、データベース内のすべてのスキーマから、制約に使用されるもの以外のユーザーが削除権限を持つすべての索引を削除します。
begin dbms_auto_index.drop_secondary_indexes; end;
35.2.4 REPORT_ACTIVITYファンクション
このファンクションは、特定の期間中にデータベースで実行された自動索引付け操作のレポートを返します。
構文
DBMS_AUTO_INDEX.REPORT_ACTIVITY (
activity_start IN TIMESTAMP WITH TIME ZONE DEFAULT SYSTIMESTAMP - 1,
activity_end IN TIMESTAMP WITH TIME ZONE DEFAULT SYSTIMESTAMP,
type IN VARCHAR2 DEFAULT 'TEXT',
section IN VARCHAR2 DEFAULT 'ALL',
level IN VARCHAR2 DEFAULT 'TYPICAL')
RETURN CLOB;
パラメータ
表35-5 REPORT_ACTIVITYファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
実行された自動索引付け操作に関するレポートの対象になる開始時刻。 |
|
実行された自動索引付け操作に関するレポートの対象になる終了時刻。値が指定されていない場合は、現在の時刻が終了時刻とみなされます。 |
|
レポートの形式。次の値のうち1つを取ることができます。
デフォルト値は、 |
|
レポートに含めるセクション。次の値の組合せを指定できます。
次の例に示すように、これらの値の組合せは
|
|
レポートに含める自動索引付け情報のレベル。次の値のうち1つを取ることができます。
|
戻り値
指定した期間中にデータベースで実行された自動索引付け操作のレポート。
例
次の例では、過去24時間の間に実行された自動索引付け操作の一般的なレポートを生成します。レポートはテキスト形式で生成され、すべてのセクション(サマリーの詳細、自動索引の詳細、自動索引検証の詳細およびエラーの詳細)が含まれます。
declare report clob := null; begin report := dbms_auto_index.report_activity(); end;
35.2.5 REPORT_LAST_ACTIVITYファンクション
このファンクションは、データベースで最後に実行された自動索引付け操作のレポートを返します。
構文
DBMS_AUTO_INDEX.REPORT_LAST_ACTIVITY (
type IN VARCHAR2 DEFAULT 'TEXT',
section IN VARCHAR2 DEFAULT 'ALL',
level IN VARCHAR2 DEFAULT 'TYPICAL')
RETURN CLOB;
パラメータ
表35-6 REPORT_LAST_ACTIVITYファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
レポートの形式。次の値のうち1つを取ることができます。
デフォルト値は、 |
|
レポートに含めるセクション。次の値の組合せを指定できます。
次の例に示すように、これらの値の組合せは
|
|
レポートに含める自動索引付け情報のレベル。次の値のうち1つを取ることができます。
|
戻り値
データベースで最後に実行された自動索引付け操作のレポート。
例
次の例では、データベースで最後に実行された自動索引付け操作の一般的なレポートを生成します。レポートはテキスト形式で生成され、すべてのセクション(サマリーの詳細、自動索引の詳細、自動索引検証の詳細およびエラーの詳細)が含まれます。
declare report clob := null; begin report := dbms_auto_index.report_last_activity(); end;