Your database is in the MOUNT state and you execute the following command to open it:
ALTER DATABASE OPEN;
What two actions are performed as a result of this command? (Choose two.)
A. All control files are opened.
B. All redo log files are opened
C. The password file is opened.
D. The parameter file is opened.
E. All online data files are opened.
Answer: BE
ACD明显错误
oracle启动时:nomount(获取参数文件)→mount(通过参数文件获取控制文件目录)→open(根据控制文件中记录的数据文件、日志文件的位置信息、检查点信息决定是否能启动数据库)
Oracle 数据库启动顺序和在各个阶段需要什么文件_小龙太子_新浪博客
Oracle Server主要是由两部分组成:Instance (实例)和Database。Instance 是指后台进程/线程和一块共享内存区域,
而Database 是指存储在磁盘上的一组物理文件。
数据库的启动
Oracle数据库的启动主要包含3个步骤:
- 启动数据库到nomount状态;
- 启动数据库到mount状态
- 启动数据库到open状态。
启动到不同状态所需要的文件是各不相同的,了解各个不同状态的情况有助于我们快速定位错误。
启动数据库到nomount状态
再启动的第一步,Oracle 首先会寻找参数文件(pfile、spfile),然后根据参数文件中的设置,创建实例,分配内存,启动后台进程。
在这一步中,只要拥有一个参数文件就可以启动Instance,在这一步中并不需要其他的任何控制文件或者数据文件的参与。
在创建数据库时,如果在这一步就出现问题,那么通常可能是系统配置(内核参数等)存在问题,用户需要检查是否分配足够的系统资源等(SAG,PAG内存,CPU等等)。
Oracle根据参数文件的内容,创建Instance,分配了相应的内存区域,启动了相应的后台进程。
观察警报日志文件alter-test.log(test 是Instance的 sid),可以看到这一阶段的启动过程,读取参数文件,应用参数启动实例,所有在参数文件中定义的非缺省参数都会记录在警报日志文件中。
Oracle选择参数文件的顺序
Oracle首先会选择spfile.ora 文件作为启动参数文件:如果该文件不存在,Oracle选择spfile.ora文件;如果两者都不存在,Oracle将会选择init.ora 文件;如果以上三个文件都不存在,Oracle将无法创建和启动Instance。
可以通过show parameter spfile 命令来查看数据库是否使用了spfile文件,如果value不为Null 则数据库使用了spfile文件
在使用RMAN (Recovery Manager)时存在更为特殊的情况,Oracle 允许在不存在参数的文件的情况下启动一个实例,数据库的db_name会被缺省命名为DUMMY。
启动到mount状态
启动到nomount状态以后,Oracle就可以从参数文件获得控制文件的位置信息
(Oracle 缺省会创建3个控制文件,这3个控制文件的内容完全一致,是Oracle为了安全而采用的镜像手段,在生产环境中,通常应该将3个控制文件存在不同的物理硬盘上,避免因为介质故障而同时损坏3个控制文件):
*.control_files='/u01/app/oracle/oradata/test/control01.ctl',
'/u01/app/oracle/oradata/test/control02.ctl',
'/u01/app/oracle/oradata/test/control03.ctl'
在nomount状态,可以查询v$parameter 视图来查看控制文件信息,这部分信息来自启动参数文件;当数据库mount之后,可以查询v$controlfile视图获得关于控制文件的信息,此时这部分信息来自控制文件。
在mount 数据库过程中,Oracle需要找到控制文件并锁定控制文件。如果控制文件全部丢失此时就会报出错误:
ORA-00205: error in identifying controlfile, check alert log for more info
因为Oracle的3个控制文件内容完全相同,如果只是损失其中1-2个可以复制完好的控制文件,更改为相应的名称,就可以正常启动数据库;如果丢失了所有的控制文件,那么就需要恢复或重建控制文件来打开数据库。
了解启动的各个步骤,也就是在发生问题的时候,快速定位,准确判断,从而快速解决问题。
在启动到mount状态,数据库必须具备的另外一个重要文件是口令文件,该文件位于$ORACLE_HOME/dbs目录下的,缺省的名称为orapw.
口令文件中存放sysdba/sysoper 用户的名字和口令
[oracle@testoracle dbs]$ strings orapwtest
启动数据库open阶段
由于控制文件中记录了数据文件、日志文件的位置信息、检查点信息等重要信息,所以在数据库的open阶段,ORACLE可以根据控制文件记录的这些信息找到这些文件,然后进行检查点以及完整性检查。
如果没有问题数据库是可以正常启动的,如果存在不一致或者文件丢失则需要进行恢复。
实际上在数据库open的过程中,ORACLE进行的检查包括以下两项:
第一次检查数据文件头中的检查点计数(Checkpoin cnt)是否和控制文件中的检查点计数一直,检查的目的是确认数据文件是来自同一版本,而不是从备份中恢复而来(因为checkpoint Cnt 不会被冻结,会一直被修改)。
如果检查点计数检查通过,则数据库进行第二次检查。第二次检查数据文件头的开始SCN和控制文件记录的该文件的结束SCN是否一致,如果控制文件中记录的结束SCN等于数据文件头的开始SCN,则不需要对那个文件进行恢复。