【TUNE_ORACLE】Oracle資料庫與HugePages(二)HugePages配置和限制
說明
相關文章連結:
Oracle資料庫與HugePages(一)HugePages概念和優勢: http://blog.itpub.net/69992972/viewspace-2763625/
Oracle資料庫與HugePages(二)HugePages配置和限制: http://blog.itpub.net/69992972/viewspace-2764357/
Oracle資料庫與HugePages(三)HugePages常見問題和解決辦法: http://blog.itpub.net/69992972/viewspace-2764597/
Oracle資料庫與HugePages(四)如何禁用透明大頁: http://blog.itpub.net/69992972/viewspace-2764784/
Hugepages配置限制
HugePages有以下限制:
1. 必須取消MEMORY_TARGET和MEMORY_MAX_TARGET初始化引數的設定。例如,要取消資料庫例項的引數設定,可以使用ALTER SYSTEM RESET命令。
2. 自動記憶體管理(AMM)和HugePages是不相容的。當使用AMM時,整個SGA記憶體是透過在/dev/shm 下建立檔案分配的當Oracle資料庫使用AMM分配SGA時,不會保留HugePages。要在Oracle資料庫11g及以上版本上使用HugePages,必須禁用AMM。
3. 如果在32位環境中使用VLM(Very Large Memory),則不能將HugePages用於資料庫緩衝區快取。可以將HugePages用於SGA的其他部分,如shared_pool、large_pool等。VLM(buffer cache)的記憶體分配是使用共享記憶體檔案系統(ramfs/tmpfs/shmfs)完成的。記憶體檔案系統不保留或使用HugePages。
4. 在系統啟動後,HugePages不受分配或釋放的約束,除非系統管理員透過修改可用頁面的數量或修改池大小來更改HugePages配置。如果在系統啟動期間沒有在記憶體中保留所需的空間,則HugePages分配失敗。
5. 確保正確配置了HugePages,因為如果應用程式沒有使用足夠多的HugePages, HugePages將不會被使用,但任然佔用記憶體空間,此時會使用其他非 HugePages的記憶體,因此系統可能會耗盡記憶體。
6. 如果在例項啟動時沒有足夠的HugePages,並且初始化引數use_large_pages被設定為only,那麼資料庫將無法啟動,並且一個警報日誌訊息將提供關於HugePages的必要資訊。
如何在Linux上使用HugePages
要使Oracle資料庫能夠在Linux上使用large pages(有時稱為HugePages),需要設定vm.nr_hugepages核心引數,用於指定要保留的HugePages的數量。 必須指定足夠的HugePages來容納資料庫例項的整個SGA(一般比SGA大十幾兆就夠了,多了會浪費記憶體空間,但是本人在工作中發現極少部分系統的SGA大小波動,有時會導致多十幾兆也不夠用,導致 HugePages失效發生記憶體洩漏,因此把 HugePages多設定128M就再沒發生過記憶體洩漏)。要確定所需的引數值,需將例項的SGA大小除以大頁的大小,然後將結果四捨五入到最接近的整數。
要確定預設的HugePages大小,執行以下命令:
# grep Hugepagesize /proc/meminfo
例如,如果/proc/meminfo列出的HugePages大小為2 MB,而例項的總SGA大小為1.6 GB,那麼設定vm.nr_hugepages核心引數為820 (1.6 GB / 2 MB = 819.2)。
如何在Linux上配置HugePages
1.執行以下命令來確定核心是否支援HugePages:
$ grep Huge /proc/meminfo
2.在/etc/security/limit .conf檔案中編輯memlock設定。memlock設定以KB為單位指定, 當啟用HugePages記憶體時,最大鎖定記憶體限制應該至少設定為當前RAM的90% ,當禁用HugePages記憶體時,應該至少設定為3145728 KB (3 GB)。例如,如果你安裝了64 GB的記憶體,那麼新增以下條目來增加最大的鎖定記憶體地址空間:
* soft memlock 60397977
* hard memlock 60397977
也還可以將memlock的值設定得高於SGA要求。
3.再次以oracle使用者身份登入,執行ulimit -l命令,驗證新的memlock設定:
$ ulimit - l
60397977
4.執行以下命令顯示Hugepagesize變數的值:
$ grep Hugepagesize /proc/meminfo
5.執行hugepages_settings.sh指令碼來計算hugepages配置的值
6.將以下條目新增到/etc/sysctl.conf檔案中,其中的值是HugePages值
vm.nr_hugepages =<value>
7.重新啟動OS和例項
8.執行以下命令檢查可用的hugepages(1 or 2 page空閒):
$ grep Huge /proc/meminfo
注意:如果不能使用nr_hugepages去設定HugePages分配,那麼可用記憶體可能會被分割。需重新啟動伺服器,以便使Hugepages分配生效。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69992972/viewspace-2764357/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【TUNE_ORACLE】Oracle資料庫與HugePages(一)HugePages概念和優勢Oracle資料庫
- 【TUNE_ORACLE】Oracle資料庫與HugePages(三)HugePages常見問題和解決辦法Oracle資料庫
- 【TUNE_ORACLE】Oracle資料庫與HugePages(四)如何禁用透明大頁Oracle資料庫
- HugePages on LinuxLinux
- HugePages詳解
- [20191211]hugepages pagetables.txt
- [20191202]關於oracle例項是否使用hugepages問題.txtOracle
- [201804012]關於hugepages 3.txt
- [20191204]關於oracle例項是否使用hugepages問題2.txtOracle
- [20191129]關於hugepages的問題.txt
- Oracle資料庫限制訪問IPOracle資料庫
- Oracle資料庫配置Oracle資料庫
- [20191202]關於hugepages相關問題.txt
- [20221125]設定hugepages遇到的問題.txt
- 如何限制ip訪問Oracle資料庫Oracle資料庫
- How to disable transparent hugepages (THP) on Red Hat Enterprise Linux 7Linux
- Oracle的過載保護-資料庫資源限制Oracle資料庫
- oracle資料庫與oracle例項Oracle資料庫
- oracle資料庫的配置檔案Oracle資料庫
- 11. Oracle for Linux安裝和配置—11.3. Oracle安裝和配置—11.3.2. 資料庫建立OracleLinux資料庫
- 【TUNE_ORACLE】Oracle Hint之概念與用法Oracle
- 【TUNE_ORACLE】Oracle Hint之常用Hint功能概述(二)Oracle
- ORACLE 配置連線遠端資料庫Oracle資料庫
- 【TUNE_ORACLE】Oracle 19c RAC搭建番外篇之RAC引數配置參考(二)Oracle
- 配置ORACLE資料庫到達夢資料庫的異構DBLINKOracle資料庫
- Oracle、NoSQL和NewSQL 資料庫技術對比(二)- 終結OracleSQL資料庫
- 【TUNE_ORACLE】Oracle檢查點(二)檢查點效能Oracle
- 4 配置Oracle資料庫自動啟動Oracle資料庫
- Oracle閃回技術 為Oracle閃回配置資料庫Oracle資料庫
- 2 建立和配置資料庫資料庫
- docker配置前端和資料庫Docker前端資料庫
- Oracle匯出資料庫與還原Oracle資料庫
- Zabbix5.0 配置 ODBC 監控 Oracle 資料庫Oracle資料庫
- Oracle 資料庫安全許可權配置標準Oracle資料庫
- 成為MySQL DBA後,再看ORACLE資料庫(二、監聽與連線)MySqlOracle資料庫
- ORACLE rac資料庫監聽與應用TNS連線串配置與ORA12519Oracle資料庫
- Oracle資料庫冷備和恢復Oracle資料庫
- 揭祕Oracle雲(二):建立自治雲資料庫Oracle資料庫