oracle中4G以上記憶體的使用方法
由於工作需要,單位的伺服器進行升級,使用至強CPU,記憶體為8GB,系統為windows2003,資料庫為oracle8i所以一直在查詢如何在32位系統中使oracle使用超過4G記憶體的問題,baidu了n篇文章,發現在細節上寫的都不夠詳細,又到微軟和oracle網站上查詢,終於對原理和方法有了一個大致瞭解,在此寫出來供大家參考,如有錯誤還請指正。
1、由於32位系統記憶體定址只能到4G,所以在32位系統上使用超過4G的記憶體,首先要使用支援大記憶體的軟硬體,比如使用至強的CPU(雖然是32位CPU,但是上增加了擴充套件定址的能力),windows2003企業版或資料中心版。
2、在作業系統中啟用PAE(Physical Address Extensions )功能,這樣oracle便可以透過windows的AWE(Address Windowing Extensions)API使用多餘4G的記憶體。
方法:開啟系統根目錄下的隱藏檔案 Boot.ini ,新增 PAE 開關:
(1)multi(0)disk(0)rdisk(0)partition(2)\%systemroot%="Windows Server 2003, Datacenter Edition" /PAE
(2)multi(0)disk(0)rdisk(0)partition(2)\%systemroot%="Windows Server 2003, Datacenter Edition" /3GB /PAE
我們知道32位windows對於每個程式都分配4GB記憶體(虛擬記憶體),其中起始的2GB歸windows核心使用,考試@大提示剩餘的歸應用程式本身使用。因此這兩種方法的區別就在於:
方法一隻使用了/PAE開關表示啟用/PAE功能但是系統對每個程式仍然採用2G核心、2G應用程式的記憶體分配方式。
方法二除了/PAE開關還使用了/3GB開關表示不僅啟用/PAE功能並且系統對每個程式採用1G核心、3G應用程式的記憶體分配方式。不過這種方式不支援大於16GB的記憶體,也就是說如果你的實際記憶體超過16GB則只能使用方法一,這是因為大於16GB後1G的核心記憶體已經不夠windows實現PAE功能。
3、給執行Oracle資料庫的作業系統帳戶,授予"Lock Pages in Memory"的系統許可權。
執行 gpedit.msc開啟“組策略”控制檯
“計算機配置”->“Windows 設定”->“安全設定”->“本地策略”->“使用者權利指派”
雙擊右邊“鎖定記憶體中的頁”(或名為"記憶體中鎖定頁"),在“本地安全策略設定”對話方塊中,單擊“新增”按鈕,在“選擇使用者或組”對話方塊中,新增有權執行 oracle的帳戶。
4、配置oracle資料庫的引數檔案(init*.ora),新增USE_INDIRECT_DATA_BUFFERS=TRUE引數,表示使用擴充套件的記憶體。
5、修改登錄檔中的AWE_WINDOW_MEMORY鍵值為合適值。該值表示在3GB記憶體中(如果使用了/3GB開關,如果沒有使用該開關則為2GB)有多少用於資料庫塊快取。
注意:
(1)該值位置在HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0為二進位制型別,單位為bytes。
(2)如果不存在表示使用預設值1GB。
(3)該值太大或太小都有可能導致資料庫無法啟動。
這裡解釋一下:儘管我們現在擁有超過4GB的記憶體,但是這些多餘的記憶體並不是oracle可以隨便使用的,這些記憶體只能用於資料庫塊快取(即db_buffer),而像share Pool,log buffer等只能儲存在應用程式可訪問的3GB記憶體中(如果使用了/3GB開關,如果沒有使用該開關則為2GB)。在這裡我將4GB以外記憶體中的資料庫塊快取叫做AWE資料塊快取(自己起的名字:-))。這裡又有問題了,oracle緩衝的資料塊並不能全部儲存到4GB以外的記憶體中,還必須在應用程式可直接訪問的3GB記憶體(如果使用了/3GB開關,如果沒有使用該開關則為2GB)中使用一部分空間來儲存,這一部分記憶體我稱為直接資料塊快取(自己起的名字:-))。也就是說“資料塊快取=AWE資料塊快取+直接資料塊快取”,為什麼會這樣呢,因為oracle緩衝到記憶體中的每個資料塊的頭部必須儲存到“直接資料塊快取”中,是不能夠儲存到“AWE資料塊快取”中的,並且每個資料塊的大小(db_block_size)和資料塊的多少(db_block_buffers)都會影響到頭部佔用空間的多少。並且訪問“直接資料塊快取”要比“AWE資料塊快取” 快, 因此AWE_WINDOW_MEMORY一般來講需要設定的儘量大(但不能無限大,比如必須小於3GB),oracle建議以預設值為基礎,以20%遞增擴大,進行測試。比如先測試1GB大小,在測試1.2GB大小等等。
一般來講AWE_WINDOW_MEMORY有一個最小公式
min(AWE_WINDOW_MEMORY)=(4096 * db_block_size * db_block_lru_latches)/8
其中:
max buffer pools是一個常量=8
sets_per_tool=2*cpu_count (use_indirect_data_buffers=true)
sets_per_tool=cpu_count/2 (use_indirect_data_buffers<>true)
1、由於32位系統記憶體定址只能到4G,所以在32位系統上使用超過4G的記憶體,首先要使用支援大記憶體的軟硬體,比如使用至強的CPU(雖然是32位CPU,但是上增加了擴充套件定址的能力),windows2003企業版或資料中心版。
2、在作業系統中啟用PAE(Physical Address Extensions )功能,這樣oracle便可以透過windows的AWE(Address Windowing Extensions)API使用多餘4G的記憶體。
方法:開啟系統根目錄下的隱藏檔案 Boot.ini ,新增 PAE 開關:
(1)multi(0)disk(0)rdisk(0)partition(2)\%systemroot%="Windows Server 2003, Datacenter Edition" /PAE
(2)multi(0)disk(0)rdisk(0)partition(2)\%systemroot%="Windows Server 2003, Datacenter Edition" /3GB /PAE
我們知道32位windows對於每個程式都分配4GB記憶體(虛擬記憶體),其中起始的2GB歸windows核心使用,考試@大提示剩餘的歸應用程式本身使用。因此這兩種方法的區別就在於:
方法一隻使用了/PAE開關表示啟用/PAE功能但是系統對每個程式仍然採用2G核心、2G應用程式的記憶體分配方式。
方法二除了/PAE開關還使用了/3GB開關表示不僅啟用/PAE功能並且系統對每個程式採用1G核心、3G應用程式的記憶體分配方式。不過這種方式不支援大於16GB的記憶體,也就是說如果你的實際記憶體超過16GB則只能使用方法一,這是因為大於16GB後1G的核心記憶體已經不夠windows實現PAE功能。
3、給執行Oracle資料庫的作業系統帳戶,授予"Lock Pages in Memory"的系統許可權。
執行 gpedit.msc開啟“組策略”控制檯
“計算機配置”->“Windows 設定”->“安全設定”->“本地策略”->“使用者權利指派”
雙擊右邊“鎖定記憶體中的頁”(或名為"記憶體中鎖定頁"),在“本地安全策略設定”對話方塊中,單擊“新增”按鈕,在“選擇使用者或組”對話方塊中,新增有權執行 oracle的帳戶。
4、配置oracle資料庫的引數檔案(init*.ora),新增USE_INDIRECT_DATA_BUFFERS=TRUE引數,表示使用擴充套件的記憶體。
5、修改登錄檔中的AWE_WINDOW_MEMORY鍵值為合適值。該值表示在3GB記憶體中(如果使用了/3GB開關,如果沒有使用該開關則為2GB)有多少用於資料庫塊快取。
注意:
(1)該值位置在HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0為二進位制型別,單位為bytes。
(2)如果不存在表示使用預設值1GB。
(3)該值太大或太小都有可能導致資料庫無法啟動。
這裡解釋一下:儘管我們現在擁有超過4GB的記憶體,但是這些多餘的記憶體並不是oracle可以隨便使用的,這些記憶體只能用於資料庫塊快取(即db_buffer),而像share Pool,log buffer等只能儲存在應用程式可訪問的3GB記憶體中(如果使用了/3GB開關,如果沒有使用該開關則為2GB)。在這裡我將4GB以外記憶體中的資料庫塊快取叫做AWE資料塊快取(自己起的名字:-))。這裡又有問題了,oracle緩衝的資料塊並不能全部儲存到4GB以外的記憶體中,還必須在應用程式可直接訪問的3GB記憶體(如果使用了/3GB開關,如果沒有使用該開關則為2GB)中使用一部分空間來儲存,這一部分記憶體我稱為直接資料塊快取(自己起的名字:-))。也就是說“資料塊快取=AWE資料塊快取+直接資料塊快取”,為什麼會這樣呢,因為oracle緩衝到記憶體中的每個資料塊的頭部必須儲存到“直接資料塊快取”中,是不能夠儲存到“AWE資料塊快取”中的,並且每個資料塊的大小(db_block_size)和資料塊的多少(db_block_buffers)都會影響到頭部佔用空間的多少。並且訪問“直接資料塊快取”要比“AWE資料塊快取” 快, 因此AWE_WINDOW_MEMORY一般來講需要設定的儘量大(但不能無限大,比如必須小於3GB),oracle建議以預設值為基礎,以20%遞增擴大,進行測試。比如先測試1GB大小,在測試1.2GB大小等等。
一般來講AWE_WINDOW_MEMORY有一個最小公式
min(AWE_WINDOW_MEMORY)=(4096 * db_block_size * db_block_lru_latches)/8
其中:
max buffer pools是一個常量=8
sets_per_tool=2*cpu_count (use_indirect_data_buffers=true)
sets_per_tool=cpu_count/2 (use_indirect_data_buffers<>true)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-580494/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 32位xp系統識別4G以上記憶體記憶體
- 4g的記憶體win10帶的動嗎_win10記憶體4g夠用嗎記憶體Win10
- Android O 8.0 以上 bitmap記憶體分配Android記憶體
- 4g記憶體的電腦能裝win10嗎_4g記憶體執行win10卡嗎記憶體Win10
- JS中的棧記憶體、堆記憶體JS記憶體
- win10系統4g的記憶體設定多大的虛擬記憶體合適Win10記憶體
- 【記憶體管理】Oracle AMM自動記憶體管理詳解記憶體Oracle
- Oracle記憶體結構(四)----如何獲得Oracle各記憶體段的內部資訊(轉)Oracle記憶體
- 【大頁記憶體】Oracle資料庫配置大頁記憶體記憶體Oracle資料庫
- 【記憶體管理】Oracle如何使用ASMM自動共享記憶體管理記憶體OracleASM
- Oracle - 資料庫的記憶體結構Oracle資料庫記憶體
- Oracle - 資料庫的記憶體調整Oracle資料庫記憶體
- 什麼是Java記憶體模型(JMM)中的主記憶體和本地記憶體?Java記憶體模型
- [20210126]探究oracle記憶體分配.txtOracle記憶體
- go中的記憶體逃逸Go記憶體
- javascript中的記憶體管理JavaScript記憶體
- 支援外部記憶體功能的STL容器使用方法分享記憶體
- win10 32位系統4g記憶體夠不夠用_4g記憶體可以裝win10 32位系統嗎Win10記憶體
- Oracle OCP(39):Database 記憶體結構OracleDatabase記憶體
- Oracle:記憶體設定注意事項Oracle記憶體
- 顯示卡視訊記憶體2G和4G的區別 視訊記憶體越大效能越好嗎?記憶體
- win10電腦記憶體測試軟體怎麼用_win10記憶體檢測工具的使用方法Win10記憶體
- Java應用程式中的記憶體洩漏及記憶體管理Java記憶體
- flink中的記憶體劃分記憶體
- C中的記憶體分配模型記憶體模型
- Java的記憶體 -JVM 記憶體管理Java記憶體JVM
- 4g記憶體裝win10好還是win7好_win10和win7那個用4g記憶體流暢記憶體Win10Win7
- Win10開機後記憶體佔用高80%以上怎麼回事 Win10開機後記憶體佔用高80%以上的處理方法Win10記憶體
- oracle 11g自動記憶體管理Oracle記憶體
- Oracle Exadata與SGA快取記憶體CQOracle快取記憶體
- [20210126]探究oracle記憶體分配3.txtOracle記憶體
- [20210126]探究oracle記憶體分配4.txtOracle記憶體
- 記憶體管理篇——實體記憶體的管理記憶體
- oracle12c之 控制pdb中sga 與 pga 記憶體使用Oracle記憶體
- linux記憶體管理(一)實體記憶體的組織和記憶體分配Linux記憶體
- project中的堆疊記憶體,記憶體地址引用,gc相關問題Project記憶體GC
- Redis記憶體——記憶體消耗(記憶體都去哪了?)Redis記憶體
- vue使用中的記憶體洩漏Vue記憶體
- Android中的記憶體洩漏模式Android記憶體模式