For Loop for oracle进程状态

时间:2018-11-16 07:27:42

标签: linux loops unix process

我正在尝试查找所有正在运行的数据库状态。为了达到这一目的,我尝试对当前正在运行程序的所有db_sid进行逻辑循环,但是即使我手动检查数据库和列表器已启动,结果也会出错 现有的oracle实例正在运行。

[oracle@ip-xx-xx-xx-xxx~]$ ps -ef|grep smon oracle 15093 1 0 Nov08 ? 00:00:30 ora_smon_orcl oracle 15486 1 0 Nov08 ? 00:00:30 ora_smon_orcltest

现在,通过省略ora_smon_并仅获取名称,尝试获取每个正在运行的实例(仅db_sid名称) 对于ora_smon_orcl ==> orcl 对于ora_smon_orcltest ==> orcltest

for db_sid in `ps -ef | grep smon | grep -v grep | awk '{ print $8 }' | cut -d '_' -f3` ; do
echo $db_sid
db_sid_pro="ora_smon_$db_sid"
echo $db_sid_pro
source /home/oracle/$db_sid
ora_home=$ORACLE_HOME
echo $ORACLE_HOME
case "$db_sid" in
"$db_sid_pro")
echo "hi"
tag="true"
echo $tag
msg="$db_sid database instance is running"
echo "$db_sid_pro database process is running"
;;
*)
if [ -e $ora_home/dbs/spfile$db_sid.ora ];then
msg="database is down"
echo "database is down"
tag="false"
else
tag="false"
msg="Incorrect database SID - $db_sid. Please provide the correct database SID"
echo "Incorrect database SID - $db_sid. Please provide the correct database SID"
fi
;;
esac

以下显示在终端上的输出是:但是我手动检查了数据库是否打开,侦听器也打开了。可能是我在编程逻辑中缺少了一些东西,实际上不是数据库问题。

orcl
ora_smon_orcl
/dbusr/app/oracle/product/12102
database is down
Oracle listener is down please make it up
database is down
Oracle listener is down please make it up
orcltest
ora_smon_orcltest
/dbusr/app/oracle/product/12102
database is down
Oracle listener is down please make it up
database is down
Oracle listener is down please make it u

但是我发现下面会引起麻烦..因为当我放置一些调试回显时它不会显示“ hi”

case "$db_sid" in
"$db_sid_pro")
echo "hi"
tag="true"
echo $tage

而且我已经手动检查了下一行。文件确实按照以下条件存在

if [ -e $ora_home/dbs/spfile$db_sid.ora ];then

请提出任何建议或更正。

预先感谢

0 个答案:

没有答案