- ベストアンサー
imp コマンドに関して
OS:winXp オラクル バージョン:10.2 ◎作業 1.testユーザをexpでバックアップ(BK1.dmp)を作成しました。 2.testユーザのテーブルのレコードを変更、削除追加などを行う 3.testユーザにimpでバックアップ(BK1.dmp)を行ったところ『一意制約エラーが発生します』のエラーが出ます。 (1)そのままのエラーだと思うのですが、この場合testユーザを再作成した方がいいのでしょうか? (2)1の状態に戻す方法が、他にもあるのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
impユーティティは以下の動きをします。 (1)オブジェクトを作成 ※オブジェクトが存在した場合はエラーとなる。 ignore=yで回避可能。 (2)データをインサート exp時点のデータを単純にインサートするだけ。 既にテーブルにデータが入っていれば重複する。 データを戻す場合はテーブルデータを削除(delete)してからimpします。 ユーザを削除すると、対象ユーザに対する操作(grant等)が 削除されるので、あまりやらない方が良いと思います。 まあ、exp時点に完全に戻したいなら、ユーザ削除からimpでも 良いと思います。
その他の回答 (1)
- jamshid6
- ベストアンサー率88% (591/669)
ユーザを作り直す方法もありますが、対象がテーブルだけなのであれば、テーブルを空にしてtables='%'で再実行してもいいのでは。 ヒープテーブルが含まれていればデータはダブって入っているでしょうから。
お礼
お礼が遅くなって申し訳ありません。 変更されたテーブルがすぐわかるのであればそれでもいいかもですね。 全テーブルをTRUNCATEするプロシージャを作ればいいんですかね。 それから、impを行えば『一意制約エラー』も起きないですね。 ありがとうございます。
お礼
お礼が遅くなって申し訳ありません。 手っ取り早いのは、ユーザ削除してユーザの再作成なんですかね? 『一意制約エラー』にならない条件があるのではと思いました。 レコードがあったら消して入れるみたいな。。。 ありがとうございました。