![adcf611697d747626db52d2177b7c07b.png](https://i-blog.csdnimg.cn/blog_migrate/2492aba486f548e2d5dbf227c88b3fce.jpeg)
内在缓慢泄漏
漏泄点儿指向oracle的驱动jar包
线程中有更新表的SQL一直在执行
select s.SID,
s.SERIAL#,
s.MACHINE,
s.TYPE,
l.TYPE,
l.CTIME,
l.BLOCK,
l.REQUEST,
l.LMODE,
decode(l.lmode,
0,
'None',
1,
'Null',
2,
'Row-S (SS)',
3,
'Row-X (SX)',
4,
'Share',
5,
'S/Row-X (SSX)',
6,
'Exclusive',
substr(to_char(l.lmode), 1, 13)) as "Locked Mode",
DECODE(L.TYPE,
'MR',
'File_ID:' || L.ID1,
'TM',
t.NAME,
'TX',
'USN:' || to_char(TRUNC(L.ID1 / 65536)) || 'RWO:' ||
nvl(r.NAME, 'None'),
L.ID1) as LOCK_ID1,
'alter system killsession ''' || s.SID || ',' || s.SERIAL# || ''';' as "Kill"
from v$process p
inner join v$session s
on s.PADDR = p.ADDR
inner join v$lock l
on l.SID = s.SID
left join sys.obj$ t
on l.ID1 = t.obj#
left join sys.obj$ r
on s.ROW_WAIT_OBJ# = r.obj#
where 1 = 1
and l.TYPE != 'MR'
order by s.SID
执行结果如下:
![530eda11b7b2bef8a66c71fd15a3d52c.png](https://i-blog.csdnimg.cn/blog_migrate/603b93b118d12209ff05f8558044750d.png)
在改变数据时必须是排它模式(mode 6)。
每一个活动事务都拥有一个锁。它将在事务结束(commit/rollback)时释放。
如果一个块包括的列被改变而没有ITL(interestedtransaction list)槽位(entries),那么session将锁置于共享模式(mode 4)。当session获得块的ITL槽位时释放。
当一个事务首次发起一个DML语句时就获得一个TX锁,该锁保持到事务被提交或回滚。当两个或多个会话在表的同一条记录上执行DML语句时,第一个会话在该条记录上加锁,其他的会话处于等待状态。当第一个会话提交后,TX锁被释放,其他会话才可以加锁。
指出回滚段和事务表项
避免TX-6类型竞争,需要根据应用而定。
避免TX-4类型竞争,可以考虑增加对象INITRANS参数值。
数据库执行任何DDL语句时必须是排它模式;例如alter table,drop table。
执行像insert,update,delete这类DML语句时处于共享模式。它防止其它session对同一个对象同时执行ddl语句。
任何对象拥有正被改变的数据,TM锁都将必须存在。
锁指向对象。
每个数据库(非实例)拥有一个ST锁。
除了本地管理表空间,在space管理操作(新建或删除extents)时必须是排它模式。
对象creation, dropping, extension, 以及truncation都处于这种锁
多数公共原因的争夺,是在磁盘排序(并非使用真正的临时表空间)或回滚段扩展或收缩。
使用真正的临时表空间(true temporarytablespaces),利用临时文件。临时段在磁盘排序之后并不创建或删除。
使用本地管理表空间。
指定回滚段避免动态扩展和收缩,或使用自动undo management。
避免应用执行创建或删除数据库对象。
锁模式 | 锁描述 | 解释 | SQL操作 |
0 | none | ||
1 | NULL | Select | |
2 | SS(Row-S) 行级共享锁 | 其他对象只能查询这些数据行,Lock row share | Select for update、Lock for update |
3 | SX(Row-X) 行级排它锁 | 在提交前不允许做DML操作 | Insert、Update、Delete |
4 | S(Share) 共享锁 | Lock share | Create index |
5 | SSX(S/Row-X) 共享行级排它锁 | Lock share row exclusive | |
6 | X(Exclusive)排它锁 | Lock exclusive | Altertable、Drop able、Drop index、Truncate table |