[20120213]段延迟提交以及sequence.txt

1. 测试环境:
SQL> select * from v$version ;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

SQL> create sequence test_seq1;
Sequence created.

2.开始测试:
SQL>select DBMS_METADATA.get_ddl ('SEQUENCE','TEST_SEQ1') from dual;
DBMS_METADATA.GET_DDL('SEQUENCE','TEST_SEQ1')
----------------------------------------------------------------------------------------------------------------------------------------------
CREATE SEQUENCE  "SCOTT"."TEST_SEQ1"  MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER  NOCYCLE

--可以发现,这样建立的sequence,缺省start=1,cache=20,NOORDER  NOCYCLE,步进=1.

SQL> select test_seq1.nextval from dual ;
   NEXTVAL
----------
         1

SQL> select test_seq1.currval from dual ;
   CURRVAL
----------
         1

--现在建立一张表,插入数据看看。

create table test_seq(id number,name varchar2(10));

SQL> insert into test_seq values (test_seq1.nextval,'test');
1 row created.

SQL> commit ;
Commit complete.

SQL> select * from test_seq;
        ID NAME
---------- ----------
         3 test

--可以发现跳过了2,直接是3.
--BTW,今天我才知道问题的原因。实际上在以前的一些学习中,我已经遇到这个问题,我自己并没有在钻研下去,看来这个就是高手与低手之间的区别。
--主要是段延迟建立的特性引起的。
http://mwidlake.wordpress.com/2011/11/17/skipped-initial-sequence-value-on-oracle-11-2/
http://orawin.info/blog/2010/04/25/new-features-new-defaults-new-side-effects/

    {update, see the post comments and this post by Niall – this is a side effect of delayed segment creation – the first insert
silently fails, but gets the sequence, and is repeated behind the scenes once the segment is there. It is fixed in 11.2.0.3, my db
is at 11.2.0.1 as I got sick of the download of the latest version failing on my poor broadband connection and got it off a mate –
turns out it is not the latest version.}

3.建立一个没有段延迟的表:
SQL> drop table test_seq purge;
Table dropped.

SQL> drop sequence test_seq1;
Sequence dropped.

SQL> create sequence test_seq1;
Sequence created.

SQL> create table test_seq(id number,name varchar2(10)) SEGMENT CREATION IMMEDIATE;
Table created.

SQL> insert into test_seq values(test_seq1.nextval,'test');
1 row created.

SQL> commit ;
Commit complete.

SQL> select * from test_seq;
        ID NAME
---------- ----------
         1 test

--可以发现插入的序号从1开始。    

时间: 2024-10-14 16:33:59

[20120213]段延迟提交以及sequence.txt的相关文章

[20170428]延迟块清除测试.txt

[20170428]延迟块清除测试.txt --//做一个延迟块清除测试,前面的测试太乱了,思路非常不清楚. 1.环境: SCOTT@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER ------------------------------ -------------- ------------------------------------------------------------------

[20170420]关于延迟块清除2.txt

[20170420]关于延迟块清除2.txt --昨天做延迟块清除测试时,有一个问题我自己一直没搞明白,就是把表空间设置为只读的情况下,当访问块时, --由于没法更新对应块,不知道为什么每次重启数据库,正常undo的事务槽不可能这么块覆盖,为什么ora_rowscn --总是变化,而且取的是control scn,要认真探究一下问题在那里. 1.环境: SCOTT@book> @ &r/ver1 PORT_STRING                    VERSION        BA

由于不台明白JS代码,下面的这段保存提交的逻辑能不能讲解下,还有下面的问题,谢谢!

问题描述 由于不台明白JS代码,下面的这段保存提交的逻辑能不能讲解下,还有下面的问题,谢谢! ajax({ type: 'POST', url: 'ajaxhelper.aspx?action=save', dataType: "json", data: { data: submitjson }, timeout: 30000, onSuccess: function (data) { var submitResult = eval('(' + data + ')'); if (sub

网秦股价重挫近30%创10个月最低水平 再度延迟提交年报

网秦股价重挫近30%创10个月最低水平 再度延迟提交年报5月16日消息,据国外媒体报道,遭浑水二度做空后的网秦(NYSE:NQ)股价遭重挫,单日跌幅近30%.近10个月,该股已累计下跌68%.同日,网秦宣布再度再度延迟提交年报.网秦在声明中称,由于年报需要进一步完善,无法按时以20-F报表形式提交,争取尽快提交截止12月31日的2013年年报.美东部时间 下午1点,网秦美国存托股跌至7.62美元,创下10个月以来的最低水平.自"浑水"指控网秦存在"严重欺诈"后,该公

[20170420]关于延迟块清除3.txt

[20170420]关于延迟块清除3.txt --昨天做延迟块清除测试时,有一个问题我自己一直没搞明白,就是把表空间设置为只读的情况下,当访问块时, --由于没法更新对应块,不知道为什么每次重启数据库,正常undo的事务槽不可能这么块覆盖,为什么ora_rowscn --总是变化,而且取的是control scn,要认真探究一下问题在那里. --上午测试没有测试出来,链接http://blog.itpub.net/267265/viewspace-2137714/ => [20170420]关于

[20130803]12C在表中使用sequence.txt

[20130803]12C在表中使用sequence.txt 记得以前学习数据库的时候,第1个接触的数据库是informix,里面可以在表上定义顺序号,这样在插入时无需指定,保证唯一.(也许记忆有错,毕竟很久没使用它了).oracle 12c开始支持这种特性,我的感觉这些主要为了别的数据库移植到oracle上来. 做一个测试看看: SQL> @ver BANNER                                                                   

[20121227]dataguard下执行延迟recover的问题.txt

[20121227]dataguard下执行recover managed standby database disconnect from session delay 720.txt recover managed standby database disconnect from session delay 720 ;alter database recover managed standby database disconnect from session delay 720 ; 100.3

C# 每隔一段时间读取一次TXT文件

问题描述 现在我写了一个程序是可以将数据每30秒写入TXT文件里面,现在就是想弄一个程序,从创建的TXT文件第一次被修改的时间开始,每30秒对TXT文件进行一次读取 解决方案 解决方案二:每次都创建一个新的txt,按照规律来命名文件名称.读取的时候就读txt就行,读完一个删一个解决方案三:引用1楼yan13641141502的回复: 每次都创建一个新的txt,按照规律来命名文件名称.读取的时候就读txt就行,读完一个删一个 就写在一个TXT里面,只是里面数据在一直变化,现在想要一段时间读取一次解

[20161002]impdp导入空表.txt

[20161002]impdp导入空表.txt --业务需求要求建立新的测试库,由于磁盘空间有限,要求几个大表导入空表,11g支持段延迟提交,即使表init很大也不会出现空间问题. --全表的数据已经通过expdp导出.自己测试一下如何实现: 1.环境: SCOTT@test01p> @ ver1 PORT_STRING          VERSION    BANNER