※ ChatGPTを利用し、要約された質問です(原文:インポートすれば、前の情報に戻るのでしょうか?)
テーブル定義を変更してもインポートすれば元の状態に戻る?
このQ&Aのポイント
テーブル定義を変更しても、インポートすればエクスポート時のテーブルの状態に戻るかどうかについて確認しています。
テーブルの変更後、テーブルを削除してからインポートする方法で変更前の状態に戻ることは確認できていますが、全ての情報が変更前の状態に戻るのか疑問です。
スキーマをエクスポートし、スキーマを削除してからエクスポートしたスキーマをインポートする方法も考えられます。どちらが正しいか教えてください。
テーブルに列やインデックスの変更など、どんな変更しても、インポートすれば、エクスポート時のテーブルの状態に戻るのでしょうか?
環境: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)を削除し、
エクスポートしたスキーマをインポートしないと戻らないでしょうか?
よろしくお願いします。
お礼
回答ありがとうございます。 taka451213さんの回答で、安心してテーブル変更を行えます。 本当にありがとうございました。m(_ _)m