oracle导出序列的几种办法

方法一:

  1.  
    select 'create sequence ' ||sequence_name||
  2.  
    ' minvalue ' ||min_value||
  3.  
    ' maxvalue ' ||max_value||
  4.  
    ' start with ' ||last_number||
  5.  
    ' increment by ' ||increment_by||
  6.  
    ( case when cache_size= 0 then ' nocache' else ' cache ' ||cache_size end) || ';'
  7.  
    from dba_sequences where sequence_owner= 'JXDB' ;-- JXDB貌似要大写才行

执行此操作后会生成创建序列的语句

方法二:

select dbms_metadata.get_ddl('SEQUENCE',u.object_name) from user_objects u where object_type='SEQUENCE'

方法三:

用plsql,直接用鼠标操作,右边对象窗口,找到Sequences,在要导出的序列名称上右键--查看,然后点击右下角的查看sql,即可查看该序列的创建sql,然后复制即可

 

 

 

 

 

 

实验:Oracle数据泵导出导入之序列问题

注:本文来源于《实验:Oracle数据泵导出导入之序列问题
使用数据泵expdp导出1个schema,有个表主键是触发器自增的id,导入测试库测试时,发现表里的数据比自增序列的值要大。导致插入数据报错。
最终结论是:
由于数据库先进行序列导出,然后再进行表数据导出。然后在导出的过程中,该表一直有插入操作,最终导致了这种差异。
解决方法:
重建触发器中的序列,让序列的开始值为表主键最大值+1。

下面我构造实验完整演示下这种场景。

  • 3.进行数据泵导出操作
  • --重新创建序列 drop sequence book2_seq; create sequence book2_seq start with 506 increment by 1;

    至此,整个实验完成。

为人:谦逊、激情、博学、审问、慎思、明辨、 笃行
学问:纸上得来终觉浅,绝知此事要躬行
为事:工欲善其事,必先利其器。
转载请标注出处!