• 締切済み

フラグメンテーションの解消

毎度お世話になります。 この度はじめて、 フラグメンテーションが激しくなっている表を きれいにしようと考えております。 参考書を開いて調べたところ Export ⇒ 表をDROP ⇒ Import といったような感じでやれるようであるところまでは大体わかりました。 そこで気になるのが外部キーとかで参照されている表だった場合 そもそもDROPなどができないのではないかというところです。 制約などをいったんOFFにするばいけるのかとも思うのですが まとめてOFFにする方法も思いつきません。 以下の2点ご教示いただけないでしょうか? 1.他に上手い方法があるか? 2.制約をまとめてOFFなり、いったん削除なり、できる方法があるか? 宜しくお願いいたします。

みんなの回答

  • mitoneko
  • ベストアンサー率58% (469/798)
回答No.2

 表のオンライン再定義が一番堅いかと思います。  DBMS_REDEFINITIONパッケージを使用します。表そのものは、短時間の間排他ロックされますが、作業中も引き続き使用が可能です。また、この際に列の追加・削除・変更なども可能です。最悪、主キーを変更することさえ可能ですが、之に際しては若干の制限が発生します。  残念ながら手順は結構長めですので、ここで書くには、ちょっと苦しいです。  マニュアルが参照できるようでしたら、データベース管理者ガイドの第3部「スキーマーオブジェクト」の第15章「表の管理」の4項目にある「表のオンライン再定義」を見てください。例示を含めて、結構わかりやすく書かれています。(部・章・項は、私の手元にある9iのマニュアルによります。ページは15-16ですが、もしバージョンが違うようでしたら、タイトルを参考にして探し出してください。)  マニュアルが手元にないようでしたら、たしか、オラクルのサイトから落とすこともできたはずです。「データベース管理者ガイド」と「データベース概要」、それに、「PL/SQL パッケージ・プロシージャおよびタイプ・リファレンス」「データベース・エラー・メッセージ」くらいは、最低限手元に置いておかれると何かと役にたつかと思います。

nono_taro
質問者

補足

お世話になります。 すごく良さそうな機能ですね。 検索したところEEの機能のようですが SEでも使えるかどうか試してみようと思います。 ※遅くなりましたがこちらで使っているバージョンは Oracle9i Release 9.2.0.7.0 StandardEditionです。

回答No.1

CASCADEオプションを使用してください。

nono_taro
質問者

補足

お世話になります。 消えてしまうなどは少しまずいので CASCADEオプションは使えない状態です。 CASCADEオプションに いったん無効にするような追加オプションはありますでしょうか?

関連するQ&A