フラッシュバッククエリを数週間前に戻すことができるように、非常に高い取り消し保持を設定することは現実的ですか?
当然、UNDOテーブルスペースには、必要なUNDOデータの量を格納できるだけの十分なスペースが必要です。注意すべき他の制限はありますか?
使用可能なUNDOスペースが十分にない場合はどうなりますか?運用に何らかの影響がありますか、それともフラッシュバックとロールバックが制限されている(スナップショットが古すぎるなど)の問題です。
更新:
インスタンスごとに1日あたり1 GB未満の典型的なUNDO生成、およびインスタンスごとに最大64 GBのUNDOスペースがあるため、30日間のUNDO保存ターゲットで実行することは現実的です。番号?
私は試していませんが、UNDO_RETENTION
がOracleがSCNからタイムスタンプへのマッピングを維持する時間の長さを超えると、問題が発生するのではないかと思う傾向があります。記憶が機能する場合、それはおよそ1週間です(まあ、記憶が機能する場合、それは10g日で1週間でした。11.2でそれを変更したことは何も知りません)。私はOracleがそのマッピングを使用して、どのUNDO
セグメントがパージされるほど古く、その制限を超えた場合に問題が発生し始めるかを判断するために使用するのではないかと思います。
たとえば、11.2システムでは、7日前にSCNに変換してからタイムスタンプに戻すことができますが、8日前にはできません
1* select scn_to_timestamp( timestamp_to_scn( systimestamp - 7) ) from dual
SQL> /
SCN_TO_TIMESTAMP(TIMESTAMP_TO_SCN(SYSTIMESTAMP-7))
---------------------------------------------------------------------------
06-NOV-12 01.06.47.000000000 PM
SQL> ed
Wrote file afiedt.buf
1* select scn_to_timestamp( timestamp_to_scn( systimestamp - 8) ) from dual
SQL> /
select scn_to_timestamp( timestamp_to_scn( systimestamp - 8) ) from dual
*
ERROR at line 1:
ORA-08180: no snapshot found based on specified time
ORA-06512: at "SYS.TIMESTAMP_TO_SCN", line 1
私は自分のシステムを疑う傾向があるので、UNDO
を8日間保持しようとすると、Oracleは一般に準拠の問題を抱えていることになります。どちらか一方の方法を確認するには1週間かかりますが、賭けをしなければならない場合、1週間以上UNDO
を保持しようとすると失敗することに賭ける傾向があります。
UNDO
をそれほど長く保持できたとしても、タイムスタンプを指定できなかったため、フラッシュバッククエリの作成は大きな課題となります。数秒ごとにキャプチャして一度に数週間または数か月間保持し、フラッシュバックでAS OF SCN
を指定する自動ジョブを作成することにより、SCNとタイムスタンプ間の独自の(より長期的な)マッピングを維持できる可能性があります。クエリ。私は古いUNDO
がなくなることを期待する傾向がありますが、うまくいくかもしれません。
非常に高いとは、視点に依存する相対的な用語です。 1時間、1か月、1年などを意味する場合があります。1分から1か月の間の何かを意味すると仮定すると、返される量は、生成されるUNDOの量と使用可能なストレージの量によって異なります。 2週間を超えるものは見たことがありません。
OracleはUNDOスペースを自動的に管理し、スペースの制約で必要な場合は、保持をUNDO保存設定よりも動的に減らします。これに対する警告は、UNDO表領域が保持を保証している場合です。
『Oracle Database管理者ガイド』には、この情報がすべて記載されています 1ページ 。ここにいくつかの抜粋があります:
Oracle Databaseは、UNDO表領域のサイズとシステム・アクティビティに基づいて、UNDO保存期間を自動的に調整します。オプションで、
UNDO_RETENTION
初期化パラメーターを設定することにより、最小の取り消し保持期間(秒単位)を指定できます。このパラメーターが元に戻す保存に与える正確な影響は次のとおりです。
UNDO_RETENTION
パラメータは、固定サイズのUNDOテーブルスペースでは無視されます。データベースは、システムアクティビティとUNDO表領域のサイズに基づいて、UNDO保存期間を常に調整して、可能な限り最適な保存を行います。詳細は、「元に戻す保存の自動チューニング」を参照してください。
AUTOEXTEND
オプションを有効にしたUNDO表領域の場合、データベースはUNDO_RETENTION
で指定された最小保存期間を守ろうとします。スペースが少ない場合、期限切れになっていない取り消し情報を上書きする代わりに、テーブルスペースが自動拡張されます。自動拡張UNDOテーブルスペースにMAXSIZE
句が指定されている場合、最大サイズに達すると、データベースは期限切れになっていないUNDO情報を上書きし始める可能性があります。 DBCAによって自動的に作成されるUNDOTBS1テーブルスペースは自動拡張されます。...
長時間実行されるクエリまたはOracle Flashbackオペレーションの成功を保証するために、保持保証を有効にすることができます。保存保証が有効になっている場合、指定された最小の取り消し保存が保証されます。 UNDO表領域の領域不足が原因でトランザクションが失敗したことを意味する場合でも、データベースは期限が切れていないUNDOデータを上書きすることはありません。保存保証が有効になっていない場合、スペースが少なくなると、データベースは期限が切れていない取り消しを上書きし、システムの取り消し保存を低下させる可能性があります。このオプションはデフォルトで無効になっています。