0

最近、Oracle 19c でいくつかのマテリアライズド ビューを作成する必要があります。ベース テーブルはすべてリモートの Oracle データベースにあり、クエリは dblink を使用してテーブルを接続し、高速更新は許可されていません。それらのほとんどは、use_hash などのヒントを追加した後、数秒でリフレッシュを完了できます。マテリアライズド ビューの 1 つは作成に 10 秒もかからず、更新を完了するには数日かかることもあります。Webで検索したところ、以下の回答が得られました。

  1. dbms_mview.refresh(mv_name, 'C', atomic_refresh=>false) を使用します。この解決策は機能しません。
  2. 高速リフレッシュ。ソリューションは許可されていません。
  3. 更新を行う代わりに、マテリアライズド ビューを毎回再作成します。これは回避策ですが、解決策ではありません。
  4. ヒントoptimizer_features_enable(9.0.0)を使用して、テーブルで問題をシミュレートしました(マテリアライズドビューで...選択...に挿入できないため)、ヒントは機能するようですが、具体化されたビュー、実行計画から、ヒントが無視されていることがわかります。また、dbms_refresh.refresh(mv_name) の前に、スケジューラ ジョブに alter session set optimizer_features_enable='9.0.0' を追加しようとしましたが、機能しません。この問題について何か考えがある人はいますか? ありがとうございました。
4

1 に答える 1