2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Oracle Database]自動索引、自動パーティショニング、自動マテリアライズド・ビュー

Posted at

はじめに

Autonomous Database(ADB)では、Oracle Databaseの新機能を先行して取り入れています。
現在(2022年3月時点)ADBで使用できるOracle Databaseのバージョンは19cですが、先行して21cの新機能を取り入れています。
次の新機能について簡単にまとめました。

  • 自動索引(Automatic Indexing)
  • 自動パーティショニング(Automatic Partitioning)
  • 自動マテリアライズド・ビュー

自動索引(Automatic Indexing)

自動索引とは

  • Oracle Database 19cからの新機能(デフォルト:無効
  • アプリケーション・ワークロードを監視し、自動的に索引の作成や削除などの管理を行う
  • 従来手作業で行っていた次のプロセスを機械的に反復実施
    • 索引の作成 → 検証 → 評価 → 有効化 → 削除
  • 自動索引作成プロセスは15分ごとに実行
  • 19cまで
    • 自動索引の対象:スキーマレベル
  • 21cから
    • 自動索引の対象:表レベルで指定可能
    • スキーマレベルと表レベルで設定に差がある場合は表レベルの設定が優先される
      • 例:スキーマ単位では自動索引を無効にするが、特定の表のみで自動索引を有効にするケース

設定方法

DBMS_AUTO_INDEXパッケージのCONFIGUREプロシージャを使用して設定します。

  • 設定の確認
    • DBA_AUTO_INDEX_CONFIGビューで自動索引の設定を確認できます
      • DBA_INDEXESビューのAUTO列から索引が自動索引であるか確認できます
SELECT * FROM DBA_AUTO_INDEX_CONFIG;

AUTO_INDEX_MODEがOFF

                    PARAMETER_NAME    PARAMETER_VALUE                      LAST_MODIFIED         MODIFIED_BY 
__________________________________ __________________ __________________________________ ___________________ 
AUTO_INDEX_SCHEMA                                                                                            
AUTO_INDEX_DEFAULT_TABLESPACE                                                                                
AUTO_INDEX_SPACE_BUDGET            100                09-MAR-22 04.44.44.000000000 AM    C##CLOUD$SERVICE    
AUTO_INDEX_REPORT_RETENTION        373                09-MAR-22 04.44.44.000000000 AM    C##CLOUD$SERVICE    
AUTO_INDEX_RETENTION_FOR_AUTO      373                                                                       
AUTO_INDEX_RETENTION_FOR_MANUAL                                                                              
AUTO_INDEX_MODE                    OFF                                                                       
AUTO_INDEX_COMPRESSION             ON                 09-MAR-22 04.44.44.000000000 AM    C##CLOUD$SERVICE    

8 rows selected. 
  • DBでの自動索引の有効化
EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','IMPLEMENT');
SELECT * FROM DBA_AUTO_INDEX_CONFIG;

AUTO_INDEX_MODEがIMPLEMENTに変更された

                    PARAMETER_NAME    PARAMETER_VALUE                      LAST_MODIFIED         MODIFIED_BY 
__________________________________ __________________ __________________________________ ___________________ 
AUTO_INDEX_SCHEMA                                                                                            
AUTO_INDEX_DEFAULT_TABLESPACE                                                                                
AUTO_INDEX_SPACE_BUDGET            100                09-MAR-22 04.44.44.000000000 AM    C##CLOUD$SERVICE    
AUTO_INDEX_REPORT_RETENTION        373                09-MAR-22 04.44.44.000000000 AM    C##CLOUD$SERVICE    
AUTO_INDEX_RETENTION_FOR_AUTO      373                                                                       
AUTO_INDEX_RETENTION_FOR_MANUAL                                                                              
AUTO_INDEX_MODE                    IMPLEMENT          16-MAR-22 01.46.18.000000000 AM    ADMIN               
AUTO_INDEX_COMPRESSION             ON                 09-MAR-22 04.44.44.000000000 AM    C##CLOUD$SERVICE    

8 rows selected. 
AUTO_INDEX_MODEパラメーター 内容
IMPLEMENT 自動索引を有効化
REPORT ONLY 新規自動索引が不可視の索引として作成され、SQL文では使用できなくなる。
OFF 自動索引の無効化

※補足:ADBでは、自動索引を有効化すると、自動索引の索引圧縮(Advanced Compressionの機能)がデフォルト有効になります。

  • DBでの自動索引の無効化
EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','OFF');

※補足:自動索引を無効化すると、新規自動索引が作成されませんが、既存の自動索引は有効のままです。

  • スキーマ単位での有効/無効化の例
EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_SCHEMA', 'SR', TRUE);
EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_SCHEMA', 'SR', FALSE);
  • 表単位での有効/無効化の例
EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_TABLE', 'SH.SALES', TRUE);
EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_TABLE', 'SH.SALES', FALSE);

参考情報

自動パーティショニング(Automatic Partitioning)

自動パーティショニングとは

  • Oracle Database 19c からの新機能(デフォルト:無効
  • アプリケーション・ワークロードを監視し、自動的に表や索引にパーティションを作成
  • 自動パーティショニングプロセスは15分ごとに実行

設定方法

DBMS_AUTO_PARTITIONパッケージCONFIGUREプロシージャを使用して設定します。

SELECT * FROM DBA_AUTO_PARTITION_CONFIG;
                    PARAMETER_NAME    PARAMETER_VALUE                      LAST_MODIFIED    MODIFIED_BY 
__________________________________ __________________ __________________________________ ______________ 
AUTO_PARTITION_SCHEMA                                                                                   
AUTO_PARTITION_REPORT_RETENTION    90                                                                   
AUTO_PARTITION_MODE                OFF      
AUTO_PARTITION_TABLE               0                                                                    
  • 有効化
EXEC DBMS_AUTO_PARTITION.CONFIGURE('AUTO_PARTITION_MODE','IMPLEMENT');
SELECT * FROM DBA_AUTO_PARTITION_CONFIG;

AUTO_PARTITION_MODEがIMPLEMENTに変更された

                    PARAMETER_NAME    PARAMETER_VALUE                      LAST_MODIFIED    MODIFIED_BY 
__________________________________ __________________ __________________________________ ______________ 
AUTO_PARTITION_SCHEMA                                                                                   
AUTO_PARTITION_REPORT_RETENTION    90                                                                   
AUTO_PARTITION_MODE                IMPLEMENT          16-MAR-22 01.49.34.000000000 AM    ADMIN          
AUTO_PARTITION_TABLE               0                
AUTO_PARTITION_MODEパラメーター 内容
IMPLEMENT 自動パーティショニングを有効化
REPORT ONLY 自動パーティショニングによってレポートが生成されるが、既存表を変更しない(デフォルト値)
OFF 自動パーティショニングの無効化
  • 無効化
EXEC DBMS_AUTO_PARTITION.CONFIGURE('AUTO_PARTITION_MODE','OFF');
  • スキーマ単位での有効/無効化例
BEGIN
    DBMS_AUTO_PARTITION.CONFIGURE(
         PARAMETER_NAME  => 'AUTO_PARTITION_SCHEMA', 
         PARAMETER_VALUE => 'HR',
         ALLOW           => TRUE);
END;
/
BEGIN
    DBMS_AUTO_PARTITION.CONFIGURE(
         PARAMETER_NAME  => 'AUTO_PARTITION_SCHEMA', 
         PARAMETER_VALUE => 'HR',
         ALLOW           => FALSE);
END;
/

参考情報

自動マテリアライズド・ビュー

自動マテリアライズド・ビューとは

  • Oracle Database 21cの新機能
  • アプリケーション・ワークロードを監視し、マテリアライズド・ビュー(Mview)およびMViewログの作成やメンテナンスを自動化

設定方法

DBMS_AUTO_MVパッケージのCONFIGUREプロシージャを使用して設定します。

SELECT * FROM DBA_AUTO_MV_CONFIG;
  • 有効化
EXEC DBMS_AUTO_MV.CONFIGURE('AUTO_MV_MODE','IMPLEMENT');
AUTO_MV_MODEパラメーター 内容
IMPLEMENT 自動パーティショニングを有効化
REPORT ONLY 推奨次項が生成され、DBA_AUTO_MV_ANALYSIS_RECOMMENDATIONSを介してDBAが使用できるように内部リポジトリに格納
OFF 自動パーティショニングを無効化
  • 無効化
EXEC DBMS_AUTO_MV.CONFIGURE('AUTO_MV_MODE','OFF');
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?