設定系統全域性區SGA命令

leonarding發表於2012-03-31
 
今天簡單介紹一下 SGA 的設定方法
 
1.sga_target 引數
alter system set sga_target = 40000m  scope=both;
特性:
1).ASMM 自動共享記憶體管理
答:SGA_TARGET引數控制ASMM(自動共享記憶體管理)是oracle一個新特性,但是它的含義和SGA_MAX_SIZE的一樣,也表示SGA最大的大小,於是它也就有了一個限制,那就是它的大小不能大於SGA_MAX_SIZE的大小,一旦給SGA_TARGET指定值後(預設為0,即沒有啟動ASMM),就自動啟動了ASMM特性
2).sga_target 與sga_max_size關係
答:即當SGA_TARGET< SGA_MAX_SIZE的時候,oracle就會忽略SGA_MAX_SIZE的值,oracle的SGA就與SGA_TARGET為準,它能動態改變大小,但是不能大於SGA_MAX_SIZE的值,可以小於。
3).sga_target 動態引數
答:SGA_TARGET是可以在本例項內動態修改的,不用重啟資料庫例項,所謂的動態引數是指可以直接修改即在記憶體生效,不用重啟資料庫來載入引數檔案生效。
4).ASMM 自動共享記憶體管理會影響哪些記憶體區呢
答:當啟用Oracle的ASMM新特性以後,也不是SGA的所有記憶體區的大小都開始動態共享起來,只有以下的這些區的記憶體大小可動態共享,而SGA中的其他區域的記憶體大小仍然是固定不共享的
* Buffer cache (DB_CACHE_SIZE)
* Shared pool (SHARED_POOL_SIZE)
* Large pool (LARGE_POOL_SIZE)
* Java pool (JAVA_POOL_SIZE)
* Streams pool (STREAMS_POOL_SIZE)
 
2.sga_max_size引數
alter system set sga_max_size=40000m scope=spfile;
特性:
1).sga_max_size靜態引數
它用來控制SGA使用虛擬記憶體的最大大小,當例項啟動後,各個記憶體區只分配例項所需要的最小大小,在隨後的執行過程中,再根據需要擴充套件他們的大小,而他們的總和大小受到了SGA_MAX_SIZE的限制。“修改SGA_MAX_SIZE的大小,必須要重新啟動資料庫例項”,因為是靜態引數。所謂靜態引數是指修改之後即在spfile引數檔案裡生效,沒有在記憶體裡生效,所以必須重啟資料庫來載入引數檔案使其生效
 
3.db_cache_size引數【資料庫緩衝區快取記憶體】
alter system set db_cache_size=2000m scope=both;
1).此引數是一個動態引數,用於快取資料庫中正在使用的“有效資料”的記憶體區,此記憶體區的大小對資料的檢索速度有很大的影響,如果檢索的資料在此區內可以找到,那麼要比間接到硬碟中找要快的多。所以在系統穩定後可以靜態設定此緩衝區的值
 
4.scope =【memory | spfile | both】
1).如果scope=memory  說明修改的引數只在記憶體中生效,重啟資料庫後恢復到原來狀態值【用於修改動態引數】
2).如果scope=spfile       說明修改的引數只在引數檔案中生效,修改後當前環境是不生效的,必須重啟資料庫來載入引數檔案使其生效【用於修改靜態引數】
3).如果scope=both         說明修改的引數在當前環境(記憶體)和spfile(引數檔案)都生效,both=memory+spfile,修改後當前環境生效,重啟資料庫後也生效。
 
小結:當我們明白了這些在SGA中很重要的引數時,才能遊刃有餘的分配我們有限的記憶體空間,使我們的系統的效能最大化,讓oracle跑的更快、更好。
 
leonarding
2012.03.31
tianjin
 
 
 
 

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

相關文章