此文謹以記念咱們曾經失去的青春ios
在節前(端午節)就收到了甲骨文的電話,說我投遞的簡歷被選中,邀請來面試,分別是兩個部門,在深圳總部打過來的全球化支持部(工做地點依然爲北京)和北京總部打過來的公有云事業部,職位都是高級DBA。面試
因爲全球化支持部涉及英語口語要求較高,我的仍是更傾向於公有云事業部,可是先接到了前者的面試郵件,約定6月18日下午去面試,在軟件園裏的甲骨文總部大樓~數據庫
到了軟件園大門,之前熊熊一直覺得東門口那個十號樓上寫的Oracle甲骨文的就是甲骨文總部了,還以爲那裏挺小的了,郵件中提到的是24號樓,因而進入十號樓問了保安,才知道要走很遠(一開始沒在乎,後來才知道,真的好遠)緩存
沿着路一直往軟件園深處走去,真的好遠啊,沿途通過了一箇中歐國際工商學院,那種別墅似風格的教學樓,不高,就2-3層,可是應該很奢華,樓下停着不少的豪車(奔馳、寶馬、奧迪,都是進口高系),啥時候熊熊才能來這裏學習呢,嘻嘻~安全
走了大約25分鐘的路程,終於來到了24號樓,甲骨文北京總部所在地,真的很壯觀,就像一個小型社區,在門口照了張相,把甲骨文的Logo照了進來,找到右手邊的T2樓,進去到前臺,說明來意,問是否預定好,回答是的。服務器
前臺保安讓熊熊給聯繫人打個電話,這時纔想起,聯繫人根本沒有給熊熊留電話。因而在前臺小姑娘那裏查聯繫人的電話,結果由於甲骨文都是英文名字的緣由,我只知道對方中文名稱,沒法查到,正在着急中,對方正好打電話過來,告知她已經到樓下,說稍等片刻,下來接熊熊~網絡
見面之後,一個長相很通常的女生,氣質和親和度也不是特別贊,填好表格之後,由她領上3樓,到了一間小會議室,過很少久,進來一位30來歲的高級工程師(也許就是manager)模樣的男人,面試正式開始~session
也沒有浪費時間讓熊熊作什麼簡單的自我介紹,只是問了一下如今工做主要作什麼,可能熊熊答的有點簡單,讓對方感受是普通的運維DBA,因而針對熊熊的問題開始了深刻面試運維
Q:你在工做中主要負責哪塊業務如今ide
A:主要負責總體數據庫的平常維護,保證數據庫的穩定、可靠、高效運行
Q:那大家一般如何來巡檢,有哪些工具手段?
A:由於銀行方面沒法使用OEM或者GC(Grid Control)這種圖形化工具,所以咱們的平常巡檢都是用AWR、ASH、ADDM、RDA等一系列工具來作的,若是有具體的問題,也會經過一些動態視圖來具體查看,包括查看alert日誌以及抓trc進行分析等等。
Q:那大家不能使用OEM這種的話,如何保證這個監控的頻度,仍是說每次都必須本身手工上去生成報告看一下?
A:是這樣的,有一些重要的監控指標,咱們在Nagios裏作了腳本進行監控,好比數據庫的監聽情況、RAC節點的健康情況、表空間的增加率等等,若是出現問題,經過Nagios報警會直接發送到個人手機上
Q:既然大家要進行平常監控,若是感受數據庫跑得很慢,從哪些地方能體現出來
A:這個須要具體問題具體分析,看看究竟是OS層面問題,仍是數據庫自己問題,亦或是網絡或者ASM存儲的問題,若是是OS層面的問題,看看CPU的負載高不高,若是高的話,考慮是否是應用層與數據庫層面的鏈接瓶頸(好比內存溢出等問題),若是CPU負載正常,可是I/O瓶頸比較高(這是數據庫常常遇到的問題),那麼有多是SGA內存分配不合理,或者SGA內存不足,甚至是總體物理內存不足,那麼須要考慮的狀況有不少種,有多是數據庫的DML操做過於頻繁,有多是SQL寫的不合理(好比沒有使用綁定變量,共享遊標等等,好比SQL寫法不規範,好比沒有使用索引,或者索引設定不規範致使大量全表掃描),這些能夠從AWR報告裏的等待事件中看到一些問題。
Q:你剛剛提到了AWR報告,那麼若是是數據庫比較慢,好比你說的I/O問題這種,在AWR報告中會怎麼體現出來?
A:首先是各類target的指標監控(那個說實話熊熊真忘了是怎麼說,可是解釋一下,就是那個各項性能滿分是100%那個),這裏能夠看到一些好比字典緩存命中率,庫緩存命中率等等低不低,若是不低再看看SQL的執行重複率低不低,若是低,證實SQL設計不合理,固然,有不少好比數據文件順序讀,直接路徑讀/寫這種,都是形成大量User I/O的緣由
Q:那這個User I/O,在AWR報告中的顯示是什麼?
A:(撓頭),額,這個我真不知道,我英語太爛了,不知道怎麼說這個,可是若是AWR報告發給我,我真的能夠看出來的
Q:若是AWR報告中報日誌的頻繁切替,是什麼問題?
A:那有多是日誌組過少,而後日誌組裏的日誌成員過多,並且日誌設定的大小太小,好比就設定了20M,而後DML操做過於頻繁,會形成大量的日誌寫入,寫滿了就會切替,過多的切替就會形成日誌頻繁寫入,影響數據庫性能
Q:你剛剛提到的頻繁寫日誌,包括髒塊寫入到dbf中,事務沒有提交的話,髒塊或者日誌會不會寫入到相應文件中?
A:這個確定不能夠的啊,事務要遵循ACID原則,事務只能被提交或者被回滾,不能自我中斷的,不過若是髒塊把buffer cache寫滿,不管事務提交與否,都會寫到datafile中,不寫日誌,就算髒塊寫到了datafile裏,這時候若是數據庫重啓,由於日誌裏沒寫,pmon就不能還原,這樣就能夠理解爲:由於沒有commit,這個事務就不成立。
Q:OK,你在工做中都是單實例仍是有RAC?
A:是這樣的,咱們有一個小機,上面跑了五個單實例的庫,另外還有兩套RAC環境
Q:大家的RAC是兩個節點的?
A:是的,之前也作過4個節點的
Q:那麼你如何來查看RAC的狀態?
A:經過crs命令就能夠查看了
Q:具體命令是什麼呢?
A:crs_stat –t就能夠查看到節點狀態
Q:那麼你如何知道RAC中有幾個節點呢?
A:使用剛纔那個命令其實就能夠看到有幾個節點了
Q:你說的這是全部節點正常啓動的狀況,若是不是呢?
A:是這樣,有一個比較笨的方法,我使用DBCA命令中的instancemanager來看個人節點信息,只要節點的OCR信息沒有被破壞,那麼均可以看到的
Q:你剛纔提到OCR信息被破壞,那麼若是OCR信息被破壞了,該怎麼作?
A:咱們能夠經過重建OCR來修復
Q:具體怎麼作呢?
A:經過修改ocr.loc和paramfile.crs文件進行設置,而後經過命令進行重建
Q:什麼命令?
A:額,那個,唉,想不起來了,不過若是作的話,我知道該如何作的,除了重建OCR,咱們也能夠刪除節點的OCR信息再添加,效果是同樣的,只是OCR重建更方便些
Q:大家裝RAC用的是ASM嗎?
A:是的
Q:ASM裏有個au_size參數,你知道嗎?
A:這個真沒接觸過(回來之後熊熊仔細看了這個參數,Oracle 10g是默認的1m大小,不能修改,11g之後能夠手工修改,因此熊熊不知道)
Q:若是單實例變成RAC,有什麼方法嗎?
A:可使用DG的standby複製出一個節點,而後添加節點的OCR信息等,用rman克隆應該也能夠的
Q:你提到DG,你有沒有作過DG?
A:這個是有的
Q:那你說說DG都須要配置哪些?
A:首先在主庫開啓歸檔和輔助日誌,而後設置一些參數,好比log_archive_dest裏添加主庫和備庫的信息,fal的兩個參數要設置(fal_client與fal_server),而後若是有文件轉換須要設置convert(包括db和log),將主庫的spfile轉化成pfile,傳送pfile和密碼文件到從庫機器上修改相應參數,主庫能夠經過RMAN作一個全備,而後可使用RMAN的輔助數據庫功能在從庫進行恢復,10g的物理DG只能是mount模式,11g能夠是open read only模式,這樣能夠將此庫設置爲只讀查詢庫,來實現讀寫分離
Q:大家工做中有沒有用到DG
A:咱們用到的是GG(GoldenGate)
Q:你能簡單說一下GG的設置嗎
A:先在兩個節點上(主備庫)分別按照ogg軟件,設置mgr進程,而後在主庫上設置抽取進程和採集進程,在備庫上設置採集進程,像咱們上次遷移新查詢庫,首先用rman進行全庫備份,而後使用克隆技術克隆出一個庫,再經過GG將增量數據抽取過來,就能夠了,爲了安全起見,禁用了GG的DDL同步功能,若是要是雙向複製,就須要在備庫再建立一個抽取進程和採集進程,相應在主庫在添加一個採集進程便可。
Q:像RMAN在執行中會佔用到SGA的large pool,那麼GG在運行中是本身獨立的進程,仍是也會佔用Oracle的進程
A:data pump的話應該會佔用到Oracle的進程吧,感受GG應該是也會佔用large_pool,可是具體的沒有研究過那麼深,因此不知道對錯
Q:若是是一個SQL產生了死鎖,有什麼方法能看出來?在OS層面
A:是這樣的,首先可使用top來看一下CPU和內存的狀況(根據每一個進程),而且結合ps –ef | grep ora命令來查找,若是真的是死鎖的話,那麼經過v$session中的lockwait顯示出來的sid和OS上的pid是會對應的。
Q:死鎖有什麼解決辦法?只能人工殺死嗎?
A:具體問題具體分析,若是是latch,不須要管他,他是搶佔式的,若是是lock,那麼要看究竟是事務佔用了(好比排他鎖會產生排隊),仍是真的死鎖(好比應用層斷開鏈接或者沒響應了),若是是排隊,那麼將死掉的事務提交或者回滾,剩下與其排隊的死鎖會自動解開,若是是失去響應了,就須要手工干預了
Q:OS層面除了top,還有啥能夠查看系統或者數據庫性能情況的命令,從系統級
A:iostat、vmstat、sar、uptime等等,還有不少了
Q:若是查看系統的內核版本用哪一個命令
A:uname,-a或者-r均可以
Q:若是查看系統版本號怎麼辦?
A:查看/ect/redhat-release文件便可
Q:如何查看一個服務器上有多少個實例
A:這個用查監聽情況應該能夠
Q:若是service用的其餘名字或者用其餘端口呢,這都不肯定的
A:若是查/etc/oratab文件也是能夠的其實,固然,有可能裏面沒有寫,那麼查ORACLE_HOME/dbs/initSID.ora或者spfileSID.ora是能夠的。
Q:嗯,你英文不太好是吧
A:額,是啊,很爛,丟人
Q:那你能用英文作個簡單的自我介紹嗎?
A:對不起,這個真的沒有準備(不是第二輪才英文面試嗎,鬱悶)
Q:哦,那你看還有啥須要問咱們的?
A:(本身又問了一些技術問題,主要是12C新技術方面和Oracle將來發展方向的,那我的很耐心的給熊熊解答了,感受很好)
Q:還有嗎?
A:沒有了,很是感謝
Q:好的,咱們會再通知你
A:好的,謝謝
今天的面試就結束了,那個女生把熊熊送下樓的時候提到由於面試結果要呈報美國的那個manager審覈,由他來決定是否能夠進入第二輪面試,同時她也提到,這個部門對英語仍是很看重,因此這點仍是很重要的。
總結一點,基本上技術大方向仍是能答出來,可是細節和深度仍是不夠,有些問題應該是很清晰的,面試時候仍是有些緊張了,整體來講,這次面試受益不淺,就算失敗,也是一次頗有意義的經歷,感謝甲骨文給出的此次機會,會讓我很是受用~