等待事件enq: TX - allocate ITL entry的处理

客户某sap数据库发现大量的等待,简要记录下:

  EVENT                                              SECONDS_IN_WAIT
----- -------------------------------------------------- ---------------
 enq: TX - allocate ITL entry                                   1313
 
 根据相关等待找到事件发生的会话SID为3750
 SQL> select sid,sql_id from v$session where sid='3750';

       SID SQL_ID
---------- -------------
      3750 05sn5d18s0zcy

sql语句为:
SQL> select sql_text from v$sql where sql_id = '05sn5d18s0zcy';

SQL_TEXT
--------------------------------------------------------------------------------
SELECT * FROM "BKPF" WHERE "MANDT"=:A0 AND "BUKRS"=:A1 AND "BELNR"=:A2 AND "GJAHR"=:A3

知道是表BKPF发生的等待ITL分配的事件
取出建表的语句
  CREATE TABLE "SAPSR3"."BKPF"

   (    "

     ..........................


   ) SEGMENT CREATION IMMEDIATE
  PCTFREE 10 PCTUSED 0 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 16384 NEXT 2621440 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DE
FAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "PSAPSR3"

处理办法:
修改增加相关表和索引的参数,重组BKPF表。

此外这个表更好的是使用ASSM的段管理方式。

By DBA老菜
=========================================================================
-- The End --

你可能感兴趣的:(oracle,entry,enq,allocate,ITL)