zoukankan      html  css  js  c++  java
  • 关闭数据库

    当Oracle Restart不在使用中时,可以通过连接SYSOPER或SYSDBA并发出SHUTDOWN命令来关闭具有SQL * Plus的数据库实例。如果您的数据库由Oracle Restart管理,则关闭数据库的推荐方法是使用srvctl stop database命令。

    控制不会返回到启动数据库关闭的会话,直到关闭完成。在关机过程中尝试连接的用户会收到如下消息:

    ORA-01090: shutdown in progress - connection is not permitted

     如果通过共享服务器进程连接到数据库,则无法关闭数据库。

    有几种关闭数据库的模式:普通,即时,事务和中止。有些关机模式会在实际关闭数据库之前等待某些事件发生(例如事务完成或用户断开连接)。这些事件有一个小时的超时时间。

    以下部分提供了详细信息:

    • 使用normal模式关闭
    • 使用immediate模式关机
    • 使用Transactional模式关闭
    • 用Abort模式关闭
    • 关闭超时

    使用normal模式关闭


    要在正常情况下关闭数据库,请使用以下命令之一:

    SQL*Plus SRVCTL (When Oracle Restart Is In Use)
    SHUTDOWN [NORMAL]
    srvctl stop database -d db_unique_name -o normal

    SQL * Plus SHUTDOWN命令的NORMAL子句是可选的,因为这是默认的关闭方法。对于SRVCTL,如果省略-o选项,则关闭操作将根据存储在数据库的Oracle Restart配置中的停止选项继续。默认停止选项是immediate。

    正常的数据库关闭进行下列条件:

    • 声明发布后,不允许有新的连接。
    • 在数据库关闭之前,数据库将等待所有当前连接的用户与数据库断开连接。

    数据库的下一次启动不需要任何实例恢复过程。

    使用immediate模式关机


    仅在以下情况下使用立即数据库关闭:

    • 启动自动化无人值守备份
    • 当电源关闭即将发生时
    • 当数据库或其某个应用程序不正常运行时,您无法联系用户请求他们注销或无法注销

    要立即关闭数据库,请使用以下命令之一:

    SQL*Plus SRVCTL (When Oracle Restart Is In Use)
    SHUTDOWN IMMEDIATE
    srvctl stop database -d db_unique_name -o immediate

    立即数据库关闭进行下列条件:

    • 声明发布后,不允许新的连接,也不允许新的事务启动。
    • 任何未提交的事务都会回滚。 (如果存在长时间未提交的事务,则尽管名称存在,但此关闭方法可能无法快速完成。)
    • Oracle数据库不会等待当前连接到数据库的用户断开连接。数据库隐式回滚活动事务并断开所有连接的用户。

    数据库的下一次启动不需要任何实例恢复过程。

    使用Transactional模式关闭


    如果要在执行活动事务首先完成的同时执行实例的计划关闭,请使用以下命令之一:

    SQL*Plus SRVCTL (When Oracle Restart Is In Use)
    SHUTDOWN TRANSACTIONAL
    srvctl stop database -d db_unique_name -o transactional

    事务性数据库关闭进行下列条件:

    • 声明发布后,不允许新的连接,也不允许新的事务启动。
    • 在所有事务完成后,仍然连接到实例的任何客户端都将断开连接。
    • 此时,实例将关闭,就像提交SHUTDOWN IMMEDIATE语句时一样。

    数据库的下一次启动不需要任何实例恢复过程。

    事务关闭可防止客户端丢失工作,同时不需要所有用户注销。

    用Abort模式关闭


    您可以通过中止数据库实例来即时关闭数据库。如果可能,仅在以下情况下执行此类关机:

    数据库或其中一个应用程序运行不规律,其他类型的关闭都不起作用。

    • 您必须立即关闭数据库(例如,如果您知道电源关闭将在一分钟内发生)。
    • 启动数据库实例时遇到问题。

    当您必须通过中止事务和用户连接来执行数据库关闭时,请使用以下命令之一:

    SQL*Plus SRVCTL (When Oracle Restart Is In Use)
    SHUTDOWN ABORT
    srvctl stop database -d db_unique_name -o abort

    中止的数据库关闭会继续执行以下条件:

    • 声明发布后,不允许新的连接,也不允许新的事务启动。
    • Oracle数据库正在处理的当前客户端SQL语句会立即终止。
    • 未提交的事务不会回滚。
    • Oracle数据库不会等待当前连接到数据库的用户断开连接。数据库隐式断开所有连接的用户。

    数据库的下一次启动将需要自动实例恢复过程。

    关闭超时


    等待用户断开或交易完成的关机模式对其等待的时间量有限制。如果阻塞关闭的所有事件都不会在一个小时内发生,则关闭操作将中止以下消息:ORA-01013:用户请求取消当前操作。如果您中断关闭过程,例如按下CTRL-C,也会显示此消息。 Oracle建议您不要尝试中断实例关闭。相反,请允许关闭过程完成,然后重新启动实例。

     在发生ORA-01013之后,您必须将实例视为处于不可预知状态。因此,您必须通过重新提交SHUTDOWN命令来继续关机过程。如果随后的SHUTDOWN命令继续失败,则必须提交SHUTDOWN ABORT命令来关闭实例。然后您可以重新启动实例。

    参考资料


    https://docs.oracle.com/cd/E11882_01/server.112/e25494/start.htm#ADMIN11156

  • 相关阅读:
    Markdown自动生成目录
    defer使用小结
    RESTful API设计的点
    总结下数据库的命名规范
    go module学习笔记
    golang环境安装和配置
    jenkins环境搭建&配置(二)
    mac环境搭建selenium
    sed命令
    测试工作遇到的自动补0
  • 原文地址:https://www.cnblogs.com/ZeroTiny/p/9008338.html
Copyright © 2011-2022 走看看