日期:2014-05-17  浏览次数:20683 次

问一个oracle中关于序列的问题
因为数据库换服务器,所以把所有的相关对象都移植到新的服务器上,自然,序列也要移植过去,我想问下,序列移植过去的话,这个序列应该从哪个数字开始呢?难不成从最小的一个数字开始?如果这样的话,会不会出现主键冲突?
比方说,序列SEQ_META_LOG 移植到新的数据库服务器上,但是,其相关的表 t_meta_log也移植过来,而且数据也有了,但是该表的主键的最大值是10000,如果,序列SEQ_META_LOG 从最小的开始,比方说从100开始计数,那将来肯定会有主键冲突吧
请求解决办法

------解决方案--------------------
创建序列的时候可以指定最小值
例如
SQL code
create sequence seq minvalue 10000;

------解决方案--------------------
个人认为序列不会重置的,本身序列有last_number存在数据字典中的
------解决方案--------------------
实在不放心,写个过程,批量去将seq进行提位

--1、获得原有表最大主键的取值
--2、获得迁移过来序列的NEXTVAL
--3、取最大取值 与 NEXTVAL的差
--4、如果差>0则,循环取差值+1000次NEXTVAL的值.