软件安装完接着开始建库,不幸的是开始报错,内容如下:
ORA-27102: out of memory  ORA-01034: ORACLE not available<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

.查下系统版本

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不懂系统是不行滴~~~~~~~