1
我是一名大四的DBA實(shí)習(xí)生。
在一家游戲公司實(shí)習(xí)了4個多月,但一直沒怎么接觸到DBA的業(yè)務(wù),而是和其他幾個實(shí)習(xí)生給公司開發(fā)DB自動化平臺。
前幾天時候,公司里帶我做業(yè)務(wù)的導(dǎo)師讓我到其他部門給一位開發(fā)人員解決一個DB問題,當(dāng)時我是既激動又緊張,到了開發(fā)同學(xué)那,發(fā)現(xiàn)是一個存儲過程執(zhí)行有問題:
ORA-01653: unable to extend table USER_DATA.GRAF by 128 in tablespace USER_DATA
看到這個報錯信息我第一個反應(yīng)就是,原來是個很簡單的問題,接著我人也就放松下來了,畢竟第一次讓我去給別人解決問題,我要是連問題都看不懂,那可就丟人丟大了。
然后我便開始著手解決。表空間不足嘛,不外乎兩個原因:要么沒有開自動擴(kuò)展;要么是開了自動擴(kuò)展,數(shù)據(jù)文件到了最大的上限。
select * from dba_data_files;
OK,自動擴(kuò)展是開著的,那么只能是數(shù)據(jù)文件到了最大的上限,我也不太清除數(shù)據(jù)文件最大可以到多少,既然滿了,那我再給表空間添加一個就是了:
alter tablespace add datafile '......';
然而當(dāng)回車敲下去的時候,卻報錯了:bigfile類型表空間無法添加數(shù)據(jù)文件。
bigfile是什么鬼?從來沒聽說過啊,當(dāng)時我就蒙逼了。
上百度查詢,發(fā)現(xiàn)這是表空間的一種類型,只支持一個數(shù)據(jù)文件,那看來數(shù)據(jù)文件是加不上了,怎么辦呢,只好給導(dǎo)師打電話求教,說明情況后導(dǎo)師接著就道出了問題的關(guān)鍵:bigfile類型的數(shù)據(jù)文件最大可以到T級,為什么才60多G就空間不足了?嘗試resize一下增大數(shù)據(jù)文件的最大空間。
針對這個問題其實(shí)我考慮過是不是磁盤的空間不足了,想要登到OS層查看一下磁盤的使用情況,但是開發(fā)同學(xué)說他沒有權(quán)限,所以我只好把這個可能暫時拋到了腦后,決定先resize一下。
alter database datafile '......' resize 100G;
幾分鐘的漫長等待,終于迎來了...又一次報錯。
文件I/O錯誤?!這一下可把我嚇得不輕,我不會把里面的數(shù)據(jù)給搞壞了吧???然后又一想,感覺應(yīng)該不會,畢竟是擴(kuò)空間。然而問題還要解決,開發(fā)同學(xué)提醒是否可以設(shè)小一點(diǎn)如70G試試,但是我想的是100G明明并沒有超出最大范圍卻報錯,可能是本身有一些問題,設(shè)小一點(diǎn)又有什么意義,卻是已經(jīng)把磁盤空間不足的這個可能不知道拋到了哪里。
再次問過導(dǎo)師后,我決定新建一個常規(guī)的表空間,將用戶的默認(rèn)改到新的表空間上,這樣以后不夠了可以直接加數(shù)據(jù)文件,當(dāng)當(dāng)當(dāng)一陣操作后,成功將用戶的默認(rèn)都轉(zhuǎn)到了新的空間,開發(fā)同學(xué)執(zhí)行存儲過程測試,結(jié)果...
ORA-01653: unable to extend table USER_DATA.GRAF by 128 in tablespace USER_DATA
當(dāng)時我的內(nèi)心是極其崩潰的,它居然還是提示原來的表空間不足?。?!
然后開發(fā)的同學(xué)告訴我,有一部分?jǐn)?shù)據(jù)成功插入了新的表空間,此時我已經(jīng)完全不知道該怎么辦了,只好讓導(dǎo)師下來解決。
導(dǎo)師下來后又執(zhí)行了一次resize,依舊報錯,然后告訴開發(fā):可能是磁盤的空間不足了吧,然后又詳細(xì)的解釋了一下,問能否登上OS查看一下,結(jié)果這次開發(fā)居然說:哦對,我好像應(yīng)該能登上。
...尼瑪。
登上OS查看,發(fā)現(xiàn)確實(shí)是因?yàn)榇疟P空間不足導(dǎo)致的,100G的硬盤,太老了,建議申請?zhí)砩弦粔K500G的盤,然后目前還剩下幾個G,resize增大了幾個G先湊合用。
問題到此就算是解決完了,然而有幾個問題卻值得我思考:
1)為什么我早就想到了磁盤空間不足的可能,卻一直不抓住它?
開發(fā)的同學(xué)說沒有權(quán)限的時候,我就暫時拋開了這個可能,結(jié)果后來徹底忘記了這個可能。
這兒我起碼犯了兩個錯誤:
第一個 是當(dāng)我開始懷疑磁盤空間不足的可能時,我沒有向開發(fā)的同學(xué)很清楚的解釋這個可能,也沒有說明我要登錄OS的目的,而是直接就問是否能登錄OS,假如當(dāng)時我解釋清楚這個可能,并說明要求登錄OS的原因,那么開發(fā)的同學(xué)即使真的沒有權(quán)限,也會針對這個要求想辦法,盡量滿足我的需要;
第二個 是當(dāng)我暫時拋開這個可能去嘗試其他方法時,最后都糾結(jié)于其他的各種問題中,最后導(dǎo)致完全遺忘了它。我沒有把握住問題的本質(zhì)與重點(diǎn),反而陷入不太相關(guān)的一些問題中不能自拔;也沒有發(fā)覺各個問題之間的聯(lián)系,而是糾結(jié)于單個的獨(dú)立問題。比如擴(kuò)容時的文件I/O錯誤,其實(shí)就是因?yàn)榇疟P空間不足導(dǎo)致的。
這兩個錯誤,一個是因?yàn)槲覜]有意識到交流的重要性;一個是因?yàn)槲胰狈潇o的分析。
我一直是一個比較話少的人,我的職業(yè)更偏向技術(shù),也不需要太多的話,然而我卻并不知道,在職場中,有效的交流是極其重要的,所幸的是,現(xiàn)在我知道了。
至于第二個錯誤,還要說到下面的第二個問題。
2) 為什么我沒有完全發(fā)揮出自己分析并解決問題的能力?
我可以打包票的說,如果這個問題發(fā)生在我自己的電腦上,那么我解決它是沒有任何問題的。
那么問題出在哪了?
我記得當(dāng)初在學(xué)習(xí)數(shù)據(jù)庫時,老師曾經(jīng)告訴我們:以后做為一個DBA,一定要有自信,以及很強(qiáng)的抗壓能力,因?yàn)橐院蟪鋈チ丝赡芙?jīng)常會出現(xiàn)你一個人解決問題而身邊圍了一圈人看著你這種場景,通常這一圈人里還大都是領(lǐng)導(dǎo)。所以DBA一定要能扛得住這種壓力,并且自信、冷靜的分析問題。
當(dāng)然老師說的是那種傳統(tǒng)行業(yè)或第三方公司的情況,我所在的互聯(lián)網(wǎng)行業(yè)像這種圍一圈領(lǐng)導(dǎo)的事情還是不太可能發(fā)生的,然而這足以說明DBA必須要具備的素質(zhì),不只是專業(yè)技能。
因此導(dǎo)致我無法冷靜分析問題的因素不外乎這么幾個:
第一次被指派去獨(dú)立解決問題的緊張;開發(fā)同學(xué)一直盯著我的壓力;第一次在生產(chǎn)庫上直接操作的膽怯;還有,心態(tài)從一開始就沒有擺正:我給自己打上了理所當(dāng)然的實(shí)習(xí)生的標(biāo)簽,本應(yīng)該是同事我卻以實(shí)習(xí)生對前輩的方式去交談與對待。
這些都導(dǎo)致了我不夠自信,并無法靜下心來分析問題。
當(dāng)然初入職場,第一次難免會這樣,而我需要做的,就是擺正心態(tài),保持自信,不斷磨礪,默默成長。
我吸取了教訓(xùn),并繼續(xù)努力。
2
在給開發(fā)同學(xué)解決完那個問題幾天之后,我收到了導(dǎo)師的一封郵件,讓我再下去一趟。因?yàn)槟莻€開發(fā)的同學(xué)已經(jīng)申請了500G的硬盤,現(xiàn)在需要將原來的100G中的數(shù)據(jù)遷到新的硬盤中。讓我去做。
其實(shí)導(dǎo)師是提前給我發(fā)的郵件,但是當(dāng)時我沒有打開郵箱,直到需要我下去做了我才知道這件事,因此當(dāng)我看到郵件中的內(nèi)容是讓我去做遷移我又懵了。
遷移可是大動作, 需要一系列的流程,具體我就不細(xì)說了,在我們6個實(shí)習(xí)生中也不是所有人都做過遷移,我下去之后開始的一段時間真的是完全不知道該怎么做,后來只好叫了另一個做過遷移的實(shí)習(xí)生下來幫忙。她雖然做過遷移,但是也是心里沒底,所以下去的時候還抱著遷移的文檔。
我一直挺納悶,為啥遷移這樣的大動作會讓我這個從沒做過的實(shí)習(xí)生自己來做,后來又問了開發(fā)同學(xué)具體的需求,才明白,原來不是遷庫的遷移,而是本地數(shù)據(jù)文件遷移。這個就簡單多了,說白了就是把數(shù)據(jù)文件換個地方。
想明白后就簡單多了,我們兩個討論著開始做:
alter tablespace name offline;
cp datafile ->新的路徑
alter tablespace name rename datafile 'old path+name' to 'new path+name';
alter tablespace name online;
總的流程就是這樣,cp時耗費(fèi)了一段時間,然后第三步rename時報錯:
permission denied
明明已經(jīng)完全對照數(shù)據(jù)文件修改了目錄的權(quán)限,可還是報錯權(quán)限問題。
查看了總目錄的權(quán)限:完全正確;數(shù)據(jù)文件的權(quán)限:完全正確。針對某些可能網(wǎng)上搜索,也沒找出答案。
因?yàn)樵谶w移的過程中tablespace是offline的,所以肯定會影響業(yè)務(wù),并且當(dāng)時已經(jīng)到了吃飯的點(diǎn)開發(fā)同學(xué)要去吃飯,所以只能再將原表空間online,導(dǎo)師說等回來他看一下。
是因?yàn)槭裁丛蚰兀慨?dāng)然是權(quán)限不對,但不是數(shù)據(jù)文件和總目錄的權(quán)限,而是子目錄的權(quán)限。我當(dāng)時和另一個實(shí)習(xí)同學(xué)都確信已經(jīng)按照原目錄修改了權(quán)限,但是還是權(quán)限出了問題。因?yàn)楫?dāng)時我們是按照datafile的權(quán)限640修改,但目錄的權(quán)限卻應(yīng)該是755。
我又犯了哪些錯誤呢?
1) 粗心
雖然如果再給我多點(diǎn)時間我一定能解決這個問題,但是通常職場上不會給你時間讓你解決自己犯下的錯誤,生產(chǎn)上更是如此,因此最好的辦法就是不犯錯誤。不過人畢竟不是機(jī)器,總難免不會犯錯,那么退而求其次,最起碼犯了錯要能及時發(fā)現(xiàn)并改正。
然而我最大的問題就是開始不但沒能發(fā)現(xiàn)自己改錯了權(quán)限,還堅信自己改對了并且沒有去檢查。為什么我堅信不疑的記憶會欺騙我呢?
我曾經(jīng)在網(wǎng)易TED演講上看到過相關(guān)的演講,大意就是講人們所堅信的記憶有時也會欺騙自己。我搞不懂具體的科學(xué)原理,但是我告訴自己:當(dāng)所有的可能性都排除后,請試著再懷疑一次自己深信不疑的東西。
當(dāng)然這只是在解決問題的過程中犯下的錯誤,接下來的幾個才是真正潛在的,我沒有立刻意識到但卻至關(guān)重要的錯誤:
2) 遷移操作之前也看過別人做過,另一個實(shí)習(xí)生同學(xué)也將遷移的文檔分享了,但是為什么我沒有及時整理,以至于需要我來做的時候我毫無準(zhǔn)備?
我給自己找了一堆的借口,但幸好現(xiàn)在我意識到,這些都只是借口。
3) 沒有養(yǎng)成一直開著郵件,或上班就打開郵件的習(xí)慣
這個看起來似乎無所謂,但實(shí)際上這是非常重要的一個習(xí)慣,就這件事而言,如果我一直開著郵件,那么我會提前收到導(dǎo)師的通知,可以提前準(zhǔn)備。而且一些重要的事情或需求也都是通過郵件來傳達(dá),因?yàn)槲沂菍?shí)習(xí)生還沒怎么接觸到業(yè)務(wù),因此很難意識到這些,如果等到成為真正的員工還沒有這個習(xí)慣,或許會后悔的。
不過幸好,這件事讓我意識到了這一點(diǎn),為時不晚。
3
我不知道這兩件事給我的導(dǎo)師和開發(fā)的同學(xué)留下了多少不好的印象,總之事情已經(jīng)這樣了,后悔也沒用,我能做的就是總結(jié)下經(jīng)驗(yàn)教訓(xùn),盡量避免,下不為例。同時努力學(xué)習(xí),有了足以應(yīng)對一切的知識與技能,做事才會有底氣。
分享給大家,希望能給初入職場的同學(xué)一點(diǎn)啟示,與大家共勉。