権限要件
マテリアライズドビューを削除するには、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