Я пытаюсь запустить какой-то SQL в скрипте SHELL после переключения пользователя внутри скрипта. Сценарий запускается от имени пользователя root, но я ищу su для oracle, войдите в систему как SYSDBA и запустите некоторый SQL.
Я определил SQL в переменной $ cmd, но он не вызывается и unixсреда не загружается должным образом.
typeset cmd="<<-SQL
WHENEVER SQLERROR EXIT SQL.SQLCODE;
SET FEEDBACK OFF HEAD OFF SERVEROUTPUT ON
select NAME, OPEN_MODE, sys_context('USERENV','ORACLE_HOME') ORACLE_HOME from v$database;
EXIT;
SQL"
ts_log "Running SQL"
su oracle -c "export ORACLE_SID=TESTDB;export ORAENV_ASK=NO;. /usr/local/bin/oraenv;sqlplus -s \'/ as sysdba\' ${cmd}"
Цель для запуска SQL! Извлечение кода является частью более широкого кода, который создает новый $ ORACLE_HOME и заменяет БД на «новый» $ORACLE_HOME
. Эта проверка докажет, что БД была заменена.