oracle启动模式有3种:
Startup nomount (nomount模式)启动实例不加载数据库。
Startup mount (mount模式)启动实例加载数据库但不打开数据库
Startup (open 模式)启动实例加载并打开数据库,就是我们上面所用的命令
Nomount模式中oracle仅为实例创建各种内存结构和服务进程,不会打开任何数据库文件,所以说:
1) 创建新数据库
2) 重建控制文件
这2种操作都必须在这个模式下进行。
Mount模式中oracle只装载数据库但不打开数据库,所以说:
1) 重命名数据文件
2) 添加、删除和重命名重做日子文件
3) 执行数据库完全恢复操作
4) 改变数据库的归档模式
这4种操作都必须在这个模式下进行
Open模式(就是我们上面的startup不带任何参数的)呵呵就不多说了,正常启动。
当然这3种模式之间可以转换:
Alter database mount(nomount模式)—〉alter database open(mount 模式)—〉(open模式)
当然还有其它一些情况,在我们open模式下可以将数据库设置为非受限状态和受限状态
在受限状态下,只有DBA才能访问数据库,所以说:
1) 执行数据导入导出
2) 使用sql*loader提取外部数据
3) 需要暂时拒绝普通用户访问数据库
4) 进行数据库移植或者升级操作
这4种操作都必须在这个状态下进行
4.startup restrict 受限模式打开数据库
5.alter system disable restricted session 可以将受限状态改变为非受限状态。
6.alter system enable restricted session 将非受限状态变为受限状态
7.alter database open read only 使数据库进入只读状态。
8.alter database open read write 使数据库进入读写状态。
9.startup force 在某些情况下可能是用上述各种启动方式都无法成功启动数据库,这个时候就要使用startup force命令来强行启动数据库
10.shutdown 正常关闭数据库
11.shutdown immediate 立即关闭数据库
12.shutdown transactional 关闭事务数据库
当我们发出startup命令时,Oracle将开始启动,如果成功启动的话,这个实例启动的过程分为3个阶段。
1.Oracle启动模式的nomount阶段
nomount,在这个启动阶段里,Oracle主要做的事情,就是找到相关的启动参数文件,并且打开启动参数文件,根据启动参数里记录的参数值。
启动实例,并且启动成功的话,打开告警文件alert_.ora文件,这个文件默认在ORACLE_BASE/admin/SID /bdump下,并且记录相关的启动信息。如果在startup里指定了pfile=''的话,Oracle将从你指定的文件作为启动参数文件,如果是没有指定pfile的话,Oracle会先去默认目录($ORACLE_HOME/)下找spfileSID.ora,如果没有找到,则找 spfile.ora,如果还是没有,找initSID.ora,这个就是以前的静态参数文件了,如果没有则找init.ora;如果没有找到的话,这时候,启动就会有,找不到参数文件的错误,同时会动态注册实例名到监听服务里。
当然,在使用startup pfile=''前,我们需要先用create pfile from spfile;把实例的动态参数文件先export成静态的文本参数文件,然后根据合适的参数修改这个文件,修改好了一个在用这个pfile启动。
2.Oracle启动模式的mount阶段
当达到了nomount阶段以后,数据库就只能一步一步的来进行启动了,他的下一个启动的阶段,就是mount。我们通过alter database mount;来从nomount阶段或者通过startup mount来到达这个阶段,到达这个阶段,Oracle从启动参数文件里找到控制文件的路径参数值,找到所有的控制文件,然后打开读取控制文件的信息,控制文件里记录了各种表空间文件,日志文件的信息,以及数据库的字符集,其实就是控制文件里的记录(控制文件是可以指定多个的,只要有个一个不能成功读取,这个阶段将会失败),这时,数据库已经读取了相关系统文件的信息,也读取了字符集信息,但是仅仅只是读取,这些系统文件,并没有真正的加载到数据库里。
曾经有人启动到mount的时候,出现问题,最后一看原来是control文件这里已经被删除掉了,解决的办法,就是从备份的控制文件来一个过来,然后做恢复就可以了。如果没有备份,在nomount下,新建一个controlfile,就可以了。
3.Oracle启动模式的open阶段
mount阶段结束后,数据库体系的所有信息已经读取全了,我们知道了redo文件,数据文件的信息,但是还没有加载,到open状态,数据库读取所有的文件,如果有一个文件不能成功读取,open阶段就会失败。这时候,我们能够解决的就是通过错误的提示,进行数据恢复,或者错误排查。
这一个阶段的错误的各种原因最多,处理起来的方式也相对于前面的要复杂的多,不过基本上都是和数据文件,日志文件缺失,数据scn不一致,等等有关,这时我们需要做的就是根据错误的提示来进行相应的数据恢复,和数据排查,这块是数据库恢复最有趣的地方。
本文来自: 中国自学编程网(www.zxbc.cn) 详细出处参考:http://www.zxbc.cn/a/Oracle/20100506085739.html