Oracle关闭方法


9

在执行升级或修补程序之前关闭数据库有几种方法。

shutdown immediate;

要么

shutdown abort;
startup restrict;
shutdown immediate;

要么

shutdown abort;
startup restrict;
shutdown;

要么

alter system checkpoint;
shutdown abort;
startup restrict;
shutdown immediate;

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

Answers:


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早期版本中,这种情况更为常见。在其他情况下(不是补丁/升级),如果您需要最小化停机时间,则此模式可能是合适的。

您能否提供有关缺点的更多详细信息shutdown abort?扮演对手,如果我们可以相信Oracle在断电时能够正确恢复,那么我们是否不应该在a期间信任它shutdown abort,特别是如果它更快并且我们将立即执行a startup restrict和a shutdown immediate?换句话说,是否有事实可以支持Oracle的可怕警告shutdown abort
Leigh Riffel'4

@Leigh-我知道有关的唯一特定危险shutdown abort意外备份联机日志有关,但这仅在您随后不执行干净关机的情况下。如果您知道自己在做什么,我认为shutdown abort可以认为这是绝对安全的-而且我不确定Oracle的职位是否算作“
死亡

3

我更喜欢使用shutdown abort方法,因为它是关闭数据库的最快方法。关闭中止后,有些操作无法执行,例如

  • 使用create controlfile resetlogs重新创建数据库的控制文件(重命名数据库,重命名日志文件或重命名数据文件)
  • 使用dbms_backup_restore中的过程更改dbid(这是8i中更改dbid的唯一方法)

在这两种情况下,数据库均已损坏,必须从完整备份中还原该数据库。

从9i开始,可以使用dbnewid实用程序来重命名数据库或更改dbid 。据我所知,该实用程序会检查数据库是否正确关闭。重命名数据文件,临时文件和日志文件可以通过执行适当的sql语句来完成,而无需重新创建控制文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.