深入理解 Oracle 启动原理

当oracle启动时,初始化参数文件的加载顺序为:spfilesid.ora、spfile.ora、initsid.ora

数据库处于SHUTDOWN状态:数据库处于停止状态。不能接受外界数据请求。使用操作系统命令ps –ef | grep ora看不到任何数据库进程的存在,启动脚本问dbstart
数据库处于NOMOUNT状态:数据库后台进程(ps -ef | grep ora_可查看)已经建立。并根据参数文件中关于SGA的相关参数,建立共享内存区和缺省的oracle数据库进程。并同时检查相关初始化参数的正确性,可以进行登入
数据库处于MOUNT状态:数据库读取控制文件中的内容,并按照控制文件中指定的参数找到相应的数据文件,并启动数据库的归档或非归档状态。数据库在此状态检查各个数据文件的一致性。如果出现数据文件损坏,要求用户进行恢复
数据库处于OPEN状态:数据库在此状态检查各个数据文件的一致性。如果出现数据文件损坏,要求用户进行恢复

相关命令

dbstart
shutdown normal
shutdown transactional
shutdown immediate
shutdown abort
startup nomount;
alter database mount
alter database open

一、状态解析

1.shutdown 状态

$ ps -ef | grep oracle
oracle    4524     1  0 00:54 ?        00:00:39 /data/oracle/product/11.2.0/db_1/bin/emagent
root     12825   974  0 13:49 ?        00:00:00 sshd: oracle [priv]
oracle   12832 12825  0 13:49 ?        00:00:00 sshd: oracle@pts/0
oracle   12833 12832  0 13:49 pts/0    00:00:00 -bash
oracle   13825 12833  0 13:54 pts/0    00:00:00 ps -ef
oracle   13826 12833  0 13:54 pts/0    00:00:00 grep --color=auto oracle
$ ipcs -a

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status
0x011268f0 458753     root       600        1000       8

------ Semaphore Arrays --------
key        semid      owner      perms      nsems

2.nomount

读取参数文件 SPFILE ---- 分配 SGA ---- 启动后台进程 --- 打开告警文件和跟踪文件
在启动实例时,将为实例创建一系列后台进程和服务进程,并且在内存中创建 SGA 区等内存结构。在实例启动的过程中只会使用到初始化参数文件,数据库是否存在对实例的启动没有影响。如果初化参数设置有误,实例将无法启动

$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Sun Mar 26 14:05:14 2017

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup nomount
ORACLE instance started.

Total System Global Area 3273641984 bytes
Fixed Size		    2217792 bytes
Variable Size		 2432698560 bytes
Database Buffers	  822083584 bytes
Redo Buffers		   16642048 bytes



select * from v$bgporcess;
select * from v$instance;
v$parameter、v$sga、v$process、v$session、v$instance等等
例如:
show parameter control_files;    //通过参数文件获得控制文件的位置
show sga;
SELECT * from v$sgastat          //SGA 分为不同的池
show parameter background_dump_dest;        //打开告警文件和跟踪文件,启动过程可以查看alert_orcl.log

3.mount

装载数据库就是把数据库文件和实例关联起来,包括以下三个步骤
Oracle根据参数文件 SPFILE 中的参数找到控制文件 ---》 打开控制文 ---》 从控制文件获得数据字典和重做日志文件的名字及位置
但此时还不能查询数据库文件,如表和视图。所以对于普通用户而言,这个时候数据库还是不可用的。只有等到经历了最后一步 打开数据库 之后,才能使用数据库

select * from v$tablespace;命名空间
select * from v$datafile;数据文件
select * from v$database;数据库信息 
v$controlfile、v$database、v$datafile、v$logfile

posted @ 2019-02-20 19:28  reaperhero  阅读(541)  评论(0编辑  收藏  举报