Oracle Data Pump导出包含错误的序列
最近,我们通过发出以下呼吁对我们的出产数据库举办了及时/在线备份: expdp system/******@SID FULL=y DIRECTORY=data_pump_dir DUMPFILE=full_prod.dmp LOGFILE=full_prod_export.log JOB_NAME=prod_backup 没有错误也没有告诫. 然后,我们通过发出以下内容获取此转储并从中建设了很多开拓职员数据库: impdp system/******@SID SCHEMAS=MY_SCHEMA DIRECTORY=data_pump_dir DUMPFILE=full_prod.dmp LOGFILE=full_prod_import.log 同样,没有错误也没有告诫. 一旦配置了开拓职员情形,开拓职员就会启动他们的应用措施并实行插入一些测试数据.前屡次实行因主键违规而失败.颠末一些发掘,功效证明缓存的序列(NOCACHE序列很好)凡是落伍于一个或两个值. 一个例子是我们的接洽表的序列: CREATE SEQUENCE REQ_CONTACT_SEQ START WITH 213041 MAXVALUE 999999999999999999999999999 MINVALUE 1 NOCYCLE CACHE 20 NOORDER; Oracle为此序列表现最后一个缓存值213041.此刻,当我运行以下查询时: SELECT MAX(id) FROM REQ_CONTACT; Oracle返回213042.很明明,这个值比序列高1. 以是……我的题目是,我们是否只获得了这个功效,由于我们在出产进程中回收了数据导出 – 即数据库是否存在开放和勾当的毗连?可能数据泵是否有缓存序列的题目?我们行使的是Oracle 10.2.0.4. 感谢, 办理要领我信托你的假设是正确的,由于情形是有用的而且有开放的接洽.在已往的几年里,我一向在行使Oracle 10.2.0.4对我们的开拓呆板执行沟通的进程,而且必需建设一个我在出产导出导入上运行的剧本. 我根基大将每个题目序列递增100,然后将增量值配置回1. alter sequence [sequence_name] increment by 100; select [sequence_name].nextval from dual; alter sequence [sequence_name] increment by 1; select [sequence_name].nextval from dual; commit; 在我们的例子中,我们看到主键束缚错误.跟着时刻的推移,我已经向我的剧本添加了每个表现PK束缚错误的序列. 每隔一段时刻,我就会因新的PK束缚错误而措手不及,而且必需调解剧本并添加新序列. 我正在思量建设一个增进每个序列的变体,这样可以防备任何新的PK束缚错误呈现. 我老是认为稀疏的是Oracle没有步伐更正这个题目,也没有找到网上任何人的“简朴”办理方案.这将是一些剧本查询每个max(id)并将其与当前序列值举办较量,并将其增进差别. 我还传闻过行使某种“状态”变量运行expdp(export datapump)的要领,这会导致它在整个导出进程中保持状态.假如我找到任何内容,我会更新帖子. 编辑:添加到expdp以维护导出数据的参数是“同等= y” Oracle datapump details (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |