【11g體繫結構,4】AMM(記憶體配置自動管理),11gamm
一.AMM (automaitc memory managerment)
1.oracle 10g SGA的自動管理 :SGA_TARGET 指定了SGA可以使用的最大記憶體大小,而SGA中各個記憶體的大小由Oracle自行控制,不需要人為指定。Oracle 可以隨時調節各個地區的大小,使之達到系統效能最佳狀態的個最合理大小,並且控制他們之和在SGA_TARGET 指定的值之內。一旦給SGA_TARGET指定值後(預設為0,即沒有啟動ASMM),就自動啟動了ASMM特性。如果不設定SGA_TARGET,則自動共用記憶體管理功能被禁止。
注意:修改sga_target的值不能大於sga_max_size,所以sga_max_siz是sga的管理上限。SQL> show parameter sga
NAME TYPE VALUE------------------------------------ ----------- -------------------------lock_sga boolean FALSEpre_page_sga boolean FALSEsga_max_size big integer 416Msga_target big integer 200M
SQL> alter system set sga_target=500m scope=spfile ;alter system set sga_target=500m scope=spfile ;*ERROR at line 1:ORA-02097: parameter cannot be modified because specified value is invalidORA-00823: Specified value of sga_target greater than sga_max_size
②.設定了SGA_TARGET後,以下的SGA記憶體區就可以由ASMM來自動調整: ASMM只能自動調整5個記憶體池的大小,它們是:shared pool、buffer cache、large pool、java pool和stream pool。我們不再需要設定shared_pool_size、db_cache_size、large_pool_size、 java_pool_size、streams_pool_size這五個初始化參數。而其他的記憶體池,比如log buffer、keep buffer cache等仍然需要DBA手工進行調整。
對於SGA_TARGET的限制,它的大小是不能超過SGA_MAX_SIZE的大小的。
#查看sga中各池真實的大小:SQL> select name,bytes/1024/1024 m from v$sgainfo;
NAME M-------------------------------- ----------Fixed SGA Size 1.27510452Redo Buffers 5.78515625Buffer Cache Size 80Shared Pool Size 148Large Pool Size 4Java Pool Size 4Streams Pool Size 0Shared IO Pool Size 0Granule Size 4Maximum SGA Size 415.0625Startup overhead in Shared Pool 52
NAME M-------------------------------- ----------Free SGA Memory Available 172
12 rows selected.
案例:設定sga_target
SQL> ALTER system SET sga_max_size=1000m scope=spfile;SQL> ALTER system SET sga_target=1000m scope=spfile;
關閉資料庫shutdown immediate;啟動資料庫startup;
注意: #修改/dev/shm的大小為2g: 要修改etc/fstab 檔案,然後重新掛載一下。 [root@gc1 ~]vi etc/fstab #重新掛載
2.oracle 11g SGA自動管理:①.在Oracle11g中,Oracle 將記憶體管理的自動化更進了一步,引入了自動記憶體管理(Automatic Memory Management- AMM)的新特性。
②.Oracle11g 引入了一個新的參數 MEMORY_TARGET。現在只要設定了這個參數,可以不需要設定 SGA_TARGET 和 PGA_AGGREATE_TARGET 兩個參數。只需要設定一個目標記憶體大小初始化參數( MEMORY_TARGET ) 和一個最大記憶體大小初始化參數( MEMORY_MAX_TARGET),資料庫就會根據處理需求在SGA 與執行個體 PGA 之間動態交換記憶體。③.自動記憶體管理是用兩個初始化參數進行配置的:MEMORY_TARGET:動態控制SGA和PGA時,Oracle總共可以使用的共用記憶體大小,這個參數是動態,因此提供給Oracle的記憶體總量是可以動態增大,也可以動態減小的。它不能超過MEMORY_MAX_TARGET參數設定的大小。預設值是0。 MEMORY_MAX_TARGET:這個參數定義了MEMORY_TARGET最大可以達到而不用重啟執行個體的值,如果沒有設定MEMORY_MAX_TARGET值,預設等於MEMORY_TARGET的值。使用動態記憶體管理時,SGA_TARGET和PGA_AGGREGATE_TARGET代表它們各自記憶體地區的最小設定,要讓Oracle完全控制記憶體管理,這兩個參數應該設定為0。但並不會因為設定了MEMORY_TARGET,這兩個參數就會自動變回0。
④.ORACLE的記憶體管理參數所示:
3.shared pool的調整:#查看shared pool 參數 (為0表示shared pool為自動管理)SQL> show parameter shared_pool_size
NAME TYPE VALUE------------------------------------ ----------- -------------------------shared_pool_size big integer 0
#查看shared pool的真實大小SQL> select name,bytes/1024/1024 m from v$sgainfo;
NAME M-------------------------------- ----------Fixed SGA Size 1.27510452Redo Buffers 5.78515625Buffer Cache Size 80Shared Pool Size 148Large Pool Size 4Java Pool Size 4Streams Pool Size 0Shared IO Pool Size 0Granule Size 4Maximum SGA Size 415.0625Startup overhead in Shared Pool 52
#調大shared pool 的值SQL> alter system set shared_pool_size=160m ;
System altered.#查詢SQL> select name,bytes/1024/1024 m from v$sgainfo;
NAME M-------------------------------- ----------Fixed SGA Size 1.27510452Redo Buffers 5.78515625Buffer Cache Size 68Shared Pool Size 160Large Pool Size 4Java Pool Size 4Streams Pool Size 0Shared IO Pool Size 0Granule Size 4Maximum SGA Size 415.0625Startup overhead in Shared Pool 52
NAME M-------------------------------- ----------Free SGA Memory Available 172
12 rows selected.#調小 shared pool的值, 發現shared pool還是160m,所以shared pool 只能調大不能調小。SQL> alter system set shared_pool_size=148m;
System altered.
SQL> select name,bytes/1024/1024 m from v$sgainfo;
NAME M-------------------------------- ----------Fixed SGA Size 1.27510452Redo Buffers 5.78515625Buffer Cache Size 68Shared Pool Size 160Large Pool Size 4Java Pool Size 4Streams Pool Size 0Shared IO Pool Size 0Granule Size 4Maximum SGA Size 415.0625Startup overhead in Shared Pool 52
NAME M-------------------------------- ----------Free SGA Memory Available 172
12 rows selected.
二.案例總結:
1.swap區大小設定:關於作業系統,一般Swap區的推薦值為2*RAM。如果實體記憶體(RAM)很大,不一定非要把Swap設定為2xSwap,通常可以設定Swap = Ram或者小於實體記憶體(如記憶體超過32G則完全可以設定Swap為16G )。 如果實體記憶體(RAM)過小,在系統繁忙期間,產生大量交換無法換到磁碟,就會出現問題。 另外,如果系統實體記憶體較小,通常設定SGA < 1/2 Ram ,要考慮為Server process 的PGA消耗及OS保留足夠的記憶體空間.
最近新配的電腦,CPU是AMM Athlon(速龍)Ⅱ X4 640 四核,顯卡是NVIDIA GEFORCE GTS 250,4G記憶體
應該是顯卡的問題,可以換個公版驅動試一下,另外可以用一個獨立顯卡檢查一下有無其它問題。