当前位置: 首页 > news >正文

# Oracle shutdown immediate关不掉——一次排坑实录

Oracle shutdown immediate关不掉——一次排坑实录

Oracle执行shutdown immediate半天关不掉。监控IO发现只有控制文件在读写,其他数据文件全部静默。最终强制关库,重启后一切正常。这个案例值得记录,因为"关不掉"比"打不开"更让人慌。


文章目录

  • Oracle shutdown immediate关不掉——一次排坑实录
    • 背景
    • 一、shutdown immediate卡住了
    • 二、监控IO,发现异常
    • 三、判断:继续等还是强杀?
    • 四、强制关库
    • 五、验证业务
    • 六、复盘:为什么卡住了?
    • 七、几点经验

背景

某天,运维通知配合云厂商做服务器降配——内存从64G降到32G,CPU也相应减少。需要先把数据库停掉再操作。

数据库是Oracle 11g,跑了几年,数据量不大(几百GB),平时运行正常。

计划很简单:停应用 → shutdown immediate → 等云厂商降配 → 启动数据库 → 启动应用。

前三步出了问题。


一、shutdown immediate卡住了

SQL>shutdownimmediate;

敲完回车,等了5分钟,没反应。正常情况下这个库shutdown最多两三分钟。

又等了10分钟,还是没有返回。光标就停在那儿,什么都不输出。

shutdown immediate的行为是:

  1. 不让新会话登录
  2. 等活跃事务提交或回滚
  3. 把buffer cache里的脏块写盘(checkpoint)
  4. 关闭所有文件,退出

如果卡住,通常是第2步或第3步。要么有大事务在回滚,要么脏块太多写不完。


二、监控IO,发现异常

开另一个终端,用iostat看磁盘IO:

iostat-x25

发现:只有控制文件所在的磁盘有IO活动,数据文件、redo日志、归档日志全部静默。

又查了Oracle的等待事件:

selectevent,wait_class,count(*)fromv$sessiongroupbyevent,wait_classorderbycount(*)desc;

等待事件显示的是control file sequential readcontrol file parallel write,反复出现。

这个现象说明:

  • checkpoint已经做完了——数据文件没有IO就是证据,脏块已经写完了
  • shutdown在等其他东西——不是IO瓶颈,是某个内部流程卡住了

控制文件在shutdown immediate期间被反复读写,这是Oracle在做检查点推进和SCN更新。正常情况下这个过程很快,但如果实例状态有点脏(比如有大事务还没清理完,或者SMON在后台做事务恢复),这个过程就会反复刷控制文件。


三、判断:继续等还是强杀?

两个选择:

  1. 继续等——不确定要等多久,可能是几分钟,也可能是几小时。而且降配窗口有时间限制,不能无限等下去。
  2. shutdown abort——强制关库,不等了。风险是实例恢复(instance recovery)需要时间,但Oracle的崩溃恢复机制是成熟的。

想了想,决定强杀。理由:

  • checkpoint已经完成了(数据文件没有IO)
  • redo日志也是静默的,说明没有活跃事务在产生redo
  • 唯一的风险是SMON可能还在回滚某些东西,但重启后SMON会继续做,不丢数据

四、强制关库

SQL>shutdownabort;ORACLE instance shut down.

秒关。

然后启动:

SQL>startup;ORACLE instance started.Total SystemGlobalArea xxx bytesFixedSize xxx bytes Variable Size xxx bytesDatabaseBuffers xxx bytes Redo Buffers xxx bytesDatabasemounted.Databaseopened.

启动过程中,alert日志里可以看到SMON在做实例恢复(instance recovery):

SMON: enabling cache recovery SMON: enabling tx recovery Completed crash recovery at ... (scn ...)

整个过程十几秒,没有报错。


五、验证业务

数据库打开后,检查了一下:

selectstatusfromv$instance;STATUS------------OPENselectcount(*)fromv$recover_file;COUNT(*)----------0

实例状态OPEN,没有需要恢复的文件。通知应用启动,业务验证正常。


六、复盘:为什么卡住了?

事后分析,最可能的原因:

降配前,服务器资源已经开始被限制了。云厂商在窗口期之前可能已经做了部分资源限制(比如IOPS上限降低),导致Oracle在做最后的清理工作时,控制文件的IO变慢。shutdown immediate要反复更新控制文件中的检查点SCN,在IO受限的情况下就卡在那里了。

加上shutdown immediate本身是一个同步阻塞操作——它不告诉你进度,你也不知道它卡在哪一步,只能干等。


七、几点经验

1.shutdown immediate卡住不要慌,先看IO。

iostatv$session_wait看等待在哪里。如果数据文件有IO,说明checkpoint还在做,可以等。如果只有控制文件有IO,大概率是内部清理工作,可以考虑shutdown abort

2.shutdown abort没有想象中那么可怕。

很多人一听abort就怕数据丢失。实际上Oracle的WAL(Write Ahead Logging)机制保证了:只要redo日志没坏,shutdown abort后重启,SMON会自动做前滚(roll forward)和回滚(rollback),数据不会丢。

3. 维护前,提前做一次checkpoint。

altersystemcheckpoint;altersystem switch logfile;

手动触发一次checkpoint和日志切换,把脏块提前刷盘。这样shutdown immediate时需要做的工作量会小很多。

4. 给shutdown加个超时意识。

如果5分钟还没关掉,不要再傻等了。去看等待事件,判断是在做有用的事还是在空转。


相关阅读:

  • 《Oracle数据库无备份强制恢复:SCN不一致、oradebug与ORA-600[2662]》
  • 《Oracle Undo回滚段损坏修复:用系统表空间绕过损坏的undo》
  • 《Oracle Redo日志损坏恢复:_allow_resetlogs_corruption与open resetlogs》
http://www.jsqmd.com/news/708604/

相关文章:

  • 开源游戏兼容性工具的终极指南:让经典游戏在现代系统完美运行
  • 5分钟快速上手:图形化ADB工具AutumnBox终极指南
  • TestDisk PhotoRec 终极数据恢复指南:从分区修复到文件恢复的完整解决方案
  • C语言轻量加密在STM32F4上的极限压测报告(RAM<1.2KB,ROM<4.8KB,AES-128加解密<8.3ms)
  • Elasticsearch搜索排序实战:时间衰减函数(Decay Function)评分优化全解析
  • CompressO:免费开源的终极跨平台视频压缩工具完整指南
  • 深入PyTorch显存管理:从`memory_allocated`到`memory_reserved`,彻底搞懂你的GPU内存到底被谁‘吃’掉了
  • 如何高效使用DLSS Swapper:完整实用的游戏性能优化指南
  • 【风暴之城】游玩日记 新手攻略(4)
  • 抖音视频批量下载终极指南:douyin-downloader免费无水印工具完整教程
  • 别再手动写Dockerfile了!Docker AI Toolkit 2026自动生成AI应用容器镜像,支持37种框架+12类硬件加速器,3步完成交付
  • 告别ArUco?实测对比AprilTag与ArUco在机器人视觉引导中的性能差异
  • 深度探索CyberpunkSaveEditor:揭秘《赛博朋克2077》存档逆向工程的完整实战指南
  • 复旦微Procise升级IAR9.20后报错?手把手教你修复‘No IAR tool’s location’问题
  • Sunshine游戏串流终极指南:从零开始打造你的专属云游戏服务器
  • 别再只盯着Wi-Fi信号了!聊聊那些藏在基站和路由器里的‘全向高增益天线’到底是怎么工作的
  • Windows蓝屏0xE6?别慌,手把手教你用WinDbg定位NVIDIA显卡驱动的DMA违规问题
  • 全面数据恢复方案:TestDisk与PhotoRec的实战技术深度解析
  • Copilot Next 自动化工作流配置到底难在哪?揭秘92%候选人栽在的3个隐性配置断点
  • 告别C++编译等待:用Rust重写Qt小部件,体验极速构建与内存安全
  • 造心脏容易造大脑难
  • Termux里Kali Nethunter装好却上不了网?别急,手把手教你改DNS和换源(保姆级避坑)
  • 终极指南:DellFanManagement如何彻底解决你的笔记本风扇噪音问题
  • 告别SDK!用Vitis IDE给ZYNQ板子固化程序到Flash的保姆级图文教程
  • NXDumpTool核心功能解析:Switch游戏转储工具使用全攻略
  • 音乐解锁完整指南:3步免费解密任何加密音乐文件
  • 快速上手VMware Unlocker:3步完成macOS虚拟机安装的完整教程
  • PvZWidescreen终极指南:免费实现《植物大战僵尸》完美宽屏适配
  • Echarts label的formatter回调函数,我是这样玩出花的:动态样式与条件判断实战
  • 分子建模新手村:用Moltemplate+Anaconda在Ubuntu 20.04快速搭建第一个LAMMPS模型