一、介绍
由于dba离职,所以公司所有的oracle数据库服务器我先兼职管理,今天登陆某省的数据库,发现ssh登陆30秒左右才进入,之后查看了一下负载与内存,具体情况如下图:
负载:
没有见过这样高的负载,以前见过最多的就是负责1000多,java的问题
内存:
连交换内存都使用完了,物理内存就剩下71m了,太危险了
top:
发现了6个僵尸进程与大量的perl进行
现在查看一下僵尸进程
发现都是[sh]
<defunct>进程,以前遇到过这样的问题,都是由于cron里启动脚本的时候,没有加入错误输入到空设备里导致,解决方法是在cron
里运行脚本后,添加>>/dev/null 2>&1,查看一下cron,查看是否与我的想法一致
果然是没有错误的输出,添加完>>/dev/null 2>&1在重启cron服务器就解决了
在查看perl进程
发现2726个进程,占用了大量的cpu与内存
去metalink里查看,发现这个问题是oem的故障导致,oracle给的问题的描述与解决方法为:
- Server Has 100% Of Cpu Because Of Dbresp.pl [ID 764140.1]
- ________________________________________
- Modified:07-Feb-2012 Type:PROBLEM Status:MODERATED Priority:3
- Comments (0)
- To Bottom
- In this Document
- Symptoms
- Cause
- Solution
- References
- ________________________________________
- This document is being delivered to you via Oracle Support's Rapid Visibility (RaV) process and therefore has not been subject to an independent technical review.
- Applies to:
- Enterprise Manager Base Platform - Version: 10.2.0.1 and later [Release: 10.2 and later ]
- Information in this document applies to any platform.
- ***Checked for relevance on 07-Feb-2012***
- Symptoms
- Server has 100% of CPU because of dbresp.pl . There are more than 50 process from this script
- emagent.trc shows:
- 2009-01-21 10:19:50 Thread-4099931040 WARN engine: Missing Properties : [limitSwitch]
- 2009-01-21 10:19:50 Thread-4099931040 ERROR engine: [oracle_database,orcl, alertLog] : nmeegd_GetMetricData failed : Missing Properties : [limitSwitch]
- 2009-01-22 06:54:33 Thread-4105165728 ERROR fetchlets.oslinetok: Metric execution timed out in 600 seconds
- 2009-01-22 06:54:33 Thread-4105165728 ERROR command: failed to kill process 4793 running perl: ( errno = 3 : No such process)
- 2009-01-22 06:54:33 Thread-4105165728 ERROR engine: [oracle_database,orlc, Response] : nmeegd_GetMetricData failed : Metric execution timed out in 600 seconds
- Cause
- The Response metric is making a timed out then the Agent starts other process to take the Response metric. The process to kill the PID taking the Response metric is failing increasing the process running dbresp.pl
- Before the Response metric starts to do the timed out there is other error:
- 2009-01-21 10:19:50 Thread-4099931040 WARN engine: Missing Properties : [limitSwitch]
- 2009-01-21 10:19:50 Thread-4099931040 ERROR engine: [oracle_database,orcl,alertLog] :
- nmeegd_GetMetricData failed : Missing Properties : [limitSwitch]
- Solution
- 1. Stop DBConsole
- emctl stop dbconsole
- 2. Kill any running process.
- ps -ef | grep /opt/app/oracle/ < hostname > _ < sid >
- Kill any returned process.
- 3. Follow fix
- Note.361612.1 Ext/Mod Problem Performance Agent High CPU Consumption Gen
- 4. Start DB Console
- emctl start dbconsole
二、根据这个解决方法,我先关闭oem,关闭之前我先介绍一下我的系统与数据库的环境
系统版本为
- oracleserver:~ # cat /etc/SuSE
- SuSE-release SuSEconfig/
- oracleserver:~ # cat /etc/SuSE-release
- SUSE Linux Enterprise Server 10 (x86_64)
- VERSION = 10
- PATCHLEVEL = 3
数据库版本为
- SQL > select * from v$version;
- BANNER
- ----------------------------------------------------------------
- Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bi
- PL/SQL Release 10.2.0.1.0 - Production
- CORE 10.2.0.1.0 Production
- TNS for Linux: Version 10.2.0.1.0 - Production
- NLSRTL Version 10.2.0.1.0 - Production
1、先登录oracle用户,然后关闭oem
- oracleserver:~ # su - oracle
- oracle@oracleserver:~ > id
- uid = 1000 (oracle) gid = 1000 (oinstall) groups = 1000 (oinstall),1001(dba)
- oracle@oracleserver:~ > emctl stop dbconsole
- TZ set to Asia/Shanghai
- Oracle Enterprise Manager 10g Database Control Release 10.2.0.1.0
- Copyright (c) 1996, 2005 Oracle Corporation. All rights reserved.
- http://oracleserver.site:1158/em/console/aboutApplication
- Stopping Oracle Enterprise Manager 10g Database Control ...
- ... Stopped.
这里需要注意的是,关闭oem的时候,刚开始什么提示都没有,查看系统的日志与oracle的报警日志也都没有任何的提示,但大家还是需要耐心
的等待,我这步操作在30分钟的时候才完成了,当你运行完命令的时候,如果发现没有提示,那我建议还是多等一会比较好,不用发现没有提示就ctrl+c终
止这个命令。
2、杀掉perl进程
oem关闭了,我们在查看一下内存与perl进程
perl进程
还是2726个,没有变化
内存
55m空闲
下面我们杀掉perl进程,使用 kill -9 $(ps -ef|grep perl|grep -v grep|awk '{print $2}')
然后在查看perl进程
现在perl进程没有了
查看一下内存
现在内存已经有6673m了,恢复正常
查看一下负载
现在负载变为正常了,负载这1分钟的为3.15,5分钟的为242.76,15分钟的为1236.57,
虽然负载为3,但我的服务器内为16核,所有负载为3没有问题
服务器cpu核数
现在问题解决了,如果想开启oem监控oracle的话,在oracle用户下使用emctl start dbconsole就可以。
提示:很多数据库的故障,在解决的时候,我建议大家还是先确定问题是如何产生的,找到解决问题的思路与方法,如果有metalink账号的话,
最好登陆里面搜索问题产生的原因与解决方法,不太建议在百度或者谷歌里搜索问题解决方法,因为很多问题在百度或者谷歌里搜索的答案不一定准确或者适合你,
如果你的生产库出现了问题,你按照百度或者故障里的解决方法解决,同时你也不明白问题的产生原因与解决的思路、办法的话,那么你只能拼运气来解决问题,解
决了还好,皆大欢喜,如果没有解决甚至产生更坏的影响的话,估计你离走人不远了。
本文出自 “吟—技术交流 ” 博客,请务必保留此出处http://dl528888.blog.51cto.com/2382721/911535
发表评论
-
dblink 阀值
2013-09-06 04:53 475调整方法: alter system set open_l ... -
查看 运行中的存储过程
2013-08-29 23:45 7681、查看ORACLE中正在运 ... -
oracle seconds to hh:mm:ss format
2013-03-13 02:26 953SELECT TO_CHAR(TRUNC(x/36 ... -
listener.ora、sqlnet.ora、tnsnames.ora
2013-03-06 04:57 729oracle网络配置 三个配置文件 listener.or ... -
oracle ratio_to_report
2013-02-20 03:20 894Ratio_to_report函数 Syntax ... -
Oracle 获取本周、本月、本季、本年的第一天和最后一天
2013-01-15 05:08 2665--取得当天0时0分0秒 select TRUNC ... -
package UTL_MAIL - 04042
2012-12-14 03:53 579Connect as SYS as sysdba: ... -
oracle常用的时间函数
2012-12-14 03:09 818SELECT SYSDATE FROM DUAL 取当前系 ... -
oracle ash awr addm 三把利剑 ---转贴
2012-10-19 04:53 776原文出处:http://space.itp ... -
expdp/impdp 进行数据库迁移例子
2012-09-21 01:59 834把一个数据库上的一个用户schema迁移到另外一个数据库上 ... -
数据库缓冲区命中率
2012-09-19 21:55 706数据库缓冲区命中率 select name,value ... -
grant all object to another user
2012-09-07 04:42 738If you really want to grant all ... -
oracle 权限管理
2012-09-07 04:41 5961.查看所有用户: select * from db ... -
impdp 在同一个数据库中把一个schema中所有的对象复制到另一个schema中
2012-09-07 02:03 1165在同一个数据库中把一个schema中所有的对象复制到另一个sc ... -
11g MEMORY_TARGET 参数对SGA 和PGA的影响
2012-09-06 04:32 82311g 中新增 MEMORY_MAX_TARGET 参数 ... -
每小时生成csv文件,并ftp到远端服务器
2012-08-17 03:31 2407CREATE OR REPLACE procedu ... -
全面学习DBMS包之DBMS_SQL (转贴)
2012-08-16 22:32 674在PL/SQL编程当中,经常 ... -
Oracle – Select sysdate +/- time from dual
2012-08-15 22:39 883如果想+,-系统时间: Sysdate: S ... -
ZT 查看Oracle数据库表空间大小(空闲、已使用),是否要增加表空间的数据文件
2012-08-08 23:15 841--1查看表空间已经使用的百分比 ... -
Oracle使用虚拟表dual一次插入多条记录
2013-03-13 02:29 1034BEGIN generate_tmpsh ...
相关推荐
windowsxp下Oracle10g占用内存比较严重,通过合理设置sga降低需求,一般学习工作是够用了的。
解决Oracle_CPU高度消耗(100%)的数据库问题
本文介绍了Oracle进程导致CPU 100%的具体解决方法。
Oracle 企业管理器(OEM 2.1)使用指南 内容
oracle服务解析和解决启动Oracle9i的OEM或OMS的常见问题
NULL 博文链接:https://dreamerjin.iteye.com/blog/1168077
Oracle 13c OEM 软件安装、添加监控主机、部署agent、添加数据库目标
Oracle 19C+13.4EMCC部署和配置 1 一、安装oracle19C数据库 1 1、 安装oracle19C软件 1 2、 创建PDB 1 3、 设置随机启动 1 4、 修改logfile大小 2 二、利用EM模板创建pdb 3 1. 上传dbca模板并设置解压 3 2. DBCA建库...
可能造成CPU使用率高的情况有:大量排序、大量SQL解析、全表扫描、Oracle Bug等。因此希望找到占用CPU较高的进程ID(UNIX或LINUX)或线程ID(Windows)来找到对应的SQL语句,以分析问题的原因。 三、处理步骤 ...
OEM与常见故障(oracle)
oracle10g数据库教程之OEM的配置
Oracle Enterprise Manager 完整文档
part2 本工具提取自 oracle 10gR2 Java 版的 OEM Console 解压后,看使用说明,很简单!
centos6静默安装oracle,centos7静默安装oracle,oracle11g,linux安装oracle,一键自动安装oracle脚本
oracle oem 12c 中文版
oracleCPU占用率高时的问题定位.pdf
解决了Oracle安装过程中IP地址动态变化,无法启动OEM的问题。同时也能够处理由于机房安装Oracle时以“传”的方式安装,造成OEM无法启动的问题。
Oracle server process进程内存消耗分析
Oracle常见问题的解决方法 Oracle 常见问题
Oracle_Trigger_及_Oracle_常见问题解决方法 Oracle_Trigger_及_Oracle_常见问题解决方法