这两天找了几个人作面试,基本都问到了两个问题: 1。 如果用户告诉你,程序突然慢了,该如何着手…… 2。 如果用户告诉你,程序突然无法连到database,该如何着手…… 大家讨论一下? Q: 如果用户告诉你,程序突然慢了,该如何着手…… A: 1 > 向问题提出者提出以下问题: 1 是否经做过数据库对象的分析 -->dba_tables(last_analyze) 2 是否经历过批量dml操作 -->(影响执行计划) 3 是否经历过数据库版本升级 -->(新的bug?) 4 用操作系统命令查看磁盘I/O是否异常,当然还有网络是否被其他资源占用 (硬件故障) 5 是不是有新的应用上线 6 有没有抱错信息 (如果有抱错信息可以缩小故障范围) 2> 下面开始问题诊断 诊断的接口就是v$session_wait 第一个问题: 1、查看客户端进程,确认是否客户端本身有病毒或程序有问题 2、查看服务器进程/线程运行情况 3、如果服务器不正常,找到相应进程/线程,kill Q 2。 如果用户告诉你,程序突然无法连到database,该如何着手…… A: 1 有报错信息最好 没有查看alert_xxx.log 和相关.trc 2 数据库有关连接的配置 show parameter process ,show parameter session 操作系统层看看: ps -ef|grep LOCAL |wc -l ps -ef|grep ora |wc -l 3 v$session_wait 4 开始怀疑应用中没有做conn.close() 可以根据v$open_cusro(sid)做group by 找到有问题的session 5 有可能是应用没有commit 或者bitmap索引造成enqueue阻塞数据库对象访问 又没有ora--00060报错等等 6 是不是app server的Connect pool调整了min Capability参数 使得Oracle不支持这么多长连接
|