web-dev-qa-db-ja.com

Oracle 12c-テーブルALL_CONS_COLUMNSおよびALL_CONSTRAINTSへのクエリが遅い

Oracle 11gからOracle 12cへのアップグレードに成功しました。これまでのところ、順調に進んでいます。しかし、1つの問題に気づきました。Oracleの制約テーブル(ALL_CONS_COLUMNSおよびALL_CONSTRAINTS)に対して行われたクエリは、11gに比べて本当に遅いです。

11gを使用したところ全く問題ありませんでした。クエリは1秒未満で終了しましたが、12cでは少なくとも4倍遅くなります。それは私たちが持っているすべてのアプリケーションに影響を及ぼしており、回避策(アプリケーション側)があっても、理想的には、11gと12cの間で同じパフォーマンスが期待されます。

また、Toadを使用してクエリのコストを測定しようとしました。 12cでは、コストは11gよりもはるかに小さくなります。これはクエリ時間に影響を与える可能性がありますか?この問題を解決するために何かできることはありますか?

PS:別のテーブルに対して行われた他のクエリは問題ありません。パフォーマンスに関しては、11gと12cの違いはほとんどありません。

どんなフィードバックでも歓迎します。どうもありがとうございました。

2
Lee

それらのテーブルの統計のような音は時代遅れです。次のステートメントを呼び出します。

purge dba_recyclebin;
exec dbms_stats.gather_dictionary_stats
exec dbms_stats.gather_fixed_objects_stats;

アプリケーションがテーブルを頻繁に作成または削除する場合は、上記のステートメントをスケジュールされたジョブに配置する必要がある場合があります。

また、@ MarkDPowellが示唆したように、DBMS_STATS.GATHER_SYSTEM_STATSおよびDBMS_STATS.GATHER_PROCESSING_RATE(12cの新機能)を介してシステム統計を収集することも検討する必要があります。これは11gでは重要で、12cではより重要です。

1
Mark Stewart