一、启动
1. 启动数据库实例
open
mount
nomount -->数据库在处于nomount阶段时,实例已经启动,smon,pmon可以查看到信息
shutdown
命令:
SYS@OCPLHR1> startup nomount
[oracle@localhost ~]$ ps -ef | grep smon
oracle 15416 1 0 18:04 ? 00:00:00 ora_smon_OCPLHR1
oracle 15495 15469 0 18:07 pts/6 00:00:00 grep smon
[oracle@localhost ~]$ ps -ef | grep pmon
oracle 15392 1 0 18:04 ? 00:00:00 ora_pmon_OCPLHR1
oracle 15497 15469 0 18:07 pts/6 00:00:00 grep pmon
2. 数据库启动过程经历的几个过程
1)nomount
按以下顺序在$ORACLE_HOME/dbs目录下搜索参数文件:
spfile< SID >.ora、 spfile.ora、 init< SID>.ora
根据参数内容分配SGA
启动后台进程
打开并修改告警日志文件有以及跟踪文件
注意:该阶段用户数据库创建,控制文件重建,特定的备份恢复等。
此阶段不打开任何控制文件以及数据文件。在RMAN恢复是,还原数据控制文件在该阶段执行
2)mount
利用参数文件中的CONTROL_FILES的值,打开并锁定控制文件
将数据库与实力关联起来
读取控制文件并获取数据文件和redo日志文件的名称和状态,但不检查数据和日志文件是否存在
注意:该阶段会读取控制文件,如果控制文件不存在,那么数据库就无法启动
该阶段用于以下场景:
1、重命名数据文件,移动数据文件位置等
2、修改数据库的归档模式
3、实现数据库的完全恢复
3)open
打开数据文件
打开联机重做日志文件
注意:oracle将校验所有的数据文件和联机日志文件能否打开并对数据库做一致性检查。
如果出现一致性错误,那么SMON进程将启动实例恢复。
如果任意一个数据文件或者联机日志文件丢失,那么oracle数据库会摆错
二、关闭
关闭模式
ABORT
IMMEDIATE
TRANSACTIONAL
NORMAL
1)shutdown normal
正常关闭数据库后悔发生以下情况:
不可建立新连接
oracle服务器在完成关闭之前先等待所有用户断开连接
后台进程终止,从内存中删除SGA
oracle服务器在关闭实例之前关闭并卸装数据库
下一次启动不需要进行实例恢复
2)shutdown transactional
采用这种关闭方式可防止客户机丢失数据,其中包括客户就当前活动的结果。
执行事务处理数据库关闭时会发生以下情况:
任何客户机都不让在这个特定实例上启动新的事务处理
会在客户机结束正在进行的事务处理后断开客户机
完成所有的事务处理后立即执行关闭
下一次启动不需要在进行实例恢复
3)shutdown immediate(默认关闭方式)
oracle db 正在处理当前SQL语句不会完成执行
oracle服务器不等待当前连接到数据库的用户断开连接
oracle服务器会退回活动的事务处理,并断开所有连接的用户
oracle服务器在关闭实例之前关闭并卸装数据库
下一次启动不需要进行实例恢复
4)showdown abort
终止数据库实例:
oracle db 正在处理当前SQL语句会立即终止
oracle服务器不等待当前连接到数据库的用户断开连接
数据库和重做缓冲区未写入磁盘
不退回未提交的事务
实例终止,但不关闭文件
数据库未关闭或未卸装
下一次启动时需要进行实例恢复,实例恢复是自动进行的