1
我是一名大四的DBA實習生。
在一家游戲公司實習了4個多月喇闸,但一直沒怎么接觸到DBA的業(yè)務(wù),而是和其他幾個實習生給公司開發(fā)DB自動化平臺。
前幾天時候燃乍,公司里帶我做業(yè)務(wù)的導師讓我到其他部門給一位開發(fā)人員解決一個DB問題唆樊,當時我是既激動又緊張,到了開發(fā)同學那刻蟹,發(fā)現(xiàn)是一個存儲過程執(zhí)行有問題:
ORA-01653: unable to extend table USER_DATA.GRAF by 128 in tablespace USER_DATA
看到這個報錯信息我第一個反應(yīng)就是逗旁,原來是個很簡單的問題,接著我人也就放松下來了舆瘪,畢竟第一次讓我去給別人解決問題片效,我要是連問題都看不懂,那可就丟人丟大了英古。
然后我便開始著手解決淀衣。表空間不足嘛,不外乎兩個原因:要么沒有開自動擴展召调;要么是開了自動擴展膨桥,數(shù)據(jù)文件到了最大的上限。
select * from dba_data_files;
OK唠叛,自動擴展是開著的只嚣,那么只能是數(shù)據(jù)文件到了最大的上限,我也不太清除數(shù)據(jù)文件最大可以到多少艺沼,既然滿了册舞,那我再給表空間添加一個就是了:
alter tablespace add datafile '......';
然而當回車敲下去的時候,卻報錯了:bigfile類型表空間無法添加數(shù)據(jù)文件障般。
bigfile是什么鬼调鲸?從來沒聽說過啊,當時我就蒙逼了剩拢。
上百度查詢线得,發(fā)現(xiàn)這是表空間的一種類型,只支持一個數(shù)據(jù)文件徐伐,那看來數(shù)據(jù)文件是加不上了贯钩,怎么辦呢,只好給導師打電話求教办素,說明情況后導師接著就道出了問題的關(guān)鍵:bigfile類型的數(shù)據(jù)文件最大可以到T級角雷,為什么才60多G就空間不足了?嘗試resize一下增大數(shù)據(jù)文件的最大空間性穿。
針對這個問題其實我考慮過是不是磁盤的空間不足了勺三,想要登到OS層查看一下磁盤的使用情況,但是開發(fā)同學說他沒有權(quán)限需曾,所以我只好把這個可能暫時拋到了腦后吗坚,決定先resize一下祈远。
alter database datafile '......' resize 100G;
幾分鐘的漫長等待,終于迎來了...又一次報錯商源。
文件I/O錯誤车份?!這一下可把我嚇得不輕牡彻,我不會把里面的數(shù)據(jù)給搞壞了吧扫沼??庄吼?然后又一想缎除,感覺應(yīng)該不會,畢竟是擴空間总寻。然而問題還要解決器罐,開發(fā)同學提醒是否可以設(shè)小一點如70G試試,但是我想的是100G明明并沒有超出最大范圍卻報錯废菱,可能是本身有一些問題技矮,設(shè)小一點又有什么意義,卻是已經(jīng)把磁盤空間不足的這個可能不知道拋到了哪里殊轴。
再次問過導師后衰倦,我決定新建一個常規(guī)的表空間,將用戶的默認改到新的表空間上旁理,這樣以后不夠了可以直接加數(shù)據(jù)文件樊零,當當當一陣操作后,成功將用戶的默認都轉(zhuǎn)到了新的空間孽文,開發(fā)同學執(zhí)行存儲過程測試驻襟,結(jié)果...
ORA-01653: unable to extend table USER_DATA.GRAF by 128 in tablespace USER_DATA
當時我的內(nèi)心是極其崩潰的,它居然還是提示原來的表空間不足S罂蕖3烈隆!
然后開發(fā)的同學告訴我减牺,有一部分數(shù)據(jù)成功插入了新的表空間豌习,此時我已經(jīng)完全不知道該怎么辦了,只好讓導師下來解決拔疚。
導師下來后又執(zhí)行了一次resize肥隆,依舊報錯,然后告訴開發(fā):可能是磁盤的空間不足了吧稚失,然后又詳細的解釋了一下栋艳,問能否登上OS查看一下,結(jié)果這次開發(fā)居然說:哦對句各,我好像應(yīng)該能登上吸占。
...尼瑪晴叨。
登上OS查看,發(fā)現(xiàn)確實是因為磁盤空間不足導致的旬昭,100G的硬盤篙螟,太老了,建議申請?zhí)砩弦粔K500G的盤问拘,然后目前還剩下幾個G,resize增大了幾個G先湊合用惧所。
問題到此就算是解決完了骤坐,然而有幾個問題卻值得我思考:
1)為什么我早就想到了磁盤空間不足的可能,卻一直不抓住它下愈?
開發(fā)的同學說沒有權(quán)限的時候纽绍,我就暫時拋開了這個可能,結(jié)果后來徹底忘記了這個可能势似。
這兒我起碼犯了兩個錯誤:
第一個 是當我開始懷疑磁盤空間不足的可能時拌夏,我沒有向開發(fā)的同學很清楚的解釋這個可能,也沒有說明我要登錄OS的目的履因,而是直接就問是否能登錄OS障簿,假如當時我解釋清楚這個可能,并說明要求登錄OS的原因栅迄,那么開發(fā)的同學即使真的沒有權(quán)限站故,也會針對這個要求想辦法,盡量滿足我的需要毅舆;
第二個 是當我暫時拋開這個可能去嘗試其他方法時西篓,最后都糾結(jié)于其他的各種問題中,最后導致完全遺忘了它憋活。我沒有把握住問題的本質(zhì)與重點岂津,反而陷入不太相關(guān)的一些問題中不能自拔;也沒有發(fā)覺各個問題之間的聯(lián)系悦即,而是糾結(jié)于單個的獨立問題吮成。比如擴容時的文件I/O錯誤,其實就是因為磁盤空間不足導致的盐欺。
這兩個錯誤赁豆,一個是因為我沒有意識到交流的重要性;一個是因為我缺乏冷靜的分析冗美。
我一直是一個比較話少的人魔种,我的職業(yè)更偏向技術(shù),也不需要太多的話粉洼,然而我卻并不知道节预,在職場中叶摄,有效的交流是極其重要的,所幸的是安拟,現(xiàn)在我知道了蛤吓。
至于第二個錯誤,還要說到下面的第二個問題糠赦。
2) 為什么我沒有完全發(fā)揮出自己分析并解決問題的能力会傲?
我可以打包票的說,如果這個問題發(fā)生在我自己的電腦上拙泽,那么我解決它是沒有任何問題的淌山。
那么問題出在哪了?
我記得當初在學習數(shù)據(jù)庫時顾瞻,老師曾經(jīng)告訴我們:以后做為一個DBA泼疑,一定要有自信,以及很強的抗壓能力荷荤,因為以后出去了可能經(jīng)常會出現(xiàn)你一個人解決問題而身邊圍了一圈人看著你這種場景退渗,通常這一圈人里還大都是領(lǐng)導。所以DBA一定要能扛得住這種壓力蕴纳,并且自信会油、冷靜的分析問題。
當然老師說的是那種傳統(tǒng)行業(yè)或第三方公司的情況袱蚓,我所在的互聯(lián)網(wǎng)行業(yè)像這種圍一圈領(lǐng)導的事情還是不太可能發(fā)生的钞啸,然而這足以說明DBA必須要具備的素質(zhì),不只是專業(yè)技能喇潘。
因此導致我無法冷靜分析問題的因素不外乎這么幾個:
第一次被指派去獨立解決問題的緊張体斩;開發(fā)同學一直盯著我的壓力;第一次在生產(chǎn)庫上直接操作的膽怯颖低;還有絮吵,心態(tài)從一開始就沒有擺正:我給自己打上了理所當然的實習生的標簽,本應(yīng)該是同事我卻以實習生對前輩的方式去交談與對待忱屑。
這些都導致了我不夠自信蹬敲,并無法靜下心來分析問題。
當然初入職場莺戒,第一次難免會這樣伴嗡,而我需要做的,就是擺正心態(tài)从铲,保持自信瘪校,不斷磨礪,默默成長。
我吸取了教訓阱扬,并繼續(xù)努力泣懊。
2
在給開發(fā)同學解決完那個問題幾天之后,我收到了導師的一封郵件麻惶,讓我再下去一趟馍刮。因為那個開發(fā)的同學已經(jīng)申請了500G的硬盤,現(xiàn)在需要將原來的100G中的數(shù)據(jù)遷到新的硬盤中窃蹋。讓我去做卡啰。
其實導師是提前給我發(fā)的郵件,但是當時我沒有打開郵箱脐彩,直到需要我下去做了我才知道這件事碎乃,因此當我看到郵件中的內(nèi)容是讓我去做遷移我又懵了。
遷移可是大動作惠奸, 需要一系列的流程,具體我就不細說了恰梢,在我們6個實習生中也不是所有人都做過遷移佛南,我下去之后開始的一段時間真的是完全不知道該怎么做,后來只好叫了另一個做過遷移的實習生下來幫忙嵌言。她雖然做過遷移嗅回,但是也是心里沒底,所以下去的時候還抱著遷移的文檔摧茴。
我一直挺納悶绵载,為啥遷移這樣的大動作會讓我這個從沒做過的實習生自己來做,后來又問了開發(fā)同學具體的需求苛白,才明白娃豹,原來不是遷庫的遷移,而是本地數(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時耗費了一段時間,然后第三步rename時報錯:
permission denied
明明已經(jīng)完全對照數(shù)據(jù)文件修改了目錄的權(quán)限薇芝,可還是報錯權(quán)限問題蓬抄。
查看了總目錄的權(quán)限:完全正確;數(shù)據(jù)文件的權(quán)限:完全正確夯到。針對某些可能網(wǎng)上搜索嚷缭,也沒找出答案。
因為在遷移的過程中tablespace是offline的黄娘,所以肯定會影響業(yè)務(wù)峭状,并且當時已經(jīng)到了吃飯的點開發(fā)同學要去吃飯克滴,所以只能再將原表空間online,導師說等回來他看一下优床。
是因為什么原因呢劝赔?當然是權(quán)限不對,但不是數(shù)據(jù)文件和總目錄的權(quán)限胆敞,而是子目錄的權(quán)限着帽。我當時和另一個實習同學都確信已經(jīng)按照原目錄修改了權(quán)限,但是還是權(quán)限出了問題移层。因為當時我們是按照datafile的權(quán)限640修改仍翰,但目錄的權(quán)限卻應(yīng)該是755。
我又犯了哪些錯誤呢观话?
1) 粗心
雖然如果再給我多點時間我一定能解決這個問題予借,但是通常職場上不會給你時間讓你解決自己犯下的錯誤,生產(chǎn)上更是如此频蛔,因此最好的辦法就是不犯錯誤灵迫。不過人畢竟不是機器,總難免不會犯錯晦溪,那么退而求其次瀑粥,最起碼犯了錯要能及時發(fā)現(xiàn)并改正。
然而我最大的問題就是開始不但沒能發(fā)現(xiàn)自己改錯了權(quán)限三圆,還堅信自己改對了并且沒有去檢查狞换。為什么我堅信不疑的記憶會欺騙我呢?
我曾經(jīng)在網(wǎng)易TED演講上看到過相關(guān)的演講舟肉,大意就是講人們所堅信的記憶有時也會欺騙自己修噪。我搞不懂具體的科學原理,但是我告訴自己:當所有的可能性都排除后度气,請試著再懷疑一次自己深信不疑的東西割按。
當然這只是在解決問題的過程中犯下的錯誤,接下來的幾個才是真正潛在的磷籍,我沒有立刻意識到但卻至關(guān)重要的錯誤:
2) 遷移操作之前也看過別人做過适荣,另一個實習生同學也將遷移的文檔分享了,但是為什么我沒有及時整理院领,以至于需要我來做的時候我毫無準備弛矛?
我給自己找了一堆的借口,但幸好現(xiàn)在我意識到比然,這些都只是借口丈氓。
3) 沒有養(yǎng)成一直開著郵件,或上班就打開郵件的習慣
這個看起來似乎無所謂,但實際上這是非常重要的一個習慣万俗,就這件事而言湾笛,如果我一直開著郵件,那么我會提前收到導師的通知闰歪,可以提前準備嚎研。而且一些重要的事情或需求也都是通過郵件來傳達,因為我是實習生還沒怎么接觸到業(yè)務(wù)库倘,因此很難意識到這些临扮,如果等到成為真正的員工還沒有這個習慣,或許會后悔的教翩。
不過幸好杆勇,這件事讓我意識到了這一點,為時不晚饱亿。
3
我不知道這兩件事給我的導師和開發(fā)的同學留下了多少不好的印象蚜退,總之事情已經(jīng)這樣了,后悔也沒用彪笼,我能做的就是總結(jié)下經(jīng)驗教訓关霸,盡量避免,下不為例杰扫。同時努力學習,有了足以應(yīng)對一切的知識與技能膘掰,做事才會有底氣章姓。
分享給大家,希望能給初入職場的同學一點啟示识埋,與大家共勉凡伊。