灾备环境灾备端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博客 ” ,链接:https://blog.itpub.net/21256317/viewspace-776722/ ,如需转载,请注明出处,否则将追究法律责任。