日期:2014-05-16  浏览次数:21883 次

Oracle进程 CPU占用率 100% 居高不下 时常宕机,重启后依然如此

背景:
  昨天中午,我们公司楼层由于电路原因,突然断电。
  我们开发小组的数据库开发环境(Linux)也遭遇宕机。
  重启Linux、重启Oracle后。其CPU占有率一直居高不下98~100%

问题发现:
  1、同事们在开发库中经常使用PL/SQL连接数据库,从断电重启机器以后,经常登录不上环境。
  2、登录linux使用TOP命令,查看其中有个进程cpu占有率特别高,
  3、我们已经停止连接数据库环境cpu占有率依然是98~100%浮动居高不下。



   
------最佳解决方案--------------------
上面的错误,是undo表空间设置太小,或者undo保留时间太长
------其他解决方案--------------------
进程占用CPU高的进行信息贴出来看看

PS -AUX

oracle 日志看看,是否ORACLE引起的

LINUX 系统日志看看是否有什么错误
------其他解决方案--------------------
楼上这位兄弟好!以下是alert_sid.log日志
Wed Jul  4 21:29:50 2012   
 delete from "NGVES3"."OPERATION_ALLEGE_NUM_MV"
Wed Jul  4 21:29:50 2012
Errors in file /usr/local/oracle/admin/techdb/bdump/techdb_j003_4517.trc:
ORA-12012: error on auto execute of job 444
ORA-12008: error in materialized view refresh path
ORA-01555: snapshot too old: rollback segment number 3 with name "_SYSSMU3$" too small
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2255
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2461
ORA-06512: at "SYS.DBMS_IREFRESH", line 683
ORA-06512: at "SYS.DBMS_REFRESH", line 195
ORA-06512: at line 1
Wed Jul  4 21:30:03 2012

------其他解决方案--------------------
楼上的兄弟,能不能给出具体操作步骤和操作语句啊!
有什么问题,你尽管问就好了!
也希望给其他朋友一些查询的帮助!
多谢,多谢!
------其他解决方案--------------------
ORA-12012: error on auto execute of job 444

1、查看 job号为444所对应的过程。
2、到v$session_wait 表里看看系统等待信息
3、把等待对应的session kill掉。

看结果
------其他解决方案--------------------
谢谢楼上的兄弟,目前原因已找到
1、因为创建了物化视图的缘故。
2、其中有定时每1分钟执行一次,将查询数据插入到另一个表中。
3、在昨天中午突然断电,造成oracle数据库服务器直接宕掉。
4、重启之后undo tablspace空间太小,cpu一直100% 

删除该物化视图后恢复cpu正常值

请各位有相关经验的或相同经历的DBA们指出专业的原因分析!

-----------------------------
Wed Jul 4 21:29:50 2012   
 delete from "NGVES3"."OPERATION_ALLEGE_NUM_MV"
Wed Jul 4 21:29:50 2012
Errors in file /usr/local/oracle/admin/techdb/bdump/techdb_j003_4517.trc:
ORA-12012: error on auto execute of job 444
ORA-12008: error in materialized view refresh path
ORA-01555: snapshot too old: rollback segment number 3 with name "_SYSSMU3$" too small
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2255
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2461
ORA-06512: at "SYS.DBMS_IREFRESH", line 683
ORA-06512: at "SYS.DBMS_REFRESH", line 195
ORA-06512: at line 1
Wed Jul 4 21:30:03 2012

------其他解决方案--------------------
4、重启之后undo tablspace空间太小,cpu一直100%  

重启后undo表空间原则上不会自动变小
cpu 100%可能是在做回滚,但是因为你的停掉导致undo异常回滚不能通过,一直尝试
------其他解决方案--------------------