在Oracle下启动与关闭大致都是由3个步骤完成,在启动时分别是:启动实例、加载数据库、打开数据库;关闭时分别是:关闭数据库、卸载数据库、关闭Oracle实例。所以在Oracle因为这种严谨的风格下,使得在平时可以根据不同的情况根据需要,以不同的模式启动和关闭数据库。在这里就简要的说一说Oracle下的启动与关闭,在Oracle下启动与关闭部分需要使用sysdba的身份来执行,最好是服务器上通过系统身份验证的方式操作,如下Unix环境中:
[oracle@localhost~]$sqlplus/assysdba
首先,先来说一下Oracle中的启动,启动时所使用的参数如下:
STARTUP[nomount|mount|open|force|resetrict][prife=filename]
Oracle在默认是会读取运行用户的家目录下的初始化文件,所以如果使用prfile参数就是指定Oracle默认读取的初始化文件,这个在以前有提过,在这里就不做过多的说明,需要可以参看:http://www.jb51.cc/article/p-efibhigd-brn.html
在启动中有以下几种模式启动:
NOMOUNT 模式:表示启动实例并不加载数据库。在这种模式下表示启动Oracle的内存结构和服务进程,期间并不加载数据库也不打开数据文件,注意该模式需要有sysdba身份权限,该模式通常用于创建新数据库或重建控制文件时使用
sql>startupnomount ORACLEinstancestarted. TotalSystemGlobalArea4275781632bytes FixedSize2260088bytes VariableSize905970568bytes DatabaseBuffers3355443200bytes RedoBuffers12107776bytes
MOUNT 模式:表示启动实例、加载数据库并保持数据库的关闭状态。在这种模式常常在进行数据维护时使用,如数据的恢复、更改数据库的归档、数据库的系统配置修改等等
sql>startupmount ORACLEinstancestarted. TotalSystemGlobalArea4275781632bytes FixedSize2260088bytes VariableSize905970568bytes DatabaseBuffers3355443200bytes RedoBuffers12107776bytes Databasemounted.
OPEN 模式:启动实例、加载并打开数据库。平时最常用的模式,要让Oracle所有用户正常使用而必须使用的模式,缺省使用startup不带任何参数就是使用该模式,也可以使用open在其他模式下启动相应的功能
sql>startup ORACLEinstancestarted. TotalSystemGlobalArea4275781632bytes FixedSize2260088bytes VariableSize905970568bytes DatabaseBuffers3355443200bytes RedoBuffers12107776bytes Databasemounted. DatabaSEOpened.
FORCE 模式:表示强制重启数据库,改模式具有一定的强制性,一般在其他模式已失效的情况下启动
sql>startup ORACLEinstancestarted. TotalSystemGlobalArea4275781632bytes FixedSize2260088bytes VariableSize905970568bytes DatabaseBuffers3355443200bytes RedoBuffers12107776bytes Databasemounted. DatabaSEOpened. sql>startupforce ORACLEinstancestarted. TotalSystemGlobalArea4275781632bytes FixedSize2260088bytes VariableSize905970568bytes DatabaseBuffers3355443200bytes RedoBuffers12107776bytes Databasemounted. DatabaSEOpened.
RESETRICT 模式:表示启动数据库实例到限制模式,此时只有管理员和具有restricted session权限的用户可以登录数据库,一般用于普通户内部数据维护时使用
sql>startuprestrict ORACLEinstancestarted. TotalSystemGlobalArea4275781632bytes FixedSize2260088bytes VariableSize905970568bytes DatabaseBuffers3355443200bytes RedoBuffers12107776bytes Databasemounted. DatabaSEOpened.
在Oracle中有启动就用关闭,下面就来说一说Oracle中的关闭,关闭时所使用的参数如下:
SHUTDOWN[normal|transactional|immediate|abort]
NORMAL 方式:正常的关闭方式,期间阻止任何新的连接、等待当前所有用户的session主动断开,等所有用户的session断开后关闭数据库,做一个检查点并关闭数据文件,重新启动时不需要实例恢复
sql>shutdownnormal Databaseclosed. Databasedismounted. ORACLEinstanceshutdown.
TRANSACTIONAL 方式:事务关闭方式,期间阻止任何新的连接、不等待所有用户的session断开,等所有用户的事务提交结束后,做一个检查点并关闭数据文件,重新启动时不需要实例恢复
sql>shutdowntransactional Databaseclosed. Databasedismounted. ORACLEinstanceshutdown.
IMMEDIATE 方式:顾名思义立即关闭,这种方式下能尽可能短的关闭数据库,期间阻止任何新的连接、不等待所有用户的session断开,不等所有用户的事务提交结束,未结束的事务rollback回滚,做一个检查点并关闭数据文件,重新启动时不需要实例恢复
sql>shutdownimmediate Databaseclosed. Databasedismounted. ORACLEinstanceshutdown.
ABORT 方式:终止关闭方式,期间阻止任何新的连接、不等待所有用户的session断开,不等所有用户的事务提交结束,不做检查点且没有关闭数据文件,启动时自动进行实例恢复,该方式具有一定的破坏性,有可能会丢失部分数据,在平时应该尽量避免使用
sql>shutdownabort ORACLEinstanceshutdown.
在这里需要注意的是如果是使用ABORT 方式关闭数据库时,虽然说下一次重启时会自动进行实例恢复,但是不能保障在重启的期间出现其他问题所以如果使用ABORT 方式关闭数据库后建议再用MOUNT模式启动后再用IMMEDIATE方式关闭数据库用来修复数据库,如下
sql>shutdownabort ORACLEinstanceshutdown. sql>startupmount ORACLEinstancestarted. TotalSystemGlobalArea4275781632bytes FixedSize2260088bytes VariableSize905970568bytes DatabaseBuffers3355443200bytes RedoBuffers12107776bytes Databasemounted. sql>shutdownimmediate ORA-01109:databasenotopen Databasedismounted. ORACLEinstanceshutdown.