我有两个数据库PROD和TEST运行在Oracle 19上。我不时地用一个使用expdp制作的PROD副本刷新TEST。复制在PROD数据库运行时完成。刷新后的TEST模式将被删除,然后在impdp之前再次创建。TEST刷新完成后,某些序列不是最新的:当我们的应用程序执行一个seq.nextval时,它得到一个已经在表中使用过的值,因此使用该值的查询失败。是否有一个参数添加到expdp参数文件中,以获取要导出的序列的最新值?或者问题是由其他原因引起的?
s5a0g9ez1#
复制在PROD数据库运行时完成。这听起来像是你最终得到了一个不一致的导出,因为在执行它的时候有活动在进行,包括在捕获它们的状态之后递增序列的东西。当使用较高序列值的表稍后导出时,它在序列导出之前有一个值。你可以使用FLASHBACK_TIME参数(或FLASHBACK_SCN)来使它保持一致,只要你配置了足够的撤销/保留:数据泵导出命令行实用程序FLASHBACK_TIME参数查找与指定时间最匹配的SCN。此SCN用于启用闪回实用程序。导出操作使用与此SCN一致的数据执行。你可以指定一个特定的时间,但是根据你的描述,你可能只能使用:用途:
FLASHBACK_TIME
FLASHBACK_SCN
FLASHBACK_TIME=systimestamp
您也可以在导入后将所有序列调整为最高的实际值,但这需要更多的工作。
1条答案
按热度按时间s5a0g9ez1#
复制在PROD数据库运行时完成。
这听起来像是你最终得到了一个不一致的导出,因为在执行它的时候有活动在进行,包括在捕获它们的状态之后递增序列的东西。当使用较高序列值的表稍后导出时,它在序列导出之前有一个值。
你可以使用
FLASHBACK_TIME
参数(或FLASHBACK_SCN
)来使它保持一致,只要你配置了足够的撤销/保留:数据泵导出命令行实用程序FLASHBACK_TIME参数查找与指定时间最匹配的SCN。此SCN用于启用闪回实用程序。导出操作使用与此SCN一致的数据执行。
你可以指定一个特定的时间,但是根据你的描述,你可能只能使用:用途:
您也可以在导入后将所有序列调整为最高的实际值,但这需要更多的工作。