oracle数据库关不掉,如何快速的关闭Oracle数据库

有时候在关闭数据库的时候,总是不能很顺畅的关闭它,因为在我们正常发起shutdown immediate命令的时候,PMON进程会把一些进程的资源进行释放,往往在这个过程中会释放的很慢。又或者是你有一些JOB还在运行中。当然还有一些BUG。导致等很久都不能关闭掉数据库。在这个时候。我们通常会使用先杀LOCAL=NO进程,然后在关闭的方式。最近看了一篇文档叫”What Is The Fastest Way To Cleanly Shutdown An Oracle Database? [ID 386408.1]“,受了点启发。其实直接shutdown abort是最快的关闭数据库的方式。但是在重新启动之后,数据库一定会处于一个不一致的状态。在下一次启动的时候需要恢复。如果是大事务没有中断掉,再次启动的话,可能要耗费非常多的时间。这篇文章的方法也是shutdown abort。只是有一些小技巧。

1.确定干净的关闭数据库需要多少的回滚量。

select sum(used_ublk)*(block size of the undo/rollback segment tablespace) from v$transcation;

其实这里是有经验的,最好这个回滚量不要太大,否则重新启动之后,要回滚很长时间的.

2.Shutdown abort数据库发起这个命令之后。将快速终止所有进程(客户端和后台进程)。不会产生任何回滚操作。

3.Startup Restrict

做这一步是为了让数据库回滚,SMON做回滚的时候,最好不要让其他Session连进来,以免其他Session执行同样的SQL报错。

4.观察SMON回滚的进度

select sum(distinct(ktuxesiz)) from x$ktuxe where ktuxecfl = 'DEAD';

5.当回滚完成之后发起Shutdown immediate

再次发起Shutdown immediate.这次会非常快就结束了.然后我们再Startup即可.

这样我们就完成了快速干净的关闭掉一个数据库.当然在运行Shutdown Abort的时候,也是有一定风险的,这个风险的几率极低.我曾经在一套8.1.7的数据库上运行shurdown abort后出现ORA-00600的错误.所以我们要执行该命令之前要关注一下I/O,如果I/O不是很大,我觉得是没问题的。再说了既然MOS有这样的文档,在指定的版本上(9.0.1.0 to 11.2.0.2)。一般情况下也不会出太大问题的。

分享到:

更多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值