Как заставить sqlplus завершить работу, когда база данных недоступна? - PullRequest
5 голосов
/ 04 июля 2011

У меня проблема с sqlplus в Windows. У меня SQLPLUS 10.2

Я пытаюсь подключиться к базе данных через скрипт Windows. Cmd

script.cmd только запускает: sqlplus test/Test@mydatabase @script.sql

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

ERROR:
ORA-12541: TNS:no listener
Enter user-name : 

и ожидает ввода .. и блокирует .cmd

Как я могу адаптировать скрипт для немедленной остановки, когда база данных недоступна или просто для того, чтобы избежать ожидания запросов пользователя?

Спасибо

Ответы [ 3 ]

14 голосов
/ 04 июля 2011

Вы можете сделать sqlplus -l test/Test@mydatabase @script.sql; флаг -l означает, что он будет пытаться подключиться только один раз, и, если по какой-либо причине произойдет сбой, выйдет вместо запроса. Посмотрите на вывод sqlplus -? или посмотрите документацию .

0 голосов
/ 04 июля 2011

Вы можете попробовать с 2-мя подключениями.

Первый из них будет буферизовать результат в файл.

Во втором проверьте, что находится в этом файле. Если вы не столкнулись с ORA-12541 или другими сообщениями об ошибках, вызовите второй сценарий.

Вы можете сделать все эти команды в одном пакетном скрипте и вызвать его с помощью

SQLPLUS @script.sql

и внутри использования

connect test/Test@mydatabase
0 голосов
/ 04 июля 2011

возможно, вам следует подумать об использовании утилиты TNSPING .Вы можете использовать его в сценарии CMD, прежде чем пытаться подключиться к БД с помощью sqlplusВ этом случае вы должны проанализировать его вывод.

...