Oracle 数据库(三)—— 启动和关闭 Oracle 数据库实例

1、启动数据库实例

Oracle数据库实例的启动过程分为3个步骤,分别是启动实例、加载数据库、打开数据库。用户能够根据实际状况的须要,以不一样的模式启动数据库。javascript

启动数据库所使用的命令格式以下:java

STARTUP [nomount|mount|open|force] [restrict] [pfile=filename]
  • nomount:表示启动实例不加载数据库。
  • mount:表示启动实例、加载数据库并保持数据库的关闭状态。
  • open:表示启动实例、加载并打开数据库,这个是默认选项。
  • force:表示终止实例并从新启动数据库。
  • restrict:用于指定以受限制的会话方式启动数据库。
  • pfile:于指定启动实例时所使用的文本参数文件,filename就是文件名。

1.1 NOMOUNT 模式

这种启动模式只会建立实例(即建立Oracle实例的各类内存结构和服务进程),并不加载数据库,也不会打开任何数据文件。web

使用NOMOUNT模式启动数据库实例示例:数据库

SQL> connect system/test as sysdba
已链接。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup nomount
ORACLE 例程已经启动。

Total System Global Area 6814535680 bytes
Fixed Size                  2188688 bytes
Variable Size            3539995248 bytes
Database Buffers         3254779904 bytes
Redo Buffers               17571840 bytes

在上面的示例代码中,首先用户要以sysdba的身份登陆,才具备关闭和启动数据实例的权限。在使用shutdown命令关闭数据库实例以后,而后使用startup nomount命令启动数据库实例。svg

一般在建立新数据库或重建控制文件时,使用NOMOUNT模式启动数据库实例。spa

NOMOUNT模式一般在进行数据库维护时使用。好比,执行数据库彻底恢复操做、更改数据库的归档模式等。rest

1.2 MOUNT 模式

这种模式将启动实例、加载数据库并保持数据库的关闭状态。code

使用MOUNT模式启动数据库实例示例:orm

SQL> connect system/test as sysdba
已链接。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 6814535680 bytes
Fixed Size                  2188688 bytes
Variable Size            3539995248 bytes
Database Buffers         3254779904 bytes
Redo Buffers               17571840 bytes
数据库装载完毕。

上面的代码中,首先使用shutdown命令关闭数据库实例,而后再使用startupmount命令启动数据库实例。xml

1.3 OPEN 模式

这种模式将启动实例、加载并打开数据库,这就是常规的启动模式,用户想要对数据库进行多种操做,就必须使用OPEN模式启动数据库实例。

使用OPEN模式启动数据库实例示例:

SQL> connect system/test as sysdba
已链接。
SQL> shutdown immediate
ORA-01109: 数据库未打开

已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area 6814535680 bytes
Fixed Size                  2188688 bytes
Variable Size            3539995248 bytes
Database Buffers         3254779904 bytes
Redo Buffers               17571840 bytes
数据库装载完毕。
数据库已经打开。

在上面的代码中,startup命令的后面不带有任何参数, 就表示以OPEN模式启动数据库实例。

1.4 FORCE模式

这种模式将终止实例并从新启动数据库,这种启动模式具备必定的强制性。 好比,在其余启动模式失效时,能够尝试使用这种启动模式。

使用FORCE模式启动数据库实例示例:

SQL> connect system/test as sysdba
已链接。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup force
ORACLE 例程已经启动。

Total System Global Area 6814535680 bytes
Fixed Size                  2188688 bytes
Variable Size            3539995248 bytes
Database Buffers         3254779904 bytes
Redo Buffers               17571840 bytes
数据库装载完毕。
数据库已经打开。

2、关闭数据库实例

与启动数据库实例相同,关闭数据库实例也分为3个步骤,分别是关闭数据库、卸载数据库、关闭Oracle实例。在SQL*Plus中,能够使用shutdown语句关闭数据库。

其具体语法格式以下:

SHUTDOWN [normal|transactional|immediate|abort]
  • normal:表示以正常方式关闭数据库。
  • transactional:示在当前全部的活动事务被提交完毕以后,关闭数据库
  • immediate:表示在尽量短的时间内当即关闭数据库。
  • abort:表示以终止方式来关闭数据库。

2.1 NORMAL方式

这种方式称做正常关闭方式,若是对关闭数据库的时间没有限制,一般会使用这种方式来关闭数据库。

使用NORMAL方式关闭数据库示例:

shutdown normal
数据库已经关闭。
已经卸载数据库。

ORACLE 例程已关闭

从上面的代码能够看出,Oracle在执行shutdown命令后, 所返回的响应信息就是关闭数据库实例的过程。当以正常方式关闭数据库时,Oracle将执行以下操做:

  • 阻止任何用户创建新的链接。
  • 等待当前全部正在链接的用户主动断开链接。
  • 当全部的用户都断开链接后,将当即关闭数据库。

2.2 NSACTIONAL方式

这种方式称做事务关闭方式,它的首要任务是可以保证当前全部的活动事务均可以被提交,并在尽量短的时间内关闭数据库。

使用TRANSACTIONAL方式关闭数据库示例:

shutdown transactional
数据库已经关闭。
已经卸载数据库。

ORACLE 例程已关闭

以事务方式关闭数据库时,Oracle将执行以下操做:

  • 阻止用户创建新链接和开始新事务。
  • 等待全部活动事务提交后,再断开用户链接。
  • 当全部的活动事务提交完毕、全部的用户都断开链接后,将关闭数据库。

2.3 IMMEDIATE方式

MMEAI单间的含义样这种方式称做当即关方式,这种方限在共可能时间内关团数费件。

使用MEDAIR关闭数据库示例:

shutdown immediate
数据库已经关闭。
已经卸载数据库。

ORACLE 例程已关闭

在这种关闭方式下,Oracle不但会当即中断当前用户的链接,并且会强行终止用户的当前活动事务,将未完成的事务回退。以当即关闭方式关闭数据库时,Oracle将执行以下操做:

  • 阻止用户创建新链接和开始新事务。
  • 将未提交的活动事务回退。
  • 关闭数据库。

2.4 ABORT方式

这种方式称做终止关闭方式,终止关闭方式具备必定的强制性和破坏性。使用这种方式会强制中断任何数据库操做,这样可能会丢失一部分数据信息, 影响数据库的完整性。除了因为使用其余3种方式没法关闭数据库而使用它以外,应该尽可能避免使用这种方式。

使用ABORT方式关闭数据库示例:

shutdown immediate
ORACLE 例程已关闭

以当即关闭方式关闭数据库时,Oracle将执行以下操做:

  • 阻止用户创建新链接和开始新事务。
  • 取消未提交的活动事务,而不是回退。
  • 当即终正在执行的任何SQL语句。
  • 当即关闭数据库。

参考文献:

  1. Oracle 11g从入门到精通 第二版,明日科技 著,清华大学出版社有限公司