expdp / impdp后的Oracle序列解压缩

t1qtbnec  于 2023-10-16  发布在  Oracle
关注(0)|答案(1)|浏览(155)

我有两个数据库PROD和TEST运行在Oracle 19上。我不时地用一个使用expdp制作的PROD副本刷新TEST。复制在PROD数据库运行时完成。刷新后的TEST模式将被删除,然后在impdp之前再次创建。TEST刷新完成后,某些序列不是最新的:当我们的应用程序执行一个seq.nextval时,它得到一个已经在表中使用过的值,因此使用该值的查询失败。
是否有一个参数添加到expdp参数文件中,以获取要导出的序列的最新值?或者问题是由其他原因引起的?

s5a0g9ez

s5a0g9ez1#

复制在PROD数据库运行时完成。
这听起来像是你最终得到了一个不一致的导出,因为在执行它的时候有活动在进行,包括在捕获它们的状态之后递增序列的东西。当使用较高序列值的表稍后导出时,它在序列导出之前有一个值。
你可以使用FLASHBACK_TIME参数(或FLASHBACK_SCN)来使它保持一致,只要你配置了足够的撤销/保留:
数据泵导出命令行实用程序FLASHBACK_TIME参数查找与指定时间最匹配的SCN。此SCN用于启用闪回实用程序。导出操作使用与此SCN一致的数据执行。
你可以指定一个特定的时间,但是根据你的描述,你可能只能使用:用途:

  1. FLASHBACK_TIME=systimestamp

您也可以在导入后将所有序列调整为最高的实际值,但这需要更多的工作。

相关问题