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

来源:这里教程网 时间:2026-03-03 19:01:51 作者:

有时工作需要,无法快速关闭数据库的因素:

1、连接的客户端进程数量

2、未提交的事务占用的UNDO BLOCK数量

3、长时间运行的会话

4、SMON进程清理临时段的速度

我本次遇到的问题是,执行了大量的sql, 未提交的事务占用的UNDO BLOCK数量的原因,

查看预警日志文件(alert_sid.log)的位置 SQL> show parameter dump NAME      TYPE VALUE ------------------------------------ ----------- ------------------------------ background_core_dump      string partial background_dump_dest      string /app/oracle/product/19.0.0/dbhtest ome_1/rdbms/log core_dump_dest      string /app/oracle/diag/rdbms/test /eastods/cdump max_dump_file_size      string unlimited shadow_core_dump      string partial user_dump_dest      string /app/oracle/product/19.0.0/dbh ome_1/rdbms/log SQL>  查看alert日志如下:/app/oracle/diag/rdbms/test/alert_test.log 以下信息是样例 2023-10-24T07:36:13.600147+08:00 Shutting down ORACLE instance (immediate) (OS id: 6904) 2023-10-24T07:36:15.986718+08:00 Stopping background process SMCO 2023-10-24T07:36:18.111748+08:00 Shutting down instance: further logons disabled 2023-10-24T07:36:57.619859+08:00 Stopping background process CJQ0 2023-10-24T07:37:04.839242+08:00 Killed process oracle@dlidcsjbzhdbtest.aeonlife.com.cn (QM02) with pid is 86, OS pid 23619 Stopping background process MMNL 2023-10-24T07:37:04.920188+08:00 Process termination requested for pid 23619 [source = rdbms], [info = 2] [request issued by pid: 6904, uid: 54321] 2023-10-24T07:37:07.838995+08:00 Stopping background process MMON 2023-10-24T07:37:14.840298+08:00 License high water mark = 89 2023-10-24T07:37:48.120219+08:00 Thread 1 advanced to log sequence 40380 (LGWR switch)   Current log# 3 seq# 40380 mem# 0: /app/oracle/oradata/test/redo03.log 2023-10-24T07:40:21.124437+08:00 Thread 1 advanced to log sequence 40381 (LGWR switch)   Current log# 1 seq# 40381 mem# 0: /app/oracle/oradata/test/redo01.log 2023-10-24T07:42:13.956519+08:00 Active process 25052 user 'oracle' program 'oracle@test.com.cn (TNS V1)', waiting for 'db file sequential read' Active process 1116 user 'oracle' program 'oracle@test.com.cn', waiting for 'db file sequential read' SHUTDOWN: waiting for active calls to complete.test 2023-10-24T07:43:33.283164+08:00 Thread 1 advanced to log sequence 40382 (LGWR switch)   Current log# 2 seq# 40382 mem# 0: /app/oracle/oradata/test/redo02.log 2023-10-24T07:47:36.568838+08:00

手动kill掉这些数据库连接进程:红色字体的地方

eg:

[test]$kill -9 25052 

另外如果进程之多可以使用:

ps aux |grep "LOCAL=NO" |awk '{printf "%s ", $2}' |xargs kill -91

ps -ef|grep $ORACLE_SID|grep -v ora_|grep LOCAL=NO|awk '{print $2}'|xargs kill1

命令

随机再次关闭数据库:

SQL>  shutdown immediate

Database closed.

Database dismounted.

总结:

这是由于进程执行大量SQL,需要回滚,占用资源导致 的问题,因此需要先释放资源,完成数据库的关闭。

相关推荐