SQL> set linesize 100
SQL> col table_name format a30
SQL> select ini_trans,max_trans,table_name from user_tables where table_name='TRANS_TEST';
INI_TRANS MAX_TRANS TABLE_NAME
---------- ---------- ------------------------------
1 255 TRANS_TEST
关于这个参数的解释在oracle sql reference中有详细的解释。
MAXTRANS Parameter
In earlier releases, the MAXTRANS parameter determined the maximum number of concurrent update transactions allowed for each data block in the segment. This parameter has been deprecated. Oracle now automatically allows up to 255 concurrent update transactions for any data block, depending on the available space in the block.
Existing objects for which a value of MAXTRANS has already been set retain that setting. However, if you attempt to change the value for MAXTRANS, Oracle ignores the new specification and substitutes the value 255 without returning an error.
对于initrans,maxtrans的默认值,表级为1,索引级为2. 一般来说不需要做特别的设置。可以根据业务的需要来配置。
来继续回到awr报告。可以在"Segments by ITL Waits"里面得到一个全面的信息。
1) Depending on the number of transactions in the table we need to alter the value of INITRANS. here it has been changed to 50:
alter table
INITRANS 50;
2) Then re-organize the table using move (alter table move;)
3) Then rebuild all the indexes of this table as below
alter index rebuild INITRANS 50;
Increase PCTFREE
If the issue is not resolved by increasing INITRANS then try increasing PCTFREE. Increasing PCTFREE holds more space back and so spreads the same number of rows over more blocks. This means that there are more ITL slots available overall :
B)
1) Spreading rows into more number of blocks will also helps to reduce this wait event.
alter table
PCTFREE 40;
2) Then re-organize the table using move (alter table service_T move;)
3) Rebuild index
alter index index_name rebuild PCTFREE 40;
A Combination of increasing both INITRANS and PCTFREE
1) Set INITRANS to 50 pct_free to 40
alter table PCTFREE 40 INITRANS 50;
2) Re-organize the table using move (alter table move;)
3) Then rebuild all the indexes of the table as below