Oracle 关闭方法

Lei*_*fel 9 oracle oracle-11g-r2

在执行升级或修补程序之前关闭数据库可以通过多种方式完成。

shutdown immediate;
Run Code Online (Sandbox Code Playgroud)

或者

shutdown abort;
startup restrict;
shutdown immediate;
Run Code Online (Sandbox Code Playgroud)

或者

shutdown abort;
startup restrict;
shutdown;
Run Code Online (Sandbox Code Playgroud)

或者

alter system checkpoint;
shutdown abort;
startup restrict;
shutdown immediate;
Run Code Online (Sandbox Code Playgroud)

当然还有其他选择。哪个应该是首选,为什么?

Jac*_*las 12

关闭以进行维护(或冷备份)的目的是使数据库保持一致状态,无需在启动时回滚/恢复。

shutdown理论上有 3 个 SQL*Plus命令可以实现这一点,所有这些命令都会立即阻止会话连接到实例:

  1. shutdown normal或者只是shutdown:等待所有会话断开连接。这种模式在实践中很少使用,因为它依赖于行为良好的客户端不会打开连接。这曾经是唯一shutdown不取消正在运行的事务的模式。
  2. shutdown transactional:当前正在运行的事务完成后断开会话,防止开始新的事务。
  3. shutdown immediate: 立即断开所有会话并在关闭之前回滚中断的事务。请注意,断开连接是立即的,但关闭可能不是因为任何中断的事务可能需要时间来回滚。

的第四种模式shutdownshutdown abort。这就像拉电源线 - 实例现在停止,没有任何清理。您通常希望之后再次启动数据库,然后像您的示例一样立即关闭。概念指南

此模式适用于紧急情况,例如没有其他形式的关机成功时。

所有你给的例子进行检查点作为部分shutdown [normal]shutdown immediate如此明确检查点大概是要减少恢复所需的时间

一般建议:

  • 不要使用shutdown normal.
  • 使用shutdown transactional 仅出席关机时,要尽量减少交易取消(只参加了,因为这种关机,不能保证关闭数据库下的所有如果超时,违反)。
  • 使用shutdown immediate无人值守关机,或当你不关心当前运行的事务。
  • shutdown abort除非必须,否则不要使用(加上启动/关闭) - 这在更早版本的 Oracle 中更为常见,而今天如此。在其他情况下(不是补丁/升级),如果您需要最大限度地减少停机时间,这种模式可能是合适的。