• oracle的关闭过程(各个模式关闭)


    关闭数据库与实例

    与数据库启动一下,关闭数据库与实例也分为3步:关闭数据库-->实例卸载数据库--->终止实例

    1.Nomal(正常关闭方式)

    命令:shutdown nomal

    讲解:正常方式关闭数据时,Oracle执行如下操作:

    (1)阻止任何用户建立新的连接。

    (2)等待当前所有正在连接的用户主动断开连接(此方式下Oracle不会立即断掉当前用户的连接,这些用户仍然操作相关的操作)

    (3)一旦所有的用户都断开连接,则立即关闭、卸载数据库,并终止实例。(所以,一般以正常方式关闭数据库时,应该通知所有在线的用户尽快断开连接)

    2.Immediate(立即关闭方式)

    命令:shutdown immediate

    讲解:

    (1)阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务。

    (2)Oracle不等待在线用户主动断开连接,强制终止用户的当前事务,将任何未提交的事务回退。(如果存在太多未提交的事务,此方式将会耗费很长时间终止和回退事务)

    (3)直接关闭、卸载数据库,并终止实例。

    3.Transactional(事务关闭方式)

    命令:shutdown transactional

    讲解:这种方式介于正常关闭方式跟立即关闭方式之间,响应时间会比较快,处理也将比较得当。执行过程如下:

    (1)阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务。

    (2)等待所有未提交的活动事务提交完毕,然后立即断开用户的连接。

    (3)直接关闭、卸载数据库,并终止实例。

    4.Abort(终止关闭方式)

    命令:shutdown abort

    讲解:这是比较粗暴的一种关闭方式,当前面3种方式都无法关闭时,可以尝试使用终止方式来关闭数据库。但是以这种方式关闭数据库将会丢失一部份数据信息,当重新启动实例并打开数据库时,后台进程SMON会执行实例恢复操作。一般情况下,应当尽量避免使用这种方式来关闭数据库。执行过程如下:

    (1)阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务。

    (2)立即终止当前正在执行的SQL语句。

    (3)任何未提交的事务均不被退名。

    (4)直接断开所有用户的连接,关闭、卸载数据库,并终止实例。

    对于normal、transactional、immediate,DB_BUFFER CACHE的内容写入了数据文件,没有提交的事务被回滚,所有的资源被释放,数据库被“干净”的关闭。
    对于abort,db_BUFFER_CACHE的内容没有写入数据文件,没有提交的事务也没有回滚。数据库没有DISMOUNT和关闭,数据文件也没有关闭。当数据库启动时,需要通过REDO LOG恢复数据,通过回滚段对事务回滚,对资源进行释放。

  • 相关阅读:
    linux定时任务之crontab
    Examples of GoF Design Patterns--摘录
    weblogic升级之ddconverter
    Memcached分布式算法详解--转
    java实现迷宫算法--转
    kmp java implement--转
    2013年小结及2014年展望
    深入redis内部--字典实现
    项目管理学习笔记之二.工作分解
    android在当前app该文件下创建一个文件夹
  • 原文地址:https://www.cnblogs.com/login2012/p/5693129.html
Copyright © 2020-2023  润新知