Должен ли CONNECT работать в сценарии SQL * PLUS?

Я хочу запустить сценарий sqlplus из задания cron.

Я подумал, что могу поставить такую ​​строчку:

CONNECT "myuser/mypass@mydb"

внутри скрипта, а затем просто выполните его с помощью:

sqlplus @myscript

Однако когда я это делаю, я получаю:

SP2-0306: Invalid Option
SP3-0157: unable to CONNECT to ORACLE after 3 attempts, exiting SQL*Plus

Я неправильно понимаю использование команды подключения?


person wadesworld    schedule 28.01.2010    source источник


Ответы (3)


При запуске CONNECT внутри SQL*Plus удалите кавычки:

CONNECT myuser/mypass@mydb

Двойные кавычки необходимы, если вы передаете учетные данные в качестве аргумента sqlplus:

sqlplus "myuser/mypass@mydb"

, чтобы оболочка анализировала myuser/mypass@mydb как единственный аргумент, если в идентификаторе соединения есть пробелы или используются дополнительные параметры, такие как AS SYSDBA.

person Quassnoi    schedule 28.01.2010
comment
@Wade: Он подключается из командной строки с теми же учетными данными? - person Quassnoi; 28.01.2010
comment
@Wade: у вас скрипт терпит неудачу только при запуске под cron? Не могли бы вы поместить CONNECT myuser/mypass@mydb в file.sql и запустить sqlplus /nolog @file.sql? - person Quassnoi; 28.01.2010
comment
Я пока не запускаю его под cron. Вы описываете то, что я делал. Однако ключевое отличие состоит в том, что я не использовал параметр / nolog. С этим вариантом все работает. Спасибо за помощь. - person wadesworld; 28.01.2010

Используйте параметр / NOLOG.

sqlplus /nolog @myscript
person Jeffrey Kemp    schedule 29.01.2010

Оракул 11gR2

Я запустил файл .sql через SQL * Plus, изначально подключенный как JOHN. Внутри файла я подключаюсь как SYS, а затем запускаю GRANT. См. Содержимое файла .sql ниже:

подключить sys / пароль как sysdba

ГРАНТ ВЫПОЛНИТЬ DBMS_CRYPTO ДЖОНУ;

подключить JOHN / DOE

ПРИМЕЧАНИЕ: я не рекомендую хранить системный пароль / пароль в текстовом файле, кстати.

HTH

person tale852150    schedule 26.11.2013