大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

ORACLEMASTER 備忘録6(11/11)

著者:伊関星児
公開日:2020/07/12
最終更新日:2020/07/12
カテゴリー:技術情報
タグ:

ORACLEMASTER 備忘録6(10/11)

 

続き

 

「UNDO保存期間の保証」オプション

UNDOデータは、UNDO保存期間であっても、UNDO表領域が不足した場合は上書きされることがある。

UNDOデータをUNDO保存期間中、必ず保持したい場合は、「UNDO保存期間の保証」オプションを有効にする。この場合は、指定したUNDO保存期間が保証されるため、UNDO表領域が不足しても、UNDO保存期間に達していないUNDOデータは上書きされない。ただし、このオプションを有効にすると、UNDO表領域の領域不足が原因で、トランザクション(DML操作)が失敗する可能性があるため注意が必要。このオプションはデフォルトでは“無効”。

UNDO保存期間の保証を有効にするには、UNDO表領域の作成時または変更時に「RETENTION GUARANTEE句」を指定する。また、UNDO保存期間の保証を無効にする際は「RETENTION NOGUARANTEE句」を使用する。

 

UNDOデータの管理

Oracle Database 12cでは「自動UNDO管理」がデフォルトのモード。

 

UNDOセグメントとUNDO表管理

自動UNDO管理では、UNDOデータは「UNDOセグメント」に格納され、UNDOセグメントは「UNDO表領域」という特別な表領域に格納される。

UNDO表領域がUNDOデータ専用の表領域。この表領域に表セグメントなどの他の種類のセグメントを作成することはできない。1つのインスタンスに対して、1つのUNDO表領域が必要。

データベース管理者はUNDO表領域を複数作成できるが、現行データベースのUNDO表領域としてアクティブにできるのは1つだけ。

UNDO表領域のUNDOセグメントは自動的に作成され、自動的にエクステントが割り当てられる。UNDOセグメントの所有者はSYSユーザーである。

 

自動UNDO管理

UNDOデータは不要になったら上書きされ、使用したセグメントの領域は「循環方式」で再利用される。

またUNDOデータは、基本的にはデータベースによって自動管理されるが、前述のフラッシュバック機能を使用する場合は、データベース管理者がUNDOデータの保存に関する設定を行って、長期間UNDOデータが保持されるように設定することで、フラッシュバック機能を正常に実行できるように運用・管理する。

自動UNDO管理では、データベースの自己チューニング機能によってUNDOデータの保存期間が決定される。この時、UNDO表領域のデータファイルのサイズが自動拡張可能か否かによって、以下のようなチューニングが実行される。

 

・自動拡張可能(AUTOEXTEND ON)

“自動拡張するUNDO表領域”。UNDO保存期間は、最も時間のかかる問合せよりもわずかに長くなるようにチューニングされる。

 

・自動拡張不可(AUTOEXTEND OFF)

“固定サイズのUNDO保存領域”。UNDO保存期間は、表領域のサイズと現行の負荷に対して最適な保存期間になるようにチューニングされる。一般的には上記の「自動拡張するUNDO表領域」よりも長期間UNDOデータが保持されるため、フラッシュバック機能を強化できる。

 

UNDO表領域が小さい場合

UNDO表領域が小さい場合、次のようなエラーが発生する可能性がある。この場合UNDO表領域を拡張する必要がある。

 

・新しいトランザクションに対応するUNDOデータを格納するための領域が足りてないことによる“DML文の失敗”

・UNDOデータの不足によって読取り一貫性が維持できないことによる、「スナップショットが古すぎます」のエラー発生

 

また、UNDOデータはトランザクションをロールバックする際だけではなく、フラッシュバック機能にも使用する。フラッシュバック機能を成功させるためには、UNDO表領域を十分な大きさに設定したうえで、次の観点で管理を行う。

 

・UNDO保存期間を構成する

・AUTOEXTEND ONの場合は表領域が方にならないように注意する

・UNDO表領域を固定サイズにする

・UNDOデータの不足による「スナップショットが古すぎます」エラーを回避する

 

UNDOアドバイザ

UNDO表領域を固定サイズにする際に、そのシステムにとって適切なサイズを決定するのは実際には難しい。トランザクションの長さ、アクセスするデータ量、問合せの実行時間などはシステムごとで異なるため、必要なUNDO領域のサイズもさまざまである。

UNDO表領域を固定サイズにする場合は、まず十分に時間をかけてデータベースの負荷状況を確認する。これによって、業務のワークロードを処理するために必要なUNDO表領域のサイズを判断できる。

 

UNDO表領域の算出

将来の長時間実行問合せやフラッシュバック操作に対応できる「UNDO表領域の最小サイズ」は、EM Expressの「UNDOアドバイザ」を使用して確認できる。

 

  • EM Expressの「記憶域」メニューから「UNDO管理」を選択
  • 「UNDO管理詳細」ページが表示される」上部右側に「UNDOアドバイザ」が表示される。このグラフからUNDO保存期間とUNDO表領域のサイズ要件を確認できる。
    上に戻る