故障现象:
XX网数据库使用shutdown immediate不能关闭,日志中不断输出以下内容:
Shutting down instance: further logons disabled
Shutting down instance (immediate)
License high water mark = 215
All dispatchers and shared servers shutdown
Fri Aug 12 21:52:34 2005
ALTER DATABASE CLOSE NORMAL
Fri Aug 12 21:52:38 2005
Thread 1 advanced to log sequence 69953
Current log# 2 seq# 69953 mem# 0: /ora_sys/cqgdb/redo02.log
Thread 1 advanced to log sequence 69954
Current log# 4 seq# 69954 mem# 0: /ora_sys/cqgdb/redo04.log
... ... ..
Current log# 3 seq# 69966 mem# 0: /ora_sys/cqgdb/redo03.log
Thread 1 advanced to log sequence 69967
Current log# 1 seq# 69967 mem# 0: /ora_sys/cqgdb/redo01.log
解决办法:
Oracle工程师首先怀疑是临时表空间空间不足导致,经检查临时表空间没有空间不足的情况,仔细观察日志发现重做日志文件不断切换,分析应该是有较多的事务没有完成提交或者有较多没有提交的事务完成回滚。现在面临的问题是我们没有很多时间去等待所有的事务去完成回滚或提交。解决问题的思路就是如何尽快结束这些事务的回滚或提交。
1) 查看spfile文件中是否有fast_start_parallel_rollback参数的设置,检查结果G网数据库没有设置该参数。如果没有显式设置,则该参数的默认值为low。修改该参数值为false
2) 将数据库启动到nomount状态:startup nomount
3) 修改改参数值:alter system set fast_start_parallel_rollback = FALSE scope=spfile
4) shutdown immediate关闭数据库
5) startup启动
6) 查看该参数是否生效:show parameter fast_start_parallel_rollback
7) 等待一段时间
8) shutdown immediate数据库可以关闭
分析:FAST_START_PARALLEL_ROLLBACK是用来控制事务并行回滚最大进程数的参数。该参数有三个可设值,low,high,false。当设置为false时并行回滚被禁止,由于禁止了并行回滚,在数据库关闭时,需要回滚的事务将被取消。