序列異常導致災備端應用異常處理一則

湖湘文化發表於2013-11-15
從今天起,陸續將以前整理的文件發表記錄下來。

 

災備環境災備端oracle資料庫一個序列異常導致部分業務應用功能無法使用

現象:

生產端exp匯出,傳輸到災備端,imp匯入。

災備端用cms/abc訪問資料庫,執行以下sql語句:

select max(articleid) from slib ;

select seq_slib.nextval from dual;

正常情況下,第一條語句返回的值應該比第二條語句返回的值小(比如100,117),可是現實情況剛好相反(117,100),開發工程師說就是因為這個序列異常導致該功能無法正常使用了,報錯違反唯一性約束;

解決方法:

如果要修改start with即初始值,只能先刪除該序列drop,然後再重新建(但是使用該方法不知道怎麼實現自動化);後來發現可以先修改increment 、取一下nextval, 再改回increment..

於是新加了一個指令碼sequence.sql (實現自動化)內容如下所示:

conn cmsuser02/xyz
alter sequence seq_slib increment by 20;
select seq_slib.nextval from dual;
alter sequence seq_slib increment by 1;
commit;
exit;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21256317/viewspace-776722/,如需轉載,請註明出處,否則將追究法律責任。

相關文章