停数据库的技巧

一般我们直接shutdown immediate就可以停下数据库,但是对于生产系统,跑的数据量又比较大,redolog又有几百兆,这个时候我们shutdown数据库的时候一定要谨慎。

1.停数据库
1.1、停listener
1.1.1、lsnrctl stop LISTENER_NAME 停侦听
1.1.2、lsnrctl status LISTENER_NAME 确认侦听是否正常停止
1.1.3、约过半小时ps -ef |grep LOCAL=NO 检查是否还有进程连在数据库上没有释放。
如果没有释放,执行kill -9 ps -ef|grep LOCAL=NO |awk '{print $2}'
1.1.4、检查数据库上的session是否还有僵死进程。

1.2、停instance
1.2.1 停job和aq
alter system set job_queue_processes=0 scope=memory;
alter system set aq_tm_processes=0 scope=memory;
1.2.2、alter system switch logfile;执行三次。
1.2.3、alter system checkpoint;执行三次。
1.2.4、shutdown immediate;正常关闭数据库。
(若数据库在1小时内还无法正常关闭,执行shutdown abort;再startup;
startup后尝试再次正常关闭数据库shutdown immediate;
如在1小时内还是不能正常关闭,算本次重启失败,执行shutdown abort;再startup;将数据库启动,不再进行其他的操作,联系oracle)
1.1.5、检查数据库进程是否还存在ps -ef |grep -i ora

相关文章

4条评论

  1. 这个我知道,问题是你在shutdown的时候能控制checkpoint和switch logfile吗?
    如果我先做了这些操作,在shutdown的时候就能较快的checkpoint和switch logfile,从而保证我shutdown的安全。

  2. 在你的博客上看了很多你的文章,写的真不错,虽然很多都是oracle的具体实战案例,需要很深的oracle知识,但真的是不错的。不知如何和你沟通,学习关于oracle的知识?

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据