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

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

ORACLEMASTER 備忘録6(10/11)

株式会社クローバーフィールドの経営理念
著者:伊関星児
公開日:2020/07/11
最終更新日:2020/07/11
カテゴリー:技術情報

ORACLEMASTER 備忘録6(9/11)

 

続き

データの整合性保持のための構造管理

ここでは、Oracleデータベースでトランザクションを実行する際の特徴的な機能である「UNDO」について説明する。Oracle Database 12cでは、デフォルトでUNDOデータが自動管理されている。

 

UNDOデータとは

「UNDOデータ」とは、トランザクションによってデータの変更が行われる前に、データベースによって取得される“データのコピー”である。

 

UNDOデータの目的

UNDOデータは次の目的のために使用される。

・ロールバック操作

・読み取り一貫性

・フラッシュバック機能

・データベースのリカバリ

 

ロールバック操作

ロールバック操作は、データベースに対して行われた“「コミットされてない変更」を元に戻す操作”である。ロールバック操作は、ユーザーのトランザクションによってROLLBACK文が実行されるのをはじめ、障害が起こったときのリカバリ操作時にOracleデータベースによって自動的に実行される場合もある。

Oracleデータベースは、UNDOデータを使用してロールバック操作を行う。アクティブトランザクション(まだコミットされていないトランザクション)で使用されているUNDOデータは、“そのトランザクションがコミットされるまで上書きされない”。

 

読み取り一貫性

読み取り一貫性は、ユーザーがデータを問合せ中にそのデータに対して別の変更が行われても、問合せているユーザーは一貫したデータを見ることができるという機能。

例えば、ユーザーが午後九時に問い合わせを発行し、その問合せが10分間続いた場合を考える。問合せ中の表に対して他のユーザーが更新や挿入などの変更操作を行っても、問合せ結果は午後九時時点の、一貫したデータの状態を取得できる。Oracleデータベースでは、読み取り一貫性はUNDOデータによって実現されている。

 

フラッシュバック機能

「フラッシュバック機能」とは、コミット済みのデータを過去のある時点のデータの表示やリカバリを行う機能。フラッシュバック機能には「フラッシュバック問合せ」「フラッシュバック・トランザクション」「フラッシュバック表」など、いくつかの種類があり、一部のフラッシュバック機能はUNDOデータを使用している。

 

データベースのリカバリ

障害の起こった後の「リカバリ操作」では、UNDOデータを使用して、障害発生時にコミットされていなかったトランザクションをロールバックする。

 

UNDOの保存期間

現在実行中のトランザクションが使用しているUNDOデータは、その“トランザクションがコミットされるまで上書きされない”。

また基本的には、トランザクションがコミットするとそのUNDOデータが占有している領域は再利用可能になるが、「UNDO保存期間」中は、トランザクションのコミット後も一定期間は再利用されず、UNDOデータは保持される。

UNDO保存期間は、「自動UNDO管理」が行われているデータベースでは自動的にチューニングされる。トランザクションがコミット済みであっても、経過時間がUNDO保存期間に達してないUNDOデータについては、フラッシュバック機能や読み取り一貫性で使用できるように、できる限り保持される(必ず保持されるわけではない)。

また、自動拡張するUNDO表領域を使用している場合は、UNDO保存期間の下限値(秒)を「UNDO_RETENTION初期化パラメータ」で指定できる。

 

    上に戻る