问题描述:
在用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;