日本語PDF

14.16 CREATE ROLLBACK SEGMENT

注意:

ロールバック・セグメントを使用せずに、自動UNDO管理モードでデータベースを実行することを強くお薦めします。ロールバック・セグメントは、以前のバージョンのOracle Databaseとの互換性に必要な場合以外は使用しないでください。自動UNDO管理の詳細は、『Oracle Database管理者ガイド』を参照してください。

目的

CREATE ROLLBACK SEGMENT文を使用すると、ロールバック・セグメントを作成できます。ロールバック・セグメントとは、トランザクションによる変更を元に戻す(取り消す)ために必要なデータを格納する際にOracle Databaseが使用するオブジェクトです。

ここでは、データベースがロールバックUNDOモードで実行されている(初期化パラメータUNDO_MANAGEMENTMANUALを設定、またはすべて設定しない)ことを前提としています。データベースを自動UNDOモード(UNDO_MANAGEMENT初期化パラメータを、デフォルト設定であるAUTOに設定します)で実行している場合は、ロールバック・セグメントは使用できません。ただし、ロールバック・セグメントでのエラーの生成は抑制されます。

また、データベースにローカル管理SYSTEM表領域がある場合、ディクショナリ管理表領域にロールバック・セグメントは作成できません。かわりに、自動UNDO管理機能を使用するか、またはローカル管理表領域を作成して、ロールバック・セグメントを保持する必要があります。

注意:

1つの表領域に複数のロールバック・セグメントを作成できます。一般に、複数のロールバック・セグメントがあると、パフォーマンスが向上します。

  • 表領域にロールバック・セグメントを追加する場合、表領域は必ずオンラインである必要があります。

  • ロールバック・セグメントを作成した場合、最初はオフライン状態になります。そのロールバック・セグメントをOracle Databaseインスタンスでトランザクション可能にする場合、ALTER ROLLBACK SEGMENT文を使用してオンラインの状態にしてください。データベース起動時に自動的にオンライン状態にする場合、初期化パラメータROLLBACK_SEGMENTの値にそのセグメントの名前を追加してください。

SYSTEM以外の表領域のオブジェクトを使用する場合は、次の注意事項があります。

  • UNDO用にロールバック・セグメントを使用するには、1つ以上のロールバック・セグメント(SYSTEMロールバック・セグメント以外)がオンラインである必要があります。

  • 自動UNDOモードでデータベースを実行するには、1つ以上のUNDO表領域がオンラインである必要があります。

関連項目:

前提条件

ロールバック・セグメントを作成するには、CREATE ROLLBACK SEGMENTシステム権限が必要です。

構文

セマンティクス

PUBLIC

PUBLICを指定すると、ロールバック・セグメントがパブリックとなり、すべてのインスタンスに対して使用可能にできます。この句を省略した場合、ロールバック・セグメントはプライベートになり、インスタンスの初期化パラメータROLLBACK_SEGMENTSで指定したインスタンスに対してのみ使用可能になります。

rollback_segment

作成するロールバック・セグメントの名前を指定します。名前は、「データベース・オブジェクトのネーミング規則」に指定されている要件を満たしている必要があります。

TABLESPACE

TABLESPACE句を使用すると、ロールバック・セグメントが作成される表領域を指定できます。この句を省略した場合、ロールバック・セグメントはSYSTEM表領域に作成されます。

注意:

Oracle Databaseは、頻繁にロールバック・セグメントにアクセスする必要があります。そのため、明示的または(この句を省略して)暗黙的に、ロールバック・セグメントをSYSTEM表領域に作成しないことをお薦めします。さらに、ロールバック・セグメントが含まれている表領域の競合を回避するために、この表領域には表、索引などの他のオブジェクトを含めないでください。また、エクステントの割当ておよび割当て解除は、最小限に抑える必要があります。

そのためには、自動割当てを使用禁止にしたローカル管理表領域にロールバック・セグメントを作成します。このような表領域は、EXTENT MANAGEMENT LOCAL句にUNIFORMを指定して作成します。AUTOALLOCATE設定はサポートされません。

関連項目:

CREATE TABLESPACE

storage_clause

storage_clauseを使用すると、ロールバック・セグメントの記憶特性を指定できます。

  • storage_clauseOPTIMALパラメータは、ロールバック・セグメントにのみ適用されるので、特に重要です。

  • storage_clausePCTINCREASEパラメータは、CREATE ROLLBACK SEGMENTでは指定できません。

関連項目:

storage_clause

ロールバック・セグメントの作成: 例

次の文は、適切に構成された表領域にデフォルトの記憶域値を含むロールバック・セグメントを作成します。

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 );