среда, 1 апреля 2009 г.

Как выяснить ORACLE_HOME инстанса

В AIX'e и Linux'e:
ps axeww | grep pmon | grep -v grep | awk -F ORACLE_HOME= '{print $2}' | awk '{print $1}'


В Solaris'e:
ps -ef |grep pmon|grep -v grep|awk '{print $2}'|xargs pargs -e|grep ORACLE_HOME| grep -F= '{print $2}'


В HP-UX
rm -rf /
и установить другую ОС :-)

Upd:

Не заходя в базу, из шелла :-p
Для чего нужно? Ну, например, на сервере AIX находятся несколько инстансов, которые запущены из разных $ORACLE_HOME, но не все прописаны в /etc/oratab. Задача: выяснить сколько SGA выделено для каждой базы.

ps -ef | grep pmon | grep -v 'grep' | awk '{print $NF}' | awk -F_ '{print $NF}' | while read sid
do
export ORACLE_HOME=`ps axeww | grep ora_pmon_$sid | grep -v grep | awk -F ORACLE_HOME= '{print
$2}' | awk '{print $1}'`
export ORACLE_SID=$sid
res=`$ORACLE_HOME/bin/sqlplus -S "/ as sysdba" <<END
set termout off
set echo off
set head off
set feedback off
select '$sid ' || round(sum(value)/1024/1024) from v\\$sga;
END`
echo $res
done