今天在做SOA几个数据库的重启操作,其中一个数据库在关闭过程中一直处于HANG住状态,十几分钟没有任何进展,具体操作过程如下:

一:当时的情景

SQL> shutdown immediate

--无任何返回结果

二:问题定位过程

1.查询相关进程只有ORACLE的关键进程存在

ps -ef |grep ora_

soadb  4487     1  0 22:57:05 ?         0:00 ora_reco_soadbprd
   soadb  4485     1  5 22:57:05 ?         0:00 ora_smon_soadbprd
   soadb  4526     1  0 22:57:15 ?         0:00 ora_arc0_soadbprd
   soadb  4479     1  0 22:57:04 ?         0:00 ora_dbw1_soadbprd
   soadb  4483     1  0 22:57:04 ?         0:01 ora_ckpt_soadbprd
   soadb  4468     1  0 22:57:02 ?         0:02 ora_pmon_soadbprd

2.查看alter日志,显示如下:

Shutting down instance: further logons disabled
    Thu Nov 14 22:04:24 2013
    Stopping background process CJQ0
    Thu Nov 14 22:04:24 2013
    Stopping background process QMNC
    Thu Nov 14 22:04:26 2013
    Stopping background process MMNL
    Thu Nov 14 22:04:27 2013
    Stopping background process MMON
    Thu Nov 14 22:04:27 2013
    Shutting down instance (immediate)
    License high water mark = 152
    Thu Nov 14 22:04:27 2013
    Stopping Job queue slave processes, flags = 7
    Thu Nov 14 22:04:27 2013
    Job queue slave processes stopped
    Waiting for dispatcher 'D000' to shutdown
    All dispatchers and shared servers shutdown
    Thu Nov 14 22:04:30 2013
    ALTER DATABASE CLOSE NORMAL
    Thu Nov 14 22:09:34 2013
    Waiting for smon to disable tx recovery.
    Thu Nov 14 22:23:46 2013
    MMNL absent for 1201 secs; Foregrounds taking over

3.针对红色字体的提示,查询官方网站,ID 1076161.6

官方描述如下:

During shutdown the SMON process is cleaning up extents and updating the data
dictionary tables with the marked free extents. As the extents are marked as
freed, they are removed from the table for used extents, UET$ and placed on the
table for free extents, FET$.

官方描述的原因是因为smon进程在清时临时表空间数据块和更新数据字典时造成的数据库HANG住,原理讲的很清楚,里面还有一个链接,一个是讲述这种情况可能是一个BUG,另一个链接教我们诊断数据库HANG住的具体原因。但现在的问题是,如果一直等下去,可能需要几个小时,此次变更数据库重启只有半小时时间,不可能待下去,怎么办?

4.尝试取消shutdown immediate命令

CTRAL + C没有任何作用,新建一个链接执行查询或其它操作,会报一个错,具体信息如下:

ORA-01089: immediate shutdown in progress - no operations are permitted

可以看到,此时什么都不允许操作,这时想找从操作系统上找到shutdown immediate进程KILL掉,后来仔细一想,这个操作可能比shutdown abort更危险,很可能造成数据库无法启动,在网上找到了相关资源,也没找到办法,此时突然想到刚学ORACLE数据库启动和停止时有一条命令是

startup force:中止当前数据库的运行,并开始重新正常的启动数据库

startup force = shutdown abort +startup 此时也只能用它了

5.强制停止shutdown immediate

新打开一个sqlplus / as sysdba

SQL> startup force
       ORACLE instance started.

Total System Global Area 3206836224 bytes
       Fixed Size                  2180024 bytes
       Variable Size            1778388040 bytes
       Database Buffers         1409286144 bytes
       Redo Buffers               16982016 bytes
       Database mounted.
       Database opened.

此时shutdown immediate窗口停止了,数据库恢复到可操作状态,此时我再次用shutdown immediate命令再次正常停止数据库,依然无法停止,没办法,再次执行startup force获取数据库控制权,选择shutdown abort方法停止数据库。重新启动,很幸运,启动成功了!(注意此操作有一定的风险,小心操作)

转:http://blog.sina.com.cn/s/blog_61cd89f60102eeg1.html

ORA-01089 数据库无法正常关闭的更多相关文章

  1. <Oracle Database>数据库启动与关闭

    启动和关闭Oracle数据库 要启动和关闭数据库,必须要以具有Oracle 管理员权限的用户登陆,通常也就是以具有SYSDBA权限的用户登陆.一般我们常用INTERNAL用户来启动和关闭数据库(INT ...

  2. oracle数据库启动和关闭方式

    Oracle数据库是重量级的,其管理非常复杂,将其在Linux平台上的启动和关闭步骤整理一下. 安装完毕oracle以后,需要创建oracle系统用户,并在/home/oracle下面的.bash_p ...

  3. Oracle 数据库实例启动关闭过程

    Oracle数据库实例的启动,严格来说应该是实例的启动,数据库仅仅是在实例启动后进行装载.Oracle数据启动的过程被划分为 几个不同的步骤,在不同的启动过程中,我们可以对其实现不同的操作,系统修复等 ...

  4. Oracle 数据库启动与关闭 各种方式详解整理

    概述 只有具备sysdba和sysoper系统特权的用户才能启动和关闭数据库. 在启动数据库之前应该启动监听程序,否则就不能利用命令方式来管理数据库,包括启动和关闭数据库. 虽然数据库正常运行,但如果 ...

  5. Oracle 数据库启动与关闭

    只有具备sysdba和sysoper系统特权的用户才能启动和关闭数据库. 在启动数据库之前应该启动监听程序,否则就不能利用命令方式来管理数据库,包括启动和关闭数据库. 虽然数据库正常运行,但如果没有启 ...

  6. oracle之二实例管理及数据库的启动/关闭

    实例管理及数据库的启动/关闭   2.1 实例和参数文件 1.instance 功能:用于管理和访问database.instance在启动阶段读取初始化参数文件(init parameter fil ...

  7. Oracle数据库启动和关闭

    在介绍oracle数据库的启动和关闭前,先看一下Oracle的参数文件. oracle参数文件 1.初始化参数文件 oracle的初始化参数文件分为spfilesid.ora.spfile.ora.i ...

  8. sqlserver无ldf日志文件附加的方法(数据库没有完全关闭,无法重新生成日志)

    数据库的ldf日志文件被删了,直接附加时报错:数据库没有完全关闭,无法重新生成日志 那怎么恢复数据呢?方法如下: 在数据库中新建一个同名的数据库(文件路径要与原来的相同,ldf的文件名也要相同),然后 ...

  9. Linux——oracle数据库实例启动关闭(转)

    -->Oracle 数据库实例启动关闭过程 --================================ [root@robinson ~]# su - oracle --查看未启动实例 ...

  10. oracle9i的erp数据库无法正常关闭的解决方法。

    oracle9i版本的ERP数据库无法正常关闭. 场景描述:oracle9i数据库正常关闭的时候,hang住在一个地方无法正常关闭. 解决思路:查看alert日志,分析问题. [oraprod@erp ...

随机推荐

  1. PAT 06-2 字符串字母大小写转换

    没什么好说的,记得使用ctype.h就好了,谭浩强那本书就介绍了,再不使用就太对不起他老人家了:有一点小小的地方需要注意一下,&&的优先级比=号高,所以getchar()两边没有括号的 ...

  2. ios即时通讯客户端开发之-mac上搭建openfire服务器

    一.下载并安装openfire 1.到http://www.igniterealtime.org/downloads/index.jsp下载最新openfire for mac版 比如:Openfir ...

  3. Training little cats_矩阵快速幂

    Description Facer's pet cat just gave birth to a brood of little cats. Having considered the health ...

  4. 三色二叉树_树形DP

    Time Limit: 1000 mSec    Memory Limit : 32768 KB  Problem Description 一棵二叉树可以按照如下规则表示成一个由0.1.2组成的字符序 ...

  5. SWUST0249 (凸包面积)

    type node=record x,y:longint; end; ; var k,q,qq:longint; sum:double; f,g:..maxn] of node; m,i,j,a,b: ...

  6. 第一次div1做出3道题

    第一次div1做出3道题! 再接再厉! 哈利路亚!

  7. NSArray(二) 、 NSMutableArray 、 NSSet 、 NSMutableSet

    1 创建五个学生对象,放入数组并遍历 1.1 问题 创建一个自定义类TRStudent,为该类生成五个对象.把这五个对象存入一个数组当中,然后遍历数组. 1.2 步骤 实现此案例需要按照如下步骤进行. ...

  8. Android 学习第1课,JDK工具包的安装

    1. jdk 的下载 目前为止,jdk的最新版是jdk8,http://www.oracle.com/technetwork/java/javase/downloads/index.html 到这里下 ...

  9. 非常基础的css注意点

    排版了很多页面,才发现自己忽视了一个很基本且重要的知识点: 一个div在一般的浏览器中,算它的width,要计算其content,padding,border. 但是在CSS中定义一个div的widt ...

  10. jquery zclip 复制黏贴功能不能实现

    按照http://www.steamdev.com/zclip/我实现一个简单的zclip test 以下是我的测试code: <!DOCTYPE html> <html> & ...