Мне нужно подключить мой Oracle 11g DB из сценария оболочки с разрешениями «sysdba». Для этого мне нужно переключить пользователя с «root» на «oracle». Я пробовал следующее без успеха.Подключение к Oracle DB из сценария оболочки с помощью 'sysdba'
su - oracle -c "<< EOF1
sqlplus -s "/ as sysdba" << EOF2
whenever sqlerror exit sql.sqlcode;
set echo off
set heading off
shutdown immediate
startup mount
alter database archivelog;
alter database open;
exit;
EOF2
EOF1"
У меня возникла следующая ошибка.
[[email protected] devel]# ./enableArchiveLogs.sh en ERROR: ORA-01031: insufficient privileges
SP2-0306: Invalid option. Usage: CONN[ECT] [logon] [AS {SYSDBA|SYSOPER|SYSASM}] where ::= [/][@] [edition=value] |/ SP2-0306: Invalid option. Usage: CONN[ECT] [logon] [AS {SYSDBA|SYSOPER|SYSASM}] where ::= [/][@] [edition=value] |/ SP2-0157: unable to CONNECT to ORACLE after 3 attempts, exiting SQL*Plus [[email protected] devel]#
Насколько я понимаю, он не может аутентифицироваться как «sysdba». Это не происходит, если я исключаю «su - oracle -c» и запускаю скрипт в качестве пользователя оракула изначально.
Любые подсказки?
Я получил ответ:
Ответ довольно прост. Я просто немного испортил синтаксис. Ниже рабочая часть кода:
su - oracle -c 'sqlplus -s/as sysdba <<EOF
whenever sqlerror exit sql.sqlcode;
set echo off
set heading off
shutdown immediate
startup mount
alter database noarchivelog;
alter database open;
exit;
EOF
'
Какая у вас ошибка? – Thilo
Thilo, см. Отредактированный пост. Благодарю. – NetBear