구체화된 뷰 쿼리 수정
Materialized 뷰 쿼리를 수정해야 합니다.삭제하거나 다시 만들지 않고 동일한 작업을 수행할 수 있습니다.
아니요, 구체화된 보기의 쿼리를 삭제하지 않고 변경할 수 없습니다.
CREATE MATERIZED VIEW 구문은 해당 기능을 지원하지 않습니다.
ALTER Materialized 뷰는 다음 중 하나 이상의 방법으로 기존의 Materialized 뷰를 수정하는 데 사용됩니다.
- 스토리지 특성 변경
- 새로 고침 방법, 모드 또는 시간을 변경하려면 다음과 같이 하십시오.
- 다른 유형의 구체화된 뷰가 되도록 구조 변경
- 쿼리 다시 쓰기를 사용하거나 사용하지 않도록 설정하려면 다음과 같이 하십시오.
다음은 Oracle 12c Release 1 설명서를 참조하십시오.
Materialized View 구문 생성: http://docs.oracle.com/cd/E16655_01/server.121/e17209/statements_6002.htm#i2145767
ALTER Materialized View 구문: http://docs.oracle.com/cd/E16655_01/server.121/e17209/statements_2002.htm#SQLRF00808
MVIEW의 존재 여부가 확실하지 않은 경우(이것이 CREATE 또는 REPLACE가 정말로 적합한 이유), 저는 사용합니다.
BEGIN
EXECUTE IMMEDIATE 'DROP MATERIALIZED VIEW name_of_mview';
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE = -12003 THEN
dbms_output.put_line('MVIEW does not exist, which was somewhat expected');
ELSE
RAISE;
END IF;
END;
/
CREATE MATERIALIZED VIEW name_of_mview ... AS SELECT ...
mview는 그대로 둘 수 있습니다.미리 작성된 테이블을 사용하지 않았기 때문에 새 mview가 인스턴스화되는 동안 다운타임을 최소화하는 것이 문제라면 다음을 수행할 수 있습니다.
- 미리 작성된 테이블에 mview_1이라는 새 테이블 생성
- 생성된 후에는 이전 항목을 삭제할 수 있습니다.
- mview_1에서 *를 선택하여 뷰 mview 작성 또는 바꾸기
이제 재구축이 필요할 때마다 새로운 테이블/mview를 간단히 가리키면 되므로 다운타임이 거의 또는 전혀 없이 재구축할 수 있습니다.
이 기능은 최신 Oracle 버전의 새로운 기능일 수도 있지만 다음과 같이 잘 작동합니다.
DROP MATERIALIZED VIEW my_mview PRESERVE TABLE;
CREATE MATERIALIZED VIEW my_mview
ON PREBUILT TABLE ...
기존 MV를 새 MV에 대해 미리 작성된 테이블의 소스로 사용할 수 있습니다.
물론 쿼리에 대해 무엇을 하느냐에 따라 많은 것이 달라집니다.예를 들어 열을 추가하는 경우 새 값을 얻으려면 모든 항목을 새로 고쳐야 합니다.
PS. 기존 MV를 테이블로 빠르게 전환하는 방법은 파티션 교환이지만 gotchas를 주의하십시오.그런 다음 테이블을 조작하여 새 결과 세트와 일치시키고 조작된 테이블을 기반으로 새 MV를 생성합니다.
언급URL : https://stackoverflow.com/questions/4274681/modify-materialized-view-query
'itsource' 카테고리의 다른 글
iBeacon Bluetooth 프로필이란? (0) | 2023.06.26 |
---|---|
psql - 명령 결과를 파일에 저장합니다. (0) | 2023.06.26 |
SQL Server에서 테이블 값 함수에 CTE 문을 사용하는 방법 (0) | 2023.06.26 |
Windows에서 명령줄을 통해 주피터 실행 (0) | 2023.06.26 |
Gitrebase 병합 충돌을 계속할 수 없습니다. (0) | 2023.06.26 |