[20210722]数据库异常关闭的处理.txt --//昨天的测试,本来想输入show recyclebin,没想到手快使用命令补全输入shutdown immediate;然后马上按ctrl+c. --//我还输入一些命令还能正常使用.但是退出再次连接出现: $ rlsql SQL*Plus: Release 11.2.0.4.0 Production on Wed Jul 21 10:25:47 2021 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected. SYS@book> show sga ORA-01012: not logged on Process ID: 0 Session ID: 0 Serial number: 0 --//已经无法使用,所以讲做运维一定要小心.如果关闭生产库麻烦就大了. --//检查alert发现: Wed Jul 21 10:21:24 2021 Shutting down instance (immediate) Shutting down instance: further logons disabled ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Stopping background process MMNL Wed Jul 21 10:21:24 2021 Stopping background process CJQ0 Stopping background process MMON --//仅仅停止了3个进程. --//以下我通过测试演示数据库异常关闭的处理. 1.环境: SYS@book> @ ver1 PORT_STRING VERSION BANNER ------------------------------ -------------- -------------------------------------------------------------------------------- x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production 2.测试: SYS@book> shutdown immediate ORA-01013: user requested cancel of current operation --//执行后马上按ctrl+c. --//alert记录如下: Thu Jul 22 09:18:13 2021 Shutting down instance (immediate) Shutting down instance: further logons disabled Stopping background process MMNL Thu Jul 22 09:18:13 2021 Stopping background process CJQ0 Stopping background process MMON --//不退出会话,还可以执行命令. SYS@book> show sga Total System Global Area 643084288 bytes Fixed Size 2255872 bytes Variable Size 205521920 bytes Database Buffers 427819008 bytes Redo Buffers 7487488 bytes --//退出会话,然后打开两个session,以sys用户登录,注其它用户已经无法登录了. --//在其中一个会话上执行shutdown abort,注shutdown immediate无法正常执行. --//session 1,sesson 2不要退出. --//session 1: SYS@book> shutdown abort ORACLE instance shut down. $ ipcs ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status 0x00000000 33456130 oracle 640 12582912 1 dest 0x00000000 33488899 oracle 640 633339904 1 dest 0x00000000 33521668 oracle 640 2097152 1 dest ------ Semaphore Arrays -------- key semid owner perms nsems ------ Message Queues -------- key msqid owner perms used-bytes messages --//你可以发现还有1个连接attach共享内存段. $ free -m total used free shared buffers cached Mem: 129161 39955 89206 0 628 35884 -/+ buffers/cache: 3441 125719 Swap: 30718 0 30718 --//session 1: SYS@book> startup ORACLE instance started. Total System Global Area 643084288 bytes Fixed Size 2255872 bytes Variable Size 205521920 bytes Database Buffers 427819008 bytes Redo Buffers 7487488 bytes Database mounted. Database opened. $ free -m total used free shared buffers cached Mem: 129161 40466 88695 0 628 35885 -/+ buffers/cache: 3951 125209 Swap: 30718 0 30718 --//使用增加 40466-39955 = 511 $ ipcs ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status 0x00000000 33456130 oracle 640 12582912 1 dest 0x00000000 33488899 oracle 640 633339904 1 dest 0x00000000 33521668 oracle 640 2097152 1 dest 0x00000000 33718277 oracle 640 12582912 23 0x00000000 33751046 oracle 640 633339904 23 0xe8a8ec10 33783815 oracle 640 2097152 23 ------ Semaphore Arrays -------- key semid owner perms nsems 0x6aa88594 23920640 oracle 640 204 ------ Message Queues -------- key msqid owner perms used-bytes messages --//可以发现原来的共享内存段占用的内存没有释放.出现这种情况有一些数据库甚至无法启动的情况.感觉11g以后不会出现这种情况,具体看后面的测试. --//必须释放前面实例占用的共享内存段,当然我这里如果session 2退出,就可以释放. $ ipcs -t ------ Shared Memory Attach/Detach/Change Times -------- shmid owner attached detached changed 33456130 oracle Jul 22 09:22:36 Jul 22 09:22:36 Jul 22 09:15:43 33488899 oracle Jul 22 09:22:36 Jul 22 09:22:36 Jul 22 09:15:43 33521668 oracle Jul 22 09:22:36 Jul 22 09:22:36 Jul 22 09:15:43 33718277 oracle Jul 22 09:40:28 Jul 22 09:40:28 Jul 22 09:25:23 33751046 oracle Jul 22 09:40:28 Jul 22 09:40:28 Jul 22 09:25:23 33783815 oracle Jul 22 09:40:28 Jul 22 09:40:28 Jul 22 09:25:23 ------ Semaphore Operation/Change Times -------- semid owner last-op last-changed 23920640 oracle Thu Jul 22 09:41:59 2021 Thu Jul 22 09:41:59 2021 ------ Message Queues Send/Recv/Change Times -------- msqid owner send recv change --//有点奇怪的是这两个使用的共享内存段的地址是一样的. $ pstree -p | grep sqlplus | |-bash(40500)---rlwrap(18044)---sqlplus(18045)---oracle(18047) | `-bash(61211)---rlwrap(18052)---sqlplus(18053)---oracle(18229) $ cat /proc/18047/maps | grep SYSV 60000000-60c00000 rw-s 00000000 00:0b 33456130 /SYSV00000000 (deleted) 60c00000-86800000 rw-s 00000000 00:0b 33488899 /SYSV00000000 (deleted) 86800000-86a00000 rw-s 00000000 00:0b 33521668 /SYSVe8a8ec10 (deleted) $ cat /proc/18229/maps | grep SYSV 60000000-60c00000 rw-s 00000000 00:0b 33718277 /SYSV00000000 (deleted) 60c00000-86800000 rw-s 00000000 00:0b 33751046 /SYSV00000000 (deleted) 86800000-86a00000 rw-s 00000000 00:0b 33783815 /SYSVe8a8ec10 (deleted) --//使用ipcrm删除. $ ipcs -a | grep "dest *$" | awk '{print $2}' | xargs -IQ echo ipcrm -m Q ipcrm -m 33456130 ipcrm -m 33488899 ipcrm -m 33521668 $ ipcs -a | grep "dest *$" | awk '{print $2}' | xargs -IQ ipcrm -m Q $ ipcs ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status 0x00000000 33456130 oracle 640 12582912 1 dest 0x00000000 33488899 oracle 640 633339904 1 dest 0x00000000 33521668 oracle 640 2097152 1 dest 0x00000000 33718277 oracle 640 12582912 25 0x00000000 33751046 oracle 640 633339904 25 0xe8a8ec10 33783815 oracle 640 2097152 25 ------ Semaphore Arrays -------- key semid owner perms nsems 0x6aa88594 23920640 oracle 640 204 ------ Message Queues -------- key msqid owner perms used-bytes messages --//你可以发现竟然无法删除对应共享内存段.这也是我昨天遇到的情况. --//也就是你必须找到shmid= 33456130 33488899 33521668 的进程,kill掉才可以释放. # grep "SYSV" /proc/*/maps | egrep "33456130|33488899|33521668" /proc/18047/maps:60000000-60c00000 rw-s 00000000 00:0b 33456130 /SYSV00000000 (deleted) /proc/18047/maps:60c00000-86800000 rw-s 00000000 00:0b 33488899 /SYSV00000000 (deleted) /proc/18047/maps:86800000-86a00000 rw-s 00000000 00:0b 33521668 /SYSVe8a8ec10 (deleted) */ $ ps -fp 18047 UID PID PPID C STIME TTY TIME CMD oracle 18047 18045 0 09:20 ? 00:00:00 oraclebook (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) $ kill -9 18047 $ ipcs -a ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status 0x00000000 33718277 oracle 640 12582912 25 0x00000000 33751046 oracle 640 633339904 25 0xe8a8ec10 33783815 oracle 640 2097152 25 ------ Semaphore Arrays -------- key semid owner perms nsems 0x6aa88594 23920640 oracle 640 204 ------ Message Queues -------- key msqid owner perms used-bytes messages --//OK. $ free -m total used free shared buffers cached Mem: 129161 40390 88770 0 628 36101 -/+ buffers/cache: 3660 125501 Swap: 30718 0 30718
[20210722]数据库异常关闭的处理.txt
来源:这里教程网
时间:2026-03-03 16:50:35
作者:
编辑推荐:
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 一键解决ORA-00279 ORA-00289 ORA-00280
一键解决ORA-00279 ORA-00289 ORA-00280
26-03-03 - Oracle Recovery Tools恢复MISSING00000文件故障
- Oracle:容器数据库简介
Oracle:容器数据库简介
26-03-03 - 修改数据库字符集导致的数据异常
修改数据库字符集导致的数据异常
26-03-03 - 一键恢复ORA-01113 ORA-01110—Oracle Recovery Tools
- “你荐书,我买单!”——快来抱走你的精神食粮
“你荐书,我买单!”——快来抱走你的精神食粮
26-03-03 - 教你如何批量采集快手短视频,自媒体朋友必学
教你如何批量采集快手短视频,自媒体朋友必学
26-03-03 - 教你如何打造店铺爆品,增加客户流量
教你如何打造店铺爆品,增加客户流量
26-03-03 - 各路巨头都盯上了“芯片”
各路巨头都盯上了“芯片”
26-03-03 - goldengate表空间过大处理
goldengate表空间过大处理
26-03-03
