在出現此錯誤以前,須要理解參數/dev/shm的做用。linux
使用df -h查看該參數目前大小:sql
[root@Abbott ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_abbott-LogVol01 36G 12G 23G 34% / tmpfs 940M 72K 939M 1% /dev/shm /dev/sda1 190M 41M 140M 23% /boot
這裏能夠看到總共大小爲940M,只使用了72K數據庫
進入數據庫生成pfile文件,修改pfile文件中的參數以下,將數據庫內存管理修改成AMM(自動內存管理)oracle
SQL> create pfile='/home/oracle/pfile.ora' from spfile; File created. SQL> quit Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options [oracle@Abbott ~]$ ls backup dict.log pfile.ora [oracle@Abbott ~]$ vi pfile.ora *.memory_max_target=1572864010 *.memory_target=1572864010 #*.pga_aggregate_target=214748364 #*.sga_max_size=1288490188 #*.sga_target=1288490188
從新啓動數據庫:app
[oracle@Abbott ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Thu Jun 15 16:40:59 2017 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to an idle instance. SQL> startup pfile='/home/oracle/pfile.ora' nomount; ORA-00845: MEMORY_TARGET not supported on this system
這裏能夠看到數據庫沒法啓動,錯誤提示系統不支持,查閱文檔後,發現若是使用AMM自動內存管理,那麼/dev/shm這個參數就很是重要。
/dev/shm是linux很是有用的一個目錄,它就是所謂的tmpfs,也能夠稱之爲臨時文件系統(不是塊設備),相似oracle中的臨時表空間同樣,用於加速和優化系統。該目錄並無放在磁盤上,而是放在內存當中優化
當使用AMM自動內存管理以後,數據庫啓動後會在/dev/shm目錄下面生成不少ORA文件。ui
實踐發現,/dev/shm參數必須設置得比memory_max_size大,數據庫才能夠正常啓動this
永久修改參數:
spa
[oracle@Abbott ~]$ cat /etc/fstab /dev/mapper/vg_abbott-LogVol00 swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults,size=1600M 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0
再次從新啓動數據庫,可正常啓動:code
SQL> startup pfile='/home/oracle/pfile.ora' nomount; ORACLE instance started. Total System Global Area 1586708480 bytes Fixed Size 2253624 bytes Variable Size 704646344 bytes Database Buffers 872415232 bytes Redo Buffers 7393280 bytes