问题引出:测试环境,进行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. PTA --- L1-002 打印沙漏

    题目地址 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数个符号:各行符号中心对 ...

  2. 安装horizon

    在控制节点上安装 controllerHost='controller' ADMIN_PASSWD='Ideal123!' 1.安装dashboard组件 yum -y install opensta ...

  3. python tarfile模块

    TarFile类对于就是tar压缩包实例. 其由member块组成, member块则包括header块和data块. 每个member以TarInfo对象形式描述. 所以TarFile就是TarIn ...

  4. flask LOCAL线程隔离技术

    from threading import Thread from werkzeug.local import Local local = Local()#实例化一个线程隔离对象 request = ...

  5. MySQL_数据表命令

    目录 数据表操作 1.创建数据表: 2. 修改表结构: 数据表查看 1.查看数据库中所有表的信息 2.查看表结构 3.查看创建表时所输入的命令 4.删除数据表 数据表操作 关于Mysql的数据类型,点 ...

  6. Python 中__new__()和__init__()的区别

    转自: https://blog.csdn.net/weixin_37579123/article/details/89515577 __new__方法:类级别的方法 特性: 1.是在类准备将自身实例 ...

  7. JS 获取当前定位

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. Daily Temperatures

    Given a list of daily temperatures T, return a list such that, for each day in the input, tells you ...

  9. 【转帖】 解开龙芯与mips4000的关系

    -- 苏联给的套件,我们只要把电子管插上就好. -- 千万次机器,不晓得来源 DJS-130系列,16位小型机,仿造美国NOVA DJS-180系列,超级小型机,仿造美国DEC VAX, 能跑DEC的 ...

  10. Android的视图(View)组件

    Android的绝大部分UI组件都放在android.widget包及其子包.android,view包及其子包中,Android应用的所有UI组件都继承了View类,View组件非常类似于Swing ...