2

Oracle のスクリプトについて質問があります。

BBDD の事前構築済みテーブルに具体化されたビューがあります (この MV はユーザー DAT_OWN のもので、他の 2 人のユーザー (APP と BO) はこの MV の同義語を持っています) MV を変更して列を追加する必要があります。この MV を削除して別の MV を作成する必要があることはわかっていますが、同義語に追加するものは何ですか?

次のような以前のスクリプトがあります。

DROP SYNONYM APP.STAT_VOZ;
CREATE SYNONYM APP.STAT_VOZ FOR DAT_OWN.STAT_VOZ;

DROP SYNONYM BO.STAT_VOZ;
CREATE SYNONYM BO.STAT_VOZ FOR DAT_OWN.STAT_VOZ;

DROP MATERIALIZED VIEW DAT_OWN.STAT_VOZ;
CREATE MATERIALIZED VIEW DAT_OWN.STAT_VOZ 
ON PREBUILT TABLE WITH REDUCED PRECISION
REFRESH COMPLETE
START WITH TO_DATE('21-ene-2013 19:20:00','dd-mon-yyyy hh24:mi:ss')
NEXT (trunc(SYSDATE,'HH')+19/72) 
WITH PRIMARY KEY
AS 
  SELECT           TO_CHAR (SUM (COUNT)) AS sum_count,
         start_date AS date_hour,
         input_type AS input_type
    FROM DAT_OWN.another_table
   WHERE start_date > TO_CHAR (SYSDATE - 60, 'yyyymmdd')
GROUP BY start_date

具体化されたビューを削除する前に、誰かがシノニム APP をドロップしてシノニム APP を作成し、シノニム BO をドロップしてシノニム BO を作成するのはなぜですか? 私の意見では、私はしなければならない

drop synonym1
drop synonym2
drop Mview
create Mview
create Synonym1
Create Synonym2

私の前のプログラマーは良い仕事をしたと確信していますが、なぜ彼らがそのようにしたのか理解できません! 誰か説明してくれませんか?

よろしく

4

2 に答える 2

1

あなたの元のスクリプトは、おそらく「昔ながらの」開発者によって書かれたものです。ほとんどの人は、オブジェクトを再作成する直前にオブジェクトをドロップすることに慣れています。お気づきのように、順序は重要ではありません。

最近のほとんどの人CREATE OR REPLACEは、最初にオブジェクトをドロップするのではなく、構文を使用します。 ここにその概念の良い説明があります。

于 2013-01-23T18:42:29.487 に答える
1

おそらく、スクリプト内でどちらのシノニムにも触れる必要はありません。

シノニムは単なるポインタです。シノニムが指すオブジェクトが存在する必要はまったくありません。マテリアライズド ビューをドロップして再作成するだけで、シノニムは新しく作成されたマテリアライズド ビューを自動的に指します。もちろん、マテリアライズド ビューが削除された後、再作成される前に、セッションがシノニムを使用してマテリアライズド ビューをクエリしようとすると、そのセッションはオブジェクトが存在しないというエラーを受け取ります。しかし、おそらく、誰もマテリアライズド ビューを使用しなくなるまで、マテリアライズド ビューを削除して再作成するのを待っているため、一般的には大きな問題にはなりません。

于 2013-01-23T18:51:11.093 に答える