让SEQUENCE记录不变的信息【RECORD STATIC NUMBER IN SEQUENCE】

    大家都知道ORACLE的SEQUENCE这个“发号器”。一般来讲做为记录的辨别唯一数据信息是常常会用到的。通过NEXTVAL得到相关“可变”数值。(通过CURRVAL得到上一次执行NEXTVAL的数值)
    但是它的一个不起眼的参数,却是记录一些重要的“不变”信息。这个参数就是minvalue,通常情况下我们如果在建立序列时,如果不指定,这个minvalue的值就是1。并且很多情况下,这个参数都不会引起大家的注意。但是有时这个参数会很起作用!
    在一次数据库割接后,应用开始运行。但因后来发现应用存在问题,XX移动要求切回原数据库上的应用。但是问题是当时新应用已经在新数据库上运行了几个小时,在切回原数据库后原应用又运行了近一天时间。次日,在重新割接数据库。一个重要问题就出现了,新应用在新数据库上曾经运行了几个小时,其中一张核心数据记录表确实在这几个小时中发生了变化。
    还好,这个表使用序列生成的值作为唯一索引,而我在新库中创建序列时,是使用了minvalue的(即在创建之时minvalue=start with),这个值没有变,我可以通过查询大于等于这个minvalue的值来确定!
     并且这个属性可以通过语句进行修改:
     alter sequence xx minvalue XX;

     -----
     作为DBA要找多种手段,给自己留“后路”
   
 
   
  
  

你可能感兴趣的:(oracle,职场,sequence,休闲)