數據泵邏輯遷移後sequence的唯一衝突

前言

總結一個老生常談的話題,利用數據泵執行邏輯導入時,經常會碰到sequence發生唯一衝突的問題,本文總結解決方式

原因

impdp執行導入時,按順序先導入sequence(假定此時currval是100)而後導入表,但如果在這之間有人向表中插入數據或其它方式導致sequence被調用,導致此時currval增加到1000。數據導入完成後,sequence是從100開始取值,而100-1000的sequence已經被佔用,導致唯一衝突


解決方式:

1.在dest端 drop掉sequence,從source端獲取sequence的元數據到dest重新創建

2.數據庫至於RESTRICT SESSION模式下,執行導出

3.將SEQUENCE的CACHE設置爲一個較大的值,確保導出序列和導出表數據之前的時間內,序列CACHE的值不會被用完,這就保證了導入後不會出現序列值的NEXTVAL小於表中已有數據的情況




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章