oracle迁移到openGaussdb少序列问题处理

oracle版本11.0.2,高斯版本6.0.5极简版,借助mtk工具迁移数据库后,序列原库序列数量349个,迁移后只有178个,因为有的序列最大值超过高斯序列最大值9223372036854775807,迁移工具会将此类序列转换为CREATE LARGE SEQUENCE对象,此类对象在DataGrip管理工具中不会呈现,实际数据库内是有此对象的。

通过下面语句获取删除对象脚本,删除大值序列,统一改为正常的序列。

SELECT 'DROP LARGE SEQUENCE public.'||sequence_name||';' 删除语句,
sequence_name,
min_value,
max_value,
increment_by,
last_number AS curr_value, -- 当前已分配到的值
cache_size,
cycle_flag
FROM user_sequences
where max_value>9223372036854775807
ORDER BY sequence_name;

--创建序列
SELECT 'CREATE SEQUENCE public.'||sequence_name||' MINVALUE '||min_value||' MAXVALUE '||(case when max_value>9223372036854775807 then '9223372036854775807' else ''||max_value end)||' INCREMENT BY '
||increment_by||' START WITH '||last_number||(case when CACHE_SIZE>0 then ' CACHE '||CACHE_SIZE else '' end)|| decode(CYCLE_FLAG,'Y',' CYCLE','') 创建语句,
sequence_name,
min_value,
max_value,
increment_by,
last_number AS curr_value, -- 当前已分配到的值
cache_size,
cycle_flag
FROM user_sequences
ORDER BY sequence_name;

 

posted @ 2026-07-10 08:50  lybingyu  阅读(15)  评论(0)    收藏  举报