linux下/dev/shm的大小引發ORA-00845: MEMORY_TARGET not supported on this system
Linux作業系統,oracle 11.2.0.4 啟動例項時出現如下錯誤:
SQL> startup nomount pfile=/u03/app/oracle/11.2.0/db/dbs/initcssb.ora ORA-00845: MEMORY_TARGET not supported on this system
檢視錯誤幫助資訊
[oracle11@oracle11g dbs]$ oerr ora 845 00845, 00000, "MEMORY_TARGET not supported on this system" // *Cause: The MEMORY_TARGET parameter was not supported on this operating system or /dev/shm was not sized correctly on Linux. // *Action: Refer to documentation for a list of supported operating systems. Or, size /dev/shm to be at least the SGA_MAX_SIZE on each Oracle instance running on the system.
錯誤原因是這個作業系統不支援MEMORY_TARGET引數或/dev/shm在Linux上的大小不正確造成的,這是該作業系統上的第二個例項,第一個例項設定了MEMORY_TARGET引數,所以並不是不支援這個引數,原因就只有/dev/shm大小不正確了,解決方法是要將/dev/shm的最小值設定為作業系統上執行例項SGA_MAX_SIZE所設定的大小。/dev/shm/是linux下一個目錄,/dev/shm目錄不在磁碟上,而是在記憶體裡,因此使用linux /dev/shm/的效率非常高,直接寫進記憶體。
tmpfs有以下特點:
1.tmpfs 是一個檔案系統,而不是塊裝置;您只是安裝它,它就可以使用了。
2.動態檔案系統的大小。
3.tmpfs 的另一個主要的好處是它閃電般的速度。因為典型的 tmpfs 檔案系統會完全駐留在 RAM 中,讀寫幾乎可以是瞬間的。
4.tmpfs 資料在重新啟動之後不會保留,因為虛擬記憶體本質上就是易失的。所以有必要做一些指令碼做諸如載入、繫結的操作。
linux下/dev/shm的容量預設最大為記憶體的一半大小,使用df -h命令可以看到。但它並不會真正的佔用這塊記憶體,如果/dev/shm/下沒有任何檔案,它佔用的記憶體實際上就是0位元組;如果它最大為1G,裡頭放有100M檔案,那剩餘的900M仍然可為其它應用程式所使用,但它所佔用的100M記憶體,是絕不會被系統回收重新劃分的。
linux /dev/shm容量(大小)是可以調整,在有些情況下(如oracle資料庫)預設的最大一半記憶體不夠用,並且預設的inode數量很低一般都要調高些,這時可以用mount命令來管理它。
mount -o size=1500M -o nr_inodes=1000000 -o noatime,nodiratime -o remount /dev/shm
在2G的機器上,將最大容量調到1.5G,並且inode數量調到1000000,這意味著大致可存入最多一百萬個小檔案透過/etc/fstab檔案來修改/dev/shm的容量(增加size選項即可),修改後,重新掛載即可。
這裡該例項的SGA_MAX_SIZE為1G,下面的命令檢視/dev/shm的大小。
[root@oracle11g ~]# df -lh Filesystem Size Used Avail Use% Mounted on /dev/sda1 23G 20G 1.6G 93% / /dev/sdb1 9.9G 5.8G 3.6G 62% /u02 tmpfs 2G 1.3M 0.7G 65% /dev/shm
從上面結果可以看到/dev/shm可用大小隻有0.7G,執行下面的命令來進行修改。
[root@oracle11g ~]# vi /etc/fstab LABEL=/ / ext3 defaults 1 1 /dev/sdb1 /u02 ext3 defaults 1 2 tmpfs /dev/shm tmpfs defaults,size=4G 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 LABEL=SWAP-sda2 swap swap defaults 0 0 "/etc/fstab" 7L, 540C written
解除安裝/dev/shm,但/dev/shm正被訪問
[root@oracle11g ~]# umount /dev/shm umount: /dev/shm: device is busy umount: /dev/shm: device is busy
用fuser處理,fuser命令,-k:kill processes accessing the named file(殺死所有正在訪問指定檔案的程式),-m 表示指定檔案所在的檔案系統或者塊裝置(處於 mount 狀態)。所有訪問該檔案系統的程式都被列出。
[root@oracle11g ~]# fuser -km /dev/shm /dev/shm: 3152m 3154m 3156m 3160m 3162m 3164m 3166m 3168m 3170m 3172m 3174m 3176m 3178m 3180m 3182m 3184m 3186m 3193m 3195m 3197m 3199m 3201m 3236m 3248m 3250m 3256m 3292m 4366m [root@oracle11g ~]# umount /dev/shm [root@oracle11g ~]# mount /dev/shm [root@oracle11g ~]# df -lh Filesystem Size Used Avail Use% Mounted on /dev/sda1 23G 20G 1.6G 93% / /dev/sdb1 9.9G 5.8G 3.6G 62% /u02 tmpfs 4.0G 0 4.0G 0% /dev/shm
再重新啟動例項
SQL> startup nomount pfile=/u03/app/oracle/11.2.0/db/dbs/initcssb.ora
ORACLE instance started.
Total System Global Area 1334786560 bytes
Fixed Size 1364480 bytes
Variable Size 171970048 bytes
Database Buffers 1155189248 bytes
Redo Buffers 6262784 bytes
小結:Oracle 11g的AMM記憶體管理模式就是使用/dev/shm,所以有時候修改MEMORY_TARGET或者MEMORY_MAX_TARGET會出現ORA-00845的錯誤,在安裝配置例項記憶體時為了避免出現這個故障可以對Linux系統中的/dev/shm進行調整,讓其可用大小至少等於例項的sga_max_size。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-1700776/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORA-00845 MEMORY_TARGET not supported on this system
- ORA-00845: MEMORY_TARGET not supported on this system
- ORA-00845: MEMORY_TARGET not supported on this system - Linux ServersLinuxServer
- ORA-00845 memory_target needs larger /dev/shmdev
- startup ORA-00845: MEMORY_TARGET not supported on this system
- Oracle報錯:ORA-00845: MEMORY_TARGET not supported on this systemOracle
- MEMORY_TARGET not supported on this system for linuxLinux
- ORA-00845: MEMORY_TARGET not supported on this system報錯解決
- Oracle11g ORA-00845: MEMORY_TARGET not supported on this systemOracle
- ORA-00845 MEMORY_TARGET not supported on this system報錯解決
- ORA-00845: MEMORY_TARGET not supported on this system 失敗的解決方案
- ORA-00845 MEMORY_TARGET not supported
- MEMORY_TARGET not supported on this system
- Linux下安裝Oracle11g , MEMORY_TARGET(AMM)小於/dev/shm處理(ORA-00845)LinuxOracledev
- Oracle 11g報錯"ORA-00845: MEMORY_TARGET not supported on this system"Oracle
- oracle 11g報錯ORA-00845: MEMORY_TARGET not supported on this systemOracle
- HugePages與AMM不相容:ORA-00845: MEMORY_TARGET not supported on this system
- “ORA-00845: MEMORY_TARGET not supported on this system”不完全解決之道
- Oracle11g啟動報:ORA-00845: MEMORY_TARGET not supported on this systemOracle
- 【OS】Linux下/dev/shm的作用及ORA-00845錯誤的處理Linuxdev
- ORA-00845 : MEMORY_TARGET not supported on this system(調大資料庫記憶體無法啟動)大資料資料庫記憶體
- linux下修改/dev/shm引數Linuxdev
- 解決辦法:ORA-00845: MEMORY_TARGET not supported on thi
- /dev/shmdev
- Linux系統目錄/dev/shmLinuxdev
- 修改/dev/shm的大小dev
- Linux下安裝Oralce11g 時/dev/shm 大小的更改Linuxdev
- ORA-00845: MEMORY_TARGET
- 學習linux分割槽/dev/shm的應用Linuxdev
- 【例項】tmpfs /dev/shmdev
- /dev/shm大小修改dev
- 對/dev/shm認識dev
- linux /dev/shm與tmpfs檔案系統Linuxdev
- /dev/shm與swap的區別dev
- 對Linux目錄下面/dev/shm的理解和使用Linuxdev
- /dev/shm 介紹 --轉載dev
- oracle11g要求在作業系統層設定共享記憶體/dev/shm,且大於MEMORY_TARGETOracle作業系統記憶體dev
- oracle 執行過程中 /dev/shm 下是什麼Oracledev