7

TIBCO DB アダプターによって常に更新されている Oracle データベースの一貫したスナップショットを取得したいと考えています。

通常、TIBCO は一連のテーブルを一度に更新してからコミットします。すべてのテーブルをトラバースし、1 日 1 回スナップショットを取得すると、コミット前にテーブル A から、コミット後にテーブル B からデータを取得できますが、A と B に関係がある場合、それらは一致しなくなります。ちゃんと。

「SET TRANSACTION READ ONLY」は進むべき道ですか?
例えば

COMMIT
SET TRANSACTION READ ONLY
SELECT * FROM A WHERE A.ADB_UPDATEDDATE > TODAY()-1 
SELECT * FROM B WHERE B.ADB_UPDATEDDATE > TODAY()-1 
etc.
COMMIT

(今日の構文は正しくないかもしれませんが、重要ではありません!)

それとも、私にできるもっと良いことがありますか?

4

6 に答える 6

7

「スナップショット」とは、一貫性のあるモードでのデータベースの完全なコピーを意味する場合、バックアップからデータベースを復元し、目的の時点までデータベースを回復します。Oracleリカバリプロセスが整合性を処理します(システム変更番号またはSCNによって追跡されます)。

バックアップとリカバリにRMANを使用している場合は、time句を指定した「DUPLICATEDATABASE」コマンドを使用すると、これを比較的簡単に行うことができます。

一方、一貫性のあるモードでいくつかのテーブルを抽出するだけの場合は、次の2つのオプションが考えられます。

  • (古い)expユーティリティのconsistent=yオプションを使用してテーブルのグループをエクスポートします
  • flashback_timeオプションを指定して新しいexpdpユーティリティを使用します
于 2010-10-30T11:32:44.403 に答える
4

これは、フラッシュバックと呼ばれるOracle機能を使用して非常に簡単に実行できます。以前のバージョンがいつ(timeまたはscn)であり、フラッシュバックウィンドウ内にあるかを知っている限り、単純にクエリを実行できます。

于 2010-10-31T10:11:26.957 に答える
1

dpbradley の提案に加えて、大きすぎないテーブルがいくつかあり、フラッシュバック クエリが利用できる場合は、同じタイムスタンプの時点でフラッシュバック クエリを使用してテーブルのコピーを作成できます。

于 2010-10-30T14:18:18.993 に答える
0

「ストレージレベル」ベースのスナップショットも使用できますが、オラクルは RMAN を使用する方が良い方法だと考えているようです: http://www.oracle.com/technetwork/database/features/availability/rman-fra-snapshot -322251.html

于 2013-01-30T19:58:47.527 に答える
0

整合モードでエクスポートを行うと役立つ場合があります。http://www.dba-oracle.com/tips_oracle_export_utility.htmをご覧ください。

于 2010-11-04T00:09:18.127 に答える