Oracle Script - Материализованное представление и синоним

У меня вопрос по скрипту в Oracle!

У меня есть материализованное представление в предварительно созданной таблице в моем BBDD (это MV принадлежит пользователю DAT_OWN, два других пользователя (APP и BO) имеют синоним этого 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

Я уверен, что программист до меня проделал хорошую работу, но я не могу понять, почему они сделали это именно так! Может кто-нибудь объяснить мне это, пожалуйста?

С уважением


person BellaVita    schedule 23.01.2013    source источник


Ответы (2)


Ваш исходный сценарий, вероятно, был написан разработчиком «старой школы». Большинство людей привыкли отбрасывать объекты непосредственно перед их воссозданием. Как вы заметили, последовательность не важна.

Большинство людей в наши дни используют синтаксис CREATE OR REPLACE вместо того, чтобы сначала удалить объект. Вот хорошее объяснение этой концепции.

person BellevueBob    schedule 23.01.2013

Вероятно, в сценарии нет необходимости касаться ни одного из синонимов.

Синоним — это просто указатель. Нет требования, чтобы объект, на который указывает синоним, вообще существовал. Если вы просто удалите материализованное представление и создадите его заново, синонимы автоматически будут указывать на вновь созданное материализованное представление. Конечно, после удаления материализованного представления и до его воссоздания, если сеанс попытается использовать синоним для запроса материализованного представления, этот сеанс получит сообщение об ошибке, что объект не существует. Но, по-видимому, вы ждете, чтобы удалить и воссоздать материализованное представление, пока никто не перестанет его использовать, так что обычно это не является серьезной проблемой.

person Justin Cave    schedule 23.01.2013