近期因为session数量添加,须要调整session,也就是要调整process參数。

看是比較简单的一个问题,却遭遇了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相关推荐

  1. oracle创建ora文件,ORACLE配置tnsnames.ora文件实例

    ORACLE配置tnsnames.ora文件实例 客户机为了和服务器连接,必须先和服务器上的监听进程联络.ORACLE通过tnsnames.ora文件中的连接描述符来说明连接信息.一般tnsnames ...

  2. linux listener.ora 位置,Oracel数据库 listener.ora和tnsnames.ora配置

    Oracel服务经常会出现各种监听问题,很多情况是 listener.ora和tnsnames.ora 的配置有问题  D:\app\Administrator\product\11.2.0\dbho ...

  3. oracle的后缀名,oracle表空间名字的后缀 :.ora和.dbf有什么不同?

    满意答案 清风淡0512 2017.09.14 采纳率:40%    等级:9 已帮助:567人 没什么区别,主要是好分辨用途,ORACLE8i之前数据文件的后缀名为.ora,之后为.dbf;无论.o ...

  4. ORACLE网络连接配置与文件:listener.ora、sqlnet.ora、tnsnames.ora

    [转自]http://www.chinaunix.net/jh/19/594396.html 最近看到好多人说到tns或者数据库不能登录等问题,就索性总结了下面的东东. 首先来说oracle的网络结构 ...

  5. oracle10客户端tnsname,连接Oracle RAC 的tnsname.ora设置

    由于Oracle数据库通常需要在不同地方被访问,所以Oracle开发人员必须搞清楚数据库性能如何被网络通讯所影响.由Oracle提供的TNS(Transparent Network Substrate ...

  6. Oracle的tnsnames.ora配置(PLSQL Developer)

    首先打开tnsnames.ora的存放目录,一般为D:\app\Administrator\product\11.2.0\client_1\network\admin,就看安装具体位置了. 步骤阅读 ...

  7. oracle10g无监听配置文件,关于监听配置文件listener.ora的问题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这是我的数据库电脑的listener.ora文件的内容 # listener.ora Network Configuration File: E:\Ora ...

  8. ORACLE ORA错误码大全 (备忘)

    ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出 ...

  9. oracle ora 3136,ALERT日志中常见监听错误:ORA-3136错误的排查

    [现象]*********************************************************************** Fatal NI connect error 1 ...

  10. listener.ora、sqlnet.ora、tnsnames.ora的作用

    oracle 网络配置 三个配置文件 listener.ora.sqlnet.ora.tnsnames.ora ,都是放在$ORACLE_HOME\network\admin目录下. 1. sqlne ...

最新文章

  1. Prometheus 对比 Zabbix
  2. WinForm开发框架资料积累
  3. 弃用官方网站!Python 将所有 Bug 迁移到 GitHub 中
  4. 最小二乘法C#实现,简单代码
  5. VUE:解决判断网页端与手机端情况下,横竖屏无法判断的问题
  6. javascript教程_JavaScript教程
  7. 不想业务被中断?快来解锁华为云RDS for MySQL新特性
  8. HTML5导航栏菜单的设计与实现
  9. 四级英语图表作文真题计算机,四级作文辅导二:图表类作文(范文、模板、必备句型。对了,还有作业)...
  10. mysql Table 'performance_schema.session_variables' doesn't exist
  11. asp.net 网页做一个浮动层_网页的布局与定位看完这篇就够了
  12. LM2903器件使用说明
  13. win10用win7的图片查看器
  14. 谈一谈|《黑神话:悟空》实机演示观后感
  15. 计算机科学与工程本科,加州大学洛杉矶分校计算机科学与工程本科申请条件.pdf...
  16. 【学术相关】过来人对研究生阶段的学习建议
  17. 天才小毒妃 第917章 深藏不露大财主
  18. APP开发中这十个细节能直接影响到用户体验,那么如何提升用户体验?
  19. Python读取两个txt文件内容,重新写到新的txt文件
  20. 计算机上做报纸模板,word中怎么制作报纸排版模板

热门文章

  1. AI实战:人脸识别实战项目(源码共享)
  2. springboot + shiro 验证码与记住登录
  3. 教你在Nodejs中如何获取当前函数被调用的行数及文件名
  4. WCF 设计和实现服务协定(01)
  5. 禁止蒙层底部页面跟随滚动 1
  6. java-结合c3p0封装的db 事务 类
  7. canvas做一个简单气泡图
  8. Java中ArrayList remove会遇到的坑
  9. docker启动远程管理接口
  10. Swift语言中class、struct、enum的联系与区别