问题引出:测试环境,进行oralce的shutdown immediate,等待时间很长,长的无法等待

ORACLE shutdown 过程:

1、shutdown normal(正常关闭方式):阻止任何用户建立新的连接;等待当前所有正在连接的用户主动断开连接;当所有的用户都断开连接后,将立即关闭数据库

2、shutdown transactional(实务关闭方式):阻止用户连接新的连接和开始新事务;等待所有活动事务提交后,再断开用户连接;当所有的活动实务提交完毕、所有的用户都断开连接后,将关闭数据库

3、shutdown immediate(立即关闭方式):阻止用户连接新连接和开始新事务;将未提交的活动事务回退;关闭数据库

4、shutdown abort(终止关闭方式):阻止用户建立新连接和开始新事务;取消未提交的活动事务,而不是回退;立即终止正在执行的任何SQL语句;立即关闭数据库

无疑,shutdown abort是最开速关闭数据库的方式,但是很可能会使数据库处于不一致状态,严重可能损坏数据库,导致数据库起不来,特别是生产环境。虽然现在是测试环境,但是也不建议这样做。推荐使用shutdown immediate方式关闭数据库。

快速关闭数据库的因素:

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

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

3、长时间运行的会话

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

2、查看预警日志文件(alert_sid.log)的位置

SQL> show parameter dump 
NAME TYPE VALUE 
------------------------------------ ----------- ------------------------------ 
background_core_dump string partial 
background_dump_dest string /u01/oracle/admin/bdump 
core_dump_dest string /u01/oracle/admin/cdump 
max_dump_file_size string 10240 
shadow_core_dump string partial 
user_dump_dest string /u01/oracle/admin/udump 

查看alert日志如下: /u01/oracle/admin/bdump/alert_biusdb.log  以下信息是样例

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

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

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

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

命令

随机再次关闭数据库:

SQL> shutdown immediate

Database closed.

Database dismounted.

总结:

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

shutdown immediate 持久无法关闭数据库之解决方案的更多相关文章

  1. Oracle shutdown immediate无法关闭数据库解决方法

    在测试服务器上使用shutdown immediate命令关闭数据库时,长时间无法关闭数据库,如下所示 1: [oracle@DB-Server admin]$ sqlplus / as sysdba ...

  2. 关闭数据库时SHUTDOWN: waiting for active calls to complete.处理

    有时候在关闭数据库时,发出shutdown immediate;命令后一直未关闭.查看ALERT日志.在等待一段时间后日志中有提示: SHUTDOWN: waiting for active call ...

  3. Linux CentOS中使用SQL*Plus启动和关闭数据库

    启动和关闭数据库的常用工具有三个 一.SQL*Plus 在SQL*Plus环境中,用户以SYSDBA身份连接到Oracle后,可以通过命令行方式启动或关闭数据库. 二.OEM(企业管理器) 利用OEM ...

  4. 未完全关闭数据库导致ORA-01012: not logged的解决

    首先使用SHUTDOWN 没加任何参数方式关闭数据库,在数据库未关闭时CTRL+Z停止执行,退出用SQLPLUS重登陆,出现报错:ORA-01012: not logged on SQL> st ...

  5. Oracle启动和关闭数据库

    本机只安装一个数据库的情况下sqlplus / as sysdba启动数据库startup关闭数据库shutdown immediate

  6. 虚拟机centos7服务器下,启动oracle11g数据库和关闭数据库

    转载:https://blog.csdn.net/ShelleyWhile/article/details/74898033 一.前提条件:虚拟机centos7服务器下,已经安装好oracle11g数 ...

  7. Oracle11g 启动数据库实例、关闭数据库实例

    Oracle11g 启动数据库实例        startup 1: nomount 模式:      描述:             该模式只会创建实例(即:创建oracle 实例的各种内存结构和 ...

  8. Oracle 关闭数据库(未使用Oracle Restart)

    Oracle关闭数据库(未使用Oracle Restart) by:授客 QQ:1033553122 SHUTDOWN [选项] 选项说明: NORMAL-语句执行后,不允许创建新的连接:等待所有当前 ...

  9. Oracle记录-开启与关闭数据库

    1.配置tnsnames.ora/listener.ora #cd /usr/oracle/oracle/product/11.2.0/db_1/network/admin ---切换到安装目录 #v ...

随机推荐

  1. PJzhang:在windows10中实现右键命令行快捷打开

    猫宁!!! (windows10---设置---轻松使用---键盘---开启PrtScn快速截图),或者winodws+shift+s kali linux中右键就可以打开终端命令行. 采用手工修改注 ...

  2. 《精通并发与Netty》学习笔记(01 - netty介绍及环境搭建)

    一.Netty介绍     Netty是由JBOSS提供的一个java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客户端程序.     ...

  3. 使用PowerShell 修改DNS并加入域中

    运行环境:Windows Server 2012 R2 此powershell脚本为自动修改本机DNS并加入到域中 但有的时候会提示[本地计算机当前不是域的一部分.请重新执行脚本!]错误,如遇到该错误 ...

  4. 多线程基础知识---join方法

    join方法的作用 thread.join()方法用于把指定的线程加入到当前线程中,把当前线程的CPU执行时间让给另一个线程.比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继 ...

  5. 第一章 Scala基础篇

    目录 一.Scala基础语法 (一) 变量.类型.操作符 1.变量申明 2.字符串 3.数据类型 4.操作符 (二)循环判断 1.块表达式 2.条件表达式 3.循环表达式 (三)方法和函数 1.方法 ...

  6. 【计算机网络】-网络层-Internet的网络层

    [计算机网络]-网络层-Internet的网络层 Internet是一组相互连接的网络或者自治系统的集合 Internet 1.存在几个主要骨干网络,骨干网络是由高带宽的线路和快速路由器构成 2.这些 ...

  7. python私有化xx、_xx、__xx、__xx__、xx_的区别

    xx:共有变量. _xx:私有化的属性或方法,from xxx import * 时无法导入,子类的对象和子类可以访问. __xx:避免与子类中的属性命名冲突,无法在外部直接访问(名字重整所以访问不到 ...

  8. DevOps 之 Jenkins 安装、配置、美化、插件及常见错误处理

    继续上一篇的话题,既然已经搭建了 GitLab 的代码仓库,那么现在就可以开始进行下一步持续集成环境的搭建了.公司准备利用 Jenkins CI 进行持续集成,本文记录了 Jenkins 的安装.基础 ...

  9. nop4.1用2008r2的数据库

    修改appsetting.json

  10. python之数字类型小知识

    数字是表示计数的抽象事物,也是数学运算和推理的基础,所以,生活中数字是生活中无处不在的,那么,在python语言中运用数字有哪些小知识呢,不妨花点时间看一下这篇博文,牢记这些小知识. 整数类型中四种进 ...