數據庫常問的兩個問題看看專家們怎么答

字號:

這兩天找了幾個人作面試,基本都問到了兩個問題:
    1。 如果用戶告訴你,程序突然慢了,該如何著手……
    2。 如果用戶告訴你,程序突然無法連到database,該如何著手……
    大家討論一下?
    Q: 如果用戶告訴你,程序突然慢了,該如何著手……
    A: 1 > 向問題提出者提出以下問題:
    1 是否經做過數據庫對象的分析 -->dba_tables(last_analyze)
    2 是否經歷過批量dml操作 -->(影響執(zhí)行計劃)
    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不支持這么多長連接