shutdown immediate 持久无法关闭数据库之解决方案。

来源:互联网 发布:pat 端口 编辑:程序博客网 时间:2024/06/06 07:51

今天 是2013-08-24,今天登录qq,发现我同事给 我发了 一个消息,说是在做安全加固,可是无法关闭数据库,等了很久。刚刚开始,我以为有用户登录数据库,shutdown的时候需要等待事务完成,可是一看使用的命令为shutdown immediate。这时候我排除了这个问题。

 然后我登录到数据库发现,存在很多process进程,如下:

orarep 16415     1  0  8ÔÂ 19  ?         0:01 oraclerepdb (LOCAL=NO)
  orarep  9946     1  0  8ÔÂ 16  ?        68:33 oraclerepdb (LOCAL=NO)
  orarep  7150     1  0  8ÔÂ 16  ?         2:39 oraclerepdb (LOCAL=NO)
  orarep 16467     1  0 09:20:17 ?         0:01 oraclerepdb (LOCAL=NO)
  orarep  9276     1  0  8ÔÂ 16  ?         0:01 oraclerepdb (LOCAL=NO)

  orarep 10684 10681  0  3ÔÂ 26  ?         0:00 /usr/bin/sh /oraprep/oracle/shell/report/PRO_AUDIT_INFO.sh
  orarep  3311     1  0  8ÔÂ 16  ?         2:57 oraclerepdb (LOCAL=NO)
  orarep  9944     1  0  8ÔÂ 16  ?        64:32 oraclerepdb (LOCAL=NO)
  orarep 26760     1 255  4ÔÂ 13  ?        192218:43 oraclerepdb (LOCAL=NO)
  orarep  8913     1  0  8ÔÂ 15  ?        21:02 oraclerepdb (LOCAL=NO)
  orarep  9942     1  0  8ÔÂ 16  ?        59:21 oraclerepdb (LOCAL=NO)
  orarep 26747  1745  0  4ÔÂ 13  ?         0:00 sh -c /oraprep/oracle/shell/report/PRO_AUDIT_INFO.sh 
  oracle 28925     1  0 13:10:42 ?         0:00 ora_ckpt_unipms
  orarep 16567     1  0 09:21:19 ?         0:01 oraclerepdb (LOCAL=NO)
  orarep  8907     1  0  8ÔÂ 15  ?         0:01 oraclerepdb (LOCAL=NO)
  orarep  9292     1  0  8ÔÂ 16  ?        16:22 oraclerepdb (LOCAL=NO)
  orarep  9290     1  0  8ÔÂ 16  ?        14:29 oraclerepdb (LOCAL=NO)
  oracle 28945     1  0 13:10:47 ?         0:00 ora_arc1_unipms
  orarep 20336  1745  0  2ÔÂ 28  ?         0:00 sh -c /oraprep/oracle/shell/report/PRO_AUDIT_INFO.sh 
  orarep  8905     1  0  8ÔÂ 15  ?         0:01 oraclerepdb (LOCAL=NO)
  orarep  1813     1 255  4ÔÂ 10  ?        196541:30 oraclerepdb (LOCAL=NO)
  orarep  8903     1  0  8ÔÂ 15  ?         0:01 oraclerepdb (LOCAL=NO)
  orarep 20349     1 255  2ÔÂ 28  ?        255569:43 oraclerepdb (LOCAL=NO)
  orarep 23362     1  0  4Ô  2  ?         0:06 oraclerepdb (LOCAL=NO)
  oracle 29051     1  0 13:11:40 ?         0:00 ora_q001_unipms
  orarep 10694     1 255  3ÔÂ 26  ?        218122:17 oraclerepdb (LOCAL=NO)
  orarep  2392  2390  0  3ÔÂ 15  ?         0:00 /usr/bin/sh /oraprep/oracle/shell/report/PRO_AUDIT_INFO.sh
  orarep  3299     1  0  8ÔÂ 16  ?         0:01 oraclerepdb (LOCAL=NO)
  orarep 21535     1  0  8ÔÂ 14  ?         0:01 oraclerepdb (LOCAL=NO)
  orarep 25979     1  0 12:10:34 ?         0:01 oraclerepdb (LOCAL=NO)
  orarep  9935     1  0  8ÔÂ 16  ?         0:01 oraclerepdb (LOCAL=NO)
  orarep 21531     1  0  8ÔÂ 14  ?        61:03 oraclerepdb (LOCAL=NO)

查看alert日志如下:

Shutting down instance (immediate)
Sat Aug 24 15:25:40 2013
Shutting down instance: further logons disabled
License high water mark = 683
Sat Aug 24 15:30:39 2013
Active call for process 26760 user 'orarep' program'oracle@pmsdb2'
Active call for process 20349 user 'orarep' program'oracle@pmsdb2'
Active call for process 1813 user 'orarep' program'oracle@pmsdb2'
Active call for process 10694 user 'orarep' program'oracle@pmsdb2'
Active call for process 26394 user 'orarep' program'oracle@pmsdb2'
System State dumped to trace file /oraprep/oracle/admin/repdb/udump/repdb_ora_16122.trc
Sat Aug 24 15:31:02 2013
SHUTDOWN: waiting for active calls to complete.
Sat Aug 24 15:31:02 2013
Instance shutdown cancelled
Sat Aug 24 15:35:56 EAT 2013
Shutting down instance (immediate)
Sat Aug 24 15:35:56 EAT 2013
Shutting down instance: further logons disabled
License high water mark = 683

随机,手动kill掉这些数据库连接进程:

eg:

orarep@pmsdb2[/oraprep/oracle/admin/repdb/bdump]$kill -9 10694
orarep@pmsdb2[/oraprep/oracle/admin/repdb/bdump]$kill -9 23362
orarep@pmsdb2[/oraprep/oracle/admin/repdb/bdump]$kill -9 9944

另外如果进程之多可以使用:kill -9 'ps -ef|grep oracle |grep -v grep |awk '{print $2}''或ps -ef|grep $ORACLE_SID|grep -v ora_|grep LOCAL=NO|awk '{print $2}'|xargs kill命令

随机再次关闭数据库:

SQL> shutdown immediate

Database closed.

Database dismounted.

总结:

这是由于进程lock资源导致 的问题,因此需要先释放资源,完成数据库的关闭。

 

 

原创粉丝点击