1 event 60025
1.Without event 60025 set (before and after commit):都出现v$tempseg_usage中存在对应记录,而且提交后不能释放Temp LOB space
2.With event 60025 set (before and after commit):都未现v$tempseg_usage中存在对应记录,证明提交后释放Temp LOB space
解决方案
通过上面的试验证明我们可以通过设置event 60025来解决该版本的会话提交后Temp LOB space不能被回收的问题.
我们可以通过在session级别使用”alter session set events ’60025 trace name context forever’;”来实现。如果想实现全库级别的,但是因为event 60025不能通过system设置生效,所以我们可以通过logon触发器来实现该功能
|
注意这个是ORCLE bug(Bug 5723140 – Temp LOB space not released after commit [ID 5723140.8]),从10.2.0.4开始虽然已经修复了该bug,但是默认情况下:为了更加高效的利用temp,在session未断开前,不自动释放temp 空间,可以通过设置event 60025来强制会话在commit之后就立即释放temp space
2 event 10231
---屏蔽坏块
alter system set events '10231 trace name context forever,level 10';
alter system set events '10231 trace name context off';
2 event 10511
再来说说enq: US - contention问题
这是oracle10g中开始出现的bug(在11.1.0.7中仍有这个BUG),当因为系统activity增加或者降低的时候,oracle SMON进程会自动ONLINE或者OFFLINE rollback segments。这样导致某些与undo segments相关的latch或者enqueue被hold住太长时间,导致系统很多活跃session都开始等待enq: US - contention。可以同时使用以下解决方法:
1. 设置event让SMON不自动OFFLINE回滚段。
alter system set events '10511 trace name context forever, level 1';
3 EVENT 28401
关闭密码延迟验证
ALTER SYSTEM SET EVENT = '28401 TRACE NAME CONTEXT FOREVER, LEVEL 1' SCOPE = SPFILE;
4 EVENT 10061禁止SMON清理临时段
event="10061 trace name context forever, level 10"
5 event 10949可以避免采用直接路径读取
设置event 10949可以避免采用直接路径读取方式,该事件可以在线设置,但对现有session可能不会生效:
在实例级别设置:
ALTER SYSTEM SET EVENTS ‘10949 TRACE NAME CONTEXT FOREVER’;
设置到SPFILE中:
alter system set event=’10949 TRACE NAME CONTEXT FOREVER’ scope=spfile;
在session级别设置:
ALTER SESSION SET EVENTS ‘10949 TRACE NAME CONTEXT FOREVER’;
6 10046 跟踪会话
ALTER SESSION SET EVENTS '10046 trace name context forever, level 12';
LEVEL定义如下:
1:SQL 语句,执行计划和执行状态
4:1的内容加上绑定变量信息
8:1的信息加上等待事件信息 12:1+4+8