2013-01-23 6 views
2

오라클의 스크립트에 대한 질문이 있습니다!Oracle Script - Materialized View & synonym

내가 미리 만들어진 테이블에 구체화 된 뷰를 가지고, 내 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 

을 할 필요가 있지만, 그들은 그런 식으로 왜 그랬는지 이해할 수 없다! 누군가 제발 설명해 주실 수 있나요?

감사

답변

1

원래 스크립트가 아마 그냥 "오래된 학교"개발자에 의해 작성되었습니다. 대부분의 사람들은 객체를 다시 만들기 전에 즉시 객체를 삭제하는 데 익숙합니다. 알다시피, 순서는 중요하지 않습니다.

요즘 대부분의 사람들은 객체를 먼저 삭제하는 대신 CREATE OR REPLACE 구문을 사용합니다. 그 개념의 Here is a good explanation.

1

아마도 스크립트의 동의어를 건드릴 필요가 없습니다.

동의어는 포인터 일뿐입니다. 동의어가 가리키는 객체가 전혀 존재할 필요는 없습니다. 구체화 된보기를 삭제하고 다시 작성하면 동의어가 자동으로 새로 작성된 구체화 된보기를 가리 킵니다. 물론 구체화 된 뷰가 삭제 된 후 다시 작성되기 전에 세션이 동의어를 사용하여 구체화 된 뷰를 조회하려고 시도하면 해당 세션에 오브젝트가 존재하지 않는다는 오류가 발생합니다. 그러나 아무도 사용하지 않을 때까지 구체화 된보기를 삭제하고 다시 작성하기를 기다리고 있으므로 일반적으로 주요 관심사는 아닙니다.