設定SGA的原則以及修改它的大小
一,設定SGA的原則:
有時候會碰到在配置SGA中出現了問題,由於分配的記憶體過多,資料庫啟不起來了。
而且還要注意,在WINDOWS平臺下,32位的作業系統,SGA分配不能超過1.8G,64位的扛得住一些,所以我的資料庫伺服器換成64位的WINDOWS2003了。
記憶體結構=SGA(系統全域性區)+PGA(程式全域性區)
SGA:是用於儲存資料庫資訊的記憶體區,該資訊為資料庫程式所共享。它包含Oracle 伺服器的資料和控制資訊,它是在Oracle伺服器所駐留的計算機的實際記憶體中得以分配,如果實際記憶體不夠再往虛擬記憶體中寫
我們重點就是設定SGA,理論上SGA可佔OS系統實體記憶體的1/2——1/3
原則:SGA+PGA+OS使用記憶體 <總物理RAM
SGA=((db_block_buffers*blocksize)+(shared_pool_size+large_pool_size+java_pool_size+log_buffers)+1MB
1、SGA系統全域性區.(包括以下五個區)
A、資料緩衝區:(db_block_buffers)儲存由磁碟資料檔案讀入的資料。
大小: db_block_buffers*db_block_size
Oracle9i設定資料緩衝區為:Db_cache_size
原則:SGA中主要設定物件,一般為可用記憶體40%。
B、共享池:(shared_pool_size):資料字典,sql緩衝,pl/sql語法分析.加大可提速度。
原則:SGA中主要設定物件,一般為可用記憶體10%
C、日誌緩衝區:(log_buffer)儲存資料庫的修改資訊.
原則:128K ---- 1M 之間,不應該太大
D 、JAVA池(Java_pool_size)主要用於JAVA語言的開發.
原則:若不使用java,原則上不能小於20M,給30M通常就夠了
E、 大池(Large_pool_size) 如果不設定MTS,主要用於資料庫備份恢復管理器RMAN。
原則:若不使用MTS,5---- 10M 之間,不應該太大
SGA=. db_block_buffers*db_block_size+ shared_pool_size+ log_buffer+Java_pool+size+large_pool_size
原則: 達到可用記憶體的55-58%就可以了.
2、PGA程式全域性區
PGA:包含單個伺服器程式或單個後臺程式的資料和控制資訊,與幾個程式共享的SGA 正相反PGA 是隻被一個程式使用的區域,PGA 在建立程式時分配在終止程式時回收.
A、Sort_area_size 用於排序所佔記憶體
B、Hash_area_size 用於雜湊聯接,點陣圖索引
這兩個引數在非MTS下都是屬於PGA ,不屬於SGA,是為每個session單獨分配的,在我們的伺服器上除了OS + SGA,一定要考慮這兩部分
原則:OS 使用記憶體+SGA+併發執行程式數*(sort_area_size+hash_ara_size+2M) < 0.7*總記憶體
例項配置
一:實體記憶體多大
二:作業系統估計需要使用多少記憶體
三:資料庫是使用檔案系統還是裸裝置
四:有多少併發連線
五:應用是OLTP 型別還是OLAP 型別
基本掌握的原則是, db_block_buffer 通常可以儘可能的大,shared_pool_size 要適度,log_buffer 通常大到幾百K到1M就差不多了
例如:
記憶體2G 單個CPU db_block_size 是8192 bytes
SGA=0.55*2048M=1126.4M左右
建議 shared_pool_size = 200M , db_block_buffer *db_block_size = 800M
具體: shared_pool_size=209715200 #200M
db_block_buffer=103192 #800M
log_buffer = 131072 # 128k (128K*CPU個數)
large_pool_size= 31457280 #30M
java_pool_size = 20971520 # 20 M
sort_area_size = 524288 # 512k (65k--2M)
sort_area_retained_size = 524288 # MTS 時 sort_area_retained_size = sort_area_size
二,修改SGA的大小:
1.sga_target不能大於sga_max_size,可以設定為相等。
2.SGA加上PGA等其他程式佔用的記憶體總數必須小於作業系統的實體記憶體。
做如下操作前,必須備份dbs目錄下的所有檔案。
方法一:直接SQL命令列修改:
SQL>alter system set sga_target=1024m scope=spfile;
SQL>alter system set sga_max_size=1024m scope=spfile;
(如果spfile檔案不存在,需先建立createspfile from pfile;)
alter system set sga_target=12g scope=spfile;
alter system set sga_max_size=12g scope=spfile;
然後
SQL>shutdown immediate
SQL>startup
SQL>show sga; 即可看到SGA的大小已經被修改
方法二:透過EM修改:
以SYS登陸到EM:管理->(資料庫配置)所有初始化引數—>SPFile->
在此介面可以直接定義sga_target與sga_max_size
然後重啟資料庫即可!
文章出處:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/223653/viewspace-2147672/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 物件導向設計原則,以及包的設計原則物件
- AWR分析。(shared_pool,sga_size大小設定)
- 【sga】資料庫啟動時的的SGA大小顯示資料庫
- Solaris 預設Shell的修改以及命令列補全的設定命令列
- 聊聊OOP中的設計原則以及訪問者模式OOP模式
- 如何設定redo log的OMF 及如何修改log檔案大小
- 當你在設定裡修改字型大小的時候,到底在修改什麼
- 《MySQL 進階篇》十三:索引的使用以及設計原則MySql索引
- undo segment的建立、線上以及extent的分配原則。
- 關於SGA設定的一點總結
- Google的設計原則Go
- CSS如何設定字型的大小CSS
- 重做日誌大小的設定
- Redo Log Buffer的大小設定
- 設計模式的設計原則設計模式
- JavaScript 的 API 設計原則JavaScriptAPI
- MySQL 索引的設計原則MySql索引
- SMART原則的定義和含義
- oracle 重設定sga_targetOracle
- 修改/dev/shm的大小dev
- 如何正確設定資料庫連線池的大小?我的天,原來之前都設定錯了!資料庫
- sga_target大小調整
- 查詢SGA和PGA大小
- 一次RAC下的的SGA修改操作
- undo segment的建立、online以及extent的分配原則
- 必知必會的設計原則——介面隔離原則
- 預設角色的設定和修改
- 【設計原則】物件導向程式設計的六大原則物件程式設計
- Oracle在各類操作上LOCK_SGA的設定Oracle
- [轉]32位Linux設定超大Oracle SGA的分析LinuxOracle
- SGA設定過大造成的系統效能問題
- memory_target、sga_target、pga_target的設定
- win10怎麼設定滑鼠大小 win10設定滑鼠大小的步驟Win10
- 設計原則:開閉原則(OCP)
- 求教關於SRP原則的定義
- 遊戲設計的11條原則遊戲設計
- HBase的RowKey設計原則
- 好RESTful API的設計原則RESTAPI