電子書籍の厳選無料作品が豊富!

OS:winXp
オラクル バージョン:10.2

◎作業
1.testユーザをexpでバックアップ(BK1.dmp)を作成しました。
2.testユーザのテーブルのレコードを変更、削除追加などを行う
3.testユーザにimpでバックアップ(BK1.dmp)を行ったところ『一意制約エラーが発生します』のエラーが出ます。

(1)そのままのエラーだと思うのですが、この場合testユーザを再作成した方がいいのでしょうか?
(2)1の状態に戻す方法が、他にもあるのでしょうか?

A 回答 (2件)

impユーティティは以下の動きをします。



(1)オブジェクトを作成
※オブジェクトが存在した場合はエラーとなる。
 ignore=yで回避可能。
(2)データをインサート
 exp時点のデータを単純にインサートするだけ。
 既にテーブルにデータが入っていれば重複する。

データを戻す場合はテーブルデータを削除(delete)してからimpします。
ユーザを削除すると、対象ユーザに対する操作(grant等)が
削除されるので、あまりやらない方が良いと思います。

まあ、exp時点に完全に戻したいなら、ユーザ削除からimpでも
良いと思います。
    • good
    • 0
この回答へのお礼

お礼が遅くなって申し訳ありません。
手っ取り早いのは、ユーザ削除してユーザの再作成なんですかね?
『一意制約エラー』にならない条件があるのではと思いました。
レコードがあったら消して入れるみたいな。。。
ありがとうございました。

お礼日時:2008/09/11 21:34

ユーザを作り直す方法もありますが、対象がテーブルだけなのであれば、テーブルを空にしてtables='%'で再実行してもいいのでは。


ヒープテーブルが含まれていればデータはダブって入っているでしょうから。
    • good
    • 0
この回答へのお礼

お礼が遅くなって申し訳ありません。
変更されたテーブルがすぐわかるのであればそれでもいいかもですね。
全テーブルをTRUNCATEするプロシージャを作ればいいんですかね。
それから、impを行えば『一意制約エラー』も起きないですね。
ありがとうございます。

お礼日時:2008/09/11 21:29

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