一般我们直接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条评论
shutdown immediate; 自动会写检查点和switch logfile ,楼主多此一举了。
这个我知道,问题是你在shutdown的时候能控制checkpoint和switch logfile吗?
如果我先做了这些操作,在shutdown的时候就能较快的checkpoint和switch logfile,从而保证我shutdown的安全。
在你的博客上看了很多你的文章,写的真不错,虽然很多都是oracle的具体实战案例,需要很深的oracle知识,但真的是不错的。不知如何和你沟通,学习关于oracle的知识?
re chris.dong: 可通过邮件:jimmyhe1981[at]gmail.com,或者twitter:@oracleblog