一、命令解析
STARTUP options | upgrade_options
options为:[FORCE] [RESTRICT] [PFILE=filename] [QUIET] [ MOUNT [dbname] | [ OPEN [open_options] [dbname] ] | NOMOUNT ], NOMOUNT、MOUNT、OPEN为startup的三个阶段,不能在命令中同时存在。其中,open_options为:READ {ONLY | WRITE [RECOVER]} | RECOVER。
upgrade_options为:[PFILE=filename] {UPGRADE | DOWNGRADE} [QUIET]
1、FORCE解析:强制打开数据库,在open之前会先执行shutdown,相当于shutdown abort; startup open。在当前实例正在运行的情况下,如果不使用FORCE的话,startup时会报错。FORCE可以在调试环境或非生产环境中使用,需慎用。
2、RESTRICT解析:以此模式打开的数据库只有拥有RESTRICTED SESSION系统权限的用户才能连接。打开后,可以使用ALTER SYSTEM命令将该状态设为disable,以关闭restricted将数据库正常打开。
3、PFILE=filename解析:使用指定的文件中的参数打开实例。在未使用PFILE的情况下,startup以默认参数文件中的参数打开。在UNIX系统中,该文件默认为$ORACLE_HOME/dbs/init$ORACLE_SID.ora;在Windows系统中,该文件默认为%ORACLE_HOME%\database\initSID.ora。
4、QUIET解析:使用该选项将致使实例在打开过程中不显示SGA的相关信息
5、MOUNT dbname解析:以MOUNT方式打开实例,如果未指定dbname,则打开以参数文件中DB_NAME参数指定的数据库。
6、OPEN解析:以OPEN方式打开实例
7、NOMOUNT解析:以NOMOUNT方式打开实例
8、RECOVER解析:该选项可以引导startup在打开实例之前进行完全恢复,与RECOVER DATABASE命令的功能相同。若要开启自动恢复,可将AUTORECOVERY参数值设为ON。如果redo日志文件未在指定位置,在根据提示指定备用的日志文件后,即使未开启自动恢复,recovery仍可继续进行。
9、UPGRADE解析:以OPEN UPGRADE方式打开实例,并且设定特定参数值,使得能够运行upgrade脚本。只有在第一次打开一个新版本的数据库时才可使用UPGRADE选项。当使用该选项时,运行upgrade脚本可将当前安装的数据库版本升级为一个更新的版本。完成upgrade后,数据库需关闭和正常重启。
10、DOWNGRADE解析:以OPEN DOWNGRADE方式打开实例,并且设定特定参数,似的能够运行downgrade脚本。当使用该选项时,运行downgrade脚本可将当前安装的数据库版本降为一个更旧的版本。完成downgrade后,数据库需关闭和正常重启。
二、使用说明
1、必须以SYSOPER或SYSDBA身份连接才有权限执行startup
2、未带任何参数的startup相当于 STARTUP OPEN
3、STARTUP OPEN RECOVER 即使在恢复失败的情况下,仍旧会加载并打开实例
三、实例和数据库的开启
STARTUP会分三步开启数据库,分别为:1、Start and instance(NOMOUNT);2、Mount the database(MOUNT);3、Open the database(OPEN)
1、Start and instance
在NOMOUNT状态下,ORACLE开启一个实例,它会读取SPFILE或者PFILE指定参数文件中已定义好的初始参数值。进而分配 SGA 共享内存区并创建后台进程。可以使用RESTRICT和FORCE选项开启实例。在RESTRICT模式下,只允许DBA做以下工作:
执行结构维护,如重建索引;
执行数据库文件的导入导出;
执行数据库装载;
临时阻止用户使用数据。
2、Mount the database
以MOUNT方式加载数据库,实例会根据初始化参数CONTROL_FILES指定的值找到并打开控制文件,从控制文件中获取数据文件和重做日志文件的信息。在此状态下,数据库仍旧处于关闭状态,只允许具有数据库管理权限的部分用户对数据库进行操作,例如:
重命名数据文件;
添加、撤销或重命名重做日志文件;
启动和禁止重做日志归档;
执行全部的数据库恢复。
2.1 装载RAC
可以设置初始化参数CLUSTER_DATABASE为true,以装载多个数据库。默认情况下该初始化参数值为false,即将以独占的方式装载数据库。在第一个实例以CLUSTER_DATABASE=TRUE装载数据库之后,后续的实例也以CLUSTER_DATABASE=TRUE装载数据库。
2.2 装载副本数据库(standby database)
副本数据库是主数据库的一个完全相同的副本,可以为灾难继续提供数据库的可用性。副本数据库永远都处于RECOVERY模式。只能使用ALTER DATABASE命令将数据库以standby模式装载,在standby模式下应用主数据库产生的归档重做日志。只能以READ ONLY打开(OPEN)副本数据库
2.3 装载克隆数据库(clone database)
克隆数据库是专门用于表空间时间点恢复(point-in-time recovery)的数据库副本。在执行时间点恢复时,装载克隆数据库并将数据库恢复到预期的时间,则将从克隆数据库导入元数据(metadata)到主数据库、复制表空间中的数据文件到主数据库
3、Open the database
以OPEN方式打开数据库,至此数据库才算完全打开。数据库在打开时打开在线(online)数据文件和重做日志文件。如果表空间在上一次数据库关闭时处于offline状态,则在重新打开数据库时该表空间依旧保持offline状态。如果有数据文件或者重做日志文件存在异常,则ORACLE将返回错误。在打开数据库时,实例会试图获取undo表空间。如果初始化参数UNDO_MANAGEMENT值为AUTO,则实例自动管理UNDO。初始化参数UNDO_MANAGEMENT默认值为MANUAL。如果使用表空间管理UNDO,则会自动管理UNDO,此为推荐模式;如果使用回滚段(rollback segment)管理UNDO空间,则使用MANUAL方式管理。如果数据库非正常关闭,并且存在分散的有疑议的事务,无论是已提交还是已回滚,当你重新打开数据库并完全恢复时,后台进程RECO能够自动地、立即地、永久地完成此工作。
四、示例
1、 STARTUP
以默认参数文件(SPFILE)开启实例,装载默认的数据库,并打开数据库。
2、 STARTUP OPEN dbname
以默认参数文件(SPFILE) 开启实例,装载数据库dbname,并打开数据库。
3、 STARTUP FORCE RESTRICT MOUNT
4、 STARTUP PFILE=init_dbname.ora NOMOUNT
5、 STARTUP FORCE RESTRICT PFILE=init_dbname.ora OPEN dbname