兩個資料訪問受限的問題

jeanron100發表於2017-07-21

    最近幾天實在忙得厲害,處理了各種資料需求,有種顧及不來,而其中有一部分問題是和資料訪問相關的,問題的原因很簡單,但是分析問題的過程就需要很多的經驗,推導,比如下面的兩個案例。

   第一個是開發同學反饋,連線資料庫的時候報出了下面的錯誤。

  第一個錯誤是:

ORA-12154: TNS:could not resolve the connect identifier specified

  第二個錯誤是:
ORA-12170: TNS:Connect timeout occurred連線10.129.xx..51 

如果直接看這個錯誤,可能沒有思路,第一個錯誤明顯是網路配置的問題,但是我檢視了網路的配置,本機的網路服務都是正常的,另外需要說明一下,這是一套遷移的環境。

第二個問題看起來是網路超時,可能是網路情況不好,或者訪問網路的許可權限制。

同時我檢視了防火牆的配置,該有的IP資訊都有了。

到底是哪裡出了問題呢,和開發的同學聊,他的回答讓我有些詫異,

    訪問資料的時候就報這個
    這個連線串沒問題
    查詢請求可以執行
    但是insert 的時候就報錯了

看到這裡,我腦海裡就有了大概的思路了,這很可能是DB link的問題,而上面的兩個錯誤很可能就是訪問的兩個DB link,是訪問失敗的兩個問題,一個是目標環境的監聽服務有問題,另外一個是防火牆的許可權問題。明白了問題修復起來分分鐘就能搞定,但是分析排查還是花了些時間。

第二個是一個資料訪問報錯,業務同學反饋,一臺搬遷的伺服器修改了IP之後,他們連線應用的時候丟擲了下面的錯誤,

[show] java.sql.SQLException: ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux-x86_64 Error: 2: No such file or directory
 

看到這個錯誤,很明顯是資料庫例項出了問題,要麼就是連線的資料庫資訊有誤。

和業務同學反饋確認,他們的反饋是IP資訊沒有問題,我這邊的許可權資訊也沒有問題,經過了多方排查,還是沒有進展,這時候我們就換一個角度來看,因為涉及到的系統是一個整體,可能包含很多子系統,所以不能完全依賴於已得到的資訊,但是他們稍後反饋另一個業務出現了問題,帶著疑問檢視了他們的資料服務,發現這臺資料庫已經當機了,錯誤日誌如下:

PMON (ospid: 4354): terminating the instance due to error 471
System state dump requested by (instance=1, osid=4354 (PMON)), summary=[abnormal instance termination].
System State dumped to trace file /U01/app/oracle/diag/rdbms/csdb/csdb/trace/csdb_diag_4364.trc
Instance terminated by PMON, pid = 4354
可以看到是pmon終止了例項,而00471的錯誤是DBWR終止,

$ oerr ora 00471
00471, 00000, "DBWR process terminated with error"
// *Cause:  The database writer process died
到了這裡,可以基本得到一個結論,這是一個異常當機,而不是計劃中的維護。我沒有著急把資料庫先啟動,而是啟動到了nomount狀態,嘗試看看有什麼資訊,錯誤的原因其實很簡單,就是系統資源設定不足導致,比如memlock,可以透過啟動的錯誤日誌看出。

Starting ORACLE instance (normal)
Memlock limit too small: 65536 to accommodate segment size: 402653184

明白了問題之後,調整起來修很輕鬆了,這方面的資訊也可以透過/proc/xxx/limits來檢視





來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-2142418/,如需轉載,請註明出處,否則將追究法律責任。

相關文章