ORACLE用IMP恢复时,出现违反唯一索引,访问拒绝

2025-12-13 21:17:59
推荐回答(1个)
回答1:

那是因为目标表中存在数据,或者目标表中的某个记录和被导入数据的某个记录相同。假设你的表中有两个字段分别是id,name目标表中的id是1to1000,而你要导入的文件中id列也是1to1000那你的id列上又有唯一约束,就肯定冲突了,也就导不进去,可以利用update把目标表中的id增加1000让他变成1001to2000,然后再导入应该就没有问题了。

启用archive log模式:
把数据库启动到mount模式下,把相应的表空间脱机,命令是:
alter database datafile n offline; ---n代表文件号
alter tablespace tabspace_name offline;--tabspace_name 为相应的表空间名;
用上面两种方法中的一种就可以;
然后打开数据库
alter database open;
把备份的表空间文件拷贝回来;
恢复:
recover tablespace tabspace_name;
把表空间联机
alter database datafile n online;
alter tablespace tabspace_name online;
成功!!

noarchive log模式
关闭数据库
直接把备份的表空间文件拷贝回来,覆盖原表空间文件;
打开数据库即可。

如果你用的是 exp 就不能用上面的命令,只能清空表,或者把表中的字段修改一下,方法见第一段。

清空表
truncate table table_name;
这条语句不能回滚,也就是说清空后,就找不回来了,想好在做。