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;
