Oracle – why do I need INITRANS if I have MAXTRANS

oracleperformanceplsql

Probably is a dummy question, but I still don't understand why do I need the INITRANS parameter if I already have the MAXTRANS parameter. I have understand that, the default INITRANS for tables is 1 and index is 2, but also, we have the MAXTRANS that the default is 255 (I guess it depend of the block size). and, because we have 255 in MAXTRANS, the number of ITL can grow dynamically as needed, so, why do I need to care about INITRANS? can someone explain it?

I need to learn because I am having several event in a database: enq: TX - allocate ITL entry

Also, when I change the INITRANS of an existing table, do I need to move the table as well to affect all existing data block in that table? or just change the INITRANS is enough?

Best Answer

ITL cannot grow in a block that is already full.

INITRANS sets a guaranteed minimum to its size.

After changing INITRANS on a table, you need to move it so its blocks will be reorganized to reserve the required space for ITL.

Related Question