Oracle10g的启动和关闭及启动过程分析
登陆到Oracle用户
#su - oracle
设定相关变量
$export ORACLE_HOME=/u01/app/oracle
$export ORACLE_SID=orcl
启动监听
$lsntctl start
登陆到sqlplus
$sqlplus / as sysdba
启动实例和数据库
SQL>startup nomount
SQL>startup mount
SQL>startup open
或者
SQL>startup
关闭数据库:
SQL>shutdown immediate
或者
SQL>shutdown
启动过程分析
第一阶段:
SQL>startup nomount
在这一步时,Oracle读取spfile文件,并根据spfile文件内定义的参数启动instance,分配SGA,启动后台process,此时可以查看到instance状态
SQL>select * from v$instance;
也可以查询到启动参数:
SQL>show parameter;
或者
SQL>select * from v$parameter;
在shell下也可以查看到oracle后台process
$ps -ef|grep ora_
但这一阶段,无法查看到数据库信息,还没有加载控制文件,数据库信息和表空间信息是无法查询的,所以此时v$database和v$tablespace视图都是无法查询的
第二阶段:
SQL>startup mount
这一阶段Oracle会加载控制文件,控制文件中存储的是数据文件、redolog、表空间等的位置信息以及检查点等信息,spfile中记录了控制文件所在的路径,Oracle在第一阶段启动结束后,会根据该信息加载控制文件,完成第二阶段的启动,可以通过下面的命令查看控制文件的存储位置
SQL>show parameter control
或者
SQL>select * from v$controlfile;
默认的控制文件共有3个,内容完全一致,这样做的目的就是为了当其中一个控制文件损坏或丢失的时候,可以使用其他的控制文件启动数据库,因为控制文件对数据库至关重要,如果缺少了控制文件,数据库将无法启动,因此建议将控制文件放在不同的磁盘或者分区上,然后修改spfile中控制文件的路径。另外,控制文件和spfile都属于二进制文件,无法直接编辑和查看,也不要直接用文本编辑器去编辑,如果想查看控制文件的内容,可以在shell中使用如下命令:
$ strings control01.ctl |more
在这一阶段,有个口令文件也至关重要,路径位于$ORACLE_HOME/dbs/orapw[SID],如果mount成功,则Oracle内建用于可通过口令文件进行认证和登录,假如口令文件丢失,Oracle无法正常启动。如果口令文件丢失,可以通过orapwd命令重建口令文件,orapwd位于/$ORACLE_HOME/bin目录下。
第三阶段:
SQL>startup open
根据第二阶段在控制文件中找到的数据文件、redolog、表空间等的位置信息以及检查点信息,对datafile、表空间及日志文件进行检查,如果检查通过就正常启动,如果检查通不过就会报错,无法启动。主要就是检查datafile的头文件中记录的检查点信息和控制文件中记录的检查点信息是否一致。正常启动后,Oracle会使用$ORACLE_HOME/dbs/lk[SID]文件对数据库进行锁定,直接查看lkS[SID]文件时只会显示DO NOT DELETE THIS FILE!,不要删除该文件,因为该文件的作用是在数据库正常启动后对数据库进行锁定时用的。
阅读(1199) | 评论(0) | 转发(0) |