天天看點

透過表象看本質

 前段時間,好友王胖子問了熊熊一個問題,他們的Oracle資料庫,有個主要的表空間設定的自動增長,每次增長100M,卻無法滿足業務需求,問了一下Oracle方面,說是自動增長的步長太小了,于是胖子在資料庫裡查詢了一下,有了以下的問題

胖子:“熊,在麼,問個問題?”

熊熊:“? 啥問題”

胖子:“看看,我這個資料檔案設定的自動增長是100M,這個步長的機關是位元組麼?”

熊熊:“應該不是具體的數量,我真一時想不起來機關是什麼了”

胖子:“我查了一下,我這個是12800,可是除以1024的話怎麼也不是100啊”

熊熊:“讓我想想,誰沒事關注他啊,我們平時都是如果低于20%的可用空間,就自動增加資料檔案了,那個自動增長隻是給自己一個心理安慰罷了”

胖子:“。。。”

這段對話以後,熊熊覺得很沒面子,确實,從來沒想過那麼深,對于這種表空間的容量激增情況,大多數是采用再加一個資料檔案,這樣也能降低I/O的負載,而且,頻繁的資料檔案自動增長,如果步長不足,導緻不能馬上滿足增長需求,大量的DDL請求會導緻死鎖,嚴重的話會拖垮資料庫,是以基本上熊熊對表空間的增長都采用增加資料檔案的方法,當然,存在即合理,既然有自動增長這個選項,肯定是有其意義的,那麼到底是怎麼回事呢,居然沒深入研究過,丢人啊~

于是趕緊查官方文檔,終于找到了答案,如下圖所示

透過表象看本質

熊熊給每個表空間都設定了自動增長,分别是每次5M到10M不等,跟胖子說,我用的是10M自增長,是以每次是1280,你丫用100M,是以是12800,這樣的話肯定沒有說服力,從官方文檔顯示,這個INCREMENT_BY代表的是所需的塊數,那麼一個塊預設是8K,這樣計算就有答案了。

1280*8192/1024/1024=10M

那麼胖子那邊的自增長就是12800*8192/1024/1024=100M,步長為100M,這樣就合理了,讓胖子用alter指令重新改了步長大小,并且先再手工增加一個資料檔案緩解燃眉之急。

通過這件事情,雖然不算啥大事,但是感覺,學技術應該學本質,而不隻是滿足于會做事,熊熊一直說技術不是重點,但是從未否認過技術不重要,這就像比如Oracle,你的RAC、DG、GC、GG、TT等安裝配置弄的很熟練了,但是不了解真正的原理,不了解事務本質,出了問題,照樣沒法解決,然後最後的辦法就是大不了重裝一下。

這個事讓熊熊想起了剛學計算機的時候,基本上Windows系統出點問題,就會重做系統,以至于老媽總是說,熊熊的系統很少用超過一個月,基本上老是看熊熊在裝系統~

就好比是去面試,面試官問我們,備份政策如何考慮啊?通常大家應該是按照自己很熟悉的正向思維去考慮問題,但是熊熊覺得不隻如此,應該透過問題本質,就是面試官問這個問題的實際含義,備份恢複是資料的重中之重,不會随便問問技術細節,而是要問到本質,熊熊感覺,應該考慮到對方的資料當量是多少? 如何考慮備份情況,要保留多長時間,出了問題如何恢複,對業務的影響,資料是否需要審計,有沒有帶庫,存儲是否存在單點?有沒有做容災考慮,備份采用的是内置的腳本政策(比如RMAN)還是第三方工具(比如NBU、TSM),恢複的時間,操作的複雜性,模拟演練等,總之,個人認為考慮的越全面,既是對自己的面試負責,也同時讓對方覺得你夠專業~

通過這件小事讓熊熊感覺路還很長,光能夠知其然還不夠,更要知其是以然,這樣我們才能在工作中出現問題的時候做到不慌亂,井然有序~

一家之言,僅供參考~