Oracle資料庫11g五大特點與自我調整

2021-04-20 01:05:56 字數 3396 閱讀 1703

oracle資料庫11g五大特點與自我調整

在這裡,我首先簡單的介紹一下oracle11g的五大特點,接著詳細介紹其自我調整。

oracle11g最突出的五大特性是:

相比在無壓縮格式下儲存資料,新的oracle資料壓縮技術能夠確保以較小的開銷節省三倍以上的磁碟儲存空間。這一點比僅節省磁碟空間要具有更大的優勢,因為它能夠使企業節約更多的開支,以便有更多的資金來鞏固自己的地位,中型企業尤其適合。

自動診斷知識庫(automatic diagnostic repository,adr)是專門針對嚴重錯誤的知識庫。該知識庫基本上能夠自動完成一些以往需要由資料庫管理員來手動完成的操作。

作為adr的一部分,sql效能分析器(sql performance analyzer,spa)是最令人興奮的特性之一。sql效能分析器是乙個整體調整工具,管理員可以通過該工具在資料庫上定義和重演(replay) 乙個典型的工作負載,之後管理員可以調節整體引數來使資料庫盡快的達到最佳效能——而這一任務同樣也是許多年以來由資料庫管理員手動完成的。

由於獲得了最優的初始引數,資料庫管理員就不需要調整數以萬計的sql語句。管理員需要做的就是給定乙個典型的負載 ,由sap根據歷史記錄來決定sql的最終設定,而不用管理員來檢測哪乙個sql設定是最合理的。

自動記憶體管理(automatic memory management,amm)這一特性可以追溯到oracle 9i,那時甲骨文公司推出首款自動調節儲存池的工具。amm工具其實就是一種探測機制。實際上,oracle11g 有很多隨機訪問儲存池,當amm探測到某個儲存池中已滿時,它將整個ram從乙個區域分配到其他合適的區域。

如何讓資料庫能夠實現自我調整,減輕資料庫管理員的工作量,是甲骨文公司一直追求的目標。畢竟其資料庫的複雜程度遠遠超出同類資料庫;而且,其資料庫的維護成本也比其他資料庫要高出不少。所以,甲骨文公司追求oracle資料庫的自我調整與優化,降低oracle資料庫的維護成本,也是可以理解的。

自我調整sga與自我調整檢查點,雖然是oracle資料庫10g版本中的新增功能,但是,在11g的版本中,才真正發揮到極致,被資料庫管理員充分肯定並積極採納。下面我結合實際的工作經驗,帶領大家一起看看,這兩個新特性,是如何幫助企業降低維護成本,提高資料庫的管理效率的。

一、 自我調整檢查點。

在以前的文章中,我談到過,oracle資料庫中有儲存緩衝區,其包括三部分內容,一種叫做髒緩衝儲存區。這個緩衝儲存區中儲存的是已經被修改的資料。一般情況下,這個資料不會馬上被寫入到資料檔案中去。除非空閒緩衝快用完了,這個資料才會被寫入資料檔案。但是,如此的話,也會遇到乙個問題,若空閒緩衝區剛用完的時候,其他使用者也在頻繁的對資料庫進行讀寫操作,在這個繁忙的時刻,再往資料庫檔案中寫入更改後的資料,那麼,很明顯,會極大的影響資料庫的效能。

所以,作為資料庫管理員,我們的設想是能否在i/q操作比較空的時候,就把髒緩衝中的資料寫入到資料庫中去呢?這若是靠資料庫管理員手工管理肯定不現實,我們資料庫有這個自動判斷的功能。甲骨文好像聽到了我們眾多資料庫管理員的呼聲,在10g版本的資料庫中新增了這個功能,並在11g版本中進行了完善,這就是自我調整檢查點的自我調整功能。

檢查點是將記憶體中修改的資料與資料庫中的資料檔案同步的手段。oracle資料庫定期將檢查點之間修改的資料寫入資料檔案,這種做法的要求之一是需要伺服器有足夠的可用記憶體,以提高為即將進行的操作尋找空閒記憶體的執行效能。

所以,這個檢查點的設定,跟很多引數有關,如伺服器的記憶體等等。雖然在以前的版本中,資料庫管理員可以通過設定相關的初始化引數,來指定預期的崩潰恢復時間。但是,實際上,由於這個設定複雜,影響因素眾多,所以,很少有資料庫管理員會去調整這個引數,而都是採用其預設的設定。

我在使用oracle11g資料庫中,印象最深的是資料庫可以自我調整檢查點。雖然在10g中也已經提出了這個功能,但是用的總是不怎麼順心。在11g中作了一定的改善,從而使得這個新功能得到了大家的認同。使用資料庫的自動檢查點調整,資料庫就會自動判斷資料庫的繁忙程度,具體的說是判斷i/q 操作的繁忙程度,資料庫會自動在其比較空閒的時候,把髒緩衝期中的內容寫入到資料檔案中,從而降低對資料庫吞吐量所產生的影響,提高資料庫的操作效能。

其實,這個檢查點的自我調整功能就好像是乙個交通警察,當道路繁忙的時候,下班高峰期時,一些打掃衛生的清潔車就不能進入車道;只有到道路比較空閒的時候,清潔車才能進入車道打掃衛生。從而把清潔車對於車道的正常執行的影響降低到最低。

當然,這個改善可能使用者一下子還察覺不出來。

但是,我們通過資料庫日誌進行前後的對比,就會發現,兩者的差異是很大的。利用了資料庫檢查點自我調整功能後,資料庫的查詢效能,特別是查詢大量資料的效能,得到了比較顯著的改善。

不過,話說回來,資料庫的自我調整功能雖然是乙個不錯的「交通警察」,但是當車真的很多的時候,最好的「交通警察」,也是無能為力。此時,就需要對硬體上的改善,如增加伺服器的記憶體等等。畢竟像資料檢查點等自我調整功能只能夠改善硬體的利用能力,而不能從本質上提公升硬體的容量。

二、 自我調整系統全域性區。

sga是乙個英文簡稱,中文的意思是系統全域性區。它是乙個儲存區域,被所有使用者所共享。系統全域性區內就像是乙個個格仔,每個格仔就是乙個儲存元件,用來存放為滿足每類記憶體分配需求而使用的記憶體池。例如使用者最近查詢過的資料塊就會被儲存在其中的乙個格仔裡;資料庫的結構等變化需求等也會被儲存在這些格仔中。

現在就遇到乙個問題,格仔大小的問題。若格仔太大,整個格仔只裝了不到三分之一的內容,那麼明顯是一種浪費,這些空間本來是可以被用作其他用途的;若格仔太小,資訊存放不下去了,就又會發生記憶體分配錯誤。

如果資料庫管理員自己來調整這些格仔的大小,那麼難度也是可想而知的。因為這些空間的需求量是不確定的,隨著業務的不同,其需要的容量也隨之改變。所以,資料庫管理員希望資料庫能夠對系統全域性區進行動態分配,能夠讓資料庫根據實際的需要量,劃分這些格仔的儲存空間。當然有個前提,就是其不超出總的容量大小。

在oracle 10g與11g的資料庫系統中,增加並完善了這方面的功能,實現了對於系統全域性區的動態分配功能。也就是說,我們資料庫管理員,只需要制定乙個系統全域性區的總大小,然後,裡面的格仔怎麼分,就不需要我們關心了。oracle資料庫會自己根據裡面居住的客人數量的多少,進行分配。oracle資料庫會擔負起在整個系統全域性區內部進行優化記憶體分配對乙個重任。資料庫有了這個改進之後,這些房間的大小就不是固定的,而是會隨著業務量的不同而實現動態的梗概。如此的話,一方面,房間的空間不會被浪費,不會乙個房間很擠而其他房間很空;另一方面,也不會因為儲存資訊的時候因為空間不夠而發生記憶體儲存錯誤。

通過這個自我調整系統全域性區的功能,oracle資料庫會智慧型地對資料庫伺服器的記憶體進行合理的分配,提高記憶體的使用效率,提高資料庫的效能。

不過,這兩項功能,都提供了自定義的功能,如可以自己定義系統全域性區的總大小以及檢查點的恢復時間等等。雖然定義起來比較簡單,但是,有個問題就是定義多大才使合理的呢?這個很難確定。因為這根據企業應用不同而有所區別,沒有什麼可以參考的標準。一般情況下,資料庫管理員可能需要觀測資料庫效能達一年以上,才能夠取得乙個合理的值。所以,我的建議是,剛開始的時候,就採取預設的設定。讓資料庫自己根據伺服器的硬體配置,去取得合理的引數。在以後若有必要的時候,再根據相關的資訊,去設定乙個合理的值。

ORACLE資料庫11g減少宕機

今天去乙個朋友公司,正好碰到他們的生產線宕機,問了一下原因,原來是資料庫過於複雜,一點點人為操作的失誤,就造成了災難性的後果。老闆大發雷霆,譴責資料部門,問他們為什麼用這麼糟糕的資料庫,為什麼不用oracle,技術員可憐巴巴地說,預算有限,所以只能用某國產品牌。這下輪到老闆有點小尷尬了。其實,作為乙...

ORACLE資料庫11g減少宕機

今天去乙個朋友公司,正好碰到他們的生產線宕機,問了一下原因,原來是資料庫過於複雜,一點點人為操作的失誤,就造成了災難性的後果。老闆大發雷霆,譴責資料部門,問他們為什麼用這麼糟糕的資料庫,為什麼不用oracle,技術員可憐巴巴地說,預算有限,所以只能用某國產品牌。這下輪到老闆有點小尷尬了。其實,作為乙...

ORACLE資料庫11g減少宕機

今天去乙個朋友公司,正好碰到他們的生產線宕機,問了一下原因,原來是資料庫過於複雜,一點點人為操作的失誤,就造成了災難性的後果。老闆大發雷霆,譴責資料部門,問他們為什麼用這麼糟糕的資料庫,為什麼不用oracle,技術員可憐巴巴地說,預算有限,所以只能用某國產品牌。這下輪到老闆有點小尷尬了。其實,作為乙...