ORA-01089 数据库无法正常关闭

摘要:
下午0:02 Soapbprd2。按如下方式查看更改日志:Shutingdown instance:futher logons disabled ThuNov1422:04:242013 StoppingbackgroundprocessCJQ0ThuNov1422:04:242013 StoppingBackgroundprocessQMNCThuNov1422:204:262013 Stopping backgroundprocessMMNLThuNov1422:34:272013 Stopping BackgroundprocessMMONThuNov1422:04:172013 Shutingdown实例Licensehighwatermark=1 52ThuNov1424:04:272013 StoppigJobqueueslaveprocesses,flags=2013年11月7日14:04:272013作业队列从属进程已停止等待计时器“000”关闭所有分派器和共享服务器将于2013年10月14日14:04:302013 ALTERDATABASE CLOSENORMALT 2014年11月22日14:09:342013等待开始恢复。星期四十一月1422:23:462013MMNL缺席201秒;前台工作人员治理3.红色字体提示,请查看官方网站。ID 1076161.6的官方描述如下:当扩展标记为已释放时,它们将从已用扩展表UET$中删除,并放在空闲扩展表FET$中。官方原因是smon进程在清除临时表空间数据块和更新数据字典时导致的数据库挂起。原则非常明确。其中也有一个链接。一个链接告诉我们这种情况可能是错误,另一个链接则告诉我们诊断数据库HANG的具体原因。但现在的问题是,如果我们等待很长时间,可能需要几个小时。此更改数据库重新启动只需半小时。不可能留下来。我们该怎么办?

今天在做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 数据库无法正常关闭》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Centos7查看、打开和关闭防火墙(三)Mybatis类型转换器,接口传参类型,一对一,一对多查询resultMap配置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Db4o for .NET 使用心得(1、2):Trace db4o;慎用struct

Db4o(http://www.db4o.com/)是著名的开源对象数据库,使用它能够将持续层代码量降低到忽略不计的程度。如果数据量不大,用它能够将开发速度提高一个层次。我手中的小项目需要储存约十万个联系人的数据,考察了sqlite与db4o,最终决定选用db4o. 我使用的是db4o 7.4 for .NET 2.0。关于db4o网上有很多文档,然而有一...

Oracle数据导入导出imp/exp命令 10g以上expdp/impdp命令

Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中。 利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用。 执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行, DOS中可以执行时...

ResultSet用法集锦 (转)

转:http://soft-development.iteye.com/blog/1420323 结果集(ResultSet)是数据中查询结果返回的一种对象,可以说结果集是一个存储查询结果的对象,但是结果集并不仅仅具有存储的功能,他同时还具有操纵数据的功能,可能完成对数据的更新等.      结果集读取数据的方法主要是getXXX(),他的参数可以是整型表...

Hive默认显示数据库和表名配置

hive-site.xml添加以下参数: <property> <name>hive.cli.print.current.db</name> <value>true</value> </property> <property> <name&...

MongoDB高级查询详细

前言前几篇,老玩家绕道即可,新手晚上闲着也是蛋疼,不如把命令敲一边,这样你就会对MongoDB有一定的掌握啦。如果没有安装MongoDB去看我的上一篇博客  MongoDB下载安装与简单增删改查  前奏:启动mongdb数据库服务,并进入shell界面 > cmd > cd C:Program FilesMongoDBin  --进入mongd...

Sybase配置中文语言支持及字符集

在windows平台上,Sybase ASE15.0.7安装完成后默认语言是:英语(us_english),默认字符集为:cp850。cp850是一个西欧字符集,虽然也能使用cp850字符集保存汉字,但是不推荐在生产环境中使用该字符集。 如果生产系统中Sybase ASE数据库仅考虑支持简体中文的话,则可以使用cp936或者utf8这两种字符集。如果需要国...