今天簡單介紹一下 target="_self">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 自動共用記憶體管理會影響哪些記憶體區呢
本文URL:http://www.bianceng.cn/database/Oracle/201410/45636.htm
答:當啟用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跑的更快、更好。