1.359 UNDO_RETENTION

UNDO_RETENTIONには、UNDO保存の下限値(秒)を指定します。

特性 説明

パラメータ・タイプ

整数

デフォルト値

900

変更可能

ALTER SYSTEM

PDBで変更可能

はい

値の範囲

0から231 - 1

基本

いいえ

Oracle RAC

複数インスタンスには同じ値を指定することを推奨。

Oracle Databaseリリース19cバージョン19.7以降では、AUTOEXTEND UNDO表領域と固定サイズのUNDO表領域の両方で、UNDOは、このパラメータに指定した時間以上に保存され、問合せに対するUNDO要件にあわせてUNDO保存期間が自動的にチューニングされます。

以前のバージョンのOracle Databaseリリース19cでは、これら2つのタイプのUNDO表領域で動作が異なります。AUTOEXTEND UNDO表領域の場合、UNDOは、このパラメータに指定した時間以上に保存され、問合せに対するUNDO要件にあわせてUNDO保存期間が自動的にチューニングされます。固定サイズのUNDO表領域の場合、UNDO表領域のサイズおよび使用履歴に基づいて、可能な最長のUNDO保存期間に自動的にチューニングされます。また、その表領域に対して保存保証が有効になっている場合を除き、UNDO_RETENTIONは無視されます。

UNDO保存の自動チューニングは、LOBに対してサポートされていません。LOB列のRETENTION値は、UNDO_RETENTIONパラメータの値に設定されます。

UNDO_RETENTIONパラメータは、現行のUNDO表領域に十分な領域がある場合にのみ有効です。アクティブ・トランザクションにUNDO領域が必要で、UNDO表領域に空きがない場合、期限切れ前のUNDO領域を再利用して、システムが起動します。この操作により、一部の問合せが正常に実行されず、「スナップショットが古すぎます」というメッセージが表示される場合があります。

現行のUNDO表領域に対してUNDOがOracle Databaseで保存される時間は、V$UNDOSTAT動的パフォーマンス・ビューのTUNED_UNDORETENTION列に問い合せて取得できます。

UNDO_RETENTIONの変更に関する推奨事項

通常は、UNDO_RETENTIONをデフォルト値に設定しておくことをお薦めします。このパラメータの変更は、次の状況でのみお薦めします。

  • Oracle Flashback Queryなどのフラッシュバック機能を使用する場合は、システムで最も長く実行されている問合せよりも長くUNDOを保存する必要があるため、UNDO_RETENTIONの値を大きくする必要があることがあります。

  • Oracle Active Data Guard環境では、スタンバイ・インスタンスでのUNDO保存要件に対応するために、プライマリ・インスタンスでのUNDO_RETENTIONの値を大きくする必要があることがあります。これにより、プライマリ・インスタンスで、スタンバイ・インスタンスで問合せを処理する時間より長くUNDOを保存できます。詳細は、『Oracle Database管理者ガイド』および『Oracle Data Guard概要および管理』を参照してください。

CDBでのUNDO_RETENTIONの変更

CDBルート(CDB$ROOT)および個々のPDBで、UNDO_RETENTIONの値を設定できます。CDBルートとPDBで、値を同じにすることも別々にすることもできます。なお、PDBでこのパラメータを変更できるのは、PDBがローカルUNDOモードである場合のみです。PDBが共有UNDOモードである場合、このパラメータは変更できません。

Oracle Databaseリリース19cバージョン19.9以降では、CDBでのUNDO_RETENTIONの値は継承されません。したがって、CDBルートでUNDO_RETENTIONの値を変更しても、PDBではその新しい値は継承されません。PDBレベルでUNDO_RETENTIONの値を変更する必要がある場合は、明示的に変更する必要があります。たとえば、CDBに2つのPDB (PDB1およびPDB2)が含まれている場合は、次のように、CDBルートと両方のPDBでUNDO_RETENTIONを2000に設定できます。

ALTER SESSION SET CONTAINER = CDB$ROOT;
ALTER SYSTEM SET UNDO_RETENTION=2000 SCOPE=BOTH;

ALTER SESSION SET CONTAINER = PDB1;
ALTER SYSTEM SET UNDO_RETENTION=2000 SCOPE=BOTH;

ALTER SESSION SET CONTAINER = PDB2;
ALTER SYSTEM SET UNDO_RETENTION=2000 SCOPE=BOTH;

関連項目: