oracle数据库提示ORA-27102: out of memory问题处理

公司的一台oracle数据库在启动时候报错ORA-27102: out of memory ,具体如下:

现象: alter system set sga_max_size=12884901888 scope=spfile      ---(12G)
出现:

 SQL >startup force
ORA-27102: out of memory
Linux-x86_64 Error: 28: No space left on device

网上查询ORA-27102报错代码的解决方法,发现为sysctl.conf中关于共享内存部分设置不当,造成数据库无法正常启动。sysctl.conf可通过如下查看:

[root@ECSDB etc]# cat sysctl.conf 或者到 /proc/sys/kernel 下查看。
kernel.shmall = 2097152
kernel.shmmax = 8405194752
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 262144  

修改 /etc/sysctl.conf 文件之后执行sysctl -p立刻生效命令。和共享内存相关的参数主要为前三个。具体解释如下:

kernel.shmmax 用于定义单个共享内存段的最大值,shmmax 设置应该足够大,能在一个共享内存段下容纳下整个的SGA ,设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降 。Oralce 的建议是希望一个大的共享内存段能容纳整个SGA,这样在任何时候都不会有甚至轻微的性能下降的隐患,官方的说明为:SHMMAX Available physical memory Defines the maximum allowable size of one shared memory segment. The SHMMAX setting should be large enough to hold the entire SGA in one shared memory segment. A low setting can cause creation of multiple shared memory segments which may lead to performance degradation.
kernel.shmall 参数是控制共享内存页数 。Linux 共享内存页大小为4KB, 共享内存段的大小都是共享内存页大小的整数倍。例如:一个共享内存段的最大大小是16G,那么需要共享内存页数是 16GB/4KB=16777216KB/4KB=4194304 (页)。
kernel.shmmni shmmni 内核参数是共享内存段的最大数量(注意这个参数不是 shmmin,是shmmni, shmmin 表示内存段最小大小 ) ,shmmni 缺省值 4096 。
oracle相关的几个参数

SGA_MAX_SZIE 为实例允许使用的sga 上限,一个静态参数,是不能动态修改的.如果不设置sga_max_size ,oracle 会自动的以实际的SGA 的总尺寸来设置sga_max_size 的值。
SGA_TARGET 是Oracle 10g的一个新特性。自动共享内存管理(Automatic Shared Memory Management ASMM),控制这一特性的,就仅仅是这个参数SGA_TARGE。设置这个参数后,你就不需要为每个内
存区来指定大小了。SGA_TARGET 指定了SGA 可以使用的最大内存大小,而SGA 中各个内存的大小由Oracle 自行控制,不需要人为指定。Oracle 可以随时调节各个区域的大小,使之达到系统性能最佳状态的个最合理大小,并且控制他们之和在SGA_TARGET 指定的值之内。一旦给SGA_TARGET 指定值后(默认为0,即没有启动ASMM),就自动启动了ASMM特性。
oracle其他相关的参数还有DB_CACHE_SIZE、Buffer cache、Shared pool 、Large pool 、Java pool 、streams pool 。

时间: 2024-10-03 02:06:07

oracle数据库提示ORA-27102: out of memory问题处理的相关文章

vb.net-ASP.NET连接oracle数据库提示 :不支持关键字: “(kstsdb”。

问题描述 ASP.NET连接oracle数据库提示 :不支持关键字: "(kstsdb". 我利用vb.net编写asp.net连接oracle数据库时,提示:不支持关键字: "(kstsdb".我的具体代码是这样写的 Dim constring As String = ""(KSTSDB=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.12.15.203)(PORT=1521))(CONNECT_DAT

plsql连接oracle数据库报ora 12154错误解决方法_oracle

plsql连接oracle数据库报ora 12154错误 今天遇到一个问题,使用sqlplus能够连接到远程的数据库,但是使用plsql却连接不上,报错"ORA-12154: TNS: 无法解析指定的连接标识符" 解决方法如下: 1.先检查服务器端的监听服务是否打开,如果没有打开请启动其监听 客户端:tnsping <tns_name> 服务器Linux下: #>lsnrctl status 查看监听状态 #>lsnrctl start 启动监听 2.通过Sql

安装oracle数据库提示“程序异常终止”解决方案

由于公司的OA系统使用的是oracle数据库,s所以为了系统的调整与测试,我在自己本机win7的系统上安装oracle的数据库. 本以为这是一件很简单的事情,可是在安装过程中却出现问题了.一直安装不成功,出现如下的提示: 刚开始我以为是我本机系统的原因,于是就换了一个新win7系统.可是更换了新的系统后,安装还是不成功,出现的还是上面的提示. 那这就说明,这不是我本机系统的缘故.那问题应该是这个安装文件的问题.于是,就去百度中谷歌了一下.呵呵,网上还真有这方面的资料. 呵呵,于是咱就按照网上说的

oracle数据库提示ORA-27069: skgfdisp: 尝试在文件范围外执行 I/O

接到网友技术支持请求,win 2003 ntfs格式文件系统,Oracle 8.1.7版本,主机重启后,数据库无法正常启动,offline datafile 15,数据库open成功,但是datafile 无法正常online,报错为:ORA-27069: skgfdisp: attempt to do I/O beyond the range of the file,请求协助处理 SQL> recover datafile 'D:/ORACLE/ORADATA/ORCL/ZSF_DATA.DB

oracle数据库提示ORA-01129错误

  数据库版本  代码如下   SQL> select * from v$version;   BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production PL/SQL Release 11.2.0.4.0 - Productio

oracle数据库提示 ORA-01129错误解决办法

数据库版本  代码如下 复制代码 SQL> select * from v$version;   BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production PL/SQL Release 11.2.0.4.0 - Producti

Oracle数据库实例在AIX 平台下使用大页内存(Large Page Memory)

        不管是AIX平台还是在Linux平台使用大页内存(Large Page Memory)都是依赖于操作系统的特性.Linux平台和AIX平台默认的页面大小都是4K,Linux平台的HugePage特性通常每个页面可以调整为2M:AIX平台的Large Page Memory使得单个页面最大可以调整为16M:下面详细讨论在AIX平台下,Oracle数据库实例使用64K和16M两种规格的内存页面,主要讨论的是16M的内存页面. 1.使用64K内存页面在oracle用户的PROFILE文

Oracle数据库ORA 54013错误的解决办法_oracle

ORA-54013: 不允许对虚拟列执行 INSERT 操作 这是Oracle 11 的新特性 -- 虚拟列. 在以前的Oracle 版本,当我们需要使用表达式或者一些计算公式时,我们会创建数据库视图,如果我们需要在这个视图上使用索引,我们会创建基于函数的索引.现在Oracle 11允许我们直接在表上使用虚拟列来存储表达式.虚拟列的值是不存储在磁盘的,它们是在查询时根据定义的表达式临时计算的.我们不能往虚拟列中插入数据,我们也不能隐式的添加数据到虚拟列,我们只能使用物理列来插入数据.然后可以查询

【解决】oracle使用impdp导入数据库提示ORA-14460错误

今天公司一同事从现场发回来一份oracle导出的dmp文件,告诉我是使用expdp数据泵导出的,而且该oracle数据库是安装在AIX系统上的. 注意:把AIX系统上的dmp文件传输到windows系统上时,一定要使用FTP二进制方式进行传输.否则会出现,dmp文件导入出错的现象. 因为有一个问题是需要使用前方的数据库,所以需要在本地把前方的数据库导入到本地的oracle数据库中. 我还是安装平时数据泵的导入格式,进行导入却出现如下的错误提示信息: ORA-14460只能指定一个COMPRESS