ALTER ROLLBACK SEGMENT
ノート:
ロールバック・セグメントを使用せずに、自動UNDO管理モードでデータベースを実行することを強くお薦めします。ロールバック・セグメントは、以前のバージョンのOracle Databaseとの互換性に必要な場合以外は使用しないでください。自動UNDO管理の詳細は、『Oracle Database管理者ガイド』を参照してください。
目的
ALTER ROLLBACK SEGMENT
文を使用すると、ロールバック・セグメントのオンライン/オフライン切替え、記憶特性の変更、またはロールバック・セグメントの最適サイズまたは指定サイズへの縮小を行うことができます。
ここでは、データベースがロールバックUNDOモードで実行されている(初期化パラメータUNDO_MANAGEMENT
にMANUAL
を設定、またはすべて設定しない)ことを前提としています。データベースが自動UNDOモードで実行されている場合(初期化パラメータUNDO_MANAGEMENT
にデフォルト値のAUTO
を設定)、ユーザーが作成したロールバック・セグメントは意味を持ちません。
関連項目:
-
ロールバック・セグメントの作成については、「CREATE ROLLBACK SEGMENT」を参照してください。
-
UNDO_MANAGEMENT
パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。
前提条件
ALTER ROLLBACK SEGMENT
システム権限が必要です。
構文
セマンティクス
rollback_segment
既存のロールバック・セグメントの名前を指定します。
ONLINE
ONLINE
を指定すると、ロールバック・セグメントをオンラインにできます。ロールバック・セグメントを作成した場合、最初はオフライン状態になり、トランザクションに使用できなくなります。この句を指定した場合、ロールバック・セグメントはオンラインになり、インスタンスは、トランザクションに対してそのロールバック・セグメントを使用できるようになります。また、初期化パラメータROLLBACK_SEGMENTS
を使用すると、インスタンスの起動時にロールバック・セグメントをオンラインにできます。
関連項目:
OFFLINE
OFFLINE
を指定すると、ロールバック・セグメントをオフラインにできます。
-
ロールバック・セグメント内に、アクティブ・トランザクションのロールバックに必要な情報が含まれていない場合は、すぐにオフラインになります。
-
ロールバック・セグメントにアクティブ・トランザクションについての情報が含まれている場合、このロールバック・セグメントをその後のトランザクションに対して使用できないようにします。また、そのすべてのアクティブ・トランザクションがコミットまたはロールバックされた後、ロールバック・セグメントはオフラインになります。
オフラインになっているロールバック・セグメントは、どのインスタンスからもオンラインにできます。
ロールバック・セグメントがオンラインかオフラインかを確認するには、データ・ディクショナリ・ビューDBA_ROLLBACK_SEGS
のSTATUS
列を問い合せます。オンライン・ロールバック・セグメントの値はIN_USE
です。オフライン・ロールバック・セグメントの値はAVAILABLE
です。
ロールバック・セグメントのオフライン化の制限事項
SYSTEM
ロールバック・セグメントはオフラインにできません。
storage_clause
storage_clause
を使用すると、ロールバック・セグメントの記憶特性を変更できます。
ロールバック・セグメント記憶域の制限事項
INITIAL
パラメータの値は変更できません。ロールバック・セグメントがローカル管理表領域にある場合、変更可能な記憶域パラメータはOPTIMAL
のみです。ロールバック・セグメントがディクショナリ管理表領域にある場合、変更可能な記憶域パラメータは、NEXT
、MINEXTENTS
、MAXEXTENTS
およびOPTIMAL
のみです。
関連項目:
構文および追加情報については、「storage_clause」を参照してください。
SHRINK句
SHRINK
を指定すると、ロールバック・セグメントを最適サイズまたは指定サイズに縮小できます。縮小されるかどうか、および縮小量は、ロールバック・セグメントの使用可能領域およびアクティブ・トランザクションのロールバック・セグメント内での領域保持状態の状況によって異なります。
TO
size_clause
に値を指定しなかった場合、ロールバック・セグメントを作成したCREATE ROLLBACK SEGMENT
文のstorage_clause
のOPTIMAL
で指定した値が、デフォルトのサイズになります。OPTIMAL
値を指定しなかった場合、CREATE ROLLBACK SEGMENT
文のstorage_clause
のMINEXTENTS
で指定した値がデフォルトのサイズになります。
TO
size_clause
に値を指定するかどうかにかかわらず、次のことがいえます。
-
この文の実行時には、ロールバック・セグメントの縮小値が有効です。その後、サイズは
CREATE ROLLBACK SEGMENT
文のOPTIMAL
値に戻ります。 -
ロールバック・セグメントは、エクステント数2未満には縮小できません。
ロールバック・セグメントを縮小した後でロールバック・セグメントの実際のサイズを確認する場合は、DBA_SEGMENTS
ビューのBYTES
列、BLOCKS
列およびEXTENTS
列を問い合せます。
ロールバック・セグメントの縮小の制限事項
Oracle Real Application Clusters環境では、自分のインスタンスに対してオンラインになっているロールバック・セグメントのみを縮小できます。
関連項目:
この句の詳細は、「size_clause」および「ロールバック・セグメントのサイズ変更: 例」を参照してください。
例
次の例では、ロールバック・セグメントrbs_one
(「ロールバック・セグメントの作成: 例」で作成)を使用します。
ロールバック・セグメントのオンライン化: 例
この文は、ロールバック・セグメントrbs_one
をオンラインにします。
ALTER ROLLBACK SEGMENT rbs_one ONLINE;
ロールバック・セグメントのサイズ変更: 例
この文は、ロールバック・セグメントrbs_one
を縮小します。
ALTER ROLLBACK SEGMENT rbs_one SHRINK TO 100M;