1 、故障描述
某次某用户数据库从 AIX异构迁移至Linux后,连续2天晚上22点05分左右数据库出现不能访问,等待事件为 library cache lock ,手动 kill相关会话后恢复正常
2 、根因分析
问题时间段 oracle的自动任务正在执行,怀疑自动任务导致 library cache lock 等待,建议先关闭 auto space advisor 、 sql tuning advisor 自动任务,再做进一步分析。

但接着,第二天晚上数据库再次因为 library cache lock 不能访问,保留会话信息后再杀掉会话后解决问题。此时,我们再来分析下数据库卡顿时的会话阻塞关系,如下:

会话信息显示
14520会话阻塞了14398会话,14398会话正在进行统计信息收集

同时数据库 diag trace日志也显示了上面相关会话之间的阻塞关系,如下:

3 、解决方案
检查并确认迁移前数据库环境的自动任务明确为关闭状态,客户要求关闭统计信息收集,建议业务单独对核心表定期收集统计信息,处理手段如下: -- 数据库默认的自动任务 auto optimizer stats collection auto space advisor sql tuning advisor -- 关闭统计信息自动收集任务 BEGIN dbms_auto_task_admin.disable( client_name => 'auto optimizer stats collection', operation => NULL, window_name => NULL); END; /
O RACLE 自动任务查询历史执行情况如下:

