11g AMM和/dev/shm
從11g開始支援AMM即自動記憶體管理,該功能需要用到/dev/shm
以前對此瞭解甚少,蒐羅一些相關資料作如下總結:
什麼是tmpfs
tmpfs是一種基於記憶體的檔案系統,類似oracle的buffer cache,當OS經歷大量的I/O讀寫操作時,可以顯著提高效能;
預設情況下,tmpfs會mount到/dev/shm目錄。
為防止tmpfs使用了全部VM,有時候要限制其大小。要建立一個最大為32 MB的tmpfs檔案系統,鍵入:
# mount tmpfs /dev/shm -t tmpfs -o size=32m
新增到 /etc/fstab,應該是這樣:
tmpfs /dev/shm tmpfs size=32m 0 0
tmpfs相對於ramfs而言,增加了幾項功能,如size limit,交換分割槽支援等等。 tmpfs可以透過 "mount -o remount size=..."來線上調整大小;當該檔案系統的檔案數 太多,Size不夠的時候,還可以將一些暫時不用的檔案SWAP到交換分割槽上去,因此比 Ramfs更加靈活。
Linux檔案系統中的某些目錄,諸如:/tmp, /var/tmp等等用來存放臨時檔案,因此我們 可以將tmpfs掛載到這些目錄中,這樣一來一旦系統關機,這些臨時檔案都會統統消失, 不會再系統中留下無用檔案。此外,現在的很多軟體可能會透過共享記憶體的方式來進行 IPC,近期的Linux核心可以透過將tmpfs掛載到/dev/shm,從而透過/dev/shm來提供共享 記憶體。
什麼是/dev/shm
/dev/shm 是linux下的一塊共享記憶體結構(是TMPFS型別)。預設最大為記憶體的一半大小.其實它的實際大小可以設定為(實體記憶體的一半+swap).好多人都把它和swap給混淆了,這是兩個不同的概念.但它並不會真正的佔用這塊記憶體,如果/dev/shm/下沒有任何檔案,它佔用的記憶體實際上就是0位元組;如果它最大為1G,裡頭放有100M檔案,那剩餘的900M仍然可為其它應用程式所使用,但它所佔用的100M記憶體,是絕不會被系統回收重新劃分的。
/dev/shm用來儲存程式間通訊時的一些共享資料結構..例如Oracle11G的ASMM(Automatic Shared Memory Management)就用/dev/shm進行通訊和資料共享. DBA在進行11G配置時需要考慮MEMORY_MAX_TARGET和MEMORY_TARGET引數不能大於/dev/shm.否則在資料庫啟動時有可能會產生ORA-00845.
/dev/shm通常在實體記憶體足夠時,會在記憶體中進行資料交換,如果實體記憶體缺乏時,會用swap進行資料交換. 支援動態線上調整.在我們需要時可以增加或縮減它的大小.
注意事項
配置時必須滿足memory_max_target <= /dev/shm,否則啟動時會報告ora-00845錯誤;
因為每個後臺程式都需要訪問/dev/shm檔案,必須對oracle使用者分配足夠多的檔案描述符,否則會出現ora-27123錯誤;
若使用dedicated方式連線,每個客戶端連線也都需要訪問/dev/shm下的共享記憶體段,即至少需要memory_target/granule size個檔案描述符,且還需要相應datafile的檔案描述符,直到連線退出才釋放;
驗證
開啟oracle之前,/dev/shm為空
$ ls -l /dev/shm
total 0
$ lsof -n | grep /dev/shm
啟動oracle後
SQL> show parameter memory_target
NAME TYPE VALUE
-------------- ----------- ------
memory_target big integer 808M
SQL> show parameter memory_max_target
NAME TYPE VALUE
----------------- ------------- ------
memory_max_target big integer 808M
再次檢查/dev/shm
UNIX> ls -l /dev/shm/* | wc -l
203
UNIX> lsof -n | grep /dev/shm | wc -l
4872
/dev/shm目錄下只有203個檔案,卻生成了4872個檔案描述符;兩者分別遵循以下公式
檔案數目=memory_target/granule size(4M)=808/4 =203;
檔案描述符=檔案數目*後臺程式數 = 203*24=4872
注:pga不會儲存於/dev/shm
http://blog.oracle48.nl/oracle-11g-amm-memory_target-memory_max_target-and-dev_shm/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15480802/viewspace-720689/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- /dev/shmdev
- 新特性:/dev/shm對Oracle 11g的影響devOracle
- 【例項】tmpfs /dev/shmdev
- /dev/shm大小修改dev
- 對/dev/shm認識dev
- 修改/dev/shm的大小dev
- /dev/shm 介紹 --轉載dev
- /dev/shm與swap的區別dev
- 修改/dev/shm共享記憶體dev記憶體
- Linux下安裝Oracle11g , MEMORY_TARGET(AMM)小於/dev/shm處理(ORA-00845)LinuxOracledev
- 對Linux目錄下面/dev/shm的理解和使用Linuxdev
- Linux系統目錄/dev/shmLinuxdev
- 修改/dev/shm 重啟失效原因分析dev
- linux下修改/dev/shm引數Linuxdev
- linux /dev/shm與tmpfs檔案系統Linuxdev
- CentOS7和RHEL7在 /etc/fstab中不包含/dev/shmCentOSdev
- 學習linux分割槽/dev/shm的應用Linuxdev
- ORA-00845 memory_target needs larger /dev/shmdev
- [轉帖]linux的tmpfs和/dev/shm目錄的詳細介紹Linuxdev
- oracle 執行過程中 /dev/shm 下是什麼Oracledev
- 記錄一下docker踩坑 /dev/shm目錄Dockerdev
- Oracle 11g AMM與ASMM切換OracleASM
- Oracle ASMM和AMMOracleASM
- 關於ASMM和AMMASM
- 修改/dev/shm大小造成Oracle 12c叢集啟動故障devOracle
- Linux下安裝Oralce11g 時/dev/shm 大小的更改Linuxdev
- Linux 11G RAC啟用HugePages與AMM的禁用Linux
- Linux Hugepage ,AMM及 USE_LARGE_PAGES for oracle 11GLinuxOracle
- Oracle 11g新引數USE_LARGE_PAGES與AMM使用Oracle
- 【OS】Linux下/dev/shm的作用及ORA-00845錯誤的處理Linuxdev
- linux下/dev/shm的大小引發ORA-00845: MEMORY_TARGET not supported on this systemLinuxdev
- /dev/zero和/dev/null的區別devNull
- 2>/dev/null和>/dev/null 2>&1和2>&1>/dev/null的區別devNull
- 【AMM】關於ASM中AMM引數說明ASM
- 辛星淺析/dev/random和/dev/urandomdevrandom
- AMM與ASMMASM
- K8s 裡如何優雅地使用 /dev/shm 實現容器間共享記憶體K8Sdev記憶體
- ORA-00845 When Starting Up An 11g Instance With AMM Configured