Я пытаюсь найти все состояние базы данных, которые были запущены.Для этого он попытался выполнить цикл в логике для всех 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
Теперь пытаемся получить каждый экземпляр, который работает ..ie только имя db_sid, опуская ora_smon_ и получая только имя для 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
Однако, как я обнаружил, ниже это вызывает проблемы .. потому что когдаЯ поставил некоторый отладочный эхо, оно не отображает "привет"
case "$db_sid" in
"$db_sid_pro")
echo "hi"
tag="true"
echo $tage
, а также я вручную проверил наличие строки ниже ... файлы действительно существуют в соответствии с условиями ниже
if [ -e $ora_home/dbs/spfile$db_sid.ora ];then
Любое предложениеили исправьте пожалуйста.
Заранее спасибо