近期拿到大数据量的测试数据经过实验发现,正常情况下,大家只要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