數(shù)據(jù)庫常問的兩個(gè)問題看看專家們怎么答

字號:

這兩天找了幾個(gè)人作面試,基本都問到了兩個(gè)問題:
    1。 如果用戶告訴你,程序突然慢了,該如何著手……
    2。 如果用戶告訴你,程序突然無法連到database,該如何著手……
    大家討論一下?
    Q: 如果用戶告訴你,程序突然慢了,該如何著手……
    A: 1 > 向問題提出者提出以下問題:
    1 是否經(jīng)做過數(shù)據(jù)庫對象的分析 -->dba_tables(last_analyze)
    2 是否經(jīng)歷過批量dml操作 -->(影響執(zhí)行計(jì)劃)
    3 是否經(jīng)歷過數(shù)據(jù)庫版本升級 -->(新的bug?)
    4 用操作系統(tǒng)命令查看磁盤I/O是否異常,當(dāng)然還有網(wǎng)絡(luò)是否被其他資源占用 (硬件故障)
    5 是不是有新的應(yīng)用上線
    6 有沒有抱錯(cuò)信息 (如果有抱錯(cuò)信息可以縮小故障范圍)
    2> 下面開始問題診斷 診斷的接口就是v$session_wait
    第一個(gè)問題:
    1、查看客戶端進(jìn)程,確認(rèn)是否客戶端本身有病毒或程序有問題
    2、查看服務(wù)器進(jìn)程/線程運(yùn)行情況
    3、如果服務(wù)器不正常,找到相應(yīng)進(jìn)程/線程,kill
    Q 2。 如果用戶告訴你,程序突然無法連到database,該如何著手……
    A:
    1 有報(bào)錯(cuò)信息 沒有查看alert_xxx.log 和相關(guān).trc
    2 數(shù)據(jù)庫有關(guān)連接的配置 show parameter process ,show parameter session
    操作系統(tǒng)層看看: ps -ef|grep LOCAL |wc -l
    ps -ef|grep ora |wc -l
    3 v$session_wait
    4 開始懷疑應(yīng)用中沒有做conn.close() 可以根據(jù)v$open_cusro(sid)做group by 找到有問題的session
    5 有可能是應(yīng)用沒有commit 或者bitmap索引造成enqueue阻塞數(shù)據(jù)庫對象訪問 又沒有ora--00060報(bào)錯(cuò)等等
    6 是不是app server的Connect pool調(diào)整了min Capability參數(shù) 使得Oracle不支持這么多長連接