環境:sql
SQL> select event,sid,serial# ,blocking_session from gv$session where username='YB040';服務器
EVENT SID SERIAL# BLOCKING_SESSION網絡
---------------------------------------------------------------- ---------- ---------- -------------session
SQL*Net message from client 972 48797併發
SQL*Net message from client 1069 61575ide
SQL*Net message from client 1111 12404高併發
enq: TX - row lock contention 1171 55482 1069測試
enq: TX - row lock contention 1113 42042 1069ui
alter system dump datafile 7 block min 577033 block max 5770573d
data_block_dump,data header at 0x13045264
data_block_dump,data header at 0x130453b4
tl: 9 fb: --H----- lb: 0x0 cc: 0
tab 0, row 31, @0x7f0
tl: 32 fb: ----FL-- lb: 0x2 cc: 4
hrid: 0x01c8ce0e.4a
Block header dump: 0x01c8ce0e
Object id on Block? Y
seg/obj: 0x13485 csc: 0x00.2bcd2f5e itc: 16 flg: E typ: 1 - DATA
brn: 0 bdba: 0x1c8ce09 ver: 0x01 opc: 0
inc: 0 exflg: 0
0x01 0x0025.00a.00004f48 0x09819c74.0218.33 C--- 0 scn 0x0000.2bcd26e6
0x02 0x000a.016.0002e06b 0x008015d3.614f.07 C--- 0 scn 0x0000.2bcd297e
0x03 0x0009.003.0000fb75 0x00800602.2faf.06 C--- 0 scn 0x0000.2bcd253f
0x04 0x0001.02a.0000bd22 0x0080230b.28d3.48 --U- 1 fsc 0x0000.2bcd2fce
0x05 0x0005.00b.0000bd6a 0x00801d86.2831.35 C--- 0 scn 0x0000.2bcd224a
0x06 0x0036.017.000236cf 0x09c23f51.04e2.2c C--- 0 scn 0x0000.2bcd25c7
0x07 0x0026.011.00004eef 0x0980083f.023c.4b C--- 0 scn 0x0000.2bcd2dcc
0x08 0x0036.01d.000236d5 0x09c23f5b.04e2.31 C--- 0 scn 0x0000.2bcd2a26
0x09 0x0026.004.00004ef3 0x09800839.023c.06 C--- 0 scn 0x0000.2bcd280d
0x0a 0x000a.01d.0002e058 0x008015d2.614f.3a C--- 0 scn 0x0000.2bcd2579
0x0b 0x000a.009.0002e054 0x008015ce.614f.41 C--- 0 scn 0x0000.2bcd23b8
0x0c 0x000a.00f.0002e063 0x008015d3.614f.33 C--- 0 scn 0x0000.2bcd2c20
0x0d 0x002d.004.00004cef 0x09c2237c.0266.0c C--- 0 scn 0x0000.2bcd2d07
0x0e 0x0031.00b.00004cf6 0x09c23ffe.0296.04 C--- 0 scn 0x0000.2bcd2336
0x0f 0x0028.007.00004fa5 0x0981d616.0216.3d --U- 1 fsc 0x0000.2bcd319b
0x10 0x0036.00f.000236cb 0x09c23f63.04e2.2b --U- 1 fsc 0x0000.2bcd2f72
擴展一個itl須要大約23字節的空間,目前數據塊已經擴展到16個itl槽,而初始的initrans爲10,可見因爲空閒空間缺少,致使事務一直沒法提交或回退,只有等到整個併發事務下來了,可以取得itl的時候就能夠繼續事務了,因爲醫院的高峯期要的高併發狀態要持續一段時間,致使會話一直沒法取得itl,只一直等下去。Itl不足是致使這個現象的一個緣由。咱們須要重建繳款餘額這個表,使用move表的方法,但須要注意的是move表後,須要重建表上的索引:
alter table 人員繳款餘額 pctfee 20 inittrans 40 ;
alter table 人員繳款餘額 move;
alter index 人員繳款餘額_PK rebuild pctfree 20 initrans 40 ;
srvctl stop listener –n 節點名
srvctl start listener –n 節點名