次の構造を持つストアド プロシージャがあります。
CREATE OR REPLACE PROCEDURE refresh_mv(p_mv_name VARCHAR2) AS
BEGIN
EXECUTE IMMEDIATE '
CREATE MATERIALIZED VIEW ' || dbms_assert.simple_sql_name(p_mv_name) || '
PARALLEL
NOLOGGING
NEVER REFRESH
AS
SELECT * FROM <biq_query>';
EXECUTE IMMEDIATE
'CREATE OR REPLACE VIEW outside_view AS SELECT * FROM '||p_mv_name;
-- DROP old mv?
END;
これが SQL 開発者内から実行されると、OEM はアクティビティにマテリアライズド ビュー ステートメントを正しく表示します。ただし、これと同じ手順をチェーン内の Oracle スケジューラから実行すると、create table as select ステートメントが生成されます。このために私が取っているパフォーマンスヒットはありますか? さらに、チェーンが MV よりも CTAS を使用することを決定したのはなぜですか?