2012-04-23 5 views
0

Мне нужно подключить мой 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 
' 
+0

Какая у вас ошибка? – Thilo

+0

Thilo, см. Отредактированный пост. Благодарю. – NetBear

ответ

0

CONNECT чан/тестирование SELECT * FROM студента; EXIT;

Сохранить как /shell_with_oracledb_test/r_connection2.sql

запись файла оболочки, как эхо "SQLPLUS/NoLog @/shell_with_oracledb_test/r_connection2.sql" | су - оракул

имя этого файла -> filename.sh

filename.sh файл преобразования приложений

Это пример кода.

Смежные вопросы