DROP MATERIALIZED VIEW
目的
DROP
MATERIALIZED
VIEW
文を使用すると、データベースから既存のマテリアライズド・ビューを削除できます。
削除したマテリアライズド・ビューは、ごみ箱内には移動しません。このため、削除したマテリアライズド・ビューを消去またはリカバリすることはできません。
ノート:
下位互換性を保つために、MATERIALIZED
VIEW
のかわりにキーワードSNAPSHOT
もサポートされています。
関連項目:
-
様々なタイプのマテリアライズド・ビューの詳細は、「CREATE MATERIALIZED VIEW」を参照してください。
-
マテリアライズド・ビューの変更については、「ALTER MATERIALIZED VIEW」を参照してください。
-
レプリケーション環境でのマテリアライズド・ビューの詳細は、『Oracle Database管理者ガイド』を参照してください。
-
データ・ウェアハウス環境でのマテリアライズド・ビューの詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。
前提条件
削除するマテリアライズド・ビューが自分のスキーマ内にある必要があります。自分のスキーマ内にない場合は、DROP
ANY
MATERIALIZED
VIEW
システム権限が必要です。また、データベースがマテリアライズド・ビューのデータを管理するために使用する内部表、ビュー、索引を削除する権限も必要です。
関連項目:
マテリアライズド・ビューを管理するために使用するオブジェクトの削除に必要な権限については、「DROP TABLE」、「DROP VIEW」および「DROP INDEX」を参照してください。
構文
drop_materialized_view::=
セマンティクス
IF EXISTS
IF EXISTS
は、既存の索引を削除する場合に指定します。
DROP
にIF NOT EXISTS
を指定すると、ORA-11544: Incorrect IF EXISTS clause for ALTER/DROP statement
が発生します。
schema
マテリアライズド・ビューが含まれているスキーマを指定します。schema
を指定しない場合、このマテリアライズド・ビューは自分のスキーマ内にあるとみなされます。
materialized_view
削除する既存のマテリアライズド・ビューの名前を指定します。
-
マスター表から、最後にリフレッシュされた単純マテリアライズド・ビューを削除した場合、マスター表のマテリアライズド・ビュー・ログのうち、削除されたマテリアライズド・ビューのリフレッシュに必要な行のみが自動的に削除されます。
-
事前作成表で作成されたマテリアライズド・ビューを削除した場合、そのマテリアライズド・ビューが削除され、事前作成表は1つの表としての元の形に戻ります。
-
マスター表を削除した場合、その表に基づくマテリアライズド・ビューは自動的には削除されません。ただし、削除したマスター表に基づくマテリアライズド・ビューをリフレッシュしようとした場合、エラー・メッセージが戻されます。
-
マテリアライズド・ビューを削除した場合、マテリアライズド・ビューを使用するためにリライトされたコンパイル済の要求が無効になり、自動的に再コンパイルされます。そのマテリアライズド・ビューが表に事前作成されていた場合、その表は削除されませんが、マテリアライズド・ビューのリフレッシュ・メカニズムで管理できなくなります。
PRESERVE TABLE句
この句を使用すると、マテリアライズド・ビュー・オブジェクトを削除した後も、そのマテリアライズド・ビューのコンテナ表およびその内容を保持できます。結果の表の名前は、削除したマテリアライズド・ビューと同じになります。
マテリアライズド・ビューに関連付けられているすべてのメタデータは削除されます。ただし、そのマテリアライズド・ビューの作成時にコンテナ表で自動的に作成された索引は保存されますが、1つの例外があります。ROWIDマテリアライズド・ビューの作成時に作成された索引は削除されます。また、そのマテリアライズド・ビューにネストした表の列が含まれる場合、その列の記憶表がそのメタデータとともに保存されます。
PRESERVE TABLE句の制限事項
この句は、(マテリアライズド・ビューがスナップショットと呼ばれていた) Oracle9iより前のリリースからインポートしたマテリアライズド・ビューには無効です。
例
マテリアライズド・ビューの削除: 例
次の文は、サンプル・スキーマhr
内のマテリアライズド・ビューemp_data
を削除します。
DROP MATERIALIZED VIEW emp_data;
次の文は、sales_by_month_by_state
マテリアライズド・ビューおよびそのマテリアライズド・ビューの基礎となる表を削除します(基礎となる表がON
PREBUILT
TABLE
句が指定されたCREATE
MATERIALIZED
VIEW
文に登録されていない場合)。
DROP MATERIALIZED VIEW sales_by_month_by_state;