在Oracle下启动与关闭大致都是由3个步骤完成,在启动时分别是:启动实例、加载数据库、打开数据库;关闭时分别是:关闭数据库、卸载数据库、关闭Oracle实例。所以在Oracle因为这种严谨的风格下,使得在平时可以根据不同的情况根据需要,以不同的模式启动和关闭数据库。在这里就简要的说一说Oracle下的启动与关闭,在Oracle下启动与关闭部分需要使用sysdba的身份来执行,最好是服务器上通过系统身份验证的方式操作,如下Unix环境中:

[oracle@localhost ~]$ sqlplus / as sysdba

   首先,先来说一下Oracle中的启动,启动时所使用的参数如下:

STARTUP [nomount|mount|open|force|resetrict] [prife=filename]

Oracle在默认是会读取运行用户的家目录下的初始化文件,所以如果使用prfile参数就是指定Oracle默认读取的初始化文件,这个在以前有提过,在这里就不做过多的说明,需要可以参看:http://blog.51cto.com/jim123/2053015

在启动中有以下几种模式启动:

NOMOUNT 模式:表示启动实例并不加载数据库。在这种模式下表示启动Oracle的内存结构和服务进程,期间并不加载数据库也不打开数据文件,注意该模式需要有sysdba身份权限,该模式通常用于创建新数据库或重建控制文件时使用

SQL> startup nomount
ORACLE instance started.

Total System Global Area 4275781632 bytes
Fixed Size                  2260088 bytes
Variable Size             905970568 bytes
Database Buffers         3355443200 bytes
Redo Buffers               12107776 bytes

MOUNT 模式:表示启动实例、加载数据库并保持数据库的关闭状态。在这种模式常常在进行数据维护时使用,如数据的恢复、更改数据库的归档、数据库的系统配置修改等等

SQL> startup mount
ORACLE instance started.

Total System Global Area 4275781632 bytes
Fixed Size                  2260088 bytes
Variable Size             905970568 bytes
Database Buffers         3355443200 bytes
Redo Buffers               12107776 bytes
Database mounted.

OPEN 模式:启动实例、加载并打开数据库。平时最常用的模式,要让Oracle所有用户正常使用而必须使用的模式,缺省使用startup不带任何参数就是使用该模式,也可以使用open在其他模式下启动相应的功能

SQL> startup
ORACLE instance started.

Total System Global Area 4275781632 bytes
Fixed Size                  2260088 bytes
Variable Size             905970568 bytes
Database Buffers         3355443200 bytes
Redo Buffers               12107776 bytes
Database mounted.
Database opened.

FORCE 模式:表示强制重启数据库,该模式具有一定的强制性,一般在其他模式已失效的情况下启动

SQL> startup
ORACLE instance started.

Total System Global Area 4275781632 bytes
Fixed Size                  2260088 bytes
Variable Size             905970568 bytes
Database Buffers         3355443200 bytes
Redo Buffers               12107776 bytes
Database mounted.
Database opened.
SQL> startup force
ORACLE instance started.

Total System Global Area 4275781632 bytes
Fixed Size                  2260088 bytes
Variable Size             905970568 bytes
Database Buffers         3355443200 bytes
Redo Buffers               12107776 bytes
Database mounted.
Database opened.

RESETRICT 模式:表示启动数据库实例到限制模式,此时只有管理员和具有restricted session权限的用户可以登录数据库,一般用于普通户内部数据维护时使用

SQL> startup restrict
ORACLE instance started.

Total System Global Area 4275781632 bytes
Fixed Size                  2260088 bytes
Variable Size             905970568 bytes
Database Buffers         3355443200 bytes
Redo Buffers               12107776 bytes
Database mounted.
Database opened.

   在Oracle中有启动就用关闭,下面就来说一说Oracle中的关闭,关闭时所使用的参数如下:

SHUTDOWN [normal|transactional|immediate|abort]

NORMAL 方式:正常的关闭方式,期间阻止任何新的连接、等待当前所有用户的session主动断开,等所有用户的session断开后关闭数据库,做一个检查点并关闭数据文件,重新启动时不需要实例恢复

SQL> shutdown normal
Database closed.
Database dismounted.
ORACLE instance shut down.

TRANSACTIONAL 方式:事务关闭方式,期间阻止任何新的连接、不等待所有用户的session断开,等所有用户的事务提交结束后,做一个检查点并关闭数据文件,重新启动时不需要实例恢复

SQL> shutdown transactional
Database closed.
Database dismounted.
ORACLE instance shut down.

IMMEDIATE 方式:顾名思义立即关闭,这种方式下能尽可能短的关闭数据库,期间阻止任何新的连接、不等待所有用户的session断开,不等所有用户的事务提交结束,未结束的事务rollback回滚,做一个检查点并关闭数据文件,重新启动时不需要实例恢复

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

ABORT 方式:终止关闭方式,期间阻止任何新的连接、不等待所有用户的session断开,不等所有用户的事务提交结束,不做检查点且没有关闭数据文件,启动时自动进行实例恢复,该方式具有一定的破坏性,有可能会丢失部分数据,在平时应该尽量避免使用

SQL> shutdown abort
ORACLE instance shut down.

在这里需要注意的是如果是使用ABORT 方式关闭数据库时,虽然说下一次重启时会自动进行实例恢复,但是不能保障在重启的期间出现其他问题所以如果使用ABORT 方式关闭数据库后建议再用MOUNT模式启动后再用IMMEDIATE方式关闭数据库用来修复数据库,如下

SQL> shutdown abort
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area 4275781632 bytes
Fixed Size                  2260088 bytes
Variable Size             905970568 bytes
Database Buffers         3355443200 bytes
Redo Buffers               12107776 bytes
Database mounted.
SQL> shutdown immediate
ORA-01109: database not open


Database dismounted.
ORACLE instance shut down.