|
問題起源于在寫一份材料的時(shí)候,對(duì)于自己的反思。
我把自己的觀點(diǎn)發(fā)到了 twitter 和各大微博上,有不少朋友紛紛回復(fù)我。這這里,先感謝各位,因?yàn)橛懈鞣N思想的交鋒,觀點(diǎn)的交流,讓討論變得很有意義。
我們究竟要成為一個(gè)怎么樣的 DBA,公司究竟需要一個(gè)怎么樣的 DBA?作為一個(gè) DBA 應(yīng)該須有怎么樣的素質(zhì)?
首先作為一個(gè) DBA,數(shù)據(jù)庫的基本功很重要,了解數(shù)據(jù)庫的內(nèi)存結(jié)構(gòu),物理結(jié)構(gòu),了解數(shù)據(jù)庫由物理文件到內(nèi)存是怎么運(yùn)作的,怎么聯(lián)系的,靠什么進(jìn)程來進(jìn)行管理,雖然說人人都知道 oracle 有 SGA,里面有 shared pool,db cache 等等,但是并不是所有人都知道他們和操作系統(tǒng)是怎么發(fā)生聯(lián)系的?從操作系統(tǒng)物理文件層面,到操作系統(tǒng)內(nèi)存層面,到 oracle 的內(nèi)存層面,到 latch,到 cache,到 lock,到 transaction,到 data block,之間是怎么發(fā)生聯(lián)系的,了解了其中的關(guān)系,才能對(duì) oracle 有個(gè)大致的了解。
上面說的只是單實(shí)例的數(shù)據(jù)庫,而現(xiàn)實(shí)中,單實(shí)例的數(shù)據(jù)庫往往用的不多,生產(chǎn)環(huán)境往往需要高可用性,因此你必須了解各種高可用的架構(gòu),RAC,dataguard,stream,cdc 等等,了解這些架構(gòu)中常見的等待事件是什么,是因?yàn)槟膫€(gè)主鍵引起了這些等待,了解 HACMP,HP MC-SG,最好能了解一些他們的切換是如何進(jìn)行的,依賴的組件(資源)是什么,是有哪個(gè)腳本來控制的,你是否可以修改腳本來控制切換的行為。在這一方面,可能更多的不是了解 oracle 的知識(shí),而是主機(jī)層面的知識(shí)了。
當(dāng)你有了主機(jī)層面的知識(shí),你是否還應(yīng)該考慮一下架構(gòu)方面的,數(shù)據(jù)庫是生產(chǎn)系統(tǒng)的核心,上連應(yīng)用下連物理設(shè)備,你所處的環(huán)境中,是一個(gè)怎么樣的網(wǎng)絡(luò)拓?fù)鋱D?應(yīng)用服務(wù)器幾臺(tái)?哪些是在防火墻外哪些在防火墻內(nèi),應(yīng)用服務(wù)器通過中間件連接數(shù)據(jù)庫(這里你最好也懂中間件中關(guān)于數(shù)據(jù)庫的配置),后面是否四層交換機(jī)做負(fù)載均衡?連接了數(shù)據(jù)庫之后,數(shù)據(jù)庫主機(jī)上有幾個(gè)網(wǎng)卡,哪個(gè)是做冗余,哪個(gè)是做備份,哪個(gè)是做 inter-connect,數(shù)據(jù)庫后面還有什么,連接光纖交換機(jī)的存儲(chǔ)是什么,什么型號(hào)的,讀寫速度如何?做 raid 幾,有做存儲(chǔ)的同步(BCV/CA)進(jìn)行容災(zāi)嗎?除了 SAN,還可能接的是 NAS,每個(gè)卷分給了幾個(gè)服務(wù)器?是否共享?數(shù)據(jù)庫的備份是用哪家的備份工具,TSM?NBU?LEGATO?DP?是走網(wǎng)絡(luò)還是 lanfree?另外,數(shù)據(jù)庫肯定有監(jiān)控,監(jiān)控用的什么工具,觸發(fā)的條件如何,監(jiān)控工具得到的數(shù)據(jù)是用什么命令獲得的?如何設(shè)置不同應(yīng)用系統(tǒng)的不同告警等級(jí)?如何設(shè)置不同故障的告警等級(jí)?如數(shù)據(jù)庫宕了和偶爾報(bào)一個(gè) ora-1555的錯(cuò)肯定不是一個(gè)等級(jí)。
另外,作為一個(gè)有經(jīng)驗(yàn)的 DBA,你是否心目中有一套常用的性能數(shù)據(jù),如開異步 IO 之后,主機(jī)的 wait IO 多少是正常,不開異步 IO 的如何?數(shù)據(jù)文件的 db file sequence read 的 average read time 多少毫秒內(nèi)是一個(gè)大致正常的值等等。這在調(diào)優(yōu)的時(shí)候,會(huì)很有用。因?yàn)?statspack 誰都會(huì)做,但是不是人人都能看得懂的。
上述是維護(hù) DBA 要知道的事情,開發(fā) DBA 有另外的,這里不展開了。
上面說的可能都是干貨,很多時(shí)候,DBA 還需要一些其他的素質(zhì),從我個(gè)人角度講,一個(gè)高質(zhì)量的 DBA 需要具備以下意識(shí)。
能抗壓,因?yàn)樵诠收咸幚淼臅r(shí)候,你面臨著大量的壓力,領(lǐng)導(dǎo)盯著你,客戶催著你,你在做故障診斷的時(shí)候,還有每隔一段時(shí)間匯報(bào)你的進(jìn)度,告訴他們你的想法,如果你沒有一定的抗壓能力,在 troubleshoot 的時(shí)候,肯定會(huì)垮掉的。
反應(yīng)迅速,在 troubleshooting 的時(shí)候同樣也需要反映迅速,面對(duì)不斷彈出來的對(duì)話框要能快速的回應(yīng),時(shí)間就是金錢,當(dāng)你和你客戶簽訂 SLA 的時(shí)候,你的數(shù)據(jù)庫起不來,每一秒鐘都是邁向 SLA 的腳步,反應(yīng)慢,不行。
會(huì)猜,DBA 不可能遇到過所有的問題和故障,在同等的知識(shí)水平下,DBA 會(huì)猜的能力就能重要,他會(huì)中一些線索中找答案,從已知推斷未知。打個(gè)比方,在一個(gè)沙漠機(jī)房里面,沒有互聯(lián)網(wǎng),你沒法 google,沒法 metalink,一個(gè)會(huì)“想辦法”的 DBA 可能會(huì)耗費(fèi)一定的時(shí)間,但是最終找到解決辦法,但是一個(gè)“不會(huì)想”、“不敢想”的 DBA,就算給他再多的時(shí)間,最終浪費(fèi)的還是一趟出差的機(jī)票錢。
團(tuán)隊(duì)協(xié)作的能力,很多情況,DBA 面臨的問題不僅僅是數(shù)據(jù)庫的問題,剛剛說了數(shù)據(jù)庫是業(yè)務(wù)核心,上連應(yīng)用下連物理設(shè)備,DBA 的知識(shí)結(jié)構(gòu)往往是T形,即深入于一方面的內(nèi)容(T的那支腳),而對(duì)其他的知識(shí)只是了解,是廣度,即T上面的那一橫。對(duì)于不熟悉的內(nèi)容,就要表達(dá)給別人,請(qǐng)別人幫忙一起看。注意,這里是大家一起解決一個(gè)問題,而不是把問題推給別人。小公司的團(tuán)隊(duì)不太會(huì)出現(xiàn)這樣的問題,他們往往人數(shù)少,流程少,配合緊密,效率極高;大公司里面,分工很細(xì)。不是一個(gè)團(tuán)隊(duì)的可能老板也不是一個(gè)人,大家就會(huì)互相踢皮球。
強(qiáng)大的自信心和表達(dá)能力,在客戶那邊,如果你診斷出一個(gè)問題,但是沒有把握,此時(shí)如果你表現(xiàn)的是自信滿滿,那么就比較容易說服客戶去證實(shí)你的猜測,另外,也會(huì)比較容易去推行一些做法。相反,如果沒有自信,客戶怎么會(huì)相信一個(gè)連自己都說服不了自己的人?
關(guān)注行業(yè)行情,我覺得作為一個(gè) DBA,我們不能太“書呆子”,我們還是要了解一下行業(yè)八卦,這在和行業(yè)內(nèi)的朋友交談交流的時(shí)候,很有好處。說 oracle 有著非常強(qiáng)大法務(wù)部門(相信不少人看到過一個(gè)圖,從組織結(jié)構(gòu)圖看 Google、Facebook、微軟等大公司的企業(yè)文化「漫畫」),一天,拉里開著他的跑車回公司,一路飚車,被路邊的警察看到超速了,追了上去,拉里一路飆回自己的公司,把車鑰匙往法務(wù)部門老大的桌子上一放:You deal with it!
除了上述的素質(zhì),公司也會(huì)考察我們其他方面的東西。這些東西 DBA 可能覺得不重要,但是公司很看重,為什么?因?yàn)樗P(guān)系到公司的存亡。
流程觀念,大公司為什么能生存的久,因?yàn)樗幸惶淄暾牧鞒瘫WC所有的人做同樣的事情都是同樣的效果。這聽上去挺好,但是,當(dāng)你身處其中的時(shí)候,你就會(huì)覺得你的技能被壓制的。遇到一個(gè)故障,你接手,如果是小問題,如 tablespace 滿,ok,你開一個(gè) change 去增加對(duì)應(yīng)的大小,change 會(huì)讓所有相關(guān)的人員來審核,并且有 2 個(gè) DBA 來 review change,有第三者來部署 change(因?yàn)椴渴鸬臅r(shí)候已經(jīng)是你處理該問題之后的好幾天了);如果是大問題,如壞塊或者 ora-600,那么這個(gè)時(shí)候就要提交 SR,讓 oracle 來做分析,你完全不需要做什么思考,就算你思考出來的結(jié)果,那也是不標(biāo)準(zhǔn)的,必須在 SR 中讓 oracle 確認(rèn)之后才算。那么這種情況下,你還愿意去做所謂的 troubleshooting 么?
剛剛只是說了流程中的 Incident Management,其他類似的還有好多,如 Configuration Management,Change Management,Release Management,Problem Management,Availability Management,Asset Management,Service Continuity,Capacity Management,Service Level Management,Security Management……這些都不是技術(shù)上的項(xiàng)目,都是流程上的。上述雖然只是一個(gè)詞組,但是任意一條展開了都有可能變成 5000 字的論文,呵呵。
所以,公司需要的是一個(gè)遵守制度,沒有破壞力的 DBA,并且這樣的 DBA 又能在它的框架之下,運(yùn)用他的能力和經(jīng)驗(yàn),幫他維護(hù)好系統(tǒng),并且留下文檔,歸入知識(shí)庫中,以便作為為后一代的 DBA 的操作指南。而 DBA 是希望能借助公司這個(gè)平臺(tái)更好的展示自己的能力,獲取更多的經(jīng)驗(yàn),來提升自己。
博弈在繼續(xù)……一方認(rèn)為自己是黑客帝國中的 Nero,另一方則努力把對(duì)方變成一個(gè)普通人。
it知識(shí)庫:DBA應(yīng)該具有什么樣的素質(zhì)?,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。