Проблема с подключением (ORA-03135)с базой данных Oracle на виртуальной машине Azure Windows

Мы работаем с базой данных Oracle 19c на виртуальной машине Azure Windows. Наша конфигурация выглядит следующим образом:

  • Виртуальная машина Windows Azure
    • Стандартный B4ms (4 виртуальных процессора, 16 ГиБ памяти)
    • Общедоступный IP-адрес с «тайм-аутом простоя» 30 минут (максимально допустимый).
    • Oracle Database 19c

При работе с виртуальной машины нет «простоя» Сеансы SQL "отключены, но при доступе с общедоступного IP-адреса" неиспользуемые соединения SQL "отключаются через 30 минут.

ORA-03135: connection lost contact

Мы хотим, чтобы наши" неактивные соединения SQL "были постоянными, это то, что мы пробовали до сих пор. :

  1. Отредактировал файл sqlnet.ora следующим образом (клиент и сервер):
SQLNET.EXPIRE_TIME = 1000000
SQLNET.INBOUND_CONNECT_TIMEOUT = 1000000
  1. Отредактировал файл tnsnames.ora следующим образом (и клиент, и сервер):
(ENABLE=BROKEN)

В настоящее время я пытаюсь реализовать Oracle keep- живые пакеты, но я не добился успеха.

Есть какие-нибудь направления или идеи по этому поводу? Спасибо

[ОБНОВЛЕНИЕ] Я нашел решение, вот что я сделал, чтобы исправить это:

  1. Восстановить "sqlnet.ora" в нормальное состояние (и клиент, и сервер)
  2. Настроить (ENABLE = BROKEN) на "tnsnames.ora" файл (только на клиенте)
  3. Установка TCP KeepAlive (только на клиенте) в Regedit со следующими параметрами ( https://docs.microsoft.com/en-us/sql/connect/jdbc/ подключение к базе данных azure-sql? view = sql-server-ver15 )
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"KeepAliveTime"=dword:00007530
"KeepAliveInterval"=dword:000003e8
"TcpMaxDataRetransmissions"=dword:00000010
  1. Перезагрузить клиент
2
задан 15 September 2020 в 15:31
1 ответ

Вам нужно изменить одну или две настройки ядра на клиентской машине. Чтобы сделать поддержку активности TCP (ENABLE=BROKEN) полезной. По умолчанию ядро ​​​​Linux отправляет 1-й TCP-тест проверки активности через 2 часа:

Ядро Linux:

# cat /proc/sys/net/ipv4/tcp_keepalive_time
7200
Delay before the 1st probe is sent - after 2 hours !!!

# cat /proc/sys/net/ipv4/tcp_keepalive_intvl
75
Interval between probes.

# cat /proc/sys/net/ipv4/tcp_keepalive_probes
9
The number of "lost" probes indicating that the connection is dead.

Если установить время проверки активности и интервал проверки активности на 5 секунд (только для теста. 30 секунд должно быть более чем достаточно для работы), тогда вы должны увидеть что-то вроде этого в дампе TCP:

[~]# tcpdump -pni ens224 -v "tcp port 1521 and ( tcp[tcpflags] & tcp-ack != 0 and ( (ip[2:2] - ((ip[0]&0xf)<<2) ) - ((tcp[12]&0xf0)>>2) ) == 0 )"
tcpdump: listening on ens224, link-type EN10MB (Ethernet), capture size 262144 bytes
14:56:49.994675 IP (tos 0x0, ttl 64, id 12096, offset 0, flags [DF], proto TCP (6), length 52)
    192.168.8.200.37196 > 192.168.8.212.ncube-lm: Flags [.], cksum 0x9313 (incorrect -> 0x4b94), ack 2263270845, win 359, options [nop,nop,TS val 78140944 ecr 7133273], length 0
14:56:49.994829 IP (tos 0x0, ttl 64, id 55327, offset 0, flags [DF], proto TCP (6), length 52)
    192.168.8.212.ncube-lm > 192.168.8.200.37196: Flags [.], cksum 0xadcf (correct), ack 1, win 207, options [nop,nop,TS val 7138281 ecr 78110940], length 0
14:56:55.002668 IP (tos 0x0, ttl 64, id 12097, offset 0, flags [DF], proto TCP (6), length 52)
    192.168.8.200.37196 > 192.168.8.212.ncube-lm: Flags [.], cksum 0x9313 (incorrect -> 0x2474), ack 1, win 359, options [nop,nop,TS val 78145952 ecr 7138281], length 0
14:56:55.002809 IP (tos 0x0, ttl 64, id 55328, offset 0, flags [DF], proto TCP (6), length 52)
    192.168.8.212.ncube-lm > 192.168.8.200.37196: Flags [.], cksum 0x9a3f (correct), ack 1, win 207, options [nop,nop,TS val 7143289 ecr 78110940], length 0
14:57:00.010680 IP (tos 0x0, ttl 64, id 12098, offset 0, flags [DF], proto TCP (6), length 52)
    192.168.8.200.37196 > 192.168.8.212.ncube-lm: Flags [.], cksum 0x9313 (incorrect -> 0xfd53), ack 1, win 359, options [nop,nop,TS val 78150960 ecr 7143289], length 0
14:57:00.011296 IP (tos 0x0, ttl 64, id 55329, offset 0, flags [DF], proto TCP (6), length 52)
    192.168.8.212.ncube-lm > 192.168.8.200.37196: Flags [.], cksum 0x86af (correct), ack 1, win 207, options [nop,nop,TS val 7148297 ecr 78110940], length 0

6 packets captured
6 packets received by filter
0 packets dropped by kernel
1
ответ дан 14 September 2020 в 16:06

Теги

Похожие вопросы