1

Можно ли использовать sqlplus в качестве альтернативы для tnsping, так как tnsping не был установлен с установкой oracle. Я просто хочу проверить с помощью пакетного скрипта, доступны ли определения из tnsnames.ora.

Если нет, возможно ли впоследствии установить tnsping?

3 ответа3

0

Где-то в интернете есть "уродливый" взлом, показывающий, как добавить tnsping в установку InstantClient. По какой-то неизвестной причине Oracle настаивает на том, чтобы не встраивать ее в InstantClient, хотя разные клиенты спрашивали об этом много раз.

Вы можете использовать это, но:

  • Плюсы: tnsping связывается только с слушателем, он не будет проверять, действительно ли работает база данных. В то время как sqlplus также проверит "наличие" SID на стороне сервера базы данных.
  • Минусы: sqlplus не скажет вам, как было переведено имя базы данных. В то время как tnsping может указать вам на используемый файл sqlnet.ora и на то, были ли использованы TNSNAMES, ONAMES или LDAP.
  • Минусы: tnsping также сообщит вам hostname и port для базы данных
0

Из справочного документа по SQL * Plus (sqlplus --help):

Usage 2: sqlplus [ [<option>] [{logon | /nolog}] [<start>] ]
...
<start> is: @<URL>|<filename>[.<ext>] [<parameter> ...]

Это означает, что вы можете указать путь к скрипту, который будет запущен сразу после подключения / входа в систему.

Абсолютным базовым примером этого является эхо «выхода» в файл, а затем запустить этот файл, например

C:\>echo exit > exit.tmp
C:\>sqlplus /nolog @exit.tmp

SQL*Plus: Release 11.2.0.1.0 Production on Thu Nov 14 15:34:35 2013

Copyright (c) 1982, 2010, Oracle.  All rights reserved.


C:\>del exit.tmp

Конечно, выше я не вошел в базу данных, поэтому я не проверил базу данных. Если вы хотите проверить определенную запись в tnsnames.ora , вам, вероятно, потребуется указать полные учетные данные для этой службы в командной строке (возможны последствия для безопасности), в противном случае «выход», выданный вашим сценарием, вероятно, будет поглощен по приглашению имени пользователя, обычно выдаваемому sqlplus (либо это, либо ваш скрипт будет зависать при приглашении имени пользователя).

J.

0

Это зависит от того, что вы на самом деле хотели проверить с помощью TNSPING; само соединение, или скорость соединения, или оба. Но SQLPLUS будет использовать ту же настройку TNS, поэтому вы тестируете ту же настройку TNS.

И если вы пишете сценарий (даже Windows или Linux), вы МОЖЕТЕ записать время, необходимое для создания такого соединения, что было бы такой же целью, как TNSPING.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .