如何使用shell脚本检查前2个进程中是否有任何oracle实例进程?

时间:2017-12-20 08:34:30

标签: oracle shell

我需要检查前2个进程是oracle实例进程正在运行如果“是”发送带有v $ session详细信息的数据从数据库和sql文本进行查询..

我尝试过以下代码:

  cpu_ps=`top -b -o +%MEM | head -n 10 | grep ora* | head -n 2 | awk '{print $12}' | sed -e 's/ora_mman_*//g'`
ora_cpu=`echo -e "${cpu_ps} \n"`
    for ORACLE_SID in $ora_cpu
    do
        export ORACLE_SID=${ORACLE_SID}
        echo $ORACLE_SID
        export ORACLE_HOME=`grep -i "^${ORACLE_SID}:" /etc/oratab | cut -d: -f2 -s`
        export PATH=$ORACLE_HOME/bin:$PATH
         cpu_report=`${ORACLE_HOME}/bin/sqlplus -S -M "HTML ON TABLE 'BORDER="2"'" / as sysdba <<-EOF
        SET PAGES 10000
        SET LINES 3000
        COLUMN username  FOR a20
        COLUMN machine FOR a100
        select username,machine,program,status,count(*) from gv\\$session group by username,machine,program,status order by 1 asc;
exit
EOF`
echo $cpu_report > oracle_cpu_process.html

完成

我得到了像这样的输出

       **ora_mman_or+
       ora_mman_au+**

实际上我的oracle实例是orcle和autodb,但它显示如上输出...

如何检查前2个进程是否是oracle实例?并且需要每2分钟检查一次

0 个答案:

没有答案