小智 20
不,您不能在不丢弃物化视图的情况下更改物化视图的查询.
CREATE MATERIALIZED VIEW语法不支持该功能.
ALTER MATERIALIZED VIEW用于通过以下一种或多种方式修改现有的物化视图:
请参阅Oracle 12c第1版手册:
CREATE 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 保留在原处。如果您关心的是在新的 mview 实例化时最大限度地减少停机时间(因为您没有使用预构建的表),您可以执行以下操作。
现在,每当您需要重建时,您都可以在几乎没有停机时间的情况下完成此操作,因为您可以简单地将视图指向未来的新表/mview。
对于你不确定MVIEW是否存在的情况(这是CREATE OR 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 ...
Run Code Online (Sandbox Code Playgroud)
您也许能够利用现有的 MV 作为新 MV 的预建表的源
当然,很大程度上取决于您对查询所做的操作。例如,如果您要添加一列,则需要刷新所有内容才能获取其新值。
附言。将现有 MV 转换为表的快速方法是分区交换,但要注意陷阱。然后,您操作该表以匹配新的结果集,并根据操作的表创建新的 MV。
| 归档时间: |
|
| 查看次数: |
55924 次 |
| 最近记录: |