マテビュー(マテリアライズドビュー:Materialized View)のせいで、表領域が削除ができない | ライタス株式会社
久々にOracleで困ったことに遭遇したのと、日本語の情報が少なかったので、
記録がてら記事にします。
表領域のDROPをしなくてはならない状況になったので、
おとなしくコマンドを叩いていました。
DROP TABLESPACE [表領域名] INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;
なんでか、この時に、
ORA-23515: マテリアライズド・ビューまたはその索引(あるいはその両方)が表領域に存在します.
が、発生しました。
おとなしく削除されてくれればいいものを、、、
調べたところ、このパターンは、マテビューを手動で削除すれば、治るようですね。
外人さんが、こんなSQLを作ってくれていました。
その部分を書き換えると、マテビューの削除用SQLを出力してくれます。
そのまま、これを実行すれば、マテビューが削除できて、そのあと表領域を削除すれば、
ちゃんと削除できます。
意外と便利そうなSQLだったので、機会があれば使ってみてください。
= 参考元 =
http://ora34913.wordpress.com/2008/09/04/ora-23515-and-ora-02449-on-drop-tablespace/
本記事は、弊社代表のブログ記事なんでもIT屋の宿命からの転載です。
記録がてら記事にします。
表領域の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屋の宿命からの転載です。
コメント
コメントを投稿