一个oracle调优好玩经历。
“修改oracle archive mode需要注意的地方”
当时没有记录下具体的东西。现在写一下,如果有人遇到这样的问题,希望会对别人有所帮助
五一前出差去客户那里。客户的DBA和我说他们的门户网站的数据库服务器每天到晚上的时候都死翘翘。不知是什么原因。我问他,你一般是如何解决。现在没办法,也找人看过(后来事实证明原来的人是个“棒槌”),没找到什么地方的原因。问题很严重,他很生气。所以只能每天重启。然后又开始给我说了一堆他数据库的情况(后来发现被误导了)
系统环境:win2k+oracle 92
工作开始:1、查看alert_SID.log 日志。没发现问题。2、为数据库做statspace,峰值大约在早10点和下午3点左右。做了两个statspace。看,有些参数设置的有些问题。SGA过小。但是不会导致oracle数据库down机啊!即使oracle性能有问题,也应该是系统繁忙的时候宕机,不应该是晚上。所以又问,有没有做过什么操作。说没有。突然想到主机是windows系统。oracle事件会写到windows的事件管理器中。打开事件管理器。发现archive有问题。
sqlplus /nolog
SQL> conn /as sysdba
SQL> archive log list
Database log mode Archive Mode
Automatic archival Disabled
Archive destination e:archive
Oldest online log sequence 92
Next log sequence to archive 94
Current log sequence 92
哈哈,问题出现了。数据库为归档模式,但是自动归档没有打开。
show parameter log_archive_max_processes
log_archive_max_processes integer 2
SQL> select * from v$logfile;
GROUP# STATUS TYPE
---------- ------- -------
MEMBER
-------------------------------------
3 ONLINE
D:ORACLEORADATAORA92IREDO03.LOG
2 ONLINE
D:ORACLEORADATAORA92IREDO02.LOG
1 ONLINE
D:ORACLEORADATAORA92IREDO01.LOG
问题显而易见了。使用了归档模式,但没有做自动归档,所以一旦两个redo log 写满以后,日志文件没有自动归档日志文件去,就等待中了。
SQL> alter system archvie log start
SQL> alter system set log_archive_start=true scope=spfile;
问题解决了。
后来又问DBA,他想起来自己修改过归档模式。但是自动归档这个事他不清楚。所以就出现了这样的问题。
其实是个很简单的问题。只是开始被误导,以为事数据库性能问题。耽误了很多时间。
结论:1、在windows系统中,查看数据库日志,别忘了windows自己的事件管理器。
2、修改archive模式后,注意修改自动归档的设置。
3、如果DBA水平一般,不要相信他太多的话,不如自己找问题快!哈哈。这点是我自己瞎说的