這篇文章主要介紹“Oracle的內(nèi)存管理方式有哪些”,在日常操作中,相信很多人在Oracle的內(nèi)存管理方式有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”O(jiān)racle的內(nèi)存管理方式有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
創(chuàng)新互聯(lián)建站專注于沅陵企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),成都做商城網(wǎng)站。沅陵網(wǎng)站建設(shè)公司,為沅陵等地區(qū)提供建站服務(wù)。全流程按需規(guī)劃網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)
Oracle 的 9i/10g 中已經(jīng)對內(nèi)存管理逐步做了很大的簡化,11g 則更進(jìn)一步,引入了一個新的概念自動化內(nèi)存管理(Automatic Memory Management,AMM) . 如果 DBA 真的想偷懶的話,只需要設(shè)定兩個參數(shù)就可以把煩心的事情都交給 Oracle 折騰了(只要 DBA 足夠心寬)。PGA 與 SGA 一起搞定。這兩個參數(shù)分別是:
MEMORY_TARGET--操作系統(tǒng)的角度上 Oracle 所能使用的最大內(nèi)存值。動態(tài)參數(shù) MEMORY_MAX_TARGET--MEMORY_TARGET所能設(shè)定的最大值。非動態(tài)可調(diào)。
Tip: 如果使用的是 pfile,設(shè)定了 MEMORY_TARGET 而沒有指定 MEMORY_MAX_TARGET 的值,則實(shí)例啟動后 MEMORY_MAX_TARGET 的值與 MEMORY_TARGET 相等。如果 pfile 中指定了 MEMORY_MAX_TARGET 而沒有指定 MEMORY_TARGET ,實(shí)例啟動后 MEMORY_TARGET 為 0 。
AMM 在后臺會啟動一個內(nèi)存管理(Memory Manager, mman)進(jìn)程。
因?yàn)?AMM 的引入,Oracle 內(nèi)存管理更加靈活多樣。 組合出來有 5 種內(nèi)存管理形式.
自動內(nèi)存管理
自動共享內(nèi)存管理
手工共享內(nèi)存管理
自動 PGA 管理
手動 PGA 管理
1) 自動內(nèi)存管理
默認(rèn)安裝的實(shí)例即是 AMM 方式。如下
SQL> show parameters target
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
archive_lag_target integer 0
db_flashback_retention_target integer 1440
fast_start_io_target integer 0
fast_start_mttr_target integer 0 memory_max_target big integer 1216M
memory_target big integer 1216M pga_aggregate_target big integer 0
sga_target big integer 0
要注意到 SGA_TARGET 和 都為 0 。
2.自動共享內(nèi)存管理(Automatic Shared Memory Management, ASMM)
這是 10g 引入的管理方式,要使用這種方式,需要設(shè)置初始化參數(shù) MEMORY_TARGET=0 ,然后顯式的指定 SGA_TARGET 的值。
SQL> alter system set sga_target=1024m scope=both;
alter system set sga_target=1024m scope=both
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-00839: SGA_TARGET cannot be modified to the specified value
SQL> alter system set memory_target=0 scope=both;
System altered.
SQL> alter system set sga_target=1024m scope=both;
System altered.
SQL>
這兩個參數(shù)的修改是有嚴(yán)格順序的,如果不遵守倒也沒問題--Oracle 會報告錯誤。
3.手工共享內(nèi)存管理
這個又更加原始了一些。因?yàn)樵迹孕碌某跏蓟瘏?shù) SGA_TARGET 與 MEMORY_TARGET 都要設(shè)置為 0. 然后手工設(shè)定 share_pool_size 、db_cache_size 等 sga 參數(shù)。要注意 RESULT_CACHE_SIZE 參數(shù)是 11g 新引入的,用來緩存 SQL 結(jié)果。
4.自動 PGA 內(nèi)存管理
如果使用 AMM , 則對 PGA 不用操心。如果要做到精細(xì)控制而切換到自動 PGA 內(nèi)存管理模式,需要設(shè)定WORKAREA_SIZE_POLICY = AUTO(默認(rèn)即為 AUTO),然后需要指定 PGA_AGGREGATE_TARGET 的值。如需要精確控制PGA,則 WORKAREA_SIZE_POLICY = MANUAL .(Thanks vongates)
5.手動 PGA 管理
前提是 WORKAREA_SIZE_POLICY = manual ,然后分別指定 SORT_AREA_SIZE 等 PGA 相關(guān)的參數(shù)。估計(jì)現(xiàn)在沒有人干這個吃力不討好的事情了。這個模式大可以忽略。
AMM 的限制
如果初始化參數(shù) LOCK_SGA = true ,則 AMM 是不可用的。
相關(guān)動態(tài)視圖
V$MEMORY_DYNAMIC_COMPONENTS
V$MEMORY_RESIZE_OPS
11g 在簡化 DBA 基本工作上還是下了很大功夫??墒沁@樣也掩蓋了一些技術(shù)細(xì)節(jié),Oracle 正在逐步把內(nèi)存的管理變成一個黑盒子,當(dāng)然這也也是相關(guān)算法更加穩(wěn)定作為基礎(chǔ)的。總體來說,利大于弊。11g DBA, 準(zhǔn)備好了沒有?
到此,關(guān)于“Oracle的內(nèi)存管理方式有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!