10.数据库的启动和关闭06

1.前言

  数据库的启动,通过只需要一个startup就完成了,实际上在后台Oracle是通过nomount、mount、open这3个步骤来完成的,将这个过程逆向过来,那么实际上当通过shutdown来关闭数据库时,实际上数据库也就经历了close、dismount、shutdown三个步骤。

2.数据库关闭的步骤

  以下是Oracle 10g中数据库关闭的分步操作  

SQL> alter database close;
alter database close
*
ERROR at line 1:
ORA-01093: ALTER DATABASE CLOSE only permitted with no sessions connected

  注意Close数据库仅允许连接的情况下进行,否则可以就会出现如下的报错。

  第一步: 

SQL> alter database close;

Database altered.

   日志信息:

Sat Sep 25 23:22:56 2021
alter database close
Warning: ALTER DATABASE CLOSE is not a publicly supported command.
Sat Sep 25 23:22:56 2021
SMON: disabling tx recovery
All dispatchers and shared servers shutdown
CLOSE: killing server sessions.
CLOSE: all sessions shutdown successfully.
Stopping background process SMCO
SMON: disabling cache recovery
Sat Sep 25 23:22:57 2021
Shutting down archive processes
Archiving is disabled
Archive process shutdown avoided: 0 active
Thread 1 closed at log sequence 12
Successful close of redo thread 1
Completed: alter database close
Sat Sep 25 23:23:16 2021
alter database dismount
Sat Sep 25 23:23:16 2021
idle dispatcher 'D000' terminated, pid = (20, 6)
Completed: alter database dismount

  第二步  

SQL> alter database dismount;

Database altered.

  日志信息 

Sat Sep 25 23:23:16 2021
alter database dismount
Sat Sep 25 23:23:16 2021
idle dispatcher 'D000' terminated, pid = (20, 6)
Completed: alter database dismount

  第三步

SQL> shutdown
ORA-01507: database not mounted


ORACLE instance shut down.
SQL> 

  日志信息

Sat Sep 25 23:23:27 2021
Shutting down instance (normal)
Shutting down instance: further logons disabled
Stopping background process MMNL
Stopping background process MMON
License high water mark = 4
All dispatchers and shared servers shutdown
ALTER DATABASE CLOSE NORMAL
ORA-1507 signalled during: ALTER DATABASE CLOSE NORMAL...
ARCH: Archival disabled due to shutdown: 1090
Shutting down archive processes
Archiving is disabled
Archive process shutdown avoided: 0 active
ARCH: Archival disabled due to shutdown: 1090
Shutting down archive processes
Archiving is disabled
Archive process shutdown avoided: 0 active
Sat Sep 25 23:23:31 2021
Stopping background process VKTM:
Sat Sep 25 23:23:33 2021
Instance shutdown complete

 在使用shutdown命令关闭数据库时,还有几个可选参数,这几个参数分别是normal、immediate、transactional、abort

3.几种关闭方式的对比

  3.1 shutdown normal

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

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

  3.2 shutdown immediate

     shutdown immediate是最为常用的一种关闭数据库的方式,使用这个命令时,当前正在被oracle处理的事务立即中断,未提交的事务将全部回滚,系统不等待连接到数据库的用户退出,强制断开所有的连接用户,然后执行检查点,将变更数据全部写回数据文件,关闭数据,使用这种方式关闭数据库,在下次启动数据库时不需要进行实例恢复,是一种安全的数据库关闭方式。

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

  3.3 shutdown transactional

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

    在所有活动的事务完成后,数据库将与shutdown immediate同样的方式关闭数据库。

  3.4 shutdown abort  

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

    abort的方式关闭数据库,就类似于数据库服务突然断电,可能会导致不一致的情况出现,所以不到万不得已,轻易不要使用这种方式关闭数据库,那么什么时候使用shutdown abort方式关闭数据库呢?以下是一些常见的场景:

  • 数据库或应用异常,其他方式无法关闭数据库
  • 因为马上到来的断电或者其它维护情况,需要快速关闭数据库
  • 启动异常后需要重新尝试启动
  • 当使用shutdown  immediate无法关闭时;
  • 需要快速重新启动数据库
  • shutdown 超时或异常    

          

  

原文地址:https://www.cnblogs.com/zmc60/p/15336159.html