はじめに
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列から索引が自動索引であるか確認できます
-
DBA_INDEXESビューの
-
DBA_AUTO_INDEX_CONFIGビューで自動索引の設定を確認できます
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);
参考情報
- マニュアル
- ADBのマニュアル:Autonomous Databaseでの自動索引作成の管理
- 21cマニュアル:20.7 自動索引の管理
- Speak Deck:[TechNight #50] Oracle Database 21c 新機能解説 第2回 (前半パート)
- Oracle Database Technology Night:Autonomatic Indexingはいかに運用/チューニングをかえるのか
自動パーティショニング(Automatic Partitioning)
自動パーティショニングとは
- Oracle Database 19c からの新機能(デフォルト:無効)
- アプリケーション・ワークロードを監視し、自動的に表や索引にパーティションを作成
- 自動パーティショニングプロセスは
15分ごとに実行
設定方法
DBMS_AUTO_PARTITIONパッケージのCONFIGUREプロシージャを使用して設定します。
- 設定の確認
- DBA_AUTO_PARTITION_CONFIGビューで確認できます。
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;
/
参考情報
-
マニュアル
- ADBのマニュアル:Autonomous Databaseでの自動パーティション化の管理
-
Qiita
自動マテリアライズド・ビュー
自動マテリアライズド・ビューとは
- Oracle Database 21cの新機能
- アプリケーション・ワークロードを監視し、マテリアライズド・ビュー(Mview)およびMViewログの作成やメンテナンスを自動化
設定方法
DBMS_AUTO_MVパッケージのCONFIGUREプロシージャを使用して設定します。
- 確認方法
- DBA_AUTO_MV_CONFIGビューで確認できます。
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');