dポイントプレゼントキャンペーン実施中!

テーブルに列やインデックスの変更など、どんな変更しても、インポートすれば、エクスポート時のテーブルの状態に戻るのでしょうか?

環境:Oracle 10g R2
   Windows 2003 Server R2

ユーザー(スキーマ):userA
このスキーマには、3つ作成したテーブルあるとします。
tableA
tableB
tableC

[tableB]のテーブル定義を変更するのですが、失敗した時のために
バックアップをとっておき、変更前の状態に復元できるようにしたいと考えています。

テーブル定義の変更は、主キーの削除、インデックスの追加を行ないます。

[変更テーブルのみexp、imp]
1.exp userA/passA file=D:\expUserA_tableB.dmp tables=(tableB)
2.tableBのテーブル定義を変更 <-- 失敗
3.drop table tableB <-- 変更に失敗したテーブルを削除
4.imp userA/passA file=D:\expUserA_tableB.dmp tables=(tableB)

上記の方法で、変更前の状態に戻るでしょうか?
実行してtableBが変更前の(主キーがあり、作成したインデックスがない)テーブル定義に
戻っていることは確認できるのですが、この戻し方で本当に正しいのか確信がもてません。
例えば、統計情報とか、そのテーブルに紐付いている?情報も全て変更する前の状態に戻っているのでしょうか?

それとも、スキーマ(userA)をエクスポートし、スキーマ(userA)を削除し、
エクスポートしたスキーマをインポートしないと戻らないでしょうか?
よろしくお願いします。

A 回答 (1件)

こんにちは



tableBの表定義やインデックス、データに関しては、それでOKです。
統計情報に関しては別です。
変更後に再取得されていない場合は元のまま、取得されている場合は戻りません。
放っておけば取得し直しますし、手動で取得し直す(DBMS_STATS)事も可能です。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
taka451213さんの回答で、安心してテーブル変更を行えます。
本当にありがとうございました。m(_ _)m

お礼日時:2010/04/20 11:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!