3131# ###############################################################################
3232
3333# # Version of this script. Simply uses the date in YYYY-MM-DD format
34- GV_OCENV_VERSION=" 2022-08-10 "
34+ GV_OCENV_VERSION=" 2022-11-22 "
3535
3636# ##############################################################################
3737# # Environment support homogenization
140140 export ORIGINAL_LD_LIBRARY_PATH_PRE_ENVLOAD=" ${LD_LIBRARY_PATH} "
141141
142142 export GV_INITIAL_VARS_SAVED=TRUE
143+ GV_ENV_SPECIFIC_VARS=()
143144fi
144145
145146export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
@@ -523,12 +524,16 @@ alias pmon='ps -ef | grep -w -E "ora_pmon_[a-zA-Z0-9]+"'
523524[[ -n " $( which amon 2> /dev/null) " ]] && alias amon=" \$ (which amon) -l n"
524525if [[ " ${GV_OS_TYPE} " == " AIX" ]]
525526then
526- export GV_PAGER=more
527527 alias psg=' ps -ef | grep -v grep | grep '
528528else
529- export GV_PAGER=less
530529 alias psg=' ps aux | grep -v grep | grep --color=auto'
531530fi
531+ if [[ -x " $( which less 2> /dev/null) " ]]
532+ then
533+ export GV_PAGER=less
534+ else
535+ export GV_PAGER=more
536+ fi
532537alias via=' ${GV_PAGER} ${GV_INSTANCE_ALERT_LOG}'
533538alias vio=' ${EDITOR} /etc/oratab'
534539alias taa=' tail -n50 -f ${GV_INSTANCE_ALERT_LOG}'
@@ -611,9 +616,46 @@ clroraenv() {
611616 unset GV_INSTANCE_STATUS
612617 unset GV_IS_CDB
613618 unset GV_ORACLE_SID_LC
619+ for LV_VAR_NAME in " ${GV_ENV_SPECIFIC_VARS[@]} "
620+ do
621+ unset " ${LV_VAR_NAME} "
622+ done
623+ GV_ENV_SPECIFIC_VARS=()
614624 unset ORACLE_BASE
615625 unset ORACLE_HOME
616626 unset ORACLE_SID
627+ unset GV_PDB_LIST
628+ unset TNS_ADMIN
629+ export PATH=" ${ORIGINAL_PATH_PRE_ENVLOAD} "
630+ }
631+ add_env_specific_var () {
632+ if [[ -n " ${1} " ]]
633+ then
634+ GV_ENV_SPECIFIC_VARS[${# GV_ENV_SPECIFIC_VARS[@]} ]=" ${1} "
635+ fi
636+ }
637+ set_ora_home_env () {
638+ if [[ -z " $1 " ]]
639+ then
640+ echo " No ORACLE_HOME given as parameter." 1>&2
641+ return 1
642+ fi
643+ export ORACLE_HOME=" $1 "
644+ if [[ -x " ${ORACLE_HOME} /bin/orabase" ]]
645+ then
646+ ORACLE_BASE=" $( " ${ORACLE_HOME} /bin/orabase" ) "
647+ export ORACLE_BASE
648+ fi
649+ case " $( uname -s) " in
650+ " Linux" )
651+ export LD_LIBRARY_PATH=${ORACLE_HOME} /lib:${ORIGINAL_LD_LIBRARY_PATH_PRE_ENVLOAD}
652+ ;;
653+ " AIX" )
654+ export LIBPATH=${ORACLE_HOME} /lib:${ORIGINAL_LIBPATH_PRE_ENVLOAD}
655+ ;;
656+ esac
657+ export PATH=${ORACLE_HOME} /bin:${ORACLE_HOME} /OPatch:${ORIGINAL_PATH_PRE_ENVLOAD}
658+ unset GV_PDB_LIST
617659}
618660myoraenv_simple () {
619661 if [[ -z " ${2} " ]]
@@ -625,6 +667,8 @@ myoraenv_simple() {
625667 unset GV_DB_UNIQUE_NAME 2> /dev/null
626668 unset GV_DB_UNIQUE_NAME_LC 2> /dev/null
627669 unset TNS_ADMIN 2> /dev/null
670+ # # ORACLE_UNQNAME is not set by this method, but often sourced from srvctl in OCI environments
671+ unset ORACLE_UNQNAME 2> /dev/null
628672 if [[ -n " ${3} " ]]
629673 then
630674 export TNS_ADMIN=" ${3} "
@@ -664,12 +708,31 @@ myoraenv() {
664708 return 1
665709 fi
666710 myoraenv_simple " ${LV_ORACLE_SID} " " ${LV_ORACLE_HOME} " " ${LV_TNS_ADMIN} "
711+ if [[ -n " ${GV_GRID_HOME} " ]]
712+ then
713+ # # Read environment variables from GridInfrastructure ressource configuration
714+ while read -r LV_VAR_ASSIGNMENT
715+ do
716+ # # Make sure, that the variable actually contains something that can plausibly be a variable assignment
717+ if [[ " ${LV_VAR_ASSIGNMENT} " =~ .+= ]]
718+ then
719+ local LV_VAR_NAME=" ${LV_VAR_ASSIGNMENT% =* } "
720+ eval " export ${LV_VAR_ASSIGNMENT} "
721+ add_env_specific_var " ${LV_VAR_NAME} "
722+ fi
723+ done <<< " $(" ${LV_ORACLE_HOME} " /bin/srvctl getenv database -db " ${LV_DB_UNIQUE_NAME} " | grep " =" )"
724+ fi
725+
667726 if [[ -n " ${LV_DB_NAME} " ]]
668727 then
669728 GV_DB_NAME=" ${LV_DB_NAME} "
670729 fi
671730 if [[ -n " ${LV_DB_UNIQUE_NAME} " ]]
672731 then
732+ if [[ -z " ${ORACLE_UNQNAME} " ]]
733+ then
734+ export ORACLE_UNQNAME=" ${LV_DB_UNIQUE_NAME} "
735+ fi
673736 GV_DB_UNIQUE_NAME=" ${LV_DB_UNIQUE_NAME} "
674737 GV_DB_UNIQUE_NAME_LC=" $( echo " ${GV_DB_UNIQUE_NAME} " | to_lower) "
675738 fi
@@ -1104,19 +1167,19 @@ llh() {
11041167 }
11051168 if ($1 != "total") {
11061169 v_size = $5
1107- v_unit = "B "
1108- if ( v_size >= 1024 ) {
1109- v_size = v_size / 1024
1110- v_unit = "KB"
1111- if ( v_size >= 1024 ) {
1112- v_size = v_size / 1024
1113- v_unit = "MB"
1114- if ( v_size >= 1024 ) {
1115- v_size = v_size / 1024
1116- v_unit = "GB"
1117- }
1118- }
1119- }
1170+ v_unit = "B "
1171+ if ( v_size >= 1024 ) {
1172+ v_size = v_size / 1024
1173+ v_unit = "KB"
1174+ if ( v_size >= 1024 ) {
1175+ v_size = v_size / 1024
1176+ v_unit = "MB"
1177+ if ( v_size >= 1024 ) {
1178+ v_size = v_size / 1024
1179+ v_unit = "GB"
1180+ }
1181+ }
1182+ }
11201183 printf("%10s %4d %8s %-8s %7.2f %2s %3s %2s %5s %s\n", $1, $2, $3, $4, v_size, v_unit, $6, $7, $8, $9);
11211184 }
11221185 }'
@@ -1193,7 +1256,7 @@ edf() {
11931256 local LV_THRESHOLD_CRIT=95
11941257 local LV_THRESHOLD_WARN=85
11951258
1196- if [[ " ${GV_OS_TYPE} " == " AIX" ]]
1259+ if [[ " $( uname -s ) " == " AIX" ]] && ! (which df 2> /dev/null | grep -q " /opt/freeware/ " )
11971260 then
11981261 local LV_DF=" df -Pg"
11991262 else
@@ -1710,29 +1773,6 @@ vilsnr(){
17101773 ${GV_PAGER} " ${LV_LSNR_LOG} "
17111774 fi
17121775}
1713- set_ora_home_env () {
1714- if [[ -z " $1 " ]]
1715- then
1716- echo " No ORACLE_HOME given as parameter." 1>&2
1717- return 1
1718- fi
1719- export ORACLE_HOME=" $1 "
1720- if [[ -x " ${ORACLE_HOME} /bin/orabase" ]]
1721- then
1722- ORACLE_BASE=" $( " ${ORACLE_HOME} /bin/orabase" ) "
1723- export ORACLE_BASE
1724- fi
1725- case " ${GV_OS_TYPE} " in
1726- " Linux" )
1727- export LD_LIBRARY_PATH=${ORACLE_HOME} /lib:${ORIGINAL_LD_LIBRARY_PATH_PRE_ENVLOAD}
1728- ;;
1729- " AIX" )
1730- export LIBPATH=${ORACLE_HOME} /lib:${ORIGINAL_LIBPATH_PRE_ENVLOAD}
1731- ;;
1732- esac
1733- export PATH=${ORACLE_HOME} /bin:${ORACLE_HOME} /OPatch:${ORIGINAL_PATH_PRE_ENVLOAD}
1734- unset GV_PDB_LIST
1735- }
17361776fill_pdb_details_list () {
17371777 unset GV_PDB_LIST_DETAILS
17381778
@@ -2046,7 +2086,7 @@ list_homes() {
20462086}
20472087mystat () {
20482088 local LV_TARGET=" ${1} "
2049- if [[ " ${GV_OS_TYPE} " == " AIX" ]]
2089+ if [[ " $( uname -s ) " == " AIX" ]] && ! (which stat 2> /dev/null | grep -q " /opt/freeware/ " )
20502090 then
20512091 istat " ${LV_TARGET} " | awk ' /Owner/{split($2, v_a, "[()]"); print v_a[2]; }'
20522092 else
0 commit comments