对序列进行迁移时产生间断的原因

我们知道创建序列时,会有默认的或者指定的 n个值会cache到内存中,当数据库所在的服务器down 机或者迁移序列时,会发生序列丢失的问题。现在就第二种进行实验。这里并没有什么方法可以解决序列 间隔的问题,如果有,也请大家给以事例。
yang@rac1>create sequence yang_seq ;
Sequence created.
yang@rac1>select yang_seq.nextval from dual;
   NEXTVAL
----------
         1
yang@rac1>/
   NEXTVAL
----------
         2
yang@rac1>/
   NEXTVAL
----------
         3
yang@rac1>/
   NEXTVAL
----------
         4
yang@rac1>/
   NEXTVAL
----------
         5
yang@rac1>/
   NEXTVAL
----------
         6
yang@rac1>/
   NEXTVAL
----------
         7
导出序列:
oracle@rac1:rac1 /tmp>expdp yang/yang  directory=dumpdir dumpfile=sequence.dmp  include=sequence  
Export: Release 11.2.0.1.0 - Production on Fri Apr 1 22:59:31 2011
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
Starting "YANG"."SYS_EXPORT_SCHEMA_01":  yang/******** directory=dumpdir dumpfile=sequence.dmp include=sequence
Estimate in progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 0 KB
Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE
Master table "YANG"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************
Dump file set for YANG.SYS_EXPORT_SCHEMA_01 is:
  /tmp/dump/sequence.dmp
Job "YANG"."SYS_EXPORT_SCHEMA_01" successfully completed at 23:01:06
删除序列
yang@rac1>drop sequence yang_seq;
Sequence dropped.
导入序列:
oracle@rac1:rac1 /tmp>impdp yang/yang  directory=dumpdir dumpfile=sequence.dmp  table_exists_action=skip include=sequence  
Import: Release 11.2.0.1.0 - Production on Fri Apr 1 23:06:21 2011
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
Master table "YANG"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
Starting "YANG"."SYS_IMPORT_FULL_01":  yang/******** directory=dumpdir dumpfile=sequence.dmp table_exists_action=skip include=sequence
Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE
Job "YANG"."SYS_IMPORT_FULL_01" successfully completed at 23:07:21
再次验证:
yang@rac1>select yang_seq.nextval from dual;

   NEXTVAL
----------
        21
从7 间断了13个 (注意:默认的是20个)
从下面的实验中可以看出 我们导入sequence时 数据库都做了什么:
oracle@rac1:rac1 /tmp>impdp yang/yang  directory=dumpdir dumpfile=sequence.dmp   SQLFILE=seq.sql                                               
Import: Release 11.2.0.1.0 - Production on Fri Apr 1 23:15:16 2011
Data Mining and Real Application Testing options
Master table "YANG"."SYS_SQL_FILE_FULL_01" successfully loaded/unloaded
Starting "YANG"."SYS_SQL_FILE_FULL_01":  yang/******** directory=dumpdir dumpfile=sequence.dmp SQLFILE=seq.sql
Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE
Job "YANG"."SYS_SQL_FILE_FULL_01" successfully completed at 23:16:13

oracle@rac1:rac1 /tmp>cd dump
oracle@rac1:rac1 /tmp/dump>ls
export.log  import.log  seq.sql  sequence.dmp  t.dmp
oracle@rac1:rac1 /tmp/dump>cat seq.sql
-- CONNECT YANG
ALTER SESSION SET EVENTS '10150 TRACE NAME CONTEXT FOREVER, LEVEL 1';
ALTER SESSION SET EVENTS '10904 TRACE NAME CONTEXT FOREVER, LEVEL 1';
ALTER SESSION SET EVENTS '25475 TRACE NAME CONTEXT FOREVER, LEVEL 1';
ALTER SESSION SET EVENTS '10407 TRACE NAME CONTEXT FOREVER, LEVEL 1';
ALTER SESSION SET EVENTS '10851 TRACE NAME CONTEXT FOREVER, LEVEL 1';
ALTER SESSION SET EVENTS '22830 TRACE NAME CONTEXT FOREVER, LEVEL 192 ';
-- new object type path: SCHEMA_EXPORT/SEQUENCE/SEQUENCE
 CREATE SEQUENCE  "YANG"."YANG_SEQ"  MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 21 CACHE 20 NOORDER  NOCYCLE ;
每次导入队列时,会从cache 的 N+1 开始(N 为创建序列时cache 在内存中的值 )。这就是为什么会出现间断了。

时间: 2024-08-01 01:21:47

对序列进行迁移时产生间断的原因的相关文章

windows 2000进行converter迁移时,提示需要scsiport.sys的解决方法

当使用convert对windows2000进行P2V迁移时,你可能会收到一条提示,提示源系统上的scsiport.sys版本必须升级.convert请求升级的版本是5.0.2195.7017,然而,即使有该版本的文件,convert也可能提示你遇到问题或无法继续.同样,如果你提供了较老的版本(例如:5.0.2195.6713)或更高版本(例如:5.0.2195.7059),convert也可能提示这些版本会引起问题,您将无法转换源系统. 为了通过这一步继续进行转换工作,我们发现Windows

探讨Java与Ruby语言迁移时的安全性

在这篇文章中,我们将要探讨Java与Ruby语言迁移时风险预测方面的问题. 通常来说,"使用Ruby具有风险"是一种普遍的看法,这存在一定的原因.因为使用新的语言天生是有风险的.随着Ruby on Rails逐步进入到主流的开发领域中,这样的风险将会随时间逐渐降低,因为有逐步增长的开发者群.组件(或称作gems和plug-ins)相关的书籍.以及业务合作伙伴与你沟通交流.但同时你也可以听到主流的观点指出"使用Java是安全的".对于这种的观点,我持有强烈的反对意见.

三种云迁移时所要注意的错误

当今,在IT行业,云计算已经快被"宠幸"的不行了.IT企业纷纷追逐,不过他们在向云平台迁移时也会遇到很多类似于云的形式和云平台的品牌,还有采取哪种方式进行迁移会更好这样那样的因素.然而,大多数企业为了急于要把云平台作为他们的操作系统,在进行迁移时通常并不怎么考虑性能问题,这也就导致他们犯下严重的错误,在性能上损失巨大.我们应该要尽早了解,尽早避免,匆匆忙忙的转向云平台可能会让IT应用运行起来是非常痛苦的. 普遍的错误有三个: 强行移植代码,而不根据云平台做本地化修改. 不考虑I/O调度

Ruby on Rails迁移时的一些注意事项_ruby专题

    把 schema.rb 保存在版本管控之下.     使用 rake db:scheme:load 取代 rake db:migrate 来初始化空的数据库.     使用 rake db:test:prepare 来更新测试数据库的 schema.     避免在表里设置缺省数据.使用模型层来取代. def amount self[:amount] or 0 end     然而 self[:attr_name] 的使用被视为相当常见的,你也可以考虑使用更罗嗦的(争议地可读性更高的)

基于Xen的虚拟机迁移时内存优化算法

基于Xen的虚拟机迁移时内存优化算法 陈廷伟   张璞   张忠清 为了在云计算环境下进行虚拟机迁移,Xen迁移时采用比较传递页位图和跳过页位图的方式来判断内存页是否重传.针对页位图比较带来多次重传增加网络传送开销的问题,提出基于AR模型的内存优化算法,该算法根据所有记录的内存页修改时间间隔来预测内存页的下次修改时间,当下次修改时间大于某个阈值时进行重传.实验结果表明,基于AR模型的内存优化算法缩短了虚拟机迁移的时间,减少了虚拟机迁移时的网络开销,保证了同台服务器上其它虚拟机的网络带宽应用. 基

EntityFramework Core迁移时出现数据库已存在对象问题解决方案

前言 刚开始接触EF Core时本着探索的精神去搞,搞着搞着发现出问题了,后来就一直没解决,觉得很是不爽,借着周末好好看看这块内容. EntityFramework Core迁移出现对象在数据库中已存在 在EF Core之前对于迁移的命令有很多,当进行迁移出现对象已在数据库中存在时我们通过如何命令即可解决: Add-Migration Initial -IgnoreChanges 但是在EF Core对于迁移现如今只存在如下两个命令: dotnet ef migrations add <<mi

不能摸着石头过河——云平台迁移时的七个复杂问题

现在已经有越来越多的大企业禁不住应用软件厂商的几番诱惑,开始考虑把原来在私有数据中心运行的大型应用系统向云端迁移.而关于云计算的商业价值,各种各样的云计算服务商们通常都会告诉企业:云计算可以帮助企业节省成本,增强IT系统与业务灵活性,加快应用部署速度,增强业务创新能力-相比复杂的传统应用,使用云计算服务更是像打开空调开关一样简便,甚至企业的CMO和销售主管都可以自行搞定.但在现实中,企业"云端漫步"的道路从来都不是康庄大道,而是隐藏着各种陷阱和困难. 事实上,成功建设一个云计算平台或者

c++中编译时出现乱码的原因可能有哪些啊??

问题描述 c++中编译时出现乱码的原因可能有哪些啊?? 下面这个程序就是编译时没错误,运行乱码了,问题出在哪啊?求指导 #include #include using namespace std; class Triangle { public: void setABC(double x,double y,double z) { if(zx+y) cout<<"输入错误,请重新输入:"< cin>>x>>y>>z; } void g

vuejs在解析时出现闪烁的原因及防止闪烁的方法_javascript技巧

原因: 在使用vuejs.angularjs开发时,经常会遇见在如Chrome这类能够快速解析的浏览器上出现表达式({{ express }} ),或者是模块(div)的闪烁.对于这个问题由于JavaScript去操作DOM,都会等待DOM加载完成(DOM ready).对于vuejs.angularjs这些会在DOM ready完会才回去解析html view Template,所以对于Chrome这类快速的浏览器你会看见有闪烁的情况出现.而对于IE7,8这类解析稍慢的浏览器大部分情况下是不会