Во-первых, я смог подтвердить, что сбор статистики действительно завершается успешно, запустив:
выберите * из v$session_longops, где имя операции, подобное '%Schema%', упорядочено по описанию start_time;
После этого я выполнил следующие команды tcpdump на обоих серверах:
tcpdump -i eth0 -A "(src <myipaddress> или src <myoracle19caddress> или dst <myipaddress> или dst <myoracle19caddress>) и не порт ssh и не порт openvpn и не icmp" (сервер OpenVPN)
tcpdump -i eth0 -A "(src <myipaddress> или src <myopenvpnserveraddress> или dst <myipaddress> или dst <myopenvpnserveraddress>), а не порт ssh и не icmp" (сервер Oracle 19c)
И обнаружил, что сервер Oracle 19c отправил сообщение об успешном завершении, но сервер OpenVPN так и не получил его.
Покопавшись на разных сайтах, я обнаружил, что неправильно понял, что на самом деле делает net.ipv4.tcp_keepalive_time.
Это означает, что [по умолчанию] подпрограммы поддержки активности ждут два часа (7200 секунд).
перед отправкой первой проверки активности, а затем повторно отправлять его каждые 75
секунды.
После этого я узнал о конфигурации сети облачного провайдера, на котором размещен мой сервер OpenVPN.
Неактивные соединения
[...] внедрить 10-минутное отслеживание соединения для
IP-протоколы, которые имеют концепцию соединения.
Это означает, что входящие пакеты, связанные с установленным
соединение разрешено, пока хотя бы один пакет отправлен или
получено за соединение в течение последних 10 минут. Если нет пакетов
для соединения были отправлены или получены в течение 10 минут или
дольше записи отслеживания незанятого соединения удаляются. После
записи отслеживания подключения были удалены, [...] не
разрешать дополнительные входящие пакеты, пока хотя бы один новый исходящий
пакет отправлен. Это отслеживание соединения применяется ко всем источникам
и пункты назначения — как внутренние, так и внешние IP-адреса.
С помощью этой новой информации я обошел это ограничение, установив время поддержания активности на значение менее 10 минут, выполнив следующую команду на сервере Oracle 19c:
sysctl -w net.ipv4.tcp_keepalive_time=300 net.ipv4.tcp_keepalive_intvl=60 net.ipv4.tcp_keepalive_probes=5
И сделал эти изменения постоянными, сохранив их в /etc/sysctl.conf.
Наконец, SQL Developer получает сообщение об успешном выполнении и закрывает соединение.