マテビュー(マテリアライズドビュー: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屋の宿命 からの転載です。