甲骨文面試歸來

此文謹以記念咱們曾經失去的青春ios

在節前(端午節)就收到了甲骨文的電話,說我投遞的簡歷被選中,邀請來面試,分別是兩個部門,在深圳總部打過來的全球化支持部(工做地點依然爲北京)和北京總部打過來的公有云事業部,職位都是高級DBA面試

因爲全球化支持部涉及英語口語要求較高,我的仍是更傾向於公有云事業部,可是先接到了前者的面試郵件,約定618日下午去面試,在軟件園裏的甲骨文總部大樓~數據庫

到了軟件園大門,之前熊熊一直覺得東門口那個十號樓上寫的Oracle甲骨文的就是甲骨文總部了,還以爲那裏挺小的了,郵件中提到的是24號樓,因而進入十號樓問了保安,才知道要走很遠(一開始沒在乎,後來才知道,真的好遠)緩存

沿着路一直往軟件園深處走去,真的好遠啊,沿途通過了一箇中歐國際工商學院,那種別墅似風格的教學樓,不高,就2-3層,可是應該很奢華,樓下停着不少的豪車(奔馳、寶馬、奧迪,都是進口高系),啥時候熊熊才能來這裏學習呢,嘻嘻~安全

走了大約25分鐘的路程,終於來到了24號樓,甲骨文北京總部所在地,真的很壯觀,就像一個小型社區,在門口照了張相,把甲骨文的Logo照了進來,找到右手邊的T2樓,進去到前臺,說明來意,問是否預定好,回答是的。服務器

前臺保安讓熊熊給聯繫人打個電話,這時纔想起,聯繫人根本沒有給熊熊留電話。因而在前臺小姑娘那裏查聯繫人的電話,結果由於甲骨文都是英文名字的緣由,我只知道對方中文名稱,沒法查到,正在着急中,對方正好打電話過來,告知她已經到樓下,說稍等片刻,下來接熊熊~網絡

見面之後,一個長相很通常的女生,氣質和親和度也不是特別贊,填好表格之後,由她領上3樓,到了一間小會議室,過很少久,進來一位30來歲的高級工程師(也許就是manager)模樣的男人,面試正式開始~session

也沒有浪費時間讓熊熊作什麼簡單的自我介紹,只是問了一下如今工做主要作什麼,可能熊熊答的有點簡單,讓對方感受是普通的運維DBA,因而針對熊熊的問題開始了深刻面試運維

Q:你在工做中主要負責哪塊業務如今ide

A:主要負責總體數據庫的平常維護,保證數據庫的穩定、可靠、高效運行

Q:那大家一般如何來巡檢,有哪些工具手段?

A:由於銀行方面沒法使用OEM或者GCGrid Control)這種圖形化工具,所以咱們的平常巡檢都是用AWRASHADDMRDA等一系列工具來作的,若是有具體的問題,也會經過一些動態視圖來具體查看,包括查看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,這個事務就不成立。

QOK,你在工做中都是單實例仍是有RAC

A:是這樣的,咱們有一個小機,上面跑了五個單實例的庫,另外還有兩套RAC環境

Q:大家的RAC是兩個節點的?

A:是的,之前也作過4個節點的

Q:那麼你如何來查看RAC的狀態?

A:經過crs命令就能夠查看了

Q:具體命令是什麼呢?

Acrs_stat –t就能夠查看到節點狀態

Q:那麼你如何知道RAC中有幾個節點呢?

A:使用剛纔那個命令其實就能夠看到有幾個節點了

Q:你說的這是全部節點正常啓動的狀況,若是不是呢?

A:是這樣,有一個比較笨的方法,我使用DBCA命令中的instancemanager來看個人節點信息,只要節點的OCR信息沒有被破壞,那麼均可以看到的

Q:你剛纔提到OCR信息被破壞,那麼若是OCR信息被破壞了,該怎麼作?

A:咱們能夠經過重建OCR來修復

Q:具體怎麼作呢?

A:經過修改ocr.locparamfile.crs文件進行設置,而後經過命令進行重建

Q:什麼命令?

A:額,那個,唉,想不起來了,不過若是作的話,我知道該如何作的,除了重建OCR,咱們也能夠刪除節點的OCR信息再添加,效果是同樣的,只是OCR重建更方便些

Q:大家裝RAC用的是ASM嗎?

A:是的

QASM裏有個au_size參數,你知道嗎?

A:這個真沒接觸過(回來之後熊熊仔細看了這個參數,Oracle 10g是默認的1m大小,不能修改,11g之後能夠手工修改,因此熊熊不知道)

Q:若是單實例變成RAC,有什麼方法嗎?

A:可使用DGstandby複製出一個節點,而後添加節點的OCR信息等,用rman克隆應該也能夠的

Q:你提到DG,你有沒有作過DG

A:這個是有的

Q:那你說說DG都須要配置哪些?

A:首先在主庫開啓歸檔和輔助日誌,而後設置一些參數,好比log_archive_dest裏添加主庫和備庫的信息,fal的兩個參數要設置(fal_clientfal_server),而後若是有文件轉換須要設置convert(包括dblog),將主庫的spfile轉化成pfile,傳送pfile和密碼文件到從庫機器上修改相應參數,主庫能夠經過RMAN作一個全備,而後可使用RMAN的輔助數據庫功能在從庫進行恢復,10g的物理DG只能是mount模式,11g能夠是open read only模式,這樣能夠將此庫設置爲只讀查詢庫,來實現讀寫分離

Q:大家工做中有沒有用到DG

A:咱們用到的是GGGoldenGate

Q:你能簡單說一下GG的設置嗎

A:先在兩個節點上(主備庫)分別按照ogg軟件,設置mgr進程,而後在主庫上設置抽取進程和採集進程,在備庫上設置採集進程,像咱們上次遷移新查詢庫,首先用rman進行全庫備份,而後使用克隆技術克隆出一個庫,再經過GG將增量數據抽取過來,就能夠了,爲了安全起見,禁用了GGDDL同步功能,若是要是雙向複製,就須要在備庫再建立一個抽取進程和採集進程,相應在主庫在添加一個採集進程便可。

Q:像RMAN在執行中會佔用到SGAlarge pool,那麼GG在運行中是本身獨立的進程,仍是也會佔用Oracle的進程

Adata pump的話應該會佔用到Oracle的進程吧,感受GG應該是也會佔用large_pool,可是具體的沒有研究過那麼深,因此不知道對錯

Q:若是是一個SQL產生了死鎖,有什麼方法能看出來?在OS層面

A:是這樣的,首先可使用top來看一下CPU和內存的狀況(根據每一個進程),而且結合ps –ef | grep ora命令來查找,若是真的是死鎖的話,那麼經過v$session中的lockwait顯示出來的sidOS上的pid是會對應的。

Q:死鎖有什麼解決辦法?只能人工殺死嗎?

A:具體問題具體分析,若是是latch,不須要管他,他是搶佔式的,若是是lock,那麼要看究竟是事務佔用了(好比排他鎖會產生排隊),仍是真的死鎖(好比應用層斷開鏈接或者沒響應了),若是是排隊,那麼將死掉的事務提交或者回滾,剩下與其排隊的死鎖會自動解開,若是是失去響應了,就須要手工干預了

QOS層面除了top,還有啥能夠查看系統或者數據庫性能情況的命令,從系統級

Aiostatvmstatsaruptime等等,還有不少了

Q:若是查看系統的內核版本用哪一個命令

Auname-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審覈,由他來決定是否能夠進入第二輪面試,同時她也提到,這個部門對英語仍是很看重,因此這點仍是很重要的。

總結一點,基本上技術大方向仍是能答出來,可是細節和深度仍是不夠,有些問題應該是很清晰的,面試時候仍是有些緊張了,整體來講,這次面試受益不淺,就算失敗,也是一次頗有意義的經歷,感謝甲骨文給出的此次機會,會讓我很是受用~

相關文章
相關標籤/搜索