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
3 комментария:
SELECT NVL(SUBSTR(FILE_SPEC, 1, INSTR(FILE_SPEC, '\', -1, 2) -1) , SUBSTR(FILE_SPEC, 1, INSTR(FILE_SPEC, '/', -1, 2) -1)) FOLDER FROM DBA_LIBRARIES WHERE LIBRARY_NAME = 'DBMS_SUMADV_LIB';
SELECT SUBSTR(FILE_SPEC,1,INSTR(FILE_SPEC,'LIB')-2) ORACLE_HOME
FROM DBA_LIBRARIES
WHERE LIBRARY_NAME='DBMS_SUMADV_LIB';
и еще
SQL > VAR OHM VARCHAR2(100);
SQL > EXEC DBMS_SYSTEM.GET_ENV('ORACLE_HOME', :OHM) ;
SQL > PRINT OHM
or
DECLARE
FOLDER VARCHAR2(100);
BEGIN
SYS.DBMS_SYSTEM.GET_ENV('ORACLE_HOME', FOLDER);
DBMS_OUTPUT.PUT_LINE(FOLDER);
END;
SQL> set autopri on
SQL> var oracle_home varchar2(255)
SQL> exec dbms_system.get_env('ORACLE_HOME',:ORACLE_HOME)
Отправить комментарий