Назад | Перейти на главную страницу

Сбой подключения из приложения к общему сетевому ресурсу

РЕДАКТИРОВАТЬ: Я протестировал еще несколько ... Если я скопирую nslookup из каталога Windows на подключенный сетевой диск, он не сможет разрешить имена хостов:

H:\nslookup dbserver
(null)   UnKnown
Address:  192.168.0.195

Если я использую nslookup по умолчанию из C ::

C:\>nslookup dbserver

Server:  dnsserver.dom.local
Address:  192.168.0.195

Name:    dbserver.dom.local
Address:  192.168.0.231

Так что это не имеет отношения к оракулу, я изменю заголовок и теги.


Мои коллеги создают приложения, которые используют установленный Oracle-client для подключения к удаленным Oracle-DB. Запуск этих приложений с подключенного диска в DFS (на двух серверах) приводит к успешному соединению. Запуск их с подключенного диска на другом сервере (автономный файловый сервер) приводит к Нет связь вообще. Я отследил это через Wireshark и заметил, что даже не было попытки установить соединение (никакие пакеты oracle не выходят из клиента).

Я отключил брандмауэры на сервере БД, файловом сервере и клиентах, но безрезультатно. Все подключенные сетевые диски (DFS и стандартный файловый сервер) помещены в зону интрасети.

Если я использую tnsping из моей локальной установки Oracle-client я могу разрешить хост:

OK (20 ms)

Если я использую tnsping помещенный в подключенный сетевой диск на файловом сервере, я не могу:

TNS-12545: Connect failed because target host or object does not exist

К ОДНОЙ Oracle-БД.

Я не понимаю, см. Выдержку из журнала неудачных попыток ниже:

nfun2awanm: Getting the path of sqlnet.ora
nnfun2awanm: Getting the adapter name
nnfun2awanm: exit
nsmal: 216 bytes at 0x75e228
nscall: connecting...
snlinGetAddrInfo: entry
snlinGetAddrInfo: getaddrinfo() failed with error 11003
snlinGetAddrInfo: exit
nlad_expand_hst: GetAddrInfo call failed
nladini: entry
nladini: exit
nladget: entry
nladget: exit
nsmal: 89 bytes at 0x7b2c48
nsc2addr: (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dbserver)(PORT=1521))(CONNECT_DATA=(SID=instance)))
nttbnd2addr: entry
snlinGetAddrInfo: entry
snlinGetAddrInfo: getaddrinfo() failed with error 11001
snlinGetAddrInfo: exit
nttbnd2addr: looking up IP addr for host: dbserver
snlinGetAddrInfo: entry
snlinGetAddrInfo: getaddrinfo() failed with error 11003
snlinGetAddrInfo: exit
nttbnd2addr:  *** hostname lookup failure! ***
nttbnd2addr: exit
nserror: nsres: id=0, op=77, ns=12545, ns2=12560; nt[0]=515, nt[1]=1003, nt[2]=0; ora[0]=0, ora[1]=0, ora[2]=0
nsmfr: 89 bytes at 0x7b2c48
nscall: connecting...
nladget: entry
nladget: exit

По сравнению с успешным запросом:

nnfun2awanm: Getting the path of sqlnet.ora
nnfun2awanm: Getting the adapter name
nnfun2awanm: exit
nsmal: 216 bytes at 0x31426e8
nscall: connecting...
snlinGetAddrInfo: entry
snlinGetAddrInfo: exit
snlinGetNameInfo: entry
snlinGetNameInfo: exit
snlinFreeAddrInfo: entry
snlinFreeAddrInfo: exit
nladini: entry
nladini: exit
nladget: entry
nladget: exit
nsmal: 95 bytes at 0x30f3158
nsc2addr: (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.231)(PORT=1521))(CONNECT_DATA=(SID=instance)))
nttbnd2addr: entry
snlinGetAddrInfo: entry
snlinGetAddrInfo: exit
nttbnd2addr: using host IP address: 192.168.0.231
snlinFreeAddrInfo: entry
snlinFreeAddrInfo: exit
nttbnd2addr: exit
nsmal: 996 bytes at 0x3142bc8
nsmal: 2120 bytes at 0x3142fb8
nsmal: 84 bytes at 0x3143948
nsopen: opening transport...
nttcon: entry
nttcon: toc = 1
nttcnp: entry
nttcnp: exit
nttcni: entry
nttcni: Tcp conn timeout = 60000 (ms)
nttctl: entry
nttctl: Setting connection into non-blocking mode
nttcni: trying to connect to socket 564.
ntt2err: entry
ntt2err: exit
ntctst: size of NTTEST list is 1 - not calling poll
nttctl: entry
nttctl: Clearing non-blocking mode
snlinGetNameInfo: entry
snlinGetNameInfo: exit
nttcni: connected on ipaddr 192.168.0.99
nttcni: exit
nttcon: set TCP_NODELAY on 564
nttcon: exit
nsopen: transport is open

Вставив эти результаты в serverfault, я просто понял, что успешная попытка может разрешить имя хоста через DNS, а неудачная - нет. Так кажется, это даже не связано с Oracle?

Как вы полагаете, это проблема разрешения имени хоста на автономном сервере.

Псевдоним TNS на автономном сервере, где имя dbserver используется, похоже, отличается от того, что на серверах, где работает tnsping, где IP 192.168.0.231 используется.

Вы можете изменить tnsnames.ora файл на автономном сервере для использования IP 192.168.0.231 или добавьте запись в hosts файл для разрешения имени dbserver