ロールバック セグメントの作成と編集
ロールバック セグメントを使用すると、データベースで実行された DML トランザクション、たとえば SQL の削除、挿入、および更新操作などを元に戻す(ロールバック)ことができます。ロールバック セグメントのエントリには、トランザクションによって変更される前のデータベース レコードに関する情報が保存されます。
ロールバック セグメントは、次のデータベース プラットフォームでサポートされます。
- Oracle 7.x、8.x、9i、10g、11g、および 12c
ロールバック セグメントを作成または編集する
- モデル エクスプローラで、物理[メイン モデル]を展開します。[ロールバック セグメント]ノードを右クリックして、[ロールバック セグメントの作成]をクリックします。
- ロールバック セグメント ウィザードのステップを完了したら、[完了]をクリックするとロールバック セグメントが作成されます。
ヒント: 作成したロールバック セグメントを編集するには、ロールバック セグメントを右クリックして、ショートカット メニューの[ロールバック セグメントの編集]をクリックします。
以下では、ロールバック セグメント ウィザードのオプションの設定について説明します。
[名前]タブ
- [ロールバック セグメントをパブリックにしますか?]: このオプションを適用できるのは、パラレル サーバー環境で動作するデータベースのみです。パブリック ロールバック セグメントは、パラレル サーバー環境の任意のデータベース インスタンスによってオンラインにできます。プライベート ロールバック セグメントをオンラインにできるのは、そのロールバック セグメントが初期化ファイルで指定されているデータベース インスタンスだけです。
[ストレージ]タブ
- [ロールバック セグメントに割り当てるエクステント サイズ]:
複数のトランザクションの更新前イメージは、1 つのロールバック セグメントに記録されます。ただし、各トランザクションは 1 つのセグメントに完全に収まる必要があり、ロールバック セグメントのブロックは、そのブロックに書き込んだトランザクションがコミットされるまで上書きされません。したがって、ロールバック セグメントで、最長の実行クエリーの情報を保持するのに十分なサイズを確保する必要があります。さらに、「トランザクションの最大サイズ × トランザクションの同時実行数 ÷ ロールバック セグメントの数」の UNDO 情報を保持するのに十分なサイズも確保する必要があります。
- デフォルトのエクステント サイズは 5 データ ブロックです。デフォルトの最小エクステント サイズは 2 データ ブロックです。最大のエクステント サイズはオペレーティング システムによって違います。
- [ロールバック セグメントの最適サイズ]: エクステントの最適サイズは、ロールバック セグメントに最初に割り当てられた領域より少なくすることはできません。
- [ロールバック セグメントに割り当てるエクステントの最小値と最大値]: エクステントのデフォルトの最小値は 2 です。エクステントのデフォルトの最大値はオペレーティング システムによって違います。
[定義]タブ
ロールバック セグメントの定義を入力または編集します。対象データベースでサポートされる場合、SQL コードの生成時に、この定義がコメントとして追加されます。
[DDL]タブ
ロールバック セグメントの作成に使用する CREATE ROLLBACK SEGMENT 文が表示されます。モデルで選択されたデータベース プラットフォームに固有のパーサーを使用して、ロールバック セグメントを生成します。
[アタッチメントのバインド]タブ
アタッチメント(外部情報)をロールバック セグメントにバインドします。また、オブジェクトからアタッチメントを削除したり、アタッチメントのバインドのデフォルト値を上書きしたり、バインドされたアタッチメントの位置を変更することもできます。選択したアタッチメントのグリッド(画面の右側)に移動したアタッチメントの値をオーバーライドするには、対象となるアタッチメントの[値]フィールドをダブルクリックします。アタッチメントのデータ型に応じて、[上書き値エディタ]またはリスト ボックスが表示されます。アタッチメントは、[データ ディクショナリ]タブの[アタッチメント]フォルダに作成されます。詳細は、「データ モデルへの外部ドキュメントの関連付け」を参照してください。