CREATE ROLLBACK SEGMENT
ノート:
ロールバック・セグメントを使用せずに、自動UNDO管理モードでデータベースを実行することを強くお薦めします。ロールバック・セグメントは、以前のバージョンのOracle Databaseとの互換性に必要な場合以外は使用しないでください。自動UNDO管理の詳細は、『Oracle Database管理者ガイド』を参照してください。
目的
CREATE ROLLBACK SEGMENT
文を使用すると、ロールバック・セグメントを作成できます。ロールバック・セグメントとは、トランザクションによる変更を元に戻す(取り消す)ために必要なデータを格納する際にOracle Databaseが使用するオブジェクトです。
ここでは、データベースがロールバックUNDOモードで実行されている(初期化パラメータUNDO_MANAGEMENT
にMANUAL
を設定、またはすべて設定しない)ことを前提としています。データベースを自動UNDOモード(UNDO_MANAGEMENT
初期化パラメータを、デフォルト設定であるAUTO
に設定します)で実行している場合は、ロールバック・セグメントは使用できません。ただし、ロールバック・セグメントでのエラーの生成は抑制されます。
また、データベースにローカル管理SYSTEM
表領域がある場合、ディクショナリ管理表領域にロールバック・セグメントは作成できません。かわりに、自動UNDO管理機能を使用するか、またはローカル管理表領域を作成して、ロールバック・セグメントを保持する必要があります。
ノート:
1つの表領域に複数のロールバック・セグメントを作成できます。一般に、複数のロールバック・セグメントがあると、パフォーマンスが向上します。
-
表領域にロールバック・セグメントを追加する場合、表領域は必ずオンラインである必要があります。
-
ロールバック・セグメントを作成した場合、最初はオフライン状態になります。そのロールバック・セグメントをOracle Databaseインスタンスでトランザクション可能にする場合、
ALTER ROLLBACK SEGMENT
文を使用してオンラインの状態にしてください。データベース起動時に自動的にオンライン状態にする場合、初期化パラメータROLLBACK_SEGMENT
の値にそのセグメントの名前を追加してください。
SYSTEM
以外の表領域のオブジェクトを使用するには:
-
UNDO用にロールバック・セグメントを使用するには、1つ以上のロールバック・セグメント(
SYSTEM
ロールバック・セグメント以外)がオンラインである必要があります。 -
自動UNDOモードでデータベースを実行するには、1つ以上の
UNDO
表領域がオンラインである必要があります。
関連項目:
-
ロールバック・セグメントの変更については、「ALTER ROLLBACK SEGMENT」を参照してください。
-
ロールバック・セグメントの削除については、「DROP ROLLBACK SEGMENT」を参照してください。
-
UNDO_MANAGEMENT
パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。 -
自動UNDOモードの詳細は、『Oracle Database管理者ガイド』を参照してください。
前提条件
ロールバック・セグメントを作成するには、CREATE ROLLBACK SEGMENT
システム権限が必要です。
構文
セマンティクス
PUBLIC
PUBLIC
を指定すると、ロールバック・セグメントがパブリックとなり、すべてのインスタンスに対して使用可能にできます。この句を省略した場合、ロールバック・セグメントはプライベートになり、インスタンスの初期化パラメータROLLBACK_SEGMENTS
で指定したインスタンスに対してのみ使用可能になります。
rollback_segment
作成するロールバック・セグメントの名前を指定します。名前は、「データベース・オブジェクトのネーミング規則」に指定されている要件を満たしている必要があります。
TABLESPACE
TABLESPACE
句を使用すると、ロールバック・セグメントが作成される表領域を指定できます。この句を省略した場合、ロールバック・セグメントはSYSTEM
表領域に作成されます。
ノート:
Oracle Databaseは、頻繁にロールバック・セグメントにアクセスする必要があります。そのため、明示的または(この句を省略して)暗黙的に、ロールバック・セグメントをSYSTEM
表領域に作成しないことをお薦めします。さらに、ロールバック・セグメントが含まれている表領域の競合を回避するために、この表領域には表、索引などの他のオブジェクトを含めないでください。また、エクステントの割当ておよび割当て解除は、最小限に抑える必要があります。
そのためには、自動割当てを使用禁止にしたローカル管理表領域にロールバック・セグメントを作成します。このような表領域は、EXTENT MANAGEMENT LOCAL
句にUNIFORM
を指定して作成します。AUTOALLOCATE
設定はサポートされません。
関連項目:
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 );