admin管理员组

文章数量:1608635

今日一哥们说数据库无法shutdown,一直挂着不动。我问是正常关闭么,答曰shutdown immediate。他问有无应急的办法让其关闭后重启,我说你就等等吧,immediate方式关闭的话很快能正常shutdown的。(许久后)我问down下来了么答曰没。不对劲呀!

[@more@]

telnet上去一看发觉alert日志中有如下信息:

Fri Jun 15 13:48:26 2007

Shutting down instance: further logons disabled

Fri Jun 15 13:49:06 2007

Shutting down instance (immediate)

License high water mark = 990

Fri Jun 15 13:54:14 2007

Active call for process 16590 user 'oracle' program (TNS V1-V3)'

SHUTDOWN: waiting for active calls to complete.

Fri Jun 15 13:55:42 2007

用top查看了一下系统进程,如下:

Memory: 926732K (87056K) real, 1710592K (197156K) virtual, 331688K free Page# 1/11

CPU TTY PID USERNAME PRI NI SIZE RES STATE TIME %WCPU %CPU COMMAND

1 ? 2981 oracle 154 20 21268K 1896K sleep 487:45 4.52 4.51 tnslsnr

0 ? 16590 oracle 181 20 538M 2236K run 11:33 3.75 3.75 oracleora9i

0 ? 2987 oracle 148 20 551M 10440K sleep 65:21 1.62 1.61 ora_dbw0_ora9i

1 ? 35 root 152 20 8064K 8064K run 47:43 0.59 0.59 vxfsd

一看就觉得16590这个oracle用户进程可疑。在发出shutdown命令后,这个进程对应的session事务一定在作回滚操作,导致数据库无法正常关闭。这个事务回滚也太久了吧,有点不正常,无奈现已无法跟踪到这个进程对应的session信息了。立即执行kill -9命令后数据库立马关闭了。

最后,总结一下数据库的正常关闭流程:

先停监听,然后停业务系统。接着ps -ef§grep ora看看还有那些(LOCAL=NO)的oracle用户进程,如果不能及时关闭的将其kill掉后发出shutdown immediate。

最多等待10分钟左右,不行就直接abort方式shutdown了。(到这一步基本没有问题,oracle还是比较安全的)

本文标签: 数据库案例ORACLEShutdown