软件安装完接着开始建库,不幸的是开始报错,内容如下:
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
,
swap
为
4G
。这里说明一下,一般
oracle
对于硬件的要求为:
1.
至少有
1024MB
的物理内存
2.
Swap
的大小设置
1024 MB
到
2048 MB 1.5
倍
RAM
,
2049 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
:
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.
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/O
。
Oracle
的内存分配都是在
shm
中进行,所以如果
shm
大小小于
sga
的大小那么就有问题。
Swap:
这是系统的交换内存,当系统物理内存不够时将会充当内存使用
,
因此可以理解为当
/dev/shm
空间不够时可以占用
swap
的空间,如果用到
Swap
时,系统的性能就有可能很低了。
DBA
不懂系统是不行滴
~~~~~~~