在一个启动了Oracle实例的UNIX系统上,使用ipcs命令可以看到共享内存的情况:
[oracle@ ~]$ ipcs
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x9a8837b4 163840 oracle 640 1050673152 20
------ Semaphore Arrays --------
key semid owner perms nsems
0x03c13d24 753664 oracle 640 154
数据库实例启动的第一步nomount:首先会装载参数文件,根据参数文件中定义的内存相关参数创建共享内存和信号灯,然后将参数文件装载到共享内存中被称为ksppi的内存区域,同时将当前实例的参数装载到一个独立的区域——ksppsv。根据参数文件,启动进程完成SGA中内存结构的初始化工作,然后启动相关的后台进程。
第二步:mount步骤
实例启动到nomount后,所有的共享内存和后台进程就都已经装载完毕。于是,系统根据参数文件中控制文件的位置,打开控制文件,并对控制文件进行校验,如果这个步骤没有发现问题,就完成了mount步骤。
第三步:
数据库实例mount完成后,通过对控制文件、UNDO和REDO等进行比对分析后,发现数据库状态是一致的,数据库实例就可以打开数据库了。数据库打开后,数据库实例就可以提供对外服务了。