Oracle数据库实例启动步骤分析

Oracle数据库实例启动步骤分析

3136发表于2015-04-05

了解启动oracle数据库必须要经过的几个过程是非常有必要的,对以后我们解决oracle启动故障是十分有帮助的。oracle有几个状态,shutdown,nomount,mount,open。每个状态要加载的文件,在这个状态下我们能做哪些操作都要记住。

1. shutdown-------->nomount

这个过程实质是启动实例,首先是到$oracle_home/dbs 寻找spfile 文件或 pfile 文件,找到后根据spfile 的参数创建sga 和process,从参数中找到控制文件的目录。

2. nomount--------->mount 加载控制文件,然后加载数据库的结构信息,如datafile 和redo log 的路径信息,此时数据字典和视图可以查询使用。

3. mount------------>open 使datafile 和redo log 联机,数据库可以正常使用。只有了解oracle 的启动原理,才能解决oracle 启动时的绝大多数错误。

在1 阶段中,可能遇到内核错误,找不到spfile,还有pfile 中指定的目录,这些都可能出错。 Sample1:Sample1:Sample1:Sample1:   

原因:实例启动的时候会到$oracle_home/dba 目录下寻找pfile 和spfile 文件,找不到以init+SID.ora 或spfile+SID.ora 命名的文件所以不能启动。

解决方法:

1.startup pfile=’/home/oracle/initelison.ora’或startup spfile=’/home/oracle/spfileelison.ora’

2.如果这两个文件丢失,先建一个init.ora 按你的数据库修改这个init.ora,然后用这个init.ora ,启动到nomoun 状态,再用create spfile=’XXXX’ from pfile=’XXXX’

3.当spfile 中指定的目录或文件不存在时也会报错,所以启动时最好先创建相应的目录和文件。如下图,如果找不到spfile 中的控制文件, db_recovery_file_dest=XXX control_files=XXX......也会报错。

Sample2:Sample2:Sample2:Sample2:增加控制文件增加控制文件增加控制文件增加控制文件    解决方法:先从系统中把控制文件copy 一份,然后启动到nomount 状态,由spfile 生成 pfile:create spfile from pfile(默认目录下不用指定路径),然后编辑文件文件 pfile,添加control_files=’XXX’(XXX 为你新增控制文件的全路径)。然后再执行create spfile from pfile(建议先把old_spfile 备份)。注:如果是linux 环境,可以用strings spfile_name >initelison.ora,然后再vi

 

省略重建pfile 的过程。

Sample3:rename datafile

Sample3:rename datafile Sample3:rename datafile

Sample3:rename datafile 和redo log fileredo log fileredo log fileredo log file   

从前面startup 的过程我们可以知道,mount 状态下的数据文件其实是脱机的,只有系统表空间加载了,所以 rename datafile 和redo log file 可以在 mount 下进行,rename 的实质就是修改控制文件,控制文件里有数据库结构的信息。有图有真相:图太长,只截一部分。

用alter database rename file XXX to XXX 可以重新修改文件的路径 alter database rename file '/u02/oradata/text01.dbf' to '/u02/oradata/elison/text01.dbf' alter database rename file '/u02/oradata/redo01.log' to '/u02/oradata/elison/redo01.log' 可以查询两个视图检查修改前后的变化: select * from v$datafile select * from v$logfile 修改后重新启动数据库,然后可以用:strings control_name 查看控制文件的变化。

注:

1.从本例可以看出,当表空间或数据文件变化的时候,都会往控制文件里写数据,所以最好是重新启动后(听说重启后才能更新控制文件,有待验证)备份控制文件。

2.系统表空间的数据文件不需要rename 的时候可以在open 下进行,只多两个步骤, rename 前先offline 数据文件,rename 后online 数据文件。

3.正常关闭数据库的时候,可以直接重建redo log,因为redo log 的dirty 数据已经写到数据文件。 4.表空间也可以rename 使表空间脱机 alter tablespace text02 offline alter tablespace text02 rename to text01__

小编蓝狐