真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

技術(shù)人生系列·我和數(shù)據(jù)中心的故事(第十一期)-一次啟停引發(fā)的故障

技術(shù)人生系列 · 我和數(shù)據(jù)中心的故事(第十一期)- 一次啟停引發(fā)的故障    

      春風(fēng)輕輕吹走了冬日里的寒氣,又到了一年最美的花季,伴隨著溫暖的陽光 老K 再次與大家相見!此次的回歸老K不僅會(huì)繼續(xù)和大家分享一些自己處理過的小案例,更優(yōu)化了技術(shù)交流模塊,希望在探討的過程中大家可以提高技術(shù)等級(jí)的同時(shí),也能領(lǐng)略到中亦DBA團(tuán)隊(duì)獨(dú)有的匠人精神。

創(chuàng)新互聯(lián)2013年至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目做網(wǎng)站、網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元融水做網(wǎng)站,已為上家服務(wù),為融水各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108

問題來了

      某一日的清晨,客戶打來電話稱巡檢時(shí)發(fā)現(xiàn)關(guān)鍵系統(tǒng)數(shù)據(jù)庫節(jié)點(diǎn)無法連接,原數(shù)據(jù)庫為 4 節(jié)點(diǎn) RAC ,現(xiàn)少一節(jié)點(diǎn),擔(dān)心業(yè)務(wù)高峰 3 個(gè)節(jié)點(diǎn)數(shù)據(jù)庫無法承擔(dān)業(yè)務(wù)高峰的壓力。這種情況需要盡快處理,所以老 K 選擇以最快的遠(yuǎn)程支持方式解決問題。

問題分析

環(huán)境描述

系統(tǒng): linux

技術(shù)人生系列 · 我和數(shù)據(jù)中心的故事(第十一期)- 一次啟停引發(fā)的故障

數(shù)據(jù)庫:服務(wù)器上存在多個(gè)數(shù)據(jù)庫實(shí)例 p1 和 x1 (此處 p1 和 x1 為化名)

技術(shù)人生系列 · 我和數(shù)據(jù)中心的故事(第十一期)- 一次啟停引發(fā)的故障

現(xiàn)象描述

本地使用 sqlplus 登錄到 x1 數(shù)據(jù)庫發(fā)現(xiàn)無法登錄到正常狀態(tài):

技術(shù)人生系列 · 我和數(shù)據(jù)中心的故事(第十一期)- 一次啟停引發(fā)的故障

而我 們?cè)诒镜氐卿?到 p1 數(shù)據(jù)庫,則一切正常,無明顯問題 :

技術(shù)人生系列 · 我和數(shù)據(jù)中心的故事(第十一期)- 一次啟停引發(fā)的故障

分析步驟小1:

   查看 alert 日志,了解到數(shù)據(jù)庫從前一天 18 點(diǎn)就開始有報(bào)錯(cuò);

技術(shù)人生系列 · 我和數(shù)據(jù)中心的故事(第十一期)- 一次啟停引發(fā)的故障

技術(shù)人生系列 · 我和數(shù)據(jù)中心的故事(第十一期)- 一次啟停引發(fā)的故障

技術(shù)人生系列 · 我和數(shù)據(jù)中心的故事(第十一期)- 一次啟停引發(fā)的故障

   從日志看起來,問題似乎很簡(jiǎn)單, oracle 運(yùn)行過程中,組發(fā)生了改變:?jiǎn)?dòng)時(shí)的組為 501 ( oinstall ),當(dāng)前組卻變?yōu)榱? 503 ( asmadmin );同時(shí),我們也可以從 alert 所在目錄相關(guān) trace 文件的屬性變化來確認(rèn)這一點(diǎn):

技術(shù)人生系列 · 我和數(shù)據(jù)中心的故事(第十一期)- 一次啟停引發(fā)的故障

   在 18:43 產(chǎn)生或更新的 trace 文件還是 oracle:oinstall 的屬主,而到了 18:44 ,新產(chǎn)生或更新的 trace 文件便成了 oracle:asmadmin 屬主。

技術(shù)人生系列 · 我和數(shù)據(jù)中心的故事(第十一期)- 一次啟停引發(fā)的故障

知識(shí)點(diǎn):

問: 在 UNIX/LINUX 環(huán)境中, oracle 數(shù)據(jù)庫啟動(dòng)后存在許多后臺(tái)進(jìn)程和前臺(tái)進(jìn)程,雖然相關(guān)進(jìn)程產(chǎn)生一些 trace 文件也是常有的事情,但是真正是什么決定了 oracle 相關(guān)進(jìn)程的屬性呢?

答:通常來說,oracle的后臺(tái)進(jìn)程的調(diào)用是依賴于$ORACLE_HOME/bin/oracle這個(gè)二進(jìn)制文件,但它從遠(yuǎn)端連入而分配的服務(wù)器進(jìn)程(server process)相關(guān)屬主的屬性則是繼承自listener進(jìn)程,而listener進(jìn)程的屬主屬性同樣是進(jìn)程自其啟動(dòng)的用戶(分oracle用戶和grid用戶)$ORACLE_HOME/bin/oracle的屬主屬性。

技術(shù)人生系列 · 我和數(shù)據(jù)中心的故事(第十一期)- 一次啟停引發(fā)的故障

分析步驟小2:

   這樣,我們就可以查看 $ORACLE_HOME/bin/oracle 這個(gè)文件的屬主情況:

技術(shù)人生系列 · 我和數(shù)據(jù)中心的故事(第十一期)- 一次啟停引發(fā)的故障

   老 K 在 2 月 10 日查看發(fā)現(xiàn) oracle 文件的屬主是 oracle ,屬組是 asmadmin ,它的上次修改時(shí)間是 12 月 10 日,對(duì)比起來相隔久遠(yuǎn);然而我們關(guān)注的文件屬組 / 屬主的變化,是不會(huì)影響到其顯示的修改時(shí)間的,只有修改內(nèi)容或替換文件才會(huì)出現(xiàn)文件修改時(shí)間的變化。下一步我們就可以使用如圖中命令來查看文件屬性變化的時(shí)間:

技術(shù)人生系列 · 我和數(shù)據(jù)中心的故事(第十一期)- 一次啟停引發(fā)的故障

   顯而易見,文件屬主 / 屬組的改變正是在 2 月 9 日,這樣基本全部對(duì)應(yīng),就可以合理的推斷出: oracle 文件的屬主在 2 月 9 日發(fā)生了變化,隨后數(shù)據(jù)庫即產(chǎn)生報(bào)錯(cuò),也就是實(shí)際上這個(gè)數(shù)據(jù)庫實(shí)例自前一天的晚上就不可用了,只是到第二天早上才發(fā)現(xiàn)問題,那解決問題的方式就簡(jiǎn)單多了,重啟數(shù)據(jù)庫!因?yàn)闊o法正常登錄數(shù)據(jù)庫(連 sysdba 也無法登錄),就不得不直接 kill 掉數(shù)據(jù)庫實(shí)例的關(guān)鍵進(jìn)程,然后再正常啟動(dòng)數(shù)據(jù)庫,一切又再次恢復(fù)正常。

   按照上述步驟分析起來也不是什么麻煩問題,大家或許會(huì)想即使我們不懂詳細(xì)原因,看到數(shù)據(jù)庫沒法用了,直接使用重啟大法,這個(gè)問題不也輕易的就解決了嗎?難道還需要理解這個(gè)問題的本質(zhì)嗎?

在這里,老K有話說! ↓↓↓↓↓↓↓↓

         既然大家選擇要走技術(shù)的道路,最重要的是保持一顆持久的好奇心,尋找答案的過程予我們也是進(jìn)益,不斷的研究即是不斷的提高,永無止境的探索,才是前進(jìn)路上的唯一指引。當(dāng)然最重要的是在保證生產(chǎn)環(huán)境安全并且合規(guī)操作的前提下 !

難題首現(xiàn)

        OK ,言歸正傳我們繼續(xù)來說問題,前面雖然簡(jiǎn)述了一些,其實(shí)不難發(fā)現(xiàn)這里有兩個(gè)重要的疑問還沒有解答 :

為什么 x1 實(shí)例存在問題,而 p1 實(shí)例卻沒有受到影響呢?

  老 K 首先猜想到的就是:“是不是 p1 實(shí)例的啟動(dòng)是在 oracle 文件的屬組改變之后呢”?于是查看發(fā)現(xiàn) p1 實(shí)例的啟動(dòng)時(shí)間:

技術(shù)人生系列 · 我和數(shù)據(jù)中心的故事(第十一期)- 一次啟停引發(fā)的故障

        p1 數(shù)據(jù)庫實(shí)例的啟動(dòng)時(shí)間是似乎就在 $ORACLE_HOME/bin/oracle 文件的屬組改變的前后,這真的是巧合嗎?這里引出了第二個(gè)疑問

  是誰改變了 oracle 文件的屬組,為什么要去這么做呢?

技術(shù)人生系列 · 我和數(shù)據(jù)中心的故事(第十一期)- 一次啟停引發(fā)的故障

  如圖顯示 p1 實(shí)例的 trace 文件也曾在 2016 年的 12 月 10 日發(fā)生過改變,而且改變后,一直保持為 oracle:oinstall 的屬主屬性,而在 2 月 9 日重啟完成后恢復(fù)為 oracle:asmadmin 的屬主屬性(圖片中沒有顯示出來),也就是說在更早之前,我們可以推斷 $ORACLE_HOME/bin/oracle 文件的屬組是 asmadmin ,在 12 月 10 日更改為 oinstall ,而在 2 月 9 日再次更改為 asmadmin 。

老K的回憶沙龍~

  事情似乎又變的復(fù)雜起來了,這里讓老 K想起 遇到過的一段經(jīng)驗(yàn), CASE 是這樣的:我們?cè)诖蛲陻?shù)據(jù)庫補(bǔ)丁之后,經(jīng)常會(huì)出現(xiàn) $ORACLE_HOME/bin/oracle 文件的屬組發(fā)生改變,導(dǎo)致本地的非 dba 用戶不通過監(jiān)聽連接數(shù)據(jù)庫時(shí)報(bào)無法訪問 ASM 磁盤的情況( asm 磁盤的屬組一般是 grid:asmadmin 的),而我們只需要通過使用 srvctl start database   的方式來重新啟動(dòng)數(shù)據(jù)庫就可以解決該問題(當(dāng)然在數(shù)據(jù)庫停止的情況下直接 chown 的方式也可以) ;

  那么在這個(gè)問題里是不是也前一天重啟 p1 實(shí)例也是用的 srvctl 命令呢?

技術(shù)人生系列 · 我和數(shù)據(jù)中心的故事(第十一期)- 一次啟停引發(fā)的故障

  正是因?yàn)榍耙惶焓褂? srvctl 的方式啟動(dòng)了 p1 節(jié)點(diǎn),改變了 oracle 文件的屬組,導(dǎo)致了 x1 節(jié)點(diǎn)出現(xiàn)報(bào)錯(cuò);至于為什么要改變 oracle 文件的屬組,那就是 oracle 的機(jī)制的原因了。這里我們需要理解的一點(diǎn),使用 srvctl/crsctl 命令來啟停數(shù)據(jù)庫和使用 sqlplus 登錄到數(shù)據(jù)庫中啟停數(shù)據(jù)庫的區(qū)別是, srvctl/crsctl 命令調(diào)用的是 crs 中 oraagent 來執(zhí)行的,而 sqlplus 是在 oracle 用戶下直接執(zhí)行的。

小結(jié)

1 .      數(shù)據(jù)庫實(shí)例 p1 和 x1 在正常運(yùn)行;

2.   $ORACLE_HOME/bin/oracle 文件的屬組是 oinstall 的;

3.   2 月 9 日,運(yùn)維人員重啟了 p1 實(shí)例,啟動(dòng)時(shí)的方式是 srvctl     startinstance -d p -i p1 ,這個(gè)過程中將 $ORACLE_HOME/bin/oracle 的屬組改為 asmadmin ;

4.   數(shù)據(jù)庫實(shí)例 x1 開始報(bào)錯(cuò)運(yùn)行時(shí)屬組與啟動(dòng)時(shí)屬組不一致 。

難題再現(xiàn)!

   到這里,前面的兩個(gè)難題已經(jīng)解開,不過我們?cè)谂c客戶的溝通過程中就不免多問一句,為什么會(huì)去重啟 p1 實(shí)例呢?給出的答案又引起了我們的思考:前一天客戶發(fā)現(xiàn) p1 實(shí)例無法登錄,由于 p1 數(shù)據(jù)庫實(shí)際上已經(jīng)不作生產(chǎn)使用,平時(shí)可能會(huì)有一些簡(jiǎn)單的測(cè)試使用到這個(gè)數(shù)據(jù)庫,所以客戶的現(xiàn)場(chǎng)維護(hù)人員直接重啟了 p1 實(shí)例解決問題。但是 為何 p1 實(shí)例會(huì)無法登錄呢? 如果僅僅是測(cè)試庫的話,正常是不應(yīng)該有壓力大的情況,還是說也是類似 x1 的情況?就此,我們?cè)購(gòu)姆治? p1 實(shí)例之前的運(yùn)行情況。另外,從前面的過程來看,我們可以看到 oracle 文件屬組曾經(jīng)從 asmadmin 變?yōu)? oinstall ,這樣我們就還需要解釋一個(gè)問題, 如果說 srvctl 的方式啟停數(shù)據(jù)庫會(huì)將 $ORACLE_HOME/bin/oracle 文件的屬組改為 asmadmin 的話,那么,又是什么讓這個(gè)文件的屬組改為 oinstall 的呢 ? 帶著這兩個(gè)新的疑惑,老 K 再次踏上解惑的征程,先來看 p1 實(shí)例的 alert 日志:

技術(shù)人生系列 · 我和數(shù)據(jù)中心的故事(第十一期)- 一次啟停引發(fā)的故障

技術(shù)人生系列 · 我和數(shù)據(jù)中心的故事(第十一期)- 一次啟停引發(fā)的故障

技術(shù)人生系列 · 我和數(shù)據(jù)中心的故事(第十一期)- 一次啟停引發(fā)的故障

技術(shù)人生系列 · 我和數(shù)據(jù)中心的故事(第十一期)- 一次啟停引發(fā)的故障

   看到日志老 K 才發(fā)現(xiàn),原來 p1 實(shí)例在 12 月 10 號(hào) 09:18:09 開始啟動(dòng),啟動(dòng)到 09:23:33 的時(shí)候就已經(jīng)開始報(bào)錯(cuò),并一直持續(xù)到 2 月 9 日重啟之前,通過重啟的方式最終解決。 P1 為什么會(huì)存在這樣的問題呢?那么 X1 實(shí)例呢,之前為什么沒有問題呢?我們?cè)賮砜纯? x1 實(shí)例之前的 alert 日志:

技術(shù)人生系列 · 我和數(shù)據(jù)中心的故事(第十一期)- 一次啟停引發(fā)的故障

技術(shù)人生系列 · 我和數(shù)據(jù)中心的故事(第十一期)- 一次啟停引發(fā)的故障

技術(shù)人生系列 · 我和數(shù)據(jù)中心的故事(第十一期)- 一次啟停引發(fā)的故障

          x1 實(shí)例在啟動(dòng)時(shí)也經(jīng)歷過啟動(dòng)報(bào)錯(cuò)的過程,只不過很不幸, x1 實(shí)例在啟動(dòng)后臺(tái)進(jìn)程 RSMN 時(shí),就已經(jīng)出錯(cuò),導(dǎo)致實(shí)例啟動(dòng)失敗,而后在 09:23 再次啟動(dòng),則啟動(dòng)成功,后續(xù)因?yàn)? $ORACLE_HOME/bin/oracle 文件沒有修改過屬組,直到 2 月 9 日 18 點(diǎn),也沒有再報(bào)過錯(cuò)。細(xì)心的同學(xué)可以看到   x1 實(shí)例和 p1 實(shí)例在 12 月 10 日的 shutdown 和初次 startup 的時(shí)間是基本一致的,于是我們猜測(cè),這個(gè)動(dòng)作應(yīng)該是使用 crsctl stop crs 和 crsctl start crs 的方式來啟停 CRS 的過程中順帶將數(shù)據(jù)庫啟停了, 那么為什么 p1 實(shí)例啟動(dòng)完成了,而 x1 實(shí)例啟動(dòng)失敗了呢?事實(shí)上這里 p1 也就只是啟動(dòng)了實(shí)例,并沒有打開數(shù)據(jù)庫,而 x1 實(shí)例啟動(dòng)失敗是因?yàn)槠潢P(guān)鍵進(jìn)程 RSMN 的啟動(dòng)時(shí)間正好在 $ORACLE_HOME/bin/oracle 的屬組修改的時(shí)間( 09:19:22 )之后導(dǎo)致啟動(dòng)失敗,而再次啟動(dòng)時(shí), x1 實(shí)例相關(guān)進(jìn)程的屬組也就都一致了不再存在啟動(dòng)時(shí)和運(yùn)行時(shí)屬組不一致的問題了。

   現(xiàn)在,我們還剩下最后一個(gè)難題,那就是 12 月 10 日,客戶現(xiàn)場(chǎng)的維護(hù)人員做了什么才導(dǎo)致 $ORACLE_HOME/bin/oracle 文件的屬組變?yōu)榱瞬徽_的 oinstall 屬組?這里,我們查看了該節(jié)點(diǎn)上數(shù)據(jù)庫打補(bǔ)丁的信息,發(fā)現(xiàn)自安裝以來并沒有再打過補(bǔ)?。ㄈ罩具^長(zhǎng),這里就不再列出);不過很幸運(yùn),我們通過歷史命令記錄查到了蛛絲馬跡:

技術(shù)人生系列 · 我和數(shù)據(jù)中心的故事(第十一期)- 一次啟停引發(fā)的故障

   之前存在對(duì) oracle 文件的 relink 操作,并將日志記錄在了 $ORACLE_HOME/install/relink.log 里,在我們查看 relink.log 的信息時(shí)就能定位到這條命令的操作時(shí)間了:

技術(shù)人生系列 · 我和數(shù)據(jù)中心的故事(第十一期)- 一次啟停引發(fā)的故障

   基于老 K 日常積累的經(jīng)驗(yàn),才可以這么認(rèn)定 relink 操作就會(huì)改變 oracle 文件的屬組信息。在 opatch 打完一些數(shù)據(jù)庫補(bǔ)丁后,通常會(huì)改變 oracle 文件的屬組信息,如果我們細(xì)看 opatch 過程中的詳細(xì)日志,我們就會(huì)發(fā)現(xiàn),這個(gè)過程中實(shí)際上使用的底層命令就是 relink ,也就認(rèn)為 relink 實(shí)際上會(huì)修改 oracle 文件的內(nèi)容,同時(shí)也會(huì)修改 oracle 文件的屬組(因?yàn)樽鲞@個(gè)操作的用戶是 oracle:oinstall )。得出結(jié)論后繼續(xù)與客戶進(jìn)行溝通,對(duì)話如下:↓↓↓↓↓

技術(shù)人生系列 · 我和數(shù)據(jù)中心的故事(第十一期)- 一次啟停引發(fā)的故障

現(xiàn)場(chǎng)運(yùn)維商確實(shí)在之前處理其它問題時(shí),使用過 relink 命令重現(xiàn)編譯 oracle 文件,但是當(dāng)時(shí)沒有啟動(dòng)數(shù)據(jù) 庫。

是不是當(dāng)時(shí)先重啟了操作系統(tǒng)呢?
技術(shù)人生系列 · 我和數(shù)據(jù)中心的故事(第十一期)- 一次啟停引發(fā)的故障
技術(shù)人生系列 · 我和數(shù)據(jù)中心的故事(第十一期)- 一次啟停引發(fā)的故障
請(qǐng)輸入
技術(shù)人生系列 · 我和數(shù)據(jù)中心的故事(第十一期)- 一次啟停引發(fā)的故障

厄。。。好像是的!

到底發(fā)生了什么?

1. 12 月 10 日 ,客戶的現(xiàn)場(chǎng)運(yùn)維商需要使用 relink 命令解決問題;

2. 在 relink 之前直接重啟操作系統(tǒng),操作系統(tǒng)啟動(dòng)時(shí),自動(dòng)啟動(dòng) CRS ,并且將試圖啟動(dòng)數(shù)據(jù)庫以恢復(fù)到之前狀態(tài)

3. 在啟動(dòng)數(shù)據(jù)庫的過程中,維護(hù)商沒有關(guān)注到是否有數(shù)據(jù)庫正在運(yùn)行即已開始執(zhí)行 relink 操作;

4. 在 relink 操作的過程中, p1 完成了實(shí)例啟動(dòng),而 x1 實(shí)例則因?yàn)? RSMN 啟動(dòng)時(shí) oracle 文件的屬組已經(jīng)發(fā)生改變, RSMN 啟動(dòng)失敗,繼而導(dǎo)致 x1 實(shí)例失敗,而 p1 實(shí)例雖然啟動(dòng)成功,但是一直報(bào)錯(cuò),數(shù)據(jù)庫也未能打開;

5. 在此期間 p1 實(shí)例實(shí)際上是不可用的,在 2 月 9 日維護(hù)商發(fā)現(xiàn) p1 實(shí)例不可用,因?yàn)檎J(rèn)為 p 1庫不重要,在未核查原因的情況下直接重啟了 p1 實(shí)例, p1 實(shí)例正常 ;

6. 因?yàn)樵趩?dòng) p1 實(shí)例是使用的 srvctl start 的命令,導(dǎo)致啟動(dòng)時(shí)修改了 $ORACLE_HOME/bin/oracle 的屬組,導(dǎo)致 x1 實(shí)例不可用 ;

7. 最終通過重啟 x1 實(shí)例恢復(fù)正常。

技術(shù)人生系列 · 我和數(shù)據(jù)中心的故事(第十一期)- 一次啟停引發(fā)的故障

  最后總結(jié):

     通過詳細(xì)的分析,我們發(fā)現(xiàn)從 p1 實(shí)例的處理方式能很快的解決,但是問題的根本是 有一系列的操作上的失誤導(dǎo)致, 所以老 K 想再一次安利下自己的觀點(diǎn):我們?cè)诮鉀Q問題的過程中,對(duì)于任何小疑點(diǎn)都不能輕易濾過,現(xiàn)在發(fā)生的問題也許就是由多個(gè)小的問題愈演愈烈最終影響正常業(yè)務(wù),我們只要對(duì)整體分析透徹,自然可以從本質(zhì)上解決問題。所以大家一定時(shí)刻保持探索精神,不忽略任何一個(gè)細(xì)節(jié),這也是我們作為中亦人一直在堅(jiān)持的精神!!

   好啦,本期就到這里, 今年 我們中亦 DBA 團(tuán)隊(duì)將全力以赴,用詼諧和嚴(yán)謹(jǐn)?shù)姆绞綄⑽覀兊慕?jīng)驗(yàn)進(jìn)行分享, 希望大家多多支持,伙伴們的轉(zhuǎn)發(fā)分享是對(duì)我們最大的鼓勵(lì)!


當(dāng)前名稱:技術(shù)人生系列·我和數(shù)據(jù)中心的故事(第十一期)-一次啟停引發(fā)的故障
鏈接地址:http://weahome.cn/article/gepccj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部