2015年12月2日水曜日

マテビュー(マテリアライズドビュー:Materialized View)のせいで、表領域が削除ができない | ライタス株式会社

久々にOracleで困ったことに遭遇したのと、日本語の情報が少なかったので、
記録がてら記事にします。


表領域のDROPをしなくてはならない状況になったので、
おとなしくコマンドを叩いていました。


DROP TABLESPACE [表領域名] INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;

なんでか、この時に、

ORA-23515: マテリアライズド・ビューまたはその索引(あるいはその両方)が表領域に存在します.


が、発生しました。




おとなしく削除されてくれればいいものを、、、




調べたところ、このパターンは、マテビューを手動で削除すれば、治るようですね。


外人さんが、こんなSQLを作ってくれていました。


SQL> select ‘drop materialized view ‘||owner||’.'||name||’ PRESERVE TABLE;’ from dba_registered_snapshots where name in  (select table_name from dba_tables where tablespace_name = ‘BLUH’);
この人は、BLUHというテーブルスペースをDROPしようとして失敗していたようなので、
その部分を書き換えると、マテビューの削除用SQLを出力してくれます。


そのまま、これを実行すれば、マテビューが削除できて、そのあと表領域を削除すれば、
ちゃんと削除できます。




意外と便利そうなSQLだったので、機会があれば使ってみてください。


= 参考元 =
http://ora34913.wordpress.com/2008/09/04/ora-23515-and-ora-02449-on-drop-tablespace/

本記事は、弊社代表のブログ記事なんでもIT屋の宿命からの転載です。

0 件のコメント:

コメントを投稿