Как установить tnsping?
Как мне установить tnsping? Я пытался установить oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
и я могу использовать некоторые клиентские команды, но nog tnsping.
2 ответа
Oracle Instance Client не включает tsnping
приложение. Вы должны запустить "Oracle Universal Installer" и включить опцию для него.
Я не помню точно, какую опцию вы должны установить, будь то "Oracle Database Utilities" или "Oracle Net"
Также смотрите McTnsping "автономная программа Windows, которая не требует клиента Oracle". Это портативный и не нуждается в установке.
Usage 1: McTnsping.exe { <tns entry> | <host>:<port> } [<count>]
<tns entry> the net service name in the tnsnames.ora file.
<host>:<port> server name or IP and port (mandatory)
<count> number of times to check target, default is 1.
Если кто-то достигнет такого места, как я... Вот что сработало для меня:
Мгновенный клиент Версия 12.2.0.1 + sqlplus + tnsping (скопирован с другого сервера той же версии)
Структура каталогов и env (как в профиле bash):
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=${ORACLE_BASE}/instant_client122
export PATH=$ORACLE_HOME:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME #since all binaries are in $ORACLE_HOME - no bin or lib are present
export TNS_ADMIN=$ORACLE_HOME/network/admin
скопировать с другого сервера в цель:
'tnsping' to $ORACLE_HOME
'$ORACLE_HOME/network/mesg/tnsus.msb' to $ORACLE_HOME/network/mesg
Затем введите правильные значения в $TNS_ADMIN/tnsnames.ora и загрузите переменные env. После этого он должен иметь возможность выполнять команду "tnsping" и отображать правильное сообщение в качестве ответа.
Вот что я сделал, чтобы скопировать tnsping
к другой машине. В моем случае клиент oracle установлен на C:\Oracle\product\12.1.0\client_1
,
Это предполагает, что на целевом компьютере уже установлен Instant Client или аналогичный; и что путь оракула и ключи реестра установлены.
(1) Копировать tnsping.exe
от источника к машине назначения, в client_1\bin
,
(2) Скопируйте следующие файлы из client_1\bin
в client_1\bin
:
oraasmclnt12.dll
oracell12.dll
oraclient12.dll
oraclsce12.dll
oracommon12.dll
oracore12.dll
orageneric12.dll
orahasgen12.dll
oraldapclnt12.dll
oran12.dll
orancds12.dll
orancrypt12.dll
oranhost12.dll
oranl12.dll
oranldap12.dll
oranls12.dll
oranro12.dll
orantcp12.dll
orantns12.dll
oraocr12.dll
oraocrb12.dll
oraocrutl12.dll
oraplp12.dll
orapls12.dll
ORASLAX12.DLL
orasnls12.dll
oraunls12.dll
orauts.dll
oravsn12.dll
oraxml12.dll
orazt12.dll
oraztkg12.dll
Это должно быть около 84,6 МБ.
(3) В client_1
на конечном компьютере создайте резервную копию следующих файлов:
oci.dll
orannzsbb12.dll
oraons.dll
orasql12.dll
orawsec12.dll
Теперь на исходном компьютере найдите эти файлы в client_1\bin
и скопировать их в client_1\
(без корзины) на целевом компьютере, перезаписывая существующие файлы. (Примечание: файл oci.dll меньше на ~330 КБ, файл orasql12.dll меньше на ~300 КБ. Я не уверен, что потеряно, следовательно, резервная копия).
(4) На конечном компьютере создайте каталог mesg
в client_1\Network
, Теперь скопируйте следующий файл из источника в место назначения:
client_1\Network\mesg\tnsus.msb
(5) Откройте regedit. Создайте следующий ключ:
HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\KEY_OraClient12Home1_32bit
(С другой машины, похоже, что версия x64 названа HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\KEY_OraClient12Home1
, но tnsping
Программа, которую я использую, говорит, что она 64-битная, так что...)
Под ключом создайте строку с именем ORACLE_HOME
со значением C:\Oracle\product\12.1.0\client_1
,
Вы должны быть сделаны сейчас ($$$
= отредактировано):
C:\Users\$$$>tnsping $$$
TNS Ping Utility for 64-bit Windows: Version 12.1.0.2.0 - Production on 03-APR-2
019 08:47:37
Copyright (c) 1997, 2014, Oracle. All rights reserved.
Used parameter files:
C:\Oracle\product\12.1.0\client_1\network\admin\sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
(HOST = $$$)(PORT = $$$))) (CONNECT_DATA = (SERVICE_NAME = $$$
$$$) (SERVER = DEDICATED)))
OK (30 msec)
Поиск проблемы
Вот процесс, которым я следовал, разделяя, когда эти шаги неизменно не работают на более поздней версии.
Во-первых, я просто скопировал tnsping.exe
над.
Я не случайно выбрал вышеупомянутые dll, насколько я могу сказать, что всем требуется. Я запустил exe, и это выскочило бы ошибку, я скопировал бы dll и попытался бы снова:
После нескольких dll вы столкнетесь с ошибками другого типа:
Если это произойдет, запустите монитор процесса и вставьте фильтр, чтобы ProcessName содержал tnsping
и попробуйте снова запустить программу. Вы должны увидеть что-то вроде следующего. Главное отметить, что он пытается загрузить (в этом примере) orawsec12.dll
, что успешно, но затем он продолжает пытаться загрузить DLL, глядя по-разному, а затем в конце он вызывает werfault
и программа заканчивается. Я думаю, он понимает, что есть какое-то несоответствие версий и продолжает искать правильную версию.
Отсутствующий раздел реестра будет отображаться как в мониторе процесса (операция RegOpenKey
результат NAME NOT FOUND
):
https://i.imgur.com/yHpjxLm.png
Если tnsus.msb
файл отсутствует, вы должны увидеть что-то вроде следующего в мониторе процесса (операция CreateFile
результат NAME NOT FOUND
):