一、数据库实例启动的三个阶段
启动数据库分为三个阶段:
Startup nomount; --startup缺省为startup open
Alter database mount;
Alter database open;
可以通过select status from v$instance;来查看实例启动到哪个状态。
select * from v$database;
| 第一阶段:Nomount |
| 条件: |
| 参数文件存在 |
| 参数文件中描述的目录存在(adump,bdump,cdump,udump) |
| 作用: |
| 修改参数文件 |
| 查看部分v$数据字典 |
| 创建数据库(后自动open) |
| 创建控制文件(后自动mount) |
| 数据库:(加载了实例) |
| 加载了参数文件 |
| 申请了内存(SGA) |
| 启动了后台进程 |
| 命令: |
| startup nomount |
| alter database mount; |
| 第二阶段:Mount |
| 条件: |
| 控制文件存在且已同步 |
| 并且必须是好的(名字一致,个数一致,路径一致,scn号一致) |
| 作用: |
| 修改参数 |
| 查看所有v$数据字典 |
| 把数据文件离线 |
| 备份、恢复 |
| 修改数据库的归档模式 |
| 把.dbf .log文件搬家 |
| 数据库: |
| 加载了控制文件 |
| 加载了所有的v$数据字典 |
| 命令: |
| Startup mount |
| alter database open; |
| alter database open read only; |
| 第三阶段:Open |
| 条件: |
| 数据文件存在且已同步 |
| 日志文件存在 |
| 作用: |
| 修改参数 |
| 可以查所有字典 |
| 把数据文件离线 |
| 把表空间离线 |
| 操作数据(表,视图) |
| 数据库: |
| 申请了内存 |
| 启动了后台进程 |
| 加载了参数文件 |
| 加载了控制文件 |
| 根据控制文件的描述,加载相应的数据文件,和日志文件 |
| 加载了所有的字典 |
| 命令: |
| startup open |
另外特别的:startup force
等同于 shutdown abort+
startup open
二、数据库实例关闭的四种模式
shutdown immediate
| normal | transactional | immediate | abort | |
| 允许新连接 | 0 | 0 | 0 | 0 |
| 等待会话结束 | 1 | 0 | 0 | 0 |
| 等待事务结束 | 1 | 1 | 0 | 0 |
| 检查点并关闭文件 | 1 | 1 | 1 | 0 |
| 做一个检查点, 关闭数据文件, 启动时不需要实例恢复 | 做一个检查点, 关闭数据文件, 启动时不需要实例恢复 | 做一个检查点, 关闭数据文件, 启动时不需要实例恢复 | 不做检查点, 不关闭数据文件, 启动时自动进行实例恢复(mount->open) |
三、打开数据库后,如果有以下项丢失,数据库会失败:
• 任何控制文件
• 属于系统表空间或还原表空间的数据文件
• 整个重做日志组(只要组中至少有一个成员可用,实例就会保持打开状态。)
abort
等同于停电,且在下次正常启动恢复之前,不允许在mount
状态下修改参数,例如归档、闪回,检查点是为了保证数据一致性,写入数据文件。
四、linux下dbstart,dbshut启动关闭数据库
参考文献:
本文详细介绍了Oracle数据库实例启动的三个阶段(Nomount、Mount、Open)及关闭的四种模式(Normal、Transactional、Immediate、Abort),并解释了各阶段的作用与条件。此外,还提供了在Linux环境下使用dbstart和dbshut命令启动和关闭数据库的方法。
2595

被折叠的 条评论
为什么被折叠?



