ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 串行隔离对延迟段和INTERVAL分区的支持

串行隔离对延迟段和INTERVAL分区的支持

原创 Linux操作系统 作者:yangtingkun 时间:2011-05-29 23:55:04 0 删除 编辑

前两天看文档,提到了SERIALIZABLE隔离不支持延迟段创建和INTERVAL分区的功能,个人认为是由于这两种方式都是在DML中递归产生DDL的操作,因此在串行隔离时可能会导致问题。不过验证这个观点的时候,竟然发现现象与文档描述不符。

 

 

文档上的描述为:

Serializable transactions do not work with deferred segment creation or interval partitioning. Trying to insert data into an empty table with no segment created, or into a partition of an interval partitioned table that does not yet have a segment, causes an error.

而实际运行的结果:

SQL> SELECT * FROM V$VERSION;

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

SQL> CREATE TABLE T_DETER
2 (ID NUMBER)
3 SEGMENT CREATION DEFERRED;

表已创建。

SQL> CREATE TABLE T_INTERVAL
2 (ID NUMBER)
3 PARTITION BY RANGE (ID)
4 INTERVAL (1)
5 (PARTITION P1 VALUES LESS THAN (1));

表已创建。

SQL> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

事务处理集。

SQL> INSERT INTO T_DETER VALUES (1);

已创建 1 行。

SQL> COMMIT;

提交完成。

SQL> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

事务处理集。

SQL> INSERT INTO T_INTERVAL
2 SELECT ROWNUM
3 FROM TAB;

已创建12行。

SQL> COMMIT;

提交完成。

不知道这算是文档的描述有误,还是Oracle的实现存在问题,不过对于用户而言,当然是限制越少越好。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-696603/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-29

  • 博文量
    1954
  • 访问量
    10651080