今天的DB发现了一个问题,就是所有的sequence不是最新的MAX ID,比较奇怪为什么通过Toad导出来的Sequence的Max值不是最新的,有可能是跟缓存有关,姑且不管他的原因,解决方法如下:
首先引用oracle同步sequence里面的同步更新方法:
create or replace procedure p_update_sequence(
i_sequence_name in varchar2,
i_table_name in varchar2,
i_id_column in varchar2
) is
v_sql varchar2(2000);
v_max_id number;
v_diff number;
begin
v_sql := 'select max(' || i_id_column || ') from ' || i_table_name;
execute immediate v_sql into v_max_id;
v_sql := 'select ' || v_max_id || ' - ' || i_sequence_name || '.nextval from dual';
execute immediate v_sql into v_diff;
if v_diff <= 0 then
return;
end if;
v_sql := 'alter sequence ' || i_seq