今天,一地市技术反馈,他们数据库无论做什么操作都很慢,让帮忙看下怎么回事。
环境:
服务器:windows server 2008
数据库:oracle 11.2.0.4 单实例
登录数据库服务器,查看资源使用情况,IO比较高,CPU及内存正常:
查看数据库等待事件,wait for a undo record比较突出:
查看数据库回滚进程状态,发现有大量进程处于recovering状态:
select * from v$fast_start_servers where state<>'IDLE';
查看数据库事务回滚量,发现要回滚的事务量比较大:
SQL> select usn, state, undoblockstotal "Total", undoblocksdone "Done", undoblockstotal-undoblocksdone "ToDo",
decode(cputime,0,'unknown',sysdate+(((undoblockstotal-undoblocksdone) / (undoblocksdone / cputime)) / 86400)) "Estimated time to complete"
from v$fast_start_transactions;
进一步与地市技术确认近来数据库是否发生重大操作:
经确认是数据库服务器断电导致服务器重启后,数据库大事务回滚,明显的等待事件是:wait for a undo record,
需要等待数据库完成回滚,wait for a undo record等待事件消失,数据库恢复正常: