您的位置:首页 > 数据库 > Oracle

Oracle启动模式及其常见问题探讨

2012-09-10 19:22 274 查看
[b]oracle启动模式有3种:[/b]

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 受限模式打开数据库

[b]5.alter system disable restricted session [/b]可以将受限状态改变为非受限状态。

6.alter system enable restricted session 将非受限状态变为受限状态

[b]7.alter database open read only 使数据库进入只读状态。
8.alter database open read write 使数据库进入读写状态。
[/b]

[b]9.[/b]startup force 在某些情况下可能是用上述各种启动方式都无法成功启动数据库,这个时候就要使用startup force命令来强行启动数据库

10.shutdown 正常关闭[b][b]数据库[/b][/b]

11.shutdown immediate [b]立即关闭数据库[/b]

[b]12.[/b]shutdown transactional 关闭事务[b]数据库[/b]

当我们发出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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐