Sql 修改物化视图查询
我需要修改物化视图查询。可以在不删除和重新创建的情况下执行相同的操作 您可以利用现有MV作为 当然,很大程度上取决于您对查询所做的操作。例如,如果要添加列,则需要刷新所有内容以获取其新值Sql 修改物化视图查询,sql,oracle,Sql,Oracle,我需要修改物化视图查询。可以在不删除和重新创建的情况下执行相同的操作 您可以利用现有MV作为 当然,很大程度上取决于您对查询所做的操作。例如,如果要添加列,则需要刷新所有内容以获取其新值 另外,将现有MV转换成表的快速方法是分区交换,但要注意。然后操纵表格以匹配新的结果集,并基于操纵的表格创建新的MV。您可以将MVView保留在原位。如果您关心的是在新mview实例化时最小化停机时间(因为您没有使用预构建的表),那么您可以执行以下操作 在预构建的表上创建一个名为mview_1的新表 创建后,可以
另外,将现有MV转换成表的快速方法是分区交换,但要注意。然后操纵表格以匹配新的结果集,并基于操纵的表格创建新的MV。您可以将MVView保留在原位。如果您关心的是在新mview实例化时最小化停机时间(因为您没有使用预构建的表),那么您可以执行以下操作
现在,无论何时需要重建,您都可以在几乎没有停机时间的情况下完成重建,因为您可以简单地将视图指向新表/mview。对于您不确定mview是否存在的情况(这是创建或替换的真正好处),我使用
不,您不能在不删除物化视图的情况下更改其查询 创建物化视图语法不支持该功能 ALTER MATERIALIZED VIEW用于通过以下一种或多种方式修改现有物化视图:
- 改变其存储特性
- 更改其刷新方法、模式或时间的步骤
- 改变其结构,使其成为不同类型的物化视图
- 启用或禁用查询重写
有关以下内容,请参阅Oracle 12c第1版手册:
- 创建物化视图语法:
- 更改物化视图语法:
DROP MATERIALIZED VIEW my_mview PRESERVE TABLE;
CREATE MATERIALIZED VIEW my_mview
ON PREBUILT TABLE ...
如果您将查询和代码指向同义词(或标准视图),并将其从错误的物化视图切换到新视图(以及在需要再次修改时切换回来),则停机时间可以为零。具体化视图的创建可能需要所有时间,只要在几毫秒内指针准备就绪时更改指针即可。然后,您可以将新定义定义到数据库中,直到您手动执行此操作(对于复杂查询),表才会刷新。有时需要创建级联删除视图,这可能很危险
DROP MATERIALIZED VIEW my_mview PRESERVE TABLE;
CREATE MATERIALIZED VIEW my_mview
ON PREBUILT TABLE ...