从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 ...
随机推荐
- vijos- P1385盗窃-月之眼 (水题 + python)
P1385盗窃-月之眼 Accepted 标签:怪盗基德 VS OIBH[显示标签] 背景 怪盗基德 VS OIBH 第三话 描写叙述 怪盗基德第三次来到熟悉的OIBH总部.屡屡失败的OIBH这次看守 ...
- EntityFramework 找不到方法:“Void System.Data.Entity.DbModelBuilder.RegisterEntityType
问题原因,EF当前版本没有该方法,将EF版本升级即可. 1.packages.config <package id="EntityFramework" version=&qu ...
- PHP7添加swoole扩展
swoole需要php版本在7.0以上. 1.进入php目录中的bin目录下,通过pecl指令进行安装. cd /usr/local/php7/bin [root@localhost bin]# pw ...
- DNS查询报文实例
2.2 DNS查询报文实例 以www.baidu.com为例,用Wireshark俘获分组,结合2.1的理论内容,很容易看明白的,DNS请求报文如下: 图7 DNS请求报文示例 2.3 DNS回答报文 ...
- Kylin基础教程(二)
近期先把Kylin教程整理完毕,后续根据大家需求(可能会发起投票),整理其他技术栈知识教程. OK,那么接上一篇文章,感性认知了Kylin之后,我们先来看一下如何部署Kylin吧. 序号也依然沿用上一 ...
- div position:fixed后,水平居中的问题
.div{position:fixed;margin:auto;left:0; right:0; top:0; bottom:0;width:200px; height:150px;}
- COM基础
为什么说COM的可重用性是建立在二进制级别? COM本身是语言无关,它的标准建立在二进制级别.对于使用COM组件的客户程序,它只需要要使用的COM对象信息就可以通过COM库的帮助创建和使用COM对象, ...
- function——函数声明头的提升和预解析
函数: 即function语句的集合,就是将多个语句封装到一起: 函数的执行要会自己遍历,遇见函数 a():执行语句,就要移交控制权,函数执行完毕之后,控制权又移交回来了! 函数的参数要罗列在func ...
- Excel导入到DataTable ,DataTable导入到Excel
using System; using System.Collections.Generic; using System.Linq; using System.Text; using NPOI.SS. ...
- css pointer-event
详见:张鑫旭 CSS3 pointer-events:none应用举例及扩展 pointer-events:none ,可以使事件穿透, 如: 2 覆盖在 1 上面. 给 2 设置 pointer-e ...