shutdown immediate
在这种模式下关闭数据库:
不允许新的连接,不允许启动新的事务。
没有提交的事务将会被回滚(如果有长事务的话,将会等待很长时间)
隐式地回滚活动的事务,断开所有链接的用户。
为了防止意外,在关闭数据库前,保证所有的连接断开,所有的事务结束。
可以用下列语句检查是否有长事务,如果有,先等待事务结束或者杀掉进程并回滚事务。
select sum(used_ublk) from v$transaction;
下面是步骤:当然最先的步骤是断开listener。
lsnrctl stop
然后执行下列命令:
1. alter system switch logfile
2. alter system flush shared_pool
3. alter system flush buffer_cache
4. shutdown immediate.
5. kill all sessions
曾经碰见过俩个例子关闭数据库时等待很长时间:
1. 在alert.log中有很多以s00开头的进程,后来查看原来是em control的进程。当停掉em agent后,数据库很快关闭了。
2. 在alert.log中有SHUTDOWN: waiting for active calls to complete信息。metalink上给出的解释是数据库在等待
pmon来清理进程,但是pmon不能清理它们。
解决方法是:
检查任何连接的local=no的进程
$ ps -eaf | grep LOCAL
并手工杀掉:
# Kill -9
ps -ef|grep LOCAL|awk '{print $9}'|xargs kill -9
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25105315/viewspace-710336/
,如需转载,请注明出处,否则将追究法律责任。