【遇到問題】ORA-27102 ORA-01034

軟件安裝完接着開始建庫,不幸的是開始報錯,內容如下:
ORA-27102: out of memory  ORA-01034: ORACLE not available

.查下系統版本

oracle@linux:/u01/app/oracle/admin/orcl/bdump> uname -a
Linux linux 2.6.5-7.308-bigsmp #1 SMP Mon Dec 10 11:36:40 UTC 2007 i686 i686 i386 GNU/Linux
本系統爲32
二.查看內存信息
oracle@linux:/u01/app/oracle/admin/orcl/bdump> cat /proc/meminfo
MemTotal:      8302360 kB
MemFree:       3788908 kB
Buffers:        138968 kB
Cached:        4003872 kB
SwapCached:          0 kB

 

oracle@linux:/u01/app/oracle/admin/orcl/bdump> free -m
             total       used       free     shared    buffers     cached
Mem:          8107       4407       3700          0        135       3910
-/+ buffers/cache:        361       7745
Swap:         4102          0       4102

 

本系統物理內存爲8G swap4G。這裏說明一下,一般oracle對於硬件的要求爲:
1.       至少有1024MB的物理內存
2.       Swap的大小設置1024 MB 2048 MB 1.5 RAM2049 MB 8192 MB 等於 RAM大於 8192 MB 0.75 RAM oracle10g以後oracle也是安裝這個公式來chenck.
3.       /tmp 目錄中至少有400 MB空閒磁盤空間
4.1.5 GB 3.5 GB 的磁盤空間用於安裝 Oracle 數據庫軟件
因此我的系統系統工程師swap設置少,因此在我安裝oracle10G check的時候提示swap空間不夠。
 三.查metalink

 

Cause

There  is not enough SHM (max-shm-memory) for the SES install. SES will try to allocate 40% of the installed RAM for SGA.  For example, if the installed RAM is 60GB.  SES will attempt to allocated approximately 24GB for SGA.  If it is not available, you will receive the out of memory error.

Solution


The following runInstaller syntax can be used to cap the SGA during installation to avoid this error.

./runInstaller n_maxMemoryInMB=4000


This will cap the SGA at 4GB.  The out of memory error should not be encountered again.  The above syntax can be run with a smaller value as well depending on your environment.  However, the recommendation would be to not specify anything less than 2GB as this could lead to memory errors post-install.

 

查看/shm大小:

linux:~ # df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3              99G  2.8G   91G   3% /
tmpfs                 4.0G  8.0K  4.0G   1% /dev/shm
/dev/sda1            1012M   39M  922M   5% /boot
/dev/sda5             299G  3.6G  280G   2% /u01
建庫時我的sga選爲typcial模式自動分配oracle內存區大小,oracle會默認將sga大小設爲物理內存的40%8G*40%=2048M ,sga+pga=28480M ,而我的shm=4G,所以不存在SHM is not enough 的情況。

又查另一篇article,如下:

Applies to:
Oracle Server - Enterprise Edition - Version: 9.2.0.1 to 11.1.0.7 - Release: 9.2 to 11.1
Linux x86
***Checked for relevance on 16-Nov-2010***
Symptoms
While creating a database using the Database Configuration Assistant (DBCA) or manually, the following error can occur:
    ORA-27102: out of memory
Cause
For 32 bit systems running the smp kernel, we cannot have an SGA > 1.7 GB directly.
This is because of limitation of 32 bit systems of not being able to address memory > 4GB directly by a user process.
If SGA is kept higher than 1.7 GB, it will results in ORA-27102 errors.
While invoking DBCA to create a starter database, by default it takes 40% of memory for SGA.
Hence the size can accidentally exceed 1.7 GB
Solution
The workaround is to create a new database and specify the size of SGA approximate to be 1.5 to 1.7 GB.
由此可見,32位系統最大支持4G內存,所以32位的系統不可以直接將sga設爲大於1.7G,將sga調小即可。

 

四.名詞解釋:
SHM/dev/shm is nothing but implementation of traditional shared memory concept. It is an efficient means of passing data between programs. One program will create a memory portion, which other processes (if permitted) can access. This will result into speeding up things on Linux.
shm / shmfs is also known as tmpfs, which is a common name for a temporary file storage facility on many Unix-like operating systems. It is intended to appear as a mounted file system, but one which uses virtual memory instead of a persistent storage device.
If you type mount command you will see /dev/shm as a tempfs file system. Therefore, it is a file system, which keeps all files in virtual memory. Everything in tmpfs is temporary in the sense that no files will be created on your hard drive. If you unmount a tmpfs instance, everything stored therein is lost. By default almost all Linux distros configured to use /dev/shm.
shm是一塊高速緩存區,通常掛在目錄tmpfs,即將內存映射在此目錄下。Shm默認爲物理內存的一半,可以將此看做爲進入系統內存的入口設備,通過這個設備往內存中讀寫數據,加快頻繁讀寫文件的I/OOracle的內存分配都是在shm中進行,所以如果shm大小小於sga的大小那麼就有問題。

Swap:這是系統的交換內存,當系統物理內存不夠時將會充當內存使用, 因此可以理解爲當/dev/shm空間不夠時可以佔用swap的空間,如果用到Swap時,系統的性能就有可能很低了。

DBA不懂系統是不行滴~~~~~~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章