kewastUnPackStats(): oracle 11.2.0.1的bug解决方法

今天检查alert日志,发现出现了这个错误:

kewastUnPackStats(): bad magic 1 (0x0000000042A995D0, 0)
kewastUnPackStats(): bad magic 1 (0x0000000042A997E0, 0)
kewastUnPackStats(): bad magic 1 (0x0000000042A997E0, 0)
kewastUnPackStats(): bad magic 1 (0x0000000042A99800, 0)
kewastUnPackStats(): bad magic 1 (0x0000000042A997F8, 0)
......................
发现这是个oralce 11.2.0.1的bug, (Bug 8730312) , 原因是在访问V$ACTIVE_SESSION_HISTORY视图时,由于NULL字符导致错误的ASH数据,ASH每秒从v$session中取快照,存到V$ACTIVE_SESSION_HISTORY中,收集所有活动会话的等待信息。
解决方案有两种:
1:修改control_management_pack_access参数
SQL>show parameter control_management_pack_access;
1      control_management_pack_access  string  DIAGNOSTIC+TUNING
SQL>alter system set control_management_pack_access='none'  scope=both;
2.  升级打补丁,有哥们反映,打补丁要关闭数据库。

    我不建议使用第一种修复方案。修改为none,会禁用掉很多ORACLE的特性包括ADDM,对AWR收据收集影响很大,ASH也就没有了。这个问题现在看起来似乎对数据库的性能影响并不大。如果不修改,也不打补丁,后果可能是:1.在procedure里用了hint,编译的时候,过程挂死。2.pl/sql连接会慢。
   因为是在生产库里,不能关闭数据库,所以,我决定还是先不动作,等以后有机会打补丁。
请使用浏览器的分享功能分享到微信等