数据库shutdown之后无法启动的问题 (46天)
时间:2022-05-04
本文章向大家介绍数据库shutdown之后无法启动的问题 (46天),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
最近在已有数据库服务器上又新建了4个数据库实例,目前一共有9个数据库实例。环境搭好以后做检查的时候。根据反馈,有个job报如下的错误。
Failed to create connection for url=jdbc:oracle:thin:@xxxxx and dbUser=xxxxxx
Nested Exception/Error:
java.sql.SQLRecoverableException: IO Error: Got minus one from a read call
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:419)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:536)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:228)
这个问题,根据以往的经验就是process的值太低了。需要调大一些。查看数据库process的值,一看还真是,当时只设置了150,这个job平均要占用100多个session,其他的一些环境加进来,肯定不够。
因为调高process需要重启数据库,和他们协调了下,就开始操作了。
我先把process调到3000,session也相应调整,然后保存在spfile里面。
alter system set processes=3000 scope=spfile;
然后就按照计划开始停库,一个一个重启。
前面的3个很快就做完了,然后到最后一个,还是小心的按照nomount,mount的一步一步来。结果还是出问题了。
SQL>
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup nomount
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
SQL> exit
根据错误信息,是空间问题。但是查看的时候,空间还多着呢。
/dev/vx/dsk/vgusgsPT301/lvol6
20G 8.5G 11G 44% /opt/app/oracle/db1
/dev/vx/dsk/vgusgsPT401/lvol6
20G 8.5G 11G 44% /opt/app/oracle/db2
/dev/vx/dsk/vgusgsPT501/lvol6
20G 11G 8.7G 56% /opt/app/oracle/db3
/dev/vx/dsk/vgusgsPT601/lvol6
20G 11G 8.7G 56% /opt/app/oracle/db4
用top查看空余内存,也还有不少。
Tasks: 1000 total, 1 running, 999 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.3%us, 0.1%sy, 0.0%ni, 99.5%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 189675188k total, 183821096k used, 5854092k free, 678412k buffers
Swap: 376009348k total, 1892592k used, 374116756k free, 176567228k cached
开始排查是否是kernel引起的。
> /sbin/sysctl -a | grep sem
error: permission denied on key 'kernel.cad_pid'
error: permission denied on key 'kernel.cap-bound'
kernel.sem = 256 32000 100 500
查看sysctl.conf
> less /etc/sysctl.conf
# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and
# sysctl.conf(5) for more details.
# Controls IP packet forwarding
net.ipv4.ip_forward = 0
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1
# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0
# Controls whether core dumps will append the PID to the core filename
# Useful for debugging multi-threaded applications
kernel.core_uses_pid = 1
# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1
# Controls the maximum size of a message, in bytes
kernel.msgmnb = 65536
# Controls the default maxmimum size of a mesage queue
kernel.msgmax = 65536
# Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736
# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296
### DBA REQUEST FOR ORACLE11 ###
kernel.shmmni = 4096
kernel.sem = 256 32000 100 500
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_max = 4194394
net.core.wmem_max = 1048576
net.core.rmem_default = 262144
net.core.wmem_default = 262144
fs.aio-max-nr = 3145728
但是查看当前的进程数,也才不到10000,离32000还远呢。 查看了一下其他的库的process情况,终于明白了。 原有的5台,有4台process都是5000,一台是3000,一共就是23000 新加的4台,process都是3000,一共就是12000 加起来还真是超了。也难怪新加的第3个数据库实例没有问题,23000+9000=32000,刚好占完了,一点都没剩下。 和部门协调了一下,原有的5台process平时测试用不了那么多,3000多process已经足够了。 就调整了一下,再次重启就没有问题了。
> sqlplus / as sysdba
SQL*Plus: Release 11.2.0.2.0 Production on Wed Apr 16 15:05:37 2014
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup nomount
ORACLE instance started.
Total System Global Area 1.1742E+10 bytes
Fixed Size 2251264 bytes
Variable Size 5234492928 bytes
Database Buffers 6492782592 bytes
Redo Buffers 12193792 bytes
- iOS崩溃堆栈符号化,定位问题分分钟搞定!
- Duang~ Android堆栈慘遭毁容?精神哥揭露毁容真相!
- Java学习笔记第一篇:坦克大战游戏
- 腾讯Bugly Unity3D Plugin使用指南
- 远丰集团旗下CMS疑有官方后门
- 前端黑魔法之远程控制地址栏
- 信息收集利器:ZoomEye
- go sync.Mutex 设计思想与演化过程 --转
- 漏洞预警 | Ubuntu 16.04版本存在本地提权漏洞(附EXP)
- 通过“震网三代”和Siemens PLC 0day漏洞,实现对工控系统的入侵实验
- 安卓端渗透工具DVHMA:自带漏洞的混合模式APP
- 小萝莉说Crash(二): Unrecognized selector xxx 之 ForwardInvocation
- 5分钟教程:如何通过UART获得root权限
- 源码级剖析PHP 7.2.x GD拒绝服务漏洞
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Flask从零到一 1 | 虚拟环境和第一个flask程序
- 按照元素指定条件筛选结构体数组
- 多目标优化按支配关系分层实现
- CentOS 7 解决丢失 nginx.pid
- $(function(){})和$(document).ready(function(){})
- javascript中的setTimeout() 方法和clearInterval() 方法和setInterval() 方法
- matlab生成数字1-n的列向量
- JavaScript中的匿名函数及函数的闭包
- ios下Safari无法触发click事件的处理
- 禁止网页右键、复制、另存为、查看源文件等功能
- ajax知识点
- 前端特效常用代码
- VBA编写Ribbon Custom UI编辑器02——编码转换
- web开发中常用的算法和函数
- nodejs创建线程问题