问题描述:
在用exp/imp导入导出数据库的时候,新的库经常出到序列小于表中最大值的情况。一直都不知道问题出在了什么地方,后来经同事提醒才恍然大悟,在exp的时候,应用程序是没有停止的,也就是说,命令在执行的过程中,先导出了序列,然后再导的表,而表的数据一直在增加,所以出现此情况。
解决方法:
知道问题所在了,那就知道解决方案了。
1:工具:导出库后,再用PLSQL把序列导出来(命令窗口不行,因为exp不能只导序列),导入库后重建序列。
2:手工:导出库后,使用SQL生成建序列脚本,导入库后重建序列。
SELECT ' create sequence username.' || SEQUENCE_NAME || ' minvalue ' || MIN_VALUE || ' maxvalue ' || MAX_VALUE || ' start with ' || LAST_NUMBER || ' increment by ' || INCREMENT_BY || ' cache ' || CACHE_SIZE || ' ;' FROM USER_SEQUENCES;