look_for_running_sids.sh 4.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #!/bin/sh
  2. . ./helper_functions.sh
  3. #setAlias
  4. OS_NAME=`uname -s`
  5. MACHINE_NAME=`uname -n`
  6. sql_script=$1
  7. $ECHO CONNECTION_METHOD,ORACLE_HOME_SERVER,ORACLE_SID,OS_USER,TNS_NAME,TNS_HOST,TNS_PORT,TNS_SERVICE_NAME,TNS_SID,DB_USER,SQL,MACHINE_NAME >db_list.csv
  8. #count=0
  9. echo "#ps -ef | grep ora_pmon_ | grep -v grep" >look_for_running_sids.log
  10. ps -ef | grep ora_pmon_ | grep -v grep >>look_for_running_sids.log
  11. PMONPIDS=`ps -ef | grep ora_pmon_ | grep -v 'grep ora_pmon_' | awk '{print $2}'`
  12. for PID in $PMONPIDS
  13. do
  14. ORACLE_SID_PMON=`ps -ef | grep ora_pmon_ | grep -w $PID | sed 's/^.*ora_pmon_//g' | sed 's/ //g'`
  15. OS_USER=`ps -ef | grep ora_pmon_ | grep -w $PID | awk '{print $1}'`
  16. if [ "$OS_NAME" = "SunOS" ] ; then
  17. echo "#/usr/bin/pwdx $PID 2>/dev/null" >>look_for_running_sids.log
  18. /usr/bin/pwdx $PID 2>/dev/null >>look_for_running_sids.log
  19. echo "#/usr/bin/pargs -e $PID 2>/dev/null" >>look_for_running_sids.log
  20. /usr/bin/pargs -e $PID 2>/dev/null | egrep 'ORACLE_|LD_LIBRARY_PATH' >>look_for_running_sids.log
  21. ORACLE_HOME_WD=`/usr/bin/pwdx $PID 2>/dev/null | cut -d':' -f2 | sed -e 's/\/dbs//g' -e 's/ //g' -e 's/ //g' | awk '{print $1}'`
  22. ORACLE_HOME_ENV=`/usr/bin/pargs -e $PID 2>/dev/null | grep ' ORACLE_HOME=' | cut -d'=' -f2 | awk '{print $1}'`
  23. ORACLE_SID_ENV=`/usr/bin/pargs -e $PID 2>/dev/null | grep ' ORACLE_SID=' | cut -d'=' -f2`
  24. elif [ "$OS_NAME" = "AIX" ] ; then
  25. echo "#ls -l /proc/$PID/cwd 2>/dev/null" >>look_for_running_sids.log
  26. ls -l /proc/$PID/cwd 2>/dev/null >>look_for_running_sids.log
  27. echo "#ps eauwww $PID 2>/dev/null" >>look_for_running_sids.log
  28. ps eauwww $PID 2>/dev/null | tr ' ' '\012' | egrep 'ORACLE_|LD_LIBRARY_PATH' >>look_for_running_sids.log
  29. ORACLE_HOME_WD=`ls -l /proc/$PID/cwd 2>/dev/null | grep '>' | cut -d'>' -f2 | sed -e 's/\/dbs\///g' -e 's/ //g' | awk '{print $1}'`
  30. ORACLE_HOME_ENV=`ps eauwww $PID 2>/dev/null | tr ' ' '\012' | grep '^ORACLE_HOME=' | cut -d'=' -f2 | awk '{print $1}'`
  31. ORACLE_SID_ENV=`ps eauwww $PID 2>/dev/null | tr ' ' '\012' | grep '^ORACLE_SID=' | cut -d'=' -f2`
  32. elif [ "$OS_NAME" = "Linux" ] ; then
  33. echo "#/usr/bin/pwdx $PID 2>/dev/null" >>look_for_running_sids.log
  34. /usr/bin/pwdx $PID 2>/dev/null >>look_for_running_sids.log
  35. echo "#/usr/bin/strings /proc/$PID/environ 2>/dev/null" >>look_for_running_sids.log
  36. /usr/bin/strings /proc/$PID/environ 2>/dev/null | egrep 'ORACLE_|LD_LIBRARY_PATH' >>look_for_running_sids.log
  37. ORACLE_HOME_WD=`/usr/bin/pwdx $PID 2>/dev/null | grep -v denied | cut -d' ' -f2 | sed -e 's/\/dbs//g' | awk '{print $1}'`
  38. ORACLE_HOME_ENV=`/usr/bin/strings /proc/$PID/environ 2>/dev/null | grep -v denied | grep '^ORACLE_HOME=' | cut -d'=' -f2 | awk '{print $1}'`
  39. ORACLE_SID_ENV=`/usr/bin/strings /proc/$PID/environ 2>/dev/null | grep -v denied | grep '^ORACLE_SID=' | cut -d'=' -f2`
  40. elif [ "$OS_NAME" = "HP-UX" ] ; then
  41. echo "#/usr/bin/pfiles $PID 2>/dev/null" >>look_for_running_sids.log
  42. /usr/bin/pfiles $PID 2>/dev/null >>look_for_running_sids.log
  43. ORACLE_HOME_ENV=`/usr/bin/pfiles $PID 2>/dev/null | grep bin | cut -d':' -f2 | sed -e 's/ //g' -e 's/ //g' -e 's/\/bin\/oracle//g' | awk '{print $1}'`
  44. ORACLE_SID_ENV=$ORACLE_SID_PMON
  45. fi
  46. # count=`expr $count + 1`
  47. if [ "$ORACLE_HOME_ENV" = "" ]; then
  48. ORACLE_HOME_ENV=$ORACLE_HOME_WD
  49. fi
  50. if [ "$ORACLE_SID_ENV" = "" ]; then
  51. ORACLE_SID_ENV=$ORACLE_SID_PMON
  52. fi
  53. if [ "$ORACLE_HOME_ENV" = "" ];then
  54. ORACLE_HOME_ENV=UNKNOWN
  55. else
  56. $ECHO $ORACLE_HOME_ENV >>oracle_homes_a.txt
  57. echo "#ls -l $ORACLE_HOME_ENV/bin/oracle" >>look_for_running_sids.log
  58. ls -l $ORACLE_HOME_ENV/bin/oracle >>look_for_running_sids.log
  59. OS_USER_ENV=`ls -l $ORACLE_HOME_ENV/bin/oracle | tail -1 | awk '{print $3}'`
  60. if [ "$OS_USER_ENV" != "" ] && [ "$OS_USER_ENV" != "$OS_USER" ]; then
  61. OS_USER=$OS_USER_ENV
  62. fi
  63. if [ "$OS_NAME" = "SunOS" ] && [ "$OS_USER_ENV" = "" ] && [ "$ORACLE_HOME_WD" != "" ] && [ "$ORACLE_HOME_WD" != "$ORACLE_HOME_ENV" ]; then
  64. continue
  65. fi
  66. fi
  67. $ECHO LOCAL,$ORACLE_HOME_ENV,$ORACLE_SID_PMON,$OS_USER,,,,,,,$sql_script,$MACHINE_NAME >>db_list.csv
  68. done
  69. echo "#cat /etc/oratab" >>look_for_running_sids.log
  70. cat /etc/oratab 2>/dev/null | egrep -v '^#' | egrep -v '^$' >>look_for_running_sids.log
  71. chmod 777 db_list.csv
  72. if [ -f oracle_homes_a.txt ] ; then
  73. chmod 777 oracle_homes_a.txt
  74. fi