今天天气不错....可昨天的问题又出现了. 被告知运行一procedure 超级慢。
我简单看了下,排除SQL语句的问题。确定是DB问题。由于这台机器是恢复测试用的。很少用来给开发人员用。
因此,不确定是不是数据库问题。
进而查找原因。
数据库Oracle 8.1.7.0.0 -- 不要惊讶,还有的值得学学的东西。
Windows Server 2003
测试环境。
症状:执行update 1000条 非常慢,几乎不成功。然后执行select 也非常慢。
最终检查问题时对一些动态性能表的查询也非常慢。
一时变的对问题无从下手。
没辙,推理,遐想,猜一猜。
每每进行update 时出的问题。而引起整个DB貌似都处于瘫痪的状态。
与undo 和 redo 有关。根据经验,如果归档不能进行时,redo log 无法切换,DB会一直处于等待归档的状态。
与改现象比较类似。
1.查看redo log ,control file , datafile 状态。
2.切换redo log时发现问题,alter system switch logfile ;一直处于停滞状态。
3.查看归档模式 --- 归档模式,手动归档。
解析:
Database log mode Archive Mode
Automatic archival Disabled
意味着归档,并且需要手动归档。如果没有手动归档。则DB会一直不会切换到下一组redo log .
一直等待归档完毕后再进行其他的update 操作。
不然,oracle如何去记录这短时间内改动。所以.oracle 能做的只能是....等!
等我去改完后,再去执行..2秒搞定。喝茶去~~