首批通过分布式安全可靠测评,为关键业务系统打造
删除物化视图
更新时间:2026-02-14 20:53:23
权限要求
删除物化视图需要有 DROP TABLE 权限。更多有关 OceanBase 数据库权限的详细介绍,请参见 Oracle 模式下的权限分类。
注意事项
- 单独删除物化视图的时候,物化视图不进回收站。
- 物化视图的基表上如果创建了物化视图日志,需要先删除基表上的物化视图日志,才能删除基表,否则报错。
语法
删除物化视图的 SQL 语句格式如下:
DROP MATERIALIZED VIEW [ schema. ] materialized_view;
参数说明:
| 参数 | 描述 |
|---|---|
| schema. | 可选项,指定物化视图所在的 Schema。如果省略 schema.,则默认在您自己的 Schema 中。 |
| materialized_view | 指定物化视图的名称。 |
示例
以下将展示创建物化视图、查询物化视图及删除物化视图的信息。
创建表
test_tbl1作为物化视图的基表。CREATE TABLE test_tbl1 (col1 INT PRIMARY KEY, col2 VARCHAR2(20), col3 INT);基于表
test_tbl1创建名为mv_test_tbl1的物化视图。CREATE MATERIALIZED VIEW mv_test_tbl1(PRIMARY KEY (col1)) AS SELECT col1, col2 FROM test_tbl1;在物化视图
mv_test_tbl1上创建物化视图日志。CREATE MATERIALIZED VIEW LOG ON mv_test_tbl1 WITH PRIMARY KEY (col2) INCLUDING NEW VALUES;基于物化视图
mv_test_tbl1创建物化视图(嵌套物化视图)mv_mv_test_tbl1。CREATE MATERIALIZED VIEW mv_mv_test_tbl1 AS SELECT col1 FROM mv_test_tbl1;查看当前所有物化视图信息。
SELECT owner, mview_name, container_name, query, refresh_mode FROM sys.DBA_MVIEWS WHERE OWNER = 'TEST_USER001';注意
Oracle 模式中视图
sys.DBA_MVIEWS中字段OWNER匹配 Schema 名时,Schema 名需使用大写字母。返回结果如下:
+--------------+-----------------+-----------------+--------------------------------------------------------------------------------------------------------------------------------+--------------+ | OWNER | MVIEW_NAME | CONTAINER_NAME | QUERY | REFRESH_MODE | +--------------+-----------------+-----------------+--------------------------------------------------------------------------------------------------------------------------------+--------------+ | TEST_USER001 | MV_TEST_TBL1 | MV_TEST_TBL1 | select "TEST_USER001"."TEST_TBL1"."COL1" AS "COL1","TEST_USER001"."TEST_TBL1"."COL2" AS "COL2" from "TEST_USER001"."TEST_TBL1" | DEMAND | | TEST_USER001 | MV_MV_TEST_TBL1 | MV_MV_TEST_TBL1 | select "MV_TEST_TBL1"."COL1" AS "COL1" from "TEST_USER001"."MV_TEST_TBL1" "MV_TEST_TBL1" | DEMAND | +--------------+-----------------+-----------------+--------------------------------------------------------------------------------------------------------------------------------+--------------+ 2 rows in set删除物化视图
mv_mv_test_tbl1。DROP MATERIALIZED VIEW mv_mv_test_tbl1;返回结果如下:
Query OK, 0 rows affected删除物化视图
mv_test_tbl1。注意
物化视图的基表上如果创建了物化视图日志,需要先删除基表上的物化视图日志,才能删除基表,否则报错。
DROP MATERIALIZED VIEW mv_test_tbl1;返回结果如下:
OBE-00600: internal error code, arguments: -4007, drop table required by materialized view refresh is not supported删除物化视图
mv_test_tbl1上的物化视图日志。DROP MATERIALIZED VIEW LOG ON mv_test_tbl1;返回结果如下:
Query OK, 0 rows affected再次删除物化视图
mv_test_tbl1。DROP MATERIALIZED VIEW mv_test_tbl1;返回结果如下:
Query OK, 0 rows affected