2.404 UNDO_RETENTION
UNDO_RETENTION
には、UNDO保存の下限値(秒)を指定します。
特性 | 説明 |
---|---|
パラメータ・タイプ |
整数 |
デフォルト値 |
|
変更可能 |
|
PDBで変更可能 |
はい |
値の範囲 |
|
基本 |
いいえ |
Oracle RAC |
複数インスタンスには同じ値を指定することを推奨。 |
AUTOEXTEND
UNDO表領域と固定サイズのUNDO表領域の両方について、システムは少なくともこのパラメーターで指定された時間はUNDOを保持し、問合せのUNDO要件を満たすようにUNDO保持期間を自動的に調整します。
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;
関連項目:
-
UNDO表領域の作成方法の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
-
UNDOデータの管理の詳細は、『Oracle Database管理者ガイド』を参照してください。