フラッシュバック機能編
目的
silver12c受験時に、参考書から自分で問題を予想することで得点源になるのでは?と思ったので適当に自作問題。
オラクルマスター試験勉強用に参考書を読んでいるが、圧倒的テキスト量のため自分用にまとめてOracleDatabaseに関する知識・技術を整理する。
公式ドキュメントを調べ、内容を補完する。
※注意
あくまで、自作問題のため実際の試験とは何の関係もありません。
試験内容チェックリストを元に公式ドキュメントを調べ、問題を予想し、作成しています。
■その他
Q:フラッシュバックデータアーカイブの概要
A:①テーブルがフラッシュバックデータアーカイブであり、作成時間よりも前の時間を指定した場合、クエリはエラーを発生させるのではなく、そのテーブルに対してゼロ行を返します
②12.1.0.1の場合CDBではサポートされていない。
③フラッシュバックデータアーカイブを無効にしないと表を削除できない。
④フラッシュバックデータアーカイブの名前を設定していない場合、デフォルトのフラッシュバックデータアーカイブの名前が使用される。
Q:フラッシュバックトランザクションを実行するための条件は?
A:サプリメンタルロギングの有効化
DBMS_FLASHBACK.TRANSACTION_BACKOUTプロシージャのEXECUTE権限
ARCHIVELOGモードであること
実行ユーザーにSELECT ANY TRANSACTION権限がある
注意:表の論理構造を変更するDDL操作はできない
Q:フラッシュバックバージョンクエリでのバージョンの照会の指定方法を示してください。また、この機能では何を表示しますか?
A:①照会の指定方法
VERSIONS_STARTSCN~VERSIONS_ENDSCN、
VERSIONS_STARTTIME~VERSIONS_ENDTIME
VERSIONS_XID、
VERSIONS_OPERATION
②行の変更を元に戻すために必要なSQLや変更を担当するユーザーなど、このトランザクションのメタデータを見つけることができる。
③指定された時間間隔の任意の時点で存在した行の各バージョンの行を含む表を返す
Q:フラッシュバックデータベースを有効にしたい。前提条件を示してください
A:①高速リカバリ領域が構成されている
②ARCHIVELOGモードである
③必要な期間がDB_FLASHBACK_RETENTION_TARGET初期化パラメータに設定されている
Q:フラッシュバックデータアーカイブを設定する前提条件
A:自動UNDO管理/自動セグメント領域が有効
コマンド
Q:FLASHBACK TABLE ExSchema.ExTable TO BEFORE DROP;
このコマンドが成功するための条件
A:①ExSchemaに同じ名前の表が存在しないこと
②FLASHBACK ANY TABLE権限
③ゴミ箱を有効化しておく
Q:フラッシュバックアーカイブが有効の表があります。トランザクションの保存期間を2年から1年に変更しようと思い、次のコマンドを実行しました。
ALTER flashback archive fda MODIFY RETENSION 1 YEAR;
A:1年より前のデータはfdaから削除される。
Q:exsample表を削除しました。FLASHBACK TABLEコマンドを使用して回復しました。
exsample表のオブジェクトはどうなりますか?
A:①参照整合性制約を除く、テーブルで定義されたすべての制約がフラッシュバックされる
⇒トリガー、クラスタ、索引もフラッシュバックされる。
⇒トリガーはフラッシュバック中はいったん無効になるが、完了後に再び有効になる
②表に関連付けられたLOBセグメントがフラッシュバックされる
Q:フラッシュバックアーカイブが有効になっている表exampleがあります。この表に対し、ALTER TABLE example ADD newExampleColumn VARCHAR(10);を実行し、列を追加しました。
この動作はフラッシュバックデータアーカイブにどのような影響を及ぼしますか?
A:コマンドは正常に実行され、今後もexample表に対するメタデータを保存し続けます。
⇒ひっかけ問題、バージョン11gまではDDL文を実行できませんでしたが、12cからは実行可能です。また、フラッシュバックバージョン問合せのDDL以前のデータは確認できない。ということと勘違いしないようにしましょう