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).应用程序 ...
随机推荐
- MySQL单表查询实例
数据表准备 ```mysql create table emp( id int not null unique auto_increment, name varchar(20) not null, ...
- 1.opencv_画图
#导入工具包 import numpy as np import cv2 import matplotlib.pyplot as plt # 定义显示图片 def show(image): plt.i ...
- Java语言基础(13)
1 继承(二) 案例:Demo1 public class Demo1 { public static void main(String[] args) { Bmw bmw = new Bmw(); ...
- 网络协议相关面试问题-TLS与SSL握手
HTTPS是什么? HTTPS并不是一个单独的协议,而是对工作在一加密连接(SSL / TLS)上的常规HTTP协议.通过在TCP和HTTP之间加入TLS(Transport Layer Securi ...
- unbutu apt-get update失败及解决办法
今天在用apt-get update更新时一直失败,报的错误为”Failed to fetch 404 Not Found”,因为我的镜像改为了mirrors.aliyun.com 我试着ping了一 ...
- Python的在线编辑环境
另外,再提供几个Python的在线编辑环境,可以直接写代码并且运行的环境. 在线Python实验室:http://www.pythoner.cn/labs/ 在线Python编辑器:http://ww ...
- QT容器类
QList<T> 是一个指针数组,可以使用下标 append(), prepend(), insert() QList<QString> list; list<<& ...
- Springboot整合Ehcache 解决Mybatis二级缓存数据脏读 -详细
前面有写了一篇关于这个,但是这几天又改进了一点,就单独一篇在详细说明一下 配置 application.properties ,启用Ehcache # Ehcache缓存 spring.cache.t ...
- [易学易懂系列|rustlang语言|零基础|快速入门|(5)|生命周期Lifetime]
[易学易懂系列|rustlang语言|零基础|快速入门|(5)] Lifetimes 我们继续谈谈生命周期(lifttime),我们还是拿代码来说话: fn main() { let mut a = ...
- Q&A(一)
1.四种常见的无监督式任务? 聚类.可视化.降维.关联规则学习 2.什么是核外学习? 核外算法可以处理计算机主内存无法应对的大量数据.它将数据分割成小批量,然后使用在线学习技术从这些小批量中学习. 3 ...