権限要件
マテリアライズドビューを削除するには、DROP TABLE 権限が必要です。OceanBaseデータベースの権限の詳細については、Oracleモードの権限分類を参照してください。
注意事項
- マテリアライズドビューを単独で削除する場合、マテリアライズドビューはゴミ箱に移動しません。
- マテリアライズドビューのベーステーブルにマテリアライズドビューのログが作成されている場合、ベーステーブルを削除する前に、そのベーステーブル上のマテリアライズドビューのログを削除する必要があります。そうでない場合、エラーが発生します。
構文
マテリアライズドビューを削除するSQLステートメントの形式は次のとおりです:
DROP MATERIALIZED VIEW [ schema. ] materialized_view;
パラメータ説明:
パラメータ |
説明 |
|---|---|
| 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がスキーマ名と一致する場合、スキーマ名は大文字である必要があります。実行結果は次のとおりです:
+--------------+-----------------+-----------------+--------------------------------------------------------------------------------------------------------------------------------+--------------+ | 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