Мы работаем с базой данных Oracle 19c на виртуальной машине Azure Windows. Наша конфигурация выглядит следующим образом:
При работе с виртуальной машины нет «простоя» Сеансы SQL "отключены, но при доступе с общедоступного IP-адреса" неиспользуемые соединения SQL "отключаются через 30 минут.
ORA-03135: connection lost contact
Мы хотим, чтобы наши" неактивные соединения SQL "были постоянными, это то, что мы пробовали до сих пор. :
SQLNET.EXPIRE_TIME = 1000000
SQLNET.INBOUND_CONNECT_TIMEOUT = 1000000
(ENABLE=BROKEN)
В настоящее время я пытаюсь реализовать Oracle keep- живые пакеты, но я не добился успеха.
Есть какие-нибудь направления или идеи по этому поводу? Спасибо
[ОБНОВЛЕНИЕ] Я нашел решение, вот что я сделал, чтобы исправить это:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"KeepAliveTime"=dword:00007530
"KeepAliveInterval"=dword:000003e8
"TcpMaxDataRetransmissions"=dword:00000010
Вам нужно изменить одну или две настройки ядра на клиентской машине. Чтобы сделать поддержку активности 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