Oracle INITRANS和MAXTRANS

create table A1
(
  ID INTEGER
)
tablespace TEST_DATA
  pctfree 10
  pctused 40
  initrans 1
  maxtrans 255
  storage
  (
    initial 1
    next 1
    minextents 1
    maxextents unlimited
    pctincrease 0
  );

INITRANS: 预先决定每个块头需要拥有的ITL条目,比如,INITRANS值设定为10,则为10个同时进行的事务提供空间。

MAXTRANS:决定最多允许的ITL条目数。若MAXTRANS值设定为50,则最多允许50个同时事务。MAXTRANS的缺省值是255,Oracle 10g开始MAXTRANS定位255.

即,即便指定了MAXTRANS的值,Oracle也会无视这些值,一直使用255.
SQL> create table A2
(
  ID INTEGER
)
tablespace TEST_DATA
  pctfree 10
  pctused 40
  initrans 100
  maxtrans 999
  storage
  (
    initial 1
    next 1
    minextents 1
    maxextents unlimited
    pctincrease 0
  );  2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17  
  maxtrans 999
           *
ERROR at line 9:
ORA-02209: invalid MAXTRANS option value

提示maxtrans 999不正确,

SQL> create table A2
(
  ID INTEGER
)
tablespace TEST_DATA
  pctfree 10
  pctused 40
  initrans 100
  maxtrans 256
  storage
  (
    initial 1
    next 1
    minextents 1
    maxextents unlimited
    pctincrease 0
  );  2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17  
  maxtrans 256
           *
ERROR at line 9:
ORA-02209: invalid MAXTRANS option value

经测试maxtrans 不能超过255
SQL> create table A2
(
  ID INTEGER
)
tablespace TEST_DATA
  pctfree 10
  pctused 40
  initrans 100
  maxtrans 200
  storage
  (
    initial 1
    next 1
    minextents 1
    maxextents unlimited
    pctincrease 0
  );  2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17  

Table created.

SQL> select owner,table_name,INI_TRANS,MAX_TRANS from dba_tables where owner='TEST' and  table_name='A2';

OWNER			       TABLE_NAME		       INI_TRANS  MAX_TRANS
------------------------------ ------------------------------ ---------- ----------
TEST			       A2				     100	255

当MAXTRANS的值不是255事,Oracle会无视这些值,一直使用255.

你可能感兴趣的:(Oracle INITRANS和MAXTRANS)