ヘッダーをスキップ

Oracle Database 管理者ガイド
11gリリース1(11.1)

E05760-03
目次
目次
索引
索引

戻る 次へ

14 UNDOの管理

リリース11g からは、デフォルトのインストールで、Oracle DatabaseによってUNDOが自動的に管理されます。通常、DBAによる操作は不要です。ただし、インストールでOracle Flashback操作を使用する場合は、それらの操作が正常に終了するように、UNDO管理タスクをいくつか実行することが必要な場合があります。

この章の内容は次のとおりです。

UNDOの概要

Oracle Databaseでは、データベースの変更をロールバックまたは取り消すために使用する情報を作成して管理します。これらの情報は、主にコミットされる前のトランザクションの処理レコードから構成されます。これらのレコードを総称してUNDOと呼びます。

UNDOレコードは次の処理に使用されます。

ROLLBACK文を発行すると、コミットされていないトランザクションによってデータベースに加えられた変更が、UNDOレコードを使用して取り消されます。データベース・リカバリ時は、REDOログからデータファイルに適用されたコミットされていない変更が、UNDOレコードを使用してすべて取り消されます。UNDOレコードは、あるユーザーがデータを変更しているときに同じデータに同時にアクセスしようとしている別のユーザーのために、そのデータの変更前のイメージを維持することによって読込み一貫性を提供します。

自動UNDO管理の概念

この項では、自動UNDO管理の概念について説明します。この項の内容は、次のとおりです。

自動UNDO管理の概要

Oracleには、ロールバック情報と領域を管理するための、自動UNDO管理と呼ばれる完全に自動化されたメカニズムが用意されています。自動UNDO管理では、データベースによってUNDOセグメントがUNDO表領域で管理されます。リリース11g からは、新しくインストールされたデータベースに対して自動UNDO管理がデフォルト・モードになります。Database Configuration Assistant(DBCA)を使用してデータベースを作成すると、UNDOTBS1という自動拡張可能なUNDO表領域が自動的に作成されます。

UNDO表領域は明示的に作成することもできます。UNDO表領域の作成方法については「UNDO表領域の作成」を参照してください。

インスタンスが起動すると、データベースは最初に使用可能になったUNDO表領域を自動的に選択します。使用可能なUNDO表領域がない場合、インスタンスはUNDO表領域のない状態で起動し、UNDOレコードはSYSTEM表領域に格納されます。これはお薦めできません。アラート・ログ・ファイルには、システムがUNDO表領域のない状態で稼働していることを伝える警告メッセージが書き込まれます。

データベースに複数のUNDO表領域があるときは、必要に応じて、起動時に特定のUNDO表領域を使用するように指定することもできます。これには、次の例のように、UNDO_TABLESPACE初期化パラメータを設定します。

UNDO_TABLESPACE = undotbs_01

初期化パラメータで指定された表領域が存在しない場合、STARTUPコマンドは失敗します。Oracle Real Application Clusters環境でUNDO_TABLESPACEパラメータを使用すると、インスタンスに特定のUNDO表領域を割り当てることができます。

データベースは、手動UNDO管理モードで実行することもできます。このモードでは、UNDO領域がロールバック・セグメントを介して管理され、UNDO表領域は使用されません。


注意:

ロールバック・セグメントの領域管理は複雑です。データベースを自動UNDO管理モードのままにすることをお薦めします。  


次に、UNDO管理用の初期化パラメータの概要を示します。

初期化パラメータ  説明 

UNDO_MANAGEMENT  

AUTOまたはNULLの場合は、自動UNDO管理を使用可能にします。MANUALの場合は、手動UNDO管理モードを設定します。デフォルトはAUTOです。 

UNDO_TABLESPACE  

自動UNDO管理モードの場合のみ有効です(オプション)。UNDO表領域の名前を指定します。データベースに複数のUNDO表領域があり、データベース・インスタンスで特定のUNDO表領域を使用するように指定する場合にのみ使用します。 

自動UNDO管理が使用可能な場合は、初期化パラメータ・ファイルに手動UNDO管理に関するパラメータが含まれていても、それらは無視されます。


注意:

Oracle Databaseの以前のリリースでは、手動UNDO管理モードがデフォルトです。自動UNDO管理モードに変更するには、UNDO表領域を作成してからUNDO_MANAGEMENT初期化パラメータをAUTOに変更する必要があります。 Oracle Databaseがリリース9i 以上で、自動UNDO管理に変更する場合は、手順について『Oracle Databaseアップグレード・ガイド』を参照してください。

UNDO_MANAGEMENT初期化パラメータがNULLの場合、リリース11g 以上では自動UNDO管理モードにデフォルト設定されますが、以前のリリースでは手動UNDO管理モードにデフォルト設定されます。 したがって、以前のリリースをリリース11g にアップグレードする場合は注意が必要です。UNDO表領域のサイズの設定方法に関する情報など、自動UNDO管理モードに移行するための適切な方法について、『Oracle Databaseアップグレード・ガイド』を参照してください。 


関連項目:

UNDO管理で使用する初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。 

UNDOの保存期間

トランザクションがコミットされると、ロールバックまたはトランザクション・リカバリの実行にUNDOデータは不要になります。しかし、長時間実行の問合せ中にデータ・ブロックの変更前のイメージを生成する場合は、読込み一貫性を保証するために古いロールバック情報が必要になることがあります。また、いくつかのOracle Flashback機能を正常に終了させるには、古いロールバック情報が必要になる場合があります。このため、古いロールバック情報をできるかぎり長い期間保存することをお薦めします。

自動UNDO管理が使用可能な場合は、常に現在のUNDO保存期間が存在します。これは、Oracle Databaseが古いロールバック情報を上書きするまでの最小保存期間です。現在のUNDO保存期間よりも古い(コミット済の)ロールバック情報は、「期限切れ」と呼ばれ、その領域は新しいトランザクションで上書きできます。現在のUNDO保存期間内の古いロールバック情報は、「期限切れでない」と呼ばれ、読取り一貫性とOracle Flashback操作のために保存されます。

Oracle Databaseでは、UNDO表領域サイズとシステム・アクティビティに基づいて、UNDO保存期間を自動的にチューニングします。必要に応じてUNDO_RETENTION初期化パラメータを設定することで、最小UNDO保存期間(秒単位)を指定できます。次に、UNDO保存期間にこのパラメータが具体的にどのような影響を与えるかを説明します。

UNDOの保存期間の自動チューニング

Oracle Databaseでは、UNDO表領域の構成方法に基づいて、UNDO保存期間を自動的にチューニングします。

保存期間の保証

長時間実行される問合せやOracle Flashback操作を正常に終了させるために、保存期間の保証を有効化できます。保存期間の保証を有効にすると、指定したUNDOの最小保存期間が保証されます。つまり、UNDO表領域の領域不足によってトランザクションが失敗した場合でも、期限切れでないUNDOデータは上書きされません保存期間の保証を有効にしないと、領域が十分でない場合、期限切れでないUNDOが上書きされるため、システムのUNDO保存期間が短くなります。デフォルトでは、このオプションは無効になっています。


警告:

保存期間の保証を有効にすると、複数のDML操作が失敗する可能性があります。この機能は注意して使用してください。 


保存期間の保証を有効にするには、CREATE DATABASE文またはCREATE UNDO TABLESPACE文を使用してUNDO表領域を作成するときに、そのUNDO表領域に対してRETENTION GUARANTEE句を指定します。または、後でこの句をALTER TABLESPACE文で指定することもできます。保存期間の保証を無効にするには、RETENTION NOGUARANTEE句を使用します。

DBA_TABLESPACESビューを使用して、UNDO表領域の保存期間の保証の設定を確認できます。RETENTION列には、GUARANTEENOGUARANTEEまたはNOT APPLY(UNDO表領域以外の表領域で使用)の値が表示されます。

UNDOの保存期間のチューニングとアラートしきい値

固定サイズのUNDO表領域の場合、データベースでは、データベース統計とUNDO表領域のサイズに基づいて最適な保存期間を計算します。最適なUNDO管理を実現するために、データベースでは、UNDOの保存期間を、表領域サイズの100%ではなく、85%を基にチューニングするか、または使用済領域に対する警告アラートしきい値の率、あるいはいずれか低い方に基づいてチューニングします(警告アラートしきい値のデフォルトは85%ですが、変更できます)。したがって、UNDO表領域の警告アラートしきい値を85%未満に設定すると、チューニングされるUNDO保存期間のサイズが小さくなることがあります。表領域のアラートしきい値の詳細は、「表領域のアラートの管理」を参照してください。

チューニング済UNDO保存期間の追跡

現在の保存期間を判別するには、V$UNDOSTATビューのTUNED_UNDORETENTION列を問い合せます。このビューには、10分単位の統計収集間隔ごとに1行のデータが過去4日間まで表示されます(過去4日間より前のデータは、DBA_HIST_UNDOSTATビューに表示されます)。TUNED_UNDORETENTIONは秒数で表示されます。

select to_char(begin_time, 'DD-MON-RR HH24:MI') begin_time,
to_char(end_time, 'DD-MON-RR HH24:MI') end_time, tuned_undoretention
from v$undostat order by end_time;

BEGIN_TIME      END_TIME        TUNED_UNDORETENTION
--------------- --------------- -------------------
04-FEB-05 00:01 04-FEB-05 00:11               12100
      ...                                          
07-FEB-05 23:21 07-FEB-05 23:31               86700
07-FEB-05 23:31 07-FEB-05 23:41               86700
07-FEB-05 23:41 07-FEB-05 23:51               86700
07-FEB-05 23:51 07-FEB-05 23:52               86700

576 rows selected.

V$UNDOSTATの詳細は、『Oracle Databaseリファレンス』を参照してください。

最小UNDO保存期間の設定

最小UNDO保存期間(秒単位)を指定するには、UNDO_RETENTION初期化パラメータを設定します。「UNDOの保存期間」で説明されているように、現行のUNDO保存期間はUNDO_RETENTIONよりも大きくなるように、または保存期間の保証が有効な場合を除き、空き領域が少ない場合はUNDO_RETENTIONよりも少なくなるように自動的にチューニングされます。

最小UNDO保存期間の設定方法

UNDO_RETENTIONパラメータの変更は即時に反映されますが、その効果は、現行のUNDO表領域に十分な領域がある場合のみ表れます。

固定サイズのUNDO表領域のサイズ変更

UNDO保存期間の動的チューニングは、通常、固定サイズのUNDO表領域に有効です。 固定サイズの表領域を使用する場合は、UNDOアドバイザを使用すると、必要な容量を見積るのに役立ちます。UNDOアドバイザには、Enterprise ManagerまたはDBMS_ADVISOR PL/SQLパッケージを介してアクセスできます。このアドバイザには、Enterprise Managerを介してアクセスすることをお薦めします。 Enterprise Managerを介してUNDOアドバイザを使用する方法の詳細は、『Oracle Database 2日でデータベース管理者』を参照してください。

UNDOアドバイザは、自動ワークロード・リポジトリ(AWR)に収集されたデータに基づいて分析します。したがって、AWRで適切なワークロード統計を使用可能にし、UNDOアドバイザが正確な推奨事項を作成できるようにすることが重要です。新規作成したデータベースでは、適切な統計が即時に使用できない場合があります。 このような場合は、ワークロード・サイクルが1回以上完了するまで、引き続きデフォルトの自動拡張可能なUNDO表領域を使用します。

AWR統計の収集間隔と保存期間の調整は、アドバイザが作成する推奨事項の精度とタイプに影響します。 詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。

UNDOアドバイザを使用する場合は、最初に次の2つの値を見積ります。

次に、これら2つの値のうち最大値を選択し、その値をUNDOアドバイザへの入力として使用します。

UNDOアドバイザの実行によって、UNDO表領域のサイズは変更されません。アドバイザは推奨事項を単に返します。表領域のデータファイルを固定サイズに変更するには、ALTER DATABASE文を使用する必要があります。

次の例では、UNDO表領域にundotbs.dbfという自動拡張可能なデータファイルあると仮定します。この例では、表領域を300MBの固定サイズに変更します。

ALTER DATABASE DATAFILE '/oracle/dbs/undotbs.dbf' RESIZE 300M;
ALTER DATABASE DATAFILE '/oracle/dbs/undotbs.dbf' AUTOEXTEND OFF;


注意:

UNDO表領域を固定サイズに変更する場合は、データベースの作成後、最初に、全ワークロードが実行されるように十分な時間をとることをお薦めします。これによって、UNDO表領域をワークロードの処理に必要な最小サイズに設定できます。その後、必要に応じてUNDOアドバイザを使用すると、長時間実行される問合せやOracle Flashback操作に対応するために、UNDO表領域のサイズをどのくらい大きく設定するかを決定できます。 


関連項目:

UNDOアドバイザを使用してUNDO表領域の最小サイズを計算する手順は、『Oracle Database 2日でデータベース管理者』を参照してください。 

UNDOアドバイザのPL/SQLインタフェース

UNDOアドバイザをアクティブにするには、アドバイザ・フレームワークを使用してUNDOアドバイザ・タスクを作成します。次の例では、UNDO表領域を評価するためのUNDOアドバイザ・タスクを作成します。アドバイザの名前は'Undo Advisor'です。分析は自動ワークロード・リポジトリのスナップショットに基づいて実行されます。このスナップショットは、START_SNAPSHOTパラメータとEND_SNAPSHOTパラメータを設定して指定する必要があります。次の例では、START_SNAPSHOTが1で、END_SNAPSHOTは2です。

DECLARE
   tid    NUMBER;
   tname  VARCHAR2(30);
   oid    NUMBER;
BEGIN
   DBMS_ADVISOR.CREATE_TASK('Undo Advisor', tid, tname, 'Undo Advisor Task');
   DBMS_ADVISOR.CREATE_OBJECT(tname, 'UNDO_TBS', null, null, null, 'null', oid);
   DBMS_ADVISOR.SET_TASK_PARAMETER(tname, 'TARGET_OBJECTS', oid);
   DBMS_ADVISOR.SET_TASK_PARAMETER(tname, 'START_SNAPSHOT', 1);
   DBMS_ADVISOR.SET_TASK_PARAMETER(tname, 'END_SNAPSHOT', 2);
   DBMS_ADVISOR.SET_TASK_PARAMETER(tname, 'INSTANCE', 1);
   DBMS_ADVISOR.execute_task(tname);
END;
/

アドバイザ・タスクを作成した後は、Enterprise Managerの自動データベース診断モニターに出力および推奨事項を表示できます。 この情報は、DBA_ADVISOR_*データ・ディクショナリ・ビュー(DBA_ADVISOR_TASKSDBA_ADVISOR_OBJECTSDBA_ADVISOR_FINDINGSDBA_ADVISOR_RECOMMENDATIONSなど)にも表示されます。

関連項目:

  • 様々なアドバイザにアドバイザ・タスクを作成する例は、「セグメント・アドバイザの使用」を参照してください。

  • DBA_ADVISOR_*データ・ディクショナリ・ビューについては、『Oracle Databaseリファレンス』を参照してください。

 

UNDO表領域の管理

この項では、UNDO表領域を管理する際に必要な手順について説明します。この項の内容は、次のとおりです。

UNDO表領域の作成

Oracle Databaseリリース11g の新規インストールでは、Database Configuration Assistant(DBCA)によってUNDO表領域が自動的に作成されますが、UNDO表領域を手動で作成することが必要な場合があります。

UNDO表領域の作成には2つの方法があります。1つは、CREATE DATABASE文の発行時にUNDO表領域を作成する方法です。これは、データベースを新規作成中にインスタンスが自動UNDO管理モードで起動したとき(UNDO_MANAGEMENT = AUTO)に実行されます。もう1つは、既存のデータベースで使用する方法です。この場合はCREATE UNDO TABLESPACE文を使用します。

UNDO表領域にはデータベース・オブジェクトは作成できません。UNDO表領域は、システムが管理しているUNDOデータ用に予約されています。

Oracle Databaseでは、単一ファイルUNDO表領域を作成できます。単一ファイル(大型ファイル)表領域については、「大型ファイル表領域」を参照してください。

CREATE DATABASEを使用したUNDO表領域の作成

CREATE DATABASE文でUNDO TABLESPACE句を使用すると、特定のUNDO表領域を作成できます。

次の文は、CREATE DATABASE文でのUNDO TABLESPACE句の使用例を示しています。ここでは、UNDO表領域にundotbs_01という名前を付け、/u01/oracle/rbdb1/undo0101.dbfという1つのデータファイルを割り当てています。

CREATE DATABASE rbdb1
     CONTROLFILE REUSE
     .
     .
     .
     UNDO TABLESPACE undotbs_01 DATAFILE '/u01/oracle/rbdb1/undo0101.dbf';

CREATE DATABASEの実行中にUNDO表領域を正常に作成できない場合は、CREATE DATABASE操作全体が失敗します。データベース・ファイルをクリーン・アップし、エラーを訂正して、再度CREATE DATABASE操作を実行する必要があります。

また、データベース作成時に、CREATE DATABASE文を使用して単一ファイルUNDO表領域を作成できます。 この操作については、「データベース作成時の大型ファイル表領域のサポート」を参照してください。

関連項目:

CREATE DATABASE文を使用してUNDO表領域を作成する構文については、『Oracle Database SQLリファレンス』を参照してください。 

CREATE UNDO TABLESPACE文の使用

CREATE UNDO TABLESPACE文はCREATE TABLESPACE文とほぼ同じですが、UNDOキーワードを指定します。UNDO表領域の属性のほとんどはデータベースが決定しますが、データベース管理者はDATAFILE句を指定できます。

この例では、AUTOEXTENDオプションを使用してundotbs_02 UNDO表領域を作成しています。

CREATE UNDO TABLESPACE undotbs_02
     DATAFILE '/u01/oracle/rbdb1/undo0201.dbf' SIZE 2M REUSE AUTOEXTEND ON;

複数のUNDO表領域を作成できますが、UNDO表領域は1つのみアクティブにできます。

関連項目:

CREATE UNDO TABLESPACE文を使用してUNDO表領域を作成する構文については、『Oracle Database SQLリファレンス』を参照してください。 

UNDO表領域の変更

UNDO表領域を変更するには、ALTER TABLESPACE文を使用します。ただし、UNDO表領域のほとんどはシステムが管理しているため、考慮が必要になるのは次の操作のみです。

DBAが変更可能な属性もこれらの属性のみです。

UNDO表領域が領域不足の場合、または領域不足の発生を防止する場合は、さらにファイルを追加したり、既存のデータファイルのサイズを変更できます。

次の例では、UNDO表領域undotbs_01にデータファイルを1つ追加しています。

ALTER TABLESPACE undotbs_01
     ADD DATAFILE '/u01/oracle/rbdb1/undo0102.dbf' AUTOEXTEND ON NEXT 1M 
         MAXSIZE UNLIMITED;

ALTER DATABASE...DATAFILE文を使用すると、データファイルのサイズを変更または拡張できます。

関連項目:

 

UNDO表領域の削除

UNDO表領域を削除するには、DROP TABLESPACE文を使用します。次の例では、UNDO表領域undotbs_01を削除しています。

DROP TABLESPACE undotbs_01;

UNDO表領域は、現在どのインスタンスでも使用されていない場合にのみ削除できます。UNDO表領域に処理中のトランザクションが含まれている場合(トランザクションが失敗してまだリカバリされていない場合など)、DROP TABLESPACE文は失敗します。しかし、DROP TABLESPACEは、UNDO表領域に期限切れでない(保存期間内である)ロールバック情報が含まれている場合でもUNDO表領域を削除するため、既存の問合せでロールバック情報を必要とする場合は、UNDO表領域を削除しないように注意する必要があります。

UNDO表領域に対するDROP TABLESPACEは、DROP TABLESPACE...INCLUDING CONTENTSと同じように動作します。つまり、UNDO表領域の内容はすべて削除されます。

関連項目:

DROP TABLESPACEの構文については、『Oracle Database SQLリファレンス』を参照してください。 

UNDO表領域の切替え

あるUNDO表領域から別のUNDO表領域に切り替えることができます。UNDO_TABLESPACE初期化パラメータは動的パラメータであるため、ALTER SYSTEM SET文を使用して新しいUNDO表領域を割り当てることができます。

次の文は、新しいUNDO表領域に切り替えます。

ALTER SYSTEM SET UNDO_TABLESPACE = undotbs_02;

undotbs_01が現行のUNDO表領域であるとすると、このコマンドが正常に実行された後、インスタンスはundotbs_01のかわりにundotbs_02をUNDO表領域として使用します。

切替え先の表領域が次のいずれかの条件を満たす場合はエラーがレポートされ、切替えは行われません。

切替え操作が実行されている間、データベースはオンラインであり、このコマンドの実行中でもユーザー・トランザクションを実行できます。切替え操作が正常に完了すると、切替え操作開始後に開始されたすべてのトランザクションが新しいUNDO表領域内のトランザクション表に割り当てられます。

切替え操作は、古いUNDO表領域内のトランザクションがコミットされるまで待機しません。古いUNDO表領域内に未処理のトランザクションがある場合、古いUNDO表領域はPENDING OFFLINEモード(状態)になります。このモードでは、既存のトランザクションは引き続き実行できますが、新しいユーザー・トランザクションのUNDOレコードをこのUNDO表領域に格納することはできません。

UNDO表領域は、切替え操作が正常に完了した後も、このPENDING OFFLINEモードのまま存在できます。PENDING OFFLINEのUNDO表領域は、別のインスタンスが使用することも、削除することもできません。最終的に、すべてのアクティブなトランザクションがコミットされた後、UNDO表領域は自動的にPENDING OFFLINEモードからOFFLINEモードに移行します。それ以降は、他のインスタンスが(Oracle Real Application Clusters環境で)そのUNDO表領域を使用できます。

UNDO TABLESPACEのパラメータ値を「''」(2つの一重引用符)に設定した場合は、現行のUNDO表領域が次の使用可能なUNDO表領域に切り替えられます。使用可能なUNDO表領域がない場合もあるため、この文の使用には注意が必要です。

次の例では、現行のUNDO表領域の割当てを解除しています。

ALTER SYSTEM SET UNDO_TABLESPACE = '';

UNDO領域に対するユーザー割当ての確立

Oracle Database Resource Managerを使用すると、UNDO領域に対するユーザー割当てを確立できます。DBAは、データベース・リソース・マネージャのディレクティブUNDO_POOLを使用して、ユーザーのグループ(リソース・コンシューマ・グループ)が消費するUNDO表領域の量を制限できます。

UNDOプールは、コンシューマ・グループごとに指定できます。UNDOプールによって、コンシューマ・グループが生成できるUNDOの合計量が制御されます。コンシューマ・グループが生成するUNDOの合計量がそのUNDO制限を超えると、UNDOを生成している現行のUPDATEトランザクションが終了します。コンシューマ・グループの他のメンバーは、UNDO領域がプールから解放されるまで、新たに更新を実行できなくなります。

UNDO_POOLディレクティブが明示的に定義されていないときは、ユーザーは無制限にUNDO領域を使用できます。

関連項目:

第25章「Oracle Database Resource Managerを使用したリソース割当ての管理」 

UNDO表領域に対する領域のアラートしきい値の管理

Oracle Databaseでは、表領域に使用可能な領域が少なくなると事前にアラートが生成されるため、表領域のディスク領域の使用状況を管理するために役立ちます。UNDO表領域のアラートのしきい値の設定方法は、「表領域のアラートの管理」を参照してください。

Oracle Databaseでは、UNDO領域の事前アラート以外に、「スナップショットが古すぎます」エラーが発生するような長時間実行される問合せがシステムにある場合にもアラートが生成されます。過剰にアラートが生成されるのを防ぐため、長時間実行される問合せのアラートは24時間以上の間隔をおいて発行されます。アラートが生成された場合は、Enterprise Managerの「Undo Advisor」ページをチェックしてUNDO表領域に関する詳細情報を参照できます。

自動UNDO管理への移行

現在、ロールバック・セグメントを使用してUNDO領域を管理している場合は、データベースを自動UNDO管理に移行することをお薦めします。

詳細は、『Oracle Databaseアップグレード・ガイド』を参照してください。

UNDO領域のデータ・ディクショナリ・ビュー

ここでは、自動UNDO管理モードにおいてUNDO領域に関する情報を表示する際に役立つビューについて説明し、いくつかの例を示します。ここで紹介したビュー以外にも、表領域やデータファイルの情報を表示するビューを使用して、情報を取得できます。これらのビューの詳細は、「データファイルのデータ・ディクショナリ・ビュー」を参照してください。

UNDO表領域に関する領域情報を取得するために、次の動的パフォーマンス・ビューが役立ちます。

ビュー  説明 

V$UNDOSTAT  

UNDO領域の監視とチューニングのための統計情報が含まれます。このビューは、現行の作業負荷に必要なUNDO領域の量を見積る際に利用できます。また、データベースはこの情報を使用して、システム内のUNDOの使用方法をチューニングします。このビューの情報は、自動UNDO管理モードでのみ意味があります。  

V$ROLLSTAT  

自動UNDO管理モードの場合、このビューの情報は、UNDO表領域内のUNDOセグメントの動作を反映します。 

V$TRANSACTION  

UNDOセグメント情報が含まれます。 

DBA_UNDO_EXTENTS  

UNDO表領域内の各エクステントの状態およびサイズを示します。 

DBA_HIST_UNDOSTAT 

V$UNDOSTAT情報の統計スナップショットが含まれます。詳細は、『Oracle Database 2日でデータベース管理者』を参照してください。 

関連項目:

自動UNDO管理モードで使用するビューの詳細は、『Oracle Databaseリファレンス』を参照してください。 

V$UNDOSTATビューは、現行インスタンス内のUNDO領域におけるトランザクションの実行の効果を監視する際に役立ちます。UNDO領域の消費、トランザクションの同時実行性、UNDO保存期間のチューニング、インスタンス内の長時間実行される問合せの長さおよびSQL IDに関する統計が使用できます。

ビュー内の各行には、インスタンス内で10分ごとに収集された統計が表示されます。行は、BEGIN_TIME列の値の降順に並びます。各行は、BEGIN_TIMEEND_TIMEによってマーク付けされた時間間隔に基づいています。各列は、その時間間隔で収集された特定の統計データを表します。ビューの最初の行には、(部分的な)現在の時間間隔に対応する統計が含まれます。ビューには、4日周期にわたる合計576の行があります。

次の例は、V$UNDOSTATビューに対する問合せの結果を示したものです。

  SELECT TO_CHAR(BEGIN_TIME, 'MM/DD/YYYY HH24:MI:SS') BEGIN_TIME,
TO_CHAR(END_TIME, 'MM/DD/YYYY HH24:MI:SS') END_TIME,
UNDOTSN, UNDOBLKS, TXNCOUNT, MAXCONCURRENCY AS "MAXCON"
FROM v$UNDOSTAT WHERE rownum <= 144;

BEGIN_TIME END_TIME UNDOTSN UNDOBLKS TXNCOUNT MAXCON
------------------- ------------------- ---------- ---------- ---------- ----------
10/28/2004 14:25:12 10/28/2004 14:32:17 8 74 12071108 3
10/28/2004 14:15:12 10/28/2004 14:25:12 8 49 12070698 2
10/28/2004 14:05:12 10/28/2004 14:15:12 8 125 12070220 1
10/28/2004 13:55:12 10/28/2004 14:05:12 8 99 12066511 3
...
10/27/2004 14:45:12 10/27/2004 14:55:12 8 15 11831676 1
10/27/2004 14:35:12 10/27/2004 14:45:12 8 154 11831165 2

144 rows selected.

この例は、10/27/2004の14:35:12から24時間前までの間に、システムでUNDO領域がどのように消費されたのかを示しています。


戻る 次へ
Oracle
Copyright © 2001, 2008, Oracle Corporation.
All Rights Reserved.
目次
目次
索引
索引