深入理解 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