前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle 序列重建

Oracle 序列重建

作者头像
码客说
发布2019-10-22 14:27:09
1.1K0
发布2019-10-22 14:27:09
举报
文章被收录于专栏:码客

简介

在导出数据的时候 数据库会先导出序列 再导出表数据 就会导致表中的id大于序列的值 导致新插入数据时 报唯一约束错误

这时候我们可以重建序列 具体步骤为

  • 1 生成创建序列语句
  • 2 生成删除序列语句
  • 3 执行删除序列语句
  • 4 执行创建序列语句

生成创建序列语句

注意修改语句中的username

代码语言:javascript
复制
SELECT ' create sequence username.' || SEQUENCE_NAME ||   
       ' minvalue ' || MIN_VALUE ||   
       ' maxvalue ' || MAX_VALUE ||   
       ' start with ' || LAST_NUMBER ||   
       ' increment by ' || INCREMENT_BY ||   
       ' cache ' || CACHE_SIZE || ' ;'  
FROM USER_SEQUENCES;

这里说一下 如果序列设置nocache 那么上面获取的CACHE_SIZE就会为0 执行创建语句时会报 cache 必须大于1的错误 所以可以在导出时设置个值

代码语言:javascript
复制
SELECT ' create sequence username.' || SEQUENCE_NAME ||   
       ' minvalue ' || MIN_VALUE ||   
       ' maxvalue ' || MAX_VALUE ||   
       ' start with ' || LAST_NUMBER ||   
       ' increment by ' || INCREMENT_BY ||   
       ' cache 10;'  
FROM USER_SEQUENCES;

或者用这个SQL(跟上面结果一样)

代码语言:javascript
复制
select dbms_metadata.get_ddl('SEQUENCE',u.object_name) from user_objects u where object_type='SEQUENCE';

同理要想查询创建表的语句可以这样写

代码语言:javascript
复制
select dbms_metadata.get_ddl('TABLE',u.object_name) from user_objects u where object_type='TABLE';

上面的那个查询建表语句的效率不高 下面这个会高一点

代码语言:javascript
复制
-- 全查
select dbms_metadata.get_ddl('TABLE',TABLE_NAME,user) from user_tables where table_name=&tab;
代码语言:javascript
复制
-- 查询某个表
select dbms_metadata.get_ddl('TABLE',TABLE_NAME,user) from user_tables where table_name=&tab;

关于cache

一般情况下都建议使用cache 如果要保证生成的id必须是连续的则设置nocache

生成删除序列语句

代码语言:javascript
复制
SELECT ' drop sequence username.' || SEQUENCE_NAME ||';' FROM USER_SEQUENCES;

怎样方便的得到生成的sql语句

我使用的工具是Oracle SQL Developer

上面的两步都可以在查询结果中生成一堆的sql语句 怎样把他们获取呢 一行一行复制实在是太慢了

我们可以在查询结果右键 –> 导出 格式选择text 左定界符右定界符设置为空 设置导出文件位置 下一步 –> 完成

得到的文件中第一行是没用的 删掉即可

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-04-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
    • 生成创建序列语句
      • 生成删除序列语句
        • 怎样方便的得到生成的sql语句
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档