31 DBMS_AUTO_INDEX
DBMS_AUTO_INDEXパッケージは、Oracleデータベースの自動索引を管理するためのインタフェースを提供します。
               
この章のトピックは、次のとおりです:
31.1 DBMS_AUTO_INDEXの概要
DBMS_AUTO_INDEXパッケージは、自動索引を構成して、Oracleデータベースでの自動索引付け操作のレポートを生成するためのインタフェースです。
               
31.2 DBMS_AUTO_INDEXサブプログラムの要約
この表は、DBMS_AUTO_INDEXパッケージのサブプログラムを示し、簡単に説明しています。
                  
表31-1 DBMS_AUTO_INDEXパッケージのサブプログラム
| プロシージャ | 説明 | 
|---|---|
| 
                                  自動索引付けに関連する設定を構成します。  | 
                           |
| DROP_AUTO_INDEXESプロシージャ | 
                                 
                                  このプロシージャを使用して、保存パラメータの設定をオーバーライドする自動作成索引を手動で削除できます。  | 
                           
| 
                                  スキーマまたは表から、制約に使用されるもの以外のすべての索引を削除します。  | 
                           |
| 
                                  特定の期間中にデータベースで実行された自動索引付け操作のレポートを返します。  | 
                           |
| 
                                  データベースで最後に実行された自動索引付け操作のレポートを返します。  | 
                           
31.2.1 CONFIGUREプロシージャ
このプロシージャでは、自動索引付けに関連する設定を構成します。
構文
DBMS_AUTO_INDEX.CONFIGURE (
   parameter_name         IN VARCHAR2,
   parameter_value        IN VARCHAR2,
   allow                  IN BOOLEAN  DEFAULT TRUE);パラメータ
表31-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;31.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);
パラメータ
表31-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に更新します。逆も同様です。 
31.2.3 DROP_SECONDARY_INDEXESプロシージャ
このプロシージャでは、表またはスキーマから制約に使用されるもの以外のすべての索引を削除します。
構文
DBMS_AUTO_INDEX.DROP_SECONDARY_INDEXES (
   ownname    IN  VARCHAR2 DEFAULT NULL,
   tabname    IN  VARCHAR2 DEFAULT NULL);
パラメータ
表31-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;31.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;パラメータ
表31-5 REPORT_ACTIVITYファンクションのパラメータ
| パラメータ | 説明 | 
|---|---|
| 
                                        
  | 
                                    
                                        実行された自動索引付け操作に関するレポートの対象になる開始時刻。  | 
                                 
| 
                                        
  | 
                                    
                                        実行された自動索引付け操作に関するレポートの対象になる終了時刻。値が指定されていない場合は、現在の時刻が終了時刻とみなされます。  | 
                                 
| 
                                        
  | 
                                    
                                        レポートの形式。次の値のうち1つを取ることができます。 
 デフォルト値は、  | 
                                 
| 
                                        
  | 
                                    
                                        レポートに含めるセクション。次の値の組合せを指定できます。 
 次の例に示すように、これらの値の組合せは 
  | 
                                 
| 
                                        
  | 
                                    
                                        レポートに含める自動索引付け情報のレベル。次の値のうち1つを取ることができます。 
  | 
                                 
戻り値
指定した期間中にデータベースで実行された自動索引付け操作のレポート。
例
次の例では、過去24時間の間に実行された自動索引付け操作の一般的なレポートを生成します。レポートはテキスト形式で生成され、すべてのセクション(サマリーの詳細、自動索引の詳細、自動索引検証の詳細およびエラーの詳細)が含まれます。
declare report clob := null; begin report := dbms_auto_index.report_activity(); end;
31.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;パラメータ
表31-6 REPORT_LAST_ACTIVITYファンクションのパラメータ
| パラメータ | 説明 | 
|---|---|
| 
                                        
  | 
                                    
                                        レポートの形式。次の値のうち1つを取ることができます。 
 デフォルト値は、  | 
                                 
| 
                                        
  | 
                                    
                                        レポートに含めるセクション。次の値の組合せを指定できます。 
 次の例に示すように、これらの値の組合せは 
  | 
                                 
| 
                                        
  | 
                                    
                                        レポートに含める自動索引付け情報のレベル。次の値のうち1つを取ることができます。 
  | 
                                 
戻り値
データベースで最後に実行された自動索引付け操作のレポート。
例
次の例では、データベースで最後に実行された自動索引付け操作の一般的なレポートを生成します。レポートはテキスト形式で生成され、すべてのセクション(サマリーの詳細、自動索引の詳細、自動索引検証の詳細およびエラーの詳細)が含まれます。
declare report clob := null; begin report := dbms_auto_index.report_last_activity(); end;