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).应用程序 ...
随机推荐
- cmake 判断操作系统平台
转载自 cmake 判断操作系统平台 MESSAGE(STATUS "operation system is ${CMAKE_SYSTEM}") IF (CMAKE_SYSTEM_ ...
- 解决 Grep 的多次管道过滤问题
解决 Grep 的多次管道过滤问题 这是个问题,解决了 tail -f crazy.log | grep --line-buffered Hello | grep Time 解决 Grep 的多次管道 ...
- javascript 元编程之-代码修改代码
javascript 元编程之-代码修改代码 引言 重构代码是个体力活,特别是在确定重构方案后,剩下就是按方案调整代码,然后进行测试. 如何有好又快的调整到位代码,这是件不容易的事. 简单的代码,可以 ...
- 用qpython3写一个发送短信的程序
用qpython3写一个最简单的发送短信的程序 用qpython3写一个最简单的发送短信的程序到目前为止并没有多少手机应用是用python开发的,不过qpython可以作为一个不错的玩具推荐给大家来玩 ...
- Rsync+Sersync实时同步数据目录
第1章 Rsync简介 1.1 Rsync基本概述 rsync是一款开源的备份工具,可以在不同主机之间进行同步,可实现全量备份与增量备份 全量:将全部数据,进行传输覆盖 增量:只传输差异部分的数据 1 ...
- QTP(2)
注意: 在使用QTP录制代码时,能使用鼠标点击的就不要使用键盘操作,能单击的操作就不要使用双击 一.QTP的工作流程 1.录制测试脚本前的准备: a.分析被测系统是否可以实现自动化测试 b.分析被测系 ...
- mysql下优化表和修复表命令(repair table、optimize table)
随着mysql的长期使用,肯定会出现一些问题,一般情况下mysql表无法访问,就可以修复表了,优化时减少磁盘占用空间,方便备份. repair table table_name //修复表 optim ...
- Cordova热更新和App升级
web代码的更新此更新方式,只需要更新web前段代码,不需要更新android的原生代码.只是对js.html等的更新.1.添加插件 Cordova Hot Code Pushcordova plug ...
- IPC 进程间通信方式——信号量
信号量 本质上是共享资源的数目,用来控制对共享资源的访问. 用于进程间的互斥和同步 每种共享资源对应一个信号量,为了便于大量共享资源的操作引入了信号量集,可对多对信号量一次性操作.对信号量集中所有的操 ...
- Mybatis的@UpdateProvider注解的使用(转)
废话不多说,直接上代码 @UpdateProvider(type = AppProvider.class, method = "updateApp") Integer update ...