Oracle 数据库实例启动与关闭

1.1启动流程详解

Oracle 实例启动分为三个阶段,每个阶段完成不同的初始化工作:

|-------------|----------------------|----------------------|
| 阶段 | 命令 | 完成的工作 |
| NOMOUNT | STARTUP NOMOUNT | 读取参数文件,分配 SGA,启动后台进程 |
| MOUNT | ALTER DATABASE MOUNT | 读取控制文件,定位数据文件和重做日志 |
| OPEN | ALTER DATABASE OPEN | 打开数据文件和重做日志,验证一致性 |

案例:分阶段启动排查控制文件损坏

**S --- Situation(场景):**数据库启动时报 ORA-00205: error in identifying control file,无法正常启动。

**T --- Task(任务):**通过分阶段启动定位是控制文件问题还是其他问题。

A --- Action(行动):

1、尝试启动到 NOMOUNT(测试参数文件和内存):

STARTUP NOMOUNT; -- 成功,说明参数文件和内存分配正常

2、尝试 MOUNT(测试控制文件):

ALTER DATABASE MOUNT; -- 失败,报 ORA-00205

3、检查控制文件配置:

SHOW PARAMETER CONTROL_FILES; -- 发现控制文件路径 +DATA/orcl/control01.ctl

4、检查控制文件是否存在:

ls -la +DATA/orcl/control01.ctl -- 文件不存在(ASM 磁盘组故障导致)

5、 从备份恢复控制文件:

RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP;

RMAN> ALTER DATABASE MOUNT;

RMAN> RECOVER DATABASE;

RMAN> ALTER DATABASE OPEN RESETLOGS;

**R --- Result(结果):**通过分阶段启动,快速定位到控制文件损坏问题。从 RMAN 备份恢复控制文件后,数据库正常打开。

1.2、关闭模式对比

|-------------------|---------|------------|------------|
| 模式 | 新连接 | 等待会话结束 | 等待事务提交 |
| NORMAL | 拒绝 | 是 | 是 |
| IMMEDIATE | 拒绝 | 否(强制断开) | 回滚未提交事务 |
| TRANSACTIONAL | 拒绝 | 否 | 等待当前事务完成 |
| ABORT | 拒绝 | 否 | 否(直接终止) |

案例:选择合适的关闭模式

**S --- Situation(场景):**运维团队需要在 30 分钟维护窗口内完成数据库补丁升级。数据库有 200 个活跃连接,部分会话执行长事务(预计 2 小时完成)。

**T --- Task(任务):**选择合适的关闭模式,确保在维护窗口内完成关闭,同时最小化数据风险。

A --- Action(行动):

1、 评估各模式可行性:

-- NORMAL:需要等待所有会话结束,长事务需 2 小时,超时

-- IMMEDIATE:强制断开连接,回滚未提交事务,约 5 分钟

-- TRANSACTIONAL:等待当前事务完成,约 30 分钟(边界)

-- ABORT:立即关闭,但需要实例恢复

2、选择 TRANSACTIONAL 模式:

SHUTDOWN TRANSACTIONAL;

3、如果超时则使用 IMMEDIATE:

--等待 20 分钟后,仍有事务未完成

SHUTDOWN IMMEDIATE;

4、完成补丁升级后启动:

STARTUP UPGRADE; -- 升级模式

-- 执行补丁脚本

@?/rdbms/admin/catupgrd.sql --执行升级脚本

SHUTDOWN IMMEDIATE; --数据库最常用、最安全的正常关闭命令,同时保证数据一致性和完整性

STARTUP; --重新以正常模式启动数据库

**R --- Result(结果):**在 25 分钟内完成关闭和补丁升级。TRANSACTIONAL 模式等待了大部分事务完成,IMMEDIATE 模式处理了剩余长事务。数据一致性完好。

1.3、启动故障排查

案例:参数文件缺失导致启动失败

**S --- Situation(场景):**数据库启动时报 ORA-01078: failure in processing system parameters,无法进入 NOMOUNT 阶段。

**T --- Task(任务):**排查参数文件问题并恢复启动。

A --- Action(行动):

1、检查参数文件搜索顺序:

-- Oracle 按以下顺序搜索:

$ORACLE_HOME/dbs/spfile<SID>.ora

$ORACLE_HOME/dbs/spfile.ora

$ORACLE_HOME/dbs/init<SID>.ora

2、检查文件是否存在:

ls -la $ORACLE_HOME/dbs/spfile*.ora

ls -la $ORACLE_HOME/dbs/init*.ora

3、如果 SPFILE 丢失,从 PFILE 启动:

STARTUP PFILE = '/tmp/initORCL.ora';

4、重建 SPFILE:

CREATE SPFILE FROM PFILE = '/tmp/initORCL.ora';

5、正常重启:

SHUTDOWN IMMEDIATE;

STARTUP;

**R --- Result(结果):**通过检查参数文件搜索顺序,快速定位到 SPFILE 丢失问题。从 PFILE 启动后重建 SPFILE,数据库恢复正常。

相关推荐
阳光九叶草LXGZXJ2 小时前
达梦数据库-报错-15-列【XXX】长度超出定义
linux·运维·数据库·sql·学习
字节渡客2 小时前
Redis键明明过期了,业务还在读到旧数据
数据库·redis·spring
OnlineProxy4 小时前
亚马逊多账号运营:如何在规避“关联封号”风险的同时实现电商规模化扩张
服务器·数据库·redis
辻弋2016 小时前
五年前的旅行视频糊成马赛克?Video2X用Real-ESRGAN逐帧重建细节,但只支持Windows、集显用户建议直接放弃
服务器·数据库·windows·游戏引擎·电脑
可乐鸡翅yeah_7 小时前
业务中 M3U8 水印相关坑,硬水印和动态水印区别
前端·网络·数据库·ffmpeg·m3u8在线
石头麻辣鱼7 小时前
Bamboo 调度系统 OceanBase 适配实战:存储过程迁移踩过的三个大坑
数据库
龙亘川7 小时前
数智驱动民政升级 精准守护民生保障
大数据·数据库·人工智能
念何架构之路8 小时前
zap扩展生态与总结
java·前端·数据库
晚安日记wanna8 小时前
MySQL 回表为什么这么慢?5 种优化手段逐个拆解
数据库·mysql·性能优化
第七页独白8 小时前
汽车零件厂如何通过 QMS 真正落地 IATF 16949——QMS软件系统:品质检验-内审稽核-8d客诉管理:全星质量管理软件系统
java·前端·数据库