1

Oracle 11g を使用しています。

インデックスの再構築を使用して、テーブルへの同時読み込みのシナリオを実現しようとしています。このシナリオを実現しようとしているフローはほとんどありません。1. ソースからデータをロードする、2. データを変換する、3. DWH テーブルのインデックスをオフにする、4. データを DWH にロードする、5. DWH テーブルのインデックスを再構築する。パフォーマンスを向上させるために、インデックスをオフにして再構築します。一方のフローがインデックスを再構築しているときに、もう一方がオフにしようとする状況があります。私がする必要があるのは、ポイント 2 とポイント 3 の間にロックを配置することです。これはポイント 5 の後に解放されます。

ロックはトランザクションの終わりまでに解放されるため、 Oracle 組み込みLOCK TABLEメカニズムは十分ではありません。したがって、すべてのALTERステートメントがロックを解放します。

問題は、問題をどのように解決するかです。

4

3 に答える 3

0

挿入時間の分/時間ベースでテーブルを範囲分割し、時間切れになったときにのみインデックスを有効にする必要があります。各パーティションは、作成後にすべてのインデックスを無効にする必要があります。インデックスを有効にできるプロセスは 1 つだけです。

于 2013-06-11T11:59:19.217 に答える
0

DBMS_SCHEDULER を使用できます。

  1. データをロードして変換するジョブを実行する
  2. インデックスをオフにする
  3. データを DWH にロードするジョブを実行する
  4. インデックスを再構築する

ここに画像の説明を入力

チェーンの使用:

于 2013-06-11T11:49:00.350 に答える