身为一个oracle新手,总结下最近学的东西
0.oracle的很多信息都保存在了警报日志文件中(alert_<sid>.log)。
在数据库出现问题的时候,提示中给出的可能不是完整的信息,而警报日志中则记录了完整的错误过程和错误号。
oracle启动主要包含三个步骤:
1.启动到nomount状态
2.启动到mount状态
3.启动到open状态
1.1首先,oracle首先寻找参数文件(spfile),根据参数文件中的设置,创建实例,分配内存,启动进程。
oracle首选spfile<sid>.ora文件作为启动参数文件,如果该文件不存在,oracle选择的参数文件依次为spfile.ora init<sid>.ora
如果这三个文件都不存在,oracle无法启动。
1.2参数文件中至少要写参数db_name。
1.3在使用rman的时候,oracle允许在不存在参数文件的情况下启动一个实例,db_name会被命名为dummy。
但是,必须在rman的环境中再运行startup nomount命令.
1.4 在nomount时,可以查询v$parameter试图,获取控制文件信息,这些信息来自参数文件。
2.1在mount数据库过程中,oracle需要找到控制文件并锁定控制文件。
控制文件有三个,是同一个文件的三个拷贝,寻找这些控制文件的信息通过spfile获取。
2.2在mount的过程中,数据库也需要口令文件orapw<sid>,如果不存在,oracle据需寻找orapw文件。
口令文件如果丢失,可以通过orapw工具重建口令文件。
3.1在open阶段,oracle根据控制文件中记录的数据库文件、日志文件的位置、检查点等信息启动。
3.2在open过程中,oracle需要检查两个地方:
3.2.1 检查数据文件头中的检查点计数(checkpoint cnt)是否和控制文件中的检查点计数一致。
3.2.2 检查数据文件头的开始scn和控制文件中记录的该文件的scn是否一致。
如果有任意一种不一致,就需要对数据库进行修复(可能是数据库恢复过来的文件)
警报日志中同样记录了整个启动过程。