Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Oracle脚本-物化视图&;同义词_Sql_Oracle_Materialized Views_Synonym - Fatal编程技术网

Sql Oracle脚本-物化视图&;同义词

Sql Oracle脚本-物化视图&;同义词,sql,oracle,materialized-views,synonym,Sql,Oracle,Materialized Views,Synonym,我有一个关于Oracle脚本的问题 在我的BBDD中,我在一个预构建的表上有一个物化视图(该MV是用户DAT_自己的,其他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; CREAT

我有一个关于Oracle脚本的问题

在我的BBDD中,我在一个预构建的表上有一个物化视图(该MV是用户DAT_自己的,其他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
为什么有人要在删除物化视图之前删除同义词应用程序并创建同义词应用程序删除同义词BO并创建同义词BO?在我看来,我必须这样做

drop synonym1
drop synonym2
drop Mview
create Mview
create Synonym1
Create Synonym2
我确信在我之前的程序员做得很好,但我不明白他们为什么那样做!有人能给我解释一下吗


关于

您的原始脚本可能是由一位“老派”开发人员编写的。大多数人习惯于在重新创建对象之前立即将其放下。正如您所注意到的,顺序并不重要


现在大多数人使用
创建或替换
语法,而不是先删除对象。这是一个概念

可能不需要在脚本中触摸任何一个同义词

同义词只是一个指针。同义词所指向的对象根本不存在。如果只需删除并重新创建物化视图,同义词将自动指向新创建的物化视图。当然,在删除物化视图之后和重新创建之前,如果会话试图使用同义词查询物化视图,则该会话将得到一个错误,即对象不存在。但是,假设您正在等待删除并重新创建物化视图,直到没有人使用它,所以这通常不是主要问题