近期拿到大数据量的测试数据经过实验发现,正常情况下,大家只要shutdown immediate就可以停下数据库,但是对于生产系统,跑的数据量又比较大,redolog又有几百兆,此时shutdown数据库时一定要倍加小心。 


  下面,根据此种情况介绍一下解决方法:  

  停listener监听

lsnrctl stop LISTENER_NAME 停监听 

lsnrctl status LISTENER_NAME 确认监听是否正常停止 

  过大概20分钟后查看ps -ef |grep LOCAL=NO 检查是否还有进程连在数据库上没有释放。 如果没有释放,执行kill -9 `ps -ef|grep LOCAL=NO |awk ‘{print $2}’` 

 

  停instance实例、job和aq 

alter system set job_queue_processes=0 scope=memory; 

alter system set aq_tm_processes=0 scope=memory; 

alter system switch logfile;这个地方查过资料需要执行三次才可以。 

alter system checkpoint;这个地方查过资料需要执行三次才可以。  

shutdown immediate;正常关闭数据库。 


   注意点:若数据库在1小时内还无法正常关闭,执行shutdown abort;再startup; startup后尝试再次正常关闭数据库shutdown immediate。若数据库在1小时内还是不能正常关闭,算本次重启失败,执行shutdown abort;再startup;将数据库启动,不再进行其他的操作) 


    最后,检查数据库进程是否还存在 ps -ef |grep -i ora