注意: ロールバック・セグメントを使用せずに、自動UNDO管理モードでデータベースを実行することを強くお薦めします。ロールバック・セグメントは、以前のバージョンのOracle Databaseとの互換性に必要な場合以外は使用しないでください。自動UNDO管理の詳細は、『Oracle Database管理者ガイド』を参照してください。 |
用途
CREATE ROLLBACK SEGMENT
文を使用すると、ロールバック・セグメントを作成できます。ロールバック・セグメントとは、トランザクションによる変更を元に戻す(取り消す)ために必要なデータを格納する際にOracle Databaseが使用するオブジェクトです。
ここでは、データベースがロールバックUNDOモードで実行されている(初期化パラメータUNDO_MANAGEMENT
にMANUAL
を設定、またはすべて設定しない)ことを前提としています。データベースを自動UNDOモード(UNDO_MANAGEMENT
初期化パラメータを、デフォルト設定であるAUTO
に設定します)で実行している場合は、ロールバック・セグメントは使用できません。ただし、ロールバック・セグメントでのエラーの生成は抑制されます。
また、データベースにローカル管理SYSTEM
表領域がある場合、ディクショナリ管理表領域にロールバック・セグメントは作成できません。かわりに、自動UNDO管理機能を使用するか、またはローカル管理表領域を作成して、ロールバック・セグメントを保持する必要があります。
注意: 1つの表領域に複数のロールバック・セグメントを作成できます。一般に、複数のロールバック・セグメントがあると、パフォーマンスが向上します。
|
SYSTEM
以外の表領域のオブジェクトを使用する場合は、次の注意事項があります。
UNDO用にロールバック・セグメントを使用するには、1つ以上のロールバック・セグメント(SYSTEM
ロールバック・セグメント以外)がオンラインである必要があります。
自動UNDOモードでデータベースを実行するには、1つ以上のUNDO
表領域がオンラインである必要があります。
関連項目:
|
セマンティクス
PUBLIC
PUBLIC
を指定すると、ロールバック・セグメントがパブリックとなり、すべてのインスタンスに対して使用可能にできます。この句を省略した場合、ロールバック・セグメントはプライベートになり、インスタンスの初期化パラメータROLLBACK_SEGMENTS
で指定したインスタンスに対してのみ使用可能になります。
rollback_segment
作成するロールバック・セグメントの名前を指定します。
TABLESPACE
TABLESPACE
句を使用すると、ロールバック・セグメントが作成される表領域を指定できます。この句を省略した場合、ロールバック・セグメントはSYSTEM
表領域に作成されます。
注意: Oracle Databaseは、頻繁にロールバック・セグメントにアクセスする必要があります。そのため、明示的または(この句を省略して)暗黙的に、ロールバック・セグメントをSYSTEM 表領域に作成しないことをお薦めします。さらに、ロールバック・セグメントが含まれている表領域の競合を回避するために、この表領域には表、索引などの他のオブジェクトを含めないでください。また、エクステントの割当ておよび割当て解除は、最小限に抑える必要があります。
そのためには、自動割当てを使用禁止にしたローカル管理表領域にロールバック・セグメントを作成します。このような表領域は、 |
storage_clause
storage_clause
を使用すると、ロールバック・セグメントの記憶特性を指定できます。
storage_clause
のOPTIMAL
パラメータは、ロールバック・セグメントにのみ適用されるので、特に重要です。
storage_clause
のPCTINCREASE
パラメータは、CREATE ROLLBACK SEGMENT
では指定できません。
例
ロールバック・セグメントの作成例: 次の文は、適切に構成された表領域にデフォルトの記憶域値でロールバック・セグメントを作成します。
CREATE TABLESPACE rbs_ts DATAFILE 'rbs01.dbf' SIZE 10M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 100K; /* This example and the next will fail if your database is in automatic undo mode. */ CREATE ROLLBACK SEGMENT rbs_one TABLESPACE rbs_ts;
前述の文は、次の文と同じ結果になります。
CREATE ROLLBACK SEGMENT rbs_one TABLESPACE rbs_ts STORAGE ( INITIAL 10K );