Oracle 必要的后台进程
Oracle 必要的后台进程
Table of Contents
1 简述
oralce 每次大的版本变更,后台进程都会有一些变动 ,而有些新增的进程,或者由原来拆分的进程是不能杀的。 杀掉可能会引起数据库crash。哪些进程不能杀一定要清晰、明确。
2 必要进程
2.1 默认启动后台进程
11G
[oracle@test1 ~]$ sqlplus -v SQL*Plus: Release 11.2.0.4.0 Production [oracle@test1 ~]$ ps -ef|grep ora|grep -v su|grep -v grep|grep -v bash|grep -v more|grep -v ps oracle 23144 1 0 22:16 ? 00:00:00 ora_pmon_wtdb oracle 23152 1 2 22:16 ? 00:00:12 ora_vktm_wtdb oracle 23156 1 0 22:16 ? 00:00:00 ora_gen0_wtdb oracle 23158 1 0 22:16 ? 00:00:00 ora_diag_wtdb oracle 23160 1 0 22:16 ? 00:00:00 ora_dbrm_wtdb oracle 23165 1 0 22:16 ? 00:00:00 ora_dia0_wtdb oracle 23167 1 0 22:16 ? 00:00:00 ora_mman_wtdb oracle 23169 1 0 22:16 ? 00:00:00 ora_dbw0_wtdb oracle 23171 1 0 22:16 ? 00:00:00 ora_lgwr_wtdb oracle 23173 1 0 22:16 ? 00:00:00 ora_ckpt_wtdb oracle 23175 1 0 22:16 ? 00:00:00 ora_smon_wtdb oracle 23177 1 0 22:16 ? 00:00:00 ora_reco_wtdb oracle 23179 1 0 22:16 ? 00:00:00 ora_mmon_wtdb oracle 23181 1 0 22:16 ? 00:00:00 ora_mmnl_wtdb oracle 23183 1 0 22:16 ? 00:00:00 ora_d000_wtdb oracle 23185 1 0 22:16 ? 00:00:00 ora_s000_wtdb oracle 23237 1 0 22:16 ? 00:00:00 ora_arc0_wtdb oracle 23242 1 0 22:16 ? 00:00:00 ora_arc1_wtdb oracle 23244 1 0 22:16 ? 00:00:00 ora_arc2_wtdb oracle 23246 1 0 22:16 ? 00:00:00 ora_arc3_wtdb oracle 23249 1 0 22:16 ? 00:00:00 ora_qmnc_wtdb oracle 23266 1 0 22:16 ? 00:00:00 ora_cjq0_wtdb oracle 23317 1 0 22:16 ? 00:00:00 ora_q000_wtdb oracle 23319 1 0 22:16 ? 00:00:00 ora_q001_wtdb oracle 24533 1 0 22:21 ? 00:00:00 ora_smco_wtdb oracle 24546 1 0 22:21 ? 00:00:00 ora_w000_wtdb oracle 25095 1 0 22:23 ? 00:00:00 ora_j000_wtdb oracle 25097 1 0 22:23 ? 00:00:00 ora_j001_wtdb
默认启动的后台进程有: pmon vktm GENn diag dbrm DIAn mman DBWn lgwr ckpt smon reco mmon mmnl Dnnn Snnn ARCn qmnc CJQn Qnnn smco Wnnn Jnnn 23 种。
这些进程的作用,运行机制、触发机制,后面再详细了解,先来看下,哪些进程是必须的。
2.2 哪些进程不能杀
测试脚本
#!/bin/sh function startup() { sqlplus / as sysdba<<EOF startup exit EOF } started=`ps -ef|grep pmon|grep -v grep|awk '{print $2}'` test -z "$started" && startup>>/dev/null sleep 5 prolist=`ps -ef|grep ora|egrep -v 'bash|s[uh]|ps|grep|more|sleep|awk|LOCAL|sysdba|log' |awk '{print $NF}'` #echo $prolist for i in $prolist do proc_key=`echo $i|awk -F _ '{print $2}'` pid=`ps -ef|grep $proc_key|grep -v grep|awk '{print $2}'` #echo "oracle 进程 $i 进程关键字 $proc_key 进程ID $pid" #echo "kill 进程 $proc_key" test -z $pid && echo "$proc_key 不存在"|| kill -9 "$pid" sleep 20 pc=`ps -ef|grep pmon|grep -v grep|wc -l` echo "PMON 进程个数 $pc" if [ $pc -eq 0 ]; then echo "Kill 进程 $proc_key 会导致实例crash!" startup >> /dev/null sleep 5 else echo "Kill 进程 $proc_key 不会导致实例crash!" wexists=`ps -ef|grep w000|grep -v grep|wc -l` smc0exists=`ps -ef|grep smc|grep -v grep|wc -l` test -z $wexists && echo "w000 进程不存在" test -z $smc0exists && echo "smc 进程不存在" fi done结果
Kill 进程 pmon 会导致实例crash! Kill 进程 vktm 会导致实例crash! Kill 进程 gen0 会导致实例crash! Kill 进程 diag 不会导致实例crash! Kill 进程 dbrm 会导致实例crash! Kill 进程 dia0 不会导致实例crash! Kill 进程 mman 会导致实例crash! Kill 进程 dbw0 会导致实例crash! Kill 进程 lgwr 会导致实例crash! Kill 进程 ckpt 会导致实例crash! Kill 进程 smon 会导致实例crash! Kill 进程 reco 不会导致实例crash! Kill 进程 mmon 不会导致实例crash! Kill 进程 mmnl 不会导致实例crash! Kill 进程 d000 不会导致实例crash! Kill 进程 s000 不会导致实例crash! Kill 进程 p000 不会导致实例crash! Kill 进程 p001 不会导致实例crash! Kill 进程 arc0 不会导致实例crash! Kill 进程 arc1 不会导致实例crash! Kill 进程 arc2 不会导致实例crash! Kill 进程 arc3 不会导致实例crash! Kill 进程 qmnc 不会导致实例crash! Kill 进程 cjq0 不会导致实例crash! Kill 进程 q000 不会导致实例crash! Kill 进程 q001 不会导致实例crash!
秒做整理,可知Oracle 11G中 pmon,vktm,gen0,dbrm,mman,dbw0,lgwr,ckpt,smon 这 9 个进程是不能 杀的。都会导致数据库宕机。
上面的脚本,在测试过程中,sleep 的时间调整短一些,发现有时候kill dia0 进程,也会引起实例宕机。 所以这是一个陷阱,不小心就有可能掉进去。
也就是说Oracle 11G 中的必要进程包括9个必须进程+1个高风险进程。
细心的童鞋会发现,测试的结果中有一些进程没有,比如w000,smc0进程,这些进程在重启过程中没有被启动起来。这个现象本身也说明这些进程不是必要的。
Oracle 必要的后台进程的更多相关文章
- Oracle 体系结构三 后台进程
实例后台进程在启动实例时启动,在终止实例时终止运行. SMON SMON(system monitor)起初的任务是安装和打开数据.SMON通过查找和验证数据库控制文件来安装数据库.此后,它通过查找和 ...
- 关于Oracle数据库后台进程
为了最大限度地提高性能并适应许多用户,多进程Oracle数据库系统使用后台进程.后台进程将合并功能,否则这些功能将由运行于每个用户进程的多个数据库程序处理.后台进程异步执行I / O并监视其他Orac ...
- 实验,暂停oracle后台进程
有时出于测试需求,需要暂停oracle的某些后台进程,此时以暂停lgwr进程为例 使用sysdba连接到数据库查询到LGWR进程的PID:SQL> select prc.pid from v$b ...
- 【ora10,4】oracle后台进程介绍:
一.SMON(System MONitor) 系统监控进程: 在数据库启动过程中,SMON排在CKPT进程之后,在Oracle9i中排在第六号的位置: PMON started with p ...
- Oracle数据库的链接数目超标
测试场景:Oracle数据库的链接数目超标,iServer是否自动连接. 测试步骤:(1)设置了最大连接数为85,oracle后台进程有83:(2)开启3台iserver(A,B,C)A,B发布tes ...
- Oracle学习笔记一 初识Oracle
数据库简介 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库.SQL 是 Structured Query Language(结构化查询语言)的首字母缩写词. 定义 数据库,简单来 ...
- Oracle入门
一.Oracle数据库简介 Oracle数据库的主要特点 :支持多用户.大事务量的事务处理:数据安全性和完整性控制:支持分布式数据处理:可移植性. Oracle数据库基于客户端/服务器技术:数据库服务 ...
- Oracle体系结构详解
对于一门技术的学习,尤其是像Oracle database这种知识体系极其庞杂的技术来讲,从宏观上了解其体系结构是至关重要的.同时,个人认为,未必是专业DBA人员才需要了解其体系结构(固然对于数据库专 ...
- oracle 体系结构
oracle 体系结构 数据库的体系结构是指数据库的组成.工作过程与原理,以及数据在数据库中的组织与管理机制. 1. oracle工作原理: 1).在数据库服务器上启动Oracle实例:2).应用程序 ...
随机推荐
- 使用Django开发简单接口:文章增删改查
目录 1.一些准备工作 安装django 创建django项目 创建博客应用(app) 2.models.py 3.django admin 登录 创建超级用户 4.修改urls.py 5.新增文章接 ...
- Kernel boot options
There are three ways to pass options to the kernel and thus control its behavior: When building the ...
- /proc/filesystems各字段含义
/proc/filesystems A text listing of the filesystems which were compiled into the kernel. Incidentall ...
- deep_learning_Function_os.makedirs()
Python 3.2+ os.makedirs(path, exist_ok=True) python 3.2创建目录新增了可选参数existok,把existok设置True,创建目录如果已经存在则 ...
- JSON parse error: syntax error, expect {, actual error, pos 0, fastjson-version 1.2.58; nested exception is com.alibaba.fastjson.JSONExcetion: syntax error, except {, actual error, pos ...
这个报错信息告诉你,你提交的参数需要是json类型.所以,POST请求携带的数据需要序列化一下json.dumps(data).
- Alpha版本第一周小结
姓名 学号 周前计划安排 每周实际工作记录 自我打分(百分制) HTB 061126 1.博客撰写,分配任务 2.编码实现各个模块的功能 1.撰写博客 2.已初步实现各个模块的功能,对某些数据处理还存 ...
- Python标准库: turtle--海龟绘图。
turtle --- 海龟绘图 (点击查看官方文档.) 简介 import turtle # 调用该库.Turtle的实例对象,默认命名为turtle. turtle.forward(10) from ...
- python在pycharm中导包一直出错的问题
之前的net在code的子目录中,怎么调试都无法解决.最后用一个简单粗暴的方式,将net直接拿到项目的根目录中.如此即可
- ACID理解
数据库事物的4个特性. A原子性:多次操作要么全部成功,要么全部失败.undo日志是在事务执行失败的时候撤销对数据库的操作,保证了事务的原子性(Atomicity) C一致性:一致性这个最不好理解.数 ...
- java中的“指针”
java中的"指针" 通常我们说java中没有指针,但是java中的"引用"就相当于指针,只是不称为指针而已. 错误例子 public List<Clus ...