• ベストアンサー

ロールバックについて

NAATANの回答

  • NAATAN
  • ベストアンサー率33% (57/170)
回答No.3

あくまでも情報処理試験対策として私が勉強し、理解している範囲でのお答えになりますが。 チェックポイント時にはトランザクションが開始されていない。ということは、DBが更新されていない。ということになります。 「ログファイルの更新前情報によってロールバックする」ということは、トランザクション開始前の状態にするということになりますので、その後はトランザクションの再処理によって、障害発生時の状態まで戻します。

flamer
質問者

お礼

ご返答ありがとうございます。 ロールバック自体はなんとなくわかるのですが、更新前情報がログファイルに書き出されるタイミングが気になったので・・・。 質問が分かりづらくてすみません。

関連するQ&A

  • チェックポイントとロールバックのタイミングについて。

    下記のパターンの際に、transaction logファイルに書き込まれるのか否かを教えて下さい。 A:チェックポイントをまたがったトランザクションで完了後にシステム障害が発生した場合。 =>私の認識では、ロールフォワードによって、データベースとtransaction logファイルにデータが書き込まれる。と考えているのですが、正しいでしょうか? B:チェックポイントを一度も通らずに、トランザクションが完了。完了後にシステム障害が発生。 =>Aと同じですか? C:トランザクション実行中にシステム障害が発生した場合。 =>ロールバックされて、transaction logファイルにのみ書き込まれて、データベースには書き込まれない。というのは正しいでしょうか? よろしくお願いします^^

  • ロールバックとチェックポイント関連で質問です。

    下記のパターンの際に、transaction logファイルに書き込まれるのか否かを教えて下さい。 A:チェックポイントをまたがったトランザクションで完了後にシステム障害が発生した場合。 =>私の認識では、ロールフォワードによって、データベースとtransaction logファイルにデータが書き込まれる。と考えているのですが、正しいでしょうか? B:チェックポイントを一度も通らずに、トランザクションが完了。完了後にシステム障害が発生。 =>Aと同じですか? C:トランザクション実行中にシステム障害が発生した場合。 =>ロールバックされて、transaction logファイルにのみ書き込まれて、データベースには書き込まれない。というのは正しいでしょうか? よろしくお願いします^^

  • ロールバックとロールフォワード(データベーススペシャリスト試験)

      t0  t1  t2   t3   t4   t5         |           | A s---e  |           |         |           | B s-------------e       |         |           | C s------------------------|         |           | D       |   s----e   |         |           | E       |   s---------| 図がずれていたらごめんなさい。 A~Eはトランザクション sはトランザクション開始 eはコミット t0~t5は時間を表していて 時間t2でチェックポイント 時間t5で障害が発生したとします。 参考書によると復旧時に CとEはロールバックを行い、 BとDはロールフォワードを行うとあります。 B、C、Dはわかるのですが Eにロールバックが必要な理由がわかりません Eを再び実行するためにはデータは トランザクションを開始したt3時点の状態であればよいはずです。 そしてチェックポイント(=t2)の状態はt3と同じなので、 Eの更新前ファイルを使ってデータをロールバックする必要はないように思えます。 どこで間違っているでしょうか。。。

  • トランザクションを張って対話型でのコミット・ロール

    トランザクションを張って更新処理を行った後に、 ユーザの「はい」「いいえ」ボタンによって、 トランザクションのコミットとロールバックを切り替えることは可能でしょうか。 処理の流れは以下の様になります。 1.データ更新前の値を取得 2.トランザクションの開始 3.データ更新 4.データ更新前の値とデータ更新後の値を比較して、   差分がある場合は確認メッセージを表示する。 5.確認メッセージで「はい」がクリックされた場合はコミットする。 6.確認メッセージで「いいえ」がクリックされた場合はロールバックする。 実装方法はどのようでも構いません。 どなたかご教授ください。

  • 障害回復(ロールバックとロールフォワード)について

      t0  t1  t2   t3   t4   t5        |           | A s---e   |           |         |           | B s-------------e        |         |           | C  s------------------------|         |           | D       |   s----e    |         |           | E       |    s---------| ※t2はチェックポイント、t5は障害発生 ロールバックとロールフォワードについて教えてください。 (1)BとEについてロールフォワードによる回復が必要とのことですが、障害発生前にトランザクションが終了しており、コミットされているはずなのに、なぜロールフォワードが必要なのでしょうか? (2)Aはチェックポイント前に処理が完了しているため、回復処理は不要とのことですが、BとEが必要でAが不要の違いわかりません。 よろしくお願いします。

  • オフライン中のトランザクションについて

    表領域をオフラインにした場合、オフライン前に開始されたトランザクションは有効ですが、オフラインのまま、コミット、または、ロールバックして、表領域をオンラインにしても、整合がとれるのはなぜなのでしょうか。 コミットするか、ロールバックするかの情報はどこに保持してるのか疑問です。 (オフラインにしてから、ファイルをリネームし、 トランザクションをロールバックして、 ログをアーカイブし、DB再起動後に、ファイル名を戻して、 オンラインにすると、ちゃんとロールバックされています。 同じ操作で、コミットするとちゃんとコミットされています。 知っている方には当然なのでしょうが、私にとっては、不思議です) 詳しい方がみえましたらご教授お願いいたします。

  • ロールバック

    早速ご教示ください。 DELETE FROM テーブル名 この構文を用いて、テーブルを削除したいと考えております。 参考書で調べたところ、TURNCATE TABLE文だとロールバックできないが、処理が高速と記述してあります。 DELETE FROM TABLE文だとロールバックできない状態での削除は注意してくださいとあります。 つまりは、DELETE FROM TABLE文だとロールバックできる状態での削除なら削除前に戻せると言うことなのでしょうか? (1)ロールバックってなんですか? (2)ロールバックできる状態、できない状態。その両方の状態をご教示く ださい。  またロールバックはどのように行うのでしょうか? 以上、ご教示の程宜しくお願い致します。

  • ロールバック セグメントの指定

    バッチ処理にてCOMMIT間隔が大き過ぎてエクステントの拡張が発生しました。 エクステントを拡張は避けたく、COMMIT間隔を小さくしたのですが、 改善効果を、確認したいと思っております。 他のトランザクションもある試験環境なので、alter文?にてバッチ処理が 使用するロールバックセグメント番号を指定し、改善前/後で、V$ROLLSTATで確認 したいのですが、実施方法をご教授頂けないでしょうか? ※ロールバック・セグメント番号 = V$ROLLSTAT.USN

  • WMP10のロールバックが出来ない

    WMP10を9に戻したいのですが、コントロールパネルのプログラムの追加と削除でWindows XP-ソフトウェアの更新の中のWindowsMediaPlayer10の変更と削除のボタンをクリックしロールバックしますかのメッセージが出て、クリックすると直ぐ終了し「ロールバック完了しました」と出ますが、10のままです。 どうしたら出来るのでしょうか? 宜しくご教示下さい。

  • ロールバックの逆の言葉は?

    現在ファイルのバックアップとバージョン管理を行う簡単なツールを作成しているのですが、その際にロールバックから復帰するいい言葉がわからず悩んでいます。 例えばチェックポイントが10個ある場合(v1~10)、バージョン6(過去のバージョン)に戻る作業がロールバックです。 その後、再びバージョン10に復帰することも可能で、この終端のバージョンに復帰する作業のよさげな名前を探しています。 昔VSS少し使っていたことがあって、ロールバックという言葉は覚えていたのですが、残念ながらそのもどし方の名前は忘れてしまいました。 よろしくおねがいします。