oracle三种关闭方式,Oracle数据库的关闭

您所在的位置:网站首页 数据库正常启动的几种状态 oracle三种关闭方式,Oracle数据库的关闭

oracle三种关闭方式,Oracle数据库的关闭

2024-07-14 03:52| 来源: 网络整理| 查看: 265

以下是几种数据库关库方式的对比:

1. SHUTDOWN NORMAL

SHUTDOWN NORMAL是数据库关闭SHUTDOWN命令的缺省选项,当我们执行SHUTDOWN时,Oracle即以正常方式关闭数据库。发出该命令后,任何新的连接都将不再允许连接到数据库,但是在数据库关闭之前,Oracle需要等待当前连接的所有用户都从数据库中退出。

采用这种方式关闭数据库,在下一次启动时不需要进行任何的实例恢复,但是由于Normal方式要等所有用户断开连接后才能关闭数据库,所以等待时间可能超长;在生产环境中,这种方式几乎无法关闭有大量用户连接的数据库,所以很少被采用。

2. SHUTDOWN IMMEDIATE

SHUTDOWN IMMEDIATE方式是最为常用的一种关闭数据库的方式,使用这个命令时,当前正在被Oracle处理的事务立即中断,未提交的事务将全部回滚,系统不等待连接到数据库的用户退出,强制断开所有的连接用户。

然后执行检查点,将变更数据全部写回数据文件,关闭数据库。使用这种方式关闭数据库,在下次启动数据库时不需要进行实例恢复,是一种安全的数据库关闭方式。

但是注意,如果数据库系统繁忙,当前有大量事务执行(甚至是大事务正在处理),那么使用此选项关闭数据库也可能需要大量时间。

3. SHUTDOWN TRANSACTIONAL

SHUTDOWN TRANSACTIONAL选项仅在Oracle 8i后可用,使用该命令时,数据库不再允许建立新的连接,禁止新事务的进行,但是允许当前活动事务执行完毕。

在所有活动的事务完成后,数据库将和SHUTDOWN IMMEDIATE同样的方式关闭数据库。

4. SHUTDOWN ABORT

SHUTDOWN ABORT是最不推荐采用的关闭数据库的方法,使用改选项,数据库会立即终止所有用户连接、中断所有事务、立即关闭数据库,使用这种方式关闭数据库,未完成事务不会回滚,数据库也不会执行检查点,所以在下次启动时,数据库必须执行实例恢复,实例恢复可能会需要大量时间,数据库的启动因此可能需要等候很长时间。

Abort的方式关闭数据库,就类似于数据库服务器突然断电,可能会导致不一致的情况出现,所以除非不得已,轻易不要使用这种方式关闭数据库。

那么在什么情况下需要使用Shutdown abort方式关闭数据库呢?以下是一些常见的场景:

数据库或应用异常,其他方式无法关闭数据库

因为马上到来的断电或其他维护情况,需要快速关闭数据库

启动异常后需要重新尝试启动

当使用Shutdown Immediate无法关闭时

需要快速重新启动数据库

Shutdown超时或异常

以下是一个使用Shutdown Abort情况的案例。

当尝试使用shutdown immediate方式关闭数据库时,长时间未获得响应:

SQL> shutdown immediate;

此时检查数据库的告警日志文件,发现出现如下错误信息:

Tue Jul 18 13:18:40 2006

Process OS id : 28507 alive after kill

Errors in file

Tue Jul 18 13:18:55 2006

PMON failed to acquire latch, see PMON dump

PMON failed to acquire latch, see PMON dump

PMON failed to acquire latch, see PMON dump

报错信息反复出现,数据库无法关闭,此时只有通过Shutdown Abort的方式强制关闭数据库:

[oracle@test126 bdump]$ sqlplus "/ as sysdba"

SQL*Plus: Release 10.2.0.1.0 - Production on Tue Jul 18 13:20:38 2006

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected.

SQL> shutdown abort;

ORACLE instance shut down.

此时告警日志文件记录了这个过程,输出信息显示由于不能Kill一个或多个进程,实例终止失败,最后被用户中止:

Tue Jul 18 13:20:42 2006

Shutting down instance (abort)

License high water mark = 11

Termination issued to instance processes. Waiting for the processes to exit

Tue Jul 18 13:20:52 2006

Instance termination failed to kill one or more processes

Instance terminated by USER, pid = 28892

除了异常情况之外,有时候需要快速重新启动数据库,很多人习惯用abort方式来进行操作,但是需要注意的是,Abort之后重启数据库需要进行恢复,启动的时间可能很长,所以如果时间允许,可以在关闭数据库之前执行一次Checkpoint,如:

alter system checkpoint

如果此后再使用Abort关闭数据库,那么在下次启动恢复时,需要恢复的数据就可以减少,当然如果能够不使用ABORT方式是最好的。

有时候在使用常规命令关闭数据库时(如Shutdown Normal或Immediate),可能会遇到由于个别事务或进程阻塞无法关闭的情况,如果数据库等待一小时仍然无法关闭,就会以超时抛出错误信息:

ORA-01013: user requested cancel of current operation.

此外在关闭过程中,如果用户发出CTRL-C,则关闭也可以被手工取消:

SQL> shutdown immediate;

ORA-01013: user requested cancel of current operation

但是无论超时还是用户手工取消,数据库都可能陷于两种状态,一种是正常状态,可以继续运行;一种是未知状态,数据库无法正常运行。

如果数据库无法正常运行,那么此时我们将被迫使用ABORT方式关闭数据库。

下表列举了不同方式关闭数据库的区别,供参考:

baedf4626ab1f0509909a25464ee8b09.png



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3