从ORA-27300,ORA-27301到ORA-00064
看是比較简单的一个问题,却遭遇了ORA-27300,ORA-27301。因为这个涉及到了有关内核參数kernel.sem的改动。以下是其详细描写叙述。
1、故障现象
OS版本号:SUSE Linux Enterprise Server 10 SP3 (x86_64) - Kernel \r (\l)
DB版本号: SQL*Plus: Release 10.2.0.3.0 - Production
需求:Processes參数由1000改动到2000
SQL> startup pfile=/u02/database/MRDB/initMRDB.ora;
ORA-27154: post/wait create failed
ORA-27300: OS system dependent operation:semget failed with status: 28
ORA-27301: OS failure message: No space left on device
ORA-27302: failure occurred at: sskgpcreates
2、故障的分析与解决
#起初咋一看还以为空间不够呢,例如以下。显然不是空间的问题,其次有个非常重要的表示"semget"
SQL> ho df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 1.8T 826G 885G 49% /
udev 32G 116K 32G 1% /dev
/dev/sda1 99M 9.5M 85M 11% /boot
#后台日志例如以下
Tue Aug 5 18:07:22 2014
Starting ORACLE instance (normal)
Tue Aug 5 18:07:22 2014
Errors in file /u02/database/MRDB/udump/mrdb_ora_30366.trc:
ORA-27154: post/wait create failed
ORA-27300: OS system dependent operation:semget failed with status: 28
ORA-27301: OS failure message: No space left on device
ORA-27302: failure occurred at: sskgpcreates
#Google了一些文章,描写叙述的是须要调整内核參数kernel.sem,也就是信号量的问题
v2012db02u:~ # grep kernel.sem /etc/sysctl.conf
kernel.sem = 1250 32000 100 256 #这个是当前的值
信号量设置演示样例
SEMMSL应该设置为server中实例中具有最大的PROCESSES參数+10,比如。当最大的PROCESSES參数为5000时,SEMMSL应设置为5010。
SEMMNS參数应设置为SEMMSL*SEMMNI,接上例SEMMSL为5010。SEMMNI的值一般为128。则SEMMNS參数应为(5010*128)=641280。
SEMOPM參数应设置与SEMMSL參数同样。接上例此处应设置为5010
因此对于信号量建议做例如以下设置
sysctl -w kernel.sem="5010 641280 5010 128"
#关于这个參数的详细描写叙述及设置能够參考:Linux 内核參数优化(for oracle)
#因为当前server存在N个实例,因此给了一个比較大的值。生产环境应谨慎改动。例如以下
v2012db02u:~ # vi /etc/sysctl.conf
v2012db02u:~ # sysctl -p
...........
kernel.sem = 7000 1792000 7000 256
...........
#再次启动。狂汗....
SQL> startup pfile=/u02/database/MR/initMR.ora;
ORA-00064: object is too large to allocate on this O/S (1,5150880)
v2012db02u:~ > oerr ora 00064
00064, 00000, "object is too large to allocate on this O/S (%s,%s)"
// *Cause: An initialization parameter was set to a value that required
// allocating more contiguous space than can be allocated on this
// operating system.
// *Action: Reduce the value of the initialization parameter.
#从上面的描写叙述来看,不能从os分配连续的空间。
#关于这个问题Metalink(Doc ID 283980.1)上提供了描写叙述信息。须要增大内存分配粒度到16M。
#以下是当前的内存粒度为4M。
SQL> SQL> SELECT x.ksppinm name, y.ksppstvl VALUE, x.ksppdesc descbtion
2 FROM x$ksppi x, x$ksppcv y
WHERE x.inst_id = USERENV ('Instance')
3 4 AND y.inst_id = USERENV ('Instance')
5 AND x.indx = y.indx
6 AND x.ksppinm LIKE '%_ksmg_granule%';
NAME VALUE DESCBTION
----------------------------------- ------------------------------ --------------------------------------------------
_ksmg_granule_size 4194304 granule size in bytes
_ksmg_granule_locking_status 1 granule locking status
SQL> show parameter sga #当前sga大小为1G
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sga_max_size big integer 1G
sga_target big integer 1G
#Author : Leshami
#Blog : http://blog.csdn.net/leshami
#直接调整为2G
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sga_max_size big integer 2G
sga_target big integer 2G
#以下是改动过后内存的粒度。
SQL> set linesize 145
col name format a35
SQL> SQL> col value format a30
col descbtion format a50 wrap
SELECT x.ksppinm name, y.ksppstvl VALUE, x.ksppdesc descbtion
SQL> SQL> 2 FROM x$ksppi x, x$ksppcv y
3 WHERE x.inst_id = USERENV ('Instance')
4 AND y.inst_id = USERENV ('Instance')
5 AND x.indx = y.indx
6 AND x.ksppinm LIKE '%_ksmg_granule%';
NAME VALUE DESCBTION
----------------------------------- ------------------------------ --------------------------------------------------
_ksmg_granule_size 16777216 granule size in bytes
_ksmg_granule_locking_status 1 granule locking status
#再次重新启动DB OK。
3、Doc ID 283980.1
Oracle Server - Enterprise Edition - Version: 9.0.1.0 and later [Release: 9.0.1 and later ]
Information in this document applies to any platform.
SYMPTOMS
ORA-00064 error is possibly encountered on database startup when the parameter
OPEN_LINKS_PER_INSTNACE is set to over 400.
CAUSE
The contiguous area of storage to be allocated , exceeds the SGA granule
(subarea) size. The granule size is calculated based on the SGA size.
SOLUTION
Test case to reproduce the error
================================
a) add OPEN_LINKS_PER_INSTANCE = 1000 in the initora
b) use sqlplus to try starting up the database
This is NOT a BUG.
To fix the issue , increase the size of the SGA to over 128Mb by increasing DB_CACHE_SIZE,
SHARED_POOL_SIZE,LARGE_POOL_SIZE, JAVA_POOL_SIZE, etc.This will cause the granule size to
be increased to 16Mb.
Workaround
==========
Set the following hidden parameter
_ksmg_granule_size = 16777216
Note: Please set granule size more than or equal to size showing in the error message.
另外一篇与该错误有关Bug 5959853 - ORA-64 DURING DATABASE STARTUP WITH PROCESSES>6000. DocID:1457812.1

从ORA-27300,ORA-27301到ORA-00064的更多相关文章
- Oracle的tnsnames.ora配置(PLSQL Developer)
首先打开tnsnames.ora的存放目录,一般为D:\app\Administrator\product\11.2.0\client_1\network\admin,就看安装具体位置了. 步骤阅读 ...
- listener.ora/sqlnet.ora/tnsnames.ora配置文件详解
oracle网络配置 三个配置文件 listener.ora.sqlnet.ora.tnsnames.ora ,都是放在$ORACLE_HOME/network/admin目录下. 英文说明: The ...
- ORACLE配置tnsnames.ora文件实例
ORACLE配置tnsnames.ora文件实例客户机为了和服务器连接,必须先和服务器上的监听进程联络.ORACLE通过tnsnames.ora文件中的连接描述符来说明连接信息.一般tnsnames. ...
- ORACLE RAC 下非缺省端口监听配置(listener.ora tnsnames.ora)
不论是单实例还是RAC,对于非缺省端口下(1521)的监听器,pmon进程不会将service/instance注册到监听器,即不会实现动态注册.与单实例相同,RAC非缺省端口的监听器也是通过设置参数 ...
- 在TNSNAMES.ORA文件中配置本机装的oracle
首先,感谢这两位网友:http://zhidao.baidu.com/link?url=eGYeoEa-EhQdVitSGqjE36uNfVmEsryXH1WUjPue6YvArDSx-Y1N9_rd ...
- oracle的sqlnet.ora , tnsnames.ora , Listener.ora 文件的作用(转)
oracle网络配置三个配置文件 listener.ora.sqlnet.ora.tnsnames.ora ,都是放在$ORACLE_HOME/network/admin目录下.1. sqlnet.o ...
- init.ora, pfile, spfile
实例启动时,查找初始化参数文件的顺序为: spfile<sid>.oraspfile.orainit<sid>.ora 如果以上3个文件都不存在,则实例无法启动. init.o ...
- listener.ora和tnsnames.ora格式解析
listener.ora是oracle数据库服务端的监听配置文件,包括协议.IP地址和端口等内容:tnsnames.ora是oracle数据库客户端的连接配置文件,也是对应的协议.IP地址和端口等内容 ...
- 转载《Oracle的tnsnames.ora配置(PLSQL Developer)》
源地址:https://www.cnblogs.com/qq3245792286/p/6212617.html. 首先打开tnsnames.ora的存放目录,一般为D:\app\Administrat ...
- Oracle的tnsnames.ora 监听配置文件详解
监听配置文件 为了使得外部进程 如 CAMS后台程序 能够访问 Oracle 数据库 必须配 置 Oracle 网络服务器环境 配置 Oracle 网络服务器环境是通过配置 listener.ora ...
随机推荐
- hdoj 5092 Seam Carving 【树塔DP变形 + 路径输出】 【简单题】
Seam Carving Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Tot ...
- centos7.0 安装日志--图文具体解释-python开发环境配置
centos7.0公布之后,就下载了everthing的DVD镜像.今天有时间,所以决定在vbox底下体验一番--- 上图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nk ...
- java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlException
http://blog.csdn.net/you23hai45/article/details/70197502
- HttpClient 4.4 请求
4.2 版本 /** * url 请求 paramUrl * * @time 2015年11月10日下午4:40:22 * @packageName com.rom.utils * @param ur ...
- Oracle数据的基本操作
一.什么是Oracle 在学习DRP系统之前,非常多次提到过Oracle,也了解过,那么Oracle是什么?今天我最终揭开了它的神奇面纱. Oracle:是一个公司.当然我在这里说的是Oracle数据 ...
- LayoutParams继承于Android.View.ViewGroup.LayoutParams.
LayoutParams相当于一个Layout的信息包,它封装了Layout的位置.高.宽等信息.假设在屏幕上一块区域是由一个Layout占领的,如果将一个View添加到一个Layout中,最好告诉L ...
- myeclipse打开jsp页面慢或者卡死
不知道你们有没有这种经历,反正无论是公司电脑还是自己电脑,myeclipse打开jsp页面卡的不行不行的,又是甚至会出现卡死的现象,几经周折,找到了解决办法,亲测有效 打开window-prefere ...
- ubuntu DNS 出错,用以下命令可以解决
具体的错误为:DNS_PROBE_FINISHED_BAD_CONFIG 命令为: sudo rm /etc/resolv.conf sudo ln -s ../run/resolvconf/reso ...
- Java基础——类和对象的初始化过程
本节把类和对象的初始化所涉及到的所有代码块阐述一边. 示例代码: public class Demo { private static String name; private String age; ...
- ubuntu16.04 安装 go
1,下载go安装包wget https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz 2,解压 sudo tar -C /usr ...