Oracle 必要的后台进程

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进程,这些进程在重启过程中没有被启动起来。这个现象本身也说明这些进程不是必要的。

Author: halberd

Created: 2019-06-22 Sat 02:25

Validate

Oracle 必要的后台进程的更多相关文章

  1. Oracle 体系结构三 后台进程

    实例后台进程在启动实例时启动,在终止实例时终止运行. SMON SMON(system monitor)起初的任务是安装和打开数据.SMON通过查找和验证数据库控制文件来安装数据库.此后,它通过查找和 ...

  2. 关于Oracle数据库后台进程

    为了最大限度地提高性能并适应许多用户,多进程Oracle数据库系统使用后台进程.后台进程将合并功能,否则这些功能将由运行于每个用户进程的多个数据库程序处理.后台进程异步执行I / O并监视其他Orac ...

  3. 实验,暂停oracle后台进程

    有时出于测试需求,需要暂停oracle的某些后台进程,此时以暂停lgwr进程为例 使用sysdba连接到数据库查询到LGWR进程的PID:SQL> select prc.pid from v$b ...

  4. 【ora10,4】oracle后台进程介绍:

    一.SMON(System MONitor) 系统监控进程:      在数据库启动过程中,SMON排在CKPT进程之后,在Oracle9i中排在第六号的位置: PMON started with p ...

  5. Oracle数据库的链接数目超标

    测试场景:Oracle数据库的链接数目超标,iServer是否自动连接. 测试步骤:(1)设置了最大连接数为85,oracle后台进程有83:(2)开启3台iserver(A,B,C)A,B发布tes ...

  6. Oracle学习笔记一 初识Oracle

    数据库简介 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库.SQL 是 Structured Query Language(结构化查询语言)的首字母缩写词. 定义 数据库,简单来 ...

  7. Oracle入门

    一.Oracle数据库简介 Oracle数据库的主要特点 :支持多用户.大事务量的事务处理:数据安全性和完整性控制:支持分布式数据处理:可移植性. Oracle数据库基于客户端/服务器技术:数据库服务 ...

  8. Oracle体系结构详解

    对于一门技术的学习,尤其是像Oracle database这种知识体系极其庞杂的技术来讲,从宏观上了解其体系结构是至关重要的.同时,个人认为,未必是专业DBA人员才需要了解其体系结构(固然对于数据库专 ...

  9. oracle 体系结构

    oracle 体系结构 数据库的体系结构是指数据库的组成.工作过程与原理,以及数据在数据库中的组织与管理机制. 1. oracle工作原理: 1).在数据库服务器上启动Oracle实例:2).应用程序 ...

随机推荐

  1. mysql之使用json

    从mysql 5.7开始才有 创建表(含有json类型) CREATE TABLE `emp_details` ( `emp_no` int(11) NOT NULL, `details` json ...

  2. vue项目图标

    项目图标iconfont 网址:http://www.iconfont.cn

  3. 8、nginx基础

    1Nginx基本简述 Nginx是一个开源且高性能.可靠的Http Web服务.代理服务. 开源: 直接获取源代码 高性能: 支持海量并发 可靠: 服务稳定 我们为什么选择 Nginx服务 Nginx ...

  4. windows控制台,cmd,命令提示符下的基础操作

    打开dos命令窗口1.win+r-->运行-->cmd 2.摁住shift+鼠标右击 选择 在此处打开命令窗口3.在磁盘某文件夹下,选择标题栏中输入框,输入cmd 回车 windows下常 ...

  5. 十三,k8s集群web端管理工具dashboard部署

    目录 部署 dashboard 由于会被墙, 所以要加一步拉取镜像 正式开始安装dashboard 查看 开放访问 配置dashboard用户 1. token 令牌认证 创建一个 serviceAc ...

  6. 开源框架相关面试问题-butterknife注解框架面试问题讲解

    butterknife使用简介: 它的出现主要是为了解决咱们在android开发中会写大量的findViewById().setOnClickListener()这样的索然无味的代码,其实它就是一个依 ...

  7. SpringBoot使用JPA来做数据查询

    Spring-Data-JPA在做数据存储方面真的很方便,它的目的就是写更少的代码,更多的事情,但是也有其力有未逮或者说处理起来比较闹心的地方. 1.先来感受一下使用JPA做数据查询时,代码的简化程度 ...

  8. java 实现链表

    public class MyList { Entry head; class Entry { Object data; Entry next; public Entry(Object data) { ...

  9. java 发布订阅

    https://www.cnblogs.com/coderdxj/p/9627310.html java 观察这模式(发布订阅模式)   观察者设计模式定义了对象间的一种一对多的组合关系,以便一个对象 ...

  10. BZOJ1601 [Usaco2008 Oct]灌水[最小生成树]

    显然分析可知这个图最后连起来是一个森林,每棵树有一个根再算一个代价.那么这些跟需要连向某一点一个建立水库的代价,且根可以有多个但不能没有,则考虑用超级源点0向所有点连虚边,Prim跑MST即可保证有至 ...