11g下設定sga_max_size=4g時出現的報錯

regonly1發表於2014-09-28
設定sga_max_size=4g後,重啟資料庫,出現如下資訊:
SQL> startup force
ORA-00844: Parameter not taking MEMORY_TARGET into account
ORA-00851: SGA_MAX_SIZE 4294967296 cannot be set to more than MEMORY_TARGET 3439329280.

查了下,發現是11g新增的一個引數,我的理解,這個引數是類似於10g新增的sga_max_size引數一樣,用來自動管理oracle使用的全部記憶體的。
當初出現sga_max_size的時候,也是為了能夠自動管理sga中library cache size、java pool、dic size這些區域的,而memory_max_size就是用來自動管理sga和pga兩大塊記憶體區域的。

這個符合了三國演義中結尾說的一句話,所謂“分久必合,合久必分”。Oracle一開始為了精確管理,所以規劃了每個功能所需的記憶體區域,但是時間久了,發現這些區域如果被固定死大小,會出現在某些部分出現記憶體瓶頸的時候,另外的部分還有很大的剩餘,造成了空間使用的浪費。加上對這些部分記憶體使用分配積累的大量的歷史經驗和實驗,就逐漸把這些分配許可權都回收,由一個限定大範圍的引數來確定總的大小,然後內部由Oracle根據演算法和經驗來分配,並可能給予一定的學習能力,使之更加智慧。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12932950/viewspace-1283261/,如需轉載,請註明出處,否則將追究法律責任。

相關文章