1.前言
上面一章主要介绍了数据库在nomount阶段中的一些日志文件以及v$process视图,可以通过操作系统的pid和v$process视图中的spid关联,就可以找到这个os上的进程在数据库内部的化身,从而可以进一步的跟踪诊断。
2.参数文件的选择(spfile<ORACLE_SID>.ora -->spfile.ora-->init<ORACLE_SID>.ora)
在oracle启动的过程中参数文件的顺序是:首选的是spfile<ORACLE_SID>.ora文件作为启动参数文件,如果该文件不存在,Oracle选择spfile.ora文件;如果前两者都不存在,Oracle将会选择init<ORACLE_SID>.ora文件;如果以上3个文件都不存在,Oracle将无法创建和启动instance,在oracle启动过程中,会在特定的路径中寻找参数文件,在unix/linux下的路径为$ORACLE_HOME/dbs目录下,在Windows上的路径为$ORACLE_HOMEdatabase目录下。
可以在sql*plus中通过show parameter spfile命令来检查数据库是否使用了spfile文件,如果value为Null,则数据库使用了spfile文件
SQL> show parameter spfile; NAME TYPE VALUE ------------------------------------ ---------------------- ------------------------------ spfile string /data/oracle/product/11.2.0/db_1/dbs/spfileorcl.ora
其实这里/data/oracle/product/11.2.0/db_1/dbs/spfileorcl.ora 等价与 ?/dbs/spfile@.ora 这里的?相当于$ORACLE_HOME @相当于$ORACLE_SID
如果这3个文件都不存在,Oracle将无法启动报错:
SQL> startup ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file '/data/oracle/product/11.2.0/db_1/dbs/initorcl.ora'
注意这里出现的错误提示,报告无法找到参数文件 init<ORACLE_SID>.ora,这正是oracle在启动过程中最后一个查找的参数文件。
首先,因为spfile文件是二进制文件,我们可以通过strings 命令进行查看,也可以通过spfile文件创建pfile文件,也可以通过pfile创建spfile文件
create spfile from pfile #执行完这个命令后我们会发现在$ORACLE_HOME/dbs目录下生成一个init<$ORACLE_SID>.ora文件
create pfile from spfile
?/dbs/spfile@.ora ---> ?/dbs/spfile.ora ---> ?/dbs/init@.ora
3.实例启动最小参数需求
在参数文件中,通常需要最少的参数是DB_NAME,设置了这个参数之后,数据库实例就可以启动了
4.ORACLE_SID的含义
SID是System IDentifier的缩写,而ORACLE_SID就是Oracle System IDentified的缩写,在oracle系统中,Oracle_SID以环境变量的形式出现,当Oracle实例启动时,在操作系统上fork的进程就依据这个ORACLE_SID来创建,这就是SID的作用。
oracle的实例(instance)是由一块共享内存区域(SGA)和一组后台进程(Background Processes)共同组成,而后台进程正是数据库和操作系统进行交互的通信,这些进程的名称就是通过ORACLE_SID决定的。
5.instance_name的含义
oracle数据库内部存在一个初始化参数instance_name,用于标识数据库实例的名字,其缺省值通常就是oracle_sid;但是初始化参数instance_name和oracle_sid可以不同,不同的实例可以拥有相同的instance_name.
6.db_name和instance_name
相较于instance_name而言,db_name显然是更重要的,db_name代表了实例即将挂接的数据库名称,关系到具体的物理文件,通常缺省的数据库instance_nanme和db_name可以设置一致(在RAC环境中,因为多个实例对应一个数据库,因此instance_name和db_name不同)
7.Nomount 案例两则
后续补充。。。