shutdown immediate时 hang住 (转载)

shutdown immediate 
经常关库时hang住,在alert中有

License high water mark = 4
All dispatchers and shared servers shutdown

多等一会会出现
SHUTDOWN: Active processes prevent shutdown operation

造成这个现象的原因是(也可能是em的原因,这篇与em无关):

之前的session没有断开,而后又使用了host切换到OS提示符下,导致数据库无法正常关闭

[[email protected] ~]$ sqlplus scott/tiger

SQL> show user
USER is "SCOTT"
SQL> !
[[email protected] ~]$ echo $$
3897
[[email protected] ~]$ sqlplus / as sysdba

SQL> select pid,spid,p.pname,p.program from v$process p,v$session s where p.addr=s.paddr and s.sid=userenv(‘sid‘);

PID SPID                     PNAME PROGRAM
---------- ------------------------ ----- ------------------------------------------------
        27 3911                           [email protected] (TNS V1-V3)

SQL> shutdown immediate

hang住

alert内容:

Sat Jan 04 17:41:53 2014
Shutting down instance (immediate)
Stopping background process SMCO
Shutting down instance: further logons disabled
Sat Jan 04 17:41:53 2014
Stopping background process CJQ0
Stopping background process QMNC
Stopping background process MMNL
Stopping background process MMON
License high water mark = 4
All dispatchers and shared servers shutdown

Sat Jan 04 17:46:58 2014
SHUTDOWN: Active processes prevent shutdown operation

Sat Jan 04 17:52:00 2014
SHUTDOWN: Active processes prevent shutdown operation

另一终端
$ pstree -p

├─sshd(1668)─┬─sshd(1838)───sshd(1840)─┬─bash(3067)───tail(3095)
│            │                         └─bash(3106)───rlwrap(3893)───sqlplus(3894)─┬─bash(3897)───sqlplus(3910)───oracle(3911)
│            │                                                                     └─oracle(3895)

[[email protected] ~]$ ps -ef |grep oracle
可以发现
oracle    3895  3894  0 17:34 ?        00:00:00 [oracle]

一个fg process变成了僵尸进程

[[email protected] ~]$ ps -o pid,ppid,state -p 3895 
  PID  PPID S
 3895  3894 Z

kill -9 3895 是杀不掉僵尸进程的

解决办法:

1.可以再等会,会自动结束
SQL> shutdown immediate

SQL> Error 45 initializing SQL*Plus
Internal error
Hangup
[[email protected] ~]$ [[email protected] ~]$

2.kill父进程,子进程(即使是zombie)也会一起结束
ps -Al 或 ps -o pid,ppid -p pid
ppid是3894

kill -9 3894

3.hang住的终端尝试ctrl+c,或ctrl+z,或直接关了, 重新sqlplus / as sysdba
shutdown abort
startup restrict 
shutdown normal

ctrl-c 是发送 SIGINT 信号,终止一个进程
ctrl-z 是发送 SIGSTOP信号,挂起一个进程

ctrl-d不发送信号. 如果ctrl-d时当前行没有输入字符, bash把它当作EOF字符, 结束/退出.
如果ctrl-d时当前行有输入, 删除光标后的字符. 这是readline的特性, 不发送信号.

/* 以下引用 http://blog.csdn.net/leshami/article/details/9466559 */

Oracle对此给出的说明是这不是一个Oracle bug,而是使用了一个非正常的数据库关闭顺序。
建议先断开所有连接再关闭数据库,如先关闭db control,具体见下面的Oracle 文档及示例。

Doc ID 416658.1

Shutdown Immediate Hangs / Active Processes Prevent Shutdown (Doc ID 416658.1)

Applies to: 
Oracle Server - Enterprise Edition - Version: 10.1.0.2 to 11.2.0.2 - Release: 10.1 to 11.2
Oracle Server - Enterprise Edition - Version: 10.1.0.2 to 11.2.0.2   [Release: 10.1 to 11.2]
Information in this document applies to any platform.

Symptoms
The ‘shutdown immediate‘ command hangs or is very slow

The alert log lists messages like:

SHUTDOWN: waiting for active calls to complete.ACTIVE PROCESSES PREVENT SHUTDOWN OPERATION

Cause
This is not a bug.

If the DB Control repository is running on the database target against which shutdown immediate was attempted then an incorrect 
order of events seems used.

You should stop DB Control first to get rid of all connections between DB Control and the repository database and then shutdown
the database with ‘shutdown immediate‘.

Current database sessions may show:

SQL> select SID, USERNAME, PROGRAM from v$session;
SID   USERNAME               PROGRAM
----- ---------------------- ----------------------------------
  243 SYSTEM                 SQL Developer
  246 SYSMAN                 OMS
  247                        [email protected] (q001)
  248                        [email protected] (q000)
  251 DBSNMP                 [email protected] (TNS V1-V3)
  252 SYSMAN                 OMS
  253 SYSMAN                 OMS
  254 DBSNMP                 [email protected] (TNS V1-V3)
  255 SYSTEM                 java.exe
  256 SYSMAN                 OMS

Clearly OMS and OEM are connected (Oracle Enterprise Manager Grid Control or DBConsole) via users SYSMAN and DBSNMP.
These sessions should be de-activated (that is to log off any OEM, OMS, SYSMAN and DBSNMP) before the shutdown immediate is attempted.

Oracle Enterprise Manager, Grid Control, Dbconsole and agents keep doing internal processing.
This may include a few PLSQL notification procedures running on the database by database control like
BEGIN EMD_NOTIFICATION.QUEUE_READY(:1, :2, :3); END;

As per internal documentation of the shutdown immediate, if there are active calls then it would wait for all the active calls to finish.

Solution
To implement the solution:

1. Given OEM connections are active (SYSMAN and DBSNMP), de-activate these sessions, i.e. by stopping the agent/DBConsole

2. Then shutdown immediate as normal

- OR -

There may be processes still running and holding locks at the time a shutdown is issued. 
Sometimes these are failed jobs or transactions, which are effectively ‘zombies‘, which are not able to receive a signal from Oracle.

If this occurs, the only way to shutdown the database is by doing:

sql> 
shutdown abort 
startup restrict 
shutdown normal

The startup does any necessary recovery and cleanup, so that a valid cold backup can be taken afterward.

If this issue occurs frequently, it would be a good practice to see if there are any active user processes running in v$session or
v$process before shutting down the instance.

If the problem persists, and no apparent user processes are active, you can set this event prior to issuing the shutdown command 
in order to see what is happening. This will dump a systemstate every 5 minutes while shutdown is hanging

SQL> 
connect / as sysdba 
alter session set events ‘10400 trace name context forever, level 1‘

http://blog.itpub.net/28859270/viewspace-1067155/

时间: 2024-10-06 00:07:21

shutdown immediate时 hang住 (转载)的相关文章

Oracle 关闭(shutdown immediate)时hang住

昨天晚上生产的两套10.2.0.4的数据库修改了参数,需要重启.在发出shutdown immediate命令后等了大概10分钟的时间,数据库还没有down下来.检查后台alert日志,发现从开始shutdown到最后只输出几条日志,其中最后一条日志是:SHUTDOWN: Active processes prevent shutdown operation. 图为在虚拟机上还原场景时的截图. 开一个新的会话连接显示已连接,但无法查视图,又提示未连接.再次执行shutdown immediate

【翻译自mos文章】11gR2 OUI 在 PREREQUISITE CHECKS 时 hang住

翻译自mos文章:11gR2 OUI 在 PREREQUISITE CHECKS 时 hang住 适用于: Oracle Server - Enterprise Edition - Version 8.0.6.0 to 11.2.0.2.0 [Release 8.0.6 to 11.2] Information in this document applies to any platform. This can occur on any Unix/Linux platform 症状: 11gR2

Oracle数据库shutdown immediate被hang住的几个原因

实验操作环境: 操作系统:Red Hat Enterprise Linux ES release 4 (Nahant Update 6) 数据库 : Oracle Database 10g Release 10.2.0.4.0 – Production  32bit 今晚使用shutdown immediate(其实是执行stop_oracle.sh脚本关闭数据库,如下所示)关闭数据库的时候, 1: [[email protected] scripts]$ more stop_oracle.sh

OGG目标端复制Sequence时Hang住的问题

昨天遇到一个问题一个OGG的复制进程在复制序列(Sequence)时Hang住不动,进程状态一直是Running状态但是不往前进行复制,导致进程延迟6个多小时 GGSCI (ctm-3) 2> info all Program     Status      Group       Lag at Chkpt  Time Since Chkpt MANAGER     RUNNING                                            REPLICAT    RU

【翻译自mos文章】当指定asm disk 为FRA时,11.2.0.3的dbua hang住

当指定asm disk 为FRA时.11.2.0.3的dbua hang住 来源于: 11.2.0.3 DBUA Hangs While Specifying ASM Disk To FRA (文档 ID 1427179.1) 适用于: Oracle Database Upgrade Assistant - Version 10.2.0.1 and later Oracle Server - Standard Edition - Version 10.2.0.1 and later Oracle

【翻译自mos文章】当 使用DCD 和TCPS时,rman duplicate hang住

当 使用DCD 和TCPS时,rman duplicate hang住. 来源于: RMAN Duplicate hangs when using DCD and TCPS (文档 ID 1676197.1) 适用于: Oracle Database - Enterprise Edition - Version 11.2.0.1 and later Information in this document applies to any platform. 症状: 在datafile copy 阶

【转载】MySQL被慢sql hang住了,用shell脚本快速清除不断增长的慢sql的办法

原文地址:MySQL被慢sql hang住了,用shell脚本快速清除不断增长的慢sql的办法 作者:mchdba 某个初级dba误删index,mysql漫山遍野全是10S以上的慢sql,mysql服务被hang住了,而且慢sql不断在增加中,如果手动在mysql界面kill的话,根本来不及,这个时候,shell就必须要出手了,如下的shell脚本,大家可以参考: #It is used to kill processlist of mysql sleep #!/bin/sh while :

truncate表hang住(等待时间较长),出现enq:RO fast object reuse等待事件

有一个应用truncate表等待了一晚上,一个定时任务,跑了几年了,今天早上来发现昨晚没有执行完成,hang住了,查询发现等待事件 fast object reuse. 10.2.0.4的库 Bug 7385253 - Slow Truncate / DBWR uses high CPU / CKPT blocks on RO enqueue (文档 ID 7385253.8) Bug 9761199 - PMON hang on 'enq: ro - fast object reuse' (文

记一次数据库无法增删改趋于HANG住状态的故障诊断和处理

数据库无法增删改,包括v$transaction视图无法查询,类似于HANG的状态,我首先我通过查询v$session_wait视图,情况如下: SQL> select sid,event,p1,p2,p3,wait_time,seconds_in_wait,state from v$session_wait where wait_class <> 'Idle'; SID EVENT                                             P1